Version 2.15.0-67.0.dev

Merge commit 'ff2e3c2df0e574100b55b0762bfbeac998722960' into 'dev'
diff --git a/CHANGELOG.md b/CHANGELOG.md
index 1ab41b8..13c9e52 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -45,6 +45,32 @@
 
 [#1785]: https://github.com/dart-lang/language/issues/1785
 
+- Restrictions on members of a class with a constant constructor are relaxed
+  such that they only apply when the class has a _generative_ constant
+  constructor.  For example, this used to be an error, but is now permitted:
+
+  ```dart
+  abstract class A {
+    var v1;
+    late final v2 = Random().nextInt(10);
+    late final v3;
+    const factory A() = B;
+  }
+
+  class B implements A {
+    get v1 => null;
+    set v1(_) => throw 'Cannot mutate B.v1';
+    final v2 = 0;
+    final v3;
+    set v3(_) => throw 'Cannot initialize B.v3';
+    const B([this.v3 = 1]);
+  }
+  ```
+
+  This implements a relaxation of the specified rule for a `late final`
+  instance variable, and it brings the implementation behavior in line with
+  the specification in all other cases.
+
 ### Tools
 
 #### Dart command line
@@ -223,13 +249,13 @@
 #### Linter
 
 Updated the Linter to `1.10.0`, which includes changes that
-- improves regular expression parsing performance for common checks 
+- improves regular expression parsing performance for common checks
   (`camel_case_types`, `file_names`, etc.).
 - (internal) migrates to analyzer 2.1.0 APIs.
-- fixes false positive in `use_build_context_synchronously` in awaits inside 
+- fixes false positive in `use_build_context_synchronously` in awaits inside
   anonymous functions.
 - fixes `overridden_fields` false positive w/ static fields.
-- fixes false positive in `avoid_null_checks_in_equality_operators` w/ 
+- fixes false positive in `avoid_null_checks_in_equality_operators` w/
   non-nullable params.
 - fixes false positive for deferred imports in `prefer_const_constructors`.
 - marks `avoid_dynamic_calls` stable.
@@ -257,7 +283,7 @@
 - fix `curly_braces_in_flow_control_structures` to properly flag terminating `else-if`
   blocks.
 - improve `always_specify_types` to support type aliases.
-- fix a false positive in `unnecessary_string_interpolations` w/ nullable interpolated 
+- fix a false positive in `unnecessary_string_interpolations` w/ nullable interpolated
   strings
 - fix a false positive in `avoid_function_literals_in_foreach_calls` for nullable
   iterables.
@@ -345,7 +371,7 @@
     `--legacy-javascript` flag will let you opt out of this update, but this
     flag will be removed in a future release. Modern browsers will not be
     affected, as Dart2JS continues to support [last two major releases][1] of
-    Edge, Safari, Firefox, and Chrome. 
+    Edge, Safari, Firefox, and Chrome.
 
 [#46545]: https://github.com/dart-lang/sdk/issues/46545
 [1]: https://dart.dev/faq#q-what-browsers-do-you-support-as-javascript-compilation-targets
diff --git a/DEPS b/DEPS
index 7d53ee7..f73aea5 100644
--- a/DEPS
+++ b/DEPS
@@ -44,7 +44,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": "3bbf92369652b6ba0b347516dabd1ed2193eb5c6",
+  "co19_rev": "cc4df792d0f02f15bfe04911c1f856b90cb7cbf4",
   "co19_2_rev": "7637bcb24abf21b5e2f8dd24d3fe619f777391f5",
 
   # The internal benchmarks to use. See go/dart-benchmarks-internal
@@ -105,7 +105,7 @@
   # For more details, see https://github.com/dart-lang/sdk/issues/30164
   "dart_style_rev": "14d9b6fd58cc4744676c12be3cc5eee2a779db82",
 
-  "dartdoc_rev" : "a4ca86f9bf732d7adc4506f7373e0ed63251b646",
+  "dartdoc_rev" : "348cbd7204645f99074bf7873af8b6ba6d34ceb0",
   "devtools_rev" : "2b47d9ed486479153ca2fd038000950674ed1beb",
   "jsshell_tag": "version:88.0",
   "ffi_rev": "4dd32429880a57b64edaf54c9d5af8a9fa9a4ffb",
diff --git a/pkg/_fe_analyzer_shared/lib/src/scanner/token.dart b/pkg/_fe_analyzer_shared/lib/src/scanner/token.dart
index 808f5f9..0a6ab6c 100644
--- a/pkg/_fe_analyzer_shared/lib/src/scanner/token.dart
+++ b/pkg/_fe_analyzer_shared/lib/src/scanner/token.dart
@@ -776,6 +776,9 @@
       : super(type, value, offset);
 
   @override
+  Token? beforeSynthetic;
+
+  @override
   bool get isSynthetic => true;
 
   @override
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 97c17e9..53dbe5f 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
@@ -111,11 +111,7 @@
 /*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
-  /// takes the first one.
-  /*cfe|cfe:builder.member: D4.method:void Function(num*)**/
-  /*analyzer.member: D4.method:void Function(int*)**/
+  /*member: D4.method:void Function(num*)**/
 }
 
 /*class: D5:A,C,D5,Object*/
@@ -192,9 +188,5 @@
 /*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
-  /// takes the first one.
-  /*cfe|cfe:builder.member: G2.method:void Function(num*)**/
-  /*analyzer.member: G2.method:void Function(int*)**/
+  /*member: G2.method:void Function(num*)**/
 }
diff --git a/pkg/analysis_server/lib/src/domains/completion/available_suggestions.dart b/pkg/analysis_server/lib/src/domains/completion/available_suggestions.dart
index 54ffabf..5eaa592 100644
--- a/pkg/analysis_server/lib/src/domains/completion/available_suggestions.dart
+++ b/pkg/analysis_server/lib/src/domains/completion/available_suggestions.dart
@@ -166,6 +166,8 @@
       return protocol.ElementKind.MIXIN;
     case DeclarationKind.SETTER:
       return protocol.ElementKind.SETTER;
+    case DeclarationKind.TYPE_ALIAS:
+      return protocol.ElementKind.TYPE_ALIAS;
     case DeclarationKind.VARIABLE:
       return protocol.ElementKind.TOP_LEVEL_VARIABLE;
   }
diff --git a/pkg/analysis_server/lib/src/lsp/mapping.dart b/pkg/analysis_server/lib/src/lsp/mapping.dart
index da9bb2a..795b45e 100644
--- a/pkg/analysis_server/lib/src/lsp/mapping.dart
+++ b/pkg/analysis_server/lib/src/lsp/mapping.dart
@@ -195,8 +195,12 @@
       case dec.DeclarationKind.CONSTRUCTOR:
         return const [lsp.CompletionItemKind.Constructor];
       case dec.DeclarationKind.ENUM:
-      case dec.DeclarationKind.ENUM_CONSTANT:
         return const [lsp.CompletionItemKind.Enum];
+      case dec.DeclarationKind.ENUM_CONSTANT:
+        return const [
+          lsp.CompletionItemKind.EnumMember,
+          lsp.CompletionItemKind.Enum,
+        ];
       case dec.DeclarationKind.FUNCTION:
         return const [lsp.CompletionItemKind.Function];
       case dec.DeclarationKind.FUNCTION_TYPE_ALIAS:
@@ -205,6 +209,8 @@
         return const [lsp.CompletionItemKind.Property];
       case dec.DeclarationKind.SETTER:
         return const [lsp.CompletionItemKind.Property];
+      case dec.DeclarationKind.TYPE_ALIAS:
+        return const [lsp.CompletionItemKind.Class];
       case dec.DeclarationKind.VARIABLE:
         return const [lsp.CompletionItemKind.Variable];
       default:
@@ -248,6 +254,8 @@
         return const [lsp.SymbolKind.Class];
       case server.DeclarationKind.SETTER:
         return const [lsp.SymbolKind.Property];
+      case server.DeclarationKind.TYPE_ALIAS:
+        return const [lsp.SymbolKind.Class];
       case server.DeclarationKind.VARIABLE:
         return const [lsp.SymbolKind.Variable];
       default:
@@ -411,8 +419,12 @@
       case server.ElementKind.CONSTRUCTOR_INVOCATION:
         return const [lsp.CompletionItemKind.Constructor];
       case server.ElementKind.ENUM:
-      case server.ElementKind.ENUM_CONSTANT:
         return const [lsp.CompletionItemKind.Enum];
+      case server.ElementKind.ENUM_CONSTANT:
+        return const [
+          lsp.CompletionItemKind.EnumMember,
+          lsp.CompletionItemKind.Enum,
+        ];
       case server.ElementKind.FIELD:
         return const [lsp.CompletionItemKind.Field];
       case server.ElementKind.FILE:
diff --git a/pkg/analysis_server/lib/src/lsp/semantic_tokens/mapping.dart b/pkg/analysis_server/lib/src/lsp/semantic_tokens/mapping.dart
index ab5399b..4d44191 100644
--- a/pkg/analysis_server/lib/src/lsp/semantic_tokens/mapping.dart
+++ b/pkg/analysis_server/lib/src/lsp/semantic_tokens/mapping.dart
@@ -135,6 +135,7 @@
   HighlightRegionType.TOP_LEVEL_VARIABLE: SemanticTokenTypes.variable,
   HighlightRegionType.TOP_LEVEL_VARIABLE_DECLARATION:
       SemanticTokenTypes.variable,
+  HighlightRegionType.TYPE_ALIAS: SemanticTokenTypes.type,
   HighlightRegionType.TYPE_NAME_DYNAMIC: SemanticTokenTypes.type,
   HighlightRegionType.TYPE_PARAMETER: SemanticTokenTypes.typeParameter,
   HighlightRegionType.UNRESOLVED_INSTANCE_MEMBER_REFERENCE:
diff --git a/pkg/analysis_server/lib/src/search/search_domain.dart b/pkg/analysis_server/lib/src/search/search_domain.dart
index ac50553..632f7f8 100644
--- a/pkg/analysis_server/lib/src/search/search_domain.dart
+++ b/pkg/analysis_server/lib/src/search/search_domain.dart
@@ -152,6 +152,8 @@
           return protocol.ElementKind.MIXIN;
         case search.DeclarationKind.SETTER:
           return protocol.ElementKind.SETTER;
+        case search.DeclarationKind.TYPE_ALIAS:
+          return protocol.ElementKind.TYPE_ALIAS;
         case search.DeclarationKind.VARIABLE:
           return protocol.ElementKind.TOP_LEVEL_VARIABLE;
         default:
diff --git a/pkg/analysis_server/lib/src/search/workspace_symbols.dart b/pkg/analysis_server/lib/src/search/workspace_symbols.dart
index 71d3b9b..bbcf5ac 100644
--- a/pkg/analysis_server/lib/src/search/workspace_symbols.dart
+++ b/pkg/analysis_server/lib/src/search/workspace_symbols.dart
@@ -50,6 +50,7 @@
   METHOD,
   MIXIN,
   SETTER,
+  TYPE_ALIAS,
   VARIABLE
 }
 
@@ -186,6 +187,8 @@
         return DeclarationKind.GETTER;
       case ad.DeclarationKind.SETTER:
         return DeclarationKind.SETTER;
+      case ad.DeclarationKind.TYPE_ALIAS:
+        return DeclarationKind.TYPE_ALIAS;
       case ad.DeclarationKind.VARIABLE:
         return DeclarationKind.VARIABLE;
       default:
diff --git a/pkg/analysis_server/lib/src/services/completion/dart/completion_manager.dart b/pkg/analysis_server/lib/src/services/completion/dart/completion_manager.dart
index b71fa3e..61eea1c 100644
--- a/pkg/analysis_server/lib/src/services/completion/dart/completion_manager.dart
+++ b/pkg/analysis_server/lib/src/services/completion/dart/completion_manager.dart
@@ -187,6 +187,7 @@
         kinds.add(protocol.ElementKind.ENUM);
         kinds.add(protocol.ElementKind.FUNCTION_TYPE_ALIAS);
         kinds.add(protocol.ElementKind.MIXIN);
+        kinds.add(protocol.ElementKind.TYPE_ALIAS);
       }
       if (opType.includeReturnValueSuggestions) {
         kinds.add(protocol.ElementKind.CONSTRUCTOR);
diff --git a/pkg/analysis_server/lib/src/services/completion/dart/feature_computer.dart b/pkg/analysis_server/lib/src/services/completion/dart/feature_computer.dart
index 7da38ea..fe38ee1 100644
--- a/pkg/analysis_server/lib/src/services/completion/dart/feature_computer.dart
+++ b/pkg/analysis_server/lib/src/services/completion/dart/feature_computer.dart
@@ -218,6 +218,8 @@
       return protocol.ElementKind.PREFIX;
     } else if (kind == ElementKind.TOP_LEVEL_VARIABLE) {
       return protocol.ElementKind.TOP_LEVEL_VARIABLE;
+    } else if (kind == ElementKind.TYPE_ALIAS) {
+      return protocol.ElementKind.TYPE_ALIAS;
     } else if (kind == ElementKind.TYPE_PARAMETER) {
       return protocol.ElementKind.TYPE_PARAMETER;
     }
diff --git a/pkg/analysis_server/lib/src/services/correction/assist.dart b/pkg/analysis_server/lib/src/services/correction/assist.dart
index b85a733..47624e2 100644
--- a/pkg/analysis_server/lib/src/services/correction/assist.dart
+++ b/pkg/analysis_server/lib/src/services/correction/assist.dart
@@ -32,202 +32,394 @@
 /// An enumeration of possible assist kinds.
 class DartAssistKind {
   static const ADD_DIAGNOSTIC_PROPERTY_REFERENCE = AssistKind(
-      'dart.assist.add.diagnosticPropertyReference',
-      30,
-      'Add a debug reference to this property');
+    'dart.assist.add.diagnosticPropertyReference',
+    30,
+    'Add a debug reference to this property',
+  );
   static const ADD_NOT_NULL_ASSERT = AssistKind(
-      'dart.assist.add.notNullAssert', 30, 'Add a not-null assertion');
-  static const ADD_RETURN_TYPE =
-      AssistKind('dart.assist.add.returnType', 30, 'Add return type');
-  static const ADD_TYPE_ANNOTATION =
-      AssistKind('dart.assist.add.typeAnnotation', 30, 'Add type annotation');
+    'dart.assist.add.notNullAssert',
+    30,
+    'Add a not-null assertion',
+  );
+  static const ADD_RETURN_TYPE = AssistKind(
+    'dart.assist.add.returnType',
+    30,
+    'Add return type',
+  );
+  static const ADD_TYPE_ANNOTATION = AssistKind(
+    'dart.assist.add.typeAnnotation',
+    30,
+    'Add type annotation',
+  );
   static const ASSIGN_TO_LOCAL_VARIABLE = AssistKind(
-      'dart.assist.assignToVariable', 30, 'Assign value to new local variable');
+    'dart.assist.assignToVariable',
+    30,
+    'Assign value to new local variable',
+  );
   static const CONVERT_CLASS_TO_MIXIN = AssistKind(
-      'dart.assist.convert.classToMixin', 30, 'Convert class to a mixin');
+    'dart.assist.convert.classToMixin',
+    30,
+    'Convert class to a mixin',
+  );
   static const CONVERT_DOCUMENTATION_INTO_BLOCK = AssistKind(
-      'dart.assist.convert.blockComment',
-      30,
-      'Convert to block documentation comment');
+    'dart.assist.convert.blockComment',
+    30,
+    'Convert to block documentation comment',
+  );
   static const CONVERT_DOCUMENTATION_INTO_LINE = AssistKind(
-      'dart.assist.convert.lineComment',
-      30,
-      'Convert to line documentation comment');
+    'dart.assist.convert.lineComment',
+    30,
+    'Convert to line documentation comment',
+  );
   static const CONVERT_INTO_ASYNC_BODY = AssistKind(
-      'dart.assist.convert.bodyToAsync', 29, 'Convert to async function body');
+    'dart.assist.convert.bodyToAsync',
+    29,
+    'Convert to async function body',
+  );
   static const CONVERT_INTO_BLOCK_BODY = AssistKind(
-      'dart.assist.convert.bodyToBlock', 30, 'Convert to block body');
+    'dart.assist.convert.bodyToBlock',
+    30,
+    'Convert to block body',
+  );
   static const CONVERT_INTO_EXPRESSION_BODY = AssistKind(
-      'dart.assist.convert.bodyToExpression', 30, 'Convert to expression body');
+    'dart.assist.convert.bodyToExpression',
+    30,
+    'Convert to expression body',
+  );
   static const CONVERT_INTO_FINAL_FIELD = AssistKind(
-      'dart.assist.convert.getterToFinalField', 30, 'Convert to final field');
+    'dart.assist.convert.getterToFinalField',
+    30,
+    'Convert to final field',
+  );
   static const CONVERT_INTO_FOR_INDEX = AssistKind(
-      'dart.assist.convert.forEachToForIndex', 30, 'Convert to for-index loop');
+    'dart.assist.convert.forEachToForIndex',
+    30,
+    'Convert to for-index loop',
+  );
   static const CONVERT_INTO_GENERIC_FUNCTION_SYNTAX = AssistKind(
-      'dart.assist.convert.toGenericFunctionSyntax',
-      30,
-      "Convert into 'Function' syntax");
+    'dart.assist.convert.toGenericFunctionSyntax',
+    30,
+    "Convert into 'Function' syntax",
+  );
   static const CONVERT_INTO_GETTER = AssistKind(
-      'dart.assist.convert.finalFieldToGetter', 30, 'Convert to getter');
-  static const CONVERT_INTO_IS_NOT =
-      AssistKind('dart.assist.convert.isNot', 30, 'Convert to is!');
+    'dart.assist.convert.finalFieldToGetter',
+    30,
+    'Convert to getter',
+  );
+  static const CONVERT_INTO_IS_NOT = AssistKind(
+    'dart.assist.convert.isNot',
+    30,
+    'Convert to is!',
+  );
   static const CONVERT_INTO_IS_NOT_EMPTY = AssistKind(
-      'dart.assist.convert.isNotEmpty', 30, "Convert to 'isNotEmpty'");
+    'dart.assist.convert.isNotEmpty',
+    30,
+    "Convert to 'isNotEmpty'",
+  );
   static const CONVERT_PART_OF_TO_URI = AssistKind(
-      'dart.assist.convert.partOfToPartUri', 30, 'Convert to use a URI');
+    'dart.assist.convert.partOfToPartUri',
+    30,
+    'Convert to use a URI',
+  );
   static const CONVERT_TO_DOUBLE_QUOTED_STRING = AssistKind(
-      'dart.assist.convert.toDoubleQuotedString',
-      30,
-      'Convert to double quoted string');
+    'dart.assist.convert.toDoubleQuotedString',
+    30,
+    'Convert to double quoted string',
+  );
   static const CONVERT_TO_FIELD_PARAMETER = AssistKind(
-      'dart.assist.convert.toConstructorFieldParameter',
-      30,
-      'Convert to field formal parameter');
+    'dart.assist.convert.toConstructorFieldParameter',
+    30,
+    'Convert to field formal parameter',
+  );
   static const CONVERT_TO_FOR_ELEMENT = AssistKind(
-      'dart.assist.convert.toForElement', 30, "Convert to a 'for' element");
+    'dart.assist.convert.toForElement',
+    30,
+    "Convert to a 'for' element",
+  );
   static const CONVERT_TO_IF_ELEMENT = AssistKind(
-      'dart.assist.convert.toIfElement', 30, "Convert to an 'if' element");
+    'dart.assist.convert.toIfElement',
+    30,
+    "Convert to an 'if' element",
+  );
   static const CONVERT_TO_INT_LITERAL = AssistKind(
-      'dart.assist.convert.toIntLiteral', 30, 'Convert to an int literal');
+    'dart.assist.convert.toIntLiteral',
+    30,
+    'Convert to an int literal',
+  );
   static const CONVERT_TO_LIST_LITERAL = AssistKind(
-      'dart.assist.convert.toListLiteral', 30, 'Convert to list literal');
+    'dart.assist.convert.toListLiteral',
+    30,
+    'Convert to list literal',
+  );
   static const CONVERT_TO_MAP_LITERAL = AssistKind(
-      'dart.assist.convert.toMapLiteral', 30, 'Convert to map literal');
+    'dart.assist.convert.toMapLiteral',
+    30,
+    'Convert to map literal',
+  );
   static const CONVERT_TO_MULTILINE_STRING = AssistKind(
-      'dart.assist.convert.toMultilineString',
-      30,
-      'Convert to multiline string');
+    'dart.assist.convert.toMultilineString',
+    30,
+    'Convert to multiline string',
+  );
   static const CONVERT_TO_NORMAL_PARAMETER = AssistKind(
-      'dart.assist.convert.toConstructorNormalParameter',
-      30,
-      'Convert to normal parameter');
-  static const CONVERT_TO_NULL_AWARE =
-      AssistKind('dart.assist.convert.toNullAware', 30, "Convert to use '?.'");
+    'dart.assist.convert.toConstructorNormalParameter',
+    30,
+    'Convert to normal parameter',
+  );
+  static const CONVERT_TO_NULL_AWARE = AssistKind(
+    'dart.assist.convert.toNullAware',
+    30,
+    "Convert to use '?.'",
+  );
   static const CONVERT_TO_PACKAGE_IMPORT = AssistKind(
-      'dart.assist.convert.relativeToPackageImport',
-      30,
-      "Convert to 'package:' import");
+    'dart.assist.convert.relativeToPackageImport',
+    30,
+    "Convert to 'package:' import",
+  );
   static const CONVERT_TO_RELATIVE_IMPORT = AssistKind(
-      'dart.assist.convert.packageToRelativeImport',
-      30,
-      'Convert to a relative import');
+    'dart.assist.convert.packageToRelativeImport',
+    30,
+    'Convert to a relative import',
+  );
   static const CONVERT_TO_SET_LITERAL = AssistKind(
-      'dart.assist.convert.toSetLiteral', 30, 'Convert to set literal');
+    'dart.assist.convert.toSetLiteral',
+    30,
+    'Convert to set literal',
+  );
   static const CONVERT_TO_SINGLE_QUOTED_STRING = AssistKind(
-      'dart.assist.convert.toSingleQuotedString',
-      30,
-      'Convert to single quoted string');
-  static const CONVERT_TO_SPREAD =
-      AssistKind('dart.assist.convert.toSpread', 30, 'Convert to a spread');
-  static const ENCAPSULATE_FIELD =
-      AssistKind('dart.assist.encapsulateField', 30, 'Encapsulate field');
-  static const EXCHANGE_OPERANDS =
-      AssistKind('dart.assist.exchangeOperands', 30, 'Exchange operands');
+    'dart.assist.convert.toSingleQuotedString',
+    30,
+    'Convert to single quoted string',
+  );
+  static const CONVERT_TO_SPREAD = AssistKind(
+    'dart.assist.convert.toSpread',
+    30,
+    'Convert to a spread',
+  );
+  static const ENCAPSULATE_FIELD = AssistKind(
+    'dart.assist.encapsulateField',
+    30,
+    'Encapsulate field',
+  );
+  static const EXCHANGE_OPERANDS = AssistKind(
+    'dart.assist.exchangeOperands',
+    30,
+    'Exchange operands',
+  );
 
   // Flutter assists
   static const FLUTTER_CONVERT_TO_CHILDREN = AssistKind(
-      'dart.assist.flutter.convert.childToChildren',
-      30,
-      'Convert to children:');
+    'dart.assist.flutter.convert.childToChildren',
+    30,
+    'Convert to children:',
+  );
   static const FLUTTER_CONVERT_TO_STATEFUL_WIDGET = AssistKind(
-      'dart.assist.flutter.convert.toStatefulWidget',
-      30,
-      'Convert to StatefulWidget');
+    'dart.assist.flutter.convert.toStatefulWidget',
+    30,
+    'Convert to StatefulWidget',
+  );
 
   // Flutter wrap specific assists
-  static const FLUTTER_WRAP_GENERIC =
-      AssistKind('dart.assist.flutter.wrap.generic', 31, 'Wrap with widget...');
+  static const FLUTTER_WRAP_GENERIC = AssistKind(
+    'dart.assist.flutter.wrap.generic',
+    31,
+    'Wrap with widget...',
+  );
 
   static const FLUTTER_WRAP_BUILDER = AssistKind(
-      'dart.assist.flutter.wrap.builder', 32, 'Wrap with Builder');
-  static const FLUTTER_WRAP_CENTER =
-      AssistKind('dart.assist.flutter.wrap.center', 32, 'Wrap with Center');
-  static const FLUTTER_WRAP_COLUMN =
-      AssistKind('dart.assist.flutter.wrap.column', 32, 'Wrap with Column');
+    'dart.assist.flutter.wrap.builder',
+    32,
+    'Wrap with Builder',
+  );
+  static const FLUTTER_WRAP_CENTER = AssistKind(
+    'dart.assist.flutter.wrap.center',
+    32,
+    'Wrap with Center',
+  );
+  static const FLUTTER_WRAP_COLUMN = AssistKind(
+    'dart.assist.flutter.wrap.column',
+    32,
+    'Wrap with Column',
+  );
   static const FLUTTER_WRAP_CONTAINER = AssistKind(
-      'dart.assist.flutter.wrap.container', 32, 'Wrap with Container');
-  static const FLUTTER_WRAP_PADDING =
-      AssistKind('dart.assist.flutter.wrap.padding', 32, 'Wrap with Padding');
-  static const FLUTTER_WRAP_ROW =
-      AssistKind('dart.assist.flutter.wrap.row', 32, 'Wrap with Row');
-  static const FLUTTER_WRAP_SIZED_BOX =
-      AssistKind('dart.assist.flutter.wrap.sizedBox', 32, 'Wrap with SizedBox');
+    'dart.assist.flutter.wrap.container',
+    32,
+    'Wrap with Container',
+  );
+  static const FLUTTER_WRAP_PADDING = AssistKind(
+    'dart.assist.flutter.wrap.padding',
+    32,
+    'Wrap with Padding',
+  );
+  static const FLUTTER_WRAP_ROW = AssistKind(
+    'dart.assist.flutter.wrap.row',
+    32,
+    'Wrap with Row',
+  );
+  static const FLUTTER_WRAP_SIZED_BOX = AssistKind(
+    'dart.assist.flutter.wrap.sizedBox',
+    32,
+    'Wrap with SizedBox',
+  );
   static const FLUTTER_WRAP_STREAM_BUILDER = AssistKind(
-      'dart.assist.flutter.wrap.streamBuilder', 32, 'Wrap with StreamBuilder');
+    'dart.assist.flutter.wrap.streamBuilder',
+    32,
+    'Wrap with StreamBuilder',
+  );
 
   // Flutter re-order assists
-  static const FLUTTER_SWAP_WITH_CHILD =
-      AssistKind('dart.assist.flutter.swap.withChild', 33, 'Swap with child');
-  static const FLUTTER_SWAP_WITH_PARENT =
-      AssistKind('dart.assist.flutter.swap.withParent', 33, 'Swap with parent');
-  static const FLUTTER_MOVE_DOWN =
-      AssistKind('dart.assist.flutter.move.down', 34, 'Move widget down');
-  static const FLUTTER_MOVE_UP =
-      AssistKind('dart.assist.flutter.move.up', 34, 'Move widget up');
+  static const FLUTTER_SWAP_WITH_CHILD = AssistKind(
+    'dart.assist.flutter.swap.withChild',
+    33,
+    'Swap with child',
+  );
+  static const FLUTTER_SWAP_WITH_PARENT = AssistKind(
+    'dart.assist.flutter.swap.withParent',
+    33,
+    'Swap with parent',
+  );
+  static const FLUTTER_MOVE_DOWN = AssistKind(
+    'dart.assist.flutter.move.down',
+    34,
+    'Move widget down',
+  );
+  static const FLUTTER_MOVE_UP = AssistKind(
+    'dart.assist.flutter.move.up',
+    34,
+    'Move widget up',
+  );
 
   // Flutter remove assist
-  static const FLUTTER_REMOVE_WIDGET =
-      AssistKind('dart.assist.flutter.removeWidget', 35, 'Remove this widget');
+  static const FLUTTER_REMOVE_WIDGET = AssistKind(
+    'dart.assist.flutter.removeWidget',
+    35,
+    'Remove this widget',
+  );
 
   static const IMPORT_ADD_SHOW = AssistKind(
-      'dart.assist.add.showCombinator', 30, "Add explicit 'show' combinator");
-  static const INLINE_INVOCATION =
-      AssistKind('dart.assist.inline', 30, "Inline invocation of '{0}'");
+    'dart.assist.add.showCombinator',
+    30,
+    "Add explicit 'show' combinator",
+  );
+  static const INLINE_INVOCATION = AssistKind(
+    'dart.assist.inline',
+    30,
+    "Inline invocation of '{0}'",
+  );
   static const INTRODUCE_LOCAL_CAST_TYPE = AssistKind(
-      'dart.assist.introduceLocalCast',
-      30,
-      'Introduce new local with tested type');
-  static const INVERT_IF_STATEMENT =
-      AssistKind('dart.assist.invertIf', 30, "Invert 'if' statement");
-  static const JOIN_IF_WITH_INNER = AssistKind('dart.assist.joinWithInnerIf',
-      30, "Join 'if' statement with inner 'if' statement");
-  static const JOIN_IF_WITH_OUTER = AssistKind('dart.assist.joinWithOuterIf',
-      30, "Join 'if' statement with outer 'if' statement");
+    'dart.assist.introduceLocalCast',
+    30,
+    'Introduce new local with tested type',
+  );
+  static const INVERT_IF_STATEMENT = AssistKind(
+    'dart.assist.invertIf',
+    30,
+    "Invert 'if' statement",
+  );
+  static const JOIN_IF_WITH_INNER = AssistKind(
+    'dart.assist.joinWithInnerIf',
+    30,
+    "Join 'if' statement with inner 'if' statement",
+  );
+  static const JOIN_IF_WITH_OUTER = AssistKind(
+    'dart.assist.joinWithOuterIf',
+    30,
+    "Join 'if' statement with outer 'if' statement",
+  );
   static const JOIN_VARIABLE_DECLARATION = AssistKind(
-      'dart.assist.joinVariableDeclaration', 30, 'Join variable declaration');
+    'dart.assist.joinVariableDeclaration',
+    30,
+    'Join variable declaration',
+  );
   static const REMOVE_TYPE_ANNOTATION = AssistKind(
-      // todo (pq): unify w/ fix
-      'dart.assist.remove.typeAnnotation',
-      29,
-      'Remove type annotation');
+    // todo (pq): unify w/ fix
+    'dart.assist.remove.typeAnnotation',
+    29,
+    'Remove type annotation',
+  );
   static const REPLACE_CONDITIONAL_WITH_IF_ELSE = AssistKind(
-      'dart.assist.convert.conditionalToIfElse',
-      30,
-      "Replace conditional with 'if-else'");
+    'dart.assist.convert.conditionalToIfElse',
+    30,
+    "Replace conditional with 'if-else'",
+  );
   static const REPLACE_IF_ELSE_WITH_CONDITIONAL = AssistKind(
-      'dart.assist.convert.ifElseToConditional',
-      30,
-      "Replace 'if-else' with conditional ('c ? x : y')");
+    'dart.assist.convert.ifElseToConditional',
+    30,
+    "Replace 'if-else' with conditional ('c ? x : y')",
+  );
   static const REPLACE_WITH_VAR = AssistKind(
-      'dart.assist.replace.withVar', 30, "Replace type annotation with 'var'");
-  static const SHADOW_FIELD = AssistKind('dart.assist.shadowField', 30,
-      'Create a local variable that shadows the field');
+    'dart.assist.replace.withVar',
+    30,
+    "Replace type annotation with 'var'",
+  );
+  static const SHADOW_FIELD = AssistKind(
+    'dart.assist.shadowField',
+    30,
+    'Create a local variable that shadows the field',
+  );
   static const SORT_CHILD_PROPERTY_LAST = AssistKind(
-      'dart.assist.sort.child.properties.last',
-      30,
-      'Move child property to end of arguments');
-  static const SPLIT_AND_CONDITION =
-      AssistKind('dart.assist.splitIfConjunction', 30, 'Split && condition');
+    'dart.assist.sort.child.properties.last',
+    30,
+    'Move child property to end of arguments',
+  );
+  static const SPLIT_AND_CONDITION = AssistKind(
+    'dart.assist.splitIfConjunction',
+    30,
+    'Split && condition',
+  );
   static const SPLIT_VARIABLE_DECLARATION = AssistKind(
-      'dart.assist.splitVariableDeclaration', 30, 'Split variable declaration');
-  static const SURROUND_WITH_BLOCK =
-      AssistKind('dart.assist.surround.block', 22, 'Surround with block');
+    'dart.assist.splitVariableDeclaration',
+    30,
+    'Split variable declaration',
+  );
+  static const SURROUND_WITH_BLOCK = AssistKind(
+    'dart.assist.surround.block',
+    22,
+    'Surround with block',
+  );
   static const SURROUND_WITH_DO_WHILE = AssistKind(
-      'dart.assist.surround.doWhile', 27, "Surround with 'do-while'");
-  static const SURROUND_WITH_FOR =
-      AssistKind('dart.assist.surround.forEach', 26, "Surround with 'for'");
-  static const SURROUND_WITH_FOR_IN =
-      AssistKind('dart.assist.surround.forIn', 25, "Surround with 'for-in'");
-  static const SURROUND_WITH_IF =
-      AssistKind('dart.assist.surround.if', 23, "Surround with 'if'");
+    'dart.assist.surround.doWhile',
+    27,
+    "Surround with 'do-while'",
+  );
+  static const SURROUND_WITH_FOR = AssistKind(
+    'dart.assist.surround.forEach',
+    26,
+    "Surround with 'for'",
+  );
+  static const SURROUND_WITH_FOR_IN = AssistKind(
+    'dart.assist.surround.forIn',
+    25,
+    "Surround with 'for-in'",
+  );
+  static const SURROUND_WITH_IF = AssistKind(
+    'dart.assist.surround.if',
+    23,
+    "Surround with 'if'",
+  );
   static const SURROUND_WITH_SET_STATE = AssistKind(
-      'dart.assist.surround.setState', 27, "Surround with 'setState'");
+    'dart.assist.surround.setState',
+    27,
+    "Surround with 'setState'",
+  );
   static const SURROUND_WITH_TRY_CATCH = AssistKind(
-      'dart.assist.surround.tryCatch', 28, "Surround with 'try-catch'");
+    'dart.assist.surround.tryCatch',
+    28,
+    "Surround with 'try-catch'",
+  );
   static const SURROUND_WITH_TRY_FINALLY = AssistKind(
-      'dart.assist.surround.tryFinally', 29, "Surround with 'try-finally'");
-  static const SURROUND_WITH_WHILE =
-      AssistKind('dart.assist.surround.while', 24, "Surround with 'while'");
-  static const USE_CURLY_BRACES =
-      AssistKind('dart.assist.surround.curlyBraces', 30, 'Use curly braces');
+    'dart.assist.surround.tryFinally',
+    29,
+    "Surround with 'try-finally'",
+  );
+  static const SURROUND_WITH_WHILE = AssistKind(
+    'dart.assist.surround.while',
+    24,
+    "Surround with 'while'",
+  );
+  static const USE_CURLY_BRACES = AssistKind(
+    'dart.assist.surround.curlyBraces',
+    30,
+    'Use curly braces',
+  );
 }
diff --git a/pkg/analysis_server/lib/src/services/correction/dart/assign_to_local_variable.dart b/pkg/analysis_server/lib/src/services/correction/dart/assign_to_local_variable.dart
index 5aa14c3..90903cd 100644
--- a/pkg/analysis_server/lib/src/services/correction/dart/assign_to_local_variable.dart
+++ b/pkg/analysis_server/lib/src/services/correction/dart/assign_to_local_variable.dart
@@ -6,6 +6,7 @@
 import 'package:analysis_server/src/services/correction/assist.dart';
 import 'package:analysis_server/src/services/correction/dart/abstract_producer.dart';
 import 'package:analysis_server/src/services/correction/name_suggestion.dart';
+import 'package:analysis_server/src/services/linter/lint_names.dart';
 import 'package:analysis_server/src/utilities/extensions/ast.dart';
 import 'package:analyzer/dart/ast/ast.dart';
 import 'package:analyzer/src/dart/ast/extensions.dart';
@@ -17,6 +18,14 @@
   @override
   AssistKind get assistKind => DartAssistKind.ASSIGN_TO_LOCAL_VARIABLE;
 
+  String get _declarationKeyword {
+    if (_isLintEnabled(LintNames.prefer_final_locals)) {
+      return 'final';
+    } else {
+      return 'var';
+    }
+  }
+
   @override
   Future<void> compute(ChangeBuilder builder) async {
     // prepare enclosing ExpressionStatement
@@ -56,7 +65,7 @@
     if (suggestions.isNotEmpty) {
       await builder.addDartFileEdit(file, (builder) {
         builder.addInsertion(offset, (builder) {
-          builder.write('var ');
+          builder.write('$_declarationKeyword ');
           builder.addSimpleLinkedEdit('NAME', suggestions[0],
               kind: LinkedEditSuggestionKind.VARIABLE,
               suggestions: suggestions);
@@ -66,6 +75,11 @@
     }
   }
 
+  bool _isLintEnabled(String name) {
+    var analysisOptions = unit.declaredElement?.context.analysisOptions;
+    return analysisOptions?.isLintEnabled(name) ?? false;
+  }
+
   /// Return an instance of this class. Used as a tear-off in `AssistProcessor`.
   static AssignToLocalVariable newInstance() => AssignToLocalVariable();
 
diff --git a/pkg/analysis_server/lib/src/services/correction/dart/import_library.dart b/pkg/analysis_server/lib/src/services/correction/dart/import_library.dart
index 5d9ab45..a3cd739 100644
--- a/pkg/analysis_server/lib/src/services/correction/dart/import_library.dart
+++ b/pkg/analysis_server/lib/src/services/correction/dart/import_library.dart
@@ -121,10 +121,13 @@
         var typeName = (targetNode is SimpleIdentifier)
             ? targetNode.name
             : (targetNode as PrefixedIdentifier).prefix.name;
-        yield* _importLibraryForElement(
-            typeName,
-            const [ElementKind.CLASS, ElementKind.FUNCTION_TYPE_ALIAS],
-            const [TopLevelDeclarationKind.type]);
+        yield* _importLibraryForElement(typeName, const [
+          ElementKind.CLASS,
+          ElementKind.FUNCTION_TYPE_ALIAS,
+          ElementKind.TYPE_ALIAS
+        ], const [
+          TopLevelDeclarationKind.type
+        ]);
       } else if (mightBeImplicitConstructor(targetNode)) {
         var typeName = (targetNode as SimpleIdentifier).name;
         yield* _importLibraryForElement(typeName, const [ElementKind.CLASS],
diff --git a/pkg/analysis_server/lib/src/services/correction/fix.dart b/pkg/analysis_server/lib/src/services/correction/fix.dart
index 8ca363e..1d19faa 100644
--- a/pkg/analysis_server/lib/src/services/correction/fix.dart
+++ b/pkg/analysis_server/lib/src/services/correction/fix.dart
@@ -29,10 +29,16 @@
 /// An enumeration of quick fix kinds for the errors found in an analysis
 /// options file.
 class AnalysisOptionsFixKind {
-  static const REMOVE_LINT =
-      FixKind('analysisOptions.fix.removeLint', 50, "Remove '{0}'");
-  static const REMOVE_SETTING =
-      FixKind('analysisOptions.fix.removeSetting', 50, "Remove '{0}'");
+  static const REMOVE_LINT = FixKind(
+    'analysisOptions.fix.removeLint',
+    50,
+    "Remove '{0}'",
+  );
+  static const REMOVE_SETTING = FixKind(
+    'analysisOptions.fix.removeSetting',
+    50,
+    "Remove '{0}'",
+  );
 }
 
 /// The implementation of [DartFixContext].
@@ -68,829 +74,1283 @@
 
 /// An enumeration of quick fix kinds found in a Dart file.
 class DartFixKind {
-  static const ADD_ASYNC = FixKind('dart.fix.add.async',
-      DartFixKindPriority.DEFAULT, "Add 'async' modifier");
+  static const ADD_ASYNC = FixKind(
+    'dart.fix.add.async',
+    DartFixKindPriority.DEFAULT,
+    "Add 'async' modifier",
+  );
   static const ADD_AWAIT = FixKind(
-      'dart.fix.add.await', DartFixKindPriority.DEFAULT, "Add 'await' keyword");
-  static const ADD_AWAIT_MULTI = FixKind('dart.fix.add.await.multi',
-      DartFixKindPriority.IN_FILE, "Add 'await's everywhere in file");
+    'dart.fix.add.await',
+    DartFixKindPriority.DEFAULT,
+    "Add 'await' keyword",
+  );
+  static const ADD_AWAIT_MULTI = FixKind(
+    'dart.fix.add.await.multi',
+    DartFixKindPriority.IN_FILE,
+    "Add 'await's everywhere in file",
+  );
   static const ADD_EXPLICIT_CAST = FixKind(
-      'dart.fix.add.explicitCast', DartFixKindPriority.DEFAULT, 'Add cast');
-  static const ADD_CONST = FixKind('dart.fix.add.const',
-      DartFixKindPriority.DEFAULT, "Add 'const' modifier");
-  static const ADD_CONST_MULTI = FixKind('dart.fix.add.const.multi',
-      DartFixKindPriority.IN_FILE, "Add 'const' modifiers everywhere in file");
-  static const ADD_CURLY_BRACES = FixKind('dart.fix.add.curlyBraces',
-      DartFixKindPriority.DEFAULT, 'Add curly braces');
+    'dart.fix.add.explicitCast',
+    DartFixKindPriority.DEFAULT,
+    'Add cast',
+  );
+  static const ADD_CONST = FixKind(
+    'dart.fix.add.const',
+    DartFixKindPriority.DEFAULT,
+    "Add 'const' modifier",
+  );
+  static const ADD_CONST_MULTI = FixKind(
+    'dart.fix.add.const.multi',
+    DartFixKindPriority.IN_FILE,
+    "Add 'const' modifiers everywhere in file",
+  );
+  static const ADD_CURLY_BRACES = FixKind(
+    'dart.fix.add.curlyBraces',
+    DartFixKindPriority.DEFAULT,
+    'Add curly braces',
+  );
   static const ADD_CURLY_BRACES_MULTI = FixKind(
-      'dart.fix.add.curlyBraces.multi',
-      DartFixKindPriority.IN_FILE,
-      'Add curly braces everywhere in file');
+    'dart.fix.add.curlyBraces.multi',
+    DartFixKindPriority.IN_FILE,
+    'Add curly braces everywhere in file',
+  );
   static const ADD_DIAGNOSTIC_PROPERTY_REFERENCE = FixKind(
-      'dart.fix.add.diagnosticPropertyReference',
-      DartFixKindPriority.DEFAULT,
-      'Add a debug reference to this property');
+    'dart.fix.add.diagnosticPropertyReference',
+    DartFixKindPriority.DEFAULT,
+    'Add a debug reference to this property',
+  );
   static const ADD_DIAGNOSTIC_PROPERTY_REFERENCE_MULTI = FixKind(
-      'dart.fix.add.diagnosticPropertyReference.multi',
-      DartFixKindPriority.IN_FILE,
-      'Add missing debug property references everywhere in file');
-  static const ADD_EOL_AT_END_OF_FILE = FixKind('dart.fix.add.eolAtEndOfFile',
-      DartFixKindPriority.DEFAULT, 'Add EOL at end of file');
+    'dart.fix.add.diagnosticPropertyReference.multi',
+    DartFixKindPriority.IN_FILE,
+    'Add missing debug property references everywhere in file',
+  );
+  static const ADD_EOL_AT_END_OF_FILE = FixKind(
+    'dart.fix.add.eolAtEndOfFile',
+    DartFixKindPriority.DEFAULT,
+    'Add EOL at end of file',
+  );
   static const ADD_FIELD_FORMAL_PARAMETERS = FixKind(
-      'dart.fix.add.fieldFormalParameters',
-      70,
-      'Add final field formal parameters');
+    'dart.fix.add.fieldFormalParameters',
+    70,
+    'Add final field formal parameters',
+  );
   static const ADD_KEY_TO_CONSTRUCTORS = FixKind(
-      'dart.fix.add.keyToConstructors',
-      DartFixKindPriority.DEFAULT,
-      "Add 'key' to constructors");
+    'dart.fix.add.keyToConstructors',
+    DartFixKindPriority.DEFAULT,
+    "Add 'key' to constructors",
+  );
   static const ADD_LATE = FixKind(
-      'dart.fix.add.late', DartFixKindPriority.DEFAULT, "Add 'late' modifier");
+    'dart.fix.add.late',
+    DartFixKindPriority.DEFAULT,
+    "Add 'late' modifier",
+  );
   static const ADD_MISSING_ENUM_CASE_CLAUSES = FixKind(
-      'dart.fix.add.missingEnumCaseClauses',
-      DartFixKindPriority.DEFAULT,
-      'Add missing case clauses');
+    'dart.fix.add.missingEnumCaseClauses',
+    DartFixKindPriority.DEFAULT,
+    'Add missing case clauses',
+  );
   static const ADD_MISSING_PARAMETER_NAMED = FixKind(
-      'dart.fix.add.missingParameterNamed', 70, "Add named parameter '{0}'");
+    'dart.fix.add.missingParameterNamed',
+    70,
+    "Add named parameter '{0}'",
+  );
   static const ADD_MISSING_PARAMETER_POSITIONAL = FixKind(
-      'dart.fix.add.missingParameterPositional',
-      69,
-      'Add optional positional parameter');
+    'dart.fix.add.missingParameterPositional',
+    69,
+    'Add optional positional parameter',
+  );
   static const ADD_MISSING_PARAMETER_REQUIRED = FixKind(
-      'dart.fix.add.missingParameterRequired',
-      70,
-      'Add required positional parameter');
+    'dart.fix.add.missingParameterRequired',
+    70,
+    'Add required positional parameter',
+  );
   static const ADD_MISSING_REQUIRED_ARGUMENT = FixKind(
-      'dart.fix.add.missingRequiredArgument',
-      70,
-      "Add required argument '{0}'");
+    'dart.fix.add.missingRequiredArgument',
+    70,
+    "Add required argument '{0}'",
+  );
   static const ADD_NE_NULL = FixKind(
-      'dart.fix.add.neNull', DartFixKindPriority.DEFAULT, 'Add != null');
-  static const ADD_NE_NULL_MULTI = FixKind('dart.fix.add.neNull.multi',
-      DartFixKindPriority.IN_FILE, 'Add != null everywhere in file');
+    'dart.fix.add.neNull',
+    DartFixKindPriority.DEFAULT,
+    'Add != null',
+  );
+  static const ADD_NE_NULL_MULTI = FixKind(
+    'dart.fix.add.neNull.multi',
+    DartFixKindPriority.IN_FILE,
+    'Add != null everywhere in file',
+  );
   static const ADD_NULL_CHECK = FixKind(
     'dart.fix.add.nullCheck',
     DartFixKindPriority.DEFAULT - 1,
     'Add a null check (!)',
   );
-  static const ADD_OVERRIDE = FixKind('dart.fix.add.override',
-      DartFixKindPriority.DEFAULT, "Add '@override' annotation");
+  static const ADD_OVERRIDE = FixKind(
+    'dart.fix.add.override',
+    DartFixKindPriority.DEFAULT,
+    "Add '@override' annotation",
+  );
   static const ADD_OVERRIDE_MULTI = FixKind(
-      'dart.fix.add.override.multi',
-      DartFixKindPriority.IN_FILE,
-      "Add '@override' annotations everywhere in file");
-  static const ADD_REQUIRED = FixKind('dart.fix.add.required',
-      DartFixKindPriority.DEFAULT, "Add '@required' annotation");
+    'dart.fix.add.override.multi',
+    DartFixKindPriority.IN_FILE,
+    "Add '@override' annotations everywhere in file",
+  );
+  static const ADD_REQUIRED = FixKind(
+    'dart.fix.add.required',
+    DartFixKindPriority.DEFAULT,
+    "Add '@required' annotation",
+  );
   static const ADD_REQUIRED_MULTI = FixKind(
-      'dart.fix.add.required.multi',
-      DartFixKindPriority.IN_FILE,
-      "Add '@required' annotations everywhere in file");
-  static const ADD_REQUIRED2 = FixKind('dart.fix.add.required',
-      DartFixKindPriority.DEFAULT, "Add 'required' keyword");
+    'dart.fix.add.required.multi',
+    DartFixKindPriority.IN_FILE,
+    "Add '@required' annotations everywhere in file",
+  );
+  static const ADD_REQUIRED2 = FixKind(
+    'dart.fix.add.required',
+    DartFixKindPriority.DEFAULT,
+    "Add 'required' keyword",
+  );
   static const ADD_REQUIRED2_MULTI = FixKind(
-      'dart.fix.add.required.multi',
-      DartFixKindPriority.IN_FILE,
-      "Add 'required' keywords everywhere in file");
-  static const ADD_RETURN_TYPE = FixKind('dart.fix.add.returnType',
-      DartFixKindPriority.DEFAULT, 'Add return type');
-  static const ADD_RETURN_TYPE_MULTI = FixKind('dart.fix.add.returnType.multi',
-      DartFixKindPriority.IN_FILE, 'Add return types everywhere in file');
-  static const ADD_STATIC = FixKind('dart.fix.add.static',
-      DartFixKindPriority.DEFAULT, "Add 'static' modifier");
+    'dart.fix.add.required.multi',
+    DartFixKindPriority.IN_FILE,
+    "Add 'required' keywords everywhere in file",
+  );
+  static const ADD_RETURN_TYPE = FixKind(
+    'dart.fix.add.returnType',
+    DartFixKindPriority.DEFAULT,
+    'Add return type',
+  );
+  static const ADD_RETURN_TYPE_MULTI = FixKind(
+    'dart.fix.add.returnType.multi',
+    DartFixKindPriority.IN_FILE,
+    'Add return types everywhere in file',
+  );
+  static const ADD_STATIC = FixKind(
+    'dart.fix.add.static',
+    DartFixKindPriority.DEFAULT,
+    "Add 'static' modifier",
+  );
   static const ADD_SUPER_CONSTRUCTOR_INVOCATION = FixKind(
-      'dart.fix.add.superConstructorInvocation',
-      DartFixKindPriority.DEFAULT,
-      'Add super constructor {0} invocation');
-  static const ADD_TYPE_ANNOTATION = FixKind('dart.fix.add.typeAnnotation',
-      DartFixKindPriority.DEFAULT, 'Add type annotation');
+    'dart.fix.add.superConstructorInvocation',
+    DartFixKindPriority.DEFAULT,
+    'Add super constructor {0} invocation',
+  );
+  static const ADD_TYPE_ANNOTATION = FixKind(
+    'dart.fix.add.typeAnnotation',
+    DartFixKindPriority.DEFAULT,
+    'Add type annotation',
+  );
   static const ADD_TYPE_ANNOTATION_MULTI = FixKind(
-      'dart.fix.add.typeAnnotation.multi',
-      DartFixKindPriority.IN_FILE,
-      'Add type annotations everywhere in file');
-  static const CHANGE_ARGUMENT_NAME =
-      FixKind('dart.fix.change.argumentName', 60, "Change to '{0}'");
+    'dart.fix.add.typeAnnotation.multi',
+    DartFixKindPriority.IN_FILE,
+    'Add type annotations everywhere in file',
+  );
+  static const CHANGE_ARGUMENT_NAME = FixKind(
+    'dart.fix.change.argumentName',
+    60,
+    "Change to '{0}'",
+  );
   static const CHANGE_TO = FixKind(
-      'dart.fix.change.to', DartFixKindPriority.DEFAULT + 1, "Change to '{0}'");
+    'dart.fix.change.to',
+    DartFixKindPriority.DEFAULT + 1,
+    "Change to '{0}'",
+  );
   static const CHANGE_TO_NEAREST_PRECISE_VALUE = FixKind(
-      'dart.fix.change.toNearestPreciseValue',
-      DartFixKindPriority.DEFAULT,
-      'Change to nearest precise int-as-double value: {0}');
+    'dart.fix.change.toNearestPreciseValue',
+    DartFixKindPriority.DEFAULT,
+    'Change to nearest precise int-as-double value: {0}',
+  );
   static const CHANGE_TO_STATIC_ACCESS = FixKind(
-      'dart.fix.change.toStaticAccess',
-      DartFixKindPriority.DEFAULT,
-      "Change access to static using '{0}'");
+    'dart.fix.change.toStaticAccess',
+    DartFixKindPriority.DEFAULT,
+    "Change access to static using '{0}'",
+  );
   static const CHANGE_TYPE_ANNOTATION = FixKind(
-      'dart.fix.change.typeAnnotation',
-      DartFixKindPriority.DEFAULT,
-      "Change '{0}' to '{1}' type annotation");
+    'dart.fix.change.typeAnnotation',
+    DartFixKindPriority.DEFAULT,
+    "Change '{0}' to '{1}' type annotation",
+  );
   static const CONVERT_FLUTTER_CHILD = FixKind(
-      'dart.fix.flutter.convert.childToChildren',
-      DartFixKindPriority.DEFAULT,
-      'Convert to children:');
+    'dart.fix.flutter.convert.childToChildren',
+    DartFixKindPriority.DEFAULT,
+    'Convert to children:',
+  );
   static const CONVERT_FLUTTER_CHILDREN = FixKind(
-      'dart.fix.flutter.convert.childrenToChild',
-      DartFixKindPriority.DEFAULT,
-      'Convert to child:');
+    'dart.fix.flutter.convert.childrenToChild',
+    DartFixKindPriority.DEFAULT,
+    'Convert to child:',
+  );
   static const CONVERT_FOR_EACH_TO_FOR_LOOP = FixKind(
-      'dart.fix.convert.toForLoop',
-      DartFixKindPriority.DEFAULT,
-      "Convert 'forEach' to a 'for' loop");
+    'dart.fix.convert.toForLoop',
+    DartFixKindPriority.DEFAULT,
+    "Convert 'forEach' to a 'for' loop",
+  );
   static const CONVERT_FOR_EACH_TO_FOR_LOOP_MULTI = FixKind(
-      'dart.fix.convert.toForLoop.multi',
-      DartFixKindPriority.IN_FILE,
-      "Convert 'forEach' to a 'for' loop everywhere in file");
+    'dart.fix.convert.toForLoop.multi',
+    DartFixKindPriority.IN_FILE,
+    "Convert 'forEach' to a 'for' loop everywhere in file",
+  );
   static const CONVERT_INTO_EXPRESSION_BODY = FixKind(
-      'dart.fix.convert.toExpressionBody',
-      DartFixKindPriority.DEFAULT,
-      'Convert to expression body');
+    'dart.fix.convert.toExpressionBody',
+    DartFixKindPriority.DEFAULT,
+    'Convert to expression body',
+  );
   static const CONVERT_INTO_EXPRESSION_BODY_MULTI = FixKind(
-      'dart.fix.convert.toExpressionBody.multi',
-      DartFixKindPriority.IN_FILE,
-      'Convert to expression bodies everywhere in file');
-  static const CONVERT_TO_CONTAINS = FixKind('dart.fix.convert.toContains',
-      DartFixKindPriority.DEFAULT, "Convert to using 'contains'");
+    'dart.fix.convert.toExpressionBody.multi',
+    DartFixKindPriority.IN_FILE,
+    'Convert to expression bodies everywhere in file',
+  );
+  static const CONVERT_TO_CONTAINS = FixKind(
+    'dart.fix.convert.toContains',
+    DartFixKindPriority.DEFAULT,
+    "Convert to using 'contains'",
+  );
   static const CONVERT_TO_CONTAINS_MULTI = FixKind(
-      'dart.fix.convert.toContains.multi',
-      DartFixKindPriority.IN_FILE,
-      "Convert to using 'contains' everywhere in file");
-  static const CONVERT_TO_FOR_ELEMENT = FixKind('dart.fix.convert.toForElement',
-      DartFixKindPriority.DEFAULT, "Convert to a 'for' element");
+    'dart.fix.convert.toContains.multi',
+    DartFixKindPriority.IN_FILE,
+    "Convert to using 'contains' everywhere in file",
+  );
+  static const CONVERT_TO_FOR_ELEMENT = FixKind(
+    'dart.fix.convert.toForElement',
+    DartFixKindPriority.DEFAULT,
+    "Convert to a 'for' element",
+  );
   static const CONVERT_TO_FOR_ELEMENT_MULTI = FixKind(
-      'dart.fix.convert.toForElement.multi',
-      DartFixKindPriority.IN_FILE,
-      "Convert to 'for' elements everywhere in file");
+    'dart.fix.convert.toForElement.multi',
+    DartFixKindPriority.IN_FILE,
+    "Convert to 'for' elements everywhere in file",
+  );
   static const CONVERT_TO_GENERIC_FUNCTION_SYNTAX = FixKind(
-      'dart.fix.convert.toGenericFunctionSyntax',
-      DartFixKindPriority.DEFAULT,
-      "Convert into 'Function' syntax");
+    'dart.fix.convert.toGenericFunctionSyntax',
+    DartFixKindPriority.DEFAULT,
+    "Convert into 'Function' syntax",
+  );
   static const CONVERT_TO_GENERIC_FUNCTION_SYNTAX_MULTI = FixKind(
-      'dart.fix.convert.toGenericFunctionSyntax.multi',
-      DartFixKindPriority.IN_FILE,
-      "Convert to 'Function' syntax everywhere in file");
-  static const CONVERT_TO_IF_ELEMENT = FixKind('dart.fix.convert.toIfElement',
-      DartFixKindPriority.DEFAULT, "Convert to an 'if' element");
+    'dart.fix.convert.toGenericFunctionSyntax.multi',
+    DartFixKindPriority.IN_FILE,
+    "Convert to 'Function' syntax everywhere in file",
+  );
+  static const CONVERT_TO_IF_ELEMENT = FixKind(
+    'dart.fix.convert.toIfElement',
+    DartFixKindPriority.DEFAULT,
+    "Convert to an 'if' element",
+  );
   static const CONVERT_TO_IF_ELEMENT_MULTI = FixKind(
-      'dart.fix.convert.toIfElement.multi',
-      DartFixKindPriority.IN_FILE,
-      "Convert to 'if' elements everywhere in file");
-  static const CONVERT_TO_IF_NULL = FixKind('dart.fix.convert.toIfNull',
-      DartFixKindPriority.DEFAULT, "Convert to use '??'");
+    'dart.fix.convert.toIfElement.multi',
+    DartFixKindPriority.IN_FILE,
+    "Convert to 'if' elements everywhere in file",
+  );
+  static const CONVERT_TO_IF_NULL = FixKind(
+    'dart.fix.convert.toIfNull',
+    DartFixKindPriority.DEFAULT,
+    "Convert to use '??'",
+  );
   static const CONVERT_TO_IF_NULL_MULTI = FixKind(
-      'dart.fix.convert.toIfNull.multi',
-      DartFixKindPriority.IN_FILE,
-      "Convert to '??'s everywhere in file");
+    'dart.fix.convert.toIfNull.multi',
+    DartFixKindPriority.IN_FILE,
+    "Convert to '??'s everywhere in file",
+  );
   static const CONVERT_TO_INITIALIZING_FORMAL = FixKind(
-      'dart.fix.convert.toInitializingFormal',
-      DartFixKindPriority.DEFAULT,
-      'Convert to an initializing formal parameter');
-  static const CONVERT_TO_INT_LITERAL = FixKind('dart.fix.convert.toIntLiteral',
-      DartFixKindPriority.DEFAULT, 'Convert to an int literal');
+    'dart.fix.convert.toInitializingFormal',
+    DartFixKindPriority.DEFAULT,
+    'Convert to an initializing formal parameter',
+  );
+  static const CONVERT_TO_INT_LITERAL = FixKind(
+    'dart.fix.convert.toIntLiteral',
+    DartFixKindPriority.DEFAULT,
+    'Convert to an int literal',
+  );
   static const CONVERT_TO_INT_LITERAL_MULTI = FixKind(
-      'dart.fix.convert.toIntLiteral.multi',
-      DartFixKindPriority.IN_FILE,
-      'Convert to int literals everywhere in file');
+    'dart.fix.convert.toIntLiteral.multi',
+    DartFixKindPriority.IN_FILE,
+    'Convert to int literals everywhere in file',
+  );
   static const CONVERT_TO_IS_NOT = FixKind(
-      'dart.fix.convert.isNot', DartFixKindPriority.DEFAULT, 'Convert to is!');
-  static const CONVERT_TO_IS_NOT_MULTI = FixKind('dart.fix.convert.isNot.multi',
-      DartFixKindPriority.IN_FILE, 'Convert to is! everywhere in file');
+    'dart.fix.convert.isNot',
+    DartFixKindPriority.DEFAULT,
+    'Convert to is!',
+  );
+  static const CONVERT_TO_IS_NOT_MULTI = FixKind(
+    'dart.fix.convert.isNot.multi',
+    DartFixKindPriority.IN_FILE,
+    'Convert to is! everywhere in file',
+  );
   static const CONVERT_TO_LINE_COMMENT = FixKind(
-      'dart.fix.convert.toLineComment',
-      DartFixKindPriority.DEFAULT,
-      'Convert to line documentation comment');
+    'dart.fix.convert.toLineComment',
+    DartFixKindPriority.DEFAULT,
+    'Convert to line documentation comment',
+  );
   static const CONVERT_TO_LINE_COMMENT_MULTI = FixKind(
-      'dart.fix.convert.toLineComment.multi',
-      DartFixKindPriority.IN_FILE,
-      'Convert to line documentation comments everywhere in file');
+    'dart.fix.convert.toLineComment.multi',
+    DartFixKindPriority.IN_FILE,
+    'Convert to line documentation comments everywhere in file',
+  );
   static const CONVERT_TO_LIST_LITERAL = FixKind(
-      'dart.fix.convert.toListLiteral',
-      DartFixKindPriority.DEFAULT,
-      'Convert to list literal');
+    'dart.fix.convert.toListLiteral',
+    DartFixKindPriority.DEFAULT,
+    'Convert to list literal',
+  );
   static const CONVERT_TO_LIST_LITERAL_MULTI = FixKind(
-      'dart.fix.convert.toListLiteral.multi',
-      DartFixKindPriority.IN_FILE,
-      'Convert to list literals everywhere in file');
-  static const CONVERT_TO_MAP_LITERAL = FixKind('dart.fix.convert.toMapLiteral',
-      DartFixKindPriority.DEFAULT, 'Convert to map literal');
+    'dart.fix.convert.toListLiteral.multi',
+    DartFixKindPriority.IN_FILE,
+    'Convert to list literals everywhere in file',
+  );
+  static const CONVERT_TO_MAP_LITERAL = FixKind(
+    'dart.fix.convert.toMapLiteral',
+    DartFixKindPriority.DEFAULT,
+    'Convert to map literal',
+  );
   static const CONVERT_TO_MAP_LITERAL_MULTI = FixKind(
-      'dart.fix.convert.toMapLiteral.multi',
-      DartFixKindPriority.IN_FILE,
-      'Convert to map literals everywhere in file');
+    'dart.fix.convert.toMapLiteral.multi',
+    DartFixKindPriority.IN_FILE,
+    'Convert to map literals everywhere in file',
+  );
   static const CONVERT_TO_NAMED_ARGUMENTS = FixKind(
-      'dart.fix.convert.toNamedArguments',
-      DartFixKindPriority.DEFAULT,
-      'Convert to named arguments');
-  static const CONVERT_TO_NULL_AWARE = FixKind('dart.fix.convert.toNullAware',
-      DartFixKindPriority.DEFAULT, "Convert to use '?.'");
+    'dart.fix.convert.toNamedArguments',
+    DartFixKindPriority.DEFAULT,
+    'Convert to named arguments',
+  );
+  static const CONVERT_TO_NULL_AWARE = FixKind(
+    'dart.fix.convert.toNullAware',
+    DartFixKindPriority.DEFAULT,
+    "Convert to use '?.'",
+  );
   static const CONVERT_TO_NULL_AWARE_MULTI = FixKind(
-      'dart.fix.convert.toNullAware.multi',
-      DartFixKindPriority.IN_FILE,
-      "Convert to use '?.' everywhere in file");
+    'dart.fix.convert.toNullAware.multi',
+    DartFixKindPriority.IN_FILE,
+    "Convert to use '?.' everywhere in file",
+  );
   static const CONVERT_TO_NULL_AWARE_SPREAD = FixKind(
-      'dart.fix.convert.toNullAwareSpread',
-      DartFixKindPriority.DEFAULT,
-      "Convert to use '...?'");
+    'dart.fix.convert.toNullAwareSpread',
+    DartFixKindPriority.DEFAULT,
+    "Convert to use '...?'",
+  );
   static const CONVERT_TO_NULL_AWARE_SPREAD_MULTI = FixKind(
-      'dart.fix.convert.toNullAwareSpread.multi',
-      DartFixKindPriority.IN_FILE,
-      "Convert to use '...?' everywhere in file");
-  static const CONVERT_TO_ON_TYPE = FixKind('dart.fix.convert.toOnType',
-      DartFixKindPriority.DEFAULT, "Convert to 'on {0}'");
+    'dart.fix.convert.toNullAwareSpread.multi',
+    DartFixKindPriority.IN_FILE,
+    "Convert to use '...?' everywhere in file",
+  );
+  static const CONVERT_TO_ON_TYPE = FixKind(
+    'dart.fix.convert.toOnType',
+    DartFixKindPriority.DEFAULT,
+    "Convert to 'on {0}'",
+  );
   static const CONVERT_TO_PACKAGE_IMPORT = FixKind(
-      'dart.fix.convert.toPackageImport',
-      DartFixKindPriority.DEFAULT,
-      "Convert to 'package:' import");
+    'dart.fix.convert.toPackageImport',
+    DartFixKindPriority.DEFAULT,
+    "Convert to 'package:' import",
+  );
   static const CONVERT_TO_PACKAGE_IMPORT_MULTI = FixKind(
-      'dart.fix.convert.toPackageImport.multi',
-      DartFixKindPriority.IN_FILE,
-      "Convert to 'package:' imports everywhere in file");
+    'dart.fix.convert.toPackageImport.multi',
+    DartFixKindPriority.IN_FILE,
+    "Convert to 'package:' imports everywhere in file",
+  );
   static const CONVERT_TO_RELATIVE_IMPORT = FixKind(
-      'dart.fix.convert.toRelativeImport',
-      DartFixKindPriority.DEFAULT,
-      'Convert to relative import');
+    'dart.fix.convert.toRelativeImport',
+    DartFixKindPriority.DEFAULT,
+    'Convert to relative import',
+  );
   static const CONVERT_TO_RELATIVE_IMPORT_MULTI = FixKind(
-      'dart.fix.convert.toRelativeImport.multi',
-      DartFixKindPriority.IN_FILE,
-      'Convert to relative imports everywhere in file');
-  static const CONVERT_TO_SET_LITERAL = FixKind('dart.fix.convert.toSetLiteral',
-      DartFixKindPriority.DEFAULT, 'Convert to set literal');
+    'dart.fix.convert.toRelativeImport.multi',
+    DartFixKindPriority.IN_FILE,
+    'Convert to relative imports everywhere in file',
+  );
+  static const CONVERT_TO_SET_LITERAL = FixKind(
+    'dart.fix.convert.toSetLiteral',
+    DartFixKindPriority.DEFAULT,
+    'Convert to set literal',
+  );
   static const CONVERT_TO_SET_LITERAL_MULTI = FixKind(
-      'dart.fix.convert.toSetLiteral.multi',
-      DartFixKindPriority.IN_FILE,
-      'Convert to set literals everywhere in file');
+    'dart.fix.convert.toSetLiteral.multi',
+    DartFixKindPriority.IN_FILE,
+    'Convert to set literals everywhere in file',
+  );
   static const CONVERT_TO_SINGLE_QUOTED_STRING = FixKind(
-      'dart.fix.convert.toSingleQuotedString',
-      DartFixKindPriority.DEFAULT,
-      'Convert to single quoted string');
+    'dart.fix.convert.toSingleQuotedString',
+    DartFixKindPriority.DEFAULT,
+    'Convert to single quoted string',
+  );
   static const CONVERT_TO_SINGLE_QUOTED_STRING_MULTI = FixKind(
-      'dart.fix.convert.toSingleQuotedString.multi',
-      DartFixKindPriority.IN_FILE,
-      'Convert to single quoted strings everywhere in file');
-  static const CONVERT_TO_SPREAD = FixKind('dart.fix.convert.toSpread',
-      DartFixKindPriority.DEFAULT, 'Convert to a spread');
+    'dart.fix.convert.toSingleQuotedString.multi',
+    DartFixKindPriority.IN_FILE,
+    'Convert to single quoted strings everywhere in file',
+  );
+  static const CONVERT_TO_SPREAD = FixKind(
+    'dart.fix.convert.toSpread',
+    DartFixKindPriority.DEFAULT,
+    'Convert to a spread',
+  );
   static const CONVERT_TO_SPREAD_MULTI = FixKind(
-      'dart.fix.convert.toSpread.multi',
-      DartFixKindPriority.IN_FILE,
-      'Convert to spreads everywhere in file');
-  static const CONVERT_TO_WHERE_TYPE = FixKind('dart.fix.convert.toWhereType',
-      DartFixKindPriority.DEFAULT, "Convert to use 'whereType'");
+    'dart.fix.convert.toSpread.multi',
+    DartFixKindPriority.IN_FILE,
+    'Convert to spreads everywhere in file',
+  );
+  static const CONVERT_TO_WHERE_TYPE = FixKind(
+    'dart.fix.convert.toWhereType',
+    DartFixKindPriority.DEFAULT,
+    "Convert to use 'whereType'",
+  );
   static const CONVERT_TO_WHERE_TYPE_MULTI = FixKind(
-      'dart.fix.convert.toWhereType.multi',
-      DartFixKindPriority.IN_FILE,
-      "Convert to using 'whereType' everywhere in file");
-  static const CREATE_CLASS = FixKind('dart.fix.create.class',
-      DartFixKindPriority.DEFAULT, "Create class '{0}'");
-  static const CREATE_CONSTRUCTOR = FixKind('dart.fix.create.constructor',
-      DartFixKindPriority.DEFAULT, "Create constructor '{0}'");
+    'dart.fix.convert.toWhereType.multi',
+    DartFixKindPriority.IN_FILE,
+    "Convert to using 'whereType' everywhere in file",
+  );
+  static const CREATE_CLASS = FixKind(
+    'dart.fix.create.class',
+    DartFixKindPriority.DEFAULT,
+    "Create class '{0}'",
+  );
+  static const CREATE_CONSTRUCTOR = FixKind(
+    'dart.fix.create.constructor',
+    DartFixKindPriority.DEFAULT,
+    "Create constructor '{0}'",
+  );
   static const CREATE_CONSTRUCTOR_FOR_FINAL_FIELDS = FixKind(
-      'dart.fix.create.constructorForFinalFields',
-      DartFixKindPriority.DEFAULT,
-      'Create constructor for final fields');
+    'dart.fix.create.constructorForFinalFields',
+    DartFixKindPriority.DEFAULT,
+    'Create constructor for final fields',
+  );
   static const CREATE_CONSTRUCTOR_SUPER = FixKind(
-      'dart.fix.create.constructorSuper',
-      DartFixKindPriority.DEFAULT,
-      'Create constructor to call {0}');
-  static const CREATE_FIELD =
-      FixKind('dart.fix.create.field', 49, "Create field '{0}'");
+    'dart.fix.create.constructorSuper',
+    DartFixKindPriority.DEFAULT,
+    'Create constructor to call {0}',
+  );
+  static const CREATE_FIELD = FixKind(
+    'dart.fix.create.field',
+    49,
+    "Create field '{0}'",
+  );
   static const CREATE_FILE = FixKind(
-      'dart.fix.create.file', DartFixKindPriority.DEFAULT, "Create file '{0}'");
-  static const CREATE_FUNCTION =
-      FixKind('dart.fix.create.function', 49, "Create function '{0}'");
-  static const CREATE_GETTER = FixKind('dart.fix.create.getter',
-      DartFixKindPriority.DEFAULT, "Create getter '{0}'");
-  static const CREATE_LOCAL_VARIABLE = FixKind('dart.fix.create.localVariable',
-      DartFixKindPriority.DEFAULT, "Create local variable '{0}'");
-  static const CREATE_METHOD = FixKind('dart.fix.create.method',
-      DartFixKindPriority.DEFAULT, "Create method '{0}'");
+    'dart.fix.create.file',
+    DartFixKindPriority.DEFAULT,
+    "Create file '{0}'",
+  );
+  static const CREATE_FUNCTION = FixKind(
+    'dart.fix.create.function',
+    49,
+    "Create function '{0}'",
+  );
+  static const CREATE_GETTER = FixKind(
+    'dart.fix.create.getter',
+    DartFixKindPriority.DEFAULT,
+    "Create getter '{0}'",
+  );
+  static const CREATE_LOCAL_VARIABLE = FixKind(
+    'dart.fix.create.localVariable',
+    DartFixKindPriority.DEFAULT,
+    "Create local variable '{0}'",
+  );
+  static const CREATE_METHOD = FixKind(
+    'dart.fix.create.method',
+    DartFixKindPriority.DEFAULT,
+    "Create method '{0}'",
+  );
 
   // todo (pq): used by LintNames.hash_and_equals; consider removing.
-  static const CREATE_METHOD_MULTI = FixKind('dart.fix.create.method.multi',
-      DartFixKindPriority.IN_FILE, 'Create methods in file');
+  static const CREATE_METHOD_MULTI = FixKind(
+    'dart.fix.create.method.multi',
+    DartFixKindPriority.IN_FILE,
+    'Create methods in file',
+  );
   static const CREATE_MISSING_OVERRIDES = FixKind(
-      'dart.fix.create.missingOverrides',
-      DartFixKindPriority.DEFAULT + 1,
-      'Create {0} missing override{1}');
-  static const CREATE_MIXIN = FixKind('dart.fix.create.mixin',
-      DartFixKindPriority.DEFAULT, "Create mixin '{0}'");
+    'dart.fix.create.missingOverrides',
+    DartFixKindPriority.DEFAULT + 1,
+    'Create {0} missing override{1}',
+  );
+  static const CREATE_MIXIN = FixKind(
+    'dart.fix.create.mixin',
+    DartFixKindPriority.DEFAULT,
+    "Create mixin '{0}'",
+  );
   static const CREATE_NO_SUCH_METHOD = FixKind(
-      'dart.fix.create.noSuchMethod', 49, "Create 'noSuchMethod' method");
-  static const CREATE_SETTER = FixKind('dart.fix.create.setter',
-      DartFixKindPriority.DEFAULT, "Create setter '{0}'");
-  static const DATA_DRIVEN =
-      FixKind('dart.fix.dataDriven', DartFixKindPriority.DEFAULT, '{0}');
-  static const EXTEND_CLASS_FOR_MIXIN = FixKind('dart.fix.extendClassForMixin',
-      DartFixKindPriority.DEFAULT, "Extend the class '{0}'");
-  static const IGNORE_ERROR_LINE = FixKind('dart.fix.ignore.line',
-      DartFixKindPriority.IGNORE, "Ignore '{0}' for this line");
-  static const IGNORE_ERROR_FILE = FixKind('dart.fix.ignore.file',
-      DartFixKindPriority.IGNORE - 1, "Ignore '{0}' for this file");
-  static const IMPORT_ASYNC =
-      FixKind('dart.fix.import.async', 49, "Import 'dart:async'");
-  static const IMPORT_LIBRARY_PREFIX = FixKind('dart.fix.import.libraryPrefix',
-      49, "Use imported library '{0}' with prefix '{1}'");
+    'dart.fix.create.noSuchMethod',
+    49,
+    "Create 'noSuchMethod' method",
+  );
+  static const CREATE_SETTER = FixKind(
+    'dart.fix.create.setter',
+    DartFixKindPriority.DEFAULT,
+    "Create setter '{0}'",
+  );
+  static const DATA_DRIVEN = FixKind(
+    'dart.fix.dataDriven',
+    DartFixKindPriority.DEFAULT,
+    '{0}',
+  );
+  static const EXTEND_CLASS_FOR_MIXIN = FixKind(
+    'dart.fix.extendClassForMixin',
+    DartFixKindPriority.DEFAULT,
+    "Extend the class '{0}'",
+  );
+  static const IGNORE_ERROR_LINE = FixKind(
+    'dart.fix.ignore.line',
+    DartFixKindPriority.IGNORE,
+    "Ignore '{0}' for this line",
+  );
+  static const IGNORE_ERROR_FILE = FixKind(
+    'dart.fix.ignore.file',
+    DartFixKindPriority.IGNORE - 1,
+    "Ignore '{0}' for this file",
+  );
+  static const IMPORT_ASYNC = FixKind(
+    'dart.fix.import.async',
+    49,
+    "Import 'dart:async'",
+  );
+  static const IMPORT_LIBRARY_PREFIX = FixKind(
+    'dart.fix.import.libraryPrefix',
+    49,
+    "Use imported library '{0}' with prefix '{1}'",
+  );
   static const IMPORT_LIBRARY_PROJECT1 = FixKind(
-      'dart.fix.import.libraryProject1',
-      DartFixKindPriority.DEFAULT + 3,
-      "Import library '{0}'");
+    'dart.fix.import.libraryProject1',
+    DartFixKindPriority.DEFAULT + 3,
+    "Import library '{0}'",
+  );
   static const IMPORT_LIBRARY_PROJECT2 = FixKind(
-      'dart.fix.import.libraryProject2',
-      DartFixKindPriority.DEFAULT + 2,
-      "Import library '{0}'");
+    'dart.fix.import.libraryProject2',
+    DartFixKindPriority.DEFAULT + 2,
+    "Import library '{0}'",
+  );
   static const IMPORT_LIBRARY_PROJECT3 = FixKind(
-      'dart.fix.import.libraryProject3',
-      DartFixKindPriority.DEFAULT + 1,
-      "Import library '{0}'");
-  static const IMPORT_LIBRARY_SDK = FixKind('dart.fix.import.librarySdk',
-      DartFixKindPriority.DEFAULT + 4, "Import library '{0}'");
-  static const IMPORT_LIBRARY_SHOW = FixKind('dart.fix.import.libraryShow',
-      DartFixKindPriority.DEFAULT + 5, "Update library '{0}' import");
-  static const INLINE_INVOCATION = FixKind('dart.fix.inlineInvocation',
-      DartFixKindPriority.DEFAULT - 20, "Inline invocation of '{0}'");
+    'dart.fix.import.libraryProject3',
+    DartFixKindPriority.DEFAULT + 1,
+    "Import library '{0}'",
+  );
+  static const IMPORT_LIBRARY_SDK = FixKind(
+    'dart.fix.import.librarySdk',
+    DartFixKindPriority.DEFAULT + 4,
+    "Import library '{0}'",
+  );
+  static const IMPORT_LIBRARY_SHOW = FixKind(
+    'dart.fix.import.libraryShow',
+    DartFixKindPriority.DEFAULT + 5,
+    "Update library '{0}' import",
+  );
+  static const INLINE_INVOCATION = FixKind(
+    'dart.fix.inlineInvocation',
+    DartFixKindPriority.DEFAULT - 20,
+    "Inline invocation of '{0}'",
+  );
   static const INLINE_INVOCATION_MULTI = FixKind(
-      'dart.fix.inlineInvocation.multi',
-      DartFixKindPriority.IN_FILE - 20,
-      'Inline invocations everywhere in file');
-  static const INLINE_TYPEDEF = FixKind('dart.fix.inlineTypedef',
-      DartFixKindPriority.DEFAULT - 20, "Inline the definition of '{0}'");
+    'dart.fix.inlineInvocation.multi',
+    DartFixKindPriority.IN_FILE - 20,
+    'Inline invocations everywhere in file',
+  );
+  static const INLINE_TYPEDEF = FixKind(
+    'dart.fix.inlineTypedef',
+    DartFixKindPriority.DEFAULT - 20,
+    "Inline the definition of '{0}'",
+  );
   static const INLINE_TYPEDEF_MULTI = FixKind(
-      'dart.fix.inlineTypedef.multi',
-      DartFixKindPriority.IN_FILE - 20,
-      'Inline type definitions everywhere in file');
+    'dart.fix.inlineTypedef.multi',
+    DartFixKindPriority.IN_FILE - 20,
+    'Inline type definitions everywhere in file',
+  );
   static const INSERT_SEMICOLON = FixKind(
-      'dart.fix.insertSemicolon', DartFixKindPriority.DEFAULT, "Insert ';'");
-  static const MAKE_CLASS_ABSTRACT = FixKind('dart.fix.makeClassAbstract',
-      DartFixKindPriority.DEFAULT, "Make class '{0}' abstract");
-  static const MAKE_FIELD_NOT_FINAL = FixKind('dart.fix.makeFieldNotFinal',
-      DartFixKindPriority.DEFAULT, "Make field '{0}' not final");
-  static const MAKE_FINAL =
-      FixKind('dart.fix.makeFinal', DartFixKindPriority.DEFAULT, 'Make final');
+    'dart.fix.insertSemicolon',
+    DartFixKindPriority.DEFAULT,
+    "Insert ';'",
+  );
+  static const MAKE_CLASS_ABSTRACT = FixKind(
+    'dart.fix.makeClassAbstract',
+    DartFixKindPriority.DEFAULT,
+    "Make class '{0}' abstract",
+  );
+  static const MAKE_FIELD_NOT_FINAL = FixKind(
+    'dart.fix.makeFieldNotFinal',
+    DartFixKindPriority.DEFAULT,
+    "Make field '{0}' not final",
+  );
+  static const MAKE_FINAL = FixKind(
+    'dart.fix.makeFinal',
+    DartFixKindPriority.DEFAULT,
+    'Make final',
+  );
 
   // todo (pq): consider parameterizing: 'Make {fields} final...'
-  static const MAKE_FINAL_MULTI = FixKind('dart.fix.makeFinal.multi',
-      DartFixKindPriority.IN_FILE, 'Make final where possible in file');
+  static const MAKE_FINAL_MULTI = FixKind(
+    'dart.fix.makeFinal.multi',
+    DartFixKindPriority.IN_FILE,
+    'Make final where possible in file',
+  );
   static const MAKE_RETURN_TYPE_NULLABLE = FixKind(
-      'dart.fix.makeReturnTypeNullable',
-      DartFixKindPriority.DEFAULT,
-      'Make the return type nullable');
+    'dart.fix.makeReturnTypeNullable',
+    DartFixKindPriority.DEFAULT,
+    'Make the return type nullable',
+  );
   static const MOVE_TYPE_ARGUMENTS_TO_CLASS = FixKind(
-      'dart.fix.moveTypeArgumentsToClass',
-      DartFixKindPriority.DEFAULT,
-      'Move type arguments to after class name');
+    'dart.fix.moveTypeArgumentsToClass',
+    DartFixKindPriority.DEFAULT,
+    'Move type arguments to after class name',
+  );
   static const MAKE_VARIABLE_NOT_FINAL = FixKind(
-      'dart.fix.makeVariableNotFinal',
-      DartFixKindPriority.DEFAULT,
-      "Make variable '{0}' not final");
-  static const MAKE_VARIABLE_NULLABLE = FixKind('dart.fix.makeVariableNullable',
-      DartFixKindPriority.DEFAULT, "Make '{0}' nullable");
-  static const ORGANIZE_IMPORTS = FixKind('dart.fix.organize.imports',
-      DartFixKindPriority.DEFAULT, 'Organize Imports');
+    'dart.fix.makeVariableNotFinal',
+    DartFixKindPriority.DEFAULT,
+    "Make variable '{0}' not final",
+  );
+  static const MAKE_VARIABLE_NULLABLE = FixKind(
+    'dart.fix.makeVariableNullable',
+    DartFixKindPriority.DEFAULT,
+    "Make '{0}' nullable",
+  );
+  static const ORGANIZE_IMPORTS = FixKind(
+    'dart.fix.organize.imports',
+    DartFixKindPriority.DEFAULT,
+    'Organize Imports',
+  );
   static const QUALIFY_REFERENCE = FixKind(
-      'dart.fix.qualifyReference', DartFixKindPriority.DEFAULT, "Use '{0}'");
-  static const REMOVE_ANNOTATION = FixKind('dart.fix.remove.annotation',
-      DartFixKindPriority.DEFAULT, "Remove the '{0}' annotation");
-  static const REMOVE_ARGUMENT = FixKind('dart.fix.remove.argument',
-      DartFixKindPriority.DEFAULT, 'Remove argument');
+    'dart.fix.qualifyReference',
+    DartFixKindPriority.DEFAULT,
+    "Use '{0}'",
+  );
+  static const REMOVE_ANNOTATION = FixKind(
+    'dart.fix.remove.annotation',
+    DartFixKindPriority.DEFAULT,
+    "Remove the '{0}' annotation",
+  );
+  static const REMOVE_ARGUMENT = FixKind(
+    'dart.fix.remove.argument',
+    DartFixKindPriority.DEFAULT,
+    'Remove argument',
+  );
 
   // todo (pq): used by LintNames.avoid_redundant_argument_values; consider a parameterized message
-  static const REMOVE_ARGUMENT_MULTI = FixKind('dart.fix.remove.argument.multi',
-      DartFixKindPriority.IN_FILE, 'Remove arguments in file');
+  static const REMOVE_ARGUMENT_MULTI = FixKind(
+    'dart.fix.remove.argument.multi',
+    DartFixKindPriority.IN_FILE,
+    'Remove arguments in file',
+  );
   static const REMOVE_AWAIT = FixKind(
-      'dart.fix.remove.await', DartFixKindPriority.DEFAULT, 'Remove await');
-  static const REMOVE_AWAIT_MULTI = FixKind('dart.fix.remove.await.multi',
-      DartFixKindPriority.IN_FILE, 'Remove awaits in file');
-  static const REMOVE_COMPARISON = FixKind('dart.fix.remove.comparison',
-      DartFixKindPriority.DEFAULT, 'Remove comparison');
+    'dart.fix.remove.await',
+    DartFixKindPriority.DEFAULT,
+    'Remove await',
+  );
+  static const REMOVE_AWAIT_MULTI = FixKind(
+    'dart.fix.remove.await.multi',
+    DartFixKindPriority.IN_FILE,
+    'Remove awaits in file',
+  );
+  static const REMOVE_COMPARISON = FixKind(
+    'dart.fix.remove.comparison',
+    DartFixKindPriority.DEFAULT,
+    'Remove comparison',
+  );
   static const REMOVE_COMPARISON_MULTI = FixKind(
-      'dart.fix.remove.comparison.multi',
-      DartFixKindPriority.IN_FILE,
-      'Remove comparisons in file');
+    'dart.fix.remove.comparison.multi',
+    DartFixKindPriority.IN_FILE,
+    'Remove comparisons in file',
+  );
   static const REMOVE_CONST = FixKind(
-      'dart.fix.remove.const', DartFixKindPriority.DEFAULT, 'Remove const');
-  static const REMOVE_DEAD_CODE = FixKind('dart.fix.remove.deadCode',
-      DartFixKindPriority.DEFAULT, 'Remove dead code');
-  static const REMOVE_DUPLICATE_CASE = FixKind('dart.fix.remove.duplicateCase',
-      DartFixKindPriority.DEFAULT, 'Remove duplicate case statement');
+    'dart.fix.remove.const',
+    DartFixKindPriority.DEFAULT,
+    'Remove const',
+  );
+  static const REMOVE_DEAD_CODE = FixKind(
+    'dart.fix.remove.deadCode',
+    DartFixKindPriority.DEFAULT,
+    'Remove dead code',
+  );
+  static const REMOVE_DUPLICATE_CASE = FixKind(
+    'dart.fix.remove.duplicateCase',
+    DartFixKindPriority.DEFAULT,
+    'Remove duplicate case statement',
+  );
 
   // todo (pq): is this dangerous to bulk apply?  Consider removing.
   static const REMOVE_DUPLICATE_CASE_MULTI = FixKind(
-      'dart.fix.remove.duplicateCase.multi',
-      DartFixKindPriority.IN_FILE,
-      'Remove duplicate case statement');
-  static const REMOVE_EMPTY_CATCH = FixKind('dart.fix.remove.emptyCatch',
-      DartFixKindPriority.DEFAULT, 'Remove empty catch clause');
+    'dart.fix.remove.duplicateCase.multi',
+    DartFixKindPriority.IN_FILE,
+    'Remove duplicate case statement',
+  );
+  static const REMOVE_EMPTY_CATCH = FixKind(
+    'dart.fix.remove.emptyCatch',
+    DartFixKindPriority.DEFAULT,
+    'Remove empty catch clause',
+  );
   static const REMOVE_EMPTY_CATCH_MULTI = FixKind(
-      'dart.fix.remove.emptyCatch.multi',
-      DartFixKindPriority.IN_FILE,
-      'Remove empty catch clauses everywhere in file');
+    'dart.fix.remove.emptyCatch.multi',
+    DartFixKindPriority.IN_FILE,
+    'Remove empty catch clauses everywhere in file',
+  );
   static const REMOVE_EMPTY_CONSTRUCTOR_BODY = FixKind(
-      'dart.fix.remove.emptyConstructorBody',
-      DartFixKindPriority.DEFAULT,
-      'Remove empty constructor body');
+    'dart.fix.remove.emptyConstructorBody',
+    DartFixKindPriority.DEFAULT,
+    'Remove empty constructor body',
+  );
   static const REMOVE_EMPTY_CONSTRUCTOR_BODY_MULTI = FixKind(
-      'dart.fix.remove.emptyConstructorBody.multi',
-      DartFixKindPriority.IN_FILE,
-      'Remove empty constructor bodies in file');
-  static const REMOVE_EMPTY_ELSE = FixKind('dart.fix.remove.emptyElse',
-      DartFixKindPriority.DEFAULT, 'Remove empty else clause');
+    'dart.fix.remove.emptyConstructorBody.multi',
+    DartFixKindPriority.IN_FILE,
+    'Remove empty constructor bodies in file',
+  );
+  static const REMOVE_EMPTY_ELSE = FixKind(
+    'dart.fix.remove.emptyElse',
+    DartFixKindPriority.DEFAULT,
+    'Remove empty else clause',
+  );
   static const REMOVE_EMPTY_ELSE_MULTI = FixKind(
-      'dart.fix.remove.emptyElse.multi',
-      DartFixKindPriority.IN_FILE,
-      'Remove empty else clauses everywhere in file');
+    'dart.fix.remove.emptyElse.multi',
+    DartFixKindPriority.IN_FILE,
+    'Remove empty else clauses everywhere in file',
+  );
   static const REMOVE_EMPTY_STATEMENT = FixKind(
-      'dart.fix.remove.emptyStatement',
-      DartFixKindPriority.DEFAULT,
-      'Remove empty statement');
+    'dart.fix.remove.emptyStatement',
+    DartFixKindPriority.DEFAULT,
+    'Remove empty statement',
+  );
   static const REMOVE_EMPTY_STATEMENT_MULTI = FixKind(
-      'dart.fix.remove.emptyStatement.multi',
-      DartFixKindPriority.IN_FILE,
-      'Remove empty statements everywhere in file');
+    'dart.fix.remove.emptyStatement.multi',
+    DartFixKindPriority.IN_FILE,
+    'Remove empty statements everywhere in file',
+  );
   static const REMOVE_IF_NULL_OPERATOR = FixKind(
-      'dart.fix.remove.ifNullOperator',
-      DartFixKindPriority.DEFAULT,
-      "Remove the '??' operator");
+    'dart.fix.remove.ifNullOperator',
+    DartFixKindPriority.DEFAULT,
+    "Remove the '??' operator",
+  );
   static const REMOVE_IF_NULL_OPERATOR_MULTI = FixKind(
-      'dart.fix.remove.ifNullOperator.multi',
-      DartFixKindPriority.IN_FILE,
-      "Remove unnecessary '??' operators everywhere in file");
-  static const REMOVE_INITIALIZER = FixKind('dart.fix.remove.initializer',
-      DartFixKindPriority.DEFAULT, 'Remove initializer');
+    'dart.fix.remove.ifNullOperator.multi',
+    DartFixKindPriority.IN_FILE,
+    "Remove unnecessary '??' operators everywhere in file",
+  );
+  static const REMOVE_INITIALIZER = FixKind(
+    'dart.fix.remove.initializer',
+    DartFixKindPriority.DEFAULT,
+    'Remove initializer',
+  );
   static const REMOVE_INITIALIZER_MULTI = FixKind(
-      'dart.fix.remove.initializer.multi',
-      DartFixKindPriority.IN_FILE,
-      'Remove unnecessary initializers everywhere in file');
+    'dart.fix.remove.initializer.multi',
+    DartFixKindPriority.IN_FILE,
+    'Remove unnecessary initializers everywhere in file',
+  );
   static const REMOVE_INTERPOLATION_BRACES = FixKind(
-      'dart.fix.remove.interpolationBraces',
-      DartFixKindPriority.DEFAULT,
-      'Remove unnecessary interpolation braces');
+    'dart.fix.remove.interpolationBraces',
+    DartFixKindPriority.DEFAULT,
+    'Remove unnecessary interpolation braces',
+  );
   static const REMOVE_INTERPOLATION_BRACES_MULTI = FixKind(
-      'dart.fix.remove.interpolationBraces.multi',
-      DartFixKindPriority.IN_FILE,
-      'Remove unnecessary interpolation braces everywhere in file');
+    'dart.fix.remove.interpolationBraces.multi',
+    DartFixKindPriority.IN_FILE,
+    'Remove unnecessary interpolation braces everywhere in file',
+  );
   static const REMOVE_METHOD_DECLARATION = FixKind(
-      'dart.fix.remove.methodDeclaration',
-      DartFixKindPriority.DEFAULT,
-      'Remove method declaration');
+    'dart.fix.remove.methodDeclaration',
+    DartFixKindPriority.DEFAULT,
+    'Remove method declaration',
+  );
 
   // todo (pq): parameterize to make scope explicit
   static const REMOVE_METHOD_DECLARATION_MULTI = FixKind(
-      'dart.fix.remove.methodDeclaration.multi',
-      DartFixKindPriority.IN_FILE,
-      'Remove unnecessary method declarations in file');
+    'dart.fix.remove.methodDeclaration.multi',
+    DartFixKindPriority.IN_FILE,
+    'Remove unnecessary method declarations in file',
+  );
   static const REMOVE_NAME_FROM_COMBINATOR = FixKind(
-      'dart.fix.remove.nameFromCombinator',
-      DartFixKindPriority.DEFAULT,
-      "Remove name from '{0}'");
+    'dart.fix.remove.nameFromCombinator',
+    DartFixKindPriority.DEFAULT,
+    "Remove name from '{0}'",
+  );
   static const REMOVE_NON_NULL_ASSERTION = FixKind(
-      'dart.fix.remove.nonNullAssertion',
-      DartFixKindPriority.DEFAULT,
-      "Remove the '!'");
+    'dart.fix.remove.nonNullAssertion',
+    DartFixKindPriority.DEFAULT,
+    "Remove the '!'",
+  );
   static const REMOVE_NON_NULL_ASSERTION_MULTI = FixKind(
-      'dart.fix.remove.nonNullAssertion.multi',
-      DartFixKindPriority.IN_FILE,
-      "Remove '!'s in file");
-  static const REMOVE_OPERATOR = FixKind('dart.fix.remove.operator',
-      DartFixKindPriority.DEFAULT, 'Remove the operator');
+    'dart.fix.remove.nonNullAssertion.multi',
+    DartFixKindPriority.IN_FILE,
+    "Remove '!'s in file",
+  );
+  static const REMOVE_OPERATOR = FixKind(
+    'dart.fix.remove.operator',
+    DartFixKindPriority.DEFAULT,
+    'Remove the operator',
+  );
   static const REMOVE_OPERATOR_MULTI = FixKind(
-      'dart.fix.remove.operator.multi.multi',
-      DartFixKindPriority.IN_FILE,
-      'Remove operators in file');
+    'dart.fix.remove.operator.multi.multi',
+    DartFixKindPriority.IN_FILE,
+    'Remove operators in file',
+  );
   static const REMOVE_PARAMETERS_IN_GETTER_DECLARATION = FixKind(
-      'dart.fix.remove.parametersInGetterDeclaration',
-      DartFixKindPriority.DEFAULT,
-      'Remove parameters in getter declaration');
+    'dart.fix.remove.parametersInGetterDeclaration',
+    DartFixKindPriority.DEFAULT,
+    'Remove parameters in getter declaration',
+  );
   static const REMOVE_PARENTHESIS_IN_GETTER_INVOCATION = FixKind(
-      'dart.fix.remove.parenthesisInGetterInvocation',
-      DartFixKindPriority.DEFAULT,
-      'Remove parentheses in getter invocation');
-  static const REMOVE_QUESTION_MARK = FixKind('dart.fix.remove.questionMark',
-      DartFixKindPriority.DEFAULT, "Remove the '?'");
+    'dart.fix.remove.parenthesisInGetterInvocation',
+    DartFixKindPriority.DEFAULT,
+    'Remove parentheses in getter invocation',
+  );
+  static const REMOVE_QUESTION_MARK = FixKind(
+    'dart.fix.remove.questionMark',
+    DartFixKindPriority.DEFAULT,
+    "Remove the '?'",
+  );
   static const REMOVE_QUESTION_MARK_MULTI = FixKind(
-      'dart.fix.remove.questionMark.multi',
-      DartFixKindPriority.IN_FILE,
-      'Remove unnecessary question marks in file');
-  static const REMOVE_RETURNED_VALUE = FixKind('dart.fix.remove.returnedValue',
-      DartFixKindPriority.DEFAULT, 'Remove invalid returned value');
+    'dart.fix.remove.questionMark.multi',
+    DartFixKindPriority.IN_FILE,
+    'Remove unnecessary question marks in file',
+  );
+  static const REMOVE_RETURNED_VALUE = FixKind(
+    'dart.fix.remove.returnedValue',
+    DartFixKindPriority.DEFAULT,
+    'Remove invalid returned value',
+  );
   static const REMOVE_RETURNED_VALUE_MULTI = FixKind(
-      'dart.fix.remove.returnedValue.multi',
-      DartFixKindPriority.IN_FILE,
-      'Remove invalid returned values in file');
+    'dart.fix.remove.returnedValue.multi',
+    DartFixKindPriority.IN_FILE,
+    'Remove invalid returned values in file',
+  );
   static const REMOVE_THIS_EXPRESSION = FixKind(
-      'dart.fix.remove.thisExpression',
-      DartFixKindPriority.DEFAULT,
-      "Remove 'this' expression");
+    'dart.fix.remove.thisExpression',
+    DartFixKindPriority.DEFAULT,
+    "Remove 'this' expression",
+  );
   static const REMOVE_THIS_EXPRESSION_MULTI = FixKind(
-      'dart.fix.remove.thisExpression.multi',
-      DartFixKindPriority.IN_FILE,
-      "Remove unnecessary 'this' expressions everywhere in file");
+    'dart.fix.remove.thisExpression.multi',
+    DartFixKindPriority.IN_FILE,
+    "Remove unnecessary 'this' expressions everywhere in file",
+  );
   static const REMOVE_TYPE_ANNOTATION = FixKind(
-      'dart.fix.remove.typeAnnotation',
-      DartFixKindPriority.DEFAULT,
-      'Remove type annotation');
+    'dart.fix.remove.typeAnnotation',
+    DartFixKindPriority.DEFAULT,
+    'Remove type annotation',
+  );
   static const REMOVE_TYPE_ANNOTATION_MULTI = FixKind(
-      'dart.fix.remove.typeAnnotation.multi',
-      DartFixKindPriority.IN_FILE,
-      'Remove unnecessary type annotations in file');
-  static const REMOVE_TYPE_ARGUMENTS =
-      FixKind('dart.fix.remove.typeArguments', 49, 'Remove type arguments');
+    'dart.fix.remove.typeAnnotation.multi',
+    DartFixKindPriority.IN_FILE,
+    'Remove unnecessary type annotations in file',
+  );
+  static const REMOVE_TYPE_ARGUMENTS = FixKind(
+    'dart.fix.remove.typeArguments',
+    49,
+    'Remove type arguments',
+  );
   static const REMOVE_UNNECESSARY_CAST = FixKind(
-      'dart.fix.remove.unnecessaryCast',
-      DartFixKindPriority.DEFAULT,
-      'Remove unnecessary cast');
+    'dart.fix.remove.unnecessaryCast',
+    DartFixKindPriority.DEFAULT,
+    'Remove unnecessary cast',
+  );
   static const REMOVE_UNNECESSARY_CAST_MULTI = FixKind(
-      'dart.fix.remove.unnecessaryCast.multi',
-      DartFixKindPriority.IN_FILE,
-      'Remove all unnecessary casts in file');
+    'dart.fix.remove.unnecessaryCast.multi',
+    DartFixKindPriority.IN_FILE,
+    'Remove all unnecessary casts in file',
+  );
   static const REMOVE_UNNECESSARY_CONST = FixKind(
-      'dart.fix.remove.unnecessaryConst',
-      DartFixKindPriority.DEFAULT,
-      'Remove unnecessary const keyword');
+    'dart.fix.remove.unnecessaryConst',
+    DartFixKindPriority.DEFAULT,
+    'Remove unnecessary const keyword',
+  );
   static const REMOVE_UNNECESSARY_CONST_MULTI = FixKind(
-      'dart.fix.remove.unnecessaryConst.multi',
-      DartFixKindPriority.IN_FILE,
-      'Remove unnecessary const keywords everywhere in file');
+    'dart.fix.remove.unnecessaryConst.multi',
+    DartFixKindPriority.IN_FILE,
+    'Remove unnecessary const keywords everywhere in file',
+  );
   static const REMOVE_UNNECESSARY_NEW = FixKind(
-      'dart.fix.remove.unnecessaryNew',
-      DartFixKindPriority.DEFAULT,
-      'Remove unnecessary new keyword');
+    'dart.fix.remove.unnecessaryNew',
+    DartFixKindPriority.DEFAULT,
+    'Remove unnecessary new keyword',
+  );
   static const REMOVE_UNNECESSARY_NEW_MULTI = FixKind(
-      'dart.fix.remove.unnecessaryNew.multi',
-      DartFixKindPriority.IN_FILE,
-      'Remove unnecessary new keywords everywhere in file');
+    'dart.fix.remove.unnecessaryNew.multi',
+    DartFixKindPriority.IN_FILE,
+    'Remove unnecessary new keywords everywhere in file',
+  );
   static const REMOVE_UNNECESSARY_CONTAINER = FixKind(
-      'dart.fix.remove.unnecessaryContainer',
-      DartFixKindPriority.DEFAULT,
-      "Remove unnecessary 'Container'");
+    'dart.fix.remove.unnecessaryContainer',
+    DartFixKindPriority.DEFAULT,
+    "Remove unnecessary 'Container'",
+  );
   static const REMOVE_UNNECESSARY_CONTAINER_MULTI = FixKind(
-      'dart.fix.remove.unnecessaryContainer.multi',
-      DartFixKindPriority.IN_FILE,
-      "Remove unnecessary 'Container's in file");
+    'dart.fix.remove.unnecessaryContainer.multi',
+    DartFixKindPriority.IN_FILE,
+    "Remove unnecessary 'Container's in file",
+  );
   static const REMOVE_UNNECESSARY_PARENTHESES = FixKind(
-      'dart.fix.remove.unnecessaryParentheses',
-      DartFixKindPriority.DEFAULT,
-      'Remove unnecessary parentheses');
+    'dart.fix.remove.unnecessaryParentheses',
+    DartFixKindPriority.DEFAULT,
+    'Remove unnecessary parentheses',
+  );
   static const REMOVE_UNNECESSARY_PARENTHESES_MULTI = FixKind(
-      'dart.fix.remove.unnecessaryParentheses.multi',
-      DartFixKindPriority.IN_FILE,
-      'Remove all unnecessary parentheses in file');
+    'dart.fix.remove.unnecessaryParentheses.multi',
+    DartFixKindPriority.IN_FILE,
+    'Remove all unnecessary parentheses in file',
+  );
   static const REMOVE_UNNECESSARY_STRING_ESCAPE = FixKind(
-      'dart.fix.remove.unnecessaryStringEscape',
-      DartFixKindPriority.DEFAULT,
-      "Remove unnecessary '\\' in string");
+    'dart.fix.remove.unnecessaryStringEscape',
+    DartFixKindPriority.DEFAULT,
+    "Remove unnecessary '\\' in string",
+  );
   static const REMOVE_UNNECESSARY_STRING_ESCAPE_MULTI = FixKind(
-      'dart.fix.remove.unnecessaryStringEscape.multi',
-      DartFixKindPriority.DEFAULT,
-      "Remove unnecessary '\\' in strings in file");
+    'dart.fix.remove.unnecessaryStringEscape.multi',
+    DartFixKindPriority.DEFAULT,
+    "Remove unnecessary '\\' in strings in file",
+  );
   static const REMOVE_UNNECESSARY_STRING_INTERPOLATION = FixKind(
-      'dart.fix.remove.unnecessaryStringInterpolation',
-      DartFixKindPriority.DEFAULT,
-      'Remove unnecessary string interpolation');
+    'dart.fix.remove.unnecessaryStringInterpolation',
+    DartFixKindPriority.DEFAULT,
+    'Remove unnecessary string interpolation',
+  );
   static const REMOVE_UNNECESSARY_STRING_INTERPOLATION_MULTI = FixKind(
-      'dart.fix.remove.unnecessaryStringInterpolation.multi',
-      DartFixKindPriority.IN_FILE,
-      'Remove all unnecessary string interpolations in file');
+    'dart.fix.remove.unnecessaryStringInterpolation.multi',
+    DartFixKindPriority.IN_FILE,
+    'Remove all unnecessary string interpolations in file',
+  );
   static const REMOVE_UNUSED_CATCH_CLAUSE = FixKind(
-      'dart.fix.remove.unusedCatchClause',
-      DartFixKindPriority.DEFAULT,
-      "Remove unused 'catch' clause");
+    'dart.fix.remove.unusedCatchClause',
+    DartFixKindPriority.DEFAULT,
+    "Remove unused 'catch' clause",
+  );
   static const REMOVE_UNUSED_CATCH_STACK = FixKind(
-      'dart.fix.remove.unusedCatchStack',
-      DartFixKindPriority.DEFAULT,
-      'Remove unused stack trace variable');
-  static const REMOVE_UNUSED_ELEMENT = FixKind('dart.fix.remove.unusedElement',
-      DartFixKindPriority.DEFAULT, 'Remove unused element');
-  static const REMOVE_UNUSED_FIELD = FixKind('dart.fix.remove.unusedField',
-      DartFixKindPriority.DEFAULT, 'Remove unused field');
-  static const REMOVE_UNUSED_IMPORT = FixKind('dart.fix.remove.unusedImport',
-      DartFixKindPriority.DEFAULT, 'Remove unused import');
+    'dart.fix.remove.unusedCatchStack',
+    DartFixKindPriority.DEFAULT,
+    'Remove unused stack trace variable',
+  );
+  static const REMOVE_UNUSED_ELEMENT = FixKind(
+    'dart.fix.remove.unusedElement',
+    DartFixKindPriority.DEFAULT,
+    'Remove unused element',
+  );
+  static const REMOVE_UNUSED_FIELD = FixKind(
+    'dart.fix.remove.unusedField',
+    DartFixKindPriority.DEFAULT,
+    'Remove unused field',
+  );
+  static const REMOVE_UNUSED_IMPORT = FixKind(
+    'dart.fix.remove.unusedImport',
+    DartFixKindPriority.DEFAULT,
+    'Remove unused import',
+  );
   static const REMOVE_UNUSED_IMPORT_MULTI = FixKind(
-      'dart.fix.remove.unusedImport.multi',
-      DartFixKindPriority.IN_FILE,
-      'Remove all unused imports in file');
-  static const REMOVE_UNUSED_LABEL = FixKind('dart.fix.remove.unusedLabel',
-      DartFixKindPriority.DEFAULT, 'Remove unused label');
+    'dart.fix.remove.unusedImport.multi',
+    DartFixKindPriority.IN_FILE,
+    'Remove all unused imports in file',
+  );
+  static const REMOVE_UNUSED_LABEL = FixKind(
+    'dart.fix.remove.unusedLabel',
+    DartFixKindPriority.DEFAULT,
+    'Remove unused label',
+  );
   static const REMOVE_UNUSED_LOCAL_VARIABLE = FixKind(
-      'dart.fix.remove.unusedLocalVariable',
-      DartFixKindPriority.DEFAULT,
-      'Remove unused local variable');
+    'dart.fix.remove.unusedLocalVariable',
+    DartFixKindPriority.DEFAULT,
+    'Remove unused local variable',
+  );
   static const REMOVE_UNUSED_PARAMETER = FixKind(
-      'dart.fix.remove.unusedParameter',
-      DartFixKindPriority.DEFAULT,
-      'Remove the unused parameter');
+    'dart.fix.remove.unusedParameter',
+    DartFixKindPriority.DEFAULT,
+    'Remove the unused parameter',
+  );
   static const REMOVE_UNUSED_PARAMETER_MULTI = FixKind(
-      'dart.fix.remove.unusedParameter.multi',
-      DartFixKindPriority.IN_FILE,
-      'Remove unused parameters everywhere in file');
-  static const RENAME_TO_CAMEL_CASE = FixKind('dart.fix.rename.toCamelCase',
-      DartFixKindPriority.DEFAULT, "Rename to '{0}'");
+    'dart.fix.remove.unusedParameter.multi',
+    DartFixKindPriority.IN_FILE,
+    'Remove unused parameters everywhere in file',
+  );
+  static const RENAME_TO_CAMEL_CASE = FixKind(
+    'dart.fix.rename.toCamelCase',
+    DartFixKindPriority.DEFAULT,
+    "Rename to '{0}'",
+  );
   static const RENAME_TO_CAMEL_CASE_MULTI = FixKind(
-      'dart.fix.rename.toCamelCase.multi',
-      DartFixKindPriority.IN_FILE,
-      'Rename to camel case everywhere in file');
+    'dart.fix.rename.toCamelCase.multi',
+    DartFixKindPriority.IN_FILE,
+    'Rename to camel case everywhere in file',
+  );
   static const REPLACE_BOOLEAN_WITH_BOOL = FixKind(
-      'dart.fix.replace.booleanWithBool',
-      DartFixKindPriority.DEFAULT,
-      "Replace 'boolean' with 'bool'");
+    'dart.fix.replace.booleanWithBool',
+    DartFixKindPriority.DEFAULT,
+    "Replace 'boolean' with 'bool'",
+  );
   static const REPLACE_BOOLEAN_WITH_BOOL_MULTI = FixKind(
-      'dart.fix.replace.booleanWithBool.multi',
-      DartFixKindPriority.IN_FILE,
-      "Replace all 'boolean's with 'bool' in file");
+    'dart.fix.replace.booleanWithBool.multi',
+    DartFixKindPriority.IN_FILE,
+    "Replace all 'boolean's with 'bool' in file",
+  );
   static const REPLACE_CASCADE_WITH_DOT = FixKind(
-      'dart.fix.replace.cascadeWithDot',
-      DartFixKindPriority.DEFAULT,
-      "Replace '..' with '.'");
+    'dart.fix.replace.cascadeWithDot',
+    DartFixKindPriority.DEFAULT,
+    "Replace '..' with '.'",
+  );
   static const REPLACE_CASCADE_WITH_DOT_MULTI = FixKind(
-      'dart.fix.replace.cascadeWithDot.multi',
-      DartFixKindPriority.IN_FILE,
-      "Replace unnecessary '..'s with '.'s everywhere in file");
+    'dart.fix.replace.cascadeWithDot.multi',
+    DartFixKindPriority.IN_FILE,
+    "Replace unnecessary '..'s with '.'s everywhere in file",
+  );
   static const REPLACE_COLON_WITH_EQUALS = FixKind(
-      'dart.fix.replace.colonWithEquals',
-      DartFixKindPriority.DEFAULT,
-      "Replace ':' with '='");
+    'dart.fix.replace.colonWithEquals',
+    DartFixKindPriority.DEFAULT,
+    "Replace ':' with '='",
+  );
   static const REPLACE_COLON_WITH_EQUALS_MULTI = FixKind(
-      'dart.fix.replace.colonWithEquals.multi',
-      DartFixKindPriority.IN_FILE,
-      "Replace ':'s with '='s everywhere in file");
+    'dart.fix.replace.colonWithEquals.multi',
+    DartFixKindPriority.IN_FILE,
+    "Replace ':'s with '='s everywhere in file",
+  );
   static const REPLACE_WITH_FILLED = FixKind(
-      'dart.fix.replace.finalWithListFilled',
-      DartFixKindPriority.DEFAULT,
-      "Replace with 'List.filled'");
+    'dart.fix.replace.finalWithListFilled',
+    DartFixKindPriority.DEFAULT,
+    "Replace with 'List.filled'",
+  );
   static const REPLACE_FINAL_WITH_CONST = FixKind(
-      'dart.fix.replace.finalWithConst',
-      DartFixKindPriority.DEFAULT,
-      "Replace 'final' with 'const'");
+    'dart.fix.replace.finalWithConst',
+    DartFixKindPriority.DEFAULT,
+    "Replace 'final' with 'const'",
+  );
   static const REPLACE_FINAL_WITH_CONST_MULTI = FixKind(
-      'dart.fix.replace.finalWithConst.multi',
-      DartFixKindPriority.IN_FILE,
-      "Replace 'final' with 'const' where possible in file");
-  static const REPLACE_NEW_WITH_CONST = FixKind('dart.fix.replace.newWithConst',
-      DartFixKindPriority.DEFAULT, "Replace 'new' with 'const'");
+    'dart.fix.replace.finalWithConst.multi',
+    DartFixKindPriority.IN_FILE,
+    "Replace 'final' with 'const' where possible in file",
+  );
+  static const REPLACE_NEW_WITH_CONST = FixKind(
+    'dart.fix.replace.newWithConst',
+    DartFixKindPriority.DEFAULT,
+    "Replace 'new' with 'const'",
+  );
   static const REPLACE_NEW_WITH_CONST_MULTI = FixKind(
-      'dart.fix.replace.newWithConst.multi',
-      DartFixKindPriority.IN_FILE,
-      "Replace 'new' with 'const' where possible in file");
+    'dart.fix.replace.newWithConst.multi',
+    DartFixKindPriority.IN_FILE,
+    "Replace 'new' with 'const' where possible in file",
+  );
   static const REPLACE_NULL_WITH_CLOSURE = FixKind(
-      'dart.fix.replace.nullWithClosure',
-      DartFixKindPriority.DEFAULT,
-      "Replace 'null' with a closure");
+    'dart.fix.replace.nullWithClosure',
+    DartFixKindPriority.DEFAULT,
+    "Replace 'null' with a closure",
+  );
   static const REPLACE_NULL_WITH_CLOSURE_MULTI = FixKind(
-      'dart.fix.replace.nullWithClosure.multi',
-      DartFixKindPriority.IN_FILE,
-      "Replace 'null's with closures where possible in file");
-  static const REPLACE_FINAL_WITH_VAR = FixKind('dart.fix.replace.finalWithVar',
-      DartFixKindPriority.DEFAULT, "Replace 'final' with 'var'");
+    'dart.fix.replace.nullWithClosure.multi',
+    DartFixKindPriority.IN_FILE,
+    "Replace 'null's with closures where possible in file",
+  );
+  static const REPLACE_FINAL_WITH_VAR = FixKind(
+    'dart.fix.replace.finalWithVar',
+    DartFixKindPriority.DEFAULT,
+    "Replace 'final' with 'var'",
+  );
   static const REPLACE_FINAL_WITH_VAR_MULTI = FixKind(
-      'dart.fix.replace.finalWithVar.multi',
-      DartFixKindPriority.IN_FILE,
-      "Replace 'final' with 'var' where possible in file");
-  static const REPLACE_NULL_WITH_VOID = FixKind('dart.fix.replace.nullWithVoid',
-      DartFixKindPriority.DEFAULT, "Replace 'Null' with 'void'");
+    'dart.fix.replace.finalWithVar.multi',
+    DartFixKindPriority.IN_FILE,
+    "Replace 'final' with 'var' where possible in file",
+  );
+  static const REPLACE_NULL_WITH_VOID = FixKind(
+    'dart.fix.replace.nullWithVoid',
+    DartFixKindPriority.DEFAULT,
+    "Replace 'Null' with 'void'",
+  );
   static const REPLACE_NULL_WITH_VOID_MULTI = FixKind(
-      'dart.fix.replace.nullWithVoid.multi',
-      DartFixKindPriority.DEFAULT,
-      "Replace 'Null' with 'void' everywhere in file");
-  static const REPLACE_RETURN_TYPE = FixKind('dart.fix.replace.returnType',
-      DartFixKindPriority.DEFAULT, "Replace the return type with '{0}'");
+    'dart.fix.replace.nullWithVoid.multi',
+    DartFixKindPriority.DEFAULT,
+    "Replace 'Null' with 'void' everywhere in file",
+  );
+  static const REPLACE_RETURN_TYPE = FixKind(
+    'dart.fix.replace.returnType',
+    DartFixKindPriority.DEFAULT,
+    "Replace the return type with '{0}'",
+  );
   static const REPLACE_RETURN_TYPE_FUTURE = FixKind(
-      'dart.fix.replace.returnTypeFuture',
-      DartFixKindPriority.DEFAULT,
-      "Return 'Future' from 'async' function");
+    'dart.fix.replace.returnTypeFuture',
+    DartFixKindPriority.DEFAULT,
+    "Return 'Future' from 'async' function",
+  );
   static const REPLACE_CONTAINER_WITH_SIZED_BOX = FixKind(
-      'dart.fix.replace.containerWithSizedBox',
-      DartFixKindPriority.DEFAULT,
-      "Replace with 'SizedBox'");
+    'dart.fix.replace.containerWithSizedBox',
+    DartFixKindPriority.DEFAULT,
+    "Replace with 'SizedBox'",
+  );
   static const REPLACE_CONTAINER_WITH_SIZED_BOX_MULTI = FixKind(
-      'dart.fix.replace.containerWithSizedBox.multi',
-      DartFixKindPriority.DEFAULT,
-      "Replace with 'SizedBox' everywhere in file");
+    'dart.fix.replace.containerWithSizedBox.multi',
+    DartFixKindPriority.DEFAULT,
+    "Replace with 'SizedBox' everywhere in file",
+  );
   static const REPLACE_VAR_WITH_DYNAMIC = FixKind(
-      'dart.fix.replace.varWithDynamic',
-      DartFixKindPriority.DEFAULT,
-      "Replace 'var' with 'dynamic'");
+    'dart.fix.replace.varWithDynamic',
+    DartFixKindPriority.DEFAULT,
+    "Replace 'var' with 'dynamic'",
+  );
   static const REPLACE_WITH_EIGHT_DIGIT_HEX = FixKind(
-      'dart.fix.replace.withEightDigitHex',
-      DartFixKindPriority.DEFAULT,
-      "Replace with '{0}'");
+    'dart.fix.replace.withEightDigitHex',
+    DartFixKindPriority.DEFAULT,
+    "Replace with '{0}'",
+  );
   static const REPLACE_WITH_EIGHT_DIGIT_HEX_MULTI = FixKind(
-      'dart.fix.replace.withEightDigitHex.multi',
-      DartFixKindPriority.IN_FILE,
-      'Replace with hex digits everywhere in file');
-  static const REPLACE_WITH_BRACKETS = FixKind('dart.fix.replace.withBrackets',
-      DartFixKindPriority.DEFAULT, 'Replace with { }');
+    'dart.fix.replace.withEightDigitHex.multi',
+    DartFixKindPriority.IN_FILE,
+    'Replace with hex digits everywhere in file',
+  );
+  static const REPLACE_WITH_BRACKETS = FixKind(
+    'dart.fix.replace.withBrackets',
+    DartFixKindPriority.DEFAULT,
+    'Replace with { }',
+  );
   static const REPLACE_WITH_BRACKETS_MULTI = FixKind(
-      'dart.fix.replace.withBrackets.multi',
-      DartFixKindPriority.IN_FILE,
-      'Replace with { } everywhere in file');
+    'dart.fix.replace.withBrackets.multi',
+    DartFixKindPriority.IN_FILE,
+    'Replace with { } everywhere in file',
+  );
   static const REPLACE_WITH_CONDITIONAL_ASSIGNMENT = FixKind(
-      'dart.fix.replace.withConditionalAssignment',
-      DartFixKindPriority.DEFAULT,
-      'Replace with ??=');
+    'dart.fix.replace.withConditionalAssignment',
+    DartFixKindPriority.DEFAULT,
+    'Replace with ??=',
+  );
   static const REPLACE_WITH_CONDITIONAL_ASSIGNMENT_MULTI = FixKind(
-      'dart.fix.replace.withConditionalAssignment.multi',
-      DartFixKindPriority.IN_FILE,
-      'Replace with ??= everywhere in file');
+    'dart.fix.replace.withConditionalAssignment.multi',
+    DartFixKindPriority.IN_FILE,
+    'Replace with ??= everywhere in file',
+  );
   static const REPLACE_WITH_EXTENSION_NAME = FixKind(
-      'dart.fix.replace.withExtensionName',
-      DartFixKindPriority.DEFAULT,
-      "Replace with '{0}'");
+    'dart.fix.replace.withExtensionName',
+    DartFixKindPriority.DEFAULT,
+    "Replace with '{0}'",
+  );
   static const REPLACE_WITH_IDENTIFIER = FixKind(
-      'dart.fix.replace.withIdentifier',
-      DartFixKindPriority.DEFAULT,
-      'Replace with identifier');
+    'dart.fix.replace.withIdentifier',
+    DartFixKindPriority.DEFAULT,
+    'Replace with identifier',
+  );
 
   // todo (pq): parameterize message (used by LintNames.avoid_types_on_closure_parameters)
   static const REPLACE_WITH_IDENTIFIER_MULTI = FixKind(
-      'dart.fix.replace.withIdentifier.multi',
-      DartFixKindPriority.IN_FILE,
-      'Replace with identifier everywhere in file');
+    'dart.fix.replace.withIdentifier.multi',
+    DartFixKindPriority.IN_FILE,
+    'Replace with identifier everywhere in file',
+  );
   static const REPLACE_WITH_INTERPOLATION = FixKind(
-      'dart.fix.replace.withInterpolation',
-      DartFixKindPriority.DEFAULT,
-      'Replace with interpolation');
+    'dart.fix.replace.withInterpolation',
+    DartFixKindPriority.DEFAULT,
+    'Replace with interpolation',
+  );
   static const REPLACE_WITH_INTERPOLATION_MULTI = FixKind(
-      'dart.fix.replace.withInterpolation.multi',
-      DartFixKindPriority.IN_FILE,
-      'Replace with interpolations everywhere in file');
-  static const REPLACE_WITH_IS_EMPTY = FixKind('dart.fix.replace.withIsEmpty',
-      DartFixKindPriority.DEFAULT, "Replace with 'isEmpty'");
+    'dart.fix.replace.withInterpolation.multi',
+    DartFixKindPriority.IN_FILE,
+    'Replace with interpolations everywhere in file',
+  );
+  static const REPLACE_WITH_IS_EMPTY = FixKind(
+    'dart.fix.replace.withIsEmpty',
+    DartFixKindPriority.DEFAULT,
+    "Replace with 'isEmpty'",
+  );
   static const REPLACE_WITH_IS_EMPTY_MULTI = FixKind(
-      'dart.fix.replace.withIsEmpty.multi',
-      DartFixKindPriority.IN_FILE,
-      "Replace with 'isEmpty' everywhere in file");
+    'dart.fix.replace.withIsEmpty.multi',
+    DartFixKindPriority.IN_FILE,
+    "Replace with 'isEmpty' everywhere in file",
+  );
   static const REPLACE_WITH_IS_NOT_EMPTY = FixKind(
-      'dart.fix.replace.withIsNotEmpty',
-      DartFixKindPriority.DEFAULT,
-      "Replace with 'isNotEmpty'");
+    'dart.fix.replace.withIsNotEmpty',
+    DartFixKindPriority.DEFAULT,
+    "Replace with 'isNotEmpty'",
+  );
   static const REPLACE_WITH_IS_NOT_EMPTY_MULTI = FixKind(
-      'dart.fix.replace.withIsNotEmpty.multi',
-      DartFixKindPriority.IN_FILE,
-      "Replace with 'isNotEmpty' everywhere in file");
+    'dart.fix.replace.withIsNotEmpty.multi',
+    DartFixKindPriority.IN_FILE,
+    "Replace with 'isNotEmpty' everywhere in file",
+  );
   static const REPLACE_WITH_NOT_NULL_AWARE = FixKind(
-      'dart.fix.replace.withNotNullAware',
-      DartFixKindPriority.DEFAULT,
-      "Replace with '{0}'");
+    'dart.fix.replace.withNotNullAware',
+    DartFixKindPriority.DEFAULT,
+    "Replace with '{0}'",
+  );
   static const REPLACE_WITH_NOT_NULL_AWARE_MULTI = FixKind(
-      'dart.fix.replace.withNotNullAware.multi',
-      DartFixKindPriority.IN_FILE,
-      'Replace with non-null-aware operator everywhere in file.');
+    'dart.fix.replace.withNotNullAware.multi',
+    DartFixKindPriority.IN_FILE,
+    'Replace with non-null-aware operator everywhere in file.',
+  );
   static const REPLACE_WITH_NULL_AWARE = FixKind(
-      'dart.fix.replace.withNullAware',
-      DartFixKindPriority.DEFAULT,
-      "Replace the '.' with a '?.' in the invocation");
-  static const REPLACE_WITH_TEAR_OFF = FixKind('dart.fix.replace.withTearOff',
-      DartFixKindPriority.DEFAULT, 'Replace function literal with tear-off');
+    'dart.fix.replace.withNullAware',
+    DartFixKindPriority.DEFAULT,
+    "Replace the '.' with a '?.' in the invocation",
+  );
+  static const REPLACE_WITH_TEAR_OFF = FixKind(
+    'dart.fix.replace.withTearOff',
+    DartFixKindPriority.DEFAULT,
+    'Replace function literal with tear-off',
+  );
   static const REPLACE_WITH_TEAR_OFF_MULTI = FixKind(
-      'dart.fix.replace.withTearOff.multi',
-      DartFixKindPriority.IN_FILE,
-      'Replace function literals with tear-offs everywhere in file');
-  static const REPLACE_WITH_VAR = FixKind('dart.fix.replace.withVar',
-      DartFixKindPriority.DEFAULT, "Replace type annotation with 'var'");
+    'dart.fix.replace.withTearOff.multi',
+    DartFixKindPriority.IN_FILE,
+    'Replace function literals with tear-offs everywhere in file',
+  );
+  static const REPLACE_WITH_VAR = FixKind(
+    'dart.fix.replace.withVar',
+    DartFixKindPriority.DEFAULT,
+    "Replace type annotation with 'var'",
+  );
   static const REPLACE_WITH_VAR_MULTI = FixKind(
-      'dart.fix.replace.withVar.multi',
-      DartFixKindPriority.IN_FILE,
-      "Replace type annotations with 'var' in file");
+    'dart.fix.replace.withVar.multi',
+    DartFixKindPriority.IN_FILE,
+    "Replace type annotations with 'var' in file",
+  );
   static const SORT_CHILD_PROPERTY_LAST = FixKind(
-      'dart.fix.sort.childPropertyLast',
-      DartFixKindPriority.DEFAULT,
-      'Move child property to end of arguments');
+    'dart.fix.sort.childPropertyLast',
+    DartFixKindPriority.DEFAULT,
+    'Move child property to end of arguments',
+  );
   static const SORT_CHILD_PROPERTY_LAST_MULTI = FixKind(
-      'dart.fix.sort.childPropertyLast.multi',
-      DartFixKindPriority.IN_FILE,
-      'Move child properties to ends of arguments everywhere in file');
-  static const UPDATE_SDK_CONSTRAINTS = FixKind('dart.fix.updateSdkConstraints',
-      DartFixKindPriority.DEFAULT, 'Update the SDK constraints');
+    'dart.fix.sort.childPropertyLast.multi',
+    DartFixKindPriority.IN_FILE,
+    'Move child properties to ends of arguments everywhere in file',
+  );
+  static const UPDATE_SDK_CONSTRAINTS = FixKind(
+    'dart.fix.updateSdkConstraints',
+    DartFixKindPriority.DEFAULT,
+    'Update the SDK constraints',
+  );
   static const USE_CONST = FixKind(
-      'dart.fix.use.const', DartFixKindPriority.DEFAULT, 'Change to constant');
+    'dart.fix.use.const',
+    DartFixKindPriority.DEFAULT,
+    'Change to constant',
+  );
   static const USE_EFFECTIVE_INTEGER_DIVISION = FixKind(
-      'dart.fix.use.effectiveIntegerDivision',
-      DartFixKindPriority.DEFAULT,
-      'Use effective integer division ~/');
-  static const USE_EQ_EQ_NULL = FixKind('dart.fix.use.eqEqNull',
-      DartFixKindPriority.DEFAULT, "Use == null instead of 'is Null'");
+    'dart.fix.use.effectiveIntegerDivision',
+    DartFixKindPriority.DEFAULT,
+    'Use effective integer division ~/',
+  );
+  static const USE_EQ_EQ_NULL = FixKind(
+    'dart.fix.use.eqEqNull',
+    DartFixKindPriority.DEFAULT,
+    "Use == null instead of 'is Null'",
+  );
   static const USE_EQ_EQ_NULL_MULTI = FixKind(
-      'dart.fix.use.eqEqNull.multi',
-      DartFixKindPriority.IN_FILE,
-      "Use == null instead of 'is Null' everywhere in file");
-  static const USE_IS_NOT_EMPTY = FixKind('dart.fix.use.isNotEmpty',
-      DartFixKindPriority.DEFAULT, "Use x.isNotEmpty instead of '!x.isEmpty'");
+    'dart.fix.use.eqEqNull.multi',
+    DartFixKindPriority.IN_FILE,
+    "Use == null instead of 'is Null' everywhere in file",
+  );
+  static const USE_IS_NOT_EMPTY = FixKind(
+    'dart.fix.use.isNotEmpty',
+    DartFixKindPriority.DEFAULT,
+    "Use x.isNotEmpty instead of '!x.isEmpty'",
+  );
   static const USE_IS_NOT_EMPTY_MULTI = FixKind(
-      'dart.fix.use.isNotEmpty.multi',
-      DartFixKindPriority.IN_FILE,
-      "Use x.isNotEmpty instead of '!x.isEmpty' everywhere in file");
-  static const USE_NOT_EQ_NULL = FixKind('dart.fix.use.notEqNull',
-      DartFixKindPriority.DEFAULT, "Use != null instead of 'is! Null'");
+    'dart.fix.use.isNotEmpty.multi',
+    DartFixKindPriority.IN_FILE,
+    "Use x.isNotEmpty instead of '!x.isEmpty' everywhere in file",
+  );
+  static const USE_NOT_EQ_NULL = FixKind(
+    'dart.fix.use.notEqNull',
+    DartFixKindPriority.DEFAULT,
+    "Use != null instead of 'is! Null'",
+  );
   static const USE_NOT_EQ_NULL_MULTI = FixKind(
-      'dart.fix.use.notEqNull.multi',
-      DartFixKindPriority.IN_FILE,
-      "Use != null instead of 'is! Null' everywhere in file");
-  static const USE_RETHROW = FixKind('dart.fix.use.rethrow',
-      DartFixKindPriority.DEFAULT, 'Replace throw with rethrow');
+    'dart.fix.use.notEqNull.multi',
+    DartFixKindPriority.IN_FILE,
+    "Use != null instead of 'is! Null' everywhere in file",
+  );
+  static const USE_RETHROW = FixKind(
+    'dart.fix.use.rethrow',
+    DartFixKindPriority.DEFAULT,
+    'Replace throw with rethrow',
+  );
   static const USE_RETHROW_MULTI = FixKind(
-      'dart.fix.use.rethrow.multi',
-      DartFixKindPriority.IN_FILE,
-      'Replace throw with rethrow where possible in file');
-  static const WRAP_IN_FUTURE = FixKind('dart.fix.wrap.future',
-      DartFixKindPriority.DEFAULT, "Wrap in 'Future.value'");
-  static const WRAP_IN_TEXT = FixKind('dart.fix.flutter.wrap.text',
-      DartFixKindPriority.DEFAULT, "Wrap in a 'Text' widget");
+    'dart.fix.use.rethrow.multi',
+    DartFixKindPriority.IN_FILE,
+    'Replace throw with rethrow where possible in file',
+  );
+  static const WRAP_IN_FUTURE = FixKind(
+    'dart.fix.wrap.future',
+    DartFixKindPriority.DEFAULT,
+    "Wrap in 'Future.value'",
+  );
+  static const WRAP_IN_TEXT = FixKind(
+    'dart.fix.flutter.wrap.text',
+    DartFixKindPriority.DEFAULT,
+    "Wrap in a 'Text' widget",
+  );
 }
 
 class DartFixKindPriority {
diff --git a/pkg/analysis_server/lib/src/services/correction/fix/dart/top_level_declarations.dart b/pkg/analysis_server/lib/src/services/correction/fix/dart/top_level_declarations.dart
index e53d57d..3bc6161 100644
--- a/pkg/analysis_server/lib/src/services/correction/fix/dart/top_level_declarations.dart
+++ b/pkg/analysis_server/lib/src/services/correction/fix/dart/top_level_declarations.dart
@@ -91,6 +91,7 @@
       case DeclarationKind.CLASS_TYPE_ALIAS:
       case DeclarationKind.ENUM:
       case DeclarationKind.FUNCTION_TYPE_ALIAS:
+      case DeclarationKind.TYPE_ALIAS:
       case DeclarationKind.MIXIN:
         return TopLevelDeclarationKind.type;
       case DeclarationKind.EXTENSION:
diff --git a/pkg/analysis_server/lib/src/services/pub/pub_command.dart b/pkg/analysis_server/lib/src/services/pub/pub_command.dart
index a649d65..5f24d1a 100644
--- a/pkg/analysis_server/lib/src/services/pub/pub_command.dart
+++ b/pkg/analysis_server/lib/src/services/pub/pub_command.dart
@@ -20,6 +20,9 @@
   late final String _pubPath;
   late final String _pubEnvironmentValue;
 
+  /// Active processes that should be killed when shutting down.
+  final _activeProcesses = <Process>{};
+
   /// Tracks the last queued command to avoid overlapping because pub does not
   /// do its own locking when accessing the cache.
   ///
@@ -78,6 +81,14 @@
         .toList();
   }
 
+  /// Terminates any in-process commands with [ProcessSignal.sigterm].
+  void shutdown() {
+    _activeProcesses.forEach((process) {
+      _instrumentationService.logInfo('Terminating process ${process.pid}');
+      process.kill();
+    });
+  }
+
   /// Runs a pub command and decodes JSON from `stdout`.
   ///
   /// Returns null if:
@@ -96,19 +107,25 @@
     try {
       final command = [_pubPath, ...args];
 
-      _instrumentationService.logInfo('Running pub command $command');
-      final result = await _processRunner.run(_pubPath, args,
+      _instrumentationService.logInfo('Starting pub command $command');
+      final process = await _processRunner.start(_pubPath, args,
           workingDirectory: workingDirectory,
           environment: {_pubEnvironmentKey: _pubEnvironmentValue});
+      _activeProcesses.add(process);
 
-      if (result.exitCode != 0) {
-        _instrumentationService.logError(
-            'pub command returned ${result.exitCode} exit code: ${result.stderr}.');
+      final exitCode = await process.exitCode;
+      _activeProcesses.remove(process);
+      final stdout = await process.stdout.transform(utf8.decoder).join();
+      final stderr = await process.stderr.transform(utf8.decoder).join();
+
+      if (exitCode != 0) {
+        _instrumentationService
+            .logError('pub command returned $exitCode exit code: $stderr.');
         return null;
       }
 
       try {
-        final results = jsonDecode(result.stdout);
+        final results = jsonDecode(stdout);
         _instrumentationService.logInfo('pub command completed successfully');
         return results;
       } catch (e) {
diff --git a/pkg/analysis_server/lib/src/services/pub/pub_package_service.dart b/pkg/analysis_server/lib/src/services/pub/pub_package_service.dart
index 4b6ef3a8..1db29fd 100644
--- a/pkg/analysis_server/lib/src/services/pub/pub_package_service.dart
+++ b/pkg/analysis_server/lib/src/services/pub/pub_package_service.dart
@@ -329,7 +329,10 @@
     }
   }
 
-  void shutdown() => _nextPackageNameListRequestTimer?.cancel();
+  void shutdown() {
+    _nextPackageNameListRequestTimer?.cancel();
+    _command?.shutdown();
+  }
 
   @visibleForTesting
   void writeDiskCache([PackageDetailsCache? cache]) {
diff --git a/pkg/analysis_server/lib/src/utilities/process.dart b/pkg/analysis_server/lib/src/utilities/process.dart
index 70ea179..334850d 100644
--- a/pkg/analysis_server/lib/src/utilities/process.dart
+++ b/pkg/analysis_server/lib/src/utilities/process.dart
@@ -3,30 +3,26 @@
 // BSD-style license that can be found in the LICENSE file.
 
 import 'dart:async';
-import 'dart:convert';
 import 'dart:io';
 
 /// An abstraction over [Process] from 'dart:io' to allow mocking in tests.
 class ProcessRunner {
-  Future<ProcessResult> run(
+  Future<Process> start(
     String executable,
     List<String> arguments, {
     String? workingDirectory,
     Map<String, String>? environment,
     bool includeParentEnvironment = true,
     bool runInShell = false,
-    Encoding? stdoutEncoding = systemEncoding,
-    Encoding? stderrEncoding = systemEncoding,
-  }) async {
-    return Process.run(
+    ProcessStartMode mode = ProcessStartMode.normal,
+  }) {
+    return Process.start(
       executable,
       arguments,
       workingDirectory: workingDirectory,
       environment: environment,
       includeParentEnvironment: includeParentEnvironment,
       runInShell: runInShell,
-      stdoutEncoding: stdoutEncoding,
-      stderrEncoding: stderrEncoding,
     );
   }
 }
diff --git a/pkg/analysis_server/test/analysis/notification_highlights2_test.dart b/pkg/analysis_server/test/analysis/notification_highlights2_test.dart
index 5a156c0..0169e37 100644
--- a/pkg/analysis_server/test/analysis/notification_highlights2_test.dart
+++ b/pkg/analysis_server/test/analysis/notification_highlights2_test.dart
@@ -1170,6 +1170,16 @@
     assertHasRegion(HighlightRegionType.TOP_LEVEL_SETTER_REFERENCE, 'V2 = 3');
   }
 
+  Future<void> test_TYPE_ALIAS() async {
+    addTestFile('''
+typedef A = double;
+void f(A a) {}
+''');
+    await prepareHighlights();
+    assertHasRegion(HighlightRegionType.TYPE_ALIAS, 'A');
+    assertHasRegion(HighlightRegionType.TYPE_ALIAS, 'A a');
+  }
+
   Future<void> test_TYPE_ALIAS_dynamicType() async {
     addTestFile('''
 typedef A = dynamic;
diff --git a/pkg/analysis_server/test/client/completion_driver_test.dart b/pkg/analysis_server/test/client/completion_driver_test.dart
index 13d807c..d122baf 100644
--- a/pkg/analysis_server/test/client/completion_driver_test.dart
+++ b/pkg/analysis_server/test/client/completion_driver_test.dart
@@ -366,6 +366,7 @@
 extension Ex on A {}
 mixin M { }
 typedef T = Function(Object);
+typedef T2 = double;
 var v = 0;
 ''');
 
@@ -400,6 +401,10 @@
         element: ElementKind.FUNCTION_TYPE_ALIAS,
         kind: CompletionSuggestionKind.INVOCATION);
     assertSuggestion(
+        completion: 'T2',
+        element: ElementKind.TYPE_ALIAS,
+        kind: CompletionSuggestionKind.INVOCATION);
+    assertSuggestion(
         completion: 'v',
         element: ElementKind.TOP_LEVEL_VARIABLE,
         kind: CompletionSuggestionKind.INVOCATION);
diff --git a/pkg/analysis_server/test/integration/analysis/highlights_test.dart b/pkg/analysis_server/test/integration/analysis/highlights_test.dart
index cb5baf6..358e8c8 100644
--- a/pkg/analysis_server/test/integration/analysis/highlights_test.dart
+++ b/pkg/analysis_server/test/integration/analysis/highlights_test.dart
@@ -100,6 +100,7 @@
 }
 
 typedef functionType();
+typedef genericTypeDef = double;
 
 function(dynamicType) {
   print('string');
@@ -117,8 +118,8 @@
     check(HighlightRegionType.ANNOTATION, ['@override']);
     check(HighlightRegionType.BUILT_IN,
         ['as', 'get', 'import', 'set', 'static', 'typedef']);
-    check(
-        HighlightRegionType.CLASS, ['Class', 'Class2', 'Future', 'Map', 'int']);
+    check(HighlightRegionType.CLASS,
+        ['Class', 'Class2', 'double', 'Future', 'Map', 'int']);
     check(HighlightRegionType.COMMENT_BLOCK, ['/* Block comment */']);
     check(HighlightRegionType.COMMENT_DOCUMENTATION,
         ['/**\n * Doc comment\n */']);
@@ -132,6 +133,7 @@
     check(HighlightRegionType.TOP_LEVEL_FUNCTION_REFERENCE, ['print']);
     check(HighlightRegionType.TOP_LEVEL_FUNCTION_DECLARATION, ['function']);
     check(HighlightRegionType.FUNCTION_TYPE_ALIAS, ['functionType']);
+    check(HighlightRegionType.TYPE_ALIAS, ['genericTypeDef']);
     check(HighlightRegionType.INSTANCE_GETTER_DECLARATION, ['getter']);
     check(HighlightRegionType.IDENTIFIER_DEFAULT, ['unresolvedIdentifier']);
     check(HighlightRegionType.IMPORT_PREFIX, ['async']);
diff --git a/pkg/analysis_server/test/lsp/completion_yaml_test.dart b/pkg/analysis_server/test/lsp/completion_yaml_test.dart
index 246d2f7..444b101 100644
--- a/pkg/analysis_server/test/lsp/completion_yaml_test.dart
+++ b/pkg/analysis_server/test/lsp/completion_yaml_test.dart
@@ -2,14 +2,13 @@
 // 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:analysis_server/src/services/pub/pub_api.dart';
 import 'package:http/http.dart';
 import 'package:linter/src/rules.dart';
 import 'package:test/test.dart';
 import 'package:test_reflective_loader/test_reflective_loader.dart';
 
+import '../mocks.dart';
 import 'completion.dart';
 import 'server_abstract.dart';
 
@@ -432,8 +431,8 @@
       ]
     }
     ''';
-    processRunner.runHandler =
-        (executable, args, {dir, env}) => ProcessResult(1, 0, json, '');
+    processRunner.startHandler =
+        (executable, args, {dir, env}) => MockProcess(1, 0, json, '');
 
     final content = '''
 name: foo
@@ -486,8 +485,8 @@
       ]
     }
     ''';
-    processRunner.runHandler =
-        (executable, args, {dir, env}) => ProcessResult(1, 0, initialJson, '');
+    processRunner.startHandler =
+        (executable, args, {dir, env}) => MockProcess(1, 0, initialJson, '');
 
     final content = '''
 name: foo
@@ -510,8 +509,8 @@
 
     // Modify the underlying file which should trigger an update of the
     // cached data.
-    processRunner.runHandler =
-        (executable, args, {dir, env}) => ProcessResult(1, 0, updatedJson, '');
+    processRunner.startHandler =
+        (executable, args, {dir, env}) => MockProcess(1, 0, updatedJson, '');
     modifyFile(pubspecFilePath, '$content# trailing comment');
     await pumpEventQueue(times: 500);
 
@@ -547,8 +546,8 @@
       ]
     }
     ''';
-    processRunner.runHandler =
-        (executable, args, {dir, env}) => ProcessResult(1, 0, initialJson, '');
+    processRunner.startHandler =
+        (executable, args, {dir, env}) => MockProcess(1, 0, initialJson, '');
 
     final content = '''
 name: foo
diff --git a/pkg/analysis_server/test/lsp/mapping_test.dart b/pkg/analysis_server/test/lsp/mapping_test.dart
index 896b994..b55938b 100644
--- a/pkg/analysis_server/test/lsp/mapping_test.dart
+++ b/pkg/analysis_server/test/lsp/mapping_test.dart
@@ -18,31 +18,38 @@
 
 @reflectiveTest
 class MappingTest extends AbstractLspAnalysisServerTest {
-  Future<void> test_completionItemKind_firstNotSupported() async {
-    // TYPE_PARAMETER maps to TypeParameter first, but since originally LSP
-    // did not support it, it'll map to Variable if the client doesn't support
-    // that.
-    var supportedKinds = {
-      lsp.CompletionItemKind.TypeParameter,
-      lsp.CompletionItemKind.Variable,
-    };
-    var result = lsp.elementKindToCompletionItemKind(
-      supportedKinds,
-      server.ElementKind.TYPE_PARAMETER,
+  void test_completionItemKind_enum() {
+    // Enums should always map to Enums, never EumMember.
+    verifyCompletionItemKind(
+      kind: server.ElementKind.ENUM,
+      supportedKinds: {
+        lsp.CompletionItemKind.Enum,
+        lsp.CompletionItemKind.EnumMember,
+      },
+      expectedKind: lsp.CompletionItemKind.Enum,
     );
-    expect(result, equals(lsp.CompletionItemKind.TypeParameter));
   }
 
-  Future<void> test_completionItemKind_firstSupported() async {
-    // TYPE_PARAMETER maps to TypeParameter first, but since originally LSP
-    // did not support it, it'll map to Variable if the client doesn't support
+  void test_completionItemKind_enumValueNotSupported() {
+    // ENUM_CONSTANT maps to EnumMember first, but since originally LSP
+    // did not support it, it'll map to Enum if the client doesn't support
     // that.
-    var supportedKinds = {lsp.CompletionItemKind.Variable};
-    var result = lsp.elementKindToCompletionItemKind(
-      supportedKinds,
-      server.ElementKind.TYPE_PARAMETER,
+    verifyCompletionItemKind(
+      kind: server.ElementKind.ENUM_CONSTANT,
+      supportedKinds: {lsp.CompletionItemKind.Enum},
+      expectedKind: lsp.CompletionItemKind.Enum,
     );
-    expect(result, equals(lsp.CompletionItemKind.Variable));
+  }
+
+  void test_completionItemKind_enumValueSupported() {
+    verifyCompletionItemKind(
+      kind: server.ElementKind.ENUM_CONSTANT,
+      supportedKinds: {
+        lsp.CompletionItemKind.Enum,
+        lsp.CompletionItemKind.EnumMember,
+      },
+      expectedKind: lsp.CompletionItemKind.EnumMember,
+    );
   }
 
   Future<void> test_completionItemKind_knownMapping() async {
@@ -72,6 +79,28 @@
     expect(result, isNull);
   }
 
+  void test_completionItemKind_typeParamNotSupported() {
+    // TYPE_PARAMETER maps to TypeParameter first, but since originally LSP
+    // did not support it, it'll map to Variable if the client doesn't support
+    // that.
+    verifyCompletionItemKind(
+      kind: server.ElementKind.TYPE_PARAMETER,
+      supportedKinds: {lsp.CompletionItemKind.Variable},
+      expectedKind: lsp.CompletionItemKind.Variable,
+    );
+  }
+
+  void test_completionItemKind_typeParamSupported() {
+    verifyCompletionItemKind(
+      kind: server.ElementKind.TYPE_PARAMETER,
+      supportedKinds: {
+        lsp.CompletionItemKind.TypeParameter,
+        lsp.CompletionItemKind.Variable,
+      },
+      expectedKind: lsp.CompletionItemKind.TypeParameter,
+    );
+  }
+
   void test_relevanceToSortText() {
     // The expected order is the same as from the highest relevance.
     final expectedOrder =
@@ -119,4 +148,15 @@
     var result = lsp.buildSnippetStringWithTabStops('a, b', [0, 1]);
     expect(result, equals(r'${0:a}, b'));
   }
+
+  /// Verifies that [kind] maps to [expectedKind] when the client supports
+  /// [supportedKinds].
+  void verifyCompletionItemKind({
+    required server.ElementKind kind,
+    required Set<lsp.CompletionItemKind> supportedKinds,
+    required lsp.CompletionItemKind expectedKind,
+  }) {
+    final result = lsp.elementKindToCompletionItemKind(supportedKinds, kind);
+    expect(result, equals(expectedKind));
+  }
 }
diff --git a/pkg/analysis_server/test/lsp/pub_package_service_test.dart b/pkg/analysis_server/test/lsp/pub_package_service_test.dart
index c22a0f5..83f4023 100644
--- a/pkg/analysis_server/test/lsp/pub_package_service_test.dart
+++ b/pkg/analysis_server/test/lsp/pub_package_service_test.dart
@@ -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.
 
+import 'dart:async';
 import 'dart:io';
 
 import 'package:analysis_server/src/services/pub/pub_api.dart';
@@ -99,13 +100,13 @@
 
   Future<void> test_doesNotRunConcurrently() async {
     var isRunning = false;
-    processRunner.runHandler = (executable, args, {dir, env}) async {
+    processRunner.startHandler = (executable, args, {dir, env}) async {
       expect(isRunning, isFalse,
           reason: 'pub commands should not run concurrently');
       isRunning = true;
       await pumpEventQueue(times: 500);
       isRunning = false;
-      return ProcessResult(0, 0, '', '');
+      return MockProcess(0, 0, 'a', 'a');
     };
     await Future.wait([
       pubCommand.outdatedVersions(pubspecPath),
@@ -113,8 +114,26 @@
     ]);
   }
 
+  Future<void> test_killsCommandOnShutdown() async {
+    // Create a process that won't complete (unless it's killed, where
+    // the MockProcess will complete it with a non-zero exit code).
+    final process = MockProcess(0, Completer<int>().future, '', '');
+    processRunner.startHandler = (executable, args, {dir, env}) => process;
+
+    // Start running the (endless) command.
+    final commandFuture = pubCommand.outdatedVersions(pubspecPath);
+    await pumpEventQueue(times: 500);
+
+    // Trigger shutdown, which should kill any in-process commands.
+    pubCommand.shutdown();
+
+    // Expect the process we created above terminates with non-zero exit code.
+    expect(await process.exitCode, equals(MockProcess.killedExitCode));
+    expect(commandFuture, completes);
+  }
+
   Future<void> test_outdated_args() async {
-    processRunner.runHandler = (executable, args, {dir, env}) {
+    processRunner.startHandler = (executable, args, {dir, env}) {
       var expectedPubPath = path.join(
         path.dirname(Platform.resolvedExecutable),
         Platform.isWindows ? 'pub.bat' : 'pub',
@@ -132,15 +151,15 @@
           env!['PUB_ENVIRONMENT'],
           anyOf(equals('analysis_server.pub_api'),
               endsWith(':analysis_server.pub_api')));
-      return ProcessResult(0, 0, '', '');
+      return MockProcess(0, 0, '', '');
     };
     await pubCommand.outdatedVersions(pubspecPath);
   }
 
   Future<void> test_outdated_invalidJson() async {
-    processRunner.runHandler = (String executable, List<String> args,
+    processRunner.startHandler = (String executable, List<String> args,
             {dir, env}) =>
-        ProcessResult(1, 0, 'NOT VALID JSON', '');
+        MockProcess(1, 0, 'NOT VALID JSON', '');
     final result = await pubCommand.outdatedVersions(pubspecPath);
     expect(result, isEmpty);
   }
@@ -158,8 +177,8 @@
       ]
     }
     ''';
-    processRunner.runHandler =
-        (executable, args, {dir, env}) => ProcessResult(1, 0, validJson, '');
+    processRunner.startHandler =
+        (executable, args, {dir, env}) => MockProcess(1, 0, validJson, '');
     final result = await pubCommand.outdatedVersions(pubspecPath);
     expect(result, hasLength(1));
     final package = result.first;
@@ -192,11 +211,11 @@
     }
     ''';
 
-    processRunner.runHandler = (executable, args, {dir, env}) {
+    processRunner.startHandler = (executable, args, {dir, env}) {
       // Return different json based on the directory we were invoked in.
       final json =
           dir == path.dirname(pubspecPath) ? pubspecJson1 : pubspecJson2;
-      return ProcessResult(1, 0, json, '');
+      return MockProcess(1, 0, json, '');
     };
     final result1 = await pubCommand.outdatedVersions(pubspecPath);
     final result2 = await pubCommand.outdatedVersions(pubspec2Path);
@@ -205,8 +224,8 @@
   }
 
   Future<void> test_outdated_nonZeroExitCode() async {
-    processRunner.runHandler =
-        (executable, args, {dir, env}) => ProcessResult(1, 123, '{}', '');
+    processRunner.startHandler =
+        (executable, args, {dir, env}) => MockProcess(1, 123, '{}', '');
     final result = await pubCommand.outdatedVersions(pubspecPath);
     expect(result, isEmpty);
   }
@@ -232,8 +251,8 @@
       ]
     }
     ''';
-    processRunner.runHandler =
-        (executable, args, {dir, env}) => ProcessResult(1, 0, validJson, '');
+    processRunner.startHandler =
+        (executable, args, {dir, env}) => MockProcess(1, 0, validJson, '');
     final result = await pubCommand.outdatedVersions(pubspecPath);
     expect(result, hasLength(2));
     result.forEachIndexed((index, package) {
diff --git a/pkg/analysis_server/test/mocks.dart b/pkg/analysis_server/test/mocks.dart
index e1f3ecd..b8e733e 100644
--- a/pkg/analysis_server/test/mocks.dart
+++ b/pkg/analysis_server/test/mocks.dart
@@ -50,9 +50,44 @@
   }
 }
 
+class MockProcess implements Process {
+  static int killedExitCode = -1;
+
+  final int _pid;
+  final _exitCodeCompleter = Completer<int>();
+  final String _stdout, _stderr;
+
+  MockProcess(this._pid, FutureOr<int> _exitCode, this._stdout, this._stderr) {
+    Future.value(_exitCode).then(_exitCodeCompleter.complete);
+  }
+
+  @override
+  Future<int> get exitCode => _exitCodeCompleter.future;
+
+  @override
+  int get pid => _pid;
+
+  @override
+  Stream<List<int>> get stderr => Future.value(utf8.encode(_stderr)).asStream();
+
+  @override
+  Stream<List<int>> get stdout => Future.value(utf8.encode(_stdout)).asStream();
+
+  @override
+  bool kill([ProcessSignal signal = ProcessSignal.sigterm]) {
+    _exitCodeCompleter.complete(killedExitCode);
+    return true;
+  }
+
+  @override
+  dynamic noSuchMethod(Invocation invocation) {
+    return super.noSuchMethod(invocation);
+  }
+}
+
 class MockProcessRunner implements ProcessRunner {
-  FutureOr<ProcessResult> Function(String executable, List<String> arguments,
-          {String? dir, Map<String, String>? env})? runHandler =
+  FutureOr<Process> Function(String executable, List<String> arguments,
+          {String? dir, Map<String, String>? env}) startHandler =
       (executable, arguments, {dir, env}) => throw UnimplementedError();
 
   @override
@@ -61,17 +96,16 @@
   }
 
   @override
-  Future<ProcessResult> run(
+  Future<Process> start(
     String executable,
     List<String> arguments, {
     String? workingDirectory,
     Map<String, String>? environment,
     bool includeParentEnvironment = true,
     bool runInShell = false,
-    Encoding? stdoutEncoding = systemEncoding,
-    Encoding? stderrEncoding = systemEncoding,
+    ProcessStartMode mode = ProcessStartMode.normal,
   }) async {
-    return runHandler!(executable, arguments,
+    return await startHandler(executable, arguments,
         dir: workingDirectory, env: environment);
   }
 }
diff --git a/pkg/analysis_server/test/plugin/protocol_dart_test.dart b/pkg/analysis_server/test/plugin/protocol_dart_test.dart
index 85c36ff..25f7bdb 100644
--- a/pkg/analysis_server/test/plugin/protocol_dart_test.dart
+++ b/pkg/analysis_server/test/plugin/protocol_dart_test.dart
@@ -586,6 +586,7 @@
     expect(ElementKind(ElementKind.SETTER.name), ElementKind.SETTER);
     expect(ElementKind(ElementKind.TOP_LEVEL_VARIABLE.name),
         ElementKind.TOP_LEVEL_VARIABLE);
+    expect(ElementKind(ElementKind.TYPE_ALIAS.name), ElementKind.TYPE_ALIAS);
     expect(ElementKind(ElementKind.TYPE_PARAMETER.name),
         ElementKind.TYPE_PARAMETER);
     expect(ElementKind(ElementKind.UNIT_TEST_TEST.name),
diff --git a/pkg/analysis_server/test/search/declarations_test.dart b/pkg/analysis_server/test/search/declarations_test.dart
index a1f4900..3d64012 100644
--- a/pkg/analysis_server/test/search/declarations_test.dart
+++ b/pkg/analysis_server/test/search/declarations_test.dart
@@ -200,6 +200,7 @@
 int v;
 typedef void tf1();
 typedef tf2<T> = int Function<S>(T tp, S sp);
+typedef td3 = double;
 ''');
     await _getDeclarations();
 
@@ -209,6 +210,7 @@
     assertHas('v', ElementKind.TOP_LEVEL_VARIABLE);
     assertHas('tf1', ElementKind.FUNCTION_TYPE_ALIAS);
     assertHas('tf2', ElementKind.FUNCTION_TYPE_ALIAS);
+    assertHas('td3', ElementKind.TYPE_ALIAS);
   }
 
   Future<void> _getDeclarations(
diff --git a/pkg/analysis_server/test/src/domains/completion/available_suggestion_sets_test.dart b/pkg/analysis_server/test/src/domains/completion/available_suggestion_sets_test.dart
index 68ef83c..3b95fd5 100644
--- a/pkg/analysis_server/test/src/domains/completion/available_suggestion_sets_test.dart
+++ b/pkg/analysis_server/test/src/domains/completion/available_suggestion_sets_test.dart
@@ -469,6 +469,83 @@
 ''');
   }
 
+  Future<void> test_suggestion_typedef() async {
+    var path = convertPath('/home/test/lib/a.dart');
+    var uriStr = 'package:test/a.dart';
+
+    newFile(path, content: r'''
+typedef MyAlias = double;
+''');
+
+    var set = await waitForSetWithUri(uriStr);
+    assertJsonText(_getSuggestion(set, 'MyAlias'), '''
+{
+  "label": "MyAlias",
+  "declaringLibraryUri": "package:test/a.dart",
+  "element": {
+    "kind": "TYPE_ALIAS",
+    "name": "MyAlias",
+    "location": {
+      "file": ${jsonOfPath(path)},
+      "offset": 8,
+      "length": 0,
+      "startLine": 1,
+      "startColumn": 9,
+      "endLine": 1,
+      "endColumn": 9
+    },
+    "flags": 0
+  },
+  "relevanceTags": [
+    "ElementKind.TYPE_ALIAS",
+    "package:test/a.dart::MyAlias",
+    "MyAlias"
+  ]
+}
+''');
+  }
+
+  Future<void> test_suggestion_typedef_function() async {
+    var path = convertPath('/home/test/lib/a.dart');
+    var uriStr = 'package:test/a.dart';
+
+    newFile(path, content: r'''
+typedef MyAlias = void Function();
+''');
+
+    var set = await waitForSetWithUri(uriStr);
+    assertJsonText(_getSuggestion(set, 'MyAlias'), '''
+{
+  "label": "MyAlias",
+  "declaringLibraryUri": "package:test/a.dart",
+  "element": {
+    "kind": "FUNCTION_TYPE_ALIAS",
+    "name": "MyAlias",
+    "location": {
+      "file": ${jsonOfPath(path)},
+      "offset": 8,
+      "length": 0,
+      "startLine": 1,
+      "startColumn": 9,
+      "endLine": 1,
+      "endColumn": 9
+    },
+    "flags": 0,
+    "parameters": "()",
+    "returnType": "void"
+  },
+  "parameterNames": [],
+  "parameterTypes": [],
+  "relevanceTags": [
+    "ElementKind.FUNCTION_TYPE_ALIAS",
+    "package:test/a.dart::MyAlias",
+    "MyAlias"
+  ],
+  "requiredParameterCount": 0
+}
+''');
+  }
+
   static void assertNoSuggestion(AvailableSuggestionSet set, String label,
       {ElementKind? kind}) {
     var suggestion = set.items.singleWhereOrNull(
diff --git a/pkg/analysis_server/test/src/domains/completion/get_suggestions_available_test.dart b/pkg/analysis_server/test/src/domains/completion/get_suggestions_available_test.dart
index 195678c..24bd1c3 100644
--- a/pkg/analysis_server/test/src/domains/completion/get_suggestions_available_test.dart
+++ b/pkg/analysis_server/test/src/domains/completion/get_suggestions_available_test.dart
@@ -178,6 +178,7 @@
         ElementKind.ENUM,
         ElementKind.FUNCTION_TYPE_ALIAS,
         ElementKind.MIXIN,
+        ElementKind.TYPE_ALIAS,
       ]),
     );
   }
@@ -210,6 +211,7 @@
         ElementKind.MIXIN,
         ElementKind.SETTER,
         ElementKind.TOP_LEVEL_VARIABLE,
+        ElementKind.TYPE_ALIAS,
       ]),
     );
   }
diff --git a/pkg/analysis_server/test/src/services/completion/yaml/pubspec_generator_test.dart b/pkg/analysis_server/test/src/services/completion/yaml/pubspec_generator_test.dart
index 4eab94d..051c4eb 100644
--- a/pkg/analysis_server/test/src/services/completion/yaml/pubspec_generator_test.dart
+++ b/pkg/analysis_server/test/src/services/completion/yaml/pubspec_generator_test.dart
@@ -2,8 +2,6 @@
 // for details. All rights reserved. Use of this source code is governed by a
 // BSD-style license that can be found in the LICENSE file.
 
-import 'dart:io';
-
 import 'package:analysis_server/src/services/completion/yaml/pubspec_generator.dart';
 import 'package:analysis_server/src/services/pub/pub_api.dart';
 import 'package:analysis_server/src/services/pub/pub_command.dart';
@@ -358,8 +356,8 @@
       ]
     }
     ''';
-    processRunner.runHandler =
-        (executable, args, {dir, env}) => ProcessResult(1, 0, json, '');
+    processRunner.startHandler =
+        (executable, args, {dir, env}) => MockProcess(1, 0, json, '');
 
     pubPackageService.beginCachePreloads([convertPath('/home/test/$fileName')]);
     await pumpEventQueue(times: 500);
@@ -376,9 +374,9 @@
   /// processes to cache the version numbers.
   void test_packageVersion_withDEPSfile() async {
     var didRun = false;
-    processRunner.runHandler = (executable, args, {dir, env}) {
+    processRunner.startHandler = (executable, args, {dir, env}) {
       didRun = true;
-      return ProcessResult(1, 0, '', '');
+      return MockProcess(1, 0, '', '');
     };
 
     newFile('/home/DEPS');
diff --git a/pkg/analysis_server/test/src/services/correction/assist/assign_to_local_variable_test.dart b/pkg/analysis_server/test/src/services/correction/assist/assign_to_local_variable_test.dart
index 3fa857a..f2c08ed 100644
--- a/pkg/analysis_server/test/src/services/correction/assist/assign_to_local_variable_test.dart
+++ b/pkg/analysis_server/test/src/services/correction/assist/assign_to_local_variable_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:analysis_server/src/services/linter/lint_names.dart';
 import 'package:analyzer_plugin/protocol/protocol_common.dart';
 import 'package:analyzer_plugin/utilities/assist/assist.dart';
 import 'package:test_reflective_loader/test_reflective_loader.dart';
@@ -79,6 +80,20 @@
     await assertNoAssistAt('345');
   }
 
+  Future<void> test_lint_prefer_final_locals() async {
+    createAnalysisOptionsFile(lints: [LintNames.prefer_final_locals]);
+    await resolveTestCode(r'''
+main() {
+  12345;
+}
+''');
+    await assertHasAssistAt('345', '''
+main() {
+  final i = 12345;
+}
+''');
+  }
+
   Future<void> test_recovery_splitExpression() async {
     verifyNoTestUnitErrors = false;
     await resolveTestCode('''
diff --git a/pkg/analyzer/lib/src/dart/constant/constant_verifier.dart b/pkg/analyzer/lib/src/dart/constant/constant_verifier.dart
index 2b83639..c2d09bb 100644
--- a/pkg/analyzer/lib/src/dart/constant/constant_verifier.dart
+++ b/pkg/analyzer/lib/src/dart/constant/constant_verifier.dart
@@ -801,6 +801,11 @@
       return false;
     }
 
+    final setConfig = this.setConfig;
+    if (setConfig == null) {
+      return true;
+    }
+
     if (listValue != null) {
       var type = value.type;
       if (type is InterfaceType) {
@@ -816,16 +821,13 @@
       }
     }
 
-    final setConfig = this.setConfig;
-    if (setConfig != null) {
-      for (var item in iterableValue) {
-        Expression expression = element.expression;
-        var existingValue = setConfig.uniqueValues[item];
-        if (existingValue != null) {
-          setConfig.duplicateElements[expression] = existingValue;
-        } else {
-          setConfig.uniqueValues[item] = expression;
-        }
+    for (var item in iterableValue) {
+      Expression expression = element.expression;
+      var existingValue = setConfig.uniqueValues[item];
+      if (existingValue != null) {
+        setConfig.duplicateElements[expression] = existingValue;
+      } else {
+        setConfig.uniqueValues[item] = expression;
       }
     }
 
diff --git a/pkg/analyzer/lib/src/dart/element/element.dart b/pkg/analyzer/lib/src/dart/element/element.dart
index 446a47a..87fd68d 100644
--- a/pkg/analyzer/lib/src/dart/element/element.dart
+++ b/pkg/analyzer/lib/src/dart/element/element.dart
@@ -899,16 +899,22 @@
           ParameterElementImpl implicitParameter;
           if (superParameter is ConstVariableElement) {
             var constVariable = superParameter as ConstVariableElement;
-            implicitParameter =
-                DefaultParameterElementImpl(superParameter.name, -1)
-                  ..constantInitializer = constVariable.constantInitializer;
+            implicitParameter = DefaultParameterElementImpl(
+              name: superParameter.name,
+              nameOffset: -1,
+              // ignore: deprecated_member_use_from_same_package
+              parameterKind: superParameter.parameterKind,
+            )..constantInitializer = constVariable.constantInitializer;
           } else {
-            implicitParameter = ParameterElementImpl(superParameter.name, -1);
+            implicitParameter = ParameterElementImpl(
+              name: superParameter.name,
+              nameOffset: -1,
+              // ignore: deprecated_member_use_from_same_package
+              parameterKind: superParameter.parameterKind,
+            );
           }
           implicitParameter.isConst = superParameter.isConst;
           implicitParameter.isFinal = superParameter.isFinal;
-          // ignore: deprecated_member_use_from_same_package
-          implicitParameter.parameterKind = superParameter.parameterKind;
           implicitParameter.isSynthetic = true;
           implicitParameter.type =
               substitution.substituteType(superParameter.type);
@@ -1672,8 +1678,15 @@
     extends FieldFormalParameterElementImpl with ConstVariableElement {
   /// Initialize a newly created parameter element to have the given [name] and
   /// [nameOffset].
-  DefaultFieldFormalParameterElementImpl(String name, int nameOffset)
-      : super(name, nameOffset);
+  DefaultFieldFormalParameterElementImpl({
+    required String name,
+    required int nameOffset,
+    required ParameterKind parameterKind,
+  }) : super(
+          name: name,
+          nameOffset: nameOffset,
+          parameterKind: parameterKind,
+        );
 
   @override
   String? get defaultValueCode {
@@ -1686,8 +1699,15 @@
     with ConstVariableElement {
   /// Initialize a newly created parameter element to have the given [name] and
   /// [nameOffset].
-  DefaultParameterElementImpl(String? name, int nameOffset)
-      : super(name, nameOffset);
+  DefaultParameterElementImpl({
+    required String? name,
+    required int nameOffset,
+    required ParameterKind parameterKind,
+  }) : super(
+          name: name,
+          nameOffset: nameOffset,
+          parameterKind: parameterKind,
+        );
 
   @override
   String? get defaultValueCode {
@@ -3367,8 +3387,15 @@
 
   /// Initialize a newly created parameter element to have the given [name] and
   /// [nameOffset].
-  FieldFormalParameterElementImpl(String name, int nameOffset)
-      : super(name, nameOffset);
+  FieldFormalParameterElementImpl({
+    required String name,
+    required int nameOffset,
+    required ParameterKind parameterKind,
+  }) : super(
+          name: name,
+          nameOffset: nameOffset,
+          parameterKind: parameterKind,
+        );
 
   /// Initializing formals are visible only in the "formal parameter
   /// initializer scope", which is the current scope of the initializer list
@@ -4819,8 +4846,8 @@
   /// typed parameter.
   List<TypeParameterElement> _typeParameters = const [];
 
-  /// The kind of this parameter.
-  ParameterKind? _parameterKind;
+  @override
+  final ParameterKind parameterKind;
 
   /// The Dart code of the default value.
   String? _defaultValueCode;
@@ -4832,15 +4859,22 @@
 
   /// Initialize a newly created parameter element to have the given [name] and
   /// [nameOffset].
-  ParameterElementImpl(String? name, int nameOffset) : super(name, nameOffset);
+  ParameterElementImpl({
+    required String? name,
+    required int nameOffset,
+    required this.parameterKind,
+  }) : super(name, nameOffset);
 
-  /// Creates a synthetic parameter with [name], [type] and [kind].
+  /// Creates a synthetic parameter with [name], [type] and [parameterKind].
   factory ParameterElementImpl.synthetic(
-      String? name, DartType type, ParameterKind kind) {
-    ParameterElementImpl element = ParameterElementImpl(name, -1);
+      String? name, DartType type, ParameterKind parameterKind) {
+    var element = ParameterElementImpl(
+      name: name,
+      nameOffset: -1,
+      parameterKind: parameterKind,
+    );
     element.type = type;
     element.isSynthetic = true;
-    element.parameterKind = kind;
     return element;
   }
 
@@ -4893,18 +4927,6 @@
   ElementKind get kind => ElementKind.PARAMETER;
 
   @override
-  ParameterKind get parameterKind {
-    if (_parameterKind != null) return _parameterKind!;
-
-    // TODO(migration): Make it impossible by construction.
-    throw StateError('The kind must set.');
-  }
-
-  set parameterKind(ParameterKind parameterKind) {
-    _parameterKind = parameterKind;
-  }
-
-  @override
   List<ParameterElement> get parameters {
     return _parameters;
   }
@@ -4955,10 +4977,13 @@
   ParameterElementImpl_ofImplicitSetter(
       PropertyAccessorElementImpl_ImplicitSetter setter)
       : setter = setter,
-        super('_${setter.variable.name}', -1) {
+        super(
+          name: '_${setter.variable.name}',
+          nameOffset: -1,
+          parameterKind: ParameterKind.REQUIRED,
+        ) {
     enclosingElement = setter;
     isSynthetic = true;
-    parameterKind = ParameterKind.REQUIRED;
   }
 
   @override
diff --git a/pkg/analyzer/lib/src/dart/element/inheritance_manager3.dart b/pkg/analyzer/lib/src/dart/element/inheritance_manager3.dart
index 4f6246e..4f0e447 100644
--- a/pkg/analyzer/lib/src/dart/element/inheritance_manager3.dart
+++ b/pkg/analyzer/lib/src/dart/element/inheritance_manager3.dart
@@ -8,7 +8,6 @@
 import 'package:analyzer/src/dart/element/member.dart';
 import 'package:analyzer/src/dart/element/type_algebra.dart';
 import 'package:analyzer/src/dart/element/type_system.dart';
-import 'package:analyzer/src/error/correct_override.dart';
 import 'package:analyzer/src/generated/utilities_general.dart';
 
 /// Failure because of there is no most specific signature in [candidates].
@@ -76,16 +75,16 @@
       return null;
     }
 
+    var targetLibrary = targetClass.library as LibraryElementImpl;
+    var typeSystem = targetLibrary.typeSystem;
+
     var validOverrides = <ExecutableElement>[];
     for (var i = 0; i < candidates.length; i++) {
       ExecutableElement? validOverride = candidates[i];
-      var overrideHelper = CorrectOverrideHelper(
-        library: targetClass.library as LibraryElementImpl,
-        thisMember: validOverride,
-      );
+      var validOverrideType = validOverride.type;
       for (var j = 0; j < candidates.length; j++) {
         var candidate = candidates[j];
-        if (!overrideHelper.isCorrectOverrideOf(superMember: candidate)) {
+        if (!typeSystem.isSubtypeOf(validOverrideType, candidate.type)) {
           validOverride = null;
           break;
         }
diff --git a/pkg/analyzer/lib/src/dart/resolver/constructor_reference_resolver.dart b/pkg/analyzer/lib/src/dart/resolver/constructor_reference_resolver.dart
index e70c49d..e2a2b97 100644
--- a/pkg/analyzer/lib/src/dart/resolver/constructor_reference_resolver.dart
+++ b/pkg/analyzer/lib/src/dart/resolver/constructor_reference_resolver.dart
@@ -39,11 +39,16 @@
       );
     }
     var name = node.constructorName.name;
-    if (element == null && name != null) {
+    if (element == null &&
+        name != null &&
+        _resolver.isConstructorTearoffsEnabled) {
       // The illegal construction, which looks like a type-instantiated
       // constructor tearoff, may be an attempt to reference a member on
       // [enclosingElement]. Try to provide a helpful error, and fall back to
       // "unknown constructor."
+      //
+      // Only report errors when the constructor tearoff feature is enabled,
+      // to avoid reporting redundant errors.
       var enclosingElement = node.constructorName.type.name.staticElement;
       if (enclosingElement is TypeAliasElement) {
         enclosingElement = enclosingElement.aliasedType.element;
diff --git a/pkg/analyzer/lib/src/dart/resolver/function_reference_resolver.dart b/pkg/analyzer/lib/src/dart/resolver/function_reference_resolver.dart
index 4004a9c..4db5773 100644
--- a/pkg/analyzer/lib/src/dart/resolver/function_reference_resolver.dart
+++ b/pkg/analyzer/lib/src/dart/resolver/function_reference_resolver.dart
@@ -53,11 +53,27 @@
       _resolvePrefixedIdentifierFunction(node, function);
     } else if (function is PropertyAccessImpl) {
       _resolvePropertyAccessFunction(node, function);
+    } else if (function is ConstructorReferenceImpl) {
+      var typeArguments = node.typeArguments;
+      if (typeArguments != null) {
+        // Something like `List.filled<int>`.
+        function.accept(_resolver);
+        _errorReporter.reportErrorForNode(
+          CompileTimeErrorCode.WRONG_NUMBER_OF_TYPE_ARGUMENTS_CONSTRUCTOR,
+          typeArguments,
+          [function.constructorName.type.name, function.constructorName.name],
+        );
+        _resolve(node: node, rawType: function.staticType);
+      }
     } else {
       // TODO(srawlins): Handle `function` being a [SuperExpression].
 
       function.accept(_resolver);
-      _resolveDisallowedExpression(node, node.function.staticType);
+      if (function.staticType is FunctionType) {
+        _resolve(node: node, rawType: function.staticType);
+      } else {
+        _resolveDisallowedExpression(node, function.staticType);
+      }
     }
   }
 
@@ -144,16 +160,33 @@
     }
 
     if (rawType is FunctionType) {
-      var typeArguments = _checkTypeArguments(
-        // `node.typeArguments`, coming from the parser, is never null.
-        node.typeArguments!, name, rawType.typeFormals,
-        CompileTimeErrorCode.WRONG_NUMBER_OF_TYPE_ARGUMENTS_FUNCTION,
-      );
+      // A FunctionReference with type arguments and with a
+      // ConstructorReference child is invalid. E.g. `List.filled<int>`.
+      // [CompileTimeErrorCode.WRONG_NUMBER_OF_TYPE_ARGUMENTS_CONSTRUCTOR] is
+      // reported elsewhere; don't check type arguments here.
+      if (node.function is ConstructorReference) {
+        node.staticType = DynamicTypeImpl.instance;
+      } else {
+        var typeArguments = _checkTypeArguments(
+          // `node.typeArguments`, coming from the parser, is never null.
+          node.typeArguments!, name, rawType.typeFormals,
+          CompileTimeErrorCode.WRONG_NUMBER_OF_TYPE_ARGUMENTS_FUNCTION,
+        );
 
-      var invokeType = rawType.instantiate(typeArguments);
-      node.typeArgumentTypes = typeArguments;
-      node.staticType = invokeType;
+        var invokeType = rawType.instantiate(typeArguments);
+        node.typeArgumentTypes = typeArguments;
+        node.staticType = invokeType;
+      }
     } else {
+      if (_resolver.isConstructorTearoffsEnabled) {
+        // Only report constructor tearoff-related errors if the constructor
+        // tearoff feature is enabled.
+        _errorReporter.reportErrorForNode(
+          CompileTimeErrorCode.DISALLOWED_TYPE_INSTANTIATION_EXPRESSION,
+          node.function,
+          [],
+        );
+      }
       node.staticType = DynamicTypeImpl.instance;
     }
   }
@@ -186,11 +219,15 @@
   /// with what the user may be intending.
   void _resolveDisallowedExpression(
       FunctionReferenceImpl node, DartType? rawType) {
-    _errorReporter.reportErrorForNode(
-      CompileTimeErrorCode.DISALLOWED_TYPE_INSTANTIATION_EXPRESSION,
-      node.function,
-      [],
-    );
+    if (_resolver.isConstructorTearoffsEnabled) {
+      // Only report constructor tearoff-related errors if the constructor
+      // tearoff feature is enabled.
+      _errorReporter.reportErrorForNode(
+        CompileTimeErrorCode.DISALLOWED_TYPE_INSTANTIATION_EXPRESSION,
+        node.function,
+        [],
+      );
+    }
     _resolve(node: node, rawType: rawType);
   }
 
@@ -227,7 +264,7 @@
 
     if (member is PropertyAccessorElement) {
       function.accept(_resolver);
-      _resolveDisallowedExpression(node, member.returnType);
+      _resolve(node: node, rawType: member.returnType);
       return;
     }
 
@@ -367,6 +404,15 @@
       return;
     } else {
       targetType = target.typeOrThrow;
+      if (targetType.isDynamic) {
+        _errorReporter.reportErrorForNode(
+          CompileTimeErrorCode.GENERIC_METHOD_TYPE_INSTANTIATION_ON_DYNAMIC,
+          node,
+          [],
+        );
+        node.staticType = DynamicTypeImpl.instance;
+        return;
+      }
     }
 
     var propertyElement = _resolver.typePropertyResolver
@@ -380,7 +426,7 @@
         .getter;
 
     if (propertyElement is TypeParameterElement) {
-      _resolveDisallowedExpression(node, propertyElement!.type);
+      _resolve(node: node, rawType: propertyElement!.type);
       return;
     }
 
@@ -480,7 +526,7 @@
         }
 
         if (method is PropertyAccessorElement) {
-          _resolveDisallowedExpression(node, method.returnType);
+          _resolve(node: node, rawType: method.returnType);
           return;
         }
 
@@ -532,17 +578,17 @@
     } else if (element is PropertyAccessorElement) {
       function.staticElement = element;
       function.staticType = element.returnType;
-      _resolveDisallowedExpression(node, element.returnType);
+      _resolve(node: node, rawType: element.returnType);
       return;
     } else if (element is ExecutableElement) {
       function.staticElement = element;
       function.staticType = element.type;
-      _resolveDisallowedExpression(node, element.type);
+      _resolve(node: node, rawType: element.type);
       return;
     } else if (element is VariableElement) {
       function.staticElement = element;
       function.staticType = element.type;
-      _resolveDisallowedExpression(node, element.type);
+      _resolve(node: node, rawType: element.type);
       return;
     } else {
       _resolveDisallowedExpression(node, DynamicTypeImpl.instance);
diff --git a/pkg/analyzer/lib/src/dart/resolver/resolution_visitor.dart b/pkg/analyzer/lib/src/dart/resolver/resolution_visitor.dart
index 7d522ef..9efde38 100644
--- a/pkg/analyzer/lib/src/dart/resolver/resolution_visitor.dart
+++ b/pkg/analyzer/lib/src/dart/resolver/resolution_visitor.dart
@@ -344,9 +344,17 @@
       var nameOffset = nameNode?.offset ?? -1;
       if (node.parameter is FieldFormalParameter) {
         // Only for recovery, this should not happen in valid code.
-        element = DefaultFieldFormalParameterElementImpl(name, nameOffset);
+        element = DefaultFieldFormalParameterElementImpl(
+          name: name,
+          nameOffset: nameOffset,
+          parameterKind: node.kind,
+        );
       } else {
-        element = DefaultParameterElementImpl(name, nameOffset);
+        element = DefaultParameterElementImpl(
+          name: name,
+          nameOffset: nameOffset,
+          parameterKind: node.kind,
+        );
       }
       _elementHolder.addParameter(element);
 
@@ -354,7 +362,6 @@
       element.isConst = node.isConst;
       element.isExplicitlyCovariant = node.parameter.covariantKeyword != null;
       element.isFinal = node.isFinal;
-      element.parameterKind = node.kind;
 
       if (normalParameter is SimpleFormalParameterImpl &&
           normalParameter.type == null) {
@@ -459,14 +466,14 @@
       } else {
         // Only for recovery, this should not happen in valid code.
         element = FieldFormalParameterElementImpl(
-          nameNode.name,
-          nameNode.offset,
+          name: nameNode.name,
+          nameOffset: nameNode.offset,
+          parameterKind: node.kind,
         );
         _elementHolder.enclose(element);
         element.isConst = node.isConst;
         element.isExplicitlyCovariant = node.covariantKeyword != null;
         element.isFinal = node.isFinal;
-        element.parameterKind = node.kind;
         _setCodeRange(element, node);
       }
       nameNode.staticElement = element;
@@ -638,12 +645,15 @@
       if (_elementWalker != null) {
         element = _elementWalker!.getParameter();
       } else {
-        element = ParameterElementImpl(nameNode.name, nameNode.offset);
+        element = ParameterElementImpl(
+          name: nameNode.name,
+          nameOffset: nameNode.offset,
+          parameterKind: node.kind,
+        );
         _elementHolder.addParameter(element);
         element.isConst = node.isConst;
         element.isExplicitlyCovariant = node.covariantKeyword != null;
         element.isFinal = node.isFinal;
-        element.parameterKind = node.kind;
         _setCodeRange(element, node);
       }
       nameNode.staticElement = element;
@@ -751,6 +761,20 @@
   void visitInstanceCreationExpression(InstanceCreationExpression node) {
     var newNode = _astRewriter.instanceCreationExpression(_nameScope, node);
     if (newNode != node) {
+      if (node.constructorName.type.typeArguments != null &&
+          newNode is MethodInvocation &&
+          newNode.target is FunctionReference &&
+          !_libraryElement.featureSet.isEnabled(Feature.constructor_tearoffs)) {
+        // A function reference with explicit type arguments (an expression of
+        // the form `a<...>.m(...)` or `p.a<...>.m(...)` where `a` does not
+        // refer to a class name, nor a type alias), is illegal without the
+        // constructor tearoff feature.
+        //
+        // This is a case where the parser does not report an error, because the
+        // parser thinks this could be an InstanceCreationExpression.
+        _errorReporter.reportErrorForNode(
+            HintCode.SDK_VERSION_CONSTRUCTOR_TEAROFFS, node, []);
+      }
       return newNode.accept(this);
     }
 
@@ -904,9 +928,17 @@
         element = _elementWalker!.getParameter();
       } else {
         if (nameNode != null) {
-          element = ParameterElementImpl(nameNode.name, nameNode.offset);
+          element = ParameterElementImpl(
+            name: nameNode.name,
+            nameOffset: nameNode.offset,
+            parameterKind: node.kind,
+          );
         } else {
-          element = ParameterElementImpl('', -1);
+          element = ParameterElementImpl(
+            name: '',
+            nameOffset: -1,
+            parameterKind: node.kind,
+          );
         }
         _elementHolder.addParameter(element);
 
@@ -914,7 +946,6 @@
         element.isConst = node.isConst;
         element.isExplicitlyCovariant = node.covariantKeyword != null;
         element.isFinal = node.isFinal;
-        element.parameterKind = node.kind;
         if (node.type == null) {
           element.hasImplicitType = true;
         }
diff --git a/pkg/analyzer/lib/src/error/best_practices_verifier.dart b/pkg/analyzer/lib/src/error/best_practices_verifier.dart
index d77a5bb..edf4483 100644
--- a/pkg/analyzer/lib/src/error/best_practices_verifier.dart
+++ b/pkg/analyzer/lib/src/error/best_practices_verifier.dart
@@ -773,7 +773,8 @@
 
   @override
   void visitTypeName(TypeName node) {
-    if (node.question != null) {
+    var question = node.question;
+    if (question != null) {
       var name = node.name.name;
       var type = node.typeOrThrow;
       // Only report non-aliased, non-user-defined `Null?` and `dynamic?`. Do
@@ -781,8 +782,8 @@
       if ((type.element == _nullType.element ||
               (type.isDynamic && name == 'dynamic')) &&
           type.alias == null) {
-        _errorReporter.reportErrorForNode(
-            HintCode.UNNECESSARY_QUESTION_MARK, node, [name]);
+        _errorReporter.reportErrorForToken(
+            HintCode.UNNECESSARY_QUESTION_MARK, question, [name]);
       }
     }
     super.visitTypeName(node);
diff --git a/pkg/analyzer/lib/src/generated/testing/element_factory.dart b/pkg/analyzer/lib/src/generated/testing/element_factory.dart
index cdf06145..b53f44c 100644
--- a/pkg/analyzer/lib/src/generated/testing/element_factory.dart
+++ b/pkg/analyzer/lib/src/generated/testing/element_factory.dart
@@ -163,7 +163,11 @@
 
   static FieldFormalParameterElementImpl fieldFormalParameter(
           Identifier name) =>
-      FieldFormalParameterElementImpl(name.name, name.offset);
+      FieldFormalParameterElementImpl(
+        name: name.name,
+        nameOffset: name.offset,
+        parameterKind: ParameterKind.REQUIRED,
+      );
 
   /// Destroy any static state retained by [ElementFactory].  This should be
   /// called from the `setUp` method of any tests that use [ElementFactory], in
@@ -266,27 +270,37 @@
   }
 
   static ParameterElementImpl namedParameter(String name) {
-    ParameterElementImpl parameter = ParameterElementImpl(name, 0);
-    parameter.parameterKind = ParameterKind.NAMED;
-    return parameter;
+    return ParameterElementImpl(
+      name: name,
+      nameOffset: 0,
+      parameterKind: ParameterKind.NAMED,
+    );
   }
 
   static ParameterElementImpl namedParameter2(String name, DartType type) {
-    ParameterElementImpl parameter = ParameterElementImpl(name, 0);
-    parameter.parameterKind = ParameterKind.NAMED;
+    var parameter = ParameterElementImpl(
+      name: name,
+      nameOffset: 0,
+      parameterKind: ParameterKind.NAMED,
+    );
     parameter.type = type;
     return parameter;
   }
 
   static ParameterElementImpl positionalParameter(String name) {
-    ParameterElementImpl parameter = ParameterElementImpl(name, 0);
-    parameter.parameterKind = ParameterKind.POSITIONAL;
-    return parameter;
+    return ParameterElementImpl(
+      name: name,
+      nameOffset: 0,
+      parameterKind: ParameterKind.POSITIONAL,
+    );
   }
 
   static ParameterElementImpl positionalParameter2(String name, DartType type) {
-    ParameterElementImpl parameter = ParameterElementImpl(name, 0);
-    parameter.parameterKind = ParameterKind.POSITIONAL;
+    var parameter = ParameterElementImpl(
+      name: name,
+      nameOffset: 0,
+      parameterKind: ParameterKind.POSITIONAL,
+    );
     parameter.type = type;
     return parameter;
   }
@@ -294,14 +308,19 @@
   static PrefixElementImpl prefix(String name) => PrefixElementImpl(name, 0);
 
   static ParameterElementImpl requiredParameter(String name) {
-    ParameterElementImpl parameter = ParameterElementImpl(name, 0);
-    parameter.parameterKind = ParameterKind.REQUIRED;
-    return parameter;
+    return ParameterElementImpl(
+      name: name,
+      nameOffset: 0,
+      parameterKind: ParameterKind.REQUIRED,
+    );
   }
 
   static ParameterElementImpl requiredParameter2(String name, DartType type) {
-    ParameterElementImpl parameter = ParameterElementImpl(name, 0);
-    parameter.parameterKind = ParameterKind.REQUIRED;
+    var parameter = ParameterElementImpl(
+      name: name,
+      nameOffset: 0,
+      parameterKind: ParameterKind.REQUIRED,
+    );
     parameter.type = type;
     return parameter;
   }
@@ -383,9 +402,12 @@
   static List<ParameterElementImpl> _requiredParameters(
       List<DartType> argumentTypes) {
     var parameters = argumentTypes.mapIndexed((index, type) {
-      var parameter = ParameterElementImpl("a$index", index);
+      var parameter = ParameterElementImpl(
+        name: 'a$index',
+        nameOffset: index,
+        parameterKind: ParameterKind.REQUIRED,
+      );
       parameter.type = type;
-      parameter.parameterKind = ParameterKind.REQUIRED;
       return parameter;
     }).toList();
     return parameters;
diff --git a/pkg/analyzer/lib/src/services/available_declarations.dart b/pkg/analyzer/lib/src/services/available_declarations.dart
index d4cd689..715eef2 100644
--- a/pkg/analyzer/lib/src/services/available_declarations.dart
+++ b/pkg/analyzer/lib/src/services/available_declarations.dart
@@ -122,6 +122,7 @@
   METHOD,
   MIXIN,
   SETTER,
+  TYPE_ALIAS,
   VARIABLE
 }
 
@@ -888,6 +889,7 @@
       case DeclarationKind.ENUM:
       case DeclarationKind.MIXIN:
       case DeclarationKind.FUNCTION_TYPE_ALIAS:
+      case DeclarationKind.TYPE_ALIAS:
         var name = declaration.name;
         return <String>['$uriStr::$name'];
       case DeclarationKind.CONSTRUCTOR:
@@ -1013,6 +1015,8 @@
         return DeclarationKind.MIXIN;
       case idl.AvailableDeclarationKind.SETTER:
         return DeclarationKind.SETTER;
+      case idl.AvailableDeclarationKind.TYPE_ALIAS:
+        return DeclarationKind.TYPE_ALIAS;
       case idl.AvailableDeclarationKind.VARIABLE:
         return DeclarationKind.VARIABLE;
       default:
@@ -1048,6 +1052,8 @@
         return idl.AvailableDeclarationKind.MIXIN;
       case DeclarationKind.SETTER:
         return idl.AvailableDeclarationKind.SETTER;
+      case DeclarationKind.TYPE_ALIAS:
+        return idl.AvailableDeclarationKind.TYPE_ALIAS;
       case DeclarationKind.VARIABLE:
         return idl.AvailableDeclarationKind.VARIABLE;
       default:
@@ -1141,7 +1147,7 @@
 
 class _File {
   /// The version of data format, should be incremented on every format change.
-  static const int DATA_VERSION = 16;
+  static const int DATA_VERSION = 17;
 
   /// The next value for [id].
   static int _nextId = 0;
@@ -1672,21 +1678,30 @@
         }
       } else if (node is GenericTypeAlias) {
         var functionType = node.functionType;
-        if (functionType == null) continue;
-
-        var parameters = functionType.parameters;
-        addDeclaration(
-          isDeprecated: isDeprecated,
-          kind: DeclarationKind.FUNCTION_TYPE_ALIAS,
-          name: node.name,
-          parameters: parameters.toSource(),
-          parameterNames: _getFormalParameterNames(parameters),
-          parameterTypes: _getFormalParameterTypes(parameters),
-          relevanceTags: ['ElementKind.FUNCTION_TYPE_ALIAS'],
-          requiredParameterCount: _getFormalParameterRequiredCount(parameters),
-          returnType: _getTypeAnnotationString(functionType.returnType),
-          typeParameters: functionType.typeParameters?.toSource(),
-        );
+        var type = node.type;
+        if (functionType != null) {
+          var parameters = functionType.parameters;
+          addDeclaration(
+            isDeprecated: isDeprecated,
+            kind: DeclarationKind.FUNCTION_TYPE_ALIAS,
+            name: node.name,
+            parameters: parameters.toSource(),
+            parameterNames: _getFormalParameterNames(parameters),
+            parameterTypes: _getFormalParameterTypes(parameters),
+            relevanceTags: ['ElementKind.FUNCTION_TYPE_ALIAS'],
+            requiredParameterCount:
+                _getFormalParameterRequiredCount(parameters),
+            returnType: _getTypeAnnotationString(functionType.returnType),
+            typeParameters: functionType.typeParameters?.toSource(),
+          );
+        } else if (type is TypeName && type.name.name.isNotEmpty) {
+          addDeclaration(
+            isDeprecated: isDeprecated,
+            kind: DeclarationKind.TYPE_ALIAS,
+            name: node.name,
+            relevanceTags: ['ElementKind.TYPE_ALIAS'],
+          );
+        }
       } else if (node is FunctionTypeAlias) {
         var parameters = node.parameters;
         addDeclaration(
diff --git a/pkg/analyzer/lib/src/summary/format.fbs b/pkg/analyzer/lib/src/summary/format.fbs
index 55f086c..4d7e28d 100644
--- a/pkg/analyzer/lib/src/summary/format.fbs
+++ b/pkg/analyzer/lib/src/summary/format.fbs
@@ -36,6 +36,8 @@
 
   SETTER,
 
+  TYPE_ALIAS,
+
   VARIABLE
 }
 
diff --git a/pkg/analyzer/lib/src/summary/idl.dart b/pkg/analyzer/lib/src/summary/idl.dart
index cc6271a..ea3274f 100644
--- a/pkg/analyzer/lib/src/summary/idl.dart
+++ b/pkg/analyzer/lib/src/summary/idl.dart
@@ -387,6 +387,7 @@
   METHOD,
   MIXIN,
   SETTER,
+  TYPE_ALIAS,
   VARIABLE
 }
 
diff --git a/pkg/analyzer/lib/src/summary2/ast_binary_reader.dart b/pkg/analyzer/lib/src/summary2/ast_binary_reader.dart
index 00cf9f8..a75433d 100644
--- a/pkg/analyzer/lib/src/summary2/ast_binary_reader.dart
+++ b/pkg/analyzer/lib/src/summary2/ast_binary_reader.dart
@@ -405,10 +405,10 @@
 
     var nonDefaultElement = parameter.declaredElement!;
     var element = DefaultParameterElementImpl(
-      nonDefaultElement.name,
-      nonDefaultElement.nameOffset,
+      name: nonDefaultElement.name,
+      nameOffset: nonDefaultElement.nameOffset,
+      parameterKind: kind,
     );
-    element.parameterKind = kind;
     if (parameter is SimpleFormalParameterImpl) {
       parameter.declaredElement = element;
     }
@@ -1037,8 +1037,11 @@
     var actualType = _reader.readRequiredType();
     _reader.readByte(); // TODO(scheglov) inherits covariant
 
-    var element = ParameterElementImpl(identifier?.name ?? '', -1);
-    element.parameterKind = node.kind;
+    var element = ParameterElementImpl(
+      name: identifier?.name ?? '',
+      nameOffset: -1,
+      parameterKind: node.kind,
+    );
     element.type = actualType;
     node.declaredElement = element;
     identifier?.staticElement = element;
diff --git a/pkg/analyzer/lib/src/summary2/bundle_reader.dart b/pkg/analyzer/lib/src/summary2/bundle_reader.dart
index 129e709..8767463 100644
--- a/pkg/analyzer/lib/src/summary2/bundle_reader.dart
+++ b/pkg/analyzer/lib/src/summary2/bundle_reader.dart
@@ -987,20 +987,35 @@
       ParameterElementImpl element;
       if (kind.isRequiredPositional) {
         if (isInitializingFormal) {
-          element = FieldFormalParameterElementImpl(name, -1);
+          element = FieldFormalParameterElementImpl(
+            name: name,
+            nameOffset: -1,
+            parameterKind: kind,
+          );
         } else {
-          element = ParameterElementImpl(name, -1);
+          element = ParameterElementImpl(
+            name: name,
+            nameOffset: -1,
+            parameterKind: kind,
+          );
         }
       } else {
         if (isInitializingFormal) {
-          element = DefaultFieldFormalParameterElementImpl(name, -1);
+          element = DefaultFieldFormalParameterElementImpl(
+            name: name,
+            nameOffset: -1,
+            parameterKind: kind,
+          );
         } else {
-          element = DefaultParameterElementImpl(name, -1);
+          element = DefaultParameterElementImpl(
+            name: name,
+            nameOffset: -1,
+            parameterKind: kind,
+          );
         }
         element.reference = reference;
         reference.element = element;
       }
-      element.parameterKind = kind;
       ParameterElementFlags.read(_reader, element);
       element.typeParameters = _readTypeParameters();
       element.parameters = _readParameters(element, reference);
@@ -1656,13 +1671,17 @@
       if (kind.isRequiredPositional) {
         ParameterElementImpl element;
         if (isInitializingFormal) {
-          element = FieldFormalParameterElementImpl(name, -1)
-            ..parameterKind = kind
-            ..type = type;
+          element = FieldFormalParameterElementImpl(
+            name: name,
+            nameOffset: -1,
+            parameterKind: kind,
+          )..type = type;
         } else {
-          element = ParameterElementImpl(name, -1)
-            ..parameterKind = kind
-            ..type = type;
+          element = ParameterElementImpl(
+            name: name,
+            nameOffset: -1,
+            parameterKind: kind,
+          )..type = type;
         }
         element.hasImplicitType = hasImplicitType;
         element.typeParameters = typeParameters;
@@ -1674,9 +1693,11 @@
         }
         return element;
       } else {
-        var element = DefaultParameterElementImpl(name, -1)
-          ..parameterKind = kind
-          ..type = type;
+        var element = DefaultParameterElementImpl(
+          name: name,
+          nameOffset: -1,
+          parameterKind: kind,
+        )..type = type;
         element.hasImplicitType = hasImplicitType;
         element.typeParameters = typeParameters;
         element.parameters = _readFormalParameters(unitElement);
diff --git a/pkg/analyzer/lib/src/summary2/element_builder.dart b/pkg/analyzer/lib/src/summary2/element_builder.dart
index 8f9bd66..a503d40 100644
--- a/pkg/analyzer/lib/src/summary2/element_builder.dart
+++ b/pkg/analyzer/lib/src/summary2/element_builder.dart
@@ -350,12 +350,19 @@
     ParameterElementImpl element;
     var parent = node.parent;
     if (parent is DefaultFormalParameter) {
-      element = DefaultFieldFormalParameterElementImpl(name, nameOffset)
-        ..constantInitializer = parent.defaultValue;
+      element = DefaultFieldFormalParameterElementImpl(
+        name: name,
+        nameOffset: nameOffset,
+        parameterKind: node.kind,
+      )..constantInitializer = parent.defaultValue;
       _linker.elementNodes[element] = parent;
       _enclosingContext.addParameter(name, element);
     } else {
-      element = FieldFormalParameterElementImpl(name, nameOffset);
+      element = FieldFormalParameterElementImpl(
+        name: name,
+        nameOffset: nameOffset,
+        parameterKind: node.kind,
+      );
       _linker.elementNodes[element] = node;
       _enclosingContext.addParameter(null, element);
     }
@@ -363,7 +370,6 @@
     element.isExplicitlyCovariant = node.covariantKeyword != null;
     element.isFinal = node.isFinal;
     element.metadata = _buildAnnotations(node.metadata);
-    element.parameterKind = node.kind;
     _setCodeRange(element, node);
 
     nameNode.staticElement = element;
@@ -497,17 +503,23 @@
     ParameterElementImpl element;
     var parent = node.parent;
     if (parent is DefaultFormalParameter) {
-      element = DefaultParameterElementImpl(name, nameOffset)
-        ..constantInitializer = parent.defaultValue;
+      element = DefaultParameterElementImpl(
+        name: name,
+        nameOffset: nameOffset,
+        parameterKind: node.kind,
+      )..constantInitializer = parent.defaultValue;
       _linker.elementNodes[element] = parent;
     } else {
-      element = ParameterElementImpl(name, nameOffset);
+      element = ParameterElementImpl(
+        name: name,
+        nameOffset: nameOffset,
+        parameterKind: node.kind,
+      );
       _linker.elementNodes[element] = node;
     }
     element.isExplicitlyCovariant = node.covariantKeyword != null;
     element.isFinal = node.isFinal;
     element.metadata = _buildAnnotations(node.metadata);
-    element.parameterKind = node.kind;
     _setCodeRange(element, node);
 
     nameNode.staticElement = element;
@@ -764,12 +776,19 @@
     ParameterElementImpl element;
     var parent = node.parent;
     if (parent is DefaultFormalParameter) {
-      element = DefaultParameterElementImpl(name, nameOffset)
-        ..constantInitializer = parent.defaultValue;
+      element = DefaultParameterElementImpl(
+        name: name,
+        nameOffset: nameOffset,
+        parameterKind: node.kind,
+      )..constantInitializer = parent.defaultValue;
       _linker.elementNodes[element] = parent;
       _enclosingContext.addParameter(name, element);
     } else {
-      element = ParameterElementImpl(name, nameOffset);
+      element = ParameterElementImpl(
+        name: name,
+        nameOffset: nameOffset,
+        parameterKind: node.kind,
+      );
       _linker.elementNodes[element] = node;
       _enclosingContext.addParameter(null, element);
     }
@@ -778,7 +797,6 @@
     element.isExplicitlyCovariant = node.covariantKeyword != null;
     element.isFinal = node.isFinal;
     element.metadata = _buildAnnotations(node.metadata);
-    element.parameterKind = node.kind;
     _setCodeRange(element, node);
 
     node.declaredElement = element;
diff --git a/pkg/analyzer/lib/src/test_utilities/mock_sdk_elements.dart b/pkg/analyzer/lib/src/test_utilities/mock_sdk_elements.dart
index a3d5f14..f289112 100644
--- a/pkg/analyzer/lib/src/test_utilities/mock_sdk_elements.dart
+++ b/pkg/analyzer/lib/src/test_utilities/mock_sdk_elements.dart
@@ -1073,23 +1073,32 @@
 
   ParameterElement _namedParameter(String name, DartType type,
       {String? initializerCode}) {
-    var parameter = DefaultParameterElementImpl(name, 0);
-    parameter.parameterKind = ParameterKind.NAMED;
+    var parameter = DefaultParameterElementImpl(
+      name: name,
+      nameOffset: 0,
+      parameterKind: ParameterKind.NAMED,
+    );
     parameter.type = type;
     parameter.defaultValueCode = initializerCode;
     return parameter;
   }
 
   ParameterElement _positionalParameter(String name, DartType type) {
-    var parameter = ParameterElementImpl(name, 0);
-    parameter.parameterKind = ParameterKind.POSITIONAL;
+    var parameter = ParameterElementImpl(
+      name: name,
+      nameOffset: 0,
+      parameterKind: ParameterKind.POSITIONAL,
+    );
     parameter.type = type;
     return parameter;
   }
 
   ParameterElement _requiredParameter(String name, DartType type) {
-    var parameter = ParameterElementImpl(name, 0);
-    parameter.parameterKind = ParameterKind.REQUIRED;
+    var parameter = ParameterElementImpl(
+      name: name,
+      nameOffset: 0,
+      parameterKind: ParameterKind.REQUIRED,
+    );
     parameter.type = type;
     return parameter;
   }
diff --git a/pkg/analyzer/test/generated/elements_types_mixin.dart b/pkg/analyzer/test/generated/elements_types_mixin.dart
index 2933f98..5b8ad2f 100644
--- a/pkg/analyzer/test/generated/elements_types_mixin.dart
+++ b/pkg/analyzer/test/generated/elements_types_mixin.dart
@@ -473,8 +473,11 @@
     required DartType type,
     bool isCovariant = false,
   }) {
-    var parameter = ParameterElementImpl(name, 0);
-    parameter.parameterKind = ParameterKind.NAMED;
+    var parameter = ParameterElementImpl(
+      name: name,
+      nameOffset: 0,
+      parameterKind: ParameterKind.NAMED,
+    );
     parameter.type = type;
     parameter.isExplicitlyCovariant = isCovariant;
     return parameter;
@@ -485,8 +488,11 @@
     required DartType type,
     bool isCovariant = false,
   }) {
-    var parameter = ParameterElementImpl(name, 0);
-    parameter.parameterKind = ParameterKind.NAMED_REQUIRED;
+    var parameter = ParameterElementImpl(
+      name: name,
+      nameOffset: 0,
+      parameterKind: ParameterKind.NAMED_REQUIRED,
+    );
     parameter.type = type;
     parameter.isExplicitlyCovariant = isCovariant;
     return parameter;
@@ -498,8 +504,11 @@
     bool isCovariant = false,
     String? defaultValueCode,
   }) {
-    var parameter = ParameterElementImpl(name ?? '', 0);
-    parameter.parameterKind = ParameterKind.POSITIONAL;
+    var parameter = ParameterElementImpl(
+      name: name ?? '',
+      nameOffset: 0,
+      parameterKind: ParameterKind.POSITIONAL,
+    );
     parameter.type = type;
     parameter.isExplicitlyCovariant = isCovariant;
     parameter.defaultValueCode = defaultValueCode;
@@ -556,8 +565,11 @@
     required DartType type,
     bool isCovariant = false,
   }) {
-    var parameter = ParameterElementImpl(name ?? '', 0);
-    parameter.parameterKind = ParameterKind.REQUIRED;
+    var parameter = ParameterElementImpl(
+      name: name ?? '',
+      nameOffset: 0,
+      parameterKind: ParameterKind.REQUIRED,
+    );
     parameter.type = type;
     parameter.isExplicitlyCovariant = isCovariant;
     return parameter;
diff --git a/pkg/analyzer/test/generated/error_parser_test.dart b/pkg/analyzer/test/generated/error_parser_test.dart
index 19a469c..41a03fc 100644
--- a/pkg/analyzer/test/generated/error_parser_test.dart
+++ b/pkg/analyzer/test/generated/error_parser_test.dart
@@ -250,8 +250,8 @@
     parseCompilationUnit("const enum E {ONE}", errors: [
       // Fasta interprets the `const` as a malformed top level const
       // and `enum` as the start of an enum declaration.
+      expectedError(ParserErrorCode.EXPECTED_TOKEN, 0, 5),
       expectedError(ParserErrorCode.MISSING_IDENTIFIER, 6, 4),
-      expectedError(ParserErrorCode.EXPECTED_TOKEN, 6, 4),
     ]);
   }
 
@@ -370,9 +370,9 @@
     createParser('class C { C< }');
     parser.parseCompilationUnit2();
     listener.assertErrors([
+      expectedError(ParserErrorCode.EXPECTED_TOKEN, 11, 1),
       expectedError(ParserErrorCode.EXPECTED_TYPE_NAME, 13, 1),
       expectedError(ParserErrorCode.MISSING_IDENTIFIER, 13, 1),
-      expectedError(ParserErrorCode.EXPECTED_TOKEN, 13, 1),
     ]);
   }
 
@@ -381,9 +381,9 @@
     parser.parseCompilationUnit2();
     listener.assertErrors([
       expectedError(ParserErrorCode.ANNOTATION_ON_TYPE_ARGUMENT, 12, 4),
+      expectedError(ParserErrorCode.EXPECTED_TOKEN, 13, 3),
       expectedError(ParserErrorCode.EXPECTED_TYPE_NAME, 17, 1),
       expectedError(ParserErrorCode.MISSING_IDENTIFIER, 17, 1),
-      expectedError(ParserErrorCode.EXPECTED_TOKEN, 17, 1),
     ]);
   }
 
@@ -393,9 +393,9 @@
     listener.assertErrors([
       expectedError(ParserErrorCode.ANNOTATION_ON_TYPE_ARGUMENT, 12, 4),
       expectedError(ParserErrorCode.ANNOTATION_ON_TYPE_ARGUMENT, 17, 6),
+      expectedError(ParserErrorCode.EXPECTED_TOKEN, 22, 1),
       expectedError(ParserErrorCode.EXPECTED_TYPE_NAME, 24, 1),
       expectedError(ParserErrorCode.MISSING_IDENTIFIER, 24, 1),
-      expectedError(ParserErrorCode.EXPECTED_TOKEN, 24, 1),
     ]);
   }
 
@@ -420,8 +420,8 @@
     parseCompilationUnit("const typedef F();", errors: [
       // Fasta interprets the `const` as a malformed top level const
       // and `typedef` as the start of an typedef declaration.
+      expectedError(ParserErrorCode.EXPECTED_TOKEN, 0, 5),
       expectedError(ParserErrorCode.MISSING_IDENTIFIER, 6, 7),
-      expectedError(ParserErrorCode.EXPECTED_TOKEN, 6, 7),
     ]);
   }
 
@@ -761,9 +761,9 @@
   void test_expectedExecutable_inClass_afterVoid() {
     parseCompilationUnit('class C { void 2 void }', errors: [
       expectedError(ParserErrorCode.MISSING_IDENTIFIER, 15, 1),
+      expectedError(ParserErrorCode.EXPECTED_TOKEN, 15, 1),
       expectedError(ParserErrorCode.EXPECTED_TOKEN, 17, 4),
       expectedError(ParserErrorCode.MISSING_IDENTIFIER, 22, 1),
-      expectedError(ParserErrorCode.EXPECTED_TOKEN, 22, 1)
     ]);
   }
 
@@ -780,11 +780,11 @@
 
   void test_expectedExecutable_topLevel_afterVoid() {
     CompilationUnit unit = parseCompilationUnit('void 2 void', errors: [
+      expectedError(ParserErrorCode.EXPECTED_TOKEN, 0, 4),
       expectedError(ParserErrorCode.MISSING_IDENTIFIER, 5, 1),
-      expectedError(ParserErrorCode.EXPECTED_TOKEN, 5, 1),
       expectedError(ParserErrorCode.EXPECTED_EXECUTABLE, 5, 1),
+      expectedError(ParserErrorCode.EXPECTED_TOKEN, 7, 4),
       expectedError(ParserErrorCode.MISSING_IDENTIFIER, 11, 0),
-      expectedError(ParserErrorCode.EXPECTED_TOKEN, 11, 0),
     ]);
     expect(unit, isNotNull);
   }
@@ -832,7 +832,7 @@
   void test_expectedToken_parseStatement_afterVoid() {
     parseStatement("void}", expectedEndOffset: 4);
     listener.assertErrors([
-      expectedError(ParserErrorCode.EXPECTED_TOKEN, 4, 1),
+      expectedError(ParserErrorCode.EXPECTED_TOKEN, 0, 4),
       expectedError(ParserErrorCode.MISSING_IDENTIFIER, 4, 1)
     ]);
   }
@@ -875,8 +875,8 @@
 
   void test_expectedToken_uriAndSemicolonMissingAfterExport() {
     CompilationUnit unit = parseCompilationUnit("export class A {}", errors: [
+      expectedError(ParserErrorCode.EXPECTED_TOKEN, 0, 6),
       expectedError(ParserErrorCode.EXPECTED_STRING_LITERAL, 7, 5),
-      expectedError(ParserErrorCode.EXPECTED_TOKEN, 7, 5),
     ]);
     ExportDirective directive = unit.directives[0] as ExportDirective;
     expect(directive.uri, isNotNull);
@@ -1177,8 +1177,8 @@
     ClassMember member = parser.parseClassMember('C');
     expectNotNullIfNoErrors(member);
     listener.assertErrors([
+      expectedError(ParserErrorCode.EXPECTED_TOKEN, 0, 5),
       expectedError(ParserErrorCode.MISSING_IDENTIFIER, 5, 0),
-      expectedError(ParserErrorCode.EXPECTED_TOKEN, 5, 0)
     ]);
   }
 
@@ -1194,8 +1194,8 @@
     parseCompilationUnit("final enum E {ONE}", errors: [
       // Fasta interprets the `final` as a malformed top level final
       // and `enum` as the start of a enum declaration.
+      expectedError(ParserErrorCode.EXPECTED_TOKEN, 0, 5),
       expectedError(ParserErrorCode.MISSING_IDENTIFIER, 6, 4),
-      expectedError(ParserErrorCode.EXPECTED_TOKEN, 6, 4),
     ]);
   }
 
@@ -1211,8 +1211,8 @@
     parseCompilationUnit("final typedef F();", errors: [
       // Fasta interprets the `final` as a malformed top level final
       // and `typedef` as the start of an typedef declaration.
+      expectedError(ParserErrorCode.EXPECTED_TOKEN, 0, 5),
       expectedError(ParserErrorCode.MISSING_IDENTIFIER, 6, 7),
-      expectedError(ParserErrorCode.EXPECTED_TOKEN, 6, 7),
     ]);
   }
 
@@ -1434,8 +1434,8 @@
     expectNotNullIfNoErrors(statement);
     listener.assertErrors([
       expectedError(ParserErrorCode.EXPECTED_TOKEN, 7, 1),
+      expectedError(ParserErrorCode.EXPECTED_TOKEN, 7, 1),
       expectedError(ParserErrorCode.MISSING_IDENTIFIER, 8, 1),
-      expectedError(ParserErrorCode.EXPECTED_TOKEN, 8, 1)
     ]);
   }
 
@@ -1696,8 +1696,8 @@
     parseCompilationUnit(
         "typedef T = typedef F = Map<String, dynamic> Function();",
         errors: [
+          expectedError(ParserErrorCode.EXPECTED_TOKEN, 10, 1),
           expectedError(ParserErrorCode.EXPECTED_TYPE_NAME, 12, 7),
-          expectedError(ParserErrorCode.EXPECTED_TOKEN, 12, 7),
         ]);
   }
 
@@ -2180,9 +2180,9 @@
   void test_missingStatement() {
     parseStatement("is");
     listener.assertErrors([
+      expectedError(ParserErrorCode.EXPECTED_TOKEN, 0, 2),
       expectedError(ParserErrorCode.MISSING_IDENTIFIER, 0, 2),
       expectedError(ParserErrorCode.EXPECTED_TYPE_NAME, 2, 0),
-      expectedError(ParserErrorCode.EXPECTED_TOKEN, 2, 0)
     ]);
   }
 
@@ -2353,8 +2353,8 @@
 
   void test_nonIdentifierLibraryName_partOf() {
     CompilationUnit unit = parseCompilationUnit("part of 3;", errors: [
+      expectedError(ParserErrorCode.EXPECTED_TOKEN, 5, 2),
       expectedError(ParserErrorCode.EXPECTED_STRING_LITERAL, 8, 1),
-      expectedError(ParserErrorCode.EXPECTED_TOKEN, 8, 1),
       expectedError(ParserErrorCode.EXPECTED_EXECUTABLE, 8, 1),
       expectedError(ParserErrorCode.UNEXPECTED_TOKEN, 9, 1)
     ]);
@@ -2758,8 +2758,8 @@
     // https://github.com/Dart-Code/Dart-Code/issues/1548
     parseCompilationUnit(r"main() { String s = 'a' 'b', 'c$foo'; return s; }",
         errors: [
+          expectedError(ParserErrorCode.EXPECTED_TOKEN, 27, 1),
           expectedError(ParserErrorCode.MISSING_IDENTIFIER, 29, 2),
-          expectedError(ParserErrorCode.EXPECTED_TOKEN, 29, 2),
         ]);
   }
 
@@ -2945,8 +2945,8 @@
     parseCompilationUnit("var class C {}", errors: [
       // Fasta interprets the `var` as a malformed top level var
       // and `class` as the start of a class declaration.
+      expectedError(ParserErrorCode.EXPECTED_TOKEN, 0, 3),
       expectedError(ParserErrorCode.MISSING_IDENTIFIER, 4, 5),
-      expectedError(ParserErrorCode.EXPECTED_TOKEN, 4, 5),
     ]);
   }
 
@@ -2954,8 +2954,8 @@
     parseCompilationUnit("var enum E {ONE}", errors: [
       // Fasta interprets the `var` as a malformed top level var
       // and `enum` as the start of an enum declaration.
+      expectedError(ParserErrorCode.EXPECTED_TOKEN, 0, 3),
       expectedError(ParserErrorCode.MISSING_IDENTIFIER, 4, 4),
-      expectedError(ParserErrorCode.EXPECTED_TOKEN, 4, 4),
     ]);
   }
 
@@ -2971,8 +2971,8 @@
     parseCompilationUnit("var typedef F();", errors: [
       // Fasta interprets the `var` as a malformed top level var
       // and `typedef` as the start of an typedef declaration.
+      expectedError(ParserErrorCode.EXPECTED_TOKEN, 0, 3),
       expectedError(ParserErrorCode.MISSING_IDENTIFIER, 4, 7),
-      expectedError(ParserErrorCode.EXPECTED_TOKEN, 4, 7),
     ]);
   }
 
diff --git a/pkg/analyzer/test/generated/nnbd_parser_test.dart b/pkg/analyzer/test/generated/nnbd_parser_test.dart
index f8f5bcd..113fa2b 100644
--- a/pkg/analyzer/test/generated/nnbd_parser_test.dart
+++ b/pkg/analyzer/test/generated/nnbd_parser_test.dart
@@ -236,7 +236,7 @@
       expectedError(ParserErrorCode.EXPECTED_EXECUTABLE, 0, 1),
       expectedError(ParserErrorCode.MISSING_FUNCTION_PARAMETERS, 1, 1),
       expectedError(ParserErrorCode.MISSING_IDENTIFIER, 6, 4),
-      expectedError(ParserErrorCode.EXPECTED_TOKEN, 10, 1),
+      expectedError(ParserErrorCode.EXPECTED_TOKEN, 6, 4),
       expectedError(ParserErrorCode.EXPECTED_TOKEN, 10, 1),
     ]);
   }
diff --git a/pkg/analyzer/test/generated/recovery_parser_test.dart b/pkg/analyzer/test/generated/recovery_parser_test.dart
index 1abb18e..523a736 100644
--- a/pkg/analyzer/test/generated/recovery_parser_test.dart
+++ b/pkg/analyzer/test/generated/recovery_parser_test.dart
@@ -336,9 +336,9 @@
     parser.parseCompilationUnit2();
     listener.assertErrors([
       expectedError(ParserErrorCode.MISSING_IDENTIFIER, 26, 1),
-      expectedError(ParserErrorCode.EXPECTED_TOKEN, 27, 0),
+      expectedError(ParserErrorCode.EXPECTED_TOKEN, 26, 1),
+      expectedError(ParserErrorCode.EXPECTED_TOKEN, 26, 1),
       expectedError(ParserErrorCode.MISSING_CONST_FINAL_VAR_OR_TYPE, 27, 0),
-      expectedError(ParserErrorCode.EXPECTED_TOKEN, 27, 0)
     ]);
   }
 
@@ -906,8 +906,8 @@
   void test_incompleteLocalVariable_atTheEndOfBlock_modifierOnly() {
     Statement statement = parseStatement('final }', expectedEndOffset: 6);
     listener.assertErrors([
+      expectedError(ParserErrorCode.EXPECTED_TOKEN, 0, 5),
       expectedError(ParserErrorCode.MISSING_IDENTIFIER, 6, 1),
-      expectedError(ParserErrorCode.EXPECTED_TOKEN, 6, 1)
     ]);
     expect(statement, isVariableDeclarationStatement);
     expect(statement.toSource(), 'final ;');
@@ -1411,8 +1411,8 @@
 
   void test_nonStringLiteralUri_import() {
     parseCompilationUnit("import dart:io; class C {}", errors: [
+      expectedError(ParserErrorCode.EXPECTED_TOKEN, 0, 6),
       expectedError(ParserErrorCode.EXPECTED_STRING_LITERAL, 7, 4),
-      expectedError(ParserErrorCode.EXPECTED_TOKEN, 7, 4),
       expectedError(ParserErrorCode.MISSING_CONST_FINAL_VAR_OR_TYPE, 7, 4),
       expectedError(ParserErrorCode.EXPECTED_TOKEN, 7, 4),
       expectedError(ParserErrorCode.EXPECTED_EXECUTABLE, 11, 1),
diff --git a/pkg/analyzer/test/generated/statement_parser_test.dart b/pkg/analyzer/test/generated/statement_parser_test.dart
index e1a4243..02d0f4b 100644
--- a/pkg/analyzer/test/generated/statement_parser_test.dart
+++ b/pkg/analyzer/test/generated/statement_parser_test.dart
@@ -224,8 +224,8 @@
 
   void test_parseElseAlone() {
     parseCompilationUnit('main() { else return 0; } ', errors: [
+      expectedError(ParserErrorCode.EXPECTED_TOKEN, 7, 1),
       expectedError(ParserErrorCode.MISSING_IDENTIFIER, 9, 4),
-      expectedError(ParserErrorCode.EXPECTED_TOKEN, 9, 4),
       expectedError(ParserErrorCode.UNEXPECTED_TOKEN, 9, 4),
     ]);
   }
@@ -1742,10 +1742,10 @@
   void test_partial_typeArg1_34850() {
     var unit = parseCompilationUnit('<bar<', errors: [
       expectedError(ParserErrorCode.EXPECTED_EXECUTABLE, 0, 1),
+      expectedError(ParserErrorCode.EXPECTED_TOKEN, 4, 1),
       expectedError(ParserErrorCode.MISSING_IDENTIFIER, 5, 0),
       expectedError(ParserErrorCode.EXPECTED_TYPE_NAME, 5, 0),
       expectedError(ParserErrorCode.MISSING_IDENTIFIER, 5, 0),
-      expectedError(ParserErrorCode.EXPECTED_TOKEN, 5, 0),
     ]);
     // Validate that recovery has properly updated the token stream.
     analyzer.Token token = unit.beginToken;
@@ -1759,10 +1759,10 @@
 
   void test_partial_typeArg2_34850() {
     var unit = parseCompilationUnit('foo <bar<', errors: [
+      expectedError(ParserErrorCode.EXPECTED_TOKEN, 8, 1),
       expectedError(ParserErrorCode.MISSING_IDENTIFIER, 9, 0),
       expectedError(ParserErrorCode.EXPECTED_TYPE_NAME, 9, 0),
       expectedError(ParserErrorCode.MISSING_IDENTIFIER, 9, 0),
-      expectedError(ParserErrorCode.EXPECTED_TOKEN, 9, 0),
     ]);
     // Validate that recovery has properly updated the token stream.
     analyzer.Token token = unit.beginToken;
diff --git a/pkg/analyzer/test/generated/top_level_parser_test.dart b/pkg/analyzer/test/generated/top_level_parser_test.dart
index 16aed27..acf54ac 100644
--- a/pkg/analyzer/test/generated/top_level_parser_test.dart
+++ b/pkg/analyzer/test/generated/top_level_parser_test.dart
@@ -79,9 +79,9 @@
     expect(member, isNotNull);
     assertErrors(errors: [
       expectedError(ParserErrorCode.EXPECTED_TYPE_NAME, 12, 2),
+      expectedError(ParserErrorCode.EXPECTED_TOKEN, 13, 1),
       expectedError(ParserErrorCode.MISSING_IDENTIFIER, 14, 0),
       expectedError(ParserErrorCode.MISSING_IDENTIFIER, 14, 0),
-      expectedError(ParserErrorCode.EXPECTED_TOKEN, 14, 0),
     ]);
 
     expect(member, isTopLevelVariableDeclaration);
diff --git a/pkg/analyzer/test/src/dart/resolution/constructor_reference_test.dart b/pkg/analyzer/test/src/dart/resolution/constructor_reference_test.dart
index 087615a..00b6b27 100644
--- a/pkg/analyzer/test/src/dart/resolution/constructor_reference_test.dart
+++ b/pkg/analyzer/test/src/dart/resolution/constructor_reference_test.dart
@@ -230,14 +230,7 @@
   A<int>.foo<int>;
 }
 ''', [
-      error(CompileTimeErrorCode.DISALLOWED_TYPE_INSTANTIATION_EXPRESSION, 42,
-          10),
-      // TODO(srawlins): Stop reporting the error below; the code is not
-      // precise, and it is duplicate with the code above.
-      error(
-          CompileTimeErrorCode
-              .WRONG_NUMBER_OF_TYPE_ARGUMENTS_ANONYMOUS_FUNCTION,
-          52,
+      error(CompileTimeErrorCode.WRONG_NUMBER_OF_TYPE_ARGUMENTS_CONSTRUCTOR, 52,
           5),
     ]);
 
@@ -805,6 +798,29 @@
 @reflectiveTest
 class ConstructorReferenceResolutionWithoutConstructorTearoffsTest
     extends PubPackageResolutionTest with WithoutConstructorTearoffsMixin {
+  test_class_generic_nonConstructor() async {
+    await assertErrorsInCode('''
+class A<T> {
+  static int i = 1;
+}
+
+void bar() {
+  A<int>.i;
+}
+''', [
+      error(ParserErrorCode.EXPERIMENT_NOT_ENABLED, 52, 5),
+    ]);
+
+    var classElement = findElement.class_('A');
+    assertConstructorReference(
+      findNode.constructorReference('A<int>.i;'),
+      null,
+      classElement,
+      'dynamic',
+      expectedTypeNameType: 'A<int>',
+    );
+  }
+
   test_constructorTearoff() async {
     await assertErrorsInCode('''
 class A {
diff --git a/pkg/analyzer/test/src/dart/resolution/function_reference_test.dart b/pkg/analyzer/test/src/dart/resolution/function_reference_test.dart
index 619e5c7..f695287 100644
--- a/pkg/analyzer/test/src/dart/resolution/function_reference_test.dart
+++ b/pkg/analyzer/test/src/dart/resolution/function_reference_test.dart
@@ -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.
 
+import 'package:analyzer/src/dart/error/syntactic_errors.dart';
 import 'package:analyzer/src/error/codes.dart';
 import 'package:test_reflective_loader/test_reflective_loader.dart';
 
@@ -10,11 +11,78 @@
 main() {
   defineReflectiveSuite(() {
     defineReflectiveTests(FunctionReferenceResolutionTest);
+    defineReflectiveTests(
+        FunctionReferenceResolutionWithoutConstructorTearoffsTest);
   });
 }
 
 @reflectiveTest
 class FunctionReferenceResolutionTest extends PubPackageResolutionTest {
+  test_constructorFunction_named() async {
+    await assertNoErrorsInCode('''
+class A<T> {
+  A.foo() {}
+}
+
+var x = (A.foo)<int>;
+''');
+
+    assertFunctionReference(findNode.functionReference('(A.foo)<int>;'),
+        findElement.constructor('foo'), 'A<int> Function()');
+  }
+
+  test_constructorFunction_unnamed() async {
+    await assertNoErrorsInCode('''
+class A<T> {
+  A();
+}
+
+var x = (A.new)<int>;
+''');
+
+    assertFunctionReference(findNode.functionReference('(A.new)<int>;'),
+        findElement.unnamedConstructor('A'), 'A<int> Function()');
+  }
+
+  test_constructorReference() async {
+    await assertErrorsInCode('''
+class A<T> {
+  A.foo() {}
+}
+
+var x = A.foo<int>;
+''', [
+      error(CompileTimeErrorCode.WRONG_NUMBER_OF_TYPE_ARGUMENTS_CONSTRUCTOR, 42,
+          5),
+    ]);
+
+    assertFunctionReference(findNode.functionReference('A.foo<int>;'),
+        findElement.constructor('foo'), 'dynamic');
+  }
+
+  test_explicitReceiver_dynamicTyped() async {
+    await assertErrorsInCode('''
+dynamic f(dynamic x) => x;
+
+class C {
+  T instanceMethod<T>(T t) => t;
+}
+
+main() {
+  C c = new C();
+  f(c).instanceMethod<int>;
+}
+''', [
+      error(CompileTimeErrorCode.GENERIC_METHOD_TYPE_INSTANTIATION_ON_DYNAMIC,
+          102, 24),
+    ]);
+
+    assertFunctionReference(
+        findNode.functionReference('f(c).instanceMethod<int>;'),
+        null,
+        'dynamic');
+  }
+
   test_explicitReceiver_unknown() async {
     await assertErrorsInCode('''
 bar() {
@@ -195,25 +263,6 @@
         reference, findElement.method('foo'), 'void Function(int)');
   }
 
-  test_instanceGetter() async {
-    await assertErrorsInCode('''
-abstract class A {
-  late void Function<T>(T) foo;
-
-  bar() {
-    foo<int>;
-  }
-}
-
-''', [
-      error(
-          CompileTimeErrorCode.DISALLOWED_TYPE_INSTANTIATION_EXPRESSION, 66, 3),
-    ]);
-
-    assertFunctionReference(findNode.functionReference('foo<int>;'),
-        findElement.getter('foo'), 'void Function(int)');
-  }
-
   test_instanceGetter_explicitReceiver() async {
     await assertErrorsInCode('''
 class A {
@@ -232,6 +281,22 @@
         findElement.getter('foo'), 'void Function(int)');
   }
 
+  test_instanceGetter_functionTyped() async {
+    await assertNoErrorsInCode('''
+abstract class A {
+  late void Function<T>(T) foo;
+
+  bar() {
+    foo<int>;
+  }
+}
+
+''');
+
+    assertFunctionReference(findNode.functionReference('foo<int>;'),
+        findElement.getter('foo'), 'void Function(int)');
+  }
+
   test_instanceMethod() async {
     await assertNoErrorsInCode('''
 class A {
@@ -308,6 +373,8 @@
   }
 }
 ''', [
+      error(
+          CompileTimeErrorCode.DISALLOWED_TYPE_INSTANTIATION_EXPRESSION, 24, 9),
       error(CompileTimeErrorCode.UNDEFINED_SUPER_GETTER, 30, 3),
     ]);
 
@@ -321,6 +388,8 @@
   super.foo<int>;
 }
 ''', [
+      error(
+          CompileTimeErrorCode.DISALLOWED_TYPE_INSTANTIATION_EXPRESSION, 10, 9),
       error(CompileTimeErrorCode.SUPER_IN_INVALID_CONTEXT, 10, 5),
     ]);
 
@@ -538,35 +607,57 @@
   }
 
   test_localVariable() async {
-    await assertErrorsInCode('''
+    await assertNoErrorsInCode('''
 void bar(void Function<T>(T a) foo) {
   foo<int>;
 }
+''');
+
+    var reference = findNode.functionReference('foo<int>;');
+    assertFunctionReference(
+        reference, findElement.parameter('foo'), 'void Function(int)');
+  }
+
+  test_localVariable_typeVariable_boundToFunction() async {
+    await assertErrorsInCode('''
+void bar<T extends Function>(T foo) {
+  foo<int>;
+}
 ''', [
       error(
           CompileTimeErrorCode.DISALLOWED_TYPE_INSTANTIATION_EXPRESSION, 40, 3),
     ]);
 
     var reference = findNode.functionReference('foo<int>;');
-    assertFunctionReference(
-        reference, findElement.parameter('foo'), 'void Function(int)');
+    assertFunctionReference(reference, findElement.parameter('foo'), 'dynamic');
   }
 
-  test_localVariable_typeVariable() async {
-    await assertErrorsInCode('''
+  test_localVariable_typeVariable_functionTyped() async {
+    await assertNoErrorsInCode('''
 void bar<T extends void Function<U>(U)>(T foo) {
   foo<int>;
 }
-''', [
-      error(
-          CompileTimeErrorCode.DISALLOWED_TYPE_INSTANTIATION_EXPRESSION, 51, 3),
-    ]);
+''');
 
     var reference = findNode.functionReference('foo<int>;');
     assertFunctionReference(
         reference, findElement.parameter('foo'), 'void Function(int)');
   }
 
+  test_localVariable_typeVariable_nonFunction() async {
+    await assertErrorsInCode('''
+void bar<T>(T foo) {
+  foo<int>;
+}
+''', [
+      error(
+          CompileTimeErrorCode.DISALLOWED_TYPE_INSTANTIATION_EXPRESSION, 23, 3),
+    ]);
+
+    var reference = findNode.functionReference('foo<int>;');
+    assertFunctionReference(reference, findElement.parameter('foo'), 'dynamic');
+  }
+
   test_nonGenericFunction() async {
     await assertErrorsInCode('''
 class A {
@@ -587,14 +678,11 @@
   }
 
   test_otherExpression() async {
-    await assertErrorsInCode('''
+    await assertNoErrorsInCode('''
 void f(void Function<T>(T a) foo, void Function<T>(T a) bar) {
   (1 == 2 ? foo : bar)<int>;
 }
-''', [
-      error(CompileTimeErrorCode.DISALLOWED_TYPE_INSTANTIATION_EXPRESSION, 65,
-          20),
-    ]);
+''');
 
     var reference = findNode.functionReference('(1 == 2 ? foo : bar)<int>;');
     assertType(reference, 'void Function(int)');
@@ -607,8 +695,6 @@
   (1 == 2 ? foo : bar)<int, String>;
 }
 ''', [
-      error(CompileTimeErrorCode.DISALLOWED_TYPE_INSTANTIATION_EXPRESSION, 65,
-          20),
       error(
           CompileTimeErrorCode
               .WRONG_NUMBER_OF_TYPE_ARGUMENTS_ANONYMOUS_FUNCTION,
@@ -973,3 +1059,24 @@
         findNode.functionReference('foo<int>;'), null, 'dynamic');
   }
 }
+
+@reflectiveTest
+class FunctionReferenceResolutionWithoutConstructorTearoffsTest
+    extends PubPackageResolutionTest with WithoutConstructorTearoffsMixin {
+  test_localVariable() async {
+    // This code includes a disallowed type instantiation (local variable),
+    // but in the case that the experiment is not enabled, we suppress the
+    // associated error.
+    await assertErrorsInCode('''
+void bar(void Function<T>(T a) foo) {
+  foo<int>;
+}
+''', [
+      error(ParserErrorCode.EXPERIMENT_NOT_ENABLED, 43, 5),
+    ]);
+
+    var reference = findNode.functionReference('foo<int>;');
+    assertFunctionReference(
+        reference, findElement.parameter('foo'), 'void Function(int)');
+  }
+}
diff --git a/pkg/analyzer/test/src/dart/resolution/resolution.dart b/pkg/analyzer/test/src/dart/resolution/resolution.dart
index 11dce12..9e3ea8b 100644
--- a/pkg/analyzer/test/src/dart/resolution/resolution.dart
+++ b/pkg/analyzer/test/src/dart/resolution/resolution.dart
@@ -893,13 +893,15 @@
     } else if (node is FunctionExpressionInvocation) {
       return node.staticElement;
     } else if (node is FunctionReference) {
-      var function = node.function;
+      var function = node.function.unParenthesized;
       if (function is Identifier) {
         return function.staticElement;
       } else if (function is PropertyAccess) {
         return function.propertyName.staticElement;
+      } else if (function is ConstructorReference) {
+        return function.constructorName.staticElement;
       } else {
-        fail('Unsupported node: (${node.runtimeType}) $node');
+        fail('Unsupported node: (${function.runtimeType}) $function');
       }
     } else if (node is Identifier) {
       return node.staticElement;
diff --git a/pkg/analyzer/test/src/diagnostics/const_set_element_type_implements_equals_test.dart b/pkg/analyzer/test/src/diagnostics/const_set_element_type_implements_equals_test.dart
index 817d86c..5ffb6a3 100644
--- a/pkg/analyzer/test/src/diagnostics/const_set_element_type_implements_equals_test.dart
+++ b/pkg/analyzer/test/src/diagnostics/const_set_element_type_implements_equals_test.dart
@@ -111,7 +111,36 @@
     ]);
   }
 
-  test_spread_list() async {
+  test_spread_intoList_list() async {
+    await assertNoErrorsInCode(r'''
+class A {
+  const A();
+  operator ==(other) => false;
+}
+
+main() {
+  const [...[A()]];
+}
+''');
+  }
+
+  test_spread_intoList_set() async {
+    await assertErrorsInCode(r'''
+class A {
+  const A();
+  operator ==(other) => false;
+}
+
+main() {
+  const [...{A()}];
+}
+''', [
+      error(
+          CompileTimeErrorCode.CONST_SET_ELEMENT_TYPE_IMPLEMENTS_EQUALS, 79, 3),
+    ]);
+  }
+
+  test_spread_intoSet_list() async {
     await assertErrorsInCode(r'''
 class A {
   const A();
@@ -127,7 +156,7 @@
     ]);
   }
 
-  test_spread_set() async {
+  test_spread_intoSet_set() async {
     await assertErrorsInCode(r'''
 class A {
   const A();
diff --git a/pkg/analyzer/test/src/diagnostics/inconsistent_inheritance_test.dart b/pkg/analyzer/test/src/diagnostics/inconsistent_inheritance_test.dart
index 5d374e08..346a895 100644
--- a/pkg/analyzer/test/src/diagnostics/inconsistent_inheritance_test.dart
+++ b/pkg/analyzer/test/src/diagnostics/inconsistent_inheritance_test.dart
@@ -15,6 +15,22 @@
 
 @reflectiveTest
 class InconsistentInheritanceTest extends PubPackageResolutionTest {
+  /// https://github.com/dart-lang/sdk/issues/47026
+  test_class_covariantInSuper_withTwoUnrelated() async {
+    await assertErrorsInCode('''
+class D1 {}
+class D2 {}
+class D implements D1, D2 {}
+
+class A { void m(covariant D d) {} }
+abstract class B1 { void m(D1 d1); }
+abstract class B2 { void m(D2 d2); }
+class C extends A implements B1, B2 {}
+''', [
+      error(CompileTimeErrorCode.INCONSISTENT_INHERITANCE, 171, 1),
+    ]);
+  }
+
   test_class_parameterType() async {
     await assertErrorsInCode(r'''
 abstract class A {
diff --git a/pkg/analyzer/test/src/diagnostics/unnecessary_question_mark_test.dart b/pkg/analyzer/test/src/diagnostics/unnecessary_question_mark_test.dart
index 337484e..0f8bb36 100644
--- a/pkg/analyzer/test/src/diagnostics/unnecessary_question_mark_test.dart
+++ b/pkg/analyzer/test/src/diagnostics/unnecessary_question_mark_test.dart
@@ -25,7 +25,7 @@
     await assertErrorsInCode('''
 dynamic? a;
 ''', [
-      error(HintCode.UNNECESSARY_QUESTION_MARK, 0, 8),
+      error(HintCode.UNNECESSARY_QUESTION_MARK, 7, 1),
     ]);
   }
 
@@ -39,7 +39,7 @@
     await assertErrorsInCode('''
 Null? a;
 ''', [
-      error(HintCode.UNNECESSARY_QUESTION_MARK, 0, 5),
+      error(HintCode.UNNECESSARY_QUESTION_MARK, 4, 1),
     ]);
   }
 
diff --git a/pkg/analyzer/test/src/diagnostics/wrong_number_of_type_arguments_test.dart b/pkg/analyzer/test/src/diagnostics/wrong_number_of_type_arguments_test.dart
index d743c6e..bb50f9a 100644
--- a/pkg/analyzer/test/src/diagnostics/wrong_number_of_type_arguments_test.dart
+++ b/pkg/analyzer/test/src/diagnostics/wrong_number_of_type_arguments_test.dart
@@ -123,8 +123,6 @@
   (1 == 2 ? foo : bar)<int>;
 }
 ''', [
-      error(CompileTimeErrorCode.DISALLOWED_TYPE_INSTANTIATION_EXPRESSION, 60,
-          20),
       error(
           CompileTimeErrorCode
               .WRONG_NUMBER_OF_TYPE_ARGUMENTS_ANONYMOUS_FUNCTION,
diff --git a/pkg/analyzer/test/src/services/available_declarations_test.dart b/pkg/analyzer/test/src/services/available_declarations_test.dart
index a939f53..5c4c599 100644
--- a/pkg/analyzer/test/src/services/available_declarations_test.dart
+++ b/pkg/analyzer/test/src/services/available_declarations_test.dart
@@ -2537,6 +2537,61 @@
     );
   }
 
+  test_TYPE_ALIAS() async {
+    newFile('/home/test/lib/test.dart', content: r'''
+typedef A = double;
+
+@deprecated
+typedef B = double;
+
+/// aaa
+///
+/// bbb bbb
+typedef C = double;
+''');
+
+    tracker.addContext(testAnalysisContext);
+    await _doAllTrackerWork();
+
+    var library = _getLibrary('package:test/test.dart');
+    _assertDeclaration(
+      _getDeclaration(library.declarations, 'A'),
+      'A',
+      DeclarationKind.TYPE_ALIAS,
+      parameters: null,
+      parameterNames: null,
+      parameterTypes: null,
+      relevanceTags: ['ElementKind.TYPE_ALIAS', 'package:test/test.dart::A'],
+      requiredParameterCount: null,
+      returnType: null,
+    );
+    _assertDeclaration(
+      _getDeclaration(library.declarations, 'B'),
+      'B',
+      DeclarationKind.TYPE_ALIAS,
+      isDeprecated: true,
+      parameters: null,
+      parameterNames: null,
+      parameterTypes: null,
+      relevanceTags: ['ElementKind.TYPE_ALIAS', 'package:test/test.dart::B'],
+      requiredParameterCount: null,
+      returnType: null,
+    );
+    _assertDeclaration(
+      _getDeclaration(library.declarations, 'C'),
+      'C',
+      DeclarationKind.TYPE_ALIAS,
+      docSummary: 'aaa',
+      docComplete: 'aaa\n\nbbb bbb',
+      parameters: null,
+      parameterNames: null,
+      parameterTypes: null,
+      relevanceTags: ['ElementKind.TYPE_ALIAS', 'package:test/test.dart::C'],
+      requiredParameterCount: null,
+      returnType: null,
+    );
+  }
+
   test_VARIABLE() async {
     newFile('/home/test/lib/test.dart', content: r'''
 int a;
diff --git a/pkg/analyzer/tool/summary/generate.dart b/pkg/analyzer/tool/summary/generate.dart
index b7d456d..a4fc1ce 100644
--- a/pkg/analyzer/tool/summary/generate.dart
+++ b/pkg/analyzer/tool/summary/generate.dart
@@ -28,6 +28,7 @@
   if (args.length != 1) {
     print('Error: IDL path is required');
     print('usage: dart generate.dart path/to/idl.dart');
+    return;
   }
   String idlPath = args[0];
   await GeneratedContent.generateAll(
diff --git a/pkg/compiler/lib/src/constants/values.dart b/pkg/compiler/lib/src/constants/values.dart
index 9972eb6..449c2b2 100644
--- a/pkg/compiler/lib/src/constants/values.dart
+++ b/pkg/compiler/lib/src/constants/values.dart
@@ -149,7 +149,7 @@
   }
 
   @override
-  List<ConstantValue> getDependencies() => const <ConstantValue>[];
+  List<ConstantValue> getDependencies() => const [];
 
   @override
   FunctionType getType(CommonElements types) => type;
@@ -195,7 +195,7 @@
 
   // Primitive constants don't have dependencies.
   @override
-  List<ConstantValue> getDependencies() => const <ConstantValue>[];
+  List<ConstantValue> getDependencies() => const [];
 }
 
 class NullConstantValue extends PrimitiveConstantValue {
@@ -549,7 +549,7 @@
   int get hashCode => representedType.hashCode * 13;
 
   @override
-  List<ConstantValue> getDependencies() => const <ConstantValue>[];
+  List<ConstantValue> getDependencies() => const [];
 
   @override
   accept(ConstantValueVisitor visitor, arg) => visitor.visitType(this, arg);
@@ -732,7 +732,7 @@
 
   @override
   List<ConstantValue> getDependencies() {
-    List<ConstantValue> result = <ConstantValue>[];
+    List<ConstantValue> result = [];
     result.addAll(keys);
     result.addAll(values);
     return result;
@@ -802,7 +802,7 @@
   int get hashCode => cls.hashCode * 43;
 
   @override
-  List<ConstantValue> getDependencies() => const <ConstantValue>[];
+  List<ConstantValue> getDependencies() => const [];
 
   @override
   accept(ConstantValueVisitor visitor, arg) {
@@ -843,7 +843,7 @@
   get hashCode => name.hashCode * 17;
 
   @override
-  List<ConstantValue> getDependencies() => const <ConstantValue>[];
+  List<ConstantValue> getDependencies() => const [];
 
   @override
   accept(ConstantValueVisitor visitor, arg) {
@@ -876,7 +876,7 @@
   bool get isDummy => true;
 
   @override
-  List<ConstantValue> getDependencies() => const <ConstantValue>[];
+  List<ConstantValue> getDependencies() => const [];
 
   @override
   accept(ConstantValueVisitor visitor, arg) {
@@ -904,7 +904,7 @@
   const LateSentinelConstantValue._();
 
   @override
-  List<ConstantValue> getDependencies() => const <ConstantValue>[];
+  List<ConstantValue> getDependencies() => const [];
 
   @override
   accept(ConstantValueVisitor visitor, arg) {
@@ -935,7 +935,7 @@
   bool get isDummy => true;
 
   @override
-  List<ConstantValue> getDependencies() => const <ConstantValue>[];
+  List<ConstantValue> getDependencies() => const [];
 
   @override
   accept(ConstantValueVisitor visitor, arg) {
@@ -1063,7 +1063,7 @@
   }
 
   @override
-  List<ConstantValue> getDependencies() => <ConstantValue>[function];
+  List<ConstantValue> getDependencies() => [function];
 
   @override
   accept(ConstantValueVisitor visitor, arg) =>
@@ -1120,7 +1120,7 @@
   get hashCode => (referenced.hashCode * 17 + unit.hashCode) & 0x3fffffff;
 
   @override
-  List<ConstantValue> getDependencies() => <ConstantValue>[referenced];
+  List<ConstantValue> getDependencies() => [referenced];
 
   @override
   accept(ConstantValueVisitor visitor, arg) =>
@@ -1155,7 +1155,7 @@
   }
 
   @override
-  List<ConstantValue> getDependencies() => const <ConstantValue>[];
+  List<ConstantValue> getDependencies() => const [];
 
   @override
   DartType getType(CommonElements types) => types.dynamicType;
diff --git a/pkg/compiler/lib/src/deferred_load/algorithm_state.dart b/pkg/compiler/lib/src/deferred_load/algorithm_state.dart
index 3f08d13..69cd2c4 100644
--- a/pkg/compiler/lib/src/deferred_load/algorithm_state.dart
+++ b/pkg/compiler/lib/src/deferred_load/algorithm_state.dart
@@ -81,6 +81,9 @@
   }
 
   /// Returns the [EntityDataInfo] associated with a given [EntityData].
+  /// Note: In the event of a cache miss, i.e. the first time we ever see a new
+  /// [EntityData], we will add all reachable deferred roots to the queue for
+  /// processing.
   EntityDataInfo getInfo(EntityData data) {
     // Check for cached [EntityDataInfo], otherwise create a new one and
     // collect dependencies.
@@ -92,35 +95,25 @@
       data.accept(visitor);
       info = infoBuilder.info;
       entityDataToInfo[data] = info;
+
+      // This is the first time we have seen this [EntityData] before so process
+      // all deferred roots.
+      info.deferredRoots.forEach((entity, imports) {
+        for (ImportEntity deferredImport in imports) {
+          queue.addEntityData(entity, importSets.singleton(deferredImport));
+        }
+      });
     }
     return info;
   }
 
-  /// Whether to enqueue a deferred entityData.
-  ///
-  /// Due to the nature of the algorithm, some dependencies may be visited more
-  /// than once. However, we know that new deferred-imports are only discovered
-  /// when we are visiting the main output unit (size == 0) or code reachable
-  /// from a deferred import (size == 1). After that, we are rediscovering the
-  /// same nodes we have already seen.
-  bool _shouldAddDeferredEntity(ImportSet newSet) => newSet.length <= 1;
-
   /// Updates the dependencies of a given [EntityData] from [oldSet] to
   /// [newSet].
   void updateDependencies(
       EntityData entityData, ImportSet oldSet, ImportSet newSet) {
     var info = getInfo(entityData);
 
-    // Process all [DeferredEntityDataInfo]s.
-    if (_shouldAddDeferredEntity(newSet)) {
-      info.deferredRoots.forEach((entity, imports) {
-        for (ImportEntity deferredImport in imports) {
-          queue.addEntityData(entity, importSets.singleton(deferredImport));
-        }
-      });
-    }
-
-    // Process all [directEntityData].
+    // Process all direct dependencies.
     for (var entity in info.directDependencies) {
       update(entity, oldSet, newSet);
     }
diff --git a/pkg/compiler/lib/src/helpers/stats.dart b/pkg/compiler/lib/src/helpers/stats.dart
index a356c93..3459d74 100644
--- a/pkg/compiler/lib/src/helpers/stats.dart
+++ b/pkg/compiler/lib/src/helpers/stats.dart
@@ -251,14 +251,12 @@
   void end(String id) {}
 
   /// Start a stat entry for [id] with additional [data].
-  void open(String id,
-      [Map<String, dynamic> data = const <String, dynamic>{}]) {}
+  void open(String id, [Map<String, dynamic> data = const {}]) {}
 
   /// Create a stat entry for [id] with additional [data] and content created by
   /// [createChildContent].
   void child(String id,
-      [Map<String, dynamic> data = const <String, dynamic>{},
-      void createChildContent()]) {
+      [Map<String, dynamic> data = const {}, void createChildContent()]) {
     open(id, data);
     if (createChildContent != null) createChildContent();
     close(id);
@@ -293,8 +291,7 @@
       : super(output: output, examples: examples);
 
   @override
-  void open(String id,
-      [Map<String, dynamic> data = const <String, dynamic>{}]) {
+  void open(String id, [Map<String, dynamic> data = const {}]) {
     if (extraLevel > 0) return;
 
     StringBuffer sb = StringBuffer();
@@ -364,8 +361,7 @@
   }
 
   @override
-  void open(String id,
-      [Map<String, dynamic> data = const <String, dynamic>{}]) {
+  void open(String id, [Map<String, dynamic> data = const {}]) {
     StringBuffer sb = StringBuffer();
     sb.write(indentation);
     sb.write('<$id');
@@ -534,8 +530,7 @@
   Map<dynamic, Map> maps = {};
   Map<dynamic, Map<dynamic, List>> frequencyMaps = {};
   Map<dynamic, Map> setsMap = {};
-  Map<dynamic, Map<dynamic, List>> countersMap =
-      <dynamic, Map<dynamic, List>>{};
+  Map<dynamic, Map<dynamic, List>> countersMap = {};
   Map<dynamic, _StackTraceTree> traceMap = {};
   @override
   int stackTraceSampleFrequency = 1;
@@ -812,7 +807,7 @@
 Map<K, V> sortMap<K, V>(Map<K, V> map, [int compare(K a, K b)]) {
   List<K> keys = map.keys.toList();
   keys.sort(compare);
-  Map<K, V> sortedMap = Map<K, V>();
+  Map<K, V> sortedMap = {};
   keys.forEach((K k) => sortedMap[k] = map[k]);
   return sortedMap;
 }
diff --git a/pkg/compiler/lib/src/helpers/trace.dart b/pkg/compiler/lib/src/helpers/trace.dart
index 3bdb6b3..ff168df 100644
--- a/pkg/compiler/lib/src/helpers/trace.dart
+++ b/pkg/compiler/lib/src/helpers/trace.dart
@@ -118,7 +118,7 @@
     int maxColumnNoLength = 0;
 
     String stackTrace = '$s';
-    List<StackTraceLine> lines = <StackTraceLine>[];
+    List<StackTraceLine> lines = [];
     // Parse each line in the stack trace. The supported line formats from the
     // Dart VM are:
     //    #n     <method-name> (<uri>:<line-no>:<column-no>)
diff --git a/pkg/compiler/lib/src/helpers/track_map.dart b/pkg/compiler/lib/src/helpers/track_map.dart
index 8a24420..957d55c 100644
--- a/pkg/compiler/lib/src/helpers/track_map.dart
+++ b/pkg/compiler/lib/src/helpers/track_map.dart
@@ -12,11 +12,11 @@
 /// After finishing the compilaton, the histogram of track map sizes
 /// is printed but only when running in verbose mode.
 class TrackMap<K, V> implements Map<K, V> {
-  final Map<K, V> _map;
+  final Map<K, V> _map = {};
   final List _counts;
   static final Map<String, List<int>> _countsMap = {};
 
-  TrackMap._internal(this._counts) : _map = Map<K, V>();
+  TrackMap._internal(this._counts);
 
   factory TrackMap(String description) {
     List counts = _countsMap.putIfAbsent(description, () => [0]);
diff --git a/pkg/compiler/lib/src/io/code_output.dart b/pkg/compiler/lib/src/io/code_output.dart
index cc5a9b3..43e9fcc 100644
--- a/pkg/compiler/lib/src/io/code_output.dart
+++ b/pkg/compiler/lib/src/io/code_output.dart
@@ -53,9 +53,9 @@
   @override
   final String name;
   final AbstractCodeOutput codeOutput;
-  Map<int, List<SourceLocation>> markers = <int, List<SourceLocation>>{};
+  Map<int, List<SourceLocation>> markers = {};
   @override
-  Map<int, List<FrameEntry>> frameMarkers = <int, List<FrameEntry>>{};
+  Map<int, List<FrameEntry>> frameMarkers = {};
 
   _SourceLocationsImpl(this.name, this.codeOutput);
 
@@ -63,7 +63,7 @@
   void addSourceLocation(int targetOffset, SourceLocation sourceLocation) {
     assert(targetOffset <= codeOutput.length);
     List<SourceLocation> sourceLocations =
-        markers.putIfAbsent(targetOffset, () => <SourceLocation>[]);
+        markers.putIfAbsent(targetOffset, () => []);
     sourceLocations.add(sourceLocation);
   }
 
@@ -98,14 +98,13 @@
     if (other.markers.length > 0) {
       other.markers
           .forEach((int targetOffset, List<SourceLocation> sourceLocations) {
-        (markers[length + targetOffset] ??= <SourceLocation>[])
-            .addAll(sourceLocations);
+        (markers[length + targetOffset] ??= []).addAll(sourceLocations);
       });
     }
 
     if (other.frameMarkers.length > 0) {
       other.frameMarkers.forEach((int targetOffset, List<FrameEntry> frames) {
-        (frameMarkers[length + targetOffset] ??= <FrameEntry>[]).addAll(frames);
+        (frameMarkers[length + targetOffset] ??= []).addAll(frames);
       });
     }
   }
diff --git a/pkg/compiler/lib/src/io/location_provider.dart b/pkg/compiler/lib/src/io/location_provider.dart
index c16d811..b980ee7 100644
--- a/pkg/compiler/lib/src/io/location_provider.dart
+++ b/pkg/compiler/lib/src/io/location_provider.dart
@@ -18,7 +18,7 @@
 /// [CodeOutputListener] that collects line information.
 class LocationCollector extends CodeOutputListener implements LocationProvider {
   int length = 0;
-  List<int> lineStarts = <int>[0];
+  List<int> lineStarts = [0];
 
   void _collect(String text) {
     int index = 0;
diff --git a/pkg/compiler/lib/src/io/position_information.dart b/pkg/compiler/lib/src/io/position_information.dart
index e26ced0..3bcfbef 100644
--- a/pkg/compiler/lib/src/io/position_information.dart
+++ b/pkg/compiler/lib/src/io/position_information.dart
@@ -65,7 +65,7 @@
 
   @override
   List<SourceLocation> get sourceLocations {
-    List<SourceLocation> list = <SourceLocation>[];
+    List<SourceLocation> list = [];
     if (startPosition != null) {
       list.add(startPosition);
     }
@@ -166,7 +166,7 @@
   String get shortText => '';
 
   @override
-  List<SourceLocation> get sourceLocations => const <SourceLocation>[];
+  List<SourceLocation> get sourceLocations => const [];
 
   @override
   SourceSpan get sourceSpan => SourceSpan(null, null, null);
@@ -1339,12 +1339,12 @@
 }
 
 class Coverage {
-  Set<js.Node> _nodesWithInfo = Set<js.Node>();
+  Set<js.Node> _nodesWithInfo = {};
   int _nodesWithInfoCount = 0;
-  Set<js.Node> _nodesWithoutInfo = Set<js.Node>();
+  Set<js.Node> _nodesWithoutInfo = {};
   int _nodesWithoutInfoCount = 0;
-  Map<Type, int> _nodesWithoutInfoCountByType = <Type, int>{};
-  Set<js.Node> _nodesWithoutOffset = Set<js.Node>();
+  Map<Type, int> _nodesWithoutInfoCountByType = {};
+  Set<js.Node> _nodesWithoutOffset = {};
   int _nodesWithoutOffsetCount = 0;
 
   void registerNodeWithInfo(js.Node node) {
diff --git a/pkg/compiler/lib/src/io/source_map_builder.dart b/pkg/compiler/lib/src/io/source_map_builder.dart
index aad5b6e..ff0238a 100644
--- a/pkg/compiler/lib/src/io/source_map_builder.dart
+++ b/pkg/compiler/lib/src/io/source_map_builder.dart
@@ -22,7 +22,7 @@
   final Uri targetFileUri;
 
   final LocationProvider locationProvider;
-  final List<SourceMapEntry> entries = <SourceMapEntry>[];
+  final List<SourceMapEntry> entries = [];
 
   /// Extension used to deobfuscate minified names in error messages.
   final Map<String, String> minifiedGlobalNames;
@@ -58,10 +58,8 @@
   }
 
   String build() {
-    LineColumnMap<SourceMapEntry> lineColumnMap =
-        LineColumnMap<SourceMapEntry>();
-    Map<Uri, LineColumnMap<SourceMapEntry>> sourceLocationMap =
-        <Uri, LineColumnMap<SourceMapEntry>>{};
+    LineColumnMap<SourceMapEntry> lineColumnMap = LineColumnMap();
+    Map<Uri, LineColumnMap<SourceMapEntry>> sourceLocationMap = {};
     entries.forEach((SourceMapEntry sourceMapEntry) {
       Location kernelLocation =
           locationProvider.getLocation(sourceMapEntry.targetOffset);
@@ -364,12 +362,12 @@
 
 /// Map from line/column pairs to lists of [T] elements.
 class LineColumnMap<T> {
-  Map<int, Map<int, List<T>>> _map = <int, Map<int, List<T>>>{};
+  Map<int, Map<int, List<T>>> _map = {};
 
   /// Returns the list of elements associated with ([line],[column]).
   List<T> _getList(int line, int column) {
-    Map<int, List<T>> lineMap = _map[line] ??= <int, List<T>>{};
-    return lineMap[column] ??= <T>[];
+    Map<int, List<T>> lineMap = _map[line] ??= {};
+    return lineMap[column] ??= [];
   }
 
   /// Adds [element] to the end of the list of elements associated with
@@ -438,7 +436,7 @@
 
 /// Map from [T] elements to assigned indices.
 class IndexMap<T> {
-  Map<T, int> map = <T, int>{};
+  Map<T, int> map = {};
 
   /// Register [element] and returns its index.
   int register(T element) {
diff --git a/pkg/compiler/lib/src/js/rewrite_async.dart b/pkg/compiler/lib/src/js/rewrite_async.dart
index 03f8c93..69a999f 100644
--- a/pkg/compiler/lib/src/js/rewrite_async.dart
+++ b/pkg/compiler/lib/src/js/rewrite_async.dart
@@ -28,13 +28,13 @@
 abstract class AsyncRewriterBase extends js.NodeVisitor {
   // Local variables are hoisted to the top of the function, so they are
   // collected here.
-  List<js.VariableDeclaration> localVariables = <js.VariableDeclaration>[];
+  List<js.VariableDeclaration> localVariables = [];
 
-  Map<js.Node, int> continueLabels = Map<js.Node, int>();
-  Map<js.Node, int> breakLabels = Map<js.Node, int>();
+  Map<js.Node, int> continueLabels = {};
+  Map<js.Node, int> breakLabels = {};
 
   /// The label of a finally part.
-  Map<js.Block, int> finallyLabels = Map<js.Block, int>();
+  Map<js.Block, int> finallyLabels = {};
 
   /// The label of the catch handler of a [js.Try] or a [js.Fun] or [js.Catch].
   ///
@@ -45,7 +45,7 @@
   /// - The handler of a [js.Catch] is a synthetic handler that ensures the
   ///   right finally blocks are run if an error is thrown inside a
   ///   catch-handler.
-  Map<js.Node, int> handlerLabels = Map<js.Node, int>();
+  Map<js.Node, int> handlerLabels = {};
 
   int exitLabel;
   int rethrowLabel;
@@ -64,13 +64,13 @@
   ///
   /// When jumping to a target it is necessary to visit all finallies that
   /// are on the way to target (i.e. more nested than the jump target).
-  List<js.Node> jumpTargets = <js.Node>[];
+  List<js.Node> jumpTargets = [];
 
-  List<int> continueStack = <int>[];
-  List<int> breakStack = <int>[];
-  List<int> returnStack = <int>[];
+  List<int> continueStack = [];
+  List<int> breakStack = [];
+  List<int> returnStack = [];
 
-  List<Pair<String, String>> variableRenamings = <Pair<String, String>>[];
+  List<Pair<String, String>> variableRenamings = [];
 
   PreTranslationAnalysis analysis;
 
@@ -160,7 +160,7 @@
   String selfName;
 
   /// The rewritten code can take type arguments. These are added if needed.
-  List<String> typeArgumentNames = <String>[];
+  List<String> typeArgumentNames = [];
 
   final DiagnosticReporter reporter;
   // For error reporting only.
@@ -176,7 +176,7 @@
   int currentTempVarIndex = 0;
   // The highest temporary variable index ever in use in this function.
   int tempVarHighWaterMark = 0;
-  Map<int, js.Expression> tempVarNames = Map<int, js.Expression>();
+  Map<int, js.Expression> tempVarNames = {};
 
   bool get isAsync => false;
   bool get isSyncStar => false;
@@ -252,7 +252,7 @@
     if (types == null) {
       String name = freshName('type');
       typeArgumentNames.add(name);
-      return <js.Expression>[js.VariableUse(name)];
+      return [js.VariableUse(name)];
     }
     return types;
   }
@@ -265,7 +265,7 @@
       LinkedHashMap<int, List<js.Statement>>();
 
   /// Description of each label for readability of the non-minified output.
-  Map<int, String> labelComments = Map<int, String>();
+  Map<int, String> labelComments = {};
 
   /// True if the function has any try blocks containing await.
   bool hasTryBlocks = false;
@@ -303,7 +303,7 @@
   /// Each buffer ends up as its own case part in the big state-switch.
   void beginLabel(int label) {
     assert(!labelledParts.containsKey(label));
-    currentStatementBuffer = <js.Statement>[];
+    currentStatementBuffer = [];
     labelledParts[label] = currentStatementBuffer;
     addStatement(js.Comment(labelComments[label]));
   }
@@ -320,7 +320,7 @@
   ///
   /// Also inserts a comment describing the label if available.
   js.Block gotoAndBreak(int label, SourceInformation sourceInformation) {
-    List<js.Statement> statements = <js.Statement>[];
+    List<js.Statement> statements = [];
     if (labelComments.containsKey(label)) {
       statements.add(js.Comment("goto ${labelComments[label]}"));
     }
@@ -723,7 +723,7 @@
     rewrittenBody = js.js
         .statement('while (true) {#}', rewrittenBody)
         .withSourceInformation(bodySourceInformation);
-    List<js.VariableInitialization> variables = <js.VariableInitialization>[];
+    List<js.VariableInitialization> variables = [];
 
     variables.add(
         _makeVariableInitializer(goto, js.number(0), bodySourceInformation));
@@ -736,7 +736,7 @@
     }
     if (analysis.hasFinally || (isAsyncStar && analysis.hasYield)) {
       variables.add(_makeVariableInitializer(
-          next, js.ArrayInitializer(<js.Expression>[]), bodySourceInformation));
+          next, js.ArrayInitializer([]), bodySourceInformation));
     }
     if (analysis.hasThis && !isSyncStar) {
       // Sync* functions must remember `this` on the level of the outer
@@ -1007,7 +1007,7 @@
     // Compute a stack of all the 'finally' nodes that must be visited before
     // the jump.
     // The bottom of the stack is the label where the jump goes to.
-    List<int> jumpStack = <int>[];
+    List<int> jumpStack = [];
     for (js.Node node in jumpTargets.reversed) {
       if (finallyLabels[node] != null) {
         jumpStack.add(finallyLabels[node]);
@@ -1138,7 +1138,7 @@
   List<js.Statement> translateToStatementSequence(js.Statement node) {
     assert(!shouldTransform(node));
     List<js.Statement> oldBuffer = currentStatementBuffer;
-    currentStatementBuffer = <js.Statement>[];
+    currentStatementBuffer = [];
     List<js.Statement> resultBuffer = currentStatementBuffer;
     visitStatement(node);
     currentStatementBuffer = oldBuffer;
@@ -1455,7 +1455,7 @@
     } else {
       bool hasDefault = false;
       int i = 0;
-      List<js.SwitchClause> clauses = <js.SwitchClause>[];
+      List<js.SwitchClause> clauses = [];
       for (js.SwitchClause clause in node.cases) {
         if (clause is js.Case) {
           labels[i] = newLabel("case");
@@ -1511,7 +1511,7 @@
   }
 
   List<int> _finalliesUpToAndEnclosingHandler() {
-    List<int> result = <int>[];
+    List<int> result = [];
     for (int i = jumpTargets.length - 1; i >= 0; i--) {
       js.Node node = jumpTargets[i];
       int handlerLabel = handlerLabels[node];
@@ -1845,7 +1845,7 @@
   @override
   Iterable<js.VariableInitialization> variableInitializations(
       SourceInformation sourceInformation) {
-    List<js.VariableInitialization> variables = <js.VariableInitialization>[];
+    List<js.VariableInitialization> variables = [];
     variables.add(_makeVariableInitializer(
         completer,
         js.js('#(#)', [
@@ -2009,9 +2009,8 @@
     // the parameters.
     // TODO(sigurdm): We only need to do this copying for parameters that are
     // mutated.
-    List<js.VariableInitialization> declarations =
-        <js.VariableInitialization>[];
-    List<js.Parameter> renamedParameters = <js.Parameter>[];
+    List<js.VariableInitialization> declarations = [];
+    List<js.Parameter> renamedParameters = [];
     for (js.Parameter parameter in parameters) {
       String name = parameter.name;
       String renamedName = freshName(name);
@@ -2118,7 +2117,7 @@
   @override
   Iterable<js.VariableInitialization> variableInitializations(
       SourceInformation sourceInformation) {
-    List<js.VariableInitialization> variables = <js.VariableInitialization>[];
+    List<js.VariableInitialization> variables = [];
     return variables;
   }
 
@@ -2217,7 +2216,7 @@
     // Find all the finally blocks that should be performed if the stream is
     // canceled during the yield.
     // At the bottom of the stack is the return label.
-    List<int> enclosingFinallyLabels = <int>[exitLabel];
+    List<int> enclosingFinallyLabels = [exitLabel];
     enclosingFinallyLabels.addAll(jumpTargets
         .where((js.Node node) => finallyLabels[node] != null)
         .map((js.Node node) => finallyLabels[node]));
@@ -2383,7 +2382,7 @@
   @override
   Iterable<js.VariableInitialization> variableInitializations(
       SourceInformation sourceInformation) {
-    List<js.VariableInitialization> variables = <js.VariableInitialization>[];
+    List<js.VariableInitialization> variables = [];
     variables.add(_makeVariableInitializer(
         controller,
         js.js('#(#, #)', [
@@ -2428,12 +2427,12 @@
 /// - a set of used names.
 /// - if any [This]-expressions are used.
 class PreTranslationAnalysis extends js.BaseVisitor<bool> {
-  Set<js.Node> hasAwaitOrYield = Set<js.Node>();
+  Set<js.Node> hasAwaitOrYield = {};
 
-  Map<js.Node, js.Node> targets = Map<js.Node, js.Node>();
-  List<js.Node> loopsAndSwitches = <js.Node>[];
-  List<js.LabeledStatement> labelledStatements = <js.LabeledStatement>[];
-  Set<String> usedNames = Set<String>();
+  Map<js.Node, js.Node> targets = {};
+  List<js.Node> loopsAndSwitches = [];
+  List<js.LabeledStatement> labelledStatements = [];
+  Set<String> usedNames = {};
 
   bool hasExplicitReturns = false;
 
diff --git a/pkg/compiler/lib/src/kernel/dart2js_target.dart b/pkg/compiler/lib/src/kernel/dart2js_target.dart
index e60b4d0..4510755 100644
--- a/pkg/compiler/lib/src/kernel/dart2js_target.dart
+++ b/pkg/compiler/lib/src/kernel/dart2js_target.dart
@@ -21,6 +21,8 @@
 
 import '../options.dart';
 import 'invocation_mirror_constants.dart';
+import 'transformations/clone_mixin_methods_with_super.dart' as transformMixins
+    show transformLibraries;
 import 'transformations/lowering.dart' as lowering show transformLibraries;
 
 const Iterable<String> _allowedDartSchemePaths = [
@@ -169,6 +171,8 @@
     }
     lowering.transformLibraries(libraries, coreTypes, hierarchy, options);
     logger?.call("Lowering transformations performed");
+    transformMixins.transformLibraries(libraries);
+    logger?.call("Mixin transformations performed");
   }
 
   @override
diff --git a/pkg/compiler/lib/src/kernel/env.dart b/pkg/compiler/lib/src/kernel/env.dart
index 7474592..8b0b096 100644
--- a/pkg/compiler/lib/src/kernel/env.dart
+++ b/pkg/compiler/lib/src/kernel/env.dart
@@ -8,8 +8,6 @@
     show isRedirectingFactory, isRedirectingFactoryField;
 
 import 'package:kernel/ast.dart' as ir;
-import 'package:kernel/clone.dart';
-import 'package:kernel/type_algebra.dart';
 import 'package:kernel/type_environment.dart' as ir;
 import 'package:collection/collection.dart' show mergeSort; // a stable sort.
 
@@ -403,47 +401,9 @@
     int mixinMemberCount = 0;
 
     if (cls.mixedInClass != null) {
-      Map<ir.Name, ir.Procedure> existingNonSetters;
-      Map<ir.Name, ir.Procedure> existingSetters;
-
-      void ensureExistingProcedureMaps() {
-        if (existingNonSetters == null) {
-          existingNonSetters = {};
-          existingSetters = {};
-          for (ir.Procedure procedure in cls.procedures) {
-            if (procedure.kind == ir.ProcedureKind.Setter) {
-              existingSetters[procedure.name] = procedure;
-            } else {
-              existingNonSetters[procedure.name] = procedure;
-            }
-          }
-        }
-      }
-
-      CloneVisitorWithMembers cloneVisitor;
       for (ir.Field field in cls.mixedInClass.mixin.fields) {
         if (field.containsSuperCalls) {
           _isMixinApplicationWithMembers = true;
-          cloneVisitor ??= new MixinApplicationCloner(cls,
-              typeSubstitution: getSubstitutionMap(cls.mixedInType));
-          // TODO(jensj): Provide a "referenceFrom" if we need to support
-          // the incremental compiler.
-          ensureExistingProcedureMaps();
-          ir.Procedure existingGetter = existingNonSetters[field.name];
-          ir.Procedure existingSetter = existingSetters[field.name];
-          cls.addField(cloneVisitor.cloneField(
-              field, existingGetter?.reference, existingSetter?.reference));
-          // TODO(johnniwinther): We need to unbind the canonical names before
-          // serializing these references since the canonical names refer to
-          // @getters and @setters instead of @fields and @fields=. This will
-          // not be needed if stop using @fields/@fields= in favor of
-          // @getters/@setters in general.
-          if (existingGetter != null) {
-            cls.procedures.remove(existingGetter);
-          }
-          if (existingSetter != null) {
-            cls.procedures.remove(existingSetter);
-          }
           continue;
         }
         addField(field, includeStatic: false);
@@ -451,20 +411,6 @@
       for (ir.Procedure procedure in cls.mixedInClass.mixin.procedures) {
         if (procedure.containsSuperCalls) {
           _isMixinApplicationWithMembers = true;
-          cloneVisitor ??= new MixinApplicationCloner(cls,
-              typeSubstitution: getSubstitutionMap(cls.mixedInType));
-          // TODO(jensj): Provide a "referenceFrom" if we need to support
-          // the incremental compiler.
-          ensureExistingProcedureMaps();
-          ir.Procedure existingProcedure =
-              procedure.kind == ir.ProcedureKind.Setter
-                  ? existingSetters[procedure.name]
-                  : existingNonSetters[procedure.name];
-          if (existingProcedure != null) {
-            cls.procedures.remove(existingProcedure);
-          }
-          cls.addProcedure(cloneVisitor.cloneProcedure(
-              procedure, existingProcedure?.reference));
           continue;
         }
         addProcedure(procedure,
diff --git a/pkg/compiler/lib/src/kernel/transformations/clone_mixin_methods_with_super.dart b/pkg/compiler/lib/src/kernel/transformations/clone_mixin_methods_with_super.dart
new file mode 100644
index 0000000..dc7ded8
--- /dev/null
+++ b/pkg/compiler/lib/src/kernel/transformations/clone_mixin_methods_with_super.dart
@@ -0,0 +1,93 @@
+// Copyright (c) 2021, 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.12
+
+import 'package:kernel/ast.dart';
+import 'package:kernel/clone.dart';
+import 'package:kernel/type_algebra.dart';
+
+/// Transforms the libraries in [libraries] by cloning any mixed in methods that
+/// use super.
+void transformLibraries(List<Library> libraries) {
+  _CloneMixinMethodsWithSuper.transform(libraries);
+}
+
+class _CloneMixinMethodsWithSuper {
+  /// Transform the given new [libraries].  It is expected that all other
+  /// libraries have already been transformed.
+  static void transform(List<Library> libraries) {
+    // Clone any mixed in methods that uses super.
+    var processedClasses = new Set<Class>();
+    for (var library in libraries) {
+      for (var cls in library.classes) {
+        if (processedClasses.add(cls)) {
+          transformClass(cls);
+        }
+      }
+    }
+  }
+
+  /// Transforms a given class by cloning any mixed in methods that use super.
+  static void transformClass(Class cls) {
+    var mixedInClass = cls.mixedInClass;
+    if (mixedInClass == null) return;
+    var mixedInType = cls.mixedInType!;
+    bool hasProcedureMaps = false;
+    Map<Name, Procedure> existingNonSetters = {};
+    Map<Name, Procedure> existingSetters = {};
+
+    void ensureExistingProcedureMaps() {
+      if (hasProcedureMaps) return;
+      for (Procedure procedure in cls.procedures) {
+        if (procedure.kind == ProcedureKind.Setter) {
+          existingSetters[procedure.name] = procedure;
+        } else {
+          existingNonSetters[procedure.name] = procedure;
+        }
+      }
+      hasProcedureMaps = true;
+    }
+
+    CloneVisitorWithMembers? cloneVisitor;
+    for (var field in mixedInClass.mixin.fields) {
+      if (field.containsSuperCalls) {
+        cloneVisitor ??= MixinApplicationCloner(cls,
+            typeSubstitution: getSubstitutionMap(mixedInType));
+        // TODO(jensj): Provide a "referenceFrom" if we need to support
+        // the incremental compiler.
+        ensureExistingProcedureMaps();
+        Procedure? existingGetter = existingNonSetters[field.name];
+        Procedure? existingSetter = existingSetters[field.name];
+        cls.addField(cloneVisitor.cloneField(
+            field, existingGetter?.reference, existingSetter?.reference));
+        if (existingGetter != null) {
+          cls.procedures.remove(existingGetter);
+        }
+        if (existingSetter != null) {
+          cls.procedures.remove(existingSetter);
+        }
+        continue;
+      }
+    }
+    for (var procedure in mixedInClass.mixin.procedures) {
+      if (procedure.containsSuperCalls) {
+        cloneVisitor ??= MixinApplicationCloner(cls,
+            typeSubstitution: getSubstitutionMap(mixedInType));
+        // TODO(jensj): Provide a "referenceFrom" if we need to support
+        // the incremental compiler.
+        ensureExistingProcedureMaps();
+        Procedure? existingProcedure = procedure.kind == ProcedureKind.Setter
+            ? existingSetters[procedure.name]
+            : existingNonSetters[procedure.name];
+        if (existingProcedure != null) {
+          cls.procedures.remove(existingProcedure);
+        }
+        cls.addProcedure(cloneVisitor.cloneProcedure(
+            procedure, existingProcedure?.reference));
+        continue;
+      }
+    }
+  }
+}
diff --git a/pkg/compiler/lib/src/ssa/builder_kernel.dart b/pkg/compiler/lib/src/ssa/builder_kernel.dart
index b2839cb..e74ad8a 100644
--- a/pkg/compiler/lib/src/ssa/builder_kernel.dart
+++ b/pkg/compiler/lib/src/ssa/builder_kernel.dart
@@ -3307,27 +3307,18 @@
     SourceInformation sourceInformation =
         _sourceInformationBuilder.buildGet(node);
     ir.DartType type = node.type;
-    if (type is ir.InterfaceType ||
-        type is ir.DynamicType ||
-        type is ir.NeverType ||
-        type is ir.TypedefType ||
-        type is ir.FunctionType ||
-        type is ir.FutureOrType) {
+    DartType dartType = _elementMap.getDartType(type);
+    if (!dartType.containsTypeVariables) {
       ConstantValue constant =
           _elementMap.getConstantValue(_memberContextNode, node);
       stack.add(graph.addConstant(constant, closedWorld,
           sourceInformation: sourceInformation));
       return;
     }
-    assert(
-        type is ir.TypeParameterType,
-        failedAt(
-            CURRENT_ELEMENT_SPANNABLE, "Unexpected type literal ${node}."));
     // For other types (e.g. TypeParameterType, function types from expanded
     // typedefs), look-up or construct a reified type representation and convert
     // to a RuntimeType.
 
-    DartType dartType = _elementMap.getDartType(type);
     dartType = localsHandler.substInContext(dartType);
     HInstruction value = _typeBuilder.analyzeTypeArgument(
         dartType, sourceElement,
diff --git a/pkg/compiler/lib/src/util/command_line.dart b/pkg/compiler/lib/src/util/command_line.dart
index 8e27fc3..e1da5b8 100644
--- a/pkg/compiler/lib/src/util/command_line.dart
+++ b/pkg/compiler/lib/src/util/command_line.dart
@@ -29,7 +29,7 @@
 ///     // abc
 ///     // with " 'spaces
 List<String> splitLine(String line, {bool windows = false}) {
-  List<String> result = <String>[];
+  List<String> result = [];
   bool inQuotes = false;
   String? openingQuote;
   StringBuffer buffer = StringBuffer();
diff --git a/pkg/front_end/lib/src/api_prototype/experimental_flags.dart b/pkg/front_end/lib/src/api_prototype/experimental_flags.dart
index 9220790..379c5ac 100644
--- a/pkg/front_end/lib/src/api_prototype/experimental_flags.dart
+++ b/pkg/front_end/lib/src/api_prototype/experimental_flags.dart
@@ -47,19 +47,11 @@
 ///
 /// If [explicitExperimentalFlags] is `null` or doesn't contain [flag], the
 /// default value from [defaultExperimentalFlags] is returned.
-///
-/// If [flag] is marked as expired in [expiredExperimentalFlags], the value from
-/// [defaultExperimentalFlags] is always returned.
 bool isExperimentEnabled(ExperimentalFlag flag,
     {Map<ExperimentalFlag, bool>? explicitExperimentalFlags,
     Map<ExperimentalFlag, bool>? defaultExperimentFlagsForTesting}) {
   assert(defaultExperimentalFlags.containsKey(flag),
       "No default value for $flag.");
-  assert(expiredExperimentalFlags.containsKey(flag),
-      "No expired value for $flag.");
-  if (expiredExperimentalFlags[flag]!) {
-    return defaultExperimentalFlags[flag]!;
-  }
   bool? enabled;
   if (explicitExperimentalFlags != null) {
     enabled = explicitExperimentalFlags[flag];
@@ -81,9 +73,6 @@
 /// If [allowedExperimentalFlags] is `null` [defaultAllowedExperimentalFlags] is
 /// used for the per library flag state.
 ///
-/// If [flag] is marked as expired in [expiredExperimentalFlags], the value from
-/// [defaultExperimentalFlags] is always returned.
-///
 /// The canonical uri, also known as the import uri, is the absolute uri that
 /// defines the identity of a library, for instance `dart:core`, `package:foo`,
 /// or `file:///path/dir/file.dart`.
@@ -93,11 +82,6 @@
     AllowedExperimentalFlags? allowedExperimentalFlags}) {
   assert(defaultExperimentalFlags.containsKey(flag),
       "No default value for $flag.");
-  assert(expiredExperimentalFlags.containsKey(flag),
-      "No expired value for $flag.");
-  if (expiredExperimentalFlags[flag]!) {
-    return defaultExperimentalFlags[flag]!;
-  }
   bool? enabled;
   if (explicitExperimentalFlags != null) {
     enabled = explicitExperimentalFlags[flag];
@@ -190,11 +174,6 @@
     Map<ExperimentalFlag, Version>? experimentReleasedVersionForTesting}) {
   assert(defaultExperimentalFlags.containsKey(flag),
       "No default value for $flag.");
-  assert(expiredExperimentalFlags.containsKey(flag),
-      "No expired value for $flag.");
-  if (expiredExperimentalFlags[flag]!) {
-    return defaultExperimentalFlags[flag]!;
-  }
 
   bool? enabledByDefault;
   if (defaultExperimentFlagsForTesting != null) {
diff --git a/pkg/front_end/lib/src/fasta/builder/constructor_builder.dart b/pkg/front_end/lib/src/fasta/builder/constructor_builder.dart
index 4d0f32a..e595184 100644
--- a/pkg/front_end/lib/src/fasta/builder/constructor_builder.dart
+++ b/pkg/front_end/lib/src/fasta/builder/constructor_builder.dart
@@ -271,7 +271,7 @@
               library, classBuilder!, this, classBuilder!.scope, fileUri);
       bodyBuilder.constantContext = ConstantContext.required;
       bodyBuilder.parseInitializers(beginInitializers!);
-      bodyBuilder.resolveRedirectingFactoryTargets();
+      bodyBuilder.performBacklogComputations(delayedActionPerformers);
     }
     beginInitializers = null;
     if (isConst && isPatch) {
diff --git a/pkg/front_end/lib/src/fasta/builder/field_builder.dart b/pkg/front_end/lib/src/fasta/builder/field_builder.dart
index 9493fde..e4761c0 100644
--- a/pkg/front_end/lib/src/fasta/builder/field_builder.dart
+++ b/pkg/front_end/lib/src/fasta/builder/field_builder.dart
@@ -434,10 +434,7 @@
         initializer = wrapper.operand;
       }
       buildBody(coreTypes, initializer);
-      bodyBuilder.resolveRedirectingFactoryTargets();
-      if (bodyBuilder.hasDelayedActions) {
-        delayedActionPerformers.add(bodyBuilder);
-      }
+      bodyBuilder.performBacklogComputations(delayedActionPerformers);
     }
     _constInitializerToken = null;
   }
diff --git a/pkg/front_end/lib/src/fasta/builder/formal_parameter_builder.dart b/pkg/front_end/lib/src/fasta/builder/formal_parameter_builder.dart
index e4fb075..c5917c2 100644
--- a/pkg/front_end/lib/src/fasta/builder/formal_parameter_builder.dart
+++ b/pkg/front_end/lib/src/fasta/builder/formal_parameter_builder.dart
@@ -225,10 +225,7 @@
             bodyBuilder.transformCollections,
             library.library);
         initializerWasInferred = true;
-        bodyBuilder.resolveRedirectingFactoryTargets();
-        if (bodyBuilder.hasDelayedActions) {
-          delayedActionPerformers.add(bodyBuilder);
-        }
+        bodyBuilder.performBacklogComputations(delayedActionPerformers);
       }
     }
     initializerToken = null;
diff --git a/pkg/front_end/lib/src/fasta/builder/metadata_builder.dart b/pkg/front_end/lib/src/fasta/builder/metadata_builder.dart
index c4497b1..80ed54d 100644
--- a/pkg/front_end/lib/src/fasta/builder/metadata_builder.dart
+++ b/pkg/front_end/lib/src/fasta/builder/metadata_builder.dart
@@ -41,6 +41,6 @@
           bodyBuilder.parseAnnotation(annotationBuilder.beginToken));
     }
     bodyBuilder.inferAnnotations(parent, parent.annotations);
-    bodyBuilder.resolveRedirectingFactoryTargets();
+    bodyBuilder.performBacklogComputations();
   }
 }
diff --git a/pkg/front_end/lib/src/fasta/kernel/body_builder.dart b/pkg/front_end/lib/src/fasta/kernel/body_builder.dart
index df886e2..89d2a68 100644
--- a/pkg/front_end/lib/src/fasta/kernel/body_builder.dart
+++ b/pkg/front_end/lib/src/fasta/kernel/body_builder.dart
@@ -708,8 +708,8 @@
       if (name?.isNotEmpty ?? false) {
         Token period = periodBeforeName ?? beginToken.next!.next!;
         Generator generator = expression as Generator;
-        expression = generator.buildPropertyAccess(
-            new IncompletePropertyAccessGenerator(
+        expression = generator.buildSelectorAccess(
+            new PropertySelector(
                 this, period.next!, new Name(name!, libraryBuilder.nameOrigin)),
             period.next!.offset,
             false);
@@ -797,7 +797,6 @@
     assert(checkState(beginToken, [ValueKinds.Integer]));
   }
 
-  @override
   void finishFields() {
     debugEvent("finishFields");
     assert(checkState(null, [/*field count*/ ValueKinds.Integer]));
@@ -872,11 +871,36 @@
     }
     pop(); // Annotations.
 
-    resolveRedirectingFactoryTargets();
-    finishVariableMetadata();
+    performBacklogComputations();
     assert(stack.length == 0);
   }
 
+  /// Perform delayed computations that were put on back log during body
+  /// building.
+  ///
+  /// Back logged computations include resolution of redirecting factory
+  /// invocations and checking of typedef types.
+  void performBacklogComputations(
+      [List<DelayedActionPerformer>? delayedActionPerformers]) {
+    _finishVariableMetadata();
+    _unaliasTypeAliasedConstructorInvocations();
+    _unaliasTypeAliasedFactoryInvocations();
+    _resolveRedirectingFactoryTargets(
+        redirectingFactoryInvocations, delayedRedirectingFactoryInvocations);
+    libraryBuilder.checkUncheckedTypedefTypes(typeEnvironment);
+    if (hasDelayedActions) {
+      assert(
+          delayedActionPerformers != null,
+          "Body builder has delayed actions that cannot be performed: "
+          "$delayedRedirectingFactoryInvocations");
+      delayedActionPerformers?.add(this);
+    }
+  }
+
+  void finishRedirectingFactoryBody() {
+    performBacklogComputations();
+  }
+
   @override
   void endMember() {
     debugEvent("Member");
@@ -1023,7 +1047,6 @@
     }
   }
 
-  @override
   void finishFunction(
       FormalParameters? formals, AsyncMarker asyncModifier, Statement? body) {
     debugEvent("finishFunction");
@@ -1159,9 +1182,7 @@
       }
     }
 
-    resolveRedirectingFactoryTargets();
-    finishVariableMetadata();
-    libraryBuilder.checkUncheckedTypedefTypes(typeEnvironment);
+    performBacklogComputations();
   }
 
   void checkAsyncReturnType(AsyncMarker asyncModifier, DartType returnType,
@@ -1257,14 +1278,6 @@
     return true;
   }
 
-  // TODO(eernst): Rename this method now that it handles more tasks.
-  void resolveRedirectingFactoryTargets() {
-    _unaliasTypeAliasedConstructorInvocations();
-    _unaliasTypeAliasedFactoryInvocations();
-    _resolveRedirectingFactoryTargets(
-        redirectingFactoryInvocations, delayedRedirectingFactoryInvocations);
-  }
-
   /// Return an [Expression] resolving the argument invocation.
   ///
   /// The arguments specify the [StaticInvocation] whose `.target` is
@@ -1439,7 +1452,7 @@
     return delayedRedirectingFactoryInvocations.isNotEmpty;
   }
 
-  void finishVariableMetadata() {
+  void _finishVariableMetadata() {
     List<VariableDeclaration>? variablesWithMetadata =
         this.variablesWithMetadata;
     this.variablesWithMetadata = null;
@@ -1488,8 +1501,7 @@
     } else {
       temporaryParent = new ListLiteral(expressions);
     }
-    resolveRedirectingFactoryTargets();
-    finishVariableMetadata();
+    performBacklogComputations();
     return temporaryParent != null ? temporaryParent.expressions : expressions;
   }
 
@@ -1554,7 +1566,7 @@
         "Previously implicit assumption about inferFunctionBody "
         "not returning anything different.");
 
-    resolveRedirectingFactoryTargets();
+    performBacklogComputations();
     libraryBuilder.loader.transformPostInference(fakeReturn,
         transformSetLiterals, transformCollections, libraryBuilder.library);
 
@@ -1815,9 +1827,9 @@
     } else if (receiver is Identifier) {
       Name name = new Name(receiver.name, libraryBuilder.nameOrigin);
       if (arguments == null) {
-        push(new IncompletePropertyAccessGenerator(this, beginToken, name));
+        push(new PropertySelector(this, beginToken, name));
       } else {
-        push(new SendAccessGenerator(
+        push(new InvocationSelector(
             this, beginToken, name, typeArguments, arguments as Arguments,
             isTypeArgumentsInForest: isInForest));
       }
@@ -1833,7 +1845,8 @@
         ValueKinds.Expression,
         ValueKinds.Generator,
         ValueKinds.Initializer,
-        ValueKinds.ProblemBuilder
+        ValueKinds.ProblemBuilder,
+        ValueKinds.Selector,
       ])
     ]));
   }
@@ -1962,6 +1975,7 @@
         ValueKinds.Expression,
         ValueKinds.Generator,
         ValueKinds.ProblemBuilder,
+        ValueKinds.Selector,
       ]),
     ]));
     debugEvent("BinaryExpression");
@@ -2102,6 +2116,7 @@
       unionOfKinds([
         ValueKinds.Expression,
         ValueKinds.Generator,
+        ValueKinds.Selector,
       ]),
       unionOfKinds([
         ValueKinds.Expression,
@@ -2111,7 +2126,7 @@
       ]),
     ]));
     Object? send = pop();
-    if (send is IncompleteSendGenerator) {
+    if (send is Selector) {
       push(send.withReceiver(pop(), token.charOffset, isNullAware: true));
     } else {
       pop();
@@ -2130,24 +2145,28 @@
 
   void doDotOrCascadeExpression(Token token) {
     assert(checkState(token, <ValueKind>[
-      unionOfKinds([
+      /* after . or .. */ unionOfKinds([
         ValueKinds.Expression,
         ValueKinds.Generator,
+        ValueKinds.Selector,
+      ]),
+      /* before . or .. */ unionOfKinds([
+        ValueKinds.Expression,
+        ValueKinds.Generator,
+        ValueKinds.ProblemBuilder,
+        ValueKinds.Initializer,
       ]),
     ]));
     Object? send = pop();
-    if (send is IncompleteSendGenerator) {
-      assert(checkState(token, <ValueKind>[
-        unionOfKinds([
-          ValueKinds.Expression,
-          ValueKinds.Generator,
-          ValueKinds.ProblemBuilder,
-          ValueKinds.Initializer,
-        ]),
-      ]));
+    if (send is Selector) {
       Object? receiver = optional(".", token) ? pop() : popForValue();
       push(send.withReceiver(receiver, token.charOffset));
+    } else if (send is IncompleteErrorGenerator) {
+      // Pop the "receiver" and push the error.
+      pop();
+      push(send);
     } else {
+      // Pop the "receiver" and push the error.
       pop();
       token = token.next!;
       push(buildProblem(fasta.templateExpectedIdentifier.withArguments(token),
@@ -4420,8 +4439,8 @@
             ConstructorReferenceContext.Implicit) {
           type = qualifier.qualifiedLookup(qualified.token);
         } else {
-          type = qualifier.buildPropertyAccess(
-              new IncompletePropertyAccessGenerator(this, qualified.token,
+          type = qualifier.buildSelectorAccess(
+              new PropertySelector(this, qualified.token,
                   new Name(qualified.name, libraryBuilder.nameOrigin)),
               qualified.token.charOffset,
               false);
@@ -6780,8 +6799,12 @@
           allowPotentiallyConstantType: allowPotentiallyConstantType);
       if (message == null) return unresolved;
       return new UnresolvedType(
-          new NamedTypeBuilder(typeParameter.name!, builder.nullabilityBuilder,
-              /* arguments = */ null, unresolved.fileUri, unresolved.charOffset)
+          new NamedTypeBuilder(
+              typeParameter.name!,
+              builder.nullabilityBuilder,
+              /* arguments = */ null,
+              unresolved.fileUri,
+              unresolved.charOffset)
             ..bind(new InvalidTypeDeclarationBuilder(
                 typeParameter.name!, message)),
           unresolved.charOffset,
diff --git a/pkg/front_end/lib/src/fasta/kernel/expression_generator.dart b/pkg/front_end/lib/src/fasta/kernel/expression_generator.dart
index b244b87..629ab65 100644
--- a/pkg/front_end/lib/src/fasta/kernel/expression_generator.dart
+++ b/pkg/front_end/lib/src/fasta/kernel/expression_generator.dart
@@ -219,9 +219,9 @@
       int offset, List<UnresolvedType>? typeArguments, Arguments arguments,
       {bool isTypeArgumentsInForest = false});
 
-  /* Expression | Generator */ buildPropertyAccess(
-      IncompleteSendGenerator send, int operatorOffset, bool isNullAware) {
-    if (send is SendAccessGenerator) {
+  /* Expression | Generator */ buildSelectorAccess(
+      Selector send, int operatorOffset, bool isNullAware) {
+    if (send is InvocationSelector) {
       return _helper.buildMethodInvocation(buildSimpleRead(), send.name,
           send.arguments, offsetForToken(send.token),
           isNullAware: isNullAware,
@@ -2611,8 +2611,8 @@
         isNullAware: isNullAware);
   }
 
-  /* Expression | Generator */ buildPropertyAccess(
-      IncompleteSendGenerator send, int operatorOffset, bool isNullAware) {
+  /* Expression | Generator */ buildSelectorAccess(
+      Selector send, int operatorOffset, bool isNullAware) {
     if (_helper.constantContext != ConstantContext.none) {
       _helper.addProblem(
           messageNotAConstantExpression, fileOffset, token.length);
@@ -2846,10 +2846,9 @@
   }
 
   @override
-  buildPropertyAccess(
-      IncompleteSendGenerator send, int operatorOffset, bool isNullAware) {
+  buildSelectorAccess(Selector send, int operatorOffset, bool isNullAware) {
     Object propertyAccess =
-        suffixGenerator.buildPropertyAccess(send, operatorOffset, isNullAware);
+        suffixGenerator.buildSelectorAccess(send, operatorOffset, isNullAware);
     if (propertyAccess is Generator) {
       return new DeferredAccessGenerator(
           _helper, token, prefixGenerator, propertyAccess);
@@ -2892,8 +2891,12 @@
               _uri, charOffset, lengthOfSpan(prefixGenerator.token, token));
     }
     // TODO(johnniwinther): Could we use a FixedTypeBuilder(InvalidType()) here?
-    NamedTypeBuilder result = new NamedTypeBuilder(name, nullabilityBuilder,
-        /* arguments = */ null, /* fileUri = */ null, /* charOffset = */ null);
+    NamedTypeBuilder result = new NamedTypeBuilder(
+        name,
+        nullabilityBuilder,
+        /* arguments = */ null,
+        /* fileUri = */ null,
+        /* charOffset = */ null);
     _helper.libraryBuilder.addProblem(
         message.messageObject, message.charOffset, message.length, message.uri);
     result.bind(result.buildInvalidTypeDeclarationBuilder(message));
@@ -3084,8 +3087,7 @@
   }
 
   @override
-  buildPropertyAccess(
-      IncompleteSendGenerator send, int operatorOffset, bool isNullAware) {
+  buildSelectorAccess(Selector send, int operatorOffset, bool isNullAware) {
     int nameOffset = offsetForToken(send.token);
     Name name = send.name;
     Arguments? arguments = send.arguments;
@@ -3149,7 +3151,7 @@
       Generator generator;
       if (member == null) {
         // If we find a setter, [member] is an [AccessErrorBuilder], not null.
-        if (send is IncompletePropertyAccessGenerator) {
+        if (send is PropertySelector) {
           assert(
               send.typeArguments == null,
               "Unexpected non-null typeArguments of "
@@ -3308,7 +3310,7 @@
     } else {
       // `SomeType?.toString` is the same as `SomeType.toString`, not
       // `(SomeType).toString`.
-      return super.buildPropertyAccess(send, operatorOffset, isNullAware);
+      return super.buildSelectorAccess(send, operatorOffset, isNullAware);
     }
   }
 
@@ -3538,10 +3540,6 @@
   @override
   String get _plainNameForRead => name.text;
 
-  withReceiver(Object? receiver, int operatorOffset,
-          {bool isNullAware: false}) =>
-      this;
-
   @override
   List<Initializer> buildFieldInitializer(Map<String, int>? initializedFields) {
     return <Initializer>[
@@ -3560,8 +3558,7 @@
   }
 
   @override
-  buildPropertyAccess(
-      IncompleteSendGenerator send, int operatorOffset, bool isNullAware) {
+  buildSelectorAccess(Selector send, int operatorOffset, bool isNullAware) {
     return send.withReceiver(buildSimpleRead(), operatorOffset,
         isNullAware: isNullAware);
   }
@@ -4011,12 +4008,12 @@
   }
 
   @override
-  /* Expression | Generator */ buildPropertyAccess(
-      IncompleteSendGenerator send, int operatorOffset, bool isNullAware) {
+  /* Expression | Generator */ buildSelectorAccess(
+      Selector send, int operatorOffset, bool isNullAware) {
     assert(send.name.text == send.token.lexeme,
         "'${send.name.text}' != ${send.token.lexeme}");
     Object result = qualifiedLookup(send.token);
-    if (send is SendAccessGenerator) {
+    if (send is InvocationSelector) {
       result = _helper.finishSend(
           result, send.typeArguments, send.arguments, send.fileOffset,
           isTypeArgumentsInForest: send.isTypeArgumentsInForest);
@@ -4219,8 +4216,8 @@
     return buildProblem();
   }
 
-  Expression buildPropertyAccess(
-      IncompleteSendGenerator send, int operatorOffset, bool isNullAware) {
+  Expression buildSelectorAccess(
+      Selector send, int operatorOffset, bool isNullAware) {
     return buildProblem();
   }
 
@@ -4371,12 +4368,11 @@
     }
   }
 
-  buildPropertyAccess(
-      IncompleteSendGenerator send, int operatorOffset, bool isNullAware) {
+  buildSelectorAccess(Selector send, int operatorOffset, bool isNullAware) {
     Name name = send.name;
     Arguments? arguments = send.arguments;
     int offset = offsetForToken(send.token);
-    if (isInitializer && send is SendAccessGenerator) {
+    if (isInitializer && send is InvocationSelector) {
       if (isNullAware) {
         _helper.addProblem(
             messageInvalidUseOfNullAwareAccess, operatorOffset, 2);
@@ -4386,7 +4382,7 @@
     if (inFieldInitializer && !inLateFieldInitializer && !isInitializer) {
       return buildFieldInitializerError(null);
     }
-    if (send is SendAccessGenerator) {
+    if (send is InvocationSelector) {
       // Notice that 'this' or 'super' can't be null. So we can ignore the
       // value of [isNullAware].
       if (isNullAware) {
@@ -4588,20 +4584,7 @@
   }
 }
 
-abstract class IncompleteSendGenerator implements Generator {
-  Name get name;
-
-  withReceiver(Object? receiver, int operatorOffset, {bool isNullAware: false});
-
-  List<UnresolvedType>? get typeArguments => null;
-
-  bool get isTypeArgumentsInForest => true;
-
-  Arguments? get arguments => null;
-}
-
-class IncompleteErrorGenerator extends ErroneousExpressionGenerator
-    with IncompleteSendGenerator {
+class IncompleteErrorGenerator extends ErroneousExpressionGenerator {
   final Message message;
 
   IncompleteErrorGenerator(
@@ -4646,171 +4629,6 @@
   }
 }
 
-// TODO(ahe): Rename to SendGenerator.
-class SendAccessGenerator extends Generator with IncompleteSendGenerator {
-  @override
-  final Name name;
-
-  @override
-  final List<UnresolvedType>? typeArguments;
-
-  @override
-  final bool isTypeArgumentsInForest;
-
-  @override
-  final Arguments arguments;
-
-  final bool isPotentiallyConstant;
-
-  SendAccessGenerator(ExpressionGeneratorHelper helper, Token token, this.name,
-      this.typeArguments, this.arguments,
-      {this.isPotentiallyConstant = false, this.isTypeArgumentsInForest = true})
-      : super(helper, token) {
-    // ignore: unnecessary_null_comparison
-    assert(arguments != null);
-  }
-
-  String get _plainNameForRead => name.text;
-
-  String get _debugName => "SendAccessGenerator";
-
-  Expression buildSimpleRead() {
-    return unsupported("buildSimpleRead", fileOffset, _uri);
-  }
-
-  Expression buildAssignment(Expression value, {bool voidContext: false}) {
-    return unsupported("buildAssignment", fileOffset, _uri);
-  }
-
-  withReceiver(Object? receiver, int operatorOffset,
-      {bool isNullAware: false}) {
-    if (receiver is Generator) {
-      return receiver.buildPropertyAccess(this, operatorOffset, isNullAware);
-    }
-    return _helper.buildMethodInvocation(
-        _helper.toValue(receiver), name, arguments, fileOffset,
-        isNullAware: isNullAware);
-  }
-
-  Expression buildIfNullAssignment(Expression value, DartType type, int offset,
-      {bool voidContext: false}) {
-    return unsupported("buildNullAwareAssignment", offset, _uri);
-  }
-
-  Expression buildCompoundAssignment(Name binaryOperator, Expression value,
-      {int offset: TreeNode.noOffset,
-      bool voidContext: false,
-      bool isPreIncDec: false,
-      bool isPostIncDec: false}) {
-    return unsupported("buildCompoundAssignment", offset, _uri);
-  }
-
-  Expression buildPrefixIncrement(Name binaryOperator,
-      {int offset: TreeNode.noOffset, bool voidContext: false}) {
-    return unsupported("buildPrefixIncrement", offset, _uri);
-  }
-
-  Expression buildPostfixIncrement(Name binaryOperator,
-      {int offset: TreeNode.noOffset, bool voidContext: false}) {
-    return unsupported("buildPostfixIncrement", offset, _uri);
-  }
-
-  Expression doInvocation(
-      int offset, List<UnresolvedType>? typeArguments, Arguments arguments,
-      {bool isTypeArgumentsInForest = false}) {
-    return unsupported("doInvocation", offset, _uri);
-  }
-
-  @override
-  Generator buildIndexedAccess(Expression index, Token token,
-      {required bool isNullAware}) {
-    // ignore: unnecessary_null_comparison
-    assert(isNullAware != null);
-    return unsupported("buildIndexedAccess", offsetForToken(token), _uri);
-  }
-
-  @override
-  void printOn(StringSink sink) {
-    sink.write(", name: ");
-    sink.write(name.text);
-    sink.write(", arguments: ");
-    printNodeOn(arguments, sink);
-  }
-}
-
-class IncompletePropertyAccessGenerator extends Generator
-    with IncompleteSendGenerator {
-  final Name name;
-
-  IncompletePropertyAccessGenerator(
-      ExpressionGeneratorHelper helper, Token token, this.name)
-      : super(helper, token);
-
-  String get _plainNameForRead => name.text;
-
-  String get _debugName => "IncompletePropertyAccessGenerator";
-
-  Expression buildSimpleRead() {
-    return unsupported("buildSimpleRead", fileOffset, _uri);
-  }
-
-  Expression buildAssignment(Expression value, {bool voidContext: false}) {
-    return unsupported("buildAssignment", fileOffset, _uri);
-  }
-
-  withReceiver(Object? receiver, int operatorOffset,
-      {bool isNullAware: false}) {
-    if (receiver is Generator) {
-      return receiver.buildPropertyAccess(this, operatorOffset, isNullAware);
-    }
-    return PropertyAccessGenerator.make(
-        _helper, token, _helper.toValue(receiver), name, isNullAware);
-  }
-
-  Expression buildIfNullAssignment(Expression value, DartType type, int offset,
-      {bool voidContext: false}) {
-    return unsupported("buildNullAwareAssignment", offset, _uri);
-  }
-
-  Expression buildCompoundAssignment(Name binaryOperator, Expression value,
-      {int offset: TreeNode.noOffset,
-      bool voidContext: false,
-      bool isPreIncDec: false,
-      bool isPostIncDec: false}) {
-    return unsupported("buildCompoundAssignment", offset, _uri);
-  }
-
-  Expression buildPrefixIncrement(Name binaryOperator,
-      {int offset: TreeNode.noOffset, bool voidContext: false}) {
-    return unsupported("buildPrefixIncrement", offset, _uri);
-  }
-
-  Expression buildPostfixIncrement(Name binaryOperator,
-      {int offset: TreeNode.noOffset, bool voidContext: false}) {
-    return unsupported("buildPostfixIncrement", offset, _uri);
-  }
-
-  Expression doInvocation(
-      int offset, List<UnresolvedType>? typeArguments, Arguments arguments,
-      {bool isTypeArgumentsInForest = false}) {
-    return unsupported("doInvocation", offset, _uri);
-  }
-
-  @override
-  Generator buildIndexedAccess(Expression index, Token token,
-      {required bool isNullAware}) {
-    // ignore: unnecessary_null_comparison
-    assert(isNullAware != null);
-    return unsupported("buildIndexedAccess", offsetForToken(token), _uri);
-  }
-
-  @override
-  void printOn(StringSink sink) {
-    sink.write(", name: ");
-    sink.write(name.text);
-  }
-}
-
 /// [ParenthesizedExpressionGenerator] represents the subexpression whose prefix
 /// is a parenthesized expression.
 ///
@@ -4845,9 +4663,9 @@
 
   String get _debugName => "ParenthesizedExpressionGenerator";
 
-  /* Expression | Generator */ buildPropertyAccess(
-      IncompleteSendGenerator send, int operatorOffset, bool isNullAware) {
-    if (send is SendAccessGenerator) {
+  /* Expression | Generator */ buildSelectorAccess(
+      Selector send, int operatorOffset, bool isNullAware) {
+    if (send is InvocationSelector) {
       return _helper.buildMethodInvocation(
           _createRead(), send.name, send.arguments, offsetForToken(send.token),
           isNullAware: isNullAware,
@@ -4873,3 +4691,150 @@
 bool isFieldOrGetter(Member? member) {
   return member is Field || (member is Procedure && member.isGetter);
 }
+
+/// A [Selector] is a part of an object access after `.` or `..` or `?.`,
+/// including arguments, if present.
+///
+/// For instance, an [InvocationSelector] is created for `b()` in
+///
+///    a.b();
+///    a..b();
+///    a?.b();
+///
+/// and a [PropertySelector] is created for `b` in
+///
+///    a.b;
+///    a.b = c;
+///    a..b;
+///    a..b = c;
+///    a?.b;
+///    a?.b = c;
+///
+abstract class Selector {
+  final ExpressionGeneratorHelper _helper;
+  final Token token;
+
+  Selector(this._helper, this.token);
+
+  int get fileOffset => offsetForToken(token);
+
+  Name get name;
+
+  /// Applies this selector to [receiver].
+  /* Expression | Generator */ withReceiver(
+      Object? receiver, int operatorOffset,
+      {bool isNullAware: false});
+
+  List<UnresolvedType>? get typeArguments => null;
+
+  bool get isTypeArgumentsInForest => true;
+
+  Arguments? get arguments => null;
+
+  /// Internal name used for debugging.
+  String get _debugName;
+
+  void printOn(StringSink sink);
+
+  String toString() {
+    StringBuffer buffer = new StringBuffer();
+    buffer.write(_debugName);
+    buffer.write("(offset: ");
+    buffer.write("${fileOffset}");
+    printOn(buffer);
+    buffer.write(")");
+    return "$buffer";
+  }
+}
+
+/// An [InvocationSelector] is the part of an object invocation after `.` or
+/// `..` or `?.` including arguments.
+///
+/// For instance, an [InvocationSelector] is created for `b()` in
+///
+///    a.b();
+///    a..b();
+///    a?.b();
+///
+class InvocationSelector extends Selector {
+  @override
+  final Name name;
+
+  @override
+  final List<UnresolvedType>? typeArguments;
+
+  @override
+  final bool isTypeArgumentsInForest;
+
+  @override
+  final Arguments arguments;
+
+  final bool isPotentiallyConstant;
+
+  InvocationSelector(ExpressionGeneratorHelper helper, Token token, this.name,
+      this.typeArguments, this.arguments,
+      {this.isPotentiallyConstant = false, this.isTypeArgumentsInForest = true})
+      : super(helper, token) {
+    // ignore: unnecessary_null_comparison
+    assert(arguments != null);
+  }
+
+  @override
+  String get _debugName => 'InvocationSelector';
+
+  @override
+  withReceiver(Object? receiver, int operatorOffset,
+      {bool isNullAware: false}) {
+    if (receiver is Generator) {
+      return receiver.buildSelectorAccess(this, operatorOffset, isNullAware);
+    }
+    return _helper.buildMethodInvocation(
+        _helper.toValue(receiver), name, arguments, fileOffset,
+        isNullAware: isNullAware);
+  }
+
+  @override
+  void printOn(StringSink sink) {
+    sink.write(", name: ");
+    sink.write(name.text);
+    sink.write(", arguments: ");
+    printNodeOn(arguments, sink);
+  }
+}
+
+/// A [PropertySelector] is the part of an object access after `.` or `..` or
+/// `?.`.
+///
+/// For instance a [PropertySelector] is created for `b` in
+///
+///    a.b;
+///    a.b = c;
+///    a..b;
+///    a..b = c;
+///    a?.b;
+///    a?.b = c;
+///
+class PropertySelector extends Selector {
+  final Name name;
+
+  PropertySelector(ExpressionGeneratorHelper helper, Token token, this.name)
+      : super(helper, token);
+
+  @override
+  String get _debugName => 'PropertySelector';
+
+  withReceiver(Object? receiver, int operatorOffset,
+      {bool isNullAware: false}) {
+    if (receiver is Generator) {
+      return receiver.buildSelectorAccess(this, operatorOffset, isNullAware);
+    }
+    return PropertyAccessGenerator.make(
+        _helper, token, _helper.toValue(receiver), name, isNullAware);
+  }
+
+  @override
+  void printOn(StringSink sink) {
+    sink.write(", name: ");
+    sink.write(name.text);
+  }
+}
diff --git a/pkg/front_end/lib/src/fasta/kernel/kernel_constants.dart b/pkg/front_end/lib/src/fasta/kernel/kernel_constants.dart
index f17d67e..a7da5cc 100644
--- a/pkg/front_end/lib/src/fasta/kernel/kernel_constants.dart
+++ b/pkg/front_end/lib/src/fasta/kernel/kernel_constants.dart
@@ -33,7 +33,7 @@
     if (builder == null) {
       // TODO(jensj): Probably a part or something.
       loader.addProblem(message.messageObject, message.charOffset,
-          message.length, message.uri!,
+          message.length, message.uri,
           context: context);
     } else {
       builder.addProblem(message.messageObject, message.charOffset,
diff --git a/pkg/front_end/lib/src/fasta/source/diet_listener.dart b/pkg/front_end/lib/src/fasta/source/diet_listener.dart
index 248ecdd..37f45ac 100644
--- a/pkg/front_end/lib/src/fasta/source/diet_listener.dart
+++ b/pkg/front_end/lib/src/fasta/source/diet_listener.dart
@@ -56,7 +56,7 @@
 
 import '../ignored_parser_errors.dart' show isIgnoredParserError;
 
-import '../kernel/body_builder.dart' show BodyBuilder;
+import '../kernel/body_builder.dart' show BodyBuilder, FormalParameters;
 
 import '../problems.dart'
     show DebugAbort, internalProblem, unexpected, unhandled;
@@ -351,7 +351,7 @@
     checkEmpty(beginToken.charOffset);
     if (name is ParserRecovery) return;
 
-    final StackListenerImpl listener = createFunctionListener(
+    final BodyBuilder listener = createFunctionListener(
         lookupBuilder(beginToken, getOrSet, name as String)
             as FunctionBuilderImpl);
     buildFunctionBody(listener, bodyToken, metadata, MemberKind.TopLevelMethod);
@@ -726,7 +726,7 @@
             : MemberKind.NonStaticMethod);
   }
 
-  StackListenerImpl createListener(ModifierBuilder builder, Scope memberScope,
+  BodyBuilder createListener(ModifierBuilder builder, Scope memberScope,
       {required bool isDeclarationInstanceMember,
       VariableDeclaration? extensionThis,
       List<TypeParameter>? extensionTypeParameters,
@@ -754,7 +754,7 @@
         constantContext);
   }
 
-  StackListenerImpl createListenerInternal(
+  BodyBuilder createListenerInternal(
       ModifierBuilder builder,
       Scope memberScope,
       Scope? formalParameterScope,
@@ -779,7 +779,7 @@
       ..constantContext = constantContext;
   }
 
-  StackListenerImpl createFunctionListener(FunctionBuilderImpl builder) {
+  BodyBuilder createFunctionListener(FunctionBuilderImpl builder) {
     final Scope typeParameterScope =
         builder.computeTypeParameterScope(memberScope);
     final Scope formalParameterScope =
@@ -798,7 +798,7 @@
 
   void buildRedirectingFactoryMethod(Token token, FunctionBuilderImpl builder,
       MemberKind kind, Token? metadata) {
-    final StackListenerImpl listener = createFunctionListener(builder);
+    final BodyBuilder listener = createFunctionListener(builder);
     try {
       Parser parser = new Parser(listener,
           useImplicitCreationExpression: useImplicitCreationExpressionInCfe);
@@ -810,6 +810,7 @@
       token = parser.parseFormalParametersOpt(
           parser.syntheticPreviousToken(token), MemberKind.Factory);
       listener.pop(); // Pops formal parameters.
+      listener.finishRedirectingFactoryBody();
       listener.checkEmpty(token.next!.charOffset);
     } on DebugAbort {
       rethrow;
@@ -828,7 +829,7 @@
         lookupBuilder(token, null, names.first!) as SourceFieldBuilder;
     // TODO(paulberry): don't re-parse the field if we've already parsed it
     // for type inference.
-    parseFields(
+    _parseFields(
         createListener(declaration, memberScope,
             isDeclarationInstanceMember:
                 declaration.isDeclarationInstanceMember,
@@ -953,46 +954,24 @@
   AsyncMarker? getAsyncMarker(StackListenerImpl listener) =>
       listener.pop() as AsyncMarker?;
 
-  /// Invokes the listener's [finishFunction] method.
-  ///
-  /// This is a separate method so that it may be overridden by a derived class
-  /// if more computation must be done before finishing the function.
-  void listenerFinishFunction(
-      StackListenerImpl listener,
-      Token token,
-      MemberKind kind,
-      dynamic formals,
-      AsyncMarker asyncModifier,
-      dynamic body) {
-    listener.finishFunction(formals, asyncModifier, body);
-  }
-
-  /// Invokes the listener's [finishFields] method.
-  ///
-  /// This is a separate method so that it may be overridden by a derived class
-  /// if more computation must be done before finishing the function.
-  void listenerFinishFields(StackListenerImpl listener, Token startToken,
-      Token? metadata, bool isTopLevel) {
-    listener.finishFields();
-  }
-
-  void buildFunctionBody(StackListenerImpl listener, Token startToken,
+  void buildFunctionBody(BodyBuilder bodyBuilder, Token startToken,
       Token? metadata, MemberKind kind) {
     Token token = startToken;
     try {
-      Parser parser = new Parser(listener,
+      Parser parser = new Parser(bodyBuilder,
           useImplicitCreationExpression: useImplicitCreationExpressionInCfe);
       if (metadata != null) {
         parser.parseMetadataStar(parser.syntheticPreviousToken(metadata));
-        listener.pop(); // Annotations.
+        bodyBuilder.pop(); // Annotations.
       }
       token = parser.parseFormalParametersOpt(
           parser.syntheticPreviousToken(token), kind);
-      Object? formals = listener.pop();
-      listener.checkEmpty(token.next!.charOffset);
+      FormalParameters? formals = bodyBuilder.pop() as FormalParameters?;
+      bodyBuilder.checkEmpty(token.next!.charOffset);
       token = parser.parseInitializersOpt(token);
       token = parser.parseAsyncModifierOpt(token);
-      AsyncMarker asyncModifier = getAsyncMarker(listener) ?? AsyncMarker.Sync;
+      AsyncMarker asyncModifier =
+          getAsyncMarker(bodyBuilder) ?? AsyncMarker.Sync;
       if (kind == MemberKind.Factory && asyncModifier != AsyncMarker.Sync) {
         // Factories has to be sync. The parser issued an error.
         // Recover to sync.
@@ -1001,10 +980,9 @@
       bool isExpression = false;
       bool allowAbstract = asyncModifier == AsyncMarker.Sync;
       parser.parseFunctionBody(token, isExpression, allowAbstract);
-      Object? body = listener.pop();
-      listener.checkEmpty(token.charOffset);
-      listenerFinishFunction(
-          listener, startToken, kind, formals, asyncModifier, body);
+      Statement? body = bodyBuilder.pop() as Statement?;
+      bodyBuilder.checkEmpty(token.charOffset);
+      bodyBuilder.finishFunction(formals, asyncModifier, body);
     } on DebugAbort {
       rethrow;
     } catch (e, s) {
@@ -1012,10 +990,10 @@
     }
   }
 
-  void parseFields(StackListenerImpl listener, Token startToken,
-      Token? metadata, bool isTopLevel) {
+  void _parseFields(BodyBuilder bodyBuilder, Token startToken, Token? metadata,
+      bool isTopLevel) {
     Token token = startToken;
-    Parser parser = new Parser(listener,
+    Parser parser = new Parser(bodyBuilder,
         useImplicitCreationExpression: useImplicitCreationExpressionInCfe);
     if (isTopLevel) {
       token = parser.parseTopLevelMember(metadata ?? token);
@@ -1023,8 +1001,8 @@
       // TODO(danrubel): disambiguate between class/mixin/extension members
       token = parser.parseClassMember(metadata ?? token, null).next!;
     }
-    listenerFinishFields(listener, startToken, metadata, isTopLevel);
-    listener.checkEmpty(token.charOffset);
+    bodyBuilder.finishFields();
+    bodyBuilder.checkEmpty(token.charOffset);
   }
 
   Builder? lookupBuilder(Token token, Token? getOrSet, String name) {
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 585b690..b1247dc 100644
--- a/pkg/front_end/lib/src/fasta/source/source_loader.dart
+++ b/pkg/front_end/lib/src/fasta/source/source_loader.dart
@@ -556,7 +556,7 @@
       ..parent = parent;
     BodyBuilder listener = dietListener.createListener(
         builder, dietListener.memberScope,
-        isDeclarationInstanceMember: isClassInstanceMember) as BodyBuilder;
+        isDeclarationInstanceMember: isClassInstanceMember);
 
     return listener.parseSingleExpression(
         new Parser(listener,
diff --git a/pkg/front_end/lib/src/fasta/source/stack_listener_impl.dart b/pkg/front_end/lib/src/fasta/source/stack_listener_impl.dart
index 0544f97..0bf1fdb 100644
--- a/pkg/front_end/lib/src/fasta/source/stack_listener_impl.dart
+++ b/pkg/front_end/lib/src/fasta/source/stack_listener_impl.dart
@@ -47,19 +47,6 @@
 
   // TODO(ahe): This doesn't belong here. Only implemented by body_builder.dart
   // and ast_builder.dart.
-  void finishFunction(
-      covariant formals, AsyncMarker asyncModifier, covariant body) {
-    problems.unsupported("finishFunction", -1, uri);
-  }
-
-  // TODO(ahe): This doesn't belong here. Only implemented by body_builder.dart
-  // and ast_builder.dart.
-  dynamic finishFields() {
-    return problems.unsupported("finishFields", -1, uri);
-  }
-
-  // TODO(ahe): This doesn't belong here. Only implemented by body_builder.dart
-  // and ast_builder.dart.
   List<Expression> finishMetadata(Annotatable? parent) {
     return problems.unsupported("finishMetadata", -1, uri);
   }
diff --git a/pkg/front_end/lib/src/fasta/source/value_kinds.dart b/pkg/front_end/lib/src/fasta/source/value_kinds.dart
index 3b8edb0..6f24626 100644
--- a/pkg/front_end/lib/src/fasta/source/value_kinds.dart
+++ b/pkg/front_end/lib/src/fasta/source/value_kinds.dart
@@ -94,6 +94,8 @@
   static const ValueKind QualifiedName =
       const SingleValueKind<type.QualifiedName>();
   static const ValueKind Scope = const SingleValueKind<type.Scope>();
+  static const ValueKind Selector =
+      const SingleValueKind<type.Selector>();
   static const ValueKind SwitchScopeOrNull =
       const SingleValueKind<type.Scope>(NullValue.SwitchScope);
   static const ValueKind Statement = const SingleValueKind<type.Statement>();
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
index e053cfc..9fea306 100644
--- 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
@@ -8,9 +8,9 @@
   {foo());}
         ^
 
-parser/error_recovery/bracket_mismatch_03:2:9: Expected ';' after this.
+parser/error_recovery/bracket_mismatch_03:2:8: Expected ';' after this.
   {foo());}
-        ^
+       ^
 
 parser/error_recovery/bracket_mismatch_03:2:9: Unexpected token ')'.
   {foo());}
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
index b4f350e..ffe546c 100644
--- 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
@@ -82,7 +82,7 @@
                                       listener: handleNoArguments())
                                     listener: handleSend(, ))
                           ensureSemicolon()
-                            reportRecoverableError(, Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}])
+                            reportRecoverableError(), Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}])
                               listener: handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], ), ))
                             rewriter()
                           listener: handleExpressionStatement(;)
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
index d4b6a44..e8d4816 100644
--- 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
@@ -8,9 +8,9 @@
   foo(() {bar());});
                ^
 
-parser/error_recovery/bracket_mismatch_04:2:16: Expected ';' after this.
+parser/error_recovery/bracket_mismatch_04:2:15: Expected ';' after this.
   foo(() {bar());});
-               ^
+              ^
 
 parser/error_recovery/bracket_mismatch_04:2:16: Unexpected token ';'.
   foo(() {bar());});
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
index 5dee028..b4a6f0d 100644
--- 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
@@ -115,7 +115,7 @@
                                                                           listener: handleNoArguments())
                                                                         listener: handleSend(, ))
                                                               ensureSemicolon()
-                                                                reportRecoverableError(, Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}])
+                                                                reportRecoverableError(), Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}])
                                                                   listener: handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], ), ))
                                                                 rewriter()
                                                               listener: handleExpressionStatement(;)
diff --git a/pkg/front_end/parser_testcases/error_recovery/empty_for.dart.expect b/pkg/front_end/parser_testcases/error_recovery/empty_for.dart.expect
index 0affd02..1b4fc95 100644
--- a/pkg/front_end/parser_testcases/error_recovery/empty_for.dart.expect
+++ b/pkg/front_end/parser_testcases/error_recovery/empty_for.dart.expect
@@ -4,17 +4,17 @@
   for () {}
        ^
 
-parser/error_recovery/empty_for:2:8: Expected ';' after this.
+parser/error_recovery/empty_for:2:7: Expected ';' after this.
   for () {}
-       ^
+      ^
 
 parser/error_recovery/empty_for:2:8: Expected an identifier, but got ')'.
   for () {}
        ^
 
-parser/error_recovery/empty_for:2:8: Expected ';' after this.
+parser/error_recovery/empty_for:2:7: Expected ';' after this.
   for () {}
-       ^
+      ^
 
 beginCompilationUnit(main)
   beginMetadataStar(main)
@@ -35,13 +35,13 @@
           handleNoArguments())
           handleSend(, ))
           handleForInitializerExpressionStatement(, false)
-          handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], ), ))
+          handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], (, ()
           handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got ')'., Try inserting an identifier before ')'., {lexeme: )}], ), ))
           handleIdentifier(, expression)
           handleNoTypeArguments())
           handleNoArguments())
           handleSend(, ))
-          handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], ), ))
+          handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], (, ()
           handleExpressionStatement(;)
           handleForLoopParts(for, (, ;, 0)
           beginForStatementBody({)
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 fb9fb95..d816a82 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
@@ -54,8 +54,8 @@
                 parseForRest(null, , for)
                   parseForLoopPartsRest(, for, null)
                     ensureSemicolon()
-                      reportRecoverableError(, Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}])
-                        listener: handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], ), ))
+                      reportRecoverableError((, Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}])
+                        listener: handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], (, ()
                       rewriter()
                     parseExpressionStatement(;)
                       parseExpression(;)
@@ -74,8 +74,8 @@
                                   listener: handleNoArguments())
                                 listener: handleSend(, ))
                       ensureSemicolon()
-                        reportRecoverableError(, Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}])
-                          listener: handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], ), ))
+                        reportRecoverableError((, Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}])
+                          listener: handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], (, ()
                         rewriter()
                       listener: handleExpressionStatement(;)
                     listener: handleForLoopParts(for, (, ;, 0)
diff --git a/pkg/front_end/parser_testcases/error_recovery/issue_000032.dart.expect b/pkg/front_end/parser_testcases/error_recovery/issue_000032.dart.expect
index bf20d7f..0136c1d 100644
--- a/pkg/front_end/parser_testcases/error_recovery/issue_000032.dart.expect
+++ b/pkg/front_end/parser_testcases/error_recovery/issue_000032.dart.expect
@@ -8,17 +8,17 @@
 }
 ^
 
-parser/error_recovery/issue_000032:7:1: Expected ';' after this.
-}
-^
+parser/error_recovery/issue_000032:6:4: Expected ';' after this.
+  C<
+   ^
 
 parser/error_recovery/issue_000032:11:1: Expected an identifier, but got '}'.
 }
 ^
 
-parser/error_recovery/issue_000032:11:1: Expected ';' after this.
-}
-^
+parser/error_recovery/issue_000032:10:4: Expected ';' after this.
+  C<
+   ^
 
 beginCompilationUnit(class)
   beginMetadataStar(class)
@@ -48,7 +48,7 @@
             handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got '}'., Try inserting an identifier before '}'., {lexeme: }}], }, })
             handleIdentifier(, fieldDeclaration)
             handleNoFieldInitializer(})
-            handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], }, })
+            handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], <, <)
           endClassFields(null, null, null, null, null, null, 1, C, ;)
         endMember()
       endClassOrMixinBody(DeclarationKind.Class, 1, {, })
@@ -76,7 +76,7 @@
           handleNoArguments(})
           handleSend(, })
         endBinaryExpression(<)
-        handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], }, })
+        handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], <, <)
         handleExpressionStatement(;)
       endBlockFunctionBody(1, {, })
     endTopLevelMethod(main, null, })
diff --git a/pkg/front_end/parser_testcases/error_recovery/issue_000032.dart.intertwined.expect b/pkg/front_end/parser_testcases/error_recovery/issue_000032.dart.intertwined.expect
index 373d0f43..2733df1 100644
--- a/pkg/front_end/parser_testcases/error_recovery/issue_000032.dart.intertwined.expect
+++ b/pkg/front_end/parser_testcases/error_recovery/issue_000032.dart.intertwined.expect
@@ -55,8 +55,8 @@
                   parseFieldInitializerOpt(, , null, null, null, null, DeclarationKind.Class, C)
                     listener: handleNoFieldInitializer(})
                   ensureSemicolon()
-                    reportRecoverableError(, Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}])
-                      listener: handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], }, })
+                    reportRecoverableError(<, Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}])
+                      listener: handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], <, <)
                     rewriter()
                   listener: endClassFields(null, null, null, null, null, null, 1, C, ;)
                 listener: endMember()
@@ -124,8 +124,8 @@
                               listener: handleSend(, })
                       listener: endBinaryExpression(<)
                   ensureSemicolon()
-                    reportRecoverableError(, Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}])
-                      listener: handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], }, })
+                    reportRecoverableError(<, Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}])
+                      listener: handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], <, <)
                     rewriter()
                   listener: handleExpressionStatement(;)
           notEofOrValue(}, })
diff --git a/pkg/front_end/parser_testcases/error_recovery/issue_39033.crash_dart.expect b/pkg/front_end/parser_testcases/error_recovery/issue_39033.crash_dart.expect
index 6b960ce..46f6afb 100644
--- a/pkg/front_end/parser_testcases/error_recovery/issue_39033.crash_dart.expect
+++ b/pkg/front_end/parser_testcases/error_recovery/issue_39033.crash_dart.expect
@@ -10,11 +10,9 @@
 
 WARNING: Reporting at eof --- see below for details.
 
-parser/error_recovery/issue_39033.crash:1:17: Expected ';' after this.
+parser/error_recovery/issue_39033.crash:1:16: Expected ';' after this.
 typedef F<Glib.=
-                ^...
-
-WARNING: Reporting at eof --- see below for details.
+               ^
 
 beginCompilationUnit(typedef)
   beginMetadataStar(typedef)
@@ -37,8 +35,7 @@
       handleIdentifier(, typeReference)
       handleNoTypeArguments()
       handleType(, null)
-      handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], , )
-      // WARNING: Reporting at eof for .
+      handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], =, =)
     endFunctionTypeAlias(typedef, =, ;)
   endTopLevelDeclaration()
 endCompilationUnit(1, )
diff --git a/pkg/front_end/parser_testcases/error_recovery/issue_39033.crash_dart.intertwined.expect b/pkg/front_end/parser_testcases/error_recovery/issue_39033.crash_dart.intertwined.expect
index c85f9e8..b2f18b7 100644
--- a/pkg/front_end/parser_testcases/error_recovery/issue_39033.crash_dart.intertwined.expect
+++ b/pkg/front_end/parser_testcases/error_recovery/issue_39033.crash_dart.intertwined.expect
@@ -34,9 +34,8 @@
         listener: handleNoTypeArguments()
         listener: handleType(, null)
         ensureSemicolon()
-          reportRecoverableError(, Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}])
-            listener: handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], , )
-            listener: // WARNING: Reporting at eof for .
+          reportRecoverableError(=, Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}])
+            listener: handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], =, =)
           rewriter()
         listener: endFunctionTypeAlias(typedef, =, ;)
   listener: endTopLevelDeclaration()
diff --git a/pkg/front_end/parser_testcases/error_recovery/issue_39202.crash_dart.expect b/pkg/front_end/parser_testcases/error_recovery/issue_39202.crash_dart.expect
index 43a90df..5bd3f47 100644
--- a/pkg/front_end/parser_testcases/error_recovery/issue_39202.crash_dart.expect
+++ b/pkg/front_end/parser_testcases/error_recovery/issue_39202.crash_dart.expect
@@ -26,11 +26,9 @@
 
 WARNING: Reporting at eof --- see below for details.
 
-parser/error_recovery/issue_39202.crash:1:25: Expected ';' after this.
+parser/error_recovery/issue_39202.crash:1:24: Expected ';' after this.
 () async => a b < c $? >
-                        ^...
-
-WARNING: Reporting at eof --- see below for details.
+                       ^
 
 beginCompilationUnit(()
   beginMetadataStar(()
@@ -80,8 +78,7 @@
       // WARNING: Reporting at eof for .
       handleIdentifier(, topLevelVariableDeclaration)
       handleNoFieldInitializer()
-      handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], , )
-      // WARNING: Reporting at eof for .
+      handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], >, >)
     endTopLevelFields(null, null, null, null, null, 1, b, ;)
   endTopLevelDeclaration()
 endCompilationUnit(4, )
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 f2fb1b9..7754b5d 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
@@ -98,9 +98,8 @@
         parseFieldInitializerOpt(, , null, null, null, null, DeclarationKind.TopLevel, null)
           listener: handleNoFieldInitializer()
         ensureSemicolon()
-          reportRecoverableError(, Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}])
-            listener: handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], , )
-            listener: // WARNING: Reporting at eof for .
+          reportRecoverableError(>, Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}])
+            listener: handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], >, >)
           rewriter()
         listener: endTopLevelFields(null, null, null, null, null, 1, b, ;)
   listener: endTopLevelDeclaration()
diff --git a/pkg/front_end/parser_testcases/error_recovery/issue_42229.crash_dart.expect b/pkg/front_end/parser_testcases/error_recovery/issue_42229.crash_dart.expect
index c04b45f..1a1a560 100644
--- a/pkg/front_end/parser_testcases/error_recovery/issue_42229.crash_dart.expect
+++ b/pkg/front_end/parser_testcases/error_recovery/issue_42229.crash_dart.expect
@@ -16,11 +16,9 @@
 
 WARNING: Reporting at eof --- see below for details.
 
-parser/error_recovery/issue_42229.crash:1:34: Expected ';' after this.
+parser/error_recovery/issue_42229.crash:1:14: Expected ';' after this.
 Stream<List<>> /* nothing here */
-                                 ^...
-
-WARNING: Reporting at eof --- see below for details.
+             ^
 
 beginCompilationUnit(Stream)
   beginMetadataStar(Stream)
@@ -45,8 +43,7 @@
       // WARNING: Reporting at eof for .
       handleIdentifier(, topLevelVariableDeclaration)
       handleNoFieldInitializer()
-      handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], , )
-      // WARNING: Reporting at eof for .
+      handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], >, >)
     endTopLevelFields(null, null, null, null, null, 1, Stream, ;)
   endTopLevelDeclaration()
 endCompilationUnit(1, )
diff --git a/pkg/front_end/parser_testcases/error_recovery/issue_42229.crash_dart.intertwined.expect b/pkg/front_end/parser_testcases/error_recovery/issue_42229.crash_dart.intertwined.expect
index 25548f5..02666ab 100644
--- a/pkg/front_end/parser_testcases/error_recovery/issue_42229.crash_dart.intertwined.expect
+++ b/pkg/front_end/parser_testcases/error_recovery/issue_42229.crash_dart.intertwined.expect
@@ -41,9 +41,8 @@
         parseFieldInitializerOpt(, , null, null, null, null, DeclarationKind.TopLevel, null)
           listener: handleNoFieldInitializer()
         ensureSemicolon()
-          reportRecoverableError(, Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}])
-            listener: handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], , )
-            listener: // WARNING: Reporting at eof for .
+          reportRecoverableError(>, Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}])
+            listener: handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], >, >)
           rewriter()
         listener: endTopLevelFields(null, null, null, null, null, 1, Stream, ;)
   listener: endTopLevelDeclaration()
diff --git a/pkg/front_end/parser_testcases/error_recovery/issue_42229_prime.crash_dart.expect b/pkg/front_end/parser_testcases/error_recovery/issue_42229_prime.crash_dart.expect
index 308e34f..8fca493 100644
--- a/pkg/front_end/parser_testcases/error_recovery/issue_42229_prime.crash_dart.expect
+++ b/pkg/front_end/parser_testcases/error_recovery/issue_42229_prime.crash_dart.expect
@@ -10,11 +10,9 @@
 Stream<List<> >
             ^
 
-parser/error_recovery/issue_42229_prime.crash:1:16: Expected ';' after this.
+parser/error_recovery/issue_42229_prime.crash:1:15: Expected ';' after this.
 Stream<List<> >
-               ^...
-
-WARNING: Reporting at eof --- see below for details.
+              ^
 
 beginCompilationUnit(Stream)
   beginMetadataStar(Stream)
@@ -37,8 +35,7 @@
       handleType(Stream, null)
       handleIdentifier(, topLevelVariableDeclaration)
       handleNoFieldInitializer()
-      handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], , )
-      // WARNING: Reporting at eof for .
+      handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], >, >)
     endTopLevelFields(null, null, null, null, null, 1, Stream, ;)
   endTopLevelDeclaration()
 endCompilationUnit(1, )
diff --git a/pkg/front_end/parser_testcases/error_recovery/issue_42229_prime.crash_dart.intertwined.expect b/pkg/front_end/parser_testcases/error_recovery/issue_42229_prime.crash_dart.intertwined.expect
index 3aface3..898699b 100644
--- a/pkg/front_end/parser_testcases/error_recovery/issue_42229_prime.crash_dart.intertwined.expect
+++ b/pkg/front_end/parser_testcases/error_recovery/issue_42229_prime.crash_dart.intertwined.expect
@@ -36,9 +36,8 @@
         parseFieldInitializerOpt(, , null, null, null, null, DeclarationKind.TopLevel, null)
           listener: handleNoFieldInitializer()
         ensureSemicolon()
-          reportRecoverableError(, Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}])
-            listener: handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], , )
-            listener: // WARNING: Reporting at eof for .
+          reportRecoverableError(>, Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}])
+            listener: handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], >, >)
           rewriter()
         listener: endTopLevelFields(null, null, null, null, null, 1, Stream, ;)
   listener: endTopLevelDeclaration()
diff --git a/pkg/front_end/parser_testcases/error_recovery/issue_42229_prime_3.crash_dart.expect b/pkg/front_end/parser_testcases/error_recovery/issue_42229_prime_3.crash_dart.expect
index b9194da..77d9505 100644
--- a/pkg/front_end/parser_testcases/error_recovery/issue_42229_prime_3.crash_dart.expect
+++ b/pkg/front_end/parser_testcases/error_recovery/issue_42229_prime_3.crash_dart.expect
@@ -12,11 +12,9 @@
 
 WARNING: Reporting at eof --- see below for details.
 
-parser/error_recovery/issue_42229_prime_3.crash:1:17: Expected ';' after this.
+parser/error_recovery/issue_42229_prime_3.crash:1:15: Expected ';' after this.
 Stream<List<x>> 
-                ^...
-
-WARNING: Reporting at eof --- see below for details.
+              ^
 
 beginCompilationUnit(Stream)
   beginMetadataStar(Stream)
@@ -40,8 +38,7 @@
       // WARNING: Reporting at eof for .
       handleIdentifier(, topLevelVariableDeclaration)
       handleNoFieldInitializer()
-      handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], , )
-      // WARNING: Reporting at eof for .
+      handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], >, >)
     endTopLevelFields(null, null, null, null, null, 1, Stream, ;)
   endTopLevelDeclaration()
 endCompilationUnit(1, )
diff --git a/pkg/front_end/parser_testcases/error_recovery/issue_42229_prime_3.crash_dart.intertwined.expect b/pkg/front_end/parser_testcases/error_recovery/issue_42229_prime_3.crash_dart.intertwined.expect
index 69d438c..09c91a7 100644
--- a/pkg/front_end/parser_testcases/error_recovery/issue_42229_prime_3.crash_dart.intertwined.expect
+++ b/pkg/front_end/parser_testcases/error_recovery/issue_42229_prime_3.crash_dart.intertwined.expect
@@ -37,9 +37,8 @@
         parseFieldInitializerOpt(, , null, null, null, null, DeclarationKind.TopLevel, null)
           listener: handleNoFieldInitializer()
         ensureSemicolon()
-          reportRecoverableError(, Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}])
-            listener: handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], , )
-            listener: // WARNING: Reporting at eof for .
+          reportRecoverableError(>, Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}])
+            listener: handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], >, >)
           rewriter()
         listener: endTopLevelFields(null, null, null, null, null, 1, Stream, ;)
   listener: endTopLevelDeclaration()
diff --git a/pkg/front_end/parser_testcases/error_recovery/issue_46505.crash_dart.expect b/pkg/front_end/parser_testcases/error_recovery/issue_46505.crash_dart.expect
index 2708788..7467b87 100644
--- a/pkg/front_end/parser_testcases/error_recovery/issue_46505.crash_dart.expect
+++ b/pkg/front_end/parser_testcases/error_recovery/issue_46505.crash_dart.expect
@@ -8,9 +8,9 @@
 }
 ^
 
-parser/error_recovery/issue_46505.crash:3:1: Expected ';' after this.
-}
-^
+parser/error_recovery/issue_46505.crash:2:16: Expected ';' after this.
+  Stream<List<>>
+               ^
 
 parser/error_recovery/issue_46505.crash:6:8: Expected a type, but got '>'.
   List<>
@@ -20,9 +20,9 @@
 }
 ^
 
-parser/error_recovery/issue_46505.crash:7:1: Expected ';' after this.
-}
-^
+parser/error_recovery/issue_46505.crash:6:8: Expected ';' after this.
+  List<>
+       ^
 
 beginCompilationUnit(class)
   beginMetadataStar(class)
@@ -56,7 +56,7 @@
             handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got '}'., Try inserting an identifier before '}'., {lexeme: }}], }, })
             handleIdentifier(, fieldDeclaration)
             handleNoFieldInitializer(})
-            handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], }, })
+            handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], >, >)
           endClassFields(null, null, null, null, null, null, 1, Stream, ;)
         endMember()
       endClassOrMixinBody(DeclarationKind.Class, 1, {, })
@@ -89,7 +89,7 @@
             handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got '}'., Try inserting an identifier before '}'., {lexeme: }}], }, })
             handleIdentifier(, fieldDeclaration)
             handleNoFieldInitializer(})
-            handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], }, })
+            handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], >, >)
           endClassFields(null, null, null, null, null, null, 1, List, ;)
         endMember()
       endClassOrMixinBody(DeclarationKind.Class, 1, {, })
diff --git a/pkg/front_end/parser_testcases/error_recovery/issue_46505.crash_dart.intertwined.expect b/pkg/front_end/parser_testcases/error_recovery/issue_46505.crash_dart.intertwined.expect
index 6698055..1354d2a 100644
--- a/pkg/front_end/parser_testcases/error_recovery/issue_46505.crash_dart.intertwined.expect
+++ b/pkg/front_end/parser_testcases/error_recovery/issue_46505.crash_dart.intertwined.expect
@@ -60,8 +60,8 @@
                   parseFieldInitializerOpt(, , null, null, null, null, DeclarationKind.Class, A)
                     listener: handleNoFieldInitializer(})
                   ensureSemicolon()
-                    reportRecoverableError(, Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}])
-                      listener: handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], }, })
+                    reportRecoverableError(>, Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}])
+                      listener: handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], >, >)
                     rewriter()
                   listener: endClassFields(null, null, null, null, null, null, 1, Stream, ;)
                 listener: endMember()
@@ -122,8 +122,8 @@
                   parseFieldInitializerOpt(, , null, null, null, null, DeclarationKind.Class, B)
                     listener: handleNoFieldInitializer(})
                   ensureSemicolon()
-                    reportRecoverableError(, Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}])
-                      listener: handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], }, })
+                    reportRecoverableError(>, Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}])
+                      listener: handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], >, >)
                     rewriter()
                   listener: endClassFields(null, null, null, null, null, null, 1, List, ;)
                 listener: endMember()
diff --git a/pkg/front_end/parser_testcases/error_recovery/issue_46505_prime_3.crash_dart.expect b/pkg/front_end/parser_testcases/error_recovery/issue_46505_prime_3.crash_dart.expect
index 53dc7e8..df6d7fe 100644
--- a/pkg/front_end/parser_testcases/error_recovery/issue_46505_prime_3.crash_dart.expect
+++ b/pkg/front_end/parser_testcases/error_recovery/issue_46505_prime_3.crash_dart.expect
@@ -8,9 +8,9 @@
 }
 ^
 
-parser/error_recovery/issue_46505_prime_3.crash:3:1: Expected ';' after this.
-}
-^
+parser/error_recovery/issue_46505_prime_3.crash:2:21: Expected ';' after this.
+  Stream<List<Set<>>>
+                    ^
 
 beginCompilationUnit(class)
   beginMetadataStar(class)
@@ -48,7 +48,7 @@
             handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got '}'., Try inserting an identifier before '}'., {lexeme: }}], }, })
             handleIdentifier(, fieldDeclaration)
             handleNoFieldInitializer(})
-            handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], }, })
+            handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], >, >)
           endClassFields(null, null, null, null, null, null, 1, Stream, ;)
         endMember()
       endClassOrMixinBody(DeclarationKind.Class, 1, {, })
diff --git a/pkg/front_end/parser_testcases/error_recovery/issue_46505_prime_3.crash_dart.intertwined.expect b/pkg/front_end/parser_testcases/error_recovery/issue_46505_prime_3.crash_dart.intertwined.expect
index c9d687b6..c837519 100644
--- a/pkg/front_end/parser_testcases/error_recovery/issue_46505_prime_3.crash_dart.intertwined.expect
+++ b/pkg/front_end/parser_testcases/error_recovery/issue_46505_prime_3.crash_dart.intertwined.expect
@@ -65,8 +65,8 @@
                   parseFieldInitializerOpt(, , null, null, null, null, DeclarationKind.Class, A)
                     listener: handleNoFieldInitializer(})
                   ensureSemicolon()
-                    reportRecoverableError(, Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}])
-                      listener: handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], }, })
+                    reportRecoverableError(>, Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}])
+                      listener: handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], >, >)
                     rewriter()
                   listener: endClassFields(null, null, null, null, null, null, 1, Stream, ;)
                 listener: endMember()
diff --git a/pkg/front_end/parser_testcases/error_recovery/issue_46505_prime_4.crash_dart.expect b/pkg/front_end/parser_testcases/error_recovery/issue_46505_prime_4.crash_dart.expect
index f014c6f..1a032d2 100644
--- a/pkg/front_end/parser_testcases/error_recovery/issue_46505_prime_4.crash_dart.expect
+++ b/pkg/front_end/parser_testcases/error_recovery/issue_46505_prime_4.crash_dart.expect
@@ -8,9 +8,9 @@
 }
 ^
 
-parser/error_recovery/issue_46505_prime_4.crash:3:1: Expected ';' after this.
-}
-^
+parser/error_recovery/issue_46505_prime_4.crash:2:27: Expected ';' after this.
+  Stream<List<Set<List<>>>>
+                          ^
 
 beginCompilationUnit(class)
   beginMetadataStar(class)
@@ -52,7 +52,7 @@
             handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got '}'., Try inserting an identifier before '}'., {lexeme: }}], }, })
             handleIdentifier(, fieldDeclaration)
             handleNoFieldInitializer(})
-            handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], }, })
+            handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], >, >)
           endClassFields(null, null, null, null, null, null, 1, Stream, ;)
         endMember()
       endClassOrMixinBody(DeclarationKind.Class, 1, {, })
diff --git a/pkg/front_end/parser_testcases/error_recovery/issue_46505_prime_4.crash_dart.intertwined.expect b/pkg/front_end/parser_testcases/error_recovery/issue_46505_prime_4.crash_dart.intertwined.expect
index 0522558..0f85986 100644
--- a/pkg/front_end/parser_testcases/error_recovery/issue_46505_prime_4.crash_dart.intertwined.expect
+++ b/pkg/front_end/parser_testcases/error_recovery/issue_46505_prime_4.crash_dart.intertwined.expect
@@ -70,8 +70,8 @@
                   parseFieldInitializerOpt(, , null, null, null, null, DeclarationKind.Class, A)
                     listener: handleNoFieldInitializer(})
                   ensureSemicolon()
-                    reportRecoverableError(, Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}])
-                      listener: handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], }, })
+                    reportRecoverableError(>, Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}])
+                      listener: handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], >, >)
                     rewriter()
                   listener: endClassFields(null, null, null, null, null, null, 1, Stream, ;)
                 listener: endMember()
diff --git a/pkg/front_end/parser_testcases/error_recovery/issue_46505_prime_5.crash_dart.expect b/pkg/front_end/parser_testcases/error_recovery/issue_46505_prime_5.crash_dart.expect
index 6ccea4e..1b7755f 100644
--- a/pkg/front_end/parser_testcases/error_recovery/issue_46505_prime_5.crash_dart.expect
+++ b/pkg/front_end/parser_testcases/error_recovery/issue_46505_prime_5.crash_dart.expect
@@ -8,9 +8,9 @@
 }
 ^
 
-parser/error_recovery/issue_46505_prime_5.crash:5:1: Expected ';' after this.
-}
-^
+parser/error_recovery/issue_46505_prime_5.crash:4:48: Expected ';' after this.
+  Stream<List<Set<List</* user curser here*/>>>>
+                                               ^
 
 parser/error_recovery/issue_46505_prime_5.crash:11:45: Expected a type, but got '>>>'.
   Stream<List<Set<List</* user curser here*/>>>>
@@ -20,9 +20,9 @@
 }
 ^
 
-parser/error_recovery/issue_46505_prime_5.crash:12:1: Expected ';' after this.
-}
-^
+parser/error_recovery/issue_46505_prime_5.crash:11:48: Expected ';' after this.
+  Stream<List<Set<List</* user curser here*/>>>>
+                                               ^
 
 parser/error_recovery/issue_46505_prime_5.crash:19:45: Expected a type, but got '>>>'.
   Stream<List<Set<List</* user curser here*/>>>>
@@ -72,9 +72,9 @@
 Stream<List<Set<List</* user curser here*/>>>>
                                           ^^^
 
-parser/error_recovery/issue_46505_prime_5.crash:33:1: Expected ';' after this.
-
-WARNING: Reporting at eof --- see below for details.
+parser/error_recovery/issue_46505_prime_5.crash:32:46: Expected ';' after this.
+Stream<List<Set<List</* user curser here*/>>>>
+                                             ^
 
 beginCompilationUnit(class)
   beginMetadataStar(class)
@@ -116,7 +116,7 @@
             handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got '}'., Try inserting an identifier before '}'., {lexeme: }}], }, })
             handleIdentifier(, fieldDeclaration)
             handleNoFieldInitializer(})
-            handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], }, })
+            handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], >, >)
           endClassFields(null, null, null, null, null, null, 1, Stream, ;)
         endMember()
       endClassOrMixinBody(DeclarationKind.Class, 1, {, })
@@ -188,7 +188,7 @@
             handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got '}'., Try inserting an identifier before '}'., {lexeme: }}], }, })
             handleIdentifier(, fieldDeclaration)
             handleNoFieldInitializer(})
-            handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], }, })
+            handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], >, >)
           endClassFields(null, null, null, null, null, null, 1, Stream, ;)
         endMember()
       endClassOrMixinBody(DeclarationKind.Class, 2, {, })
@@ -371,8 +371,7 @@
       handleType(Stream, null)
       handleIdentifier(, topLevelVariableDeclaration)
       handleNoFieldInitializer()
-      handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], , )
-      // WARNING: Reporting at eof for .
+      handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], >, >)
     endTopLevelFields(null, null, null, null, null, 1, Stream, ;)
   endTopLevelDeclaration()
 endCompilationUnit(6, )
diff --git a/pkg/front_end/parser_testcases/error_recovery/issue_46505_prime_5.crash_dart.intertwined.expect b/pkg/front_end/parser_testcases/error_recovery/issue_46505_prime_5.crash_dart.intertwined.expect
index 1888ab1..a5f5174 100644
--- a/pkg/front_end/parser_testcases/error_recovery/issue_46505_prime_5.crash_dart.intertwined.expect
+++ b/pkg/front_end/parser_testcases/error_recovery/issue_46505_prime_5.crash_dart.intertwined.expect
@@ -70,8 +70,8 @@
                   parseFieldInitializerOpt(, , null, null, null, null, DeclarationKind.Class, A)
                     listener: handleNoFieldInitializer(})
                   ensureSemicolon()
-                    reportRecoverableError(, Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}])
-                      listener: handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], }, })
+                    reportRecoverableError(>, Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}])
+                      listener: handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], >, >)
                     rewriter()
                   listener: endClassFields(null, null, null, null, null, null, 1, Stream, ;)
                 listener: endMember()
@@ -184,8 +184,8 @@
                   parseFieldInitializerOpt(, , null, null, null, null, DeclarationKind.Class, B)
                     listener: handleNoFieldInitializer(})
                   ensureSemicolon()
-                    reportRecoverableError(, Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}])
-                      listener: handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], }, })
+                    reportRecoverableError(>, Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}])
+                      listener: handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], >, >)
                     rewriter()
                   listener: endClassFields(null, null, null, null, null, null, 1, Stream, ;)
                 listener: endMember()
@@ -500,9 +500,8 @@
         parseFieldInitializerOpt(, , null, null, null, null, DeclarationKind.TopLevel, null)
           listener: handleNoFieldInitializer()
         ensureSemicolon()
-          reportRecoverableError(, Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}])
-            listener: handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], , )
-            listener: // WARNING: Reporting at eof for .
+          reportRecoverableError(>, Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}])
+            listener: handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], >, >)
           rewriter()
         listener: endTopLevelFields(null, null, null, null, null, 1, Stream, ;)
   listener: endTopLevelDeclaration()
diff --git a/pkg/front_end/parser_testcases/error_recovery/keyword_named_class_methods.dart.expect b/pkg/front_end/parser_testcases/error_recovery/keyword_named_class_methods.dart.expect
index 39204f7..502bede 100644
--- a/pkg/front_end/parser_testcases/error_recovery/keyword_named_class_methods.dart.expect
+++ b/pkg/front_end/parser_testcases/error_recovery/keyword_named_class_methods.dart.expect
@@ -16,9 +16,9 @@
     return break(x-1) + 1;
            ^^^^^
 
-parser/error_recovery/keyword_named_class_methods:29:12: Expected ';' after this.
+parser/error_recovery/keyword_named_class_methods:29:5: Expected ';' after this.
     return break(x-1) + 1;
-           ^^^^^
+    ^^^^^^
 
 parser/error_recovery/keyword_named_class_methods:29:12: A break statement can't be used outside of a loop or switch statement.
     return break(x-1) + 1;
@@ -68,9 +68,9 @@
     return continue(x-1) + 1;
            ^^^^^^^^
 
-parser/error_recovery/keyword_named_class_methods:54:12: Expected ';' after this.
+parser/error_recovery/keyword_named_class_methods:54:5: Expected ';' after this.
     return continue(x-1) + 1;
-           ^^^^^^^^
+    ^^^^^^
 
 parser/error_recovery/keyword_named_class_methods:54:12: A continue statement can't be used outside of a loop or switch statement.
     return continue(x-1) + 1;
@@ -96,9 +96,9 @@
     return do(x-1) + 1;
            ^^
 
-parser/error_recovery/keyword_named_class_methods:74:12: Expected ';' after this.
+parser/error_recovery/keyword_named_class_methods:74:5: Expected ';' after this.
     return do(x-1) + 1;
-           ^^
+    ^^^^^^
 
 parser/error_recovery/keyword_named_class_methods:75:3: Expected 'while' before this.
   }
@@ -124,17 +124,17 @@
     return else(x-1) + 1;
            ^^^^
 
-parser/error_recovery/keyword_named_class_methods:84:12: Expected ';' after this.
+parser/error_recovery/keyword_named_class_methods:84:5: Expected ';' after this.
     return else(x-1) + 1;
-           ^^^^
+    ^^^^^^
 
 parser/error_recovery/keyword_named_class_methods:84:12: Expected an identifier, but got 'else'.
     return else(x-1) + 1;
            ^^^^
 
-parser/error_recovery/keyword_named_class_methods:84:12: Expected ';' after this.
+parser/error_recovery/keyword_named_class_methods:84:5: Expected ';' after this.
     return else(x-1) + 1;
-           ^^^^
+    ^^^^^^
 
 parser/error_recovery/keyword_named_class_methods:84:12: Unexpected token ';'.
     return else(x-1) + 1;
@@ -168,17 +168,17 @@
     return final(x-1) + 1;
            ^^^^^
 
-parser/error_recovery/keyword_named_class_methods:124:12: Expected ';' after this.
+parser/error_recovery/keyword_named_class_methods:124:5: Expected ';' after this.
     return final(x-1) + 1;
-           ^^^^^
+    ^^^^^^
 
 parser/error_recovery/keyword_named_class_methods:124:17: Expected an identifier, but got '('.
     return final(x-1) + 1;
                 ^
 
-parser/error_recovery/keyword_named_class_methods:124:18: Expected ';' after this.
+parser/error_recovery/keyword_named_class_methods:124:17: Expected ';' after this.
     return final(x-1) + 1;
-                 ^
+                ^
 
 parser/error_recovery/keyword_named_class_methods:124:20: Expected ';' after this.
     return final(x-1) + 1;
@@ -188,9 +188,9 @@
     return final(x-1) + 1;
                     ^
 
-parser/error_recovery/keyword_named_class_methods:124:21: Expected ';' after this.
+parser/error_recovery/keyword_named_class_methods:124:20: Expected ';' after this.
     return final(x-1) + 1;
-                    ^
+                   ^
 
 parser/error_recovery/keyword_named_class_methods:124:21: Unexpected token ';'.
     return final(x-1) + 1;
@@ -216,9 +216,9 @@
     return for(x-1) + 1;
            ^^^
 
-parser/error_recovery/keyword_named_class_methods:134:12: Expected ';' after this.
+parser/error_recovery/keyword_named_class_methods:134:5: Expected ';' after this.
     return for(x-1) + 1;
-           ^^^
+    ^^^^^^
 
 parser/error_recovery/keyword_named_class_methods:134:18: Expected ';' after this.
     return for(x-1) + 1;
@@ -228,9 +228,9 @@
     return for(x-1) + 1;
                   ^
 
-parser/error_recovery/keyword_named_class_methods:134:19: Expected ';' after this.
+parser/error_recovery/keyword_named_class_methods:134:18: Expected ';' after this.
     return for(x-1) + 1;
-                  ^
+                 ^
 
 parser/error_recovery/keyword_named_class_methods:134:21: '+' is not a prefix operator.
     return for(x-1) + 1;
@@ -244,9 +244,9 @@
     return if(x-1) + 1;
            ^^
 
-parser/error_recovery/keyword_named_class_methods:154:12: Expected ';' after this.
+parser/error_recovery/keyword_named_class_methods:154:5: Expected ';' after this.
     return if(x-1) + 1;
-           ^^
+    ^^^^^^
 
 parser/error_recovery/keyword_named_class_methods:154:20: '+' is not a prefix operator.
     return if(x-1) + 1;
@@ -272,9 +272,9 @@
     return is(x-1) + 1;
              ^
 
-parser/error_recovery/keyword_named_class_methods:184:14: Expected ';' after this.
+parser/error_recovery/keyword_named_class_methods:184:12: Expected ';' after this.
     return is(x-1) + 1;
-             ^
+           ^^
 
 parser/error_recovery/keyword_named_class_methods:207:7: 'new' can't be used as an identifier because it's a keyword.
   int new(int x) {
@@ -316,9 +316,9 @@
     return switch(x-1) + 1;
            ^^^^^^
 
-parser/error_recovery/keyword_named_class_methods:289:12: Expected ';' after this.
+parser/error_recovery/keyword_named_class_methods:289:5: Expected ';' after this.
     return switch(x-1) + 1;
-           ^^^^^^
+    ^^^^^^
 
 parser/error_recovery/keyword_named_class_methods:289:22: A switch statement must have a body, even if it is empty.
     return switch(x-1) + 1;
@@ -356,9 +356,9 @@
     return try(x-1) + 1;
            ^^^
 
-parser/error_recovery/keyword_named_class_methods:314:12: Expected ';' after this.
+parser/error_recovery/keyword_named_class_methods:314:5: Expected ';' after this.
     return try(x-1) + 1;
-           ^^^
+    ^^^^^^
 
 parser/error_recovery/keyword_named_class_methods:314:12: A try statement must have a body, even if it is empty.
     return try(x-1) + 1;
@@ -376,17 +376,17 @@
     return var(x-1) + 1;
            ^^^
 
-parser/error_recovery/keyword_named_class_methods:324:12: Expected ';' after this.
+parser/error_recovery/keyword_named_class_methods:324:5: Expected ';' after this.
     return var(x-1) + 1;
-           ^^^
+    ^^^^^^
 
 parser/error_recovery/keyword_named_class_methods:324:15: Expected an identifier, but got '('.
     return var(x-1) + 1;
               ^
 
-parser/error_recovery/keyword_named_class_methods:324:16: Expected ';' after this.
+parser/error_recovery/keyword_named_class_methods:324:15: Expected ';' after this.
     return var(x-1) + 1;
-               ^
+              ^
 
 parser/error_recovery/keyword_named_class_methods:324:18: Expected ';' after this.
     return var(x-1) + 1;
@@ -396,9 +396,9 @@
     return var(x-1) + 1;
                   ^
 
-parser/error_recovery/keyword_named_class_methods:324:19: Expected ';' after this.
+parser/error_recovery/keyword_named_class_methods:324:18: Expected ';' after this.
     return var(x-1) + 1;
-                  ^
+                 ^
 
 parser/error_recovery/keyword_named_class_methods:324:19: Unexpected token ';'.
     return var(x-1) + 1;
@@ -416,17 +416,17 @@
     return void(x-1) + 1;
            ^^^^
 
-parser/error_recovery/keyword_named_class_methods:329:12: Expected ';' after this.
+parser/error_recovery/keyword_named_class_methods:329:5: Expected ';' after this.
     return void(x-1) + 1;
-           ^^^^
+    ^^^^^^
 
 parser/error_recovery/keyword_named_class_methods:329:16: Expected an identifier, but got '('.
     return void(x-1) + 1;
                ^
 
-parser/error_recovery/keyword_named_class_methods:329:17: Expected ';' after this.
+parser/error_recovery/keyword_named_class_methods:329:16: Expected ';' after this.
     return void(x-1) + 1;
-                ^
+               ^
 
 parser/error_recovery/keyword_named_class_methods:329:19: Expected ';' after this.
     return void(x-1) + 1;
@@ -436,9 +436,9 @@
     return void(x-1) + 1;
                    ^
 
-parser/error_recovery/keyword_named_class_methods:329:20: Expected ';' after this.
+parser/error_recovery/keyword_named_class_methods:329:19: Expected ';' after this.
     return void(x-1) + 1;
-                   ^
+                  ^
 
 parser/error_recovery/keyword_named_class_methods:329:20: Unexpected token ';'.
     return void(x-1) + 1;
@@ -456,9 +456,9 @@
     return while(x-1) + 1;
            ^^^^^
 
-parser/error_recovery/keyword_named_class_methods:334:12: Expected ';' after this.
+parser/error_recovery/keyword_named_class_methods:334:5: Expected ';' after this.
     return while(x-1) + 1;
-           ^^^^^
+    ^^^^^^
 
 parser/error_recovery/keyword_named_class_methods:334:23: '+' is not a prefix operator.
     return while(x-1) + 1;
@@ -819,7 +819,7 @@
                 handleNoTypeArguments(break)
                 handleNoArguments(break)
                 handleSend(, break)
-                handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], break, break)
+                handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], return, return)
               endReturnStatement(true, return, ;)
               handleRecoverableError(BreakOutsideOfLoop, break, break)
               handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], break, break)
@@ -1128,7 +1128,7 @@
                 handleNoTypeArguments(continue)
                 handleNoArguments(continue)
                 handleSend(, continue)
-                handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], continue, continue)
+                handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], return, return)
               endReturnStatement(true, return, ;)
               handleRecoverableError(ContinueOutsideOfLoop, continue, continue)
               handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], continue, continue)
@@ -1369,7 +1369,7 @@
                 handleNoTypeArguments(do)
                 handleNoArguments(do)
                 handleSend(, do)
-                handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], do, do)
+                handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], return, return)
               endReturnStatement(true, return, ;)
               beginDoWhileStatement(do)
                 beginDoWhileStatementBody(()
@@ -1502,14 +1502,14 @@
                 handleNoTypeArguments(else)
                 handleNoArguments(else)
                 handleSend(, else)
-                handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], else, else)
+                handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], return, return)
               endReturnStatement(true, return, ;)
               handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got 'else'., Try inserting an identifier before 'else'., {lexeme: else}], else, else)
               handleIdentifier(, expression)
               handleNoTypeArguments(else)
               handleNoArguments(else)
               handleSend(, else)
-              handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], else, else)
+              handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], return, return)
               handleExpressionStatement(;)
               handleRecoverableError(Message[UnexpectedToken, Unexpected token ';'., null, {lexeme: ;}], else, else)
               handleIdentifier(x, expression)
@@ -1983,7 +1983,7 @@
                 handleNoTypeArguments(final)
                 handleNoArguments(final)
                 handleSend(, final)
-                handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], final, final)
+                handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], return, return)
               endReturnStatement(true, return, ;)
               beginMetadataStar(final)
               endMetadataStar(0)
@@ -1994,7 +1994,7 @@
                 beginInitializedIdentifier()
                   handleNoVariableInitializer()
                 endInitializedIdentifier()
-                handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], x, x)
+                handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], (, ()
               endVariablesDeclaration(1, ;)
               handleIdentifier(x, expression)
               handleNoTypeArguments(-)
@@ -2010,7 +2010,7 @@
               handleNoTypeArguments())
               handleNoArguments())
               handleSend(, ))
-              handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], ), ))
+              handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], 1, 1)
               handleExpressionStatement(;)
               handleRecoverableError(Message[UnexpectedToken, Unexpected token ';'., null, {lexeme: ;}], ), ))
               handleRecoverableError(UnsupportedPrefixPlus, +, +)
@@ -2130,7 +2130,7 @@
                 handleNoTypeArguments(for)
                 handleNoArguments(for)
                 handleSend(, for)
-                handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], for, for)
+                handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], return, return)
               endReturnStatement(true, return, ;)
               beginForStatement(for)
                 handleIdentifier(x, expression)
@@ -2147,7 +2147,7 @@
                 handleNoTypeArguments())
                 handleNoArguments())
                 handleSend(, ))
-                handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], ), ))
+                handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], 1, 1)
                 handleExpressionStatement(;)
                 handleForLoopParts(for, (, ;, 0)
                 beginForStatementBody(+)
@@ -2384,7 +2384,7 @@
                 handleNoTypeArguments(if)
                 handleNoArguments(if)
                 handleSend(, if)
-                handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], if, if)
+                handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], return, return)
               endReturnStatement(true, return, ;)
               beginIfStatement(if)
                 handleIdentifier(x, expression)
@@ -2754,7 +2754,7 @@
                   handleType(, null)
                 endIsOperatorType(is)
                 handleIsOperator(is, null)
-                handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], (, ()
+                handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], is, is)
               endReturnStatement(true, return, ;)
               handleIdentifier(x, expression)
               handleNoTypeArguments(-)
@@ -3984,7 +3984,7 @@
                 handleNoTypeArguments(switch)
                 handleNoArguments(switch)
                 handleSend(, switch)
-                handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], switch, switch)
+                handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], return, return)
               endReturnStatement(true, return, ;)
               beginSwitchStatement(switch)
                 handleIdentifier(x, expression)
@@ -4299,7 +4299,7 @@
                 handleNoTypeArguments(try)
                 handleNoArguments(try)
                 handleSend(, try)
-                handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], try, try)
+                handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], return, return)
               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)
@@ -4425,7 +4425,7 @@
                 handleNoTypeArguments(var)
                 handleNoArguments(var)
                 handleSend(, var)
-                handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], var, var)
+                handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], return, return)
               endReturnStatement(true, return, ;)
               beginMetadataStar(var)
               endMetadataStar(0)
@@ -4436,7 +4436,7 @@
                 beginInitializedIdentifier()
                   handleNoVariableInitializer()
                 endInitializedIdentifier()
-                handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], x, x)
+                handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], (, ()
               endVariablesDeclaration(1, ;)
               handleIdentifier(x, expression)
               handleNoTypeArguments(-)
@@ -4452,7 +4452,7 @@
               handleNoTypeArguments())
               handleNoArguments())
               handleSend(, ))
-              handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], ), ))
+              handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], 1, 1)
               handleExpressionStatement(;)
               handleRecoverableError(Message[UnexpectedToken, Unexpected token ';'., null, {lexeme: ;}], ), ))
               handleRecoverableError(UnsupportedPrefixPlus, +, +)
@@ -4512,7 +4512,7 @@
                 handleNoTypeArguments(void)
                 handleNoArguments(void)
                 handleSend(, void)
-                handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], void, void)
+                handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], return, return)
               endReturnStatement(true, return, ;)
               beginMetadataStar(void)
               endMetadataStar(0)
@@ -4523,7 +4523,7 @@
                 beginInitializedIdentifier()
                   handleNoVariableInitializer()
                 endInitializedIdentifier()
-                handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], x, x)
+                handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], (, ()
               endVariablesDeclaration(1, ;)
               handleIdentifier(x, expression)
               handleNoTypeArguments(-)
@@ -4539,7 +4539,7 @@
               handleNoTypeArguments())
               handleNoArguments())
               handleSend(, ))
-              handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], ), ))
+              handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], 1, 1)
               handleExpressionStatement(;)
               handleRecoverableError(Message[UnexpectedToken, Unexpected token ';'., null, {lexeme: ;}], ), ))
               handleRecoverableError(UnsupportedPrefixPlus, +, +)
@@ -4599,7 +4599,7 @@
                 handleNoTypeArguments(while)
                 handleNoArguments(while)
                 handleSend(, while)
-                handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], while, while)
+                handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], return, return)
               endReturnStatement(true, return, ;)
               beginWhileStatement(while)
                 handleIdentifier(x, expression)
diff --git a/pkg/front_end/parser_testcases/error_recovery/keyword_named_class_methods.dart.intertwined.expect b/pkg/front_end/parser_testcases/error_recovery/keyword_named_class_methods.dart.intertwined.expect
index 983ce33..499b444 100644
--- a/pkg/front_end/parser_testcases/error_recovery/keyword_named_class_methods.dart.intertwined.expect
+++ b/pkg/front_end/parser_testcases/error_recovery/keyword_named_class_methods.dart.intertwined.expect
@@ -856,8 +856,8 @@
                                     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)
+                          reportRecoverableError(return, Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}])
+                            listener: handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], return, return)
                           rewriter()
                         listener: endReturnStatement(true, return, ;)
                         inGenerator()
@@ -1628,8 +1628,8 @@
                                     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)
+                          reportRecoverableError(return, Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}])
+                            listener: handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], return, return)
                           rewriter()
                         listener: endReturnStatement(true, return, ;)
                         inGenerator()
@@ -2242,8 +2242,8 @@
                                     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)
+                          reportRecoverableError(return, Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}])
+                            listener: handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], return, return)
                           rewriter()
                         listener: endReturnStatement(true, return, ;)
                         inGenerator()
@@ -2325,7 +2325,7 @@
                             ensureCloseParen(, ()
                           listener: handleParenthesizedCondition(()
                         ensureSemicolon())
-                          reportRecoverableError(, Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}])
+                          reportRecoverableError((, Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}])
                             listener: handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], }, })
                           rewriter()
                         listener: endDoWhileStatement(do, while, ;)
@@ -2589,8 +2589,8 @@
                                     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)
+                          reportRecoverableError(return, Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}])
+                            listener: handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], return, return)
                           rewriter()
                         listener: endReturnStatement(true, return, ;)
                         inGenerator()
@@ -2618,8 +2618,8 @@
                                         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)
+                              reportRecoverableError(return, Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}])
+                                listener: handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], return, return)
                               rewriter()
                             listener: handleExpressionStatement(;)
                   reportRecoverableError(;, Message[UnexpectedToken, Unexpected token ';'., null, {lexeme: ;}])
@@ -3798,8 +3798,8 @@
                                     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)
+                          reportRecoverableError(return, Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}])
+                            listener: handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], return, return)
                           rewriter()
                         listener: endReturnStatement(true, return, ;)
                         inGenerator()
@@ -3824,8 +3824,8 @@
                               listener: handleNoVariableInitializer()
                             listener: endInitializedIdentifier()
                           ensureSemicolon()
-                            reportRecoverableError(, Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}])
-                              listener: handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], x, x)
+                            reportRecoverableError((, Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}])
+                              listener: handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], (, ()
                             rewriter()
                           listener: endVariablesDeclaration(1, ;)
                   notEofOrValue(}, x)
@@ -3882,8 +3882,8 @@
                                         listener: handleNoArguments())
                                       listener: handleSend(, ))
                             ensureSemicolon()
-                              reportRecoverableError(, Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}])
-                                listener: handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], ), ))
+                              reportRecoverableError(1, Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}])
+                                listener: handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], 1, 1)
                               rewriter()
                             listener: handleExpressionStatement(;)
                   reportRecoverableError(;, Message[UnexpectedToken, Unexpected token ';'., null, {lexeme: ;}])
@@ -4184,8 +4184,8 @@
                                     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)
+                          reportRecoverableError(return, Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}])
+                            listener: handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], return, return)
                           rewriter()
                         listener: endReturnStatement(true, return, ;)
                         inGenerator()
@@ -4242,8 +4242,8 @@
                                           listener: handleNoArguments())
                                         listener: handleSend(, ))
                               ensureSemicolon()
-                                reportRecoverableError(, Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}])
-                                  listener: handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], ), ))
+                                reportRecoverableError(1, Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}])
+                                  listener: handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], 1, 1)
                                 rewriter()
                               listener: handleExpressionStatement(;)
                             listener: handleForLoopParts(for, (, ;, 0)
@@ -4831,8 +4831,8 @@
                                     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)
+                          reportRecoverableError(return, Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}])
+                            listener: handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], return, return)
                           rewriter()
                         listener: endReturnStatement(true, return, ;)
                         inGenerator()
@@ -5751,8 +5751,8 @@
                               listener: handleIsOperator(is, null)
                               skipChainedAsIsOperators()
                         ensureSemicolon()
-                          reportRecoverableError(, Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}])
-                            listener: handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], (, ()
+                          reportRecoverableError(is, Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}])
+                            listener: handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], is, is)
                           rewriter()
                         listener: endReturnStatement(true, return, ;)
                         inGenerator()
@@ -8807,8 +8807,8 @@
                                     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)
+                          reportRecoverableError(return, Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}])
+                            listener: handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], return, return)
                           rewriter()
                         listener: endReturnStatement(true, return, ;)
                         inGenerator()
@@ -9593,8 +9593,8 @@
                                     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)
+                          reportRecoverableError(return, Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}])
+                            listener: handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], return, return)
                           rewriter()
                         listener: endReturnStatement(true, return, ;)
                         inGenerator()
@@ -9922,8 +9922,8 @@
                                     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)
+                          reportRecoverableError(return, Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}])
+                            listener: handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], return, return)
                           rewriter()
                         listener: endReturnStatement(true, return, ;)
                         inGenerator()
@@ -9948,8 +9948,8 @@
                               listener: handleNoVariableInitializer()
                             listener: endInitializedIdentifier()
                           ensureSemicolon()
-                            reportRecoverableError(, Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}])
-                              listener: handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], x, x)
+                            reportRecoverableError((, Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}])
+                              listener: handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], (, ()
                             rewriter()
                           listener: endVariablesDeclaration(1, ;)
                   notEofOrValue(}, x)
@@ -10006,8 +10006,8 @@
                                         listener: handleNoArguments())
                                       listener: handleSend(, ))
                             ensureSemicolon()
-                              reportRecoverableError(, Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}])
-                                listener: handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], ), ))
+                              reportRecoverableError(1, Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}])
+                                listener: handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], 1, 1)
                               rewriter()
                             listener: handleExpressionStatement(;)
                   reportRecoverableError(;, Message[UnexpectedToken, Unexpected token ';'., null, {lexeme: ;}])
@@ -10161,8 +10161,8 @@
                                       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)
+                          reportRecoverableError(return, Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}])
+                            listener: handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], return, return)
                           rewriter()
                         listener: endReturnStatement(true, return, ;)
                         inGenerator()
@@ -10188,8 +10188,8 @@
                                 listener: handleNoVariableInitializer()
                               listener: endInitializedIdentifier()
                             ensureSemicolon()
-                              reportRecoverableError(, Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}])
-                                listener: handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], x, x)
+                              reportRecoverableError((, Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}])
+                                listener: handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], (, ()
                               rewriter()
                             listener: endVariablesDeclaration(1, ;)
                   notEofOrValue(}, x)
@@ -10246,8 +10246,8 @@
                                         listener: handleNoArguments())
                                       listener: handleSend(, ))
                             ensureSemicolon()
-                              reportRecoverableError(, Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}])
-                                listener: handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], ), ))
+                              reportRecoverableError(1, Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}])
+                                listener: handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], 1, 1)
                               rewriter()
                             listener: handleExpressionStatement(;)
                   reportRecoverableError(;, Message[UnexpectedToken, Unexpected token ';'., null, {lexeme: ;}])
@@ -10401,8 +10401,8 @@
                                     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)
+                          reportRecoverableError(return, Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}])
+                            listener: handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], return, return)
                           rewriter()
                         listener: endReturnStatement(true, return, ;)
                         inGenerator()
diff --git a/pkg/front_end/parser_testcases/error_recovery/keyword_named_top_level_methods.dart.expect b/pkg/front_end/parser_testcases/error_recovery/keyword_named_top_level_methods.dart.expect
index cca2b0b..076896b 100644
--- a/pkg/front_end/parser_testcases/error_recovery/keyword_named_top_level_methods.dart.expect
+++ b/pkg/front_end/parser_testcases/error_recovery/keyword_named_top_level_methods.dart.expect
@@ -16,9 +16,9 @@
   return break(x-1) + 1;
          ^^^^^
 
-parser/error_recovery/keyword_named_top_level_methods:28:10: Expected ';' after this.
+parser/error_recovery/keyword_named_top_level_methods:28:3: Expected ';' after this.
   return break(x-1) + 1;
-         ^^^^^
+  ^^^^^^
 
 parser/error_recovery/keyword_named_top_level_methods:28:10: A break statement can't be used outside of a loop or switch statement.
   return break(x-1) + 1;
@@ -68,9 +68,9 @@
   return continue(x-1) + 1;
          ^^^^^^^^
 
-parser/error_recovery/keyword_named_top_level_methods:53:10: Expected ';' after this.
+parser/error_recovery/keyword_named_top_level_methods:53:3: Expected ';' after this.
   return continue(x-1) + 1;
-         ^^^^^^^^
+  ^^^^^^
 
 parser/error_recovery/keyword_named_top_level_methods:53:10: A continue statement can't be used outside of a loop or switch statement.
   return continue(x-1) + 1;
@@ -96,9 +96,9 @@
   return do(x-1) + 1;
          ^^
 
-parser/error_recovery/keyword_named_top_level_methods:73:10: Expected ';' after this.
+parser/error_recovery/keyword_named_top_level_methods:73:3: Expected ';' after this.
   return do(x-1) + 1;
-         ^^
+  ^^^^^^
 
 parser/error_recovery/keyword_named_top_level_methods:74:1: Expected 'while' before this.
 }
@@ -124,17 +124,17 @@
   return else(x-1) + 1;
          ^^^^
 
-parser/error_recovery/keyword_named_top_level_methods:83:10: Expected ';' after this.
+parser/error_recovery/keyword_named_top_level_methods:83:3: Expected ';' after this.
   return else(x-1) + 1;
-         ^^^^
+  ^^^^^^
 
 parser/error_recovery/keyword_named_top_level_methods:83:10: Expected an identifier, but got 'else'.
   return else(x-1) + 1;
          ^^^^
 
-parser/error_recovery/keyword_named_top_level_methods:83:10: Expected ';' after this.
+parser/error_recovery/keyword_named_top_level_methods:83:3: Expected ';' after this.
   return else(x-1) + 1;
-         ^^^^
+  ^^^^^^
 
 parser/error_recovery/keyword_named_top_level_methods:83:10: Unexpected token ';'.
   return else(x-1) + 1;
@@ -168,17 +168,17 @@
   return final(x-1) + 1;
          ^^^^^
 
-parser/error_recovery/keyword_named_top_level_methods:123:10: Expected ';' after this.
+parser/error_recovery/keyword_named_top_level_methods:123:3: Expected ';' after this.
   return final(x-1) + 1;
-         ^^^^^
+  ^^^^^^
 
 parser/error_recovery/keyword_named_top_level_methods:123:15: Expected an identifier, but got '('.
   return final(x-1) + 1;
               ^
 
-parser/error_recovery/keyword_named_top_level_methods:123:16: Expected ';' after this.
+parser/error_recovery/keyword_named_top_level_methods:123:15: Expected ';' after this.
   return final(x-1) + 1;
-               ^
+              ^
 
 parser/error_recovery/keyword_named_top_level_methods:123:18: Expected ';' after this.
   return final(x-1) + 1;
@@ -188,9 +188,9 @@
   return final(x-1) + 1;
                   ^
 
-parser/error_recovery/keyword_named_top_level_methods:123:19: Expected ';' after this.
+parser/error_recovery/keyword_named_top_level_methods:123:18: Expected ';' after this.
   return final(x-1) + 1;
-                  ^
+                 ^
 
 parser/error_recovery/keyword_named_top_level_methods:123:19: Unexpected token ';'.
   return final(x-1) + 1;
@@ -216,9 +216,9 @@
   return for(x-1) + 1;
          ^^^
 
-parser/error_recovery/keyword_named_top_level_methods:133:10: Expected ';' after this.
+parser/error_recovery/keyword_named_top_level_methods:133:3: Expected ';' after this.
   return for(x-1) + 1;
-         ^^^
+  ^^^^^^
 
 parser/error_recovery/keyword_named_top_level_methods:133:16: Expected ';' after this.
   return for(x-1) + 1;
@@ -228,9 +228,9 @@
   return for(x-1) + 1;
                 ^
 
-parser/error_recovery/keyword_named_top_level_methods:133:17: Expected ';' after this.
+parser/error_recovery/keyword_named_top_level_methods:133:16: Expected ';' after this.
   return for(x-1) + 1;
-                ^
+               ^
 
 parser/error_recovery/keyword_named_top_level_methods:133:19: '+' is not a prefix operator.
   return for(x-1) + 1;
@@ -244,9 +244,9 @@
   return if(x-1) + 1;
          ^^
 
-parser/error_recovery/keyword_named_top_level_methods:153:10: Expected ';' after this.
+parser/error_recovery/keyword_named_top_level_methods:153:3: Expected ';' after this.
   return if(x-1) + 1;
-         ^^
+  ^^^^^^
 
 parser/error_recovery/keyword_named_top_level_methods:153:18: '+' is not a prefix operator.
   return if(x-1) + 1;
@@ -272,9 +272,9 @@
   return is(x-1) + 1;
            ^
 
-parser/error_recovery/keyword_named_top_level_methods:183:12: Expected ';' after this.
+parser/error_recovery/keyword_named_top_level_methods:183:10: Expected ';' after this.
   return is(x-1) + 1;
-           ^
+         ^^
 
 parser/error_recovery/keyword_named_top_level_methods:206:5: 'new' can't be used as an identifier because it's a keyword.
 int new(int x) {
@@ -316,9 +316,9 @@
   return switch(x-1) + 1;
          ^^^^^^
 
-parser/error_recovery/keyword_named_top_level_methods:288:10: Expected ';' after this.
+parser/error_recovery/keyword_named_top_level_methods:288:3: Expected ';' after this.
   return switch(x-1) + 1;
-         ^^^^^^
+  ^^^^^^
 
 parser/error_recovery/keyword_named_top_level_methods:288:20: A switch statement must have a body, even if it is empty.
   return switch(x-1) + 1;
@@ -348,9 +348,9 @@
   return try(x-1) + 1;
          ^^^
 
-parser/error_recovery/keyword_named_top_level_methods:313:10: Expected ';' after this.
+parser/error_recovery/keyword_named_top_level_methods:313:3: Expected ';' after this.
   return try(x-1) + 1;
-         ^^^
+  ^^^^^^
 
 parser/error_recovery/keyword_named_top_level_methods:313:10: A try statement must have a body, even if it is empty.
   return try(x-1) + 1;
@@ -368,17 +368,17 @@
   return var(x-1) + 1;
          ^^^
 
-parser/error_recovery/keyword_named_top_level_methods:323:10: Expected ';' after this.
+parser/error_recovery/keyword_named_top_level_methods:323:3: Expected ';' after this.
   return var(x-1) + 1;
-         ^^^
+  ^^^^^^
 
 parser/error_recovery/keyword_named_top_level_methods:323:13: Expected an identifier, but got '('.
   return var(x-1) + 1;
             ^
 
-parser/error_recovery/keyword_named_top_level_methods:323:14: Expected ';' after this.
+parser/error_recovery/keyword_named_top_level_methods:323:13: Expected ';' after this.
   return var(x-1) + 1;
-             ^
+            ^
 
 parser/error_recovery/keyword_named_top_level_methods:323:16: Expected ';' after this.
   return var(x-1) + 1;
@@ -388,9 +388,9 @@
   return var(x-1) + 1;
                 ^
 
-parser/error_recovery/keyword_named_top_level_methods:323:17: Expected ';' after this.
+parser/error_recovery/keyword_named_top_level_methods:323:16: Expected ';' after this.
   return var(x-1) + 1;
-                ^
+               ^
 
 parser/error_recovery/keyword_named_top_level_methods:323:17: Unexpected token ';'.
   return var(x-1) + 1;
@@ -408,17 +408,17 @@
   return void(x-1) + 1;
          ^^^^
 
-parser/error_recovery/keyword_named_top_level_methods:328:10: Expected ';' after this.
+parser/error_recovery/keyword_named_top_level_methods:328:3: Expected ';' after this.
   return void(x-1) + 1;
-         ^^^^
+  ^^^^^^
 
 parser/error_recovery/keyword_named_top_level_methods:328:14: Expected an identifier, but got '('.
   return void(x-1) + 1;
              ^
 
-parser/error_recovery/keyword_named_top_level_methods:328:15: Expected ';' after this.
+parser/error_recovery/keyword_named_top_level_methods:328:14: Expected ';' after this.
   return void(x-1) + 1;
-              ^
+             ^
 
 parser/error_recovery/keyword_named_top_level_methods:328:17: Expected ';' after this.
   return void(x-1) + 1;
@@ -428,9 +428,9 @@
   return void(x-1) + 1;
                  ^
 
-parser/error_recovery/keyword_named_top_level_methods:328:18: Expected ';' after this.
+parser/error_recovery/keyword_named_top_level_methods:328:17: Expected ';' after this.
   return void(x-1) + 1;
-                 ^
+                ^
 
 parser/error_recovery/keyword_named_top_level_methods:328:18: Unexpected token ';'.
   return void(x-1) + 1;
@@ -448,9 +448,9 @@
   return while(x-1) + 1;
          ^^^^^
 
-parser/error_recovery/keyword_named_top_level_methods:333:10: Expected ';' after this.
+parser/error_recovery/keyword_named_top_level_methods:333:3: Expected ';' after this.
   return while(x-1) + 1;
-         ^^^^^
+  ^^^^^^
 
 parser/error_recovery/keyword_named_top_level_methods:333:21: '+' is not a prefix operator.
   return while(x-1) + 1;
@@ -793,7 +793,7 @@
           handleNoTypeArguments(break)
           handleNoArguments(break)
           handleSend(, break)
-          handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], break, break)
+          handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], return, return)
         endReturnStatement(true, return, ;)
         handleRecoverableError(BreakOutsideOfLoop, break, break)
         handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], break, break)
@@ -1097,7 +1097,7 @@
           handleNoTypeArguments(continue)
           handleNoArguments(continue)
           handleSend(, continue)
-          handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], continue, continue)
+          handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], return, return)
         endReturnStatement(true, return, ;)
         handleRecoverableError(ContinueOutsideOfLoop, continue, continue)
         handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], continue, continue)
@@ -1334,7 +1334,7 @@
           handleNoTypeArguments(do)
           handleNoArguments(do)
           handleSend(, do)
-          handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], do, do)
+          handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], return, return)
         endReturnStatement(true, return, ;)
         beginDoWhileStatement(do)
           beginDoWhileStatementBody(()
@@ -1465,14 +1465,14 @@
           handleNoTypeArguments(else)
           handleNoArguments(else)
           handleSend(, else)
-          handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], else, else)
+          handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], return, return)
         endReturnStatement(true, return, ;)
         handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got 'else'., Try inserting an identifier before 'else'., {lexeme: else}], else, else)
         handleIdentifier(, expression)
         handleNoTypeArguments(else)
         handleNoArguments(else)
         handleSend(, else)
-        handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], else, else)
+        handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], return, return)
         handleExpressionStatement(;)
         handleRecoverableError(Message[UnexpectedToken, Unexpected token ';'., null, {lexeme: ;}], else, else)
         handleIdentifier(x, expression)
@@ -1938,7 +1938,7 @@
           handleNoTypeArguments(final)
           handleNoArguments(final)
           handleSend(, final)
-          handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], final, final)
+          handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], return, return)
         endReturnStatement(true, return, ;)
         beginMetadataStar(final)
         endMetadataStar(0)
@@ -1949,7 +1949,7 @@
           beginInitializedIdentifier()
             handleNoVariableInitializer()
           endInitializedIdentifier()
-          handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], x, x)
+          handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], (, ()
         endVariablesDeclaration(1, ;)
         handleIdentifier(x, expression)
         handleNoTypeArguments(-)
@@ -1965,7 +1965,7 @@
         handleNoTypeArguments())
         handleNoArguments())
         handleSend(, ))
-        handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], ), ))
+        handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], 1, 1)
         handleExpressionStatement(;)
         handleRecoverableError(Message[UnexpectedToken, Unexpected token ';'., null, {lexeme: ;}], ), ))
         handleRecoverableError(UnsupportedPrefixPlus, +, +)
@@ -2083,7 +2083,7 @@
           handleNoTypeArguments(for)
           handleNoArguments(for)
           handleSend(, for)
-          handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], for, for)
+          handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], return, return)
         endReturnStatement(true, return, ;)
         beginForStatement(for)
           handleIdentifier(x, expression)
@@ -2100,7 +2100,7 @@
           handleNoTypeArguments())
           handleNoArguments())
           handleSend(, ))
-          handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], ), ))
+          handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], 1, 1)
           handleExpressionStatement(;)
           handleForLoopParts(for, (, ;, 0)
           beginForStatementBody(+)
@@ -2333,7 +2333,7 @@
           handleNoTypeArguments(if)
           handleNoArguments(if)
           handleSend(, if)
-          handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], if, if)
+          handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], return, return)
         endReturnStatement(true, return, ;)
         beginIfStatement(if)
           handleIdentifier(x, expression)
@@ -2697,7 +2697,7 @@
             handleType(, null)
           endIsOperatorType(is)
           handleIsOperator(is, null)
-          handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], (, ()
+          handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], is, is)
         endReturnStatement(true, return, ;)
         handleIdentifier(x, expression)
         handleNoTypeArguments(-)
@@ -3906,7 +3906,7 @@
           handleNoTypeArguments(switch)
           handleNoArguments(switch)
           handleSend(, switch)
-          handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], switch, switch)
+          handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], return, return)
         endReturnStatement(true, return, ;)
         beginSwitchStatement(switch)
           handleIdentifier(x, expression)
@@ -4205,7 +4205,7 @@
           handleNoTypeArguments(try)
           handleNoArguments(try)
           handleSend(, try)
-          handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], try, try)
+          handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], return, return)
         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)
@@ -4329,7 +4329,7 @@
           handleNoTypeArguments(var)
           handleNoArguments(var)
           handleSend(, var)
-          handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], var, var)
+          handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], return, return)
         endReturnStatement(true, return, ;)
         beginMetadataStar(var)
         endMetadataStar(0)
@@ -4340,7 +4340,7 @@
           beginInitializedIdentifier()
             handleNoVariableInitializer()
           endInitializedIdentifier()
-          handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], x, x)
+          handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], (, ()
         endVariablesDeclaration(1, ;)
         handleIdentifier(x, expression)
         handleNoTypeArguments(-)
@@ -4356,7 +4356,7 @@
         handleNoTypeArguments())
         handleNoArguments())
         handleSend(, ))
-        handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], ), ))
+        handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], 1, 1)
         handleExpressionStatement(;)
         handleRecoverableError(Message[UnexpectedToken, Unexpected token ';'., null, {lexeme: ;}], ), ))
         handleRecoverableError(UnsupportedPrefixPlus, +, +)
@@ -4415,7 +4415,7 @@
           handleNoTypeArguments(void)
           handleNoArguments(void)
           handleSend(, void)
-          handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], void, void)
+          handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], return, return)
         endReturnStatement(true, return, ;)
         beginMetadataStar(void)
         endMetadataStar(0)
@@ -4426,7 +4426,7 @@
           beginInitializedIdentifier()
             handleNoVariableInitializer()
           endInitializedIdentifier()
-          handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], x, x)
+          handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], (, ()
         endVariablesDeclaration(1, ;)
         handleIdentifier(x, expression)
         handleNoTypeArguments(-)
@@ -4442,7 +4442,7 @@
         handleNoTypeArguments())
         handleNoArguments())
         handleSend(, ))
-        handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], ), ))
+        handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], 1, 1)
         handleExpressionStatement(;)
         handleRecoverableError(Message[UnexpectedToken, Unexpected token ';'., null, {lexeme: ;}], ), ))
         handleRecoverableError(UnsupportedPrefixPlus, +, +)
@@ -4501,7 +4501,7 @@
           handleNoTypeArguments(while)
           handleNoArguments(while)
           handleSend(, while)
-          handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], while, while)
+          handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], return, return)
         endReturnStatement(true, return, ;)
         beginWhileStatement(while)
           handleIdentifier(x, expression)
diff --git a/pkg/front_end/parser_testcases/error_recovery/keyword_named_top_level_methods.dart.intertwined.expect b/pkg/front_end/parser_testcases/error_recovery/keyword_named_top_level_methods.dart.intertwined.expect
index 4b6c26a..9c70513 100644
--- a/pkg/front_end/parser_testcases/error_recovery/keyword_named_top_level_methods.dart.intertwined.expect
+++ b/pkg/front_end/parser_testcases/error_recovery/keyword_named_top_level_methods.dart.intertwined.expect
@@ -808,8 +808,8 @@
                             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)
+                  reportRecoverableError(return, Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}])
+                    listener: handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], return, return)
                   rewriter()
                 listener: endReturnStatement(true, return, ;)
                 inGenerator()
@@ -1560,8 +1560,8 @@
                             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)
+                  reportRecoverableError(return, Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}])
+                    listener: handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], return, return)
                   rewriter()
                 listener: endReturnStatement(true, return, ;)
                 inGenerator()
@@ -2158,8 +2158,8 @@
                             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)
+                  reportRecoverableError(return, Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}])
+                    listener: handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], return, return)
                   rewriter()
                 listener: endReturnStatement(true, return, ;)
                 inGenerator()
@@ -2241,7 +2241,7 @@
                     ensureCloseParen(, ()
                   listener: handleParenthesizedCondition(()
                 ensureSemicolon())
-                  reportRecoverableError(, Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}])
+                  reportRecoverableError((, Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}])
                     listener: handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], }, })
                   rewriter()
                 listener: endDoWhileStatement(do, while, ;)
@@ -2497,8 +2497,8 @@
                             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)
+                  reportRecoverableError(return, Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}])
+                    listener: handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], return, return)
                   rewriter()
                 listener: endReturnStatement(true, return, ;)
                 inGenerator()
@@ -2526,8 +2526,8 @@
                                 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)
+                      reportRecoverableError(return, Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}])
+                        listener: handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], return, return)
                       rewriter()
                     listener: handleExpressionStatement(;)
           reportRecoverableError(;, Message[UnexpectedToken, Unexpected token ';'., null, {lexeme: ;}])
@@ -3674,8 +3674,8 @@
                             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)
+                  reportRecoverableError(return, Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}])
+                    listener: handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], return, return)
                   rewriter()
                 listener: endReturnStatement(true, return, ;)
                 inGenerator()
@@ -3700,8 +3700,8 @@
                       listener: handleNoVariableInitializer()
                     listener: endInitializedIdentifier()
                   ensureSemicolon()
-                    reportRecoverableError(, Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}])
-                      listener: handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], x, x)
+                    reportRecoverableError((, Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}])
+                      listener: handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], (, ()
                     rewriter()
                   listener: endVariablesDeclaration(1, ;)
           notEofOrValue(}, x)
@@ -3758,8 +3758,8 @@
                                 listener: handleNoArguments())
                               listener: handleSend(, ))
                     ensureSemicolon()
-                      reportRecoverableError(, Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}])
-                        listener: handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], ), ))
+                      reportRecoverableError(1, Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}])
+                        listener: handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], 1, 1)
                       rewriter()
                     listener: handleExpressionStatement(;)
           reportRecoverableError(;, Message[UnexpectedToken, Unexpected token ';'., null, {lexeme: ;}])
@@ -4052,8 +4052,8 @@
                             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)
+                  reportRecoverableError(return, Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}])
+                    listener: handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], return, return)
                   rewriter()
                 listener: endReturnStatement(true, return, ;)
                 inGenerator()
@@ -4110,8 +4110,8 @@
                                   listener: handleNoArguments())
                                 listener: handleSend(, ))
                       ensureSemicolon()
-                        reportRecoverableError(, Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}])
-                          listener: handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], ), ))
+                        reportRecoverableError(1, Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}])
+                          listener: handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], 1, 1)
                         rewriter()
                       listener: handleExpressionStatement(;)
                     listener: handleForLoopParts(for, (, ;, 0)
@@ -4682,8 +4682,8 @@
                             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)
+                  reportRecoverableError(return, Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}])
+                    listener: handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], return, return)
                   rewriter()
                 listener: endReturnStatement(true, return, ;)
                 inGenerator()
@@ -5578,8 +5578,8 @@
                       listener: handleIsOperator(is, null)
                       skipChainedAsIsOperators()
                 ensureSemicolon()
-                  reportRecoverableError(, Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}])
-                    listener: handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], (, ()
+                  reportRecoverableError(is, Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}])
+                    listener: handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], is, is)
                   rewriter()
                 listener: endReturnStatement(true, return, ;)
                 inGenerator()
@@ -8547,8 +8547,8 @@
                             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)
+                  reportRecoverableError(return, Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}])
+                    listener: handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], return, return)
                   rewriter()
                 listener: endReturnStatement(true, return, ;)
                 inGenerator()
@@ -9288,8 +9288,8 @@
                             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)
+                  reportRecoverableError(return, Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}])
+                    listener: handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], return, return)
                   rewriter()
                 listener: endReturnStatement(true, return, ;)
                 inGenerator()
@@ -9609,8 +9609,8 @@
                             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)
+                  reportRecoverableError(return, Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}])
+                    listener: handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], return, return)
                   rewriter()
                 listener: endReturnStatement(true, return, ;)
                 inGenerator()
@@ -9635,8 +9635,8 @@
                       listener: handleNoVariableInitializer()
                     listener: endInitializedIdentifier()
                   ensureSemicolon()
-                    reportRecoverableError(, Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}])
-                      listener: handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], x, x)
+                    reportRecoverableError((, Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}])
+                      listener: handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], (, ()
                     rewriter()
                   listener: endVariablesDeclaration(1, ;)
           notEofOrValue(}, x)
@@ -9693,8 +9693,8 @@
                                 listener: handleNoArguments())
                               listener: handleSend(, ))
                     ensureSemicolon()
-                      reportRecoverableError(, Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}])
-                        listener: handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], ), ))
+                      reportRecoverableError(1, Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}])
+                        listener: handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], 1, 1)
                       rewriter()
                     listener: handleExpressionStatement(;)
           reportRecoverableError(;, Message[UnexpectedToken, Unexpected token ';'., null, {lexeme: ;}])
@@ -9844,8 +9844,8 @@
                               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)
+                  reportRecoverableError(return, Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}])
+                    listener: handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], return, return)
                   rewriter()
                 listener: endReturnStatement(true, return, ;)
                 inGenerator()
@@ -9871,8 +9871,8 @@
                         listener: handleNoVariableInitializer()
                       listener: endInitializedIdentifier()
                     ensureSemicolon()
-                      reportRecoverableError(, Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}])
-                        listener: handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], x, x)
+                      reportRecoverableError((, Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}])
+                        listener: handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], (, ()
                       rewriter()
                     listener: endVariablesDeclaration(1, ;)
           notEofOrValue(}, x)
@@ -9929,8 +9929,8 @@
                                 listener: handleNoArguments())
                               listener: handleSend(, ))
                     ensureSemicolon()
-                      reportRecoverableError(, Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}])
-                        listener: handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], ), ))
+                      reportRecoverableError(1, Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}])
+                        listener: handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], 1, 1)
                       rewriter()
                     listener: handleExpressionStatement(;)
           reportRecoverableError(;, Message[UnexpectedToken, Unexpected token ';'., null, {lexeme: ;}])
@@ -10080,8 +10080,8 @@
                             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)
+                  reportRecoverableError(return, Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}])
+                    listener: handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], return, return)
                   rewriter()
                 listener: endReturnStatement(true, return, ;)
                 inGenerator()
diff --git a/pkg/front_end/parser_testcases/nnbd/issue_40267_method_call_with_type_arguments.dart.expect b/pkg/front_end/parser_testcases/nnbd/issue_40267_method_call_with_type_arguments.dart.expect
index 9f72c57..c89447b 100644
--- a/pkg/front_end/parser_testcases/nnbd/issue_40267_method_call_with_type_arguments.dart.expect
+++ b/pkg/front_end/parser_testcases/nnbd/issue_40267_method_call_with_type_arguments.dart.expect
@@ -16,9 +16,9 @@
 }
 ^
 
-parser/nnbd/issue_40267_method_call_with_type_arguments:6:1: Expected ';' after this.
-}
-^
+parser/nnbd/issue_40267_method_call_with_type_arguments:5:13: Expected ';' after this.
+  a?<Foo>(b);
+            ^
 
 beginCompilationUnit(f)
   beginMetadataStar(f)
@@ -101,7 +101,7 @@
           handleNoArguments(})
           handleSend(, })
         endConditionalExpression(?, :)
-        handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], }, })
+        handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], ;, ;)
         handleExpressionStatement(;)
       endBlockFunctionBody(3, {, })
     endTopLevelMethod(f, null, })
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 8a09850..e2d78b9 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
@@ -191,8 +191,8 @@
                                   listener: handleSend(, })
                         listener: endConditionalExpression(?, :)
                   ensureSemicolon()
-                    reportRecoverableError(, Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}])
-                      listener: handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], }, })
+                    reportRecoverableError(;, Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}])
+                      listener: handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], ;, ;)
                     rewriter()
                   listener: handleExpressionStatement(;)
           notEofOrValue(}, })
diff --git a/pkg/front_end/parser_testcases/nnbd/issue_44477.dart.expect b/pkg/front_end/parser_testcases/nnbd/issue_44477.dart.expect
index 311b6f8..a765a2f 100644
--- a/pkg/front_end/parser_testcases/nnbd/issue_44477.dart.expect
+++ b/pkg/front_end/parser_testcases/nnbd/issue_44477.dart.expect
@@ -16,11 +16,9 @@
 
 WARNING: Reporting at eof --- see below for details.
 
-parser/nnbd/issue_44477:1:15: Expected ';' after this.
+parser/nnbd/issue_44477:1:14: Expected ';' after this.
 Future<List<>>
-              ^...
-
-WARNING: Reporting at eof --- see below for details.
+             ^
 
 beginCompilationUnit(Future)
   beginMetadataStar(Future)
@@ -45,8 +43,7 @@
       // WARNING: Reporting at eof for .
       handleIdentifier(, topLevelVariableDeclaration)
       handleNoFieldInitializer()
-      handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], , )
-      // WARNING: Reporting at eof for .
+      handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], >, >)
     endTopLevelFields(null, null, null, null, null, 1, Future, ;)
   endTopLevelDeclaration()
 endCompilationUnit(1, )
diff --git a/pkg/front_end/parser_testcases/nnbd/issue_44477.dart.intertwined.expect b/pkg/front_end/parser_testcases/nnbd/issue_44477.dart.intertwined.expect
index e90884d..43fbe7a 100644
--- a/pkg/front_end/parser_testcases/nnbd/issue_44477.dart.intertwined.expect
+++ b/pkg/front_end/parser_testcases/nnbd/issue_44477.dart.intertwined.expect
@@ -41,9 +41,8 @@
         parseFieldInitializerOpt(, , null, null, null, null, DeclarationKind.TopLevel, null)
           listener: handleNoFieldInitializer()
         ensureSemicolon()
-          reportRecoverableError(, Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}])
-            listener: handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], , )
-            listener: // WARNING: Reporting at eof for .
+          reportRecoverableError(>, Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}])
+            listener: handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], >, >)
           rewriter()
         listener: endTopLevelFields(null, null, null, null, null, 1, Future, ;)
   listener: endTopLevelDeclaration()
diff --git a/pkg/front_end/test/explicit_creation_git_test.dart b/pkg/front_end/test/explicit_creation_git_test.dart
index bd44d6f..7402c6f 100644
--- a/pkg/front_end/test/explicit_creation_git_test.dart
+++ b/pkg/front_end/test/explicit_creation_git_test.dart
@@ -30,7 +30,6 @@
 import 'package:front_end/src/fasta/source/diet_listener.dart';
 import 'package:front_end/src/fasta/source/source_library_builder.dart';
 import 'package:front_end/src/fasta/source/source_loader.dart';
-import 'package:front_end/src/fasta/source/stack_listener_impl.dart';
 import 'package:front_end/src/fasta/ticker.dart';
 import 'package:front_end/src/fasta/type_inference/type_inference_engine.dart';
 import 'package:front_end/src/fasta/type_inference/type_inferrer.dart';
@@ -158,7 +157,7 @@
       : super(library, hierarchy, coreTypes, typeInferenceEngine);
 
   @override
-  StackListenerImpl createListenerInternal(
+  BodyBuilder createListenerInternal(
       ModifierBuilder builder,
       Scope memberScope,
       Scope formalParameterScope,
diff --git a/pkg/front_end/test/fasta/generator_to_string_test.dart b/pkg/front_end/test/fasta/generator_to_string_test.dart
index 78de966..1f5559e 100644
--- a/pkg/front_end/test/fasta/generator_to_string_test.dart
+++ b/pkg/front_end/test/fasta/generator_to_string_test.dart
@@ -62,7 +62,7 @@
 import 'package:front_end/src/fasta/source/source_library_builder.dart'
     show ImplicitLanguageVersion, SourceLibraryBuilder;
 
-void check(String expected, Generator generator) {
+void check(String expected, Object generator) {
   Expect.stringEquals(expected, "$generator");
 }
 
@@ -198,10 +198,10 @@
         new ThisAccessGenerator(helper, token, false, false, false));
     check("IncompleteErrorGenerator(offset: 4, message: Unspecified)",
         new IncompleteErrorGenerator(helper, token, message));
-    check("SendAccessGenerator(offset: 4, name: bar, arguments: (\"arg\"))",
-        new SendAccessGenerator(helper, token, name, null, arguments));
-    check("IncompletePropertyAccessGenerator(offset: 4, name: bar)",
-        new IncompletePropertyAccessGenerator(helper, token, name));
+    check("InvocationSelector(offset: 4, name: bar, arguments: (\"arg\"))",
+        new InvocationSelector(helper, token, name, null, arguments));
+    check("PropertySelector(offset: 4, name: bar)",
+        new PropertySelector(helper, token, name));
     check(
         "DeferredAccessGenerator(offset: 4,"
         " prefixGenerator: PrefixUseGenerator("
diff --git a/pkg/front_end/test/incremental_suite.dart b/pkg/front_end/test/incremental_suite.dart
index a562b6b9..f2a57ca 100644
--- a/pkg/front_end/test/incremental_suite.dart
+++ b/pkg/front_end/test/incremental_suite.dart
@@ -541,17 +541,13 @@
               parseExperimentalArguments([world["experiments"]]);
           // Ensure that we run with non-nullable turned off even when the
           // flag is on by default.
-          // TODO(johnniwinther,jensj): Update tests to explicitly opt out.
-          flagsFromOptions['non-nullable'] ??= false;
           Map<ExperimentalFlag, bool> explicitExperimentalFlags =
               parseExperimentalFlags(flagsFromOptions,
                   onError: (e) =>
                       throw "Error on parsing experiments flags: $e");
           options.explicitExperimentalFlags = explicitExperimentalFlags;
         } else {
-          options.explicitExperimentalFlags = {
-            ExperimentalFlag.nonNullable: false
-          };
+          options.explicitExperimentalFlags = {};
         }
         // A separate "world" can also change nnbd mode ---
         // notice that the platform is not updated though!
diff --git a/pkg/front_end/test/spell_checking_list_code.txt b/pkg/front_end/test/spell_checking_list_code.txt
index 69aec91..fe6e872 100644
--- a/pkg/front_end/test/spell_checking_list_code.txt
+++ b/pkg/front_end/test/spell_checking_list_code.txt
@@ -90,6 +90,7 @@
 b2i
 b2m
 b2n
+backlog
 backping
 backstop
 badly
@@ -698,6 +699,7 @@
 llub
 lm
 locationd
+logged
 logically
 lots
 lp
diff --git a/pkg/front_end/test/spell_checking_list_tests.txt b/pkg/front_end/test/spell_checking_list_tests.txt
index 598e576..398070d 100644
--- a/pkg/front_end/test/spell_checking_list_tests.txt
+++ b/pkg/front_end/test/spell_checking_list_tests.txt
@@ -851,6 +851,7 @@
 shipped
 shortest
 shot
+sidebar
 sigint
 signaling
 signalled
diff --git a/pkg/front_end/testcases/constructor_tearoffs/not_unresolved_constructor_invocation.dart b/pkg/front_end/testcases/constructor_tearoffs/not_unresolved_constructor_invocation.dart
new file mode 100644
index 0000000..d964c26
--- /dev/null
+++ b/pkg/front_end/testcases/constructor_tearoffs/not_unresolved_constructor_invocation.dart
@@ -0,0 +1,66 @@
+// Copyright (c) 2021, 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 for expression that could be unresolved constructor invocations but
+// are actually valid instantiation expressions.
+
+class ResolvedClass<T> {
+  ResolvedClass.named();
+
+  static unresolvedConstructor() {}
+}
+
+UnresolvedClass<T>() {}
+
+extension Extension on Function {
+  unresolvedConstructor() {}
+}
+
+class unresolved_prefix {
+  static UnresolvedClass<T>() {}
+}
+
+class resolved_prefix {
+  static UnresolvedClass<T>() {}
+}
+
+main() {
+  UnresolvedClass();
+
+  UnresolvedClass.unresolvedConstructor();
+  UnresolvedClass/**/ .unresolvedConstructor();
+
+  unresolved_prefix.UnresolvedClass();
+  unresolved_prefix. /**/ UnresolvedClass();
+
+  unresolved_prefix.UnresolvedClass.unresolvedConstructor();
+  unresolved_prefix/**/ .UnresolvedClass.unresolvedConstructor();
+
+  UnresolvedClass<int>();
+  UnresolvedClass /**/ <int>();
+
+  UnresolvedClass<int>.unresolvedConstructor();
+  UnresolvedClass /**/ <int>.unresolvedConstructor();
+
+  unresolved_prefix.UnresolvedClass<int>();
+  unresolved_prefix/**/ .UnresolvedClass<int>();
+
+  unresolved_prefix.UnresolvedClass<int>.unresolvedConstructor();
+  unresolved_prefix/**/ .UnresolvedClass<int>.unresolvedConstructor();
+
+  ResolvedClass.unresolvedConstructor();
+  ResolvedClass/**/ .unresolvedConstructor();
+
+  resolved_prefix.UnresolvedClass();
+  resolved_prefix. /**/ UnresolvedClass();
+
+  resolved_prefix.UnresolvedClass.unresolvedConstructor();
+  resolved_prefix/**/ .UnresolvedClass.unresolvedConstructor();
+
+  resolved_prefix.UnresolvedClass<int>();
+  resolved_prefix. /**/ UnresolvedClass<int>();
+
+  resolved_prefix.UnresolvedClass<int>.unresolvedConstructor();
+  resolved_prefix/**/ .UnresolvedClass<int>.unresolvedConstructor();
+}
diff --git a/pkg/front_end/testcases/constructor_tearoffs/not_unresolved_constructor_invocation.dart.strong.expect b/pkg/front_end/testcases/constructor_tearoffs/not_unresolved_constructor_invocation.dart.strong.expect
new file mode 100644
index 0000000..ce55163
--- /dev/null
+++ b/pkg/front_end/testcases/constructor_tearoffs/not_unresolved_constructor_invocation.dart.strong.expect
@@ -0,0 +1,66 @@
+library /*isNonNullableByDefault*/;
+import self as self;
+import "dart:core" as core;
+
+class ResolvedClass<T extends core::Object? = dynamic> extends core::Object {
+  constructor named() → self::ResolvedClass<self::ResolvedClass::T%>
+    : super core::Object::•()
+    ;
+  static method unresolvedConstructor() → dynamic {}
+}
+class unresolved_prefix extends core::Object {
+  synthetic constructor •() → self::unresolved_prefix
+    : super core::Object::•()
+    ;
+  static method UnresolvedClass<T extends core::Object? = dynamic>() → dynamic {}
+}
+class resolved_prefix extends core::Object {
+  synthetic constructor •() → self::resolved_prefix
+    : super core::Object::•()
+    ;
+  static method UnresolvedClass<T extends core::Object? = dynamic>() → dynamic {}
+}
+extension Extension on core::Function {
+  method unresolvedConstructor = self::Extension|unresolvedConstructor;
+  tearoff unresolvedConstructor = self::Extension|get#unresolvedConstructor;
+}
+static method UnresolvedClass<T extends core::Object? = dynamic>() → dynamic {}
+static method Extension|unresolvedConstructor(lowered final core::Function #this) → dynamic {}
+static method Extension|get#unresolvedConstructor(lowered final core::Function #this) → () → dynamic
+  return () → dynamic => self::Extension|unresolvedConstructor(#this);
+static method main() → dynamic {
+  self::UnresolvedClass<dynamic>();
+  self::Extension|unresolvedConstructor(#C1);
+  self::Extension|unresolvedConstructor(#C1);
+  self::unresolved_prefix::UnresolvedClass<dynamic>();
+  self::unresolved_prefix::UnresolvedClass<dynamic>();
+  self::Extension|unresolvedConstructor(#C2);
+  self::Extension|unresolvedConstructor(#C2);
+  self::UnresolvedClass<core::int>();
+  self::UnresolvedClass<core::int>();
+  self::Extension|unresolvedConstructor(#C3);
+  self::Extension|unresolvedConstructor(#C3);
+  self::unresolved_prefix::UnresolvedClass<core::int>();
+  self::unresolved_prefix::UnresolvedClass<core::int>();
+  self::Extension|unresolvedConstructor(#C4);
+  self::Extension|unresolvedConstructor(#C4);
+  self::ResolvedClass::unresolvedConstructor();
+  self::ResolvedClass::unresolvedConstructor();
+  self::resolved_prefix::UnresolvedClass<dynamic>();
+  self::resolved_prefix::UnresolvedClass<dynamic>();
+  self::Extension|unresolvedConstructor(#C5);
+  self::Extension|unresolvedConstructor(#C5);
+  self::resolved_prefix::UnresolvedClass<core::int>();
+  self::resolved_prefix::UnresolvedClass<core::int>();
+  self::Extension|unresolvedConstructor(#C6);
+  self::Extension|unresolvedConstructor(#C6);
+}
+
+constants  {
+  #C1 = static-tearoff self::UnresolvedClass
+  #C2 = static-tearoff self::unresolved_prefix::UnresolvedClass
+  #C3 = instantiation self::UnresolvedClass <core::int>
+  #C4 = instantiation self::unresolved_prefix::UnresolvedClass <core::int>
+  #C5 = static-tearoff self::resolved_prefix::UnresolvedClass
+  #C6 = instantiation self::resolved_prefix::UnresolvedClass <core::int>
+}
diff --git a/pkg/front_end/testcases/constructor_tearoffs/not_unresolved_constructor_invocation.dart.strong.transformed.expect b/pkg/front_end/testcases/constructor_tearoffs/not_unresolved_constructor_invocation.dart.strong.transformed.expect
new file mode 100644
index 0000000..ce55163
--- /dev/null
+++ b/pkg/front_end/testcases/constructor_tearoffs/not_unresolved_constructor_invocation.dart.strong.transformed.expect
@@ -0,0 +1,66 @@
+library /*isNonNullableByDefault*/;
+import self as self;
+import "dart:core" as core;
+
+class ResolvedClass<T extends core::Object? = dynamic> extends core::Object {
+  constructor named() → self::ResolvedClass<self::ResolvedClass::T%>
+    : super core::Object::•()
+    ;
+  static method unresolvedConstructor() → dynamic {}
+}
+class unresolved_prefix extends core::Object {
+  synthetic constructor •() → self::unresolved_prefix
+    : super core::Object::•()
+    ;
+  static method UnresolvedClass<T extends core::Object? = dynamic>() → dynamic {}
+}
+class resolved_prefix extends core::Object {
+  synthetic constructor •() → self::resolved_prefix
+    : super core::Object::•()
+    ;
+  static method UnresolvedClass<T extends core::Object? = dynamic>() → dynamic {}
+}
+extension Extension on core::Function {
+  method unresolvedConstructor = self::Extension|unresolvedConstructor;
+  tearoff unresolvedConstructor = self::Extension|get#unresolvedConstructor;
+}
+static method UnresolvedClass<T extends core::Object? = dynamic>() → dynamic {}
+static method Extension|unresolvedConstructor(lowered final core::Function #this) → dynamic {}
+static method Extension|get#unresolvedConstructor(lowered final core::Function #this) → () → dynamic
+  return () → dynamic => self::Extension|unresolvedConstructor(#this);
+static method main() → dynamic {
+  self::UnresolvedClass<dynamic>();
+  self::Extension|unresolvedConstructor(#C1);
+  self::Extension|unresolvedConstructor(#C1);
+  self::unresolved_prefix::UnresolvedClass<dynamic>();
+  self::unresolved_prefix::UnresolvedClass<dynamic>();
+  self::Extension|unresolvedConstructor(#C2);
+  self::Extension|unresolvedConstructor(#C2);
+  self::UnresolvedClass<core::int>();
+  self::UnresolvedClass<core::int>();
+  self::Extension|unresolvedConstructor(#C3);
+  self::Extension|unresolvedConstructor(#C3);
+  self::unresolved_prefix::UnresolvedClass<core::int>();
+  self::unresolved_prefix::UnresolvedClass<core::int>();
+  self::Extension|unresolvedConstructor(#C4);
+  self::Extension|unresolvedConstructor(#C4);
+  self::ResolvedClass::unresolvedConstructor();
+  self::ResolvedClass::unresolvedConstructor();
+  self::resolved_prefix::UnresolvedClass<dynamic>();
+  self::resolved_prefix::UnresolvedClass<dynamic>();
+  self::Extension|unresolvedConstructor(#C5);
+  self::Extension|unresolvedConstructor(#C5);
+  self::resolved_prefix::UnresolvedClass<core::int>();
+  self::resolved_prefix::UnresolvedClass<core::int>();
+  self::Extension|unresolvedConstructor(#C6);
+  self::Extension|unresolvedConstructor(#C6);
+}
+
+constants  {
+  #C1 = static-tearoff self::UnresolvedClass
+  #C2 = static-tearoff self::unresolved_prefix::UnresolvedClass
+  #C3 = instantiation self::UnresolvedClass <core::int>
+  #C4 = instantiation self::unresolved_prefix::UnresolvedClass <core::int>
+  #C5 = static-tearoff self::resolved_prefix::UnresolvedClass
+  #C6 = instantiation self::resolved_prefix::UnresolvedClass <core::int>
+}
diff --git a/pkg/front_end/testcases/constructor_tearoffs/not_unresolved_constructor_invocation.dart.textual_outline.expect b/pkg/front_end/testcases/constructor_tearoffs/not_unresolved_constructor_invocation.dart.textual_outline.expect
new file mode 100644
index 0000000..0b1fe2c
--- /dev/null
+++ b/pkg/front_end/testcases/constructor_tearoffs/not_unresolved_constructor_invocation.dart.textual_outline.expect
@@ -0,0 +1,20 @@
+class ResolvedClass<T> {
+  ResolvedClass.named();
+  static unresolvedConstructor() {}
+}
+
+UnresolvedClass<T>() {}
+
+extension Extension on Function {
+  unresolvedConstructor() {}
+}
+
+class unresolved_prefix {
+  static UnresolvedClass<T>() {}
+}
+
+class resolved_prefix {
+  static UnresolvedClass<T>() {}
+}
+
+main() {}
diff --git a/pkg/front_end/testcases/constructor_tearoffs/not_unresolved_constructor_invocation.dart.textual_outline_modelled.expect b/pkg/front_end/testcases/constructor_tearoffs/not_unresolved_constructor_invocation.dart.textual_outline_modelled.expect
new file mode 100644
index 0000000..0810247
--- /dev/null
+++ b/pkg/front_end/testcases/constructor_tearoffs/not_unresolved_constructor_invocation.dart.textual_outline_modelled.expect
@@ -0,0 +1,20 @@
+UnresolvedClass<T>() {}
+
+class ResolvedClass<T> {
+  ResolvedClass.named();
+  static unresolvedConstructor() {}
+}
+
+class resolved_prefix {
+  static UnresolvedClass<T>() {}
+}
+
+class unresolved_prefix {
+  static UnresolvedClass<T>() {}
+}
+
+extension Extension on Function {
+  unresolvedConstructor() {}
+}
+
+main() {}
diff --git a/pkg/front_end/testcases/constructor_tearoffs/not_unresolved_constructor_invocation.dart.weak.expect b/pkg/front_end/testcases/constructor_tearoffs/not_unresolved_constructor_invocation.dart.weak.expect
new file mode 100644
index 0000000..07ba725
--- /dev/null
+++ b/pkg/front_end/testcases/constructor_tearoffs/not_unresolved_constructor_invocation.dart.weak.expect
@@ -0,0 +1,66 @@
+library /*isNonNullableByDefault*/;
+import self as self;
+import "dart:core" as core;
+
+class ResolvedClass<T extends core::Object? = dynamic> extends core::Object {
+  constructor named() → self::ResolvedClass<self::ResolvedClass::T%>
+    : super core::Object::•()
+    ;
+  static method unresolvedConstructor() → dynamic {}
+}
+class unresolved_prefix extends core::Object {
+  synthetic constructor •() → self::unresolved_prefix
+    : super core::Object::•()
+    ;
+  static method UnresolvedClass<T extends core::Object? = dynamic>() → dynamic {}
+}
+class resolved_prefix extends core::Object {
+  synthetic constructor •() → self::resolved_prefix
+    : super core::Object::•()
+    ;
+  static method UnresolvedClass<T extends core::Object? = dynamic>() → dynamic {}
+}
+extension Extension on core::Function {
+  method unresolvedConstructor = self::Extension|unresolvedConstructor;
+  tearoff unresolvedConstructor = self::Extension|get#unresolvedConstructor;
+}
+static method UnresolvedClass<T extends core::Object? = dynamic>() → dynamic {}
+static method Extension|unresolvedConstructor(lowered final core::Function #this) → dynamic {}
+static method Extension|get#unresolvedConstructor(lowered final core::Function #this) → () → dynamic
+  return () → dynamic => self::Extension|unresolvedConstructor(#this);
+static method main() → dynamic {
+  self::UnresolvedClass<dynamic>();
+  self::Extension|unresolvedConstructor(#C1);
+  self::Extension|unresolvedConstructor(#C1);
+  self::unresolved_prefix::UnresolvedClass<dynamic>();
+  self::unresolved_prefix::UnresolvedClass<dynamic>();
+  self::Extension|unresolvedConstructor(#C2);
+  self::Extension|unresolvedConstructor(#C2);
+  self::UnresolvedClass<core::int>();
+  self::UnresolvedClass<core::int>();
+  self::Extension|unresolvedConstructor(#C3);
+  self::Extension|unresolvedConstructor(#C3);
+  self::unresolved_prefix::UnresolvedClass<core::int>();
+  self::unresolved_prefix::UnresolvedClass<core::int>();
+  self::Extension|unresolvedConstructor(#C4);
+  self::Extension|unresolvedConstructor(#C4);
+  self::ResolvedClass::unresolvedConstructor();
+  self::ResolvedClass::unresolvedConstructor();
+  self::resolved_prefix::UnresolvedClass<dynamic>();
+  self::resolved_prefix::UnresolvedClass<dynamic>();
+  self::Extension|unresolvedConstructor(#C5);
+  self::Extension|unresolvedConstructor(#C5);
+  self::resolved_prefix::UnresolvedClass<core::int>();
+  self::resolved_prefix::UnresolvedClass<core::int>();
+  self::Extension|unresolvedConstructor(#C6);
+  self::Extension|unresolvedConstructor(#C6);
+}
+
+constants  {
+  #C1 = static-tearoff self::UnresolvedClass
+  #C2 = static-tearoff self::unresolved_prefix::UnresolvedClass
+  #C3 = instantiation self::UnresolvedClass <core::int*>
+  #C4 = instantiation self::unresolved_prefix::UnresolvedClass <core::int*>
+  #C5 = static-tearoff self::resolved_prefix::UnresolvedClass
+  #C6 = instantiation self::resolved_prefix::UnresolvedClass <core::int*>
+}
diff --git a/pkg/front_end/testcases/constructor_tearoffs/not_unresolved_constructor_invocation.dart.weak.outline.expect b/pkg/front_end/testcases/constructor_tearoffs/not_unresolved_constructor_invocation.dart.weak.outline.expect
new file mode 100644
index 0000000..dc17d8d
--- /dev/null
+++ b/pkg/front_end/testcases/constructor_tearoffs/not_unresolved_constructor_invocation.dart.weak.outline.expect
@@ -0,0 +1,34 @@
+library /*isNonNullableByDefault*/;
+import self as self;
+import "dart:core" as core;
+
+class ResolvedClass<T extends core::Object? = dynamic> extends core::Object {
+  constructor named() → self::ResolvedClass<self::ResolvedClass::T%>
+    ;
+  static method unresolvedConstructor() → dynamic
+    ;
+}
+class unresolved_prefix extends core::Object {
+  synthetic constructor •() → self::unresolved_prefix
+    ;
+  static method UnresolvedClass<T extends core::Object? = dynamic>() → dynamic
+    ;
+}
+class resolved_prefix extends core::Object {
+  synthetic constructor •() → self::resolved_prefix
+    ;
+  static method UnresolvedClass<T extends core::Object? = dynamic>() → dynamic
+    ;
+}
+extension Extension on core::Function {
+  method unresolvedConstructor = self::Extension|unresolvedConstructor;
+  tearoff unresolvedConstructor = self::Extension|get#unresolvedConstructor;
+}
+static method UnresolvedClass<T extends core::Object? = dynamic>() → dynamic
+  ;
+static method Extension|unresolvedConstructor(lowered final core::Function #this) → dynamic
+  ;
+static method Extension|get#unresolvedConstructor(lowered final core::Function #this) → () → dynamic
+  return () → dynamic => self::Extension|unresolvedConstructor(#this);
+static method main() → dynamic
+  ;
diff --git a/pkg/front_end/testcases/constructor_tearoffs/not_unresolved_constructor_invocation.dart.weak.transformed.expect b/pkg/front_end/testcases/constructor_tearoffs/not_unresolved_constructor_invocation.dart.weak.transformed.expect
new file mode 100644
index 0000000..07ba725
--- /dev/null
+++ b/pkg/front_end/testcases/constructor_tearoffs/not_unresolved_constructor_invocation.dart.weak.transformed.expect
@@ -0,0 +1,66 @@
+library /*isNonNullableByDefault*/;
+import self as self;
+import "dart:core" as core;
+
+class ResolvedClass<T extends core::Object? = dynamic> extends core::Object {
+  constructor named() → self::ResolvedClass<self::ResolvedClass::T%>
+    : super core::Object::•()
+    ;
+  static method unresolvedConstructor() → dynamic {}
+}
+class unresolved_prefix extends core::Object {
+  synthetic constructor •() → self::unresolved_prefix
+    : super core::Object::•()
+    ;
+  static method UnresolvedClass<T extends core::Object? = dynamic>() → dynamic {}
+}
+class resolved_prefix extends core::Object {
+  synthetic constructor •() → self::resolved_prefix
+    : super core::Object::•()
+    ;
+  static method UnresolvedClass<T extends core::Object? = dynamic>() → dynamic {}
+}
+extension Extension on core::Function {
+  method unresolvedConstructor = self::Extension|unresolvedConstructor;
+  tearoff unresolvedConstructor = self::Extension|get#unresolvedConstructor;
+}
+static method UnresolvedClass<T extends core::Object? = dynamic>() → dynamic {}
+static method Extension|unresolvedConstructor(lowered final core::Function #this) → dynamic {}
+static method Extension|get#unresolvedConstructor(lowered final core::Function #this) → () → dynamic
+  return () → dynamic => self::Extension|unresolvedConstructor(#this);
+static method main() → dynamic {
+  self::UnresolvedClass<dynamic>();
+  self::Extension|unresolvedConstructor(#C1);
+  self::Extension|unresolvedConstructor(#C1);
+  self::unresolved_prefix::UnresolvedClass<dynamic>();
+  self::unresolved_prefix::UnresolvedClass<dynamic>();
+  self::Extension|unresolvedConstructor(#C2);
+  self::Extension|unresolvedConstructor(#C2);
+  self::UnresolvedClass<core::int>();
+  self::UnresolvedClass<core::int>();
+  self::Extension|unresolvedConstructor(#C3);
+  self::Extension|unresolvedConstructor(#C3);
+  self::unresolved_prefix::UnresolvedClass<core::int>();
+  self::unresolved_prefix::UnresolvedClass<core::int>();
+  self::Extension|unresolvedConstructor(#C4);
+  self::Extension|unresolvedConstructor(#C4);
+  self::ResolvedClass::unresolvedConstructor();
+  self::ResolvedClass::unresolvedConstructor();
+  self::resolved_prefix::UnresolvedClass<dynamic>();
+  self::resolved_prefix::UnresolvedClass<dynamic>();
+  self::Extension|unresolvedConstructor(#C5);
+  self::Extension|unresolvedConstructor(#C5);
+  self::resolved_prefix::UnresolvedClass<core::int>();
+  self::resolved_prefix::UnresolvedClass<core::int>();
+  self::Extension|unresolvedConstructor(#C6);
+  self::Extension|unresolvedConstructor(#C6);
+}
+
+constants  {
+  #C1 = static-tearoff self::UnresolvedClass
+  #C2 = static-tearoff self::unresolved_prefix::UnresolvedClass
+  #C3 = instantiation self::UnresolvedClass <core::int*>
+  #C4 = instantiation self::unresolved_prefix::UnresolvedClass <core::int*>
+  #C5 = static-tearoff self::resolved_prefix::UnresolvedClass
+  #C6 = instantiation self::resolved_prefix::UnresolvedClass <core::int*>
+}
diff --git a/pkg/front_end/testcases/extensions/folder.options b/pkg/front_end/testcases/extensions/folder.options
deleted file mode 100644
index 85bbbb6..0000000
--- a/pkg/front_end/testcases/extensions/folder.options
+++ /dev/null
@@ -1 +0,0 @@
---enable-experiment=extension-methods
diff --git a/pkg/front_end/testcases/general/duplicated_declarations.dart b/pkg/front_end/testcases/general/duplicated_declarations.dart
index 489b1ab..9862e6f 100644
--- a/pkg/front_end/testcases/general/duplicated_declarations.dart
+++ b/pkg/front_end/testcases/general/duplicated_declarations.dart
@@ -34,6 +34,8 @@
   main();
   print(field);
   C.s();
+  C.this();
+  C.();
 }
 
 class C {
diff --git a/pkg/front_end/testcases/general/duplicated_declarations.dart.weak.expect b/pkg/front_end/testcases/general/duplicated_declarations.dart.weak.expect
index ce50dfd..e32bbfb 100644
--- a/pkg/front_end/testcases/general/duplicated_declarations.dart.weak.expect
+++ b/pkg/front_end/testcases/general/duplicated_declarations.dart.weak.expect
@@ -45,84 +45,84 @@
 // main() {
 // ^^^^
 //
-// pkg/front_end/testcases/general/duplicated_declarations.dart:41:3: Error: 'C' is already declared in this scope.
+// pkg/front_end/testcases/general/duplicated_declarations.dart:43:3: Error: 'C' is already declared in this scope.
 //   C(a, b);
 //   ^
-// pkg/front_end/testcases/general/duplicated_declarations.dart:40:3: Context: Previous declaration of 'C'.
+// pkg/front_end/testcases/general/duplicated_declarations.dart:42:3: Context: Previous declaration of 'C'.
 //   C(a);
 //   ^
 //
-// pkg/front_end/testcases/general/duplicated_declarations.dart:44:7: Error: 'field' is already declared in this scope.
+// pkg/front_end/testcases/general/duplicated_declarations.dart:46:7: Error: 'field' is already declared in this scope.
 //   var field = "2nd";
 //       ^^^^^
-// pkg/front_end/testcases/general/duplicated_declarations.dart:42:7: Context: Previous declaration of 'field'.
+// pkg/front_end/testcases/general/duplicated_declarations.dart:44:7: Context: Previous declaration of 'field'.
 //   var field = "1st";
 //       ^^^^^
 //
-// pkg/front_end/testcases/general/duplicated_declarations.dart:50:3: Error: 'm' is already declared in this scope.
+// pkg/front_end/testcases/general/duplicated_declarations.dart:52:3: Error: 'm' is already declared in this scope.
 //   m() {
 //   ^
-// pkg/front_end/testcases/general/duplicated_declarations.dart:46:3: Context: Previous declaration of 'm'.
+// pkg/front_end/testcases/general/duplicated_declarations.dart:48:3: Context: Previous declaration of 'm'.
 //   m() {
 //   ^
 //
-// pkg/front_end/testcases/general/duplicated_declarations.dart:58:10: Error: 's' is already declared in this scope.
+// pkg/front_end/testcases/general/duplicated_declarations.dart:60:10: Error: 's' is already declared in this scope.
 //   static s() {
 //          ^
-// pkg/front_end/testcases/general/duplicated_declarations.dart:54:10: Context: Previous declaration of 's'.
+// pkg/front_end/testcases/general/duplicated_declarations.dart:56:10: Context: Previous declaration of 's'.
 //   static s() {
 //          ^
 //
-// pkg/front_end/testcases/general/duplicated_declarations.dart:70:7: Error: 'C' is already declared in this scope.
+// pkg/front_end/testcases/general/duplicated_declarations.dart:72:7: Error: 'C' is already declared in this scope.
 // class C {
 //       ^
-// pkg/front_end/testcases/general/duplicated_declarations.dart:39:7: Context: Previous declaration of 'C'.
+// pkg/front_end/testcases/general/duplicated_declarations.dart:41:7: Context: Previous declaration of 'C'.
 // class C {
 //       ^
 //
-// pkg/front_end/testcases/general/duplicated_declarations.dart:75:3: Error: Name of enum constant 'Enum' can't be the same as the enum's own name.
+// pkg/front_end/testcases/general/duplicated_declarations.dart:77:3: Error: Name of enum constant 'Enum' can't be the same as the enum's own name.
 //   Enum,
 //   ^^^^
 //
-// pkg/front_end/testcases/general/duplicated_declarations.dart:77:3: Error: 'a' is already declared in this scope.
+// pkg/front_end/testcases/general/duplicated_declarations.dart:79:3: Error: 'a' is already declared in this scope.
 //   a,
 //   ^
-// pkg/front_end/testcases/general/duplicated_declarations.dart:76:3: Context: Previous declaration of 'a'.
+// pkg/front_end/testcases/general/duplicated_declarations.dart:78:3: Context: Previous declaration of 'a'.
 //   a,
 //   ^
 //
-// pkg/front_end/testcases/general/duplicated_declarations.dart:81:6: Error: 'Enum' is already declared in this scope.
+// pkg/front_end/testcases/general/duplicated_declarations.dart:83:6: Error: 'Enum' is already declared in this scope.
 // enum Enum {
 //      ^^^^
-// pkg/front_end/testcases/general/duplicated_declarations.dart:74:6: Context: Previous declaration of 'Enum'.
+// pkg/front_end/testcases/general/duplicated_declarations.dart:76:6: Context: Previous declaration of 'Enum'.
 // enum Enum {
 //      ^^^^
 //
-// pkg/front_end/testcases/general/duplicated_declarations.dart:91:3: Error: '_name' is already declared in this scope.
+// pkg/front_end/testcases/general/duplicated_declarations.dart:93:3: Error: '_name' is already declared in this scope.
 //   _name,
 //   ^^^^^
-// pkg/front_end/testcases/general/duplicated_declarations.dart:87:6: Context: Previous declaration of '_name' is implied by this definition.
+// pkg/front_end/testcases/general/duplicated_declarations.dart:89:6: Context: Previous declaration of '_name' is implied by this definition.
 // enum AnotherEnum {
 //      ^^^^^^^^^^^
 //
-// pkg/front_end/testcases/general/duplicated_declarations.dart:92:3: Error: 'index' is already declared in this scope.
+// pkg/front_end/testcases/general/duplicated_declarations.dart:94:3: Error: 'index' is already declared in this scope.
 //   index,
 //   ^^^^^
-// pkg/front_end/testcases/general/duplicated_declarations.dart:87:6: Context: Previous declaration of 'index' is implied by this definition.
+// pkg/front_end/testcases/general/duplicated_declarations.dart:89:6: Context: Previous declaration of 'index' is implied by this definition.
 // enum AnotherEnum {
 //      ^^^^^^^^^^^
 //
-// pkg/front_end/testcases/general/duplicated_declarations.dart:93:3: Error: 'toString' is already declared in this scope.
+// pkg/front_end/testcases/general/duplicated_declarations.dart:95:3: Error: 'toString' is already declared in this scope.
 //   toString,
 //   ^^^^^^^^
-// pkg/front_end/testcases/general/duplicated_declarations.dart:87:6: Context: Previous declaration of 'toString' is implied by this definition.
+// pkg/front_end/testcases/general/duplicated_declarations.dart:89:6: Context: Previous declaration of 'toString' is implied by this definition.
 // enum AnotherEnum {
 //      ^^^^^^^^^^^
 //
-// pkg/front_end/testcases/general/duplicated_declarations.dart:94:3: Error: 'values' is already declared in this scope.
+// pkg/front_end/testcases/general/duplicated_declarations.dart:96:3: Error: 'values' is already declared in this scope.
 //   values,
 //   ^^^^^^
-// pkg/front_end/testcases/general/duplicated_declarations.dart:87:6: Context: Previous declaration of 'values' is implied by this definition.
+// pkg/front_end/testcases/general/duplicated_declarations.dart:89:6: Context: Previous declaration of 'values' is implied by this definition.
 // enum AnotherEnum {
 //      ^^^^^^^^^^^
 //
@@ -157,14 +157,14 @@
 // pkg/front_end/testcases/general/duplicated_declarations_part.dart:39:7: Error: 'C' is already declared in this scope.
 // class C {
 //       ^
-// pkg/front_end/testcases/general/duplicated_declarations.dart:70:7: Context: Previous declaration of 'C'.
+// pkg/front_end/testcases/general/duplicated_declarations.dart:72:7: Context: Previous declaration of 'C'.
 // class C {
 //       ^
 //
 // pkg/front_end/testcases/general/duplicated_declarations_part.dart:73:6: Error: 'Enum' is already declared in this scope.
 // enum Enum {
 //      ^^^^
-// pkg/front_end/testcases/general/duplicated_declarations.dart:81:6: Context: Previous declaration of 'Enum'.
+// pkg/front_end/testcases/general/duplicated_declarations.dart:83:6: Context: Previous declaration of 'Enum'.
 // enum Enum {
 //      ^^^^
 //
@@ -299,10 +299,10 @@
 // typedef Typedef = Object Function();
 //         ^^^^^^^
 //
-// pkg/front_end/testcases/general/duplicated_declarations.dart:65:19: Error: 'C' isn't a type.
+// pkg/front_end/testcases/general/duplicated_declarations.dart:67:19: Error: 'C' isn't a type.
 // class Sub extends C {
 //                   ^
-// pkg/front_end/testcases/general/duplicated_declarations.dart:65:19: Context: This isn't a type.
+// pkg/front_end/testcases/general/duplicated_declarations.dart:67:19: Context: This isn't a type.
 // class Sub extends C {
 //                   ^
 //
@@ -318,32 +318,46 @@
 //   C.s();
 //   ^
 //
-// pkg/front_end/testcases/general/duplicated_declarations.dart:62:17: Error: Can't use 's' because it is declared more than once.
+// pkg/front_end/testcases/general/duplicated_declarations.dart:37:5: Error: Expected identifier, but got 'this'.
+//   C.this();
+//     ^^^^
+//
+// pkg/front_end/testcases/general/duplicated_declarations.dart:38:6: Error: Expected an identifier, but got ')'.
+// Try inserting an identifier before ')'.
+//   C.();
+//      ^
+//
+// pkg/front_end/testcases/general/duplicated_declarations.dart:38:5: Error: Expected an identifier, but got '('.
+// Try inserting an identifier before '('.
+//   C.();
+//     ^
+//
+// pkg/front_end/testcases/general/duplicated_declarations.dart:64:17: Error: Can't use 's' because it is declared more than once.
 //   static f() => s;
 //                 ^
 //
-// pkg/front_end/testcases/general/duplicated_declarations.dart:66:16: Error: Too many positional arguments: 0 allowed, but 1 found.
+// pkg/front_end/testcases/general/duplicated_declarations.dart:68:16: Error: Too many positional arguments: 0 allowed, but 1 found.
 // Try removing the extra positional arguments.
 //   Sub() : super(null);
 //                ^
 //
-// pkg/front_end/testcases/general/duplicated_declarations.dart:67:16: Error: Superclass has no method named 'm'.
+// pkg/front_end/testcases/general/duplicated_declarations.dart:69:16: Error: Superclass has no method named 'm'.
 //   m() => super.m();
 //                ^
 //
-// pkg/front_end/testcases/general/duplicated_declarations.dart:102:38: Error: Can't use '_name' because it is declared more than once.
+// pkg/front_end/testcases/general/duplicated_declarations.dart:104:38: Error: Can't use '_name' because it is declared more than once.
 //     "AnotherEnum._name": AnotherEnum._name,
 //                                      ^^^^^
 //
-// pkg/front_end/testcases/general/duplicated_declarations.dart:103:38: Error: Can't use 'index' because it is declared more than once.
+// pkg/front_end/testcases/general/duplicated_declarations.dart:105:38: Error: Can't use 'index' because it is declared more than once.
 //     "AnotherEnum.index": AnotherEnum.index,
 //                                      ^^^^^
 //
-// pkg/front_end/testcases/general/duplicated_declarations.dart:104:41: Error: Can't use 'toString' because it is declared more than once.
+// pkg/front_end/testcases/general/duplicated_declarations.dart:106:41: Error: Can't use 'toString' because it is declared more than once.
 //     "AnotherEnum.toString": AnotherEnum.toString,
 //                                         ^^^^^^^^
 //
-// pkg/front_end/testcases/general/duplicated_declarations.dart:105:39: Error: Can't use 'values' because it is declared more than once.
+// pkg/front_end/testcases/general/duplicated_declarations.dart:107:39: Error: Can't use 'values' because it is declared more than once.
 //     "AnotherEnum.values": AnotherEnum.values,
 //                                       ^^^^^^
 //
@@ -447,7 +461,7 @@
     "1st";
   }
   static method f() → dynamic
-    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.
+    return invalid-expression "pkg/front_end/testcases/general/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*; -> core::Object::_identityHashCode
@@ -463,7 +477,7 @@
 }
 class Sub extends core::Object {
   constructor •() → self::Sub*
-    : final dynamic #t1 = invalid-expression "pkg/front_end/testcases/general/duplicated_declarations.dart:66:16: Error: Too many positional arguments: 0 allowed, but 1 found.
+    : final dynamic #t1 = invalid-expression "pkg/front_end/testcases/general/duplicated_declarations.dart:68:16: Error: Too many positional arguments: 0 allowed, but 1 found.
 Try removing the extra positional arguments.
   Sub() : super(null);
                ^"
@@ -625,15 +639,22 @@
   invalid-expression "pkg/front_end/testcases/general/duplicated_declarations.dart:36:3: Error: Can't use 'C' because it is declared more than once.
   C.s();
   ^"{dynamic}.s();
+  invalid-expression "pkg/front_end/testcases/general/duplicated_declarations.dart:37:5: Error: Expected identifier, but got 'this'.
+  C.this();
+    ^^^^";
+  invalid-expression "pkg/front_end/testcases/general/duplicated_declarations.dart:38:5: Error: Expected an identifier, but got '('.
+Try inserting an identifier before '('.
+  C.();
+    ^";
 }
 static method useAnotherEnum() → dynamic {
-  <core::String*, core::Object*>{"AnotherEnum.a": #C27, "AnotherEnum.b": #C29, "AnotherEnum.c": #C31, "AnotherEnum._name": invalid-expression "pkg/front_end/testcases/general/duplicated_declarations.dart:102:38: Error: Can't use '_name' because it is declared more than once.
+  <core::String*, core::Object*>{"AnotherEnum.a": #C27, "AnotherEnum.b": #C29, "AnotherEnum.c": #C31, "AnotherEnum._name": invalid-expression "pkg/front_end/testcases/general/duplicated_declarations.dart:104:38: Error: Can't use '_name' because it is declared more than once.
     \"AnotherEnum._name\": AnotherEnum._name,
-                                     ^^^^^", "AnotherEnum.index": invalid-expression "pkg/front_end/testcases/general/duplicated_declarations.dart:103:38: Error: Can't use 'index' because it is declared more than once.
+                                     ^^^^^", "AnotherEnum.index": invalid-expression "pkg/front_end/testcases/general/duplicated_declarations.dart:105:38: Error: Can't use 'index' because it is declared more than once.
     \"AnotherEnum.index\": AnotherEnum.index,
-                                     ^^^^^", "AnotherEnum.toString": invalid-expression "pkg/front_end/testcases/general/duplicated_declarations.dart:104:41: Error: Can't use 'toString' because it is declared more than once.
+                                     ^^^^^", "AnotherEnum.toString": invalid-expression "pkg/front_end/testcases/general/duplicated_declarations.dart:106:41: Error: Can't use 'toString' because it is declared more than once.
     \"AnotherEnum.toString\": AnotherEnum.toString,
-                                        ^^^^^^^^", "AnotherEnum.values": invalid-expression "pkg/front_end/testcases/general/duplicated_declarations.dart:105:39: Error: Can't use 'values' because it is declared more than once.
+                                        ^^^^^^^^", "AnotherEnum.values": invalid-expression "pkg/front_end/testcases/general/duplicated_declarations.dart:107:39: Error: Can't use 'values' because it is declared more than once.
     \"AnotherEnum.values\": AnotherEnum.values,
                                       ^^^^^^"};
 }
@@ -680,7 +701,7 @@
 
 Constructor coverage from constants:
 org-dartlang-testcase:///duplicated_declarations.dart:
-- Enum#1. (from org-dartlang-testcase:///duplicated_declarations.dart:81:6)
+- Enum#1. (from org-dartlang-testcase:///duplicated_declarations.dart:83:6)
 - Object. (from org-dartlang-sdk:///sdk/lib/core/object.dart:25:9)
-- Enum. (from org-dartlang-testcase:///duplicated_declarations.dart:74:6)
-- AnotherEnum. (from org-dartlang-testcase:///duplicated_declarations.dart:87:6)
+- Enum. (from org-dartlang-testcase:///duplicated_declarations.dart:76:6)
+- AnotherEnum. (from org-dartlang-testcase:///duplicated_declarations.dart:89:6)
diff --git a/pkg/front_end/testcases/general/duplicated_declarations.dart.weak.outline.expect b/pkg/front_end/testcases/general/duplicated_declarations.dart.weak.outline.expect
index 1113a3a..287add3 100644
--- a/pkg/front_end/testcases/general/duplicated_declarations.dart.weak.outline.expect
+++ b/pkg/front_end/testcases/general/duplicated_declarations.dart.weak.outline.expect
@@ -45,84 +45,84 @@
 // main() {
 // ^^^^
 //
-// pkg/front_end/testcases/general/duplicated_declarations.dart:41:3: Error: 'C' is already declared in this scope.
+// pkg/front_end/testcases/general/duplicated_declarations.dart:43:3: Error: 'C' is already declared in this scope.
 //   C(a, b);
 //   ^
-// pkg/front_end/testcases/general/duplicated_declarations.dart:40:3: Context: Previous declaration of 'C'.
+// pkg/front_end/testcases/general/duplicated_declarations.dart:42:3: Context: Previous declaration of 'C'.
 //   C(a);
 //   ^
 //
-// pkg/front_end/testcases/general/duplicated_declarations.dart:44:7: Error: 'field' is already declared in this scope.
+// pkg/front_end/testcases/general/duplicated_declarations.dart:46:7: Error: 'field' is already declared in this scope.
 //   var field = "2nd";
 //       ^^^^^
-// pkg/front_end/testcases/general/duplicated_declarations.dart:42:7: Context: Previous declaration of 'field'.
+// pkg/front_end/testcases/general/duplicated_declarations.dart:44:7: Context: Previous declaration of 'field'.
 //   var field = "1st";
 //       ^^^^^
 //
-// pkg/front_end/testcases/general/duplicated_declarations.dart:50:3: Error: 'm' is already declared in this scope.
+// pkg/front_end/testcases/general/duplicated_declarations.dart:52:3: Error: 'm' is already declared in this scope.
 //   m() {
 //   ^
-// pkg/front_end/testcases/general/duplicated_declarations.dart:46:3: Context: Previous declaration of 'm'.
+// pkg/front_end/testcases/general/duplicated_declarations.dart:48:3: Context: Previous declaration of 'm'.
 //   m() {
 //   ^
 //
-// pkg/front_end/testcases/general/duplicated_declarations.dart:58:10: Error: 's' is already declared in this scope.
+// pkg/front_end/testcases/general/duplicated_declarations.dart:60:10: Error: 's' is already declared in this scope.
 //   static s() {
 //          ^
-// pkg/front_end/testcases/general/duplicated_declarations.dart:54:10: Context: Previous declaration of 's'.
+// pkg/front_end/testcases/general/duplicated_declarations.dart:56:10: Context: Previous declaration of 's'.
 //   static s() {
 //          ^
 //
-// pkg/front_end/testcases/general/duplicated_declarations.dart:70:7: Error: 'C' is already declared in this scope.
+// pkg/front_end/testcases/general/duplicated_declarations.dart:72:7: Error: 'C' is already declared in this scope.
 // class C {
 //       ^
-// pkg/front_end/testcases/general/duplicated_declarations.dart:39:7: Context: Previous declaration of 'C'.
+// pkg/front_end/testcases/general/duplicated_declarations.dart:41:7: Context: Previous declaration of 'C'.
 // class C {
 //       ^
 //
-// pkg/front_end/testcases/general/duplicated_declarations.dart:75:3: Error: Name of enum constant 'Enum' can't be the same as the enum's own name.
+// pkg/front_end/testcases/general/duplicated_declarations.dart:77:3: Error: Name of enum constant 'Enum' can't be the same as the enum's own name.
 //   Enum,
 //   ^^^^
 //
-// pkg/front_end/testcases/general/duplicated_declarations.dart:77:3: Error: 'a' is already declared in this scope.
+// pkg/front_end/testcases/general/duplicated_declarations.dart:79:3: Error: 'a' is already declared in this scope.
 //   a,
 //   ^
-// pkg/front_end/testcases/general/duplicated_declarations.dart:76:3: Context: Previous declaration of 'a'.
+// pkg/front_end/testcases/general/duplicated_declarations.dart:78:3: Context: Previous declaration of 'a'.
 //   a,
 //   ^
 //
-// pkg/front_end/testcases/general/duplicated_declarations.dart:81:6: Error: 'Enum' is already declared in this scope.
+// pkg/front_end/testcases/general/duplicated_declarations.dart:83:6: Error: 'Enum' is already declared in this scope.
 // enum Enum {
 //      ^^^^
-// pkg/front_end/testcases/general/duplicated_declarations.dart:74:6: Context: Previous declaration of 'Enum'.
+// pkg/front_end/testcases/general/duplicated_declarations.dart:76:6: Context: Previous declaration of 'Enum'.
 // enum Enum {
 //      ^^^^
 //
-// pkg/front_end/testcases/general/duplicated_declarations.dart:91:3: Error: '_name' is already declared in this scope.
+// pkg/front_end/testcases/general/duplicated_declarations.dart:93:3: Error: '_name' is already declared in this scope.
 //   _name,
 //   ^^^^^
-// pkg/front_end/testcases/general/duplicated_declarations.dart:87:6: Context: Previous declaration of '_name' is implied by this definition.
+// pkg/front_end/testcases/general/duplicated_declarations.dart:89:6: Context: Previous declaration of '_name' is implied by this definition.
 // enum AnotherEnum {
 //      ^^^^^^^^^^^
 //
-// pkg/front_end/testcases/general/duplicated_declarations.dart:92:3: Error: 'index' is already declared in this scope.
+// pkg/front_end/testcases/general/duplicated_declarations.dart:94:3: Error: 'index' is already declared in this scope.
 //   index,
 //   ^^^^^
-// pkg/front_end/testcases/general/duplicated_declarations.dart:87:6: Context: Previous declaration of 'index' is implied by this definition.
+// pkg/front_end/testcases/general/duplicated_declarations.dart:89:6: Context: Previous declaration of 'index' is implied by this definition.
 // enum AnotherEnum {
 //      ^^^^^^^^^^^
 //
-// pkg/front_end/testcases/general/duplicated_declarations.dart:93:3: Error: 'toString' is already declared in this scope.
+// pkg/front_end/testcases/general/duplicated_declarations.dart:95:3: Error: 'toString' is already declared in this scope.
 //   toString,
 //   ^^^^^^^^
-// pkg/front_end/testcases/general/duplicated_declarations.dart:87:6: Context: Previous declaration of 'toString' is implied by this definition.
+// pkg/front_end/testcases/general/duplicated_declarations.dart:89:6: Context: Previous declaration of 'toString' is implied by this definition.
 // enum AnotherEnum {
 //      ^^^^^^^^^^^
 //
-// pkg/front_end/testcases/general/duplicated_declarations.dart:94:3: Error: 'values' is already declared in this scope.
+// pkg/front_end/testcases/general/duplicated_declarations.dart:96:3: Error: 'values' is already declared in this scope.
 //   values,
 //   ^^^^^^
-// pkg/front_end/testcases/general/duplicated_declarations.dart:87:6: Context: Previous declaration of 'values' is implied by this definition.
+// pkg/front_end/testcases/general/duplicated_declarations.dart:89:6: Context: Previous declaration of 'values' is implied by this definition.
 // enum AnotherEnum {
 //      ^^^^^^^^^^^
 //
@@ -157,14 +157,14 @@
 // pkg/front_end/testcases/general/duplicated_declarations_part.dart:39:7: Error: 'C' is already declared in this scope.
 // class C {
 //       ^
-// pkg/front_end/testcases/general/duplicated_declarations.dart:70:7: Context: Previous declaration of 'C'.
+// pkg/front_end/testcases/general/duplicated_declarations.dart:72:7: Context: Previous declaration of 'C'.
 // class C {
 //       ^
 //
 // pkg/front_end/testcases/general/duplicated_declarations_part.dart:73:6: Error: 'Enum' is already declared in this scope.
 // enum Enum {
 //      ^^^^
-// pkg/front_end/testcases/general/duplicated_declarations.dart:81:6: Context: Previous declaration of 'Enum'.
+// pkg/front_end/testcases/general/duplicated_declarations.dart:83:6: Context: Previous declaration of 'Enum'.
 // enum Enum {
 //      ^^^^
 //
@@ -299,10 +299,10 @@
 // typedef Typedef = Object Function();
 //         ^^^^^^^
 //
-// pkg/front_end/testcases/general/duplicated_declarations.dart:65:19: Error: 'C' isn't a type.
+// pkg/front_end/testcases/general/duplicated_declarations.dart:67:19: Error: 'C' isn't a type.
 // class Sub extends C {
 //                   ^
-// pkg/front_end/testcases/general/duplicated_declarations.dart:65:19: Context: This isn't a type.
+// pkg/front_end/testcases/general/duplicated_declarations.dart:67:19: Context: This isn't a type.
 // class Sub extends C {
 //                   ^
 //
@@ -573,16 +573,16 @@
 Evaluated: ConstructorInvocation @ org-dartlang-testcase:///duplicated_declarations_part.dart:74:3 -> InstanceConstant(const Enum#2{Enum#2.index: 0, Enum#2._name: "Enum.Enum"})
 Evaluated: ConstructorInvocation @ org-dartlang-testcase:///duplicated_declarations_part.dart:75:3 -> InstanceConstant(const Enum#2{Enum#2.index: 1, Enum#2._name: "Enum.a"})
 Evaluated: ConstructorInvocation @ org-dartlang-testcase:///duplicated_declarations_part.dart:77:3 -> InstanceConstant(const Enum#2{Enum#2.index: 2, Enum#2._name: "Enum.b"})
-Evaluated: ListLiteral @ org-dartlang-testcase:///duplicated_declarations.dart:81:6 -> ListConstant(const <Enum#1*>[const Enum#1{Enum#1.index: 0, Enum#1._name: "Enum.a"}, const Enum#1{Enum#1.index: 1, Enum#1._name: "Enum.b"}, const Enum#1{Enum#1.index: 2, Enum#1._name: "Enum.c"}])
-Evaluated: ConstructorInvocation @ org-dartlang-testcase:///duplicated_declarations.dart:82:3 -> InstanceConstant(const Enum#1{Enum#1.index: 0, Enum#1._name: "Enum.a"})
-Evaluated: ConstructorInvocation @ org-dartlang-testcase:///duplicated_declarations.dart:83:3 -> InstanceConstant(const Enum#1{Enum#1.index: 1, Enum#1._name: "Enum.b"})
-Evaluated: ConstructorInvocation @ org-dartlang-testcase:///duplicated_declarations.dart:84:3 -> InstanceConstant(const Enum#1{Enum#1.index: 2, Enum#1._name: "Enum.c"})
-Evaluated: ListLiteral @ org-dartlang-testcase:///duplicated_declarations.dart:74:6 -> ListConstant(const <Enum*>[const Enum{Enum.index: 0, Enum._name: "Enum.Enum"}, const Enum{Enum.index: 1, Enum._name: "Enum.a"}, const Enum{Enum.index: 2, Enum._name: "Enum.b"}])
-Evaluated: ConstructorInvocation @ org-dartlang-testcase:///duplicated_declarations.dart:75:3 -> InstanceConstant(const Enum{Enum.index: 0, Enum._name: "Enum.Enum"})
-Evaluated: ConstructorInvocation @ org-dartlang-testcase:///duplicated_declarations.dart:76:3 -> InstanceConstant(const Enum{Enum.index: 1, Enum._name: "Enum.a"})
-Evaluated: ConstructorInvocation @ org-dartlang-testcase:///duplicated_declarations.dart:78:3 -> InstanceConstant(const Enum{Enum.index: 2, Enum._name: "Enum.b"})
-Evaluated: ListLiteral @ org-dartlang-testcase:///duplicated_declarations.dart:87:6 -> ListConstant(const <AnotherEnum*>[const AnotherEnum{AnotherEnum.index: 0, AnotherEnum._name: "AnotherEnum.a"}, const AnotherEnum{AnotherEnum.index: 1, AnotherEnum._name: "AnotherEnum.b"}, const AnotherEnum{AnotherEnum.index: 2, AnotherEnum._name: "AnotherEnum.c"}])
-Evaluated: ConstructorInvocation @ org-dartlang-testcase:///duplicated_declarations.dart:88:3 -> InstanceConstant(const AnotherEnum{AnotherEnum.index: 0, AnotherEnum._name: "AnotherEnum.a"})
-Evaluated: ConstructorInvocation @ org-dartlang-testcase:///duplicated_declarations.dart:89:3 -> InstanceConstant(const AnotherEnum{AnotherEnum.index: 1, AnotherEnum._name: "AnotherEnum.b"})
-Evaluated: ConstructorInvocation @ org-dartlang-testcase:///duplicated_declarations.dart:90:3 -> InstanceConstant(const AnotherEnum{AnotherEnum.index: 2, AnotherEnum._name: "AnotherEnum.c"})
+Evaluated: ListLiteral @ org-dartlang-testcase:///duplicated_declarations.dart:83:6 -> ListConstant(const <Enum#1*>[const Enum#1{Enum#1.index: 0, Enum#1._name: "Enum.a"}, const Enum#1{Enum#1.index: 1, Enum#1._name: "Enum.b"}, const Enum#1{Enum#1.index: 2, Enum#1._name: "Enum.c"}])
+Evaluated: ConstructorInvocation @ org-dartlang-testcase:///duplicated_declarations.dart:84:3 -> InstanceConstant(const Enum#1{Enum#1.index: 0, Enum#1._name: "Enum.a"})
+Evaluated: ConstructorInvocation @ org-dartlang-testcase:///duplicated_declarations.dart:85:3 -> InstanceConstant(const Enum#1{Enum#1.index: 1, Enum#1._name: "Enum.b"})
+Evaluated: ConstructorInvocation @ org-dartlang-testcase:///duplicated_declarations.dart:86:3 -> InstanceConstant(const Enum#1{Enum#1.index: 2, Enum#1._name: "Enum.c"})
+Evaluated: ListLiteral @ org-dartlang-testcase:///duplicated_declarations.dart:76:6 -> ListConstant(const <Enum*>[const Enum{Enum.index: 0, Enum._name: "Enum.Enum"}, const Enum{Enum.index: 1, Enum._name: "Enum.a"}, const Enum{Enum.index: 2, Enum._name: "Enum.b"}])
+Evaluated: ConstructorInvocation @ org-dartlang-testcase:///duplicated_declarations.dart:77:3 -> InstanceConstant(const Enum{Enum.index: 0, Enum._name: "Enum.Enum"})
+Evaluated: ConstructorInvocation @ org-dartlang-testcase:///duplicated_declarations.dart:78:3 -> InstanceConstant(const Enum{Enum.index: 1, Enum._name: "Enum.a"})
+Evaluated: ConstructorInvocation @ org-dartlang-testcase:///duplicated_declarations.dart:80:3 -> InstanceConstant(const Enum{Enum.index: 2, Enum._name: "Enum.b"})
+Evaluated: ListLiteral @ org-dartlang-testcase:///duplicated_declarations.dart:89:6 -> ListConstant(const <AnotherEnum*>[const AnotherEnum{AnotherEnum.index: 0, AnotherEnum._name: "AnotherEnum.a"}, const AnotherEnum{AnotherEnum.index: 1, AnotherEnum._name: "AnotherEnum.b"}, const AnotherEnum{AnotherEnum.index: 2, AnotherEnum._name: "AnotherEnum.c"}])
+Evaluated: ConstructorInvocation @ org-dartlang-testcase:///duplicated_declarations.dart:90:3 -> InstanceConstant(const AnotherEnum{AnotherEnum.index: 0, AnotherEnum._name: "AnotherEnum.a"})
+Evaluated: ConstructorInvocation @ org-dartlang-testcase:///duplicated_declarations.dart:91:3 -> InstanceConstant(const AnotherEnum{AnotherEnum.index: 1, AnotherEnum._name: "AnotherEnum.b"})
+Evaluated: ConstructorInvocation @ org-dartlang-testcase:///duplicated_declarations.dart:92:3 -> InstanceConstant(const AnotherEnum{AnotherEnum.index: 2, AnotherEnum._name: "AnotherEnum.c"})
 Extra constant evaluation: evaluated: 46, effectively constant: 22
diff --git a/pkg/front_end/testcases/general/error_recovery/empty_for.dart.weak.expect b/pkg/front_end/testcases/general/error_recovery/empty_for.dart.weak.expect
index 41b9444..35aa6ca 100644
--- a/pkg/front_end/testcases/general/error_recovery/empty_for.dart.weak.expect
+++ b/pkg/front_end/testcases/general/error_recovery/empty_for.dart.weak.expect
@@ -7,9 +7,9 @@
 //   for () {}
 //        ^
 //
-// pkg/front_end/testcases/general/error_recovery/empty_for.dart:3:8: Error: Expected ';' after this.
+// pkg/front_end/testcases/general/error_recovery/empty_for.dart:3:7: Error: Expected ';' after this.
 //   for () {}
-//        ^
+//       ^
 //
 import self as self;
 
diff --git a/pkg/front_end/testcases/general/error_recovery/empty_for.dart.weak.transformed.expect b/pkg/front_end/testcases/general/error_recovery/empty_for.dart.weak.transformed.expect
index 41b9444..35aa6ca 100644
--- a/pkg/front_end/testcases/general/error_recovery/empty_for.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/general/error_recovery/empty_for.dart.weak.transformed.expect
@@ -7,9 +7,9 @@
 //   for () {}
 //        ^
 //
-// pkg/front_end/testcases/general/error_recovery/empty_for.dart:3:8: Error: Expected ';' after this.
+// pkg/front_end/testcases/general/error_recovery/empty_for.dart:3:7: Error: Expected ';' after this.
 //   for () {}
-//        ^
+//       ^
 //
 import self as self;
 
diff --git a/pkg/front_end/testcases/general/error_recovery/issue_39033.crash_dart.weak.expect b/pkg/front_end/testcases/general/error_recovery/issue_39033.crash_dart.weak.expect
index 3e48c20..0292288 100644
--- a/pkg/front_end/testcases/general/error_recovery/issue_39033.crash_dart.weak.expect
+++ b/pkg/front_end/testcases/general/error_recovery/issue_39033.crash_dart.weak.expect
@@ -10,9 +10,9 @@
 // typedef F<Glib.=
 //                 ^...
 //
-// pkg/front_end/testcases/general/error_recovery/issue_39033.crash_dart:1:17: Error: Expected ';' after this.
+// pkg/front_end/testcases/general/error_recovery/issue_39033.crash_dart:1:16: Error: Expected ';' after this.
 // typedef F<Glib.=
-//                 ^...
+//                ^
 //
 // pkg/front_end/testcases/general/error_recovery/issue_39033.crash_dart:1:16: Error: Can't create typedef from non-type.
 // typedef F<Glib.=
diff --git a/pkg/front_end/testcases/general/error_recovery/issue_39033.crash_dart.weak.outline.expect b/pkg/front_end/testcases/general/error_recovery/issue_39033.crash_dart.weak.outline.expect
index 3e48c20..0292288 100644
--- a/pkg/front_end/testcases/general/error_recovery/issue_39033.crash_dart.weak.outline.expect
+++ b/pkg/front_end/testcases/general/error_recovery/issue_39033.crash_dart.weak.outline.expect
@@ -10,9 +10,9 @@
 // typedef F<Glib.=
 //                 ^...
 //
-// pkg/front_end/testcases/general/error_recovery/issue_39033.crash_dart:1:17: Error: Expected ';' after this.
+// pkg/front_end/testcases/general/error_recovery/issue_39033.crash_dart:1:16: Error: Expected ';' after this.
 // typedef F<Glib.=
-//                 ^...
+//                ^
 //
 // pkg/front_end/testcases/general/error_recovery/issue_39033.crash_dart:1:16: Error: Can't create typedef from non-type.
 // typedef F<Glib.=
diff --git a/pkg/front_end/testcases/general/error_recovery/issue_39033.crash_dart.weak.transformed.expect b/pkg/front_end/testcases/general/error_recovery/issue_39033.crash_dart.weak.transformed.expect
index 3e48c20..0292288 100644
--- a/pkg/front_end/testcases/general/error_recovery/issue_39033.crash_dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/general/error_recovery/issue_39033.crash_dart.weak.transformed.expect
@@ -10,9 +10,9 @@
 // typedef F<Glib.=
 //                 ^...
 //
-// pkg/front_end/testcases/general/error_recovery/issue_39033.crash_dart:1:17: Error: Expected ';' after this.
+// pkg/front_end/testcases/general/error_recovery/issue_39033.crash_dart:1:16: Error: Expected ';' after this.
 // typedef F<Glib.=
-//                 ^...
+//                ^
 //
 // pkg/front_end/testcases/general/error_recovery/issue_39033.crash_dart:1:16: Error: Can't create typedef from non-type.
 // typedef F<Glib.=
diff --git a/pkg/front_end/testcases/general/error_recovery/issue_39033b.crash_dart.weak.expect b/pkg/front_end/testcases/general/error_recovery/issue_39033b.crash_dart.weak.expect
index 6d27355..776ec91 100644
--- a/pkg/front_end/testcases/general/error_recovery/issue_39033b.crash_dart.weak.expect
+++ b/pkg/front_end/testcases/general/error_recovery/issue_39033b.crash_dart.weak.expect
@@ -10,9 +10,9 @@
 // typedef F<Glib.=
 //                 ^...
 //
-// pkg/front_end/testcases/general/error_recovery/issue_39033b.crash_dart:2:17: Error: Expected ';' after this.
+// pkg/front_end/testcases/general/error_recovery/issue_39033b.crash_dart:2:16: Error: Expected ';' after this.
 // typedef F<Glib.=
-//                 ^...
+//                ^
 //
 // pkg/front_end/testcases/general/error_recovery/issue_39033b.crash_dart:2:16: Error: Can't create typedef from non-function type.
 // typedef F<Glib.=
diff --git a/pkg/front_end/testcases/general/error_recovery/issue_39033b.crash_dart.weak.outline.expect b/pkg/front_end/testcases/general/error_recovery/issue_39033b.crash_dart.weak.outline.expect
index 6d27355..776ec91 100644
--- a/pkg/front_end/testcases/general/error_recovery/issue_39033b.crash_dart.weak.outline.expect
+++ b/pkg/front_end/testcases/general/error_recovery/issue_39033b.crash_dart.weak.outline.expect
@@ -10,9 +10,9 @@
 // typedef F<Glib.=
 //                 ^...
 //
-// pkg/front_end/testcases/general/error_recovery/issue_39033b.crash_dart:2:17: Error: Expected ';' after this.
+// pkg/front_end/testcases/general/error_recovery/issue_39033b.crash_dart:2:16: Error: Expected ';' after this.
 // typedef F<Glib.=
-//                 ^...
+//                ^
 //
 // pkg/front_end/testcases/general/error_recovery/issue_39033b.crash_dart:2:16: Error: Can't create typedef from non-function type.
 // typedef F<Glib.=
diff --git a/pkg/front_end/testcases/general/error_recovery/issue_39033b.crash_dart.weak.transformed.expect b/pkg/front_end/testcases/general/error_recovery/issue_39033b.crash_dart.weak.transformed.expect
index 6d27355..776ec91 100644
--- a/pkg/front_end/testcases/general/error_recovery/issue_39033b.crash_dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/general/error_recovery/issue_39033b.crash_dart.weak.transformed.expect
@@ -10,9 +10,9 @@
 // typedef F<Glib.=
 //                 ^...
 //
-// pkg/front_end/testcases/general/error_recovery/issue_39033b.crash_dart:2:17: Error: Expected ';' after this.
+// pkg/front_end/testcases/general/error_recovery/issue_39033b.crash_dart:2:16: Error: Expected ';' after this.
 // typedef F<Glib.=
-//                 ^...
+//                ^
 //
 // pkg/front_end/testcases/general/error_recovery/issue_39033b.crash_dart:2:16: Error: Can't create typedef from non-function type.
 // typedef F<Glib.=
diff --git a/pkg/front_end/testcases/general/error_recovery/issue_39202.crash_dart.weak.expect b/pkg/front_end/testcases/general/error_recovery/issue_39202.crash_dart.weak.expect
index c1350db..e1e7c23 100644
--- a/pkg/front_end/testcases/general/error_recovery/issue_39202.crash_dart.weak.expect
+++ b/pkg/front_end/testcases/general/error_recovery/issue_39202.crash_dart.weak.expect
@@ -24,9 +24,9 @@
 // () async => a b < c $? >
 //                         ^...
 //
-// pkg/front_end/testcases/general/error_recovery/issue_39202.crash_dart:1:25: Error: Expected ';' after this.
+// pkg/front_end/testcases/general/error_recovery/issue_39202.crash_dart:1:24: Error: Expected ';' after this.
 // () async => a b < c $? >
-//                         ^...
+//                        ^
 //
 // pkg/front_end/testcases/general/error_recovery/issue_39202.crash_dart:1:19: Error: Type 'c' not found.
 // () async => a b < c $? >
diff --git a/pkg/front_end/testcases/general/error_recovery/issue_39202.crash_dart.weak.outline.expect b/pkg/front_end/testcases/general/error_recovery/issue_39202.crash_dart.weak.outline.expect
index df89136..468caf0 100644
--- a/pkg/front_end/testcases/general/error_recovery/issue_39202.crash_dart.weak.outline.expect
+++ b/pkg/front_end/testcases/general/error_recovery/issue_39202.crash_dart.weak.outline.expect
@@ -24,9 +24,9 @@
 // () async => a b < c $? >
 //                         ^...
 //
-// pkg/front_end/testcases/general/error_recovery/issue_39202.crash_dart:1:25: Error: Expected ';' after this.
+// pkg/front_end/testcases/general/error_recovery/issue_39202.crash_dart:1:24: Error: Expected ';' after this.
 // () async => a b < c $? >
-//                         ^...
+//                        ^
 //
 // pkg/front_end/testcases/general/error_recovery/issue_39202.crash_dart:1:19: Error: Type 'c' not found.
 // () async => a b < c $? >
diff --git a/pkg/front_end/testcases/general/error_recovery/issue_39202.crash_dart.weak.transformed.expect b/pkg/front_end/testcases/general/error_recovery/issue_39202.crash_dart.weak.transformed.expect
index c1350db..e1e7c23 100644
--- a/pkg/front_end/testcases/general/error_recovery/issue_39202.crash_dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/general/error_recovery/issue_39202.crash_dart.weak.transformed.expect
@@ -24,9 +24,9 @@
 // () async => a b < c $? >
 //                         ^...
 //
-// pkg/front_end/testcases/general/error_recovery/issue_39202.crash_dart:1:25: Error: Expected ';' after this.
+// pkg/front_end/testcases/general/error_recovery/issue_39202.crash_dart:1:24: Error: Expected ';' after this.
 // () async => a b < c $? >
-//                         ^...
+//                        ^
 //
 // pkg/front_end/testcases/general/error_recovery/issue_39202.crash_dart:1:19: Error: Type 'c' not found.
 // () async => a b < c $? >
diff --git a/pkg/front_end/testcases/general/issue42997.dart.weak.expect b/pkg/front_end/testcases/general/issue42997.dart.weak.expect
index 2b9a704..8e7c300 100644
--- a/pkg/front_end/testcases/general/issue42997.dart.weak.expect
+++ b/pkg/front_end/testcases/general/issue42997.dart.weak.expect
@@ -27,10 +27,6 @@
 //     for (PropertyState<Object, Object>> state in _states) ;
 //                              ^
 //
-// pkg/front_end/testcases/general/issue42997.dart:12:30: Error: Expected ';' after this.
-//     for (PropertyState<Object, Object>> state in _states) ;
-//                              ^
-//
 // pkg/front_end/testcases/general/issue42997.dart:12:47: Error: Unexpected token 'in'.
 //     for (PropertyState<Object, Object>> state in _states) ;
 //                                               ^^
diff --git a/pkg/front_end/testcases/general/issue42997.dart.weak.transformed.expect b/pkg/front_end/testcases/general/issue42997.dart.weak.transformed.expect
index 2b9a704..8e7c300 100644
--- a/pkg/front_end/testcases/general/issue42997.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/general/issue42997.dart.weak.transformed.expect
@@ -27,10 +27,6 @@
 //     for (PropertyState<Object, Object>> state in _states) ;
 //                              ^
 //
-// pkg/front_end/testcases/general/issue42997.dart:12:30: Error: Expected ';' after this.
-//     for (PropertyState<Object, Object>> state in _states) ;
-//                              ^
-//
 // pkg/front_end/testcases/general/issue42997.dart:12:47: Error: Unexpected token 'in'.
 //     for (PropertyState<Object, Object>> state in _states) ;
 //                                               ^^
diff --git a/pkg/front_end/testcases/general/issue47036.dart b/pkg/front_end/testcases/general/issue47036.dart
new file mode 100644
index 0000000..392b72d
--- /dev/null
+++ b/pkg/front_end/testcases/general/issue47036.dart
@@ -0,0 +1,39 @@
+// Copyright (c) 2021, 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 Default {
+  const Default(this.defaultValue);
+
+  final Object? defaultValue;
+}
+
+class Settings {
+  const factory Settings({
+    @Default(Sidebar()) Sidebar sidebar,
+  }) = _SSettings;
+}
+
+class Sidebar {
+  const factory Sidebar() = _SSidebar;
+}
+
+abstract class _SSettings implements Settings {
+  const factory _SSettings({Sidebar sidebar}) = _$_SSettings;
+}
+
+class _$_SSettings implements _SSettings {
+  const _$_SSettings({this.sidebar = const Sidebar()});
+
+  final Sidebar sidebar;
+}
+
+abstract class _SSidebar implements Sidebar {
+  const factory _SSidebar() = _$_SSidebar;
+}
+
+class _$_SSidebar implements _SSidebar {
+  const _$_SSidebar();
+}
+
+void main() {}
diff --git a/pkg/front_end/testcases/general/issue47036.dart.textual_outline.expect b/pkg/front_end/testcases/general/issue47036.dart.textual_outline.expect
new file mode 100644
index 0000000..7f1cc2a
--- /dev/null
+++ b/pkg/front_end/testcases/general/issue47036.dart.textual_outline.expect
@@ -0,0 +1,33 @@
+class Default {
+  const Default(this.defaultValue);
+  final Object? defaultValue;
+}
+
+class Settings {
+  const factory Settings({
+    @Default(Sidebar()) Sidebar sidebar,
+  }) = _SSettings;
+}
+
+class Sidebar {
+  const factory Sidebar() = _SSidebar;
+}
+
+abstract class _SSettings implements Settings {
+  const factory _SSettings({Sidebar sidebar}) = _$_SSettings;
+}
+
+class _$_SSettings implements _SSettings {
+  const _$_SSettings({this.sidebar = const Sidebar()});
+  final Sidebar sidebar;
+}
+
+abstract class _SSidebar implements Sidebar {
+  const factory _SSidebar() = _$_SSidebar;
+}
+
+class _$_SSidebar implements _SSidebar {
+  const _$_SSidebar();
+}
+
+void main() {}
diff --git a/pkg/front_end/testcases/general/issue47036.dart.textual_outline_modelled.expect b/pkg/front_end/testcases/general/issue47036.dart.textual_outline_modelled.expect
new file mode 100644
index 0000000..0554393
--- /dev/null
+++ b/pkg/front_end/testcases/general/issue47036.dart.textual_outline_modelled.expect
@@ -0,0 +1,33 @@
+abstract class _SSettings implements Settings {
+  const factory _SSettings({Sidebar sidebar}) = _$_SSettings;
+}
+
+abstract class _SSidebar implements Sidebar {
+  const factory _SSidebar() = _$_SSidebar;
+}
+
+class Default {
+  const Default(this.defaultValue);
+  final Object? defaultValue;
+}
+
+class Settings {
+  const factory Settings({
+    @Default(Sidebar()) Sidebar sidebar,
+  }) = _SSettings;
+}
+
+class Sidebar {
+  const factory Sidebar() = _SSidebar;
+}
+
+class _$_SSettings implements _SSettings {
+  const _$_SSettings({this.sidebar = const Sidebar()});
+  final Sidebar sidebar;
+}
+
+class _$_SSidebar implements _SSidebar {
+  const _$_SSidebar();
+}
+
+void main() {}
diff --git a/pkg/front_end/testcases/general/issue47036.dart.weak.expect b/pkg/front_end/testcases/general/issue47036.dart.weak.expect
new file mode 100644
index 0000000..e755d5a
--- /dev/null
+++ b/pkg/front_end/testcases/general/issue47036.dart.weak.expect
@@ -0,0 +1,55 @@
+library /*isNonNullableByDefault*/;
+import self as self;
+import "dart:core" as core;
+
+class Default extends core::Object /*hasConstConstructor*/  {
+  final field core::Object? defaultValue;
+  const constructor •(core::Object? defaultValue) → self::Default
+    : self::Default::defaultValue = defaultValue, super core::Object::•()
+    ;
+}
+class Settings extends core::Object {
+  static final field dynamic _redirecting# = <dynamic>[self::Settings::•]/*isLegacy*/;
+  static factory •({@#C2 self::Sidebar sidebar = #C3}) → self::Settings
+    return self::_SSettings::•(sidebar: sidebar);
+}
+class Sidebar extends core::Object {
+  static final field dynamic _redirecting# = <dynamic>[self::Sidebar::•]/*isLegacy*/;
+  static factory •() → self::Sidebar
+    return self::_SSidebar::•();
+}
+abstract class _SSettings extends core::Object implements self::Settings {
+  static final field dynamic _redirecting# = <dynamic>[self::_SSettings::•]/*isLegacy*/;
+  static factory •({self::Sidebar sidebar = #C3}) → self::_SSettings
+    return new self::_$_SSettings::•(sidebar: sidebar);
+}
+class _$_SSettings extends core::Object implements self::_SSettings /*hasConstConstructor*/  {
+  final field self::Sidebar sidebar;
+  const constructor •({self::Sidebar sidebar = #C1}) → self::_$_SSettings
+    : self::_$_SSettings::sidebar = sidebar, super core::Object::•()
+    ;
+}
+abstract class _SSidebar extends core::Object implements self::Sidebar {
+  static final field dynamic _redirecting# = <dynamic>[self::_SSidebar::•]/*isLegacy*/;
+  static factory •() → self::_SSidebar
+    return new self::_$_SSidebar::•();
+}
+class _$_SSidebar extends core::Object implements self::_SSidebar /*hasConstConstructor*/  {
+  const constructor •() → self::_$_SSidebar
+    : super core::Object::•()
+    ;
+}
+static method main() → void {}
+
+constants  {
+  #C1 = self::_$_SSidebar {}
+  #C2 = self::Default {defaultValue:#C1}
+  #C3 = null
+}
+
+
+Constructor coverage from constants:
+org-dartlang-testcase:///issue47036.dart:
+- _$_SSidebar. (from org-dartlang-testcase:///issue47036.dart:36:9)
+- Object. (from org-dartlang-sdk:///sdk/lib/core/object.dart:25:9)
+- Default. (from org-dartlang-testcase:///issue47036.dart:6:9)
diff --git a/pkg/front_end/testcases/general/issue47036.dart.weak.outline.expect b/pkg/front_end/testcases/general/issue47036.dart.weak.outline.expect
new file mode 100644
index 0000000..ebe57b3
--- /dev/null
+++ b/pkg/front_end/testcases/general/issue47036.dart.weak.outline.expect
@@ -0,0 +1,48 @@
+library /*isNonNullableByDefault*/;
+import self as self;
+import "dart:core" as core;
+
+class Default extends core::Object /*hasConstConstructor*/  {
+  final field core::Object? defaultValue;
+  const constructor •(core::Object? defaultValue) → self::Default
+    : self::Default::defaultValue = defaultValue, super core::Object::•()
+    ;
+}
+class Settings extends core::Object {
+  static final field dynamic _redirecting# = <dynamic>[self::Settings::•]/*isLegacy*/;
+  static factory •({self::Sidebar sidebar}) → self::Settings
+    return self::_SSettings::•(sidebar: sidebar);
+}
+class Sidebar extends core::Object {
+  static final field dynamic _redirecting# = <dynamic>[self::Sidebar::•]/*isLegacy*/;
+  static factory •() → self::Sidebar
+    return self::_SSidebar::•();
+}
+abstract class _SSettings extends core::Object implements self::Settings {
+  static final field dynamic _redirecting# = <dynamic>[self::_SSettings::•]/*isLegacy*/;
+  static factory •({self::Sidebar sidebar}) → self::_SSettings
+    return new self::_$_SSettings::•(sidebar: sidebar);
+}
+class _$_SSettings extends core::Object implements self::_SSettings /*hasConstConstructor*/  {
+  final field self::Sidebar sidebar;
+  const constructor •({self::Sidebar sidebar = const self::_$_SSidebar::•()}) → self::_$_SSettings
+    : self::_$_SSettings::sidebar = sidebar, super core::Object::•()
+    ;
+}
+abstract class _SSidebar extends core::Object implements self::Sidebar {
+  static final field dynamic _redirecting# = <dynamic>[self::_SSidebar::•]/*isLegacy*/;
+  static factory •() → self::_SSidebar
+    return new self::_$_SSidebar::•();
+}
+class _$_SSidebar extends core::Object implements self::_SSidebar /*hasConstConstructor*/  {
+  const constructor •() → self::_$_SSidebar
+    : super core::Object::•()
+    ;
+}
+static method main() → void
+  ;
+
+
+Extra constant evaluation status:
+Evaluated: ConstructorInvocation @ org-dartlang-testcase:///issue47036.dart:26:44 -> InstanceConstant(const _$_SSidebar{})
+Extra constant evaluation: evaluated: 17, effectively constant: 1
diff --git a/pkg/front_end/testcases/general/issue47036.dart.weak.transformed.expect b/pkg/front_end/testcases/general/issue47036.dart.weak.transformed.expect
new file mode 100644
index 0000000..e755d5a
--- /dev/null
+++ b/pkg/front_end/testcases/general/issue47036.dart.weak.transformed.expect
@@ -0,0 +1,55 @@
+library /*isNonNullableByDefault*/;
+import self as self;
+import "dart:core" as core;
+
+class Default extends core::Object /*hasConstConstructor*/  {
+  final field core::Object? defaultValue;
+  const constructor •(core::Object? defaultValue) → self::Default
+    : self::Default::defaultValue = defaultValue, super core::Object::•()
+    ;
+}
+class Settings extends core::Object {
+  static final field dynamic _redirecting# = <dynamic>[self::Settings::•]/*isLegacy*/;
+  static factory •({@#C2 self::Sidebar sidebar = #C3}) → self::Settings
+    return self::_SSettings::•(sidebar: sidebar);
+}
+class Sidebar extends core::Object {
+  static final field dynamic _redirecting# = <dynamic>[self::Sidebar::•]/*isLegacy*/;
+  static factory •() → self::Sidebar
+    return self::_SSidebar::•();
+}
+abstract class _SSettings extends core::Object implements self::Settings {
+  static final field dynamic _redirecting# = <dynamic>[self::_SSettings::•]/*isLegacy*/;
+  static factory •({self::Sidebar sidebar = #C3}) → self::_SSettings
+    return new self::_$_SSettings::•(sidebar: sidebar);
+}
+class _$_SSettings extends core::Object implements self::_SSettings /*hasConstConstructor*/  {
+  final field self::Sidebar sidebar;
+  const constructor •({self::Sidebar sidebar = #C1}) → self::_$_SSettings
+    : self::_$_SSettings::sidebar = sidebar, super core::Object::•()
+    ;
+}
+abstract class _SSidebar extends core::Object implements self::Sidebar {
+  static final field dynamic _redirecting# = <dynamic>[self::_SSidebar::•]/*isLegacy*/;
+  static factory •() → self::_SSidebar
+    return new self::_$_SSidebar::•();
+}
+class _$_SSidebar extends core::Object implements self::_SSidebar /*hasConstConstructor*/  {
+  const constructor •() → self::_$_SSidebar
+    : super core::Object::•()
+    ;
+}
+static method main() → void {}
+
+constants  {
+  #C1 = self::_$_SSidebar {}
+  #C2 = self::Default {defaultValue:#C1}
+  #C3 = null
+}
+
+
+Constructor coverage from constants:
+org-dartlang-testcase:///issue47036.dart:
+- _$_SSidebar. (from org-dartlang-testcase:///issue47036.dart:36:9)
+- Object. (from org-dartlang-sdk:///sdk/lib/core/object.dart:25:9)
+- Default. (from org-dartlang-testcase:///issue47036.dart:6:9)
diff --git a/pkg/front_end/testcases/general/redirecting_factory_invocation_metadata.dart b/pkg/front_end/testcases/general/redirecting_factory_invocation_metadata.dart
new file mode 100644
index 0000000..a51dd5e
--- /dev/null
+++ b/pkg/front_end/testcases/general/redirecting_factory_invocation_metadata.dart
@@ -0,0 +1,114 @@
+// Copyright (c) 2021, 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.
+
+@Const()
+library name;
+
+@Const()
+import 'redirecting_factory_invocation_metadata.dart' as self;
+
+@Const()
+export 'redirecting_factory_invocation_metadata.dart';
+
+@Const()
+part 'redirecting_factory_invocation_metadata_lib.dart';
+
+@Const()
+class Const {
+  const Const.internal();
+  const factory Const() = Const.internal;
+}
+
+@Const()
+var field = <@Const() T>(@Const() var o1, [@Const() var o2]) {
+  @Const()
+  var l1;
+
+  @Const()
+  l2<@Const() T>(@Const() var o1, [@Const() var o2]) {}
+};
+
+@Const()
+method1<@Const() T>(@Const() var o1, [@Const() var o2]) {
+  @Const()
+  var l1;
+
+  @Const()
+  l2<@Const() T>(@Const() var o1, [@Const() var o2]) {}
+}
+
+@Const()
+method2<@Const() T>(@Const() var o1, {@Const() var o2}) {
+  <@Const() T>(@Const() var o1, {@Const() var o2}) {};
+}
+
+class Class<@Const() T> {
+  @Const()
+  var field = <@Const() T>(@Const() var o1, {@Const() var o2}) {
+    @Const()
+    var l1;
+
+    @Const()
+    l2<@Const() T>(@Const() var o1, {@Const() var o2}) {}
+  };
+
+  @Const()
+  Class();
+
+  @Const()
+  method1<@Const() T>(@Const() var o1, [@Const() var o2]) {
+    @Const()
+    var l1;
+
+    @Const()
+    l2<@Const() T>(@Const() var o1, [@Const() var o2]) {}
+  }
+
+  @Const()
+  method2<@Const() T>(@Const() var o1, {@Const() var o2}) {
+    <@Const() T>(@Const() var o1, {@Const() var o2}) {};
+  }
+}
+
+@Const()
+typedef Typedef1<@Const() T> = Function<@Const() T>(@Const() Class,
+    [@Const() Class]);
+
+@Const()
+typedef Typedef2<@Const() T> = Function<@Const() T>(@Const() Class,
+    {@Const() Class o2});
+
+@Const()
+typedef void Typedef3<@Const() T>(@Const() var o1, [@Const() var o2]);
+
+@Const()
+typedef void Typedef4<@Const() T>(@Const() var o1, {@Const() var o2});
+
+@Const()
+extension Extension<@Const() T> on Class<T> {
+  @Const()
+  static var field = <@Const() T>(@Const() var o1, [@Const() var o2]) {
+    @Const()
+    var l1;
+
+    @Const()
+    l2<@Const() T>(@Const() var o1, [@Const() var o2]) {}
+  };
+
+  @Const()
+  method1<@Const() T>(@Const() var o1, [@Const() var o2]) {
+    @Const()
+    var l1;
+
+    @Const()
+    l2<@Const() T>(@Const() var o1, [@Const() var o2]) {}
+  }
+
+  @Const()
+  method2<@Const() T>(@Const() var o1, {@Const() var o2}) {
+    <@Const() T>(@Const() var o1, {@Const() var o2}) {};
+  }
+}
+
+main() {}
diff --git a/pkg/front_end/testcases/general/redirecting_factory_invocation_metadata.dart.textual_outline.expect b/pkg/front_end/testcases/general/redirecting_factory_invocation_metadata.dart.textual_outline.expect
new file mode 100644
index 0000000..269a7f2
--- /dev/null
+++ b/pkg/front_end/testcases/general/redirecting_factory_invocation_metadata.dart.textual_outline.expect
@@ -0,0 +1,71 @@
+@Const()
+library name;
+
+@Const()
+import 'redirecting_factory_invocation_metadata.dart' as self;
+@Const()
+export 'redirecting_factory_invocation_metadata.dart';
+@Const()
+part 'redirecting_factory_invocation_metadata_lib.dart';
+
+@Const()
+class Const {
+  const Const.internal();
+  const factory Const() = Const.internal;
+}
+
+@Const()
+var field = <@Const() T>(@Const() var o1, [@Const() var o2]) {
+  @Const()
+  var l1;
+  @Const()
+  l2<@Const() T>(@Const() var o1, [@Const() var o2]) {}
+};
+@Const()
+method1<@Const() T>(@Const() var o1, [@Const() var o2]) {}
+@Const()
+method2<@Const() T>(@Const() var o1, {@Const() var o2}) {}
+
+class Class<@Const() T> {
+  @Const()
+  var field = <@Const() T>(@Const() var o1, {@Const() var o2}) {
+    @Const()
+    var l1;
+    @Const()
+    l2<@Const() T>(@Const() var o1, {@Const() var o2}) {}
+  };
+  @Const()
+  Class();
+  @Const()
+  method1<@Const() T>(@Const() var o1, [@Const() var o2]) {}
+  @Const()
+  method2<@Const() T>(@Const() var o1, {@Const() var o2}) {}
+}
+
+@Const()
+typedef Typedef1<@Const() T> = Function<@Const() T>(@Const() Class,
+    [@Const() Class]);
+@Const()
+typedef Typedef2<@Const() T> = Function<@Const() T>(@Const() Class,
+    {@Const() Class o2});
+@Const()
+typedef void Typedef3<@Const() T>(@Const() var o1, [@Const() var o2]);
+@Const()
+typedef void Typedef4<@Const() T>(@Const() var o1, {@Const() var o2});
+
+@Const()
+extension Extension<@Const() T> on Class<T> {
+  @Const()
+  static var field = <@Const() T>(@Const() var o1, [@Const() var o2]) {
+    @Const()
+    var l1;
+    @Const()
+    l2<@Const() T>(@Const() var o1, [@Const() var o2]) {}
+  };
+  @Const()
+  method1<@Const() T>(@Const() var o1, [@Const() var o2]) {}
+  @Const()
+  method2<@Const() T>(@Const() var o1, {@Const() var o2}) {}
+}
+
+main() {}
diff --git a/pkg/front_end/testcases/general/redirecting_factory_invocation_metadata.dart.textual_outline_modelled.expect b/pkg/front_end/testcases/general/redirecting_factory_invocation_metadata.dart.textual_outline_modelled.expect
new file mode 100644
index 0000000..4fd86e8
--- /dev/null
+++ b/pkg/front_end/testcases/general/redirecting_factory_invocation_metadata.dart.textual_outline_modelled.expect
@@ -0,0 +1,69 @@
+@Const()
+library name;
+
+@Const()
+export 'redirecting_factory_invocation_metadata.dart';
+@Const()
+import 'redirecting_factory_invocation_metadata.dart' as self;
+@Const()
+part 'redirecting_factory_invocation_metadata_lib.dart';
+
+class Class<@Const() T> {
+  @Const()
+  Class();
+  @Const()
+  method1<@Const() T>(@Const() var o1, [@Const() var o2]) {}
+  @Const()
+  method2<@Const() T>(@Const() var o1, {@Const() var o2}) {}
+  @Const()
+  var field = <@Const() T>(@Const() var o1, {@Const() var o2}) {
+    @Const()
+    var l1;
+    @Const()
+    l2<@Const() T>(@Const() var o1, {@Const() var o2}) {}
+  };
+}
+
+@Const()
+class Const {
+  const Const.internal();
+  const factory Const() = Const.internal;
+}
+
+@Const()
+extension Extension<@Const() T> on Class<T> {
+  @Const()
+  method1<@Const() T>(@Const() var o1, [@Const() var o2]) {}
+  @Const()
+  method2<@Const() T>(@Const() var o1, {@Const() var o2}) {}
+  @Const()
+  static var field = <@Const() T>(@Const() var o1, [@Const() var o2]) {
+    @Const()
+    var l1;
+    @Const()
+    l2<@Const() T>(@Const() var o1, [@Const() var o2]) {}
+  };
+}
+
+main() {}
+@Const()
+method1<@Const() T>(@Const() var o1, [@Const() var o2]) {}
+@Const()
+method2<@Const() T>(@Const() var o1, {@Const() var o2}) {}
+@Const()
+typedef Typedef1<@Const() T> = Function<@Const() T>(@Const() Class,
+    [@Const() Class]);
+@Const()
+typedef Typedef2<@Const() T> = Function<@Const() T>(@Const() Class,
+    {@Const() Class o2});
+@Const()
+typedef void Typedef3<@Const() T>(@Const() var o1, [@Const() var o2]);
+@Const()
+typedef void Typedef4<@Const() T>(@Const() var o1, {@Const() var o2});
+@Const()
+var field = <@Const() T>(@Const() var o1, [@Const() var o2]) {
+  @Const()
+  var l1;
+  @Const()
+  l2<@Const() T>(@Const() var o1, [@Const() var o2]) {}
+};
diff --git a/pkg/front_end/testcases/general/redirecting_factory_invocation_metadata.dart.weak.expect b/pkg/front_end/testcases/general/redirecting_factory_invocation_metadata.dart.weak.expect
new file mode 100644
index 0000000..39405c7
--- /dev/null
+++ b/pkg/front_end/testcases/general/redirecting_factory_invocation_metadata.dart.weak.expect
@@ -0,0 +1,105 @@
+@#C1
+library name /*isNonNullableByDefault*/;
+import self as self;
+import "dart:core" as core;
+
+import "org-dartlang-testcase:///redirecting_factory_invocation_metadata.dart" as self;
+export "org-dartlang-testcase:///redirecting_factory_invocation_metadata.dart";
+
+@#C1
+part redirecting_factory_invocation_metadata_lib.dart;
+@#C1
+typedef Typedef1<@#C1 unrelated T extends core::Object? = dynamic> = <T extends core::Object? = dynamic>(@#C1 self::Class<dynamic> #t1, [@#C1 self::Class<dynamic> #t2]) → dynamic;
+@#C1
+typedef Typedef2<@#C1 unrelated T extends core::Object? = dynamic> = <T extends core::Object? = dynamic>(@#C1 self::Class<dynamic> #t3, {@#C1 self::Class<dynamic> o2}) → dynamic;
+@#C1
+typedef Typedef3<@#C1 unrelated T extends core::Object? = dynamic> = (@#C1 dynamic o1, [@#C1 dynamic o2]) → void;
+@#C1
+typedef Typedef4<@#C1 unrelated T extends core::Object? = dynamic> = (@#C1 dynamic o1, {@#C1 dynamic o2}) → void;
+@#C1
+class Const extends core::Object /*hasConstConstructor*/  {
+  static final field dynamic _redirecting# = <dynamic>[self::Const::•]/*isLegacy*/;
+  const constructor internal() → self::Const
+    : super core::Object::•()
+    ;
+  static factory •() → self::Const
+    return new self::Const::internal();
+}
+class Class<@#C1 T extends core::Object? = dynamic> extends core::Object {
+  @#C1
+  field <T extends core::Object? = dynamic>(dynamic, {o2: dynamic}) → Null field = <@#C1 T extends core::Object? = dynamic>(@#C1 dynamic o1, {@#C1 dynamic o2 = #C2}) → Null {
+    @#C1 dynamic l1;
+    @#C1
+    function l2<@#C1 T extends core::Object? = dynamic>(@#C1 dynamic o1, {@#C1 dynamic o2 = #C2}) → Null {}
+  };
+  @#C1
+  constructor •() → self::Class<self::Class::T%>
+    : super core::Object::•()
+    ;
+  @#C1
+  method method1<@#C1 T extends core::Object? = dynamic>(@#C1 dynamic o1, [@#C1 dynamic o2 = #C2]) → dynamic {
+    @#C1 dynamic l1;
+    @#C1
+    function l2<@#C1 T extends core::Object? = dynamic>(@#C1 dynamic o1, [@#C1 dynamic o2 = #C2]) → Null {}
+  }
+  @#C1
+  method method2<@#C1 T extends core::Object? = dynamic>(@#C1 dynamic o1, {@#C1 dynamic o2 = #C2}) → dynamic {
+    <@#C1 T extends core::Object? = dynamic>(@#C1 dynamic o1, {@#C1 dynamic o2 = #C2}) → Null {};
+  }
+}
+@#C1
+extension Extension<@#C1 T extends core::Object? = dynamic> on self::Class<T%> {
+  static field field = self::Extension|field;
+  method method1 = self::Extension|method1;
+  tearoff method1 = self::Extension|get#method1;
+  method method2 = self::Extension|method2;
+  tearoff method2 = self::Extension|get#method2;
+}
+@#C1
+static field <T extends core::Object? = dynamic>(dynamic, [dynamic]) → Null field = <@#C1 T extends core::Object? = dynamic>(@#C1 dynamic o1, [@#C1 dynamic o2 = #C2]) → Null {
+  @#C1 dynamic l1;
+  @#C1
+  function l2<@#C1 T extends core::Object? = dynamic>(@#C1 dynamic o1, [@#C1 dynamic o2 = #C2]) → Null {}
+};
+@#C1
+static field <T extends core::Object? = dynamic>(dynamic, [dynamic]) → Null Extension|field = <@#C1 T extends core::Object? = dynamic>(@#C1 dynamic o1, [@#C1 dynamic o2 = #C2]) → Null {
+  @#C1 dynamic l1;
+  @#C1
+  function l2<@#C1 T extends core::Object? = dynamic>(@#C1 dynamic o1, [@#C1 dynamic o2 = #C2]) → Null {}
+};
+@#C1
+static method method1<@#C1 T extends core::Object? = dynamic>(@#C1 dynamic o1, [@#C1 dynamic o2 = #C2]) → dynamic {
+  @#C1 dynamic l1;
+  @#C1
+  function l2<@#C1 T extends core::Object? = dynamic>(@#C1 dynamic o1, [@#C1 dynamic o2 = #C2]) → Null {}
+}
+@#C1
+static method method2<@#C1 T extends core::Object? = dynamic>(@#C1 dynamic o1, {@#C1 dynamic o2 = #C2}) → dynamic {
+  <@#C1 T extends core::Object? = dynamic>(@#C1 dynamic o1, {@#C1 dynamic o2 = #C2}) → Null {};
+}
+@#C1
+static method Extension|method1<#T extends core::Object? = dynamic, @#C1 T extends core::Object? = dynamic>(lowered final self::Class<self::Extension|method1::#T%> #this, @#C1 dynamic o1, [@#C1 dynamic o2 = #C2]) → dynamic {
+  @#C1 dynamic l1;
+  @#C1
+  function l2<@#C1 T extends core::Object? = dynamic>(@#C1 dynamic o1, [@#C1 dynamic o2 = #C2]) → Null {}
+}
+static method Extension|get#method1<#T extends core::Object? = dynamic>(lowered final self::Class<self::Extension|get#method1::#T%> #this) → <T extends core::Object? = dynamic>(dynamic, [dynamic]) → dynamic
+  return <T extends core::Object? = dynamic>(dynamic o1, [dynamic o2 = #C2]) → dynamic => self::Extension|method1<self::Extension|get#method1::#T%, T%>(#this, o1, o2);
+@#C1
+static method Extension|method2<#T extends core::Object? = dynamic, @#C1 T extends core::Object? = dynamic>(lowered final self::Class<self::Extension|method2::#T%> #this, @#C1 dynamic o1, {@#C1 dynamic o2 = #C2}) → dynamic {
+  <@#C1 T extends core::Object? = dynamic>(@#C1 dynamic o1, {@#C1 dynamic o2 = #C2}) → Null {};
+}
+static method Extension|get#method2<#T extends core::Object? = dynamic>(lowered final self::Class<self::Extension|get#method2::#T%> #this) → <T extends core::Object? = dynamic>(dynamic, {o2: dynamic}) → dynamic
+  return <T extends core::Object? = dynamic>(dynamic o1, {dynamic o2 = #C2}) → dynamic => self::Extension|method2<self::Extension|get#method2::#T%, T%>(#this, o1, o2: o2);
+static method main() → dynamic {}
+
+constants  {
+  #C1 = self::Const {}
+  #C2 = null
+}
+
+
+Constructor coverage from constants:
+org-dartlang-testcase:///redirecting_factory_invocation_metadata.dart:
+- Const.internal (from org-dartlang-testcase:///redirecting_factory_invocation_metadata.dart:19:9)
+- Object. (from org-dartlang-sdk:///sdk/lib/core/object.dart:25:9)
diff --git a/pkg/front_end/testcases/general/redirecting_factory_invocation_metadata.dart.weak.outline.expect b/pkg/front_end/testcases/general/redirecting_factory_invocation_metadata.dart.weak.outline.expect
new file mode 100644
index 0000000..777c550
--- /dev/null
+++ b/pkg/front_end/testcases/general/redirecting_factory_invocation_metadata.dart.weak.outline.expect
@@ -0,0 +1,101 @@
+@name::Const::internal()
+library name /*isNonNullableByDefault*/;
+import self as self;
+import "dart:core" as core;
+
+import "org-dartlang-testcase:///redirecting_factory_invocation_metadata.dart" as self;
+export "org-dartlang-testcase:///redirecting_factory_invocation_metadata.dart";
+
+part redirecting_factory_invocation_metadata_lib.dart;
+@self::Const::internal()
+typedef Typedef1<@self::Const::internal() unrelated T extends core::Object? = dynamic> = <T extends core::Object? = dynamic>(self::Class<dynamic>, [self::Class<dynamic>]) → dynamic;
+@self::Const::internal()
+typedef Typedef2<@self::Const::internal() unrelated T extends core::Object? = dynamic> = <T extends core::Object? = dynamic>(self::Class<dynamic>, {o2: self::Class<dynamic>}) → dynamic;
+@self::Const::internal()
+typedef Typedef3<@self::Const::internal() unrelated T extends core::Object? = dynamic> = (dynamic, [dynamic]) → void;
+@self::Const::internal()
+typedef Typedef4<@self::Const::internal() unrelated T extends core::Object? = dynamic> = (dynamic, {o2: dynamic}) → void;
+@self::Const::internal()
+class Const extends core::Object /*hasConstConstructor*/  {
+  static final field dynamic _redirecting# = <dynamic>[self::Const::•]/*isLegacy*/;
+  const constructor internal() → self::Const
+    : super core::Object::•()
+    ;
+  static factory •() → self::Const
+    return new self::Const::internal();
+}
+class Class<@self::Const::internal() T extends core::Object? = dynamic> extends core::Object {
+  @self::Const::internal()
+  field <T extends core::Object? = dynamic>(dynamic, {o2: dynamic}) → Null field;
+  @self::Const::internal()
+  constructor •() → self::Class<self::Class::T%>
+    ;
+  @self::Const::internal()
+  method method1<@self::Const::internal() T extends core::Object? = dynamic>(dynamic o1, [dynamic o2]) → dynamic
+    ;
+  @self::Const::internal()
+  method method2<@self::Const::internal() T extends core::Object? = dynamic>(dynamic o1, {dynamic o2}) → dynamic
+    ;
+}
+@self::Const::internal()
+extension Extension<@self::Const::internal() T extends core::Object? = dynamic> on self::Class<T%> {
+  static field field = self::Extension|field;
+  method method1 = self::Extension|method1;
+  tearoff method1 = self::Extension|get#method1;
+  method method2 = self::Extension|method2;
+  tearoff method2 = self::Extension|get#method2;
+}
+@self::Const::internal()
+static field <T extends core::Object? = dynamic>(dynamic, [dynamic]) → Null field;
+@self::Const::internal()
+static field <T extends core::Object? = dynamic>(dynamic, [dynamic]) → Null Extension|field;
+@self::Const::internal()
+static method method1<@self::Const::internal() T extends core::Object? = dynamic>(dynamic o1, [dynamic o2]) → dynamic
+  ;
+@self::Const::internal()
+static method method2<@self::Const::internal() T extends core::Object? = dynamic>(dynamic o1, {dynamic o2}) → dynamic
+  ;
+@self::Const::internal()
+static method Extension|method1<#T extends core::Object? = dynamic, @self::Const::internal() T extends core::Object? = dynamic>(lowered final self::Class<self::Extension|method1::#T%> #this, dynamic o1, [dynamic o2]) → dynamic
+  ;
+static method Extension|get#method1<#T extends core::Object? = dynamic>(lowered final self::Class<self::Extension|get#method1::#T%> #this) → <T extends core::Object? = dynamic>(dynamic, [dynamic]) → dynamic
+  return <T extends core::Object? = dynamic>(dynamic o1, [dynamic o2]) → dynamic => self::Extension|method1<self::Extension|get#method1::#T%, T%>(#this, o1, o2);
+@self::Const::internal()
+static method Extension|method2<#T extends core::Object? = dynamic, @self::Const::internal() T extends core::Object? = dynamic>(lowered final self::Class<self::Extension|method2::#T%> #this, dynamic o1, {dynamic o2}) → dynamic
+  ;
+static method Extension|get#method2<#T extends core::Object? = dynamic>(lowered final self::Class<self::Extension|get#method2::#T%> #this) → <T extends core::Object? = dynamic>(dynamic, {o2: dynamic}) → dynamic
+  return <T extends core::Object? = dynamic>(dynamic o1, {dynamic o2}) → dynamic => self::Extension|method2<self::Extension|get#method2::#T%, T%>(#this, o1, o2: o2);
+static method main() → dynamic
+  ;
+
+
+Extra constant evaluation status:
+Evaluated: ConstructorInvocation @ org-dartlang-testcase:///redirecting_factory_invocation_metadata.dart:5:2 -> InstanceConstant(const Const{})
+Evaluated: ConstructorInvocation @ org-dartlang-testcase:///redirecting_factory_invocation_metadata.dart:74:2 -> InstanceConstant(const Const{})
+Evaluated: ConstructorInvocation @ org-dartlang-testcase:///redirecting_factory_invocation_metadata.dart:75:19 -> InstanceConstant(const Const{})
+Evaluated: ConstructorInvocation @ org-dartlang-testcase:///redirecting_factory_invocation_metadata.dart:78:2 -> InstanceConstant(const Const{})
+Evaluated: ConstructorInvocation @ org-dartlang-testcase:///redirecting_factory_invocation_metadata.dart:79:19 -> InstanceConstant(const Const{})
+Evaluated: ConstructorInvocation @ org-dartlang-testcase:///redirecting_factory_invocation_metadata.dart:82:2 -> InstanceConstant(const Const{})
+Evaluated: ConstructorInvocation @ org-dartlang-testcase:///redirecting_factory_invocation_metadata.dart:83:24 -> InstanceConstant(const Const{})
+Evaluated: ConstructorInvocation @ org-dartlang-testcase:///redirecting_factory_invocation_metadata.dart:85:2 -> InstanceConstant(const Const{})
+Evaluated: ConstructorInvocation @ org-dartlang-testcase:///redirecting_factory_invocation_metadata.dart:86:24 -> InstanceConstant(const Const{})
+Evaluated: ConstructorInvocation @ org-dartlang-testcase:///redirecting_factory_invocation_metadata.dart:17:2 -> InstanceConstant(const Const{})
+Evaluated: ConstructorInvocation @ org-dartlang-testcase:///redirecting_factory_invocation_metadata.dart:46:14 -> InstanceConstant(const Const{})
+Evaluated: ConstructorInvocation @ org-dartlang-testcase:///redirecting_factory_invocation_metadata.dart:56:4 -> InstanceConstant(const Const{})
+Evaluated: ConstructorInvocation @ org-dartlang-testcase:///redirecting_factory_invocation_metadata.dart:59:4 -> InstanceConstant(const Const{})
+Evaluated: ConstructorInvocation @ org-dartlang-testcase:///redirecting_factory_invocation_metadata.dart:60:12 -> InstanceConstant(const Const{})
+Evaluated: ConstructorInvocation @ org-dartlang-testcase:///redirecting_factory_invocation_metadata.dart:68:4 -> InstanceConstant(const Const{})
+Evaluated: ConstructorInvocation @ org-dartlang-testcase:///redirecting_factory_invocation_metadata.dart:69:12 -> InstanceConstant(const Const{})
+Evaluated: ConstructorInvocation @ org-dartlang-testcase:///redirecting_factory_invocation_metadata.dart:47:4 -> InstanceConstant(const Const{})
+Evaluated: ConstructorInvocation @ org-dartlang-testcase:///redirecting_factory_invocation_metadata.dart:89:22 -> InstanceConstant(const Const{})
+Evaluated: ConstructorInvocation @ org-dartlang-testcase:///redirecting_factory_invocation_metadata.dart:32:2 -> InstanceConstant(const Const{})
+Evaluated: ConstructorInvocation @ org-dartlang-testcase:///redirecting_factory_invocation_metadata.dart:33:10 -> InstanceConstant(const Const{})
+Evaluated: ConstructorInvocation @ org-dartlang-testcase:///redirecting_factory_invocation_metadata.dart:41:2 -> InstanceConstant(const Const{})
+Evaluated: ConstructorInvocation @ org-dartlang-testcase:///redirecting_factory_invocation_metadata.dart:42:10 -> InstanceConstant(const Const{})
+Evaluated: ConstructorInvocation @ org-dartlang-testcase:///redirecting_factory_invocation_metadata.dart:99:4 -> InstanceConstant(const Const{})
+Evaluated: ConstructorInvocation @ org-dartlang-testcase:///redirecting_factory_invocation_metadata.dart:100:12 -> InstanceConstant(const Const{})
+Evaluated: ConstructorInvocation @ org-dartlang-testcase:///redirecting_factory_invocation_metadata.dart:108:4 -> InstanceConstant(const Const{})
+Evaluated: ConstructorInvocation @ org-dartlang-testcase:///redirecting_factory_invocation_metadata.dart:109:12 -> InstanceConstant(const Const{})
+Evaluated: ConstructorInvocation @ org-dartlang-testcase:///redirecting_factory_invocation_metadata.dart:23:2 -> InstanceConstant(const Const{})
+Evaluated: ConstructorInvocation @ org-dartlang-testcase:///redirecting_factory_invocation_metadata.dart:90:4 -> InstanceConstant(const Const{})
+Extra constant evaluation: evaluated: 41, effectively constant: 28
diff --git a/pkg/front_end/testcases/general/redirecting_factory_invocation_metadata.dart.weak.transformed.expect b/pkg/front_end/testcases/general/redirecting_factory_invocation_metadata.dart.weak.transformed.expect
new file mode 100644
index 0000000..39405c7
--- /dev/null
+++ b/pkg/front_end/testcases/general/redirecting_factory_invocation_metadata.dart.weak.transformed.expect
@@ -0,0 +1,105 @@
+@#C1
+library name /*isNonNullableByDefault*/;
+import self as self;
+import "dart:core" as core;
+
+import "org-dartlang-testcase:///redirecting_factory_invocation_metadata.dart" as self;
+export "org-dartlang-testcase:///redirecting_factory_invocation_metadata.dart";
+
+@#C1
+part redirecting_factory_invocation_metadata_lib.dart;
+@#C1
+typedef Typedef1<@#C1 unrelated T extends core::Object? = dynamic> = <T extends core::Object? = dynamic>(@#C1 self::Class<dynamic> #t1, [@#C1 self::Class<dynamic> #t2]) → dynamic;
+@#C1
+typedef Typedef2<@#C1 unrelated T extends core::Object? = dynamic> = <T extends core::Object? = dynamic>(@#C1 self::Class<dynamic> #t3, {@#C1 self::Class<dynamic> o2}) → dynamic;
+@#C1
+typedef Typedef3<@#C1 unrelated T extends core::Object? = dynamic> = (@#C1 dynamic o1, [@#C1 dynamic o2]) → void;
+@#C1
+typedef Typedef4<@#C1 unrelated T extends core::Object? = dynamic> = (@#C1 dynamic o1, {@#C1 dynamic o2}) → void;
+@#C1
+class Const extends core::Object /*hasConstConstructor*/  {
+  static final field dynamic _redirecting# = <dynamic>[self::Const::•]/*isLegacy*/;
+  const constructor internal() → self::Const
+    : super core::Object::•()
+    ;
+  static factory •() → self::Const
+    return new self::Const::internal();
+}
+class Class<@#C1 T extends core::Object? = dynamic> extends core::Object {
+  @#C1
+  field <T extends core::Object? = dynamic>(dynamic, {o2: dynamic}) → Null field = <@#C1 T extends core::Object? = dynamic>(@#C1 dynamic o1, {@#C1 dynamic o2 = #C2}) → Null {
+    @#C1 dynamic l1;
+    @#C1
+    function l2<@#C1 T extends core::Object? = dynamic>(@#C1 dynamic o1, {@#C1 dynamic o2 = #C2}) → Null {}
+  };
+  @#C1
+  constructor •() → self::Class<self::Class::T%>
+    : super core::Object::•()
+    ;
+  @#C1
+  method method1<@#C1 T extends core::Object? = dynamic>(@#C1 dynamic o1, [@#C1 dynamic o2 = #C2]) → dynamic {
+    @#C1 dynamic l1;
+    @#C1
+    function l2<@#C1 T extends core::Object? = dynamic>(@#C1 dynamic o1, [@#C1 dynamic o2 = #C2]) → Null {}
+  }
+  @#C1
+  method method2<@#C1 T extends core::Object? = dynamic>(@#C1 dynamic o1, {@#C1 dynamic o2 = #C2}) → dynamic {
+    <@#C1 T extends core::Object? = dynamic>(@#C1 dynamic o1, {@#C1 dynamic o2 = #C2}) → Null {};
+  }
+}
+@#C1
+extension Extension<@#C1 T extends core::Object? = dynamic> on self::Class<T%> {
+  static field field = self::Extension|field;
+  method method1 = self::Extension|method1;
+  tearoff method1 = self::Extension|get#method1;
+  method method2 = self::Extension|method2;
+  tearoff method2 = self::Extension|get#method2;
+}
+@#C1
+static field <T extends core::Object? = dynamic>(dynamic, [dynamic]) → Null field = <@#C1 T extends core::Object? = dynamic>(@#C1 dynamic o1, [@#C1 dynamic o2 = #C2]) → Null {
+  @#C1 dynamic l1;
+  @#C1
+  function l2<@#C1 T extends core::Object? = dynamic>(@#C1 dynamic o1, [@#C1 dynamic o2 = #C2]) → Null {}
+};
+@#C1
+static field <T extends core::Object? = dynamic>(dynamic, [dynamic]) → Null Extension|field = <@#C1 T extends core::Object? = dynamic>(@#C1 dynamic o1, [@#C1 dynamic o2 = #C2]) → Null {
+  @#C1 dynamic l1;
+  @#C1
+  function l2<@#C1 T extends core::Object? = dynamic>(@#C1 dynamic o1, [@#C1 dynamic o2 = #C2]) → Null {}
+};
+@#C1
+static method method1<@#C1 T extends core::Object? = dynamic>(@#C1 dynamic o1, [@#C1 dynamic o2 = #C2]) → dynamic {
+  @#C1 dynamic l1;
+  @#C1
+  function l2<@#C1 T extends core::Object? = dynamic>(@#C1 dynamic o1, [@#C1 dynamic o2 = #C2]) → Null {}
+}
+@#C1
+static method method2<@#C1 T extends core::Object? = dynamic>(@#C1 dynamic o1, {@#C1 dynamic o2 = #C2}) → dynamic {
+  <@#C1 T extends core::Object? = dynamic>(@#C1 dynamic o1, {@#C1 dynamic o2 = #C2}) → Null {};
+}
+@#C1
+static method Extension|method1<#T extends core::Object? = dynamic, @#C1 T extends core::Object? = dynamic>(lowered final self::Class<self::Extension|method1::#T%> #this, @#C1 dynamic o1, [@#C1 dynamic o2 = #C2]) → dynamic {
+  @#C1 dynamic l1;
+  @#C1
+  function l2<@#C1 T extends core::Object? = dynamic>(@#C1 dynamic o1, [@#C1 dynamic o2 = #C2]) → Null {}
+}
+static method Extension|get#method1<#T extends core::Object? = dynamic>(lowered final self::Class<self::Extension|get#method1::#T%> #this) → <T extends core::Object? = dynamic>(dynamic, [dynamic]) → dynamic
+  return <T extends core::Object? = dynamic>(dynamic o1, [dynamic o2 = #C2]) → dynamic => self::Extension|method1<self::Extension|get#method1::#T%, T%>(#this, o1, o2);
+@#C1
+static method Extension|method2<#T extends core::Object? = dynamic, @#C1 T extends core::Object? = dynamic>(lowered final self::Class<self::Extension|method2::#T%> #this, @#C1 dynamic o1, {@#C1 dynamic o2 = #C2}) → dynamic {
+  <@#C1 T extends core::Object? = dynamic>(@#C1 dynamic o1, {@#C1 dynamic o2 = #C2}) → Null {};
+}
+static method Extension|get#method2<#T extends core::Object? = dynamic>(lowered final self::Class<self::Extension|get#method2::#T%> #this) → <T extends core::Object? = dynamic>(dynamic, {o2: dynamic}) → dynamic
+  return <T extends core::Object? = dynamic>(dynamic o1, {dynamic o2 = #C2}) → dynamic => self::Extension|method2<self::Extension|get#method2::#T%, T%>(#this, o1, o2: o2);
+static method main() → dynamic {}
+
+constants  {
+  #C1 = self::Const {}
+  #C2 = null
+}
+
+
+Constructor coverage from constants:
+org-dartlang-testcase:///redirecting_factory_invocation_metadata.dart:
+- Const.internal (from org-dartlang-testcase:///redirecting_factory_invocation_metadata.dart:19:9)
+- Object. (from org-dartlang-sdk:///sdk/lib/core/object.dart:25:9)
diff --git a/pkg/front_end/testcases/general/redirecting_factory_invocation_metadata_lib.dart b/pkg/front_end/testcases/general/redirecting_factory_invocation_metadata_lib.dart
new file mode 100644
index 0000000..62e121c
--- /dev/null
+++ b/pkg/front_end/testcases/general/redirecting_factory_invocation_metadata_lib.dart
@@ -0,0 +1,6 @@
+// Copyright (c) 2021, 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.
+
+@Const()
+part of 'redirecting_factory_invocation_metadata.dart';
diff --git a/pkg/front_end/testcases/incremental.status b/pkg/front_end/testcases/incremental.status
index afed71c..1c24c9e 100644
--- a/pkg/front_end/testcases/incremental.status
+++ b/pkg/front_end/testcases/incremental.status
@@ -5,4 +5,4 @@
 # Status file for the test suite ../test/incremental_suite.dart.
 
 # http://dartbug.com/41812#issuecomment-684825703
-strongmode_mixins_2: Crash
+#strongmode_mixins_2: Crash
diff --git a/pkg/front_end/testcases/incremental/await_in_non_async.yaml b/pkg/front_end/testcases/incremental/await_in_non_async.yaml
index 6e1730d..06c5f68 100644
--- a/pkg/front_end/testcases/incremental/await_in_non_async.yaml
+++ b/pkg/front_end/testcases/incremental/await_in_non_async.yaml
@@ -10,6 +10,7 @@
     warnings: false
     sources:
       main.dart: |
+        // @dart=2.9
         main() {
           foo();
         }
@@ -25,6 +26,7 @@
       - main.dart
     sources:
       main.dart: |
+        // @dart=2.9
         main() {
           await foo();
         }
diff --git a/pkg/front_end/testcases/incremental/await_in_non_async.yaml.world.2.expect b/pkg/front_end/testcases/incremental/await_in_non_async.yaml.world.2.expect
index 0e7c789..1e5883c 100644
--- a/pkg/front_end/testcases/incremental/await_in_non_async.yaml.world.2.expect
+++ b/pkg/front_end/testcases/incremental/await_in_non_async.yaml.world.2.expect
@@ -3,13 +3,13 @@
 //
 // Problems in library:
 //
-// org-dartlang-test:///main.dart:2:3: Error: 'await' can only be used in 'async' or 'async*' methods.
+// org-dartlang-test:///main.dart:3:3: Error: 'await' can only be used in 'async' or 'async*' methods.
 //   await foo();
 //   ^^^^^
 //
 
   static method main() → dynamic {
-    invalid-expression "org-dartlang-test:///main.dart:2:3: Error: 'await' can only be used in 'async' or 'async*' methods.\n  await foo();\n  ^^^^^";
+    invalid-expression "org-dartlang-test:///main.dart:3:3: Error: 'await' can only be used in 'async' or 'async*' methods.\n  await foo();\n  ^^^^^";
   }
   static method foo() → dynamic {}
 }
diff --git a/pkg/front_end/testcases/incremental/bad_sdk_uri.yaml b/pkg/front_end/testcases/incremental/bad_sdk_uri.yaml
index 2e729f2..f6870cd 100644
--- a/pkg/front_end/testcases/incremental/bad_sdk_uri.yaml
+++ b/pkg/front_end/testcases/incremental/bad_sdk_uri.yaml
@@ -9,9 +9,11 @@
   - entry: main.dart
     sources:
       main.dart: |
+        // @dart=2.9
         import 'lib.dart';
         class A extends B {}
       lib.dart: |
+        // @dart=2.9
         class B {
           void bMethod() {}
         }
@@ -23,9 +25,11 @@
       - main.dart
     sources:
       main.dart: |
+        // @dart=2.9
         import 'lib.dart';
         class A extends B {}
       lib.dart: |
+        // @dart=2.9
         class B {
           void bMethod() {}
         }
@@ -49,9 +53,11 @@
       - main.dart
     sources:
       main.dart: |
+        // @dart=2.9
         import 'lib.dart';
         class A extends B {}
       lib.dart: |
+        // @dart=2.9
         class B {
           void bMethod() {}
         }
diff --git a/pkg/front_end/testcases/incremental/bad_sdk_uri.yaml.world.3.expect b/pkg/front_end/testcases/incremental/bad_sdk_uri.yaml.world.3.expect
index 7ecccb5..69312e6 100644
--- a/pkg/front_end/testcases/incremental/bad_sdk_uri.yaml.world.3.expect
+++ b/pkg/front_end/testcases/incremental/bad_sdk_uri.yaml.world.3.expect
@@ -6,6 +6,7 @@
       : super #lib1::Object::•()
       ;
     method bMethod() → void {}
+    abstract member-signature operator ==(dynamic dynamic) → #lib1::bool*; -> #lib1::Object::==
   }
 }
 library from "org-dartlang-test:///main.dart" as main {
diff --git a/pkg/front_end/testcases/incremental/calculated_bounds_no_strongmode.yaml b/pkg/front_end/testcases/incremental/calculated_bounds_no_strongmode.yaml
index f884677..a414ca1 100644
--- a/pkg/front_end/testcases/incremental/calculated_bounds_no_strongmode.yaml
+++ b/pkg/front_end/testcases/incremental/calculated_bounds_no_strongmode.yaml
@@ -11,10 +11,12 @@
   - a.dart
 sources:
   a.dart: |
+    // @dart=2.9
     import 'b.dart';
 
     class A {
       void foo(B cls) {}
     }
   b.dart: |
+    // @dart=2.9
     abstract class B<T extends String> {}
\ No newline at end of file
diff --git a/pkg/front_end/testcases/incremental/can_get_rid_of_nnbd_issue_error.yaml b/pkg/front_end/testcases/incremental/can_get_rid_of_nnbd_issue_error.yaml
index b877600..852223a 100644
--- a/pkg/front_end/testcases/incremental/can_get_rid_of_nnbd_issue_error.yaml
+++ b/pkg/front_end/testcases/incremental/can_get_rid_of_nnbd_issue_error.yaml
@@ -9,7 +9,6 @@
 nnbdMode: strong
 worlds:
   - entry: package:baz/main.dart
-    experiments: non-nullable
     errors: true
     sources:
       .dart_tool/package_config.json: |
@@ -53,7 +52,6 @@
 
   # Update "nothing" so we still want the error.
   - entry: package:baz/main.dart
-    experiments: non-nullable
     worldType: updated
     expectInitializeFromDill: false
     errors: true
@@ -74,7 +72,6 @@
 
   # Update ONE package to be strong.
   - entry: package:baz/main.dart
-    experiments: non-nullable
     worldType: updated
     expectInitializeFromDill: false
     errors: true
@@ -111,7 +108,6 @@
 
   # Update the last package to be strong.
   - entry: package:baz/main.dart
-    experiments: non-nullable
     worldType: updated
     expectInitializeFromDill: false
     errors: false
diff --git a/pkg/front_end/testcases/incremental/change_between_no_nnbd_and_nnbd.yaml b/pkg/front_end/testcases/incremental/change_between_no_nnbd_and_nnbd.yaml
index a1cc178..6c6a9bd 100644
--- a/pkg/front_end/testcases/incremental/change_between_no_nnbd_and_nnbd.yaml
+++ b/pkg/front_end/testcases/incremental/change_between_no_nnbd_and_nnbd.yaml
@@ -11,6 +11,7 @@
   - entry: main.dart
     sources:
       main.dart: |
+        // @dart=2.9
         import 'lib.dart';
         main() {
           libMethod();
@@ -20,7 +21,6 @@
     expectedLibraryCount: 2
 
   - entry: main.dart
-    experiments: non-nullable
     nnbdMode: strong
     expectInitializeFromDill: false # loading the dill should fail because of mismatching NNBD settings
     checkInvalidatedFiles: false
diff --git a/pkg/front_end/testcases/incremental/changed_serialization_2.yaml b/pkg/front_end/testcases/incremental/changed_serialization_2.yaml
index 4141487..a4648e6 100644
--- a/pkg/front_end/testcases/incremental/changed_serialization_2.yaml
+++ b/pkg/front_end/testcases/incremental/changed_serialization_2.yaml
@@ -11,6 +11,7 @@
   - entry: main.dart
     sources:
       main.dart: |
+        // @dart=2.9
         import "lib.dart";
 
         main() {
@@ -18,6 +19,7 @@
           print(c);
         }
       lib.dart: |
+        // @dart=2.9
         class A {
           const A();
         }
@@ -39,5 +41,6 @@
       - main.dart
     sources:
       main.dart: |
+        // @dart=2.9
         import 'lib.dart';
     expectedLibraryCount: 2
diff --git a/pkg/front_end/testcases/incremental/changing_modules.yaml b/pkg/front_end/testcases/incremental/changing_modules.yaml
index 47752b2..534a0f4 100644
--- a/pkg/front_end/testcases/incremental/changing_modules.yaml
+++ b/pkg/front_end/testcases/incremental/changing_modules.yaml
@@ -9,6 +9,7 @@
 modules:
   example_0.1.0:
     example_0.1.0/a.dart: |
+      // @dart=2.9
       a() {
         la1();
       }
@@ -16,6 +17,7 @@
         print("Hello from v0.1.0");
       }
     example_0.1.0/b.dart: |
+      // @dart=2.9
       import "a.dart";
       b() {
         a();
@@ -24,6 +26,7 @@
       example:.
   example_0.1.1:
     example_0.1.1/b.dart: |
+      // @dart=2.9
       b() {
         print("Hello from v0.1.1");
       }
@@ -32,6 +35,7 @@
       example:.
   foo_1:
     foo_1/foo.dart: |
+      // @dart=2.9
       import "package:example/b.dart";
       foo() {
         print("Hello from foo");
@@ -43,6 +47,7 @@
       example:../example_0.1.0
   foo_2:
     foo_2/foo.dart: |
+      // @dart=2.9
       import "package:example/b.dart";
       import "bar.dart";
       import "baz.dart";
@@ -54,10 +59,12 @@
       }
       bool foo2 = true;
     foo_2/bar.dart: |
+      // @dart=2.9
       bar() {
         print("hello from bar");
       }
     foo_2/baz.dart: |
+      // @dart=2.9
       baz() {
         print("hello from baz");
       }
@@ -69,6 +76,7 @@
     fromComponent: true
     sources:
       main.dart: |
+        // @dart=2.9
         import "package:example/b.dart";
         main() {
           print("hello");
@@ -94,6 +102,7 @@
     expectInitializeFromDill: false
     sources:
       main.dart: |
+        // @dart=2.9
         import "package:foo/foo.dart";
         main() {
           print("hello");
@@ -124,6 +133,7 @@
     expectInitializeFromDill: false
     sources:
       main.dart: |
+        // @dart=2.9
         import "package:foo/foo.dart";
         main() {
           print("hello");
diff --git a/pkg/front_end/testcases/incremental/changing_modules_10.yaml b/pkg/front_end/testcases/incremental/changing_modules_10.yaml
index c500317..1cdaafd 100644
--- a/pkg/front_end/testcases/incremental/changing_modules_10.yaml
+++ b/pkg/front_end/testcases/incremental/changing_modules_10.yaml
@@ -10,11 +10,13 @@
 modules:
   module:
     module/a.dart: |
+      // @dart=2.9
       import 'package:module/b.dart';
 
       class A extends A2<B> { }
       class A2<T> { }
     module/b.dart: |
+      // @dart=2.9
       class B { }
     module/.packages: |
       module:.
@@ -23,6 +25,7 @@
     fromComponent: true
     sources:
       main.dart: |
+        // @dart=2.9
         import 'package:module/a.dart';
         class Foo extends A {}
       .packages: |
diff --git a/pkg/front_end/testcases/incremental/changing_modules_11.yaml b/pkg/front_end/testcases/incremental/changing_modules_11.yaml
index e6d89f4..aedd5d0 100644
--- a/pkg/front_end/testcases/incremental/changing_modules_11.yaml
+++ b/pkg/front_end/testcases/incremental/changing_modules_11.yaml
@@ -10,11 +10,13 @@
 modules:
   module:
     module/a.dart: |
+      // @dart=2.9
       import 'package:module/b.dart';
 
       class A implements A2<B> { }
       class A2<T> { }
     module/b.dart: |
+      // @dart=2.9
       class B { }
     module/.packages: |
       module:.
@@ -23,6 +25,7 @@
     fromComponent: true
     sources:
       main.dart: |
+        // @dart=2.9
         import 'package:module/a.dart';
         class Foo extends A {}
       .packages: |
diff --git a/pkg/front_end/testcases/incremental/changing_modules_12.yaml b/pkg/front_end/testcases/incremental/changing_modules_12.yaml
index 21b9ec1..c8f1cae 100644
--- a/pkg/front_end/testcases/incremental/changing_modules_12.yaml
+++ b/pkg/front_end/testcases/incremental/changing_modules_12.yaml
@@ -9,15 +9,19 @@
 modules:
   module:
     module/a.dart: |
+      // @dart=2.9
       import 'package:module/b.dart';
       class A { }
     module/b.dart: |
+      // @dart=2.9
       export 'package:module/a.dart';
       class B { }
     module/c.dart: |
+      // @dart=2.9
       export 'package:module/d.dart';
       class C { }
     module/d.dart: |
+      // @dart=2.9
       import 'package:module/c.dart';
       class D { }
     module/.packages: |
@@ -27,6 +31,7 @@
     fromComponent: true
     sources:
       main.dart: |
+        // @dart=2.9
         class Foo {}
       .packages: |
         module:module
diff --git a/pkg/front_end/testcases/incremental/changing_modules_13.yaml b/pkg/front_end/testcases/incremental/changing_modules_13.yaml
index bd3bc06..5d042e9 100644
--- a/pkg/front_end/testcases/incremental/changing_modules_13.yaml
+++ b/pkg/front_end/testcases/incremental/changing_modules_13.yaml
@@ -9,6 +9,7 @@
 modules:
   module:
     module/a.dart: |
+      // @dart=2.9
       class A { }
       class B { }
       class C { }
@@ -20,6 +21,7 @@
     fromComponent: true
     sources:
       main.dart: |
+        // @dart=2.9
         import "package:module/a.dart";
         class ABC = AB with C;
       .packages: |
diff --git a/pkg/front_end/testcases/incremental/changing_modules_2.yaml b/pkg/front_end/testcases/incremental/changing_modules_2.yaml
index 201d9c0..b8db340 100644
--- a/pkg/front_end/testcases/incremental/changing_modules_2.yaml
+++ b/pkg/front_end/testcases/incremental/changing_modules_2.yaml
@@ -9,12 +9,14 @@
 modules:
   example_1:
     example_1/a.dart: |
+      // @dart=2.9
       a() {}
       var example = true;
     example_1/.packages: |
       example:.
   example_2:
     example_2/a.dart: |
+      // @dart=2.9
       a() {}
       var example = true;
     example_2/.packages: |
diff --git a/pkg/front_end/testcases/incremental/changing_modules_3.yaml b/pkg/front_end/testcases/incremental/changing_modules_3.yaml
index 16093f7..fdfb2a6 100644
--- a/pkg/front_end/testcases/incremental/changing_modules_3.yaml
+++ b/pkg/front_end/testcases/incremental/changing_modules_3.yaml
@@ -9,11 +9,13 @@
 modules:
   foo:
     foo/foo.dart: |
+      // @dart=2.9
       var foo = true;
     foo/.packages: |
       foo:.
   foo2:
     foo2/foo.dart: |
+      // @dart=2.9
       var foo2 = true;
     foo2/.packages: |
       foo:.
@@ -23,6 +25,7 @@
     simulateTransformer: true
     sources:
       main.dart: |
+        // @dart=2.9
         import "package:foo/foo.dart";
         main() {
           print(foo);
@@ -47,6 +50,7 @@
     simulateTransformer: true
     sources:
       main.dart: |
+        // @dart=2.9
         import "package:foo/foo.dart";
         main() {
           print(foo2);
diff --git a/pkg/front_end/testcases/incremental/changing_modules_4.yaml b/pkg/front_end/testcases/incremental/changing_modules_4.yaml
index d19784b..98ba2fa 100644
--- a/pkg/front_end/testcases/incremental/changing_modules_4.yaml
+++ b/pkg/front_end/testcases/incremental/changing_modules_4.yaml
@@ -10,6 +10,7 @@
 modules:
   moduleB:
     moduleB/b.dart: |
+      // @dart=2.9
       import 'package:moduleC/c.dart';
       export 'package:moduleC/c.dart' show baz;
 
@@ -24,6 +25,7 @@
       moduleD:../moduleD
   moduleC:
     moduleC/c.dart: |
+      // @dart=2.9
       import 'package:moduleD/d.dart';
 
       String baz = "42";
@@ -37,6 +39,7 @@
       moduleD:../moduleD
   moduleD:
     moduleD/d.dart: |
+      // @dart=2.9
       String baz3 = "baz3";
     moduleD/.packages: |
       moduleD:.
@@ -45,6 +48,7 @@
     fromComponent: true
     sources:
       a.dart: |
+        // @dart=2.9
         import "package:moduleB/b.dart";
 
         String foo = baz;
diff --git a/pkg/front_end/testcases/incremental/changing_modules_5.yaml b/pkg/front_end/testcases/incremental/changing_modules_5.yaml
index 02e89d3..b044f03 100644
--- a/pkg/front_end/testcases/incremental/changing_modules_5.yaml
+++ b/pkg/front_end/testcases/incremental/changing_modules_5.yaml
@@ -10,6 +10,7 @@
 modules:
   moduleB:
     moduleB/b.dart: |
+      // @dart=2.9
       import 'package:moduleC/c.dart';
 
       var bVar = 42;
@@ -25,6 +26,7 @@
       moduleD:../moduleD
   moduleC:
     moduleC/c.dart: |
+      // @dart=2.9
       import 'package:moduleD/d.dart';
 
       String baz = "42";
@@ -38,6 +40,7 @@
       moduleD:../moduleD
   moduleD:
     moduleD/d.dart: |
+      // @dart=2.9
       String baz3 = "baz3";
     moduleD/.packages: |
       moduleD:.
@@ -46,6 +49,7 @@
     fromComponent: true
     sources:
       a.dart: |
+        // @dart=2.9
         import "package:moduleB/b.dart";
 
         var foo = bVar;
diff --git a/pkg/front_end/testcases/incremental/changing_modules_6.yaml b/pkg/front_end/testcases/incremental/changing_modules_6.yaml
index 84cb4d7..c66ca3b 100644
--- a/pkg/front_end/testcases/incremental/changing_modules_6.yaml
+++ b/pkg/front_end/testcases/incremental/changing_modules_6.yaml
@@ -10,6 +10,7 @@
 modules:
   moduleB:
     moduleB/b.dart: |
+      // @dart=2.9
       import 'package:moduleC/c.dart';
 
       var bVar = 42;
@@ -25,6 +26,7 @@
       moduleD:../moduleD
   moduleC:
     moduleC/c.dart: |
+      // @dart=2.9
       import 'package:moduleD/d.dart';
 
       String baz = "42";
@@ -38,6 +40,7 @@
       moduleD:../moduleD
   moduleD:
     moduleD/d.dart: |
+      // @dart=2.9
       String baz3 = "baz3";
     moduleD/.packages: |
       moduleD:.
@@ -46,6 +49,7 @@
     fromComponent: true
     sources:
       a.dart: |
+        // @dart=2.9
         import "package:moduleB/b.dart";
 
         var foo = bVar;
diff --git a/pkg/front_end/testcases/incremental/changing_modules_7.yaml b/pkg/front_end/testcases/incremental/changing_modules_7.yaml
index ed58e9d..f718f14 100644
--- a/pkg/front_end/testcases/incremental/changing_modules_7.yaml
+++ b/pkg/front_end/testcases/incremental/changing_modules_7.yaml
@@ -10,12 +10,14 @@
 modules:
   module:
     module/lib1.dart: |
+      // @dart=2.9
       import 'lib3.dart';
 
       class Class1 {
         Class3a get c3a {}
       }
     module/lib2.dart: |
+      // @dart=2.9
       import 'lib4.dart';
 
       class Class2 {
@@ -25,6 +27,7 @@
         }
       }
     module/lib3.dart: |
+      // @dart=2.9
       class Class3a {
         Class3b get c3b {}
       }
@@ -41,6 +44,7 @@
     fromComponent: true
     sources:
       compileme.dart: |
+        // @dart=2.9
         import 'package:module/lib1.dart';
         import 'package:module/lib2.dart';
 
@@ -85,6 +89,7 @@
     skipOutlineBodyCheck: true
     sources:
       compileme.dart: |
+        // @dart=2.9
         import 'package:module/lib1.dart';
         import 'package:module/lib2.dart';
 
diff --git a/pkg/front_end/testcases/incremental/changing_modules_8.yaml b/pkg/front_end/testcases/incremental/changing_modules_8.yaml
index 2e2d653..42de9b4 100644
--- a/pkg/front_end/testcases/incremental/changing_modules_8.yaml
+++ b/pkg/front_end/testcases/incremental/changing_modules_8.yaml
@@ -10,12 +10,14 @@
 modules:
   module:
     module/lib1.dart: |
+      // @dart=2.9
       import 'lib2.dart';
 
       abstract class XSet {
         factory XSet.identity() = XLinkedHashSet.identity;
       }
     module/lib2.dart: |
+      // @dart=2.9
       import 'lib1.dart';
       import 'lib3.dart';
 
@@ -23,6 +25,7 @@
         factory XLinkedHashSet.identity() = XIdentityHashSet;
       }
     module/lib3.dart: |
+      // @dart=2.9
       import 'lib2.dart';
 
       class XIdentityHashSet implements XLinkedHashSet {
@@ -35,6 +38,7 @@
     fromComponent: true
     sources:
       compileme.dart: |
+        // @dart=2.9
         import 'package:module/lib1.dart';
 
         main() {
diff --git a/pkg/front_end/testcases/incremental/changing_modules_9.yaml b/pkg/front_end/testcases/incremental/changing_modules_9.yaml
index c810617..85ef80a 100644
--- a/pkg/front_end/testcases/incremental/changing_modules_9.yaml
+++ b/pkg/front_end/testcases/incremental/changing_modules_9.yaml
@@ -10,6 +10,7 @@
 modules:
   moduleA:
     moduleA/a.dart: |
+      // @dart=2.9
       export 'package:moduleB/b.dart';
 
       class A { }
@@ -18,6 +19,7 @@
       moduleB:../moduleB
   moduleB:
     moduleB/b.dart: |
+      // @dart=2.9
       class B {
         int foo = 42;
       }
@@ -28,6 +30,7 @@
     fromComponent: true
     sources:
       main.dart: |
+        // @dart=2.9
         import "package:moduleA/a.dart";
 
         main() {
diff --git a/pkg/front_end/testcases/incremental/cleans_up_uritosource_non_package_part.yaml b/pkg/front_end/testcases/incremental/cleans_up_uritosource_non_package_part.yaml
index e8a3d25..57c1a4c 100644
--- a/pkg/front_end/testcases/incremental/cleans_up_uritosource_non_package_part.yaml
+++ b/pkg/front_end/testcases/incremental/cleans_up_uritosource_non_package_part.yaml
@@ -11,14 +11,17 @@
   - entry: main.dart
     sources:
       main.dart: |
+        // @dart=2.9
         import "b.dart";
         main() { b(); }
       b.dart: |
+        // @dart=2.9
         part 'c.dart';
         b() {
           c();
         }
       c.dart: |
+        // @dart=2.9
         part of 'b.dart';
         c() {}
     expectedLibraryCount: 2
@@ -29,6 +32,7 @@
     expectInitializeFromDill: false
     sources:
       b.dart: |
+        // @dart=2.9
         b() {}
     expectedLibraryCount: 2
     uriToSourcesDoesntInclude:
diff --git a/pkg/front_end/testcases/incremental/cleans_up_uritosource_non_package_unreferenced_libraries.yaml b/pkg/front_end/testcases/incremental/cleans_up_uritosource_non_package_unreferenced_libraries.yaml
index 7d5d86d..ba49b68 100644
--- a/pkg/front_end/testcases/incremental/cleans_up_uritosource_non_package_unreferenced_libraries.yaml
+++ b/pkg/front_end/testcases/incremental/cleans_up_uritosource_non_package_unreferenced_libraries.yaml
@@ -11,14 +11,17 @@
   - entry: main.dart
     sources:
       main.dart: |
+        // @dart=2.9
         import "b.dart";
         main() { b(); }
       b.dart: |
+        // @dart=2.9
         part 'c.dart';
         b() {
           c();
         }
       c.dart: |
+        // @dart=2.9
         part of 'b.dart';
         c() {}
     expectedLibraryCount: 2
@@ -29,6 +32,7 @@
     expectInitializeFromDill: false
     sources:
       main.dart: |
+        // @dart=2.9
         main() {}
     expectedLibraryCount: 1
     uriToSourcesDoesntInclude:
@@ -41,6 +45,7 @@
     expectInitializeFromDill: false
     sources:
       main.dart: |
+        // @dart=2.9
         main() {}
     expectedLibraryCount: 1
     uriToSourcesDoesntInclude:
diff --git a/pkg/front_end/testcases/incremental/cleans_up_uritosource_unreferenced_package_library.yaml b/pkg/front_end/testcases/incremental/cleans_up_uritosource_unreferenced_package_library.yaml
index adee8ad..4e07d25 100644
--- a/pkg/front_end/testcases/incremental/cleans_up_uritosource_unreferenced_package_library.yaml
+++ b/pkg/front_end/testcases/incremental/cleans_up_uritosource_unreferenced_package_library.yaml
@@ -13,9 +13,11 @@
     sources:
       .packages: example:pkg/example
       main.dart: |
+        // @dart=2.9
         import "package:example/b.dart";
         main() { b(); }
       pkg/example/b.dart: |
+        // @dart=2.9
         b() {}
     expectedLibraryCount: 2
   - entry: main.dart
@@ -27,6 +29,7 @@
     sources:
       .packages: 
       main.dart: |
+        // @dart=2.9
         main() {}
     expectedLibraryCount: 1
     uriToSourcesDoesntInclude:
diff --git a/pkg/front_end/testcases/incremental/constant_exports_hash.yaml b/pkg/front_end/testcases/incremental/constant_exports_hash.yaml
index ae08c58..fe79e16 100644
--- a/pkg/front_end/testcases/incremental/constant_exports_hash.yaml
+++ b/pkg/front_end/testcases/incremental/constant_exports_hash.yaml
@@ -11,16 +11,19 @@
     errors: true
     sources:
       main.dart: |
+        // @dart=2.9
         export "lib1.dart" show x;
         export "lib2.dart" show x;
         main() {
           print("exports");
         }
       lib1.dart: |
+        // @dart=2.9
         x() {
           print("lib1.x!");
         }
       lib2.dart: |
+        // @dart=2.9
         x() {
           print("lib2.x!");
         }
@@ -32,16 +35,19 @@
       - main.dart
     sources:
       main.dart: |
+        // @dart=2.9
         export "lib1.dart" show x;
         export "lib2.dart" show x;
         main() {
           print("exports!");
         }
       lib1.dart: |
+        // @dart=2.9
         x() {
           print("lib1.x!");
         }
       lib2.dart: |
+        // @dart=2.9
         x() {
           print("lib2.x!");
         }
diff --git a/pkg/front_end/testcases/incremental/constant_exports_hash.yaml.world.1.expect b/pkg/front_end/testcases/incremental/constant_exports_hash.yaml.world.1.expect
index 1e025c7..d263cde3 100644
--- a/pkg/front_end/testcases/incremental/constant_exports_hash.yaml.world.1.expect
+++ b/pkg/front_end/testcases/incremental/constant_exports_hash.yaml.world.1.expect
@@ -15,7 +15,7 @@
 //
 // Problems in library:
 //
-// org-dartlang-test:///main.dart:2:1: Error: 'x' is exported from both 'org-dartlang-test:///lib1.dart' and 'org-dartlang-test:///lib2.dart'.
+// org-dartlang-test:///main.dart:3:1: Error: 'x' is exported from both 'org-dartlang-test:///lib1.dart' and 'org-dartlang-test:///lib2.dart'.
 // export "lib2.dart" show x;
 // ^
 //
diff --git a/pkg/front_end/testcases/incremental/constant_exports_hash.yaml.world.2.expect b/pkg/front_end/testcases/incremental/constant_exports_hash.yaml.world.2.expect
index 79292ff..f84cb36 100644
--- a/pkg/front_end/testcases/incremental/constant_exports_hash.yaml.world.2.expect
+++ b/pkg/front_end/testcases/incremental/constant_exports_hash.yaml.world.2.expect
@@ -15,7 +15,7 @@
 //
 // Problems in library:
 //
-// org-dartlang-test:///main.dart:2:1: Error: 'x' is exported from both 'org-dartlang-test:///lib1.dart' and 'org-dartlang-test:///lib2.dart'.
+// org-dartlang-test:///main.dart:3:1: Error: 'x' is exported from both 'org-dartlang-test:///lib1.dart' and 'org-dartlang-test:///lib2.dart'.
 // export "lib2.dart" show x;
 // ^
 //
diff --git a/pkg/front_end/testcases/incremental/constant_set_literal.yaml b/pkg/front_end/testcases/incremental/constant_set_literal.yaml
index d8ddd8d..b58f969 100644
--- a/pkg/front_end/testcases/incremental/constant_set_literal.yaml
+++ b/pkg/front_end/testcases/incremental/constant_set_literal.yaml
@@ -9,6 +9,7 @@
   - entry: "main.dart"
     sources:
       main.dart: |
+        // @dart=2.9
         import 'lib.dart';
 
         const Set<String> foo = {};
@@ -17,6 +18,7 @@
           print(bar);
         }
       lib.dart: |
+        // @dart=2.9
         const Set<String> bar = {"hello", "world"};
     expectedLibraryCount: 2
   - entry: "main.dart"
@@ -26,5 +28,6 @@
       - lib.dart
     sources:
       lib.dart: |
+        // @dart=2.9
         const Set<int> bar = {42};
     expectedLibraryCount: 2
diff --git a/pkg/front_end/testcases/incremental/crash_01.yaml b/pkg/front_end/testcases/incremental/crash_01.yaml
index d8c9c08..9663d9a 100644
--- a/pkg/front_end/testcases/incremental/crash_01.yaml
+++ b/pkg/front_end/testcases/incremental/crash_01.yaml
@@ -22,6 +22,7 @@
           ]
         }
       app/main.dart: |
+        // @dart=2.9
         import "package:flutter/src/cupertino/interface_level.dart";
       flutter/src/widgets/framework.dart: |
         abstract class Widget {}
diff --git a/pkg/front_end/testcases/incremental/crash_02.yaml b/pkg/front_end/testcases/incremental/crash_02.yaml
index 7a10c94..38115cb 100644
--- a/pkg/front_end/testcases/incremental/crash_02.yaml
+++ b/pkg/front_end/testcases/incremental/crash_02.yaml
@@ -22,6 +22,7 @@
           ]
         }
       app/main.dart: |
+        // @dart=2.9
         import "package:flutter/src/widgets/framework.dart";
       flutter/src/widgets/framework.dart: |
         import "package:flutter/src/widgets/widget_inspector.dart";
diff --git a/pkg/front_end/testcases/incremental/crash_03.yaml b/pkg/front_end/testcases/incremental/crash_03.yaml
index 4d1be72..7e1e066 100644
--- a/pkg/front_end/testcases/incremental/crash_03.yaml
+++ b/pkg/front_end/testcases/incremental/crash_03.yaml
@@ -22,6 +22,7 @@
           ]
         }
       app/main.dart: |
+        // @dart=2.9
         import "package:flutter/src/widgets/framework.dart";
       flutter/src/widgets/framework.dart: |
         abstract class Widget {}
diff --git a/pkg/front_end/testcases/incremental/crash_05.yaml b/pkg/front_end/testcases/incremental/crash_05.yaml
index 58d324b..2af2d9b 100644
--- a/pkg/front_end/testcases/incremental/crash_05.yaml
+++ b/pkg/front_end/testcases/incremental/crash_05.yaml
@@ -7,7 +7,6 @@
 type: newworld
 worlds:
   - entry: main.dart
-    experiments: non-nullable
     sources:
       main.dart: |
         import 'dart:ffi';
@@ -24,7 +23,6 @@
     expectedLibraryCount: 2
 
   - entry: main.dart
-    experiments: non-nullable
     worldType: updated
     expectInitializeFromDill: false
     invalidate:
diff --git a/pkg/front_end/testcases/incremental/crash_06.yaml b/pkg/front_end/testcases/incremental/crash_06.yaml
index 1c46cb0..fa5751e 100644
--- a/pkg/front_end/testcases/incremental/crash_06.yaml
+++ b/pkg/front_end/testcases/incremental/crash_06.yaml
@@ -8,7 +8,6 @@
 worlds:
   - entry: structs.dart
     errors: true
-    experiments: non-nullable
     sources:
       structs.dart: |
         import 'dart:ffi';
@@ -22,7 +21,6 @@
 
   - entry: structs.dart
     errors: true
-    experiments: non-nullable
     worldType: updated
     expectInitializeFromDill: false
     invalidate:
diff --git a/pkg/front_end/testcases/incremental/crash_07.yaml b/pkg/front_end/testcases/incremental/crash_07.yaml
index ed141b7..cfb8245 100644
--- a/pkg/front_end/testcases/incremental/crash_07.yaml
+++ b/pkg/front_end/testcases/incremental/crash_07.yaml
@@ -10,10 +10,12 @@
     errors: true
     sources:
       main.dart: |
+        // @dart=2.9
         import 'lib.dart';
         import 'nonexistingfile.dart';
         class A implements B {}
       lib.dart: |
+        // @dart=2.9
         class B implements C<NonExistingClass> {}
         class C<E> {}
     expectedLibraryCount: 2
diff --git a/pkg/front_end/testcases/incremental/crash_07.yaml.world.1.expect b/pkg/front_end/testcases/incremental/crash_07.yaml.world.1.expect
index 9464e91..299f150 100644
--- a/pkg/front_end/testcases/incremental/crash_07.yaml.world.1.expect
+++ b/pkg/front_end/testcases/incremental/crash_07.yaml.world.1.expect
@@ -3,7 +3,7 @@
 //
 // Problems in library:
 //
-// org-dartlang-test:///lib.dart:1:22: Error: Type 'NonExistingClass' not found.
+// org-dartlang-test:///lib.dart:2:22: Error: Type 'NonExistingClass' not found.
 // class B implements C<NonExistingClass> {}
 //                      ^^^^^^^^^^^^^^^^
 //
@@ -64,7 +64,7 @@
 //
 // Problems in library:
 //
-// org-dartlang-test:///main.dart:2:8: Error: Error when reading 'org-dartlang-test:///nonexistingfile.dart': File org-dartlang-test:///nonexistingfile.dart does not exist.
+// org-dartlang-test:///main.dart:3:8: Error: Error when reading 'org-dartlang-test:///nonexistingfile.dart': File org-dartlang-test:///nonexistingfile.dart does not exist.
 // import 'nonexistingfile.dart';
 //        ^
 //
diff --git a/pkg/front_end/testcases/incremental/crash_test_1.yaml b/pkg/front_end/testcases/incremental/crash_test_1.yaml
index 1b66228..5a7785c 100644
--- a/pkg/front_end/testcases/incremental/crash_test_1.yaml
+++ b/pkg/front_end/testcases/incremental/crash_test_1.yaml
@@ -9,11 +9,13 @@
   - entry: main.dart
     sources:
       main.dart: |
+        // @dart=2.9
         import "lib.dart";
         void main() {
           var c = new C.e4();
         }
       lib.dart: |
+        // @dart=2.9
         class C {
           C();
           factory C.e4() async = C;
@@ -25,12 +27,14 @@
       - main.dart
     sources:
       main.dart: |
+        // @dart=2.9
         import "lib.dart";
         void main() {
           var c = new C.e4();
           print(c);
         }
       lib.dart: |
+        // @dart=2.9
         class C {
           C();
           factory C.e4() async = C;
diff --git a/pkg/front_end/testcases/incremental/crash_test_1.yaml.world.1.expect b/pkg/front_end/testcases/incremental/crash_test_1.yaml.world.1.expect
index 71134e0..938df3f 100644
--- a/pkg/front_end/testcases/incremental/crash_test_1.yaml.world.1.expect
+++ b/pkg/front_end/testcases/incremental/crash_test_1.yaml.world.1.expect
@@ -3,7 +3,7 @@
 //
 // Problems in library:
 //
-// org-dartlang-test:///lib.dart:3:18: Error: Factory bodies can't use 'async', 'async*', or 'sync*'.
+// org-dartlang-test:///lib.dart:4:18: Error: Factory bodies can't use 'async', 'async*', or 'sync*'.
 //   factory C.e4() async = C;
 //                  ^^^^^
 //
diff --git a/pkg/front_end/testcases/incremental/crash_test_1.yaml.world.2.expect b/pkg/front_end/testcases/incremental/crash_test_1.yaml.world.2.expect
index 9a40608..991ad94 100644
--- a/pkg/front_end/testcases/incremental/crash_test_1.yaml.world.2.expect
+++ b/pkg/front_end/testcases/incremental/crash_test_1.yaml.world.2.expect
@@ -3,7 +3,7 @@
 //
 // Problems in library:
 //
-// org-dartlang-test:///lib.dart:3:18: Error: Factory bodies can't use 'async', 'async*', or 'sync*'.
+// org-dartlang-test:///lib.dart:4:18: Error: Factory bodies can't use 'async', 'async*', or 'sync*'.
 //   factory C.e4() async = C;
 //                  ^^^^^
 //
diff --git a/pkg/front_end/testcases/incremental/dart2js_late.yaml b/pkg/front_end/testcases/incremental/dart2js_late.yaml
index d7d761c..c596da3 100644
--- a/pkg/front_end/testcases/incremental/dart2js_late.yaml
+++ b/pkg/front_end/testcases/incremental/dart2js_late.yaml
@@ -9,7 +9,6 @@
 target: dart2js
 worlds:
   - entry: late_statics.dart
-    experiments: non-nullable
     sources:
       late_statics.dart: |
         import 'late_statics_lib.dart' as lib;
@@ -25,7 +24,6 @@
   - entry: late_statics.dart
     worldType: updated
     errors: true # (currently?) dart2js changes the interface and doesn't have the setter anymore. dartbug.com/45854
-    experiments: non-nullable
     expectInitializeFromDill: false
     invalidate:
       - late_statics.dart
diff --git a/pkg/front_end/testcases/incremental/deleting_file.yaml b/pkg/front_end/testcases/incremental/deleting_file.yaml
index dea1937..bafc4b3 100644
--- a/pkg/front_end/testcases/incremental/deleting_file.yaml
+++ b/pkg/front_end/testcases/incremental/deleting_file.yaml
@@ -11,12 +11,14 @@
   - entry: main.dart
     sources:
       main.dart: |
+        // @dart=2.9
         import "b.dart";
         main() {
           print("Hello no. 0");
           b();
         }
       b.dart: |
+        // @dart=2.9
         b() {
           print("b");
         }
@@ -27,6 +29,7 @@
       - b.dart
     sources:
       main.dart: |
+        // @dart=2.9
         import "b.dart";
         main() {
           print("Hello no. 0");
@@ -41,6 +44,7 @@
       - main.dart
     sources:
       main.dart: |
+        // @dart=2.9
         import "b.dart";
         main() {
           print("Hello no. 1");
@@ -55,6 +59,7 @@
       - main.dart
     sources:
       main.dart: |
+        // @dart=2.9
         import "b.dart";
         main() {
           print("Hello no. 1");
diff --git a/pkg/front_end/testcases/incremental/deleting_file.yaml.world.2.expect b/pkg/front_end/testcases/incremental/deleting_file.yaml.world.2.expect
index 65c08c4c..a1988d3 100644
--- a/pkg/front_end/testcases/incremental/deleting_file.yaml.world.2.expect
+++ b/pkg/front_end/testcases/incremental/deleting_file.yaml.world.2.expect
@@ -3,7 +3,7 @@
 //
 // Problems in library:
 //
-// org-dartlang-test:///main.dart:1:8: Error: Error when reading 'org-dartlang-test:///b.dart': File org-dartlang-test:///b.dart does not exist.
+// org-dartlang-test:///main.dart:2:8: Error: Error when reading 'org-dartlang-test:///b.dart': File org-dartlang-test:///b.dart does not exist.
 // import "b.dart";
 //        ^
 //
@@ -13,7 +13,7 @@
 //
 // Problems in library:
 //
-// org-dartlang-test:///main.dart:4:3: Error: Method not found: 'b'.
+// org-dartlang-test:///main.dart:5:3: Error: Method not found: 'b'.
 //   b();
 //   ^
 //
@@ -22,6 +22,6 @@
 
   static method main() → dynamic {
     dart.core::print("Hello no. 0");
-    invalid-expression "org-dartlang-test:///main.dart:4:3: Error: Method not found: 'b'.\n  b();\n  ^";
+    invalid-expression "org-dartlang-test:///main.dart:5:3: Error: Method not found: 'b'.\n  b();\n  ^";
   }
 }
diff --git a/pkg/front_end/testcases/incremental/deleting_file.yaml.world.3.expect b/pkg/front_end/testcases/incremental/deleting_file.yaml.world.3.expect
index 2fff4ef..8e795d4 100644
--- a/pkg/front_end/testcases/incremental/deleting_file.yaml.world.3.expect
+++ b/pkg/front_end/testcases/incremental/deleting_file.yaml.world.3.expect
@@ -3,7 +3,7 @@
 //
 // Problems in library:
 //
-// org-dartlang-test:///main.dart:1:8: Error: Error when reading 'org-dartlang-test:///b.dart': File org-dartlang-test:///b.dart does not exist.
+// org-dartlang-test:///main.dart:2:8: Error: Error when reading 'org-dartlang-test:///b.dart': File org-dartlang-test:///b.dart does not exist.
 // import "b.dart";
 //        ^
 //
@@ -13,7 +13,7 @@
 //
 // Problems in library:
 //
-// org-dartlang-test:///main.dart:4:3: Error: Method not found: 'b'.
+// org-dartlang-test:///main.dart:5:3: Error: Method not found: 'b'.
 //   b();
 //   ^
 //
@@ -22,6 +22,6 @@
 
   static method main() → dynamic {
     dart.core::print("Hello no. 1");
-    invalid-expression "org-dartlang-test:///main.dart:4:3: Error: Method not found: 'b'.\n  b();\n  ^";
+    invalid-expression "org-dartlang-test:///main.dart:5:3: Error: Method not found: 'b'.\n  b();\n  ^";
   }
 }
diff --git a/pkg/front_end/testcases/incremental/deleting_file.yaml.world.4.expect b/pkg/front_end/testcases/incremental/deleting_file.yaml.world.4.expect
index 2fff4ef..8e795d4 100644
--- a/pkg/front_end/testcases/incremental/deleting_file.yaml.world.4.expect
+++ b/pkg/front_end/testcases/incremental/deleting_file.yaml.world.4.expect
@@ -3,7 +3,7 @@
 //
 // Problems in library:
 //
-// org-dartlang-test:///main.dart:1:8: Error: Error when reading 'org-dartlang-test:///b.dart': File org-dartlang-test:///b.dart does not exist.
+// org-dartlang-test:///main.dart:2:8: Error: Error when reading 'org-dartlang-test:///b.dart': File org-dartlang-test:///b.dart does not exist.
 // import "b.dart";
 //        ^
 //
@@ -13,7 +13,7 @@
 //
 // Problems in library:
 //
-// org-dartlang-test:///main.dart:4:3: Error: Method not found: 'b'.
+// org-dartlang-test:///main.dart:5:3: Error: Method not found: 'b'.
 //   b();
 //   ^
 //
@@ -22,6 +22,6 @@
 
   static method main() → dynamic {
     dart.core::print("Hello no. 1");
-    invalid-expression "org-dartlang-test:///main.dart:4:3: Error: Method not found: 'b'.\n  b();\n  ^";
+    invalid-expression "org-dartlang-test:///main.dart:5:3: Error: Method not found: 'b'.\n  b();\n  ^";
   }
 }
diff --git a/pkg/front_end/testcases/incremental/disappearing_library.yaml b/pkg/front_end/testcases/incremental/disappearing_library.yaml
index 75a951b..c04715d 100644
--- a/pkg/front_end/testcases/incremental/disappearing_library.yaml
+++ b/pkg/front_end/testcases/incremental/disappearing_library.yaml
@@ -12,6 +12,7 @@
   - entry: main.dart
     sources:
       main.dart: |
+        // @dart=2.9
         library mainLibrary;
         import "b.dart" as b;
 
@@ -19,6 +20,7 @@
           b.foo();
         }
       b.dart: |
+        // @dart=2.9
         library bLibrary;
 
         foo() {
@@ -31,6 +33,7 @@
       - b.dart
     sources:
       b.dart: |
+        // @dart=2.9
         library bLibrary;
 
         main() {
diff --git a/pkg/front_end/testcases/incremental/disappearing_package.yaml b/pkg/front_end/testcases/incremental/disappearing_package.yaml
index 4790a02..fe8d157 100644
--- a/pkg/front_end/testcases/incremental/disappearing_package.yaml
+++ b/pkg/front_end/testcases/incremental/disappearing_package.yaml
@@ -12,12 +12,14 @@
   - entry: main.dart
     sources:
       main.dart: |
+        // @dart=2.9
         import "package:example/b.dart";
         main() {
           print("hello");
           b();
         }
       pkg/example/b.dart: |
+        // @dart=2.9
         b() {
           print("b");
         }
@@ -31,6 +33,7 @@
     expectInitializeFromDill: false
     sources:
       main.dart: |
+        // @dart=2.9
         main() {
           print("hello");
         }
diff --git a/pkg/front_end/testcases/incremental/entry_not_package_url_main.yaml b/pkg/front_end/testcases/incremental/entry_not_package_url_main.yaml
index f5ac43a..7fd5bb5 100644
--- a/pkg/front_end/testcases/incremental/entry_not_package_url_main.yaml
+++ b/pkg/front_end/testcases/incremental/entry_not_package_url_main.yaml
@@ -11,6 +11,7 @@
   - entry: main.dart
     sources:
       main.dart: |
+        // @dart=2.9
         main() {
         }
       .packages: untitled:/
diff --git a/pkg/front_end/testcases/incremental/entry_not_package_url_main_with_errors.yaml b/pkg/front_end/testcases/incremental/entry_not_package_url_main_with_errors.yaml
index 828f103..230ec11 100644
--- a/pkg/front_end/testcases/incremental/entry_not_package_url_main_with_errors.yaml
+++ b/pkg/front_end/testcases/incremental/entry_not_package_url_main_with_errors.yaml
@@ -11,6 +11,7 @@
   - entry: main.dart
     sources:
       main.dart: |
+        // @dart=2.9
         main() {
           asdf;
         }
diff --git a/pkg/front_end/testcases/incremental/entry_not_package_url_main_with_errors.yaml.world.1.expect b/pkg/front_end/testcases/incremental/entry_not_package_url_main_with_errors.yaml.world.1.expect
index c3623d7..055bb06 100644
--- a/pkg/front_end/testcases/incremental/entry_not_package_url_main_with_errors.yaml.world.1.expect
+++ b/pkg/front_end/testcases/incremental/entry_not_package_url_main_with_errors.yaml.world.1.expect
@@ -8,12 +8,12 @@
 //
 // Problems in library:
 //
-// org-dartlang-test:///main.dart:2:3: Error: Undefined name 'asdf'.
+// org-dartlang-test:///main.dart:3:3: Error: Undefined name 'asdf'.
 //   asdf;
 //   ^^^^
 //
 
   static method main() → dynamic {
-    invalid-expression "org-dartlang-test:///main.dart:2:3: Error: Undefined name 'asdf'.\n  asdf;\n  ^^^^";
+    invalid-expression "org-dartlang-test:///main.dart:3:3: Error: Undefined name 'asdf'.\n  asdf;\n  ^^^^";
   }
 }
diff --git a/pkg/front_end/testcases/incremental/entry_not_package_url_no_main.yaml b/pkg/front_end/testcases/incremental/entry_not_package_url_no_main.yaml
index fd5d0d5..e6e0487 100644
--- a/pkg/front_end/testcases/incremental/entry_not_package_url_no_main.yaml
+++ b/pkg/front_end/testcases/incremental/entry_not_package_url_no_main.yaml
@@ -11,6 +11,7 @@
   - entry: main.dart
     sources:
       main.dart: |
+        // @dart=2.9
         notMain() {}
       .packages: untitled:/
     expectedLibraryCount: 1
diff --git a/pkg/front_end/testcases/incremental/error_on_recompile_with_no_change.yaml b/pkg/front_end/testcases/incremental/error_on_recompile_with_no_change.yaml
index d97a711..6557fc6 100644
--- a/pkg/front_end/testcases/incremental/error_on_recompile_with_no_change.yaml
+++ b/pkg/front_end/testcases/incremental/error_on_recompile_with_no_change.yaml
@@ -19,6 +19,7 @@
           ]
         }
       main.dart: |
+        // @dart=2.9
         import 'package:flutter/object.dart';
         import 'lib.dart';
         
@@ -31,6 +32,7 @@
           }
         }
       lib.dart: |
+        // @dart=2.9
         import 'package:flutter/object.dart';
         mixin LibMixin on RenderObject {}
       flutter/object.dart: |
diff --git a/pkg/front_end/testcases/incremental/error_on_recompile_with_no_change_02.yaml b/pkg/front_end/testcases/incremental/error_on_recompile_with_no_change_02.yaml
index 87f87b1..6e0e5c8 100644
--- a/pkg/front_end/testcases/incremental/error_on_recompile_with_no_change_02.yaml
+++ b/pkg/front_end/testcases/incremental/error_on_recompile_with_no_change_02.yaml
@@ -19,6 +19,7 @@
           ]
         }
       main.dart: |
+        // @dart=2.9
         import 'package:flutter/object.dart';
         import 'lib1.dart';
 
@@ -29,10 +30,12 @@
           }
         }
       lib1.dart: |
+        // @dart=2.9
         import 'package:flutter/object.dart';
         import 'lib2.dart';
         abstract class Adaptor extends RenderFoo with LibMixin {}
       lib2.dart: |
+        // @dart=2.9
         import 'package:flutter/object.dart';
         mixin LibMixin on RenderObject {}
       flutter/object.dart: |
diff --git a/pkg/front_end/testcases/incremental/experiments_enabled_1.yaml b/pkg/front_end/testcases/incremental/experiments_enabled_1.yaml
index 7b083ef..df964e7 100644
--- a/pkg/front_end/testcases/incremental/experiments_enabled_1.yaml
+++ b/pkg/front_end/testcases/incremental/experiments_enabled_1.yaml
@@ -8,7 +8,7 @@
 type: newworld
 worlds:
   - entry: main.dart
-    experiments: triple-shift,non-nullable
+    experiments: triple-shift
     sources:
       main.dart: |
         main() {
diff --git a/pkg/front_end/testcases/incremental/expression_calculation_with_error.yaml b/pkg/front_end/testcases/incremental/expression_calculation_with_error.yaml
index 51073a5..9576219 100644
--- a/pkg/front_end/testcases/incremental/expression_calculation_with_error.yaml
+++ b/pkg/front_end/testcases/incremental/expression_calculation_with_error.yaml
@@ -13,6 +13,7 @@
   - entry: main.dart
     sources:
       main.dart: |
+        // @dart=2.9
         main() {
           print("hello");
         }
diff --git a/pkg/front_end/testcases/incremental/extension_expression_compilation_usage.yaml b/pkg/front_end/testcases/incremental/extension_expression_compilation_usage.yaml
index 13a6a2e..0ecdf8e 100644
--- a/pkg/front_end/testcases/incremental/extension_expression_compilation_usage.yaml
+++ b/pkg/front_end/testcases/incremental/extension_expression_compilation_usage.yaml
@@ -9,6 +9,7 @@
   - entry: main.dart
     sources:
       main.dart: |
+        // @dart=2.9
         extension NumberParsing on String {
           int parseInt() {
             return int.parse(this);
diff --git a/pkg/front_end/testcases/incremental/extension_prefix_double_import_then_conflict.yaml b/pkg/front_end/testcases/incremental/extension_prefix_double_import_then_conflict.yaml
index 21d2963..62cacea 100644
--- a/pkg/front_end/testcases/incremental/extension_prefix_double_import_then_conflict.yaml
+++ b/pkg/front_end/testcases/incremental/extension_prefix_double_import_then_conflict.yaml
@@ -14,6 +14,7 @@
     errors: true
     sources:
       main.dart: |
+        // @dart=2.9
         import "lib1.dart";
         import "lib2.dart" as p;
         main() {
@@ -21,10 +22,12 @@
           o.onObject;
         }
       lib1.dart: |
+        // @dart=2.9
         extension OnObject on Object {
           String get onObject => "object #1";
         }
       lib2.dart: |
+        // @dart=2.9
         extension AlsoOnObject on Object {
           String get onObject => "object #2";
         }
@@ -37,6 +40,7 @@
       - main.dart
     sources:
       main.dart: |
+        // @dart=2.9
         import "lib1.dart";
         import "lib1.dart" as p;
         main() {
@@ -53,6 +57,7 @@
       - main.dart
     sources:
       main.dart: |
+        // @dart=2.9
         import "lib1.dart";
         import "lib2.dart" as p;
         main() {
diff --git a/pkg/front_end/testcases/incremental/extension_prefix_double_import_then_conflict.yaml.world.1.expect b/pkg/front_end/testcases/incremental/extension_prefix_double_import_then_conflict.yaml.world.1.expect
index ecab5fd..d04e859 100644
--- a/pkg/front_end/testcases/incremental/extension_prefix_double_import_then_conflict.yaml.world.1.expect
+++ b/pkg/front_end/testcases/incremental/extension_prefix_double_import_then_conflict.yaml.world.1.expect
@@ -19,15 +19,15 @@
 //
 // Problems in library:
 //
-// org-dartlang-test:///main.dart:5:5: Error: The property 'onObject' is defined in multiple extensions for 'Object' and neither is more specific.
+// org-dartlang-test:///main.dart:6:5: Error: The property 'onObject' is defined in multiple extensions for 'Object' and neither is more specific.
 //  - 'Object' is from 'dart:core'.
 // Try using an explicit extension application of the wanted extension or hiding unwanted extensions from scope.
 //   o.onObject;
 //     ^^^^^^^^
-// org-dartlang-test:///lib1.dart:2:14: Context: This is one of the extension members.
+// org-dartlang-test:///lib1.dart:3:14: Context: This is one of the extension members.
 //   String get onObject => "object #1";
 //              ^^^^^^^^
-// org-dartlang-test:///lib2.dart:2:14: Context: This is one of the extension members.
+// org-dartlang-test:///lib2.dart:3:14: Context: This is one of the extension members.
 //   String get onObject => "object #2";
 //              ^^^^^^^^
 //
@@ -37,6 +37,6 @@
 
   static method main() → dynamic {
     dart.core::Object* o = 1;
-    invalid-expression "org-dartlang-test:///main.dart:5:5: Error: The property 'onObject' is defined in multiple extensions for 'Object' and neither is more specific.\n - 'Object' is from 'dart:core'.\nTry using an explicit extension application of the wanted extension or hiding unwanted extensions from scope.\n  o.onObject;\n    ^^^^^^^^" in o{<unresolved>}.onObject;
+    invalid-expression "org-dartlang-test:///main.dart:6:5: Error: The property 'onObject' is defined in multiple extensions for 'Object' and neither is more specific.\n - 'Object' is from 'dart:core'.\nTry using an explicit extension application of the wanted extension or hiding unwanted extensions from scope.\n  o.onObject;\n    ^^^^^^^^" in o{<unresolved>}.onObject;
   }
 }
diff --git a/pkg/front_end/testcases/incremental/extension_prefix_double_import_then_conflict.yaml.world.3.expect b/pkg/front_end/testcases/incremental/extension_prefix_double_import_then_conflict.yaml.world.3.expect
index ecab5fd..d04e859 100644
--- a/pkg/front_end/testcases/incremental/extension_prefix_double_import_then_conflict.yaml.world.3.expect
+++ b/pkg/front_end/testcases/incremental/extension_prefix_double_import_then_conflict.yaml.world.3.expect
@@ -19,15 +19,15 @@
 //
 // Problems in library:
 //
-// org-dartlang-test:///main.dart:5:5: Error: The property 'onObject' is defined in multiple extensions for 'Object' and neither is more specific.
+// org-dartlang-test:///main.dart:6:5: Error: The property 'onObject' is defined in multiple extensions for 'Object' and neither is more specific.
 //  - 'Object' is from 'dart:core'.
 // Try using an explicit extension application of the wanted extension or hiding unwanted extensions from scope.
 //   o.onObject;
 //     ^^^^^^^^
-// org-dartlang-test:///lib1.dart:2:14: Context: This is one of the extension members.
+// org-dartlang-test:///lib1.dart:3:14: Context: This is one of the extension members.
 //   String get onObject => "object #1";
 //              ^^^^^^^^
-// org-dartlang-test:///lib2.dart:2:14: Context: This is one of the extension members.
+// org-dartlang-test:///lib2.dart:3:14: Context: This is one of the extension members.
 //   String get onObject => "object #2";
 //              ^^^^^^^^
 //
@@ -37,6 +37,6 @@
 
   static method main() → dynamic {
     dart.core::Object* o = 1;
-    invalid-expression "org-dartlang-test:///main.dart:5:5: Error: The property 'onObject' is defined in multiple extensions for 'Object' and neither is more specific.\n - 'Object' is from 'dart:core'.\nTry using an explicit extension application of the wanted extension or hiding unwanted extensions from scope.\n  o.onObject;\n    ^^^^^^^^" in o{<unresolved>}.onObject;
+    invalid-expression "org-dartlang-test:///main.dart:6:5: Error: The property 'onObject' is defined in multiple extensions for 'Object' and neither is more specific.\n - 'Object' is from 'dart:core'.\nTry using an explicit extension application of the wanted extension or hiding unwanted extensions from scope.\n  o.onObject;\n    ^^^^^^^^" in o{<unresolved>}.onObject;
   }
 }
diff --git a/pkg/front_end/testcases/incremental/extension_usage_from_dill.yaml b/pkg/front_end/testcases/incremental/extension_usage_from_dill.yaml
index fb17878..78a3218 100644
--- a/pkg/front_end/testcases/incremental/extension_usage_from_dill.yaml
+++ b/pkg/front_end/testcases/incremental/extension_usage_from_dill.yaml
@@ -9,6 +9,7 @@
   - entry: main.dart
     sources:
       main.dart: |
+        // @dart=2.9
         import "lib1.dart";
         import "lib2.dart";
         import "lib3.dart";
@@ -18,18 +19,21 @@
           "42".fooMe2();
         }
       lib1.dart: |
+        // @dart=2.9
         extension NumberParsing on String {
           int parseInt() {
             return int.parse(this);
           }
         }
       lib2.dart: |
+        // @dart=2.9
         extension DuplicateName on String {
           String fooMe1() {
             return "Foo1";
           }
         }
       lib3.dart: |
+        // @dart=2.9
         extension DuplicateName on String {
           String fooMe2() {
             return "Foo2";
@@ -54,6 +58,7 @@
       - main.dart
     sources:
       main.dart: |
+        // @dart=2.9
         import "lib1.dart";
         import "lib2.dart";
         import "lib3.dart";
@@ -63,18 +68,21 @@
           "42".fooMe2();
         }
       lib1.dart: |
+        // @dart=2.9
         extension NumberParsing on String {
           int parseInt() {
             return int.parse(this);
           }
         }
       lib2.dart: |
+        // @dart=2.9
         extension DuplicateName on String {
           String fooMe1() {
             return "Foo1";
           }
         }
       lib3.dart: |
+        // @dart=2.9
         extension DuplicateName on String {
           String fooMe2() {
             return "Foo2";
diff --git a/pkg/front_end/testcases/incremental/ffi_01.yaml b/pkg/front_end/testcases/incremental/ffi_01.yaml
index 601d153..2c40646 100644
--- a/pkg/front_end/testcases/incremental/ffi_01.yaml
+++ b/pkg/front_end/testcases/incremental/ffi_01.yaml
@@ -9,6 +9,7 @@
   - entry: main.dart
     sources:
       main.dart: |
+        // @dart=2.9
         import 'lib.dart';
 
         main() {
@@ -18,6 +19,7 @@
           print(coordinate.next);
         }
       lib.dart: |
+        // @dart=2.9
         import 'dart:ffi';
 
         class Coordinate extends Struct {
@@ -41,6 +43,7 @@
       - main.dart
     sources:
       main.dart: |
+        // @dart=2.9
         import 'lib.dart';
 
         main() {
diff --git a/pkg/front_end/testcases/incremental/ffi_02.yaml b/pkg/front_end/testcases/incremental/ffi_02.yaml
index be678ed..19d30a0 100644
--- a/pkg/front_end/testcases/incremental/ffi_02.yaml
+++ b/pkg/front_end/testcases/incremental/ffi_02.yaml
@@ -10,6 +10,7 @@
   - entry: main.dart
     sources:
       main.dart: |
+        // @dart=2.9
         import 'lib.dart';
 
         Coordinate coordinate;
@@ -21,6 +22,7 @@
           print(coordinate.next);
         }
       lib.dart: |
+        // @dart=2.9
         import 'dart:ffi';
 
         class Coordinate extends Struct {
diff --git a/pkg/front_end/testcases/incremental/flutter_issue_66122.yaml b/pkg/front_end/testcases/incremental/flutter_issue_66122.yaml
index 60fdac4..6df844e 100644
--- a/pkg/front_end/testcases/incremental/flutter_issue_66122.yaml
+++ b/pkg/front_end/testcases/incremental/flutter_issue_66122.yaml
@@ -13,6 +13,7 @@
     skipClassHierarchyTest: true
     sources:
       main.dart: |
+        // @dart=2.9
         import 'package:flutter/framework.dart';
         import 'after_layout.dart';
         class _HotReloadIssueState extends State<HotReloadIssue>
@@ -22,7 +23,8 @@
         }
         class HotReloadIssue extends StatefulWidget {}
 
-      after_layout.dart:
+      after_layout.dart: |
+        // @dart=2.9
         import 'package:flutter/framework.dart';
         mixin AfterLayoutMixin<T extends StatefulWidget> on State<T> {}
 
diff --git a/pkg/front_end/testcases/incremental/flutter_mixin_failure_1.yaml b/pkg/front_end/testcases/incremental/flutter_mixin_failure_1.yaml
index 1e22f39..3ee21e2 100644
--- a/pkg/front_end/testcases/incremental/flutter_mixin_failure_1.yaml
+++ b/pkg/front_end/testcases/incremental/flutter_mixin_failure_1.yaml
@@ -9,6 +9,7 @@
   - entry: main.dart
     sources:
       main.dart: |
+        // @dart=2.9
         import 'lib.dart';
 
         class Test extends Test2 {
@@ -19,6 +20,7 @@
           Baz world();
         }
       lib.dart: |
+        // @dart=2.9
         class FooEntry {}
 
         class BarEntry extends FooEntry {}
@@ -46,6 +48,7 @@
     expectInitializeFromDill: false
     sources:
       main.dart: |
+        // @dart=2.9
         import 'lib.dart';
 
         class Test extends Test2 {
diff --git a/pkg/front_end/testcases/incremental/flutter_widget_transform.yaml b/pkg/front_end/testcases/incremental/flutter_widget_transform.yaml
index 3e3b988..0072fcb 100644
--- a/pkg/front_end/testcases/incremental/flutter_widget_transform.yaml
+++ b/pkg/front_end/testcases/incremental/flutter_widget_transform.yaml
@@ -9,15 +9,18 @@
   - entry: main.dart
     sources:
       main.dart: |
+        // @dart=2.9
         import 'package:flutter/src/widgets/framework.dart';
         import 'package:flutter/src/widgets/widget_inspector.dart';
 
         class Foo extends Widget {}
       flutter/lib/src/widgets/framework.dart: |
+        // @dart=2.9
         abstract class Bar {}
 
         abstract class Widget extends Bar {}
       flutter/lib/src/widgets/widget_inspector.dart: |
+        // @dart=2.9
         abstract class _HasCreationLocation {
           _Location get _location;
         }
@@ -58,6 +61,7 @@
     expectInitializeFromDill: false
     sources:
       main.dart: |
+        // @dart=2.9
         import 'package:flutter/src/widgets/framework.dart';
         import 'package:flutter/src/widgets/widget_inspector.dart';
 
diff --git a/pkg/front_end/testcases/incremental/flutter_widget_transform_const.yaml b/pkg/front_end/testcases/incremental/flutter_widget_transform_const.yaml
index a583a95..95b124a 100644
--- a/pkg/front_end/testcases/incremental/flutter_widget_transform_const.yaml
+++ b/pkg/front_end/testcases/incremental/flutter_widget_transform_const.yaml
@@ -7,7 +7,6 @@
 trackWidgetCreation: true
 worlds:
   - entry: main.dart
-    experiments: non-nullable
     sources:
       main.dart: |
         import 'foo.dart';
diff --git a/pkg/front_end/testcases/incremental/flutter_widget_transform_nnbd.yaml b/pkg/front_end/testcases/incremental/flutter_widget_transform_nnbd.yaml
index ccf7702..6bb2b2b 100644
--- a/pkg/front_end/testcases/incremental/flutter_widget_transform_nnbd.yaml
+++ b/pkg/front_end/testcases/incremental/flutter_widget_transform_nnbd.yaml
@@ -7,7 +7,6 @@
 trackWidgetCreation: true
 worlds:
   - entry: main.dart
-    experiments: non-nullable
     sources:
       main.dart: |
         import 'foo.dart';
diff --git a/pkg/front_end/testcases/incremental/flutter_widget_transformer_43371.yaml b/pkg/front_end/testcases/incremental/flutter_widget_transformer_43371.yaml
index 0813f0a..1853f91 100644
--- a/pkg/front_end/testcases/incremental/flutter_widget_transformer_43371.yaml
+++ b/pkg/front_end/testcases/incremental/flutter_widget_transformer_43371.yaml
@@ -7,7 +7,6 @@
 trackWidgetCreation: true
 worlds:
   - entry: main.dart
-    experiments: non-nullable
     sources:
       main.dart: |
         // @dart=2.8
diff --git a/pkg/front_end/testcases/incremental/flutter_widget_transformer_non_const.yaml b/pkg/front_end/testcases/incremental/flutter_widget_transformer_non_const.yaml
index 4f4309f..0c8de3b 100644
--- a/pkg/front_end/testcases/incremental/flutter_widget_transformer_non_const.yaml
+++ b/pkg/front_end/testcases/incremental/flutter_widget_transformer_non_const.yaml
@@ -7,7 +7,6 @@
 trackWidgetCreation: true
 worlds:
   - entry: main.dart
-    experiments: non-nullable
     sources:
       main.dart: |
         import 'foo.dart';
diff --git a/pkg/front_end/testcases/incremental/incremental_serialization_1.yaml b/pkg/front_end/testcases/incremental/incremental_serialization_1.yaml
index 6c859f5..fa1166f 100644
--- a/pkg/front_end/testcases/incremental/incremental_serialization_1.yaml
+++ b/pkg/front_end/testcases/incremental/incremental_serialization_1.yaml
@@ -10,6 +10,7 @@
   - entry: main.dart
     sources:
       main.dart: |
+        // @dart=2.9
         import "dart:core";
         import "package:package2/lib2.dart";
         import "package:package2/lib3.dart";
@@ -17,15 +18,18 @@
           lib2();
           lib3();
         }
-      package1/lib1.dart:
+      package1/lib1.dart: |
+        // @dart=2.9
         lib1() {
           return 42;
         }
-      package2/lib2.dart:
+      package2/lib2.dart: |
+        // @dart=2.9
         lib2() {
           return 42;
         }
-      package2/lib3.dart:
+      package2/lib3.dart: |
+        // @dart=2.9
         import "package:package1/lib1.dart";
         lib3() {
           return lib1();
@@ -42,6 +46,7 @@
       - main.dart
     sources:
       main.dart: |
+        // @dart=2.9
         import "package:package1/lib1.dart";
         main() {
           lib1();
@@ -59,6 +64,7 @@
       - main.dart
     sources:
       main.dart: |
+        // @dart=2.9
         import "package:package2/lib2.dart";
         main() {
           lib2();
@@ -74,11 +80,13 @@
       - package:package1/lib1.dart
     sources:
       main.dart: |
+        // @dart=2.9
         import "package:package2/lib2.dart";
         main() {
           lib2();
         }
-      package1/lib1.dart:
+      package1/lib1.dart: |
+        // @dart=2.9
         lib1_1() {
           return 42;
         }
diff --git a/pkg/front_end/testcases/incremental/incremental_serialization_2.yaml b/pkg/front_end/testcases/incremental/incremental_serialization_2.yaml
index 9a0feaf..997b737 100644
--- a/pkg/front_end/testcases/incremental/incremental_serialization_2.yaml
+++ b/pkg/front_end/testcases/incremental/incremental_serialization_2.yaml
@@ -10,7 +10,8 @@
 worlds:
   - entry: main.dart
     sources:
-      main.dart:
+      main.dart: |
+        // @dart=2.9
         import "package:package1/lib1.dart";
         import "package:package1/lib2.dart";
         import "package:package1/lib3.dart";
@@ -19,15 +20,18 @@
           lib2();
           lib3();
         }
-      package1/lib1.dart:
+      package1/lib1.dart: |
+        // @dart=2.9
         lib1() {
           return 42;
         }
-      package1/lib2.dart:
+      package1/lib2.dart: |
+        // @dart=2.9
         lib2() {
           return 42;
         }
-      package1/lib3.dart:
+      package1/lib3.dart: |
+        // @dart=2.9
         import "package:package1/lib1.dart";
         lib3() {
           return lib1();
@@ -42,7 +46,8 @@
     invalidate:
       - package:package1/lib3.dart
     sources:
-      package1/lib3.dart:
+      package1/lib3.dart: |
+        // @dart=2.9
         import "package:package1/lib1.dart";
         lib3() {
           return lib3_1();
diff --git a/pkg/front_end/testcases/incremental/incremental_serialization_3.yaml b/pkg/front_end/testcases/incremental/incremental_serialization_3.yaml
index 7801796..775b322 100644
--- a/pkg/front_end/testcases/incremental/incremental_serialization_3.yaml
+++ b/pkg/front_end/testcases/incremental/incremental_serialization_3.yaml
@@ -13,18 +13,21 @@
   - entry: main.dart
     sources:
       main.dart: |
+        // @dart=2.9
         import "dart:core";
         import "package:package1/lib1_a.dart";
         main() {
           lib1();
         }
-      package1/lib1_a.dart:
+      package1/lib1_a.dart: |
+        // @dart=2.9
         import "package:package3/lib3.dart" as lib3;
         export "lib1_b.dart";
         lib1a() {
           lib3.lib3();
         }
-      package1/lib1_b.dart:
+      package1/lib1_b.dart: |
+        // @dart=2.9
         import "package:package2/lib2.dart" as lib2;
         lib1() {
           return la(null);
@@ -32,12 +35,14 @@
         la(lib2.Foo f) {
           return 42;
         }
-      package2/lib2.dart:
+      package2/lib2.dart: |
+        // @dart=2.9
         int f = 42;
         class Foo {
           static int y = 42;
         }
-      package3/lib3.dart:
+      package3/lib3.dart: |
+        // @dart=2.9
         lib3() {
           print("lib3");
         }
@@ -51,18 +56,21 @@
     expectInitializeFromDill: true
     sources:
       main.dart: |
+        // @dart=2.9
         import "dart:core";
         import "package:package1/lib1_a.dart";
         main() {
           lib1();
         }
-      package1/lib1_a.dart:
+      package1/lib1_a.dart: |
+        // @dart=2.9
         import "package:package3/lib3.dart" as lib3;
         export "lib1_b.dart";
         lib1a() {
           lib3.lib3();
         }
-      package1/lib1_b.dart:
+      package1/lib1_b.dart: |
+        // @dart=2.9
         import "package:package2/lib2.dart" as lib2;
         lib1() {
           return la(null);
@@ -70,12 +78,14 @@
         la(lib2.Foo f) {
           return 42;
         }
-      package2/lib2.dart:
+      package2/lib2.dart: |
+        // @dart=2.9
         int f = 42;
         class Foo {
           static int y = 42;
         }
-      package3/lib3.dart:
+      package3/lib3.dart: |
+        // @dart=2.9
         lib3() {
           print("lib3");
         }
diff --git a/pkg/front_end/testcases/incremental/incremental_serialization_4.yaml b/pkg/front_end/testcases/incremental/incremental_serialization_4.yaml
index 5f87a50..a9c75d5 100644
--- a/pkg/front_end/testcases/incremental/incremental_serialization_4.yaml
+++ b/pkg/front_end/testcases/incremental/incremental_serialization_4.yaml
@@ -13,13 +13,15 @@
   - entry: main.dart
     sources:
       main.dart: |
+        // @dart=2.9
         import "package:package1/p1.dart";
         import "package:package2/p2.dart";
         main() {
           p1();
           p2();
         }
-      package1/p1.dart:
+      package1/p1.dart: |
+        // @dart=2.9
         p1() {
           print("Package 1");
           p1_v1_Only();
@@ -27,7 +29,8 @@
         p1_v1_Only() {
           print("Package 1 v1 only!");
         }
-      package1v2/p1.dart:
+      package1v2/p1.dart: |
+        // @dart=2.9
         p1() {
           print("Package 1 v2");
           p1_v2_Only();
@@ -35,7 +38,8 @@
         p1_v2_Only() {
           print("Package 1 v2 only!");
         }
-      package2/p2.dart:
+      package2/p2.dart: |
+        // @dart=2.9
         import "package:package1/p1.dart";
         p2() {
           p1();
@@ -50,13 +54,15 @@
     expectInitializeFromDill: false # .packages changed
     sources:
       main.dart: |
+        // @dart=2.9
         import "package:package1/p1.dart";
         import "package:package2/p2.dart";
         main() {
           p1();
           p2();
         }
-      package1/p1.dart:
+      package1/p1.dart: |
+        // @dart=2.9
         p1() {
           print("Package 1");
           p1_v1_Only();
@@ -64,7 +70,8 @@
         p1_v1_Only() {
           print("Package 1 v1 only!");
         }
-      package1v2/p1.dart:
+      package1v2/p1.dart: |
+        // @dart=2.9
         p1() {
           print("Package 1 v2");
           p1_v2_Only();
@@ -72,7 +79,8 @@
         p1_v2_Only() {
           print("Package 1 v2 only!");
         }
-      package2/p2.dart:
+      package2/p2.dart: |
+        // @dart=2.9
         import "package:package1/p1.dart";
         p2() {
           p1();
diff --git a/pkg/front_end/testcases/incremental/initialize_with_file_then_use_type.yaml b/pkg/front_end/testcases/incremental/initialize_with_file_then_use_type.yaml
index 2efee99..f2414e8 100644
--- a/pkg/front_end/testcases/incremental/initialize_with_file_then_use_type.yaml
+++ b/pkg/front_end/testcases/incremental/initialize_with_file_then_use_type.yaml
@@ -13,12 +13,14 @@
   - entry: main.dart
     sources:
       main.dart: |
+        // @dart=2.9
         import "foo.dart";
         main() {
           Foo foo = new Foo();
           foo.foo();
         }
       foo.dart: |
+        // @dart=2.9
         class Foo {
           foo() {
             print("Foo!");
@@ -30,10 +32,12 @@
       - main.dart
     sources:
       main.dart: |
+        // @dart=2.9
         main() {
           print("hello from main");
         }
       foo.dart: |
+        // @dart=2.9
         class Foo {
           foo() {
             print("Foo!");
@@ -47,6 +51,7 @@
       - main.dart
     sources:
       main.dart: |
+        // @dart=2.9
         import "foo.dart";
         main() {
           Foo foo = new Foo();
diff --git a/pkg/front_end/testcases/incremental/initialize_with_unused_package_then_use_type.yaml b/pkg/front_end/testcases/incremental/initialize_with_unused_package_then_use_type.yaml
index e34eff2..6460d79 100644
--- a/pkg/front_end/testcases/incremental/initialize_with_unused_package_then_use_type.yaml
+++ b/pkg/front_end/testcases/incremental/initialize_with_unused_package_then_use_type.yaml
@@ -14,12 +14,14 @@
   - entry: main.dart
     sources:
       main.dart: |
+        // @dart=2.9
         import "package:mypackage/foo.dart";
         main() {
           Foo foo = new Foo();
           foo.foo();
         }
       mypackage/foo.dart: |
+        // @dart=2.9
         class Foo {
           foo() {
             print("Foo!");
@@ -32,10 +34,12 @@
       - main.dart
     sources:
       main.dart: |
+        // @dart=2.9
         main() {
           print("hello from main");
         }
       mypackage/foo.dart: |
+        // @dart=2.9
         class Foo {
           foo() {
             print("Foo!");
@@ -50,6 +54,7 @@
       - main.dart
     sources:
       main.dart: |
+        // @dart=2.9
         import "package:mypackage/foo.dart";
         main() {
           Foo foo = new Foo();
diff --git a/pkg/front_end/testcases/incremental/invalid_part_uri_01.yaml b/pkg/front_end/testcases/incremental/invalid_part_uri_01.yaml
index 2620942c..fd9154f 100644
--- a/pkg/front_end/testcases/incremental/invalid_part_uri_01.yaml
+++ b/pkg/front_end/testcases/incremental/invalid_part_uri_01.yaml
@@ -9,6 +9,7 @@
   - entry: main.dart
     sources:
       main.dart: |
+        // @dart=2.9
         // The space makes the scheme invalid -- this causes Uri.parse to throw.
         part ' package:foo/bar.dart';
     expectedLibraryCount: 1
@@ -21,6 +22,7 @@
       - main.dart
     sources:
       main.dart: |
+        // @dart=2.9
         main() {}
     expectInitializeFromDill: false
     expectedLibraryCount: 1
diff --git a/pkg/front_end/testcases/incremental/invalid_part_uri_01.yaml.world.1.expect b/pkg/front_end/testcases/incremental/invalid_part_uri_01.yaml.world.1.expect
index 8763205..2b1004b 100644
--- a/pkg/front_end/testcases/incremental/invalid_part_uri_01.yaml.world.1.expect
+++ b/pkg/front_end/testcases/incremental/invalid_part_uri_01.yaml.world.1.expect
@@ -3,7 +3,7 @@
 //
 // Problems in library:
 //
-// org-dartlang-test:///main.dart:2:6: Error: Expected a URI.
+// org-dartlang-test:///main.dart:3:6: Error: Expected a URI.
 // part ' package:foo/bar.dart';
 //      ^
 //
@@ -13,7 +13,7 @@
 //
 // Problems in library:
 //
-// org-dartlang-test:///main.dart:2:7: Error: Couldn't parse URI ' package:foo/bar.dart':
+// org-dartlang-test:///main.dart:3:7: Error: Couldn't parse URI ' package:foo/bar.dart':
 //   Scheme not starting with alphabetic character.
 // part ' package:foo/bar.dart';
 //       ^
diff --git a/pkg/front_end/testcases/incremental/invalid_uri_as_part.yaml b/pkg/front_end/testcases/incremental/invalid_uri_as_part.yaml
index a77a588..0ee68fc 100644
--- a/pkg/front_end/testcases/incremental/invalid_uri_as_part.yaml
+++ b/pkg/front_end/testcases/incremental/invalid_uri_as_part.yaml
@@ -8,6 +8,7 @@
     errors: true
     sources:
       main.dart: |
+        // @dart=2.9
         part '$foo';
         main() {}
     expectedLibraryCount: 1
diff --git a/pkg/front_end/testcases/incremental/invalid_uri_as_part.yaml.world.1.expect b/pkg/front_end/testcases/incremental/invalid_uri_as_part.yaml.world.1.expect
index 144eef3..1184909 100644
--- a/pkg/front_end/testcases/incremental/invalid_uri_as_part.yaml.world.1.expect
+++ b/pkg/front_end/testcases/incremental/invalid_uri_as_part.yaml.world.1.expect
@@ -1,9 +1,9 @@
 main = main::main;
-library from "org-dartlang-malformed-uri:bad5" as bad5 {
+library from "org-dartlang-malformed-uri:bad18" as bad {
 //
 // Problems in library:
 //
-// org-dartlang-test:///main.dart:1:6: Error: Expected a URI.
+// org-dartlang-test:///main.dart:2:6: Error: Expected a URI.
 // part '$foo';
 //      ^
 //
@@ -13,11 +13,11 @@
 //
 // Problems in library:
 //
-// org-dartlang-test:///main.dart:1:7: Error: Can't use string interpolation in a URI.
+// org-dartlang-test:///main.dart:2:7: Error: Can't use string interpolation in a URI.
 // part '$foo';
 //       ^
 //
 
-  part org-dartlang-malformed-uri:bad5;
+  part org-dartlang-malformed-uri:bad18;
   static method main() → dynamic {}
 }
diff --git a/pkg/front_end/testcases/incremental/invalid_uri_as_part.yaml.world.2.expect b/pkg/front_end/testcases/incremental/invalid_uri_as_part.yaml.world.2.expect
index 144eef3..1184909 100644
--- a/pkg/front_end/testcases/incremental/invalid_uri_as_part.yaml.world.2.expect
+++ b/pkg/front_end/testcases/incremental/invalid_uri_as_part.yaml.world.2.expect
@@ -1,9 +1,9 @@
 main = main::main;
-library from "org-dartlang-malformed-uri:bad5" as bad5 {
+library from "org-dartlang-malformed-uri:bad18" as bad {
 //
 // Problems in library:
 //
-// org-dartlang-test:///main.dart:1:6: Error: Expected a URI.
+// org-dartlang-test:///main.dart:2:6: Error: Expected a URI.
 // part '$foo';
 //      ^
 //
@@ -13,11 +13,11 @@
 //
 // Problems in library:
 //
-// org-dartlang-test:///main.dart:1:7: Error: Can't use string interpolation in a URI.
+// org-dartlang-test:///main.dart:2:7: Error: Can't use string interpolation in a URI.
 // part '$foo';
 //       ^
 //
 
-  part org-dartlang-malformed-uri:bad5;
+  part org-dartlang-malformed-uri:bad18;
   static method main() → dynamic {}
 }
diff --git a/pkg/front_end/testcases/incremental/invalidate_export_of_main.yaml b/pkg/front_end/testcases/incremental/invalidate_export_of_main.yaml
index 768fd3c..eee5b6c 100644
--- a/pkg/front_end/testcases/incremental/invalidate_export_of_main.yaml
+++ b/pkg/front_end/testcases/incremental/invalidate_export_of_main.yaml
@@ -10,6 +10,8 @@
   - a.dart
 sources:
   a.dart: |
+    // @dart=2.9
     export 'b.dart';
   b.dart: |
+    // @dart=2.9
     main() { print("hello"); }
\ No newline at end of file
diff --git a/pkg/front_end/testcases/incremental/invalidate_package_part.yaml b/pkg/front_end/testcases/incremental/invalidate_package_part.yaml
index da20971..7fee6d0 100644
--- a/pkg/front_end/testcases/incremental/invalidate_package_part.yaml
+++ b/pkg/front_end/testcases/incremental/invalidate_package_part.yaml
@@ -10,12 +10,14 @@
   - entry: "package:example/main.dart"
     sources:
       pkg/example/main.dart: |
+        // @dart=2.9
         part "b.dart";
         main() {
           print("hello");
           b();
         }
       pkg/example/b.dart: |
+        // @dart=2.9
         part of "main.dart";
         b() {
           print("b1");
@@ -29,12 +31,14 @@
       - "package:example/b.dart"
     sources:
       pkg/example/main.dart: |
+        // @dart=2.9
         part "b.dart";
         main() {
           print("hello");
           b();
         }
       pkg/example/b.dart: |
+        // @dart=2.9
         part of "main.dart";
         b() {
           print("b2");
@@ -48,12 +52,14 @@
       - "package:example/b.dart"
     sources:
       pkg/example/main.dart: |
+        // @dart=2.9
         part "b.dart";
         main() {
           print("hello");
           b();
         }
       pkg/example/b.dart: |
+        // @dart=2.9
         part of "main.dart";
         b() {
           print("b3");
diff --git a/pkg/front_end/testcases/incremental/invalidate_package_part_2.yaml b/pkg/front_end/testcases/incremental/invalidate_package_part_2.yaml
index 47a379d..2e63311 100644
--- a/pkg/front_end/testcases/incremental/invalidate_package_part_2.yaml
+++ b/pkg/front_end/testcases/incremental/invalidate_package_part_2.yaml
@@ -9,12 +9,14 @@
   - entry: "package:example/main.dart"
     sources:
       pkg/example/main.dart: |
+        // @dart=2.9
         part "b.dart";
         main() {
           print("hello");
           b();
         }
       pkg/example/b.dart: |
+        // @dart=2.9
         part of "main.dart";
         b() {
           print("b1");
@@ -30,6 +32,7 @@
       - "package:example/b.dart"
     sources:
       pkg/example/b.dart: |
+        // @dart=2.9
         part of "main.dart";
         b() {
           print("b2");
@@ -45,6 +48,7 @@
       - "package:example/b.dart"
     sources:
       pkg/example/b.dart: |
+        // @dart=2.9
         part of "main.dart";
         b() {
           print("b3");
diff --git a/pkg/front_end/testcases/incremental/invalidate_package_part_as_file.yaml b/pkg/front_end/testcases/incremental/invalidate_package_part_as_file.yaml
index 60327f4..4e2cd4d 100644
--- a/pkg/front_end/testcases/incremental/invalidate_package_part_as_file.yaml
+++ b/pkg/front_end/testcases/incremental/invalidate_package_part_as_file.yaml
@@ -10,12 +10,14 @@
   - pkg/example/b.dart
 sources:
   pkg/example/main.dart: |
+    // @dart=2.9
     part "b.dart";
     main() {
       print("hello");
       b();
     }
   pkg/example/b.dart: |
+    // @dart=2.9
     part of "main.dart";
     b() {
       print("b1");
diff --git a/pkg/front_end/testcases/incremental/invalidate_package_part_as_package.yaml b/pkg/front_end/testcases/incremental/invalidate_package_part_as_package.yaml
index ccbe383..68e2d37 100644
--- a/pkg/front_end/testcases/incremental/invalidate_package_part_as_package.yaml
+++ b/pkg/front_end/testcases/incremental/invalidate_package_part_as_package.yaml
@@ -10,12 +10,14 @@
   - "package:example/b.dart"
 sources:
   pkg/example/main.dart: |
+    // @dart=2.9
     part "b.dart";
     main() {
       print("hello");
       b();
     }
   pkg/example/b.dart: |
+    // @dart=2.9
     part of "main.dart";
     b() {
       print("b1");
diff --git a/pkg/front_end/testcases/incremental/invalidate_package_part_from_package_url_as_file.yaml b/pkg/front_end/testcases/incremental/invalidate_package_part_from_package_url_as_file.yaml
index 15d82ee..ee36914 100644
--- a/pkg/front_end/testcases/incremental/invalidate_package_part_from_package_url_as_file.yaml
+++ b/pkg/front_end/testcases/incremental/invalidate_package_part_from_package_url_as_file.yaml
@@ -11,12 +11,14 @@
   - pkg/example/b.dart
 sources:
   pkg/example/main.dart: |
+    // @dart=2.9
     part "package:example/b.dart";
     main() {
       print("hello");
       b();
     }
   pkg/example/b.dart: |
+    // @dart=2.9
     part of "package:example/main.dart";
     b() {
       print("b1");
diff --git a/pkg/front_end/testcases/incremental/invalidate_package_part_from_package_url_as_package.yaml b/pkg/front_end/testcases/incremental/invalidate_package_part_from_package_url_as_package.yaml
index 2bb9c88..5af601b 100644
--- a/pkg/front_end/testcases/incremental/invalidate_package_part_from_package_url_as_package.yaml
+++ b/pkg/front_end/testcases/incremental/invalidate_package_part_from_package_url_as_package.yaml
@@ -11,12 +11,14 @@
   - "package:example/b.dart"
 sources:
   pkg/example/main.dart: |
+    // @dart=2.9
     part "package:example/b.dart";
     main() {
       print("hello");
       b();
     }
   pkg/example/b.dart: |
+    // @dart=2.9
     part of "package:example/main.dart";
     b() {
       print("b1");
diff --git a/pkg/front_end/testcases/incremental/invalidation_across_compile_time_error.yaml b/pkg/front_end/testcases/incremental/invalidation_across_compile_time_error.yaml
index 2313785..ec752c6 100644
--- a/pkg/front_end/testcases/incremental/invalidation_across_compile_time_error.yaml
+++ b/pkg/front_end/testcases/incremental/invalidation_across_compile_time_error.yaml
@@ -15,16 +15,19 @@
   - entry: main.dart
     sources:
       main.dart: |
+        // @dart=2.9
         import "b.dart";
         main() {
           print("hello");
           b();
         }
       b.dart: |
+        // @dart=2.9
         b() {
           print("hello from b");
         }
       c.dart: |
+        // @dart=2.9
         c() {
           print("hello from c");
         }
@@ -38,6 +41,7 @@
       - main.dart
     sources:
       main.dart: |
+        // @dart=2.9
         import "b.dart";
         import "nonexisting.dart";
         main() {
@@ -45,6 +49,7 @@
           b();
         }
       b.dart: |
+        // @dart=2.9
         import "c.dart";
         b() {
           print("hello from b");
@@ -60,6 +65,7 @@
       - main.dart
     sources:
       main.dart: |
+        // @dart=2.9
         import "b.dart";
         main() {
           print("hello");
diff --git a/pkg/front_end/testcases/incremental/invalidation_across_compile_time_error.yaml.world.2.expect b/pkg/front_end/testcases/incremental/invalidation_across_compile_time_error.yaml.world.2.expect
index 8f72034..00a49d0 100644
--- a/pkg/front_end/testcases/incremental/invalidation_across_compile_time_error.yaml.world.2.expect
+++ b/pkg/front_end/testcases/incremental/invalidation_across_compile_time_error.yaml.world.2.expect
@@ -28,7 +28,7 @@
 //
 // Problems in library:
 //
-// org-dartlang-test:///main.dart:2:8: Error: Error when reading 'org-dartlang-test:///nonexisting.dart': File org-dartlang-test:///nonexisting.dart does not exist.
+// org-dartlang-test:///main.dart:3:8: Error: Error when reading 'org-dartlang-test:///nonexisting.dart': File org-dartlang-test:///nonexisting.dart does not exist.
 // import "nonexisting.dart";
 //        ^
 //
diff --git a/pkg/front_end/testcases/incremental/issue_32366.yaml b/pkg/front_end/testcases/incremental/issue_32366.yaml
index c049a7d..595813f 100644
--- a/pkg/front_end/testcases/incremental/issue_32366.yaml
+++ b/pkg/front_end/testcases/incremental/issue_32366.yaml
@@ -8,6 +8,7 @@
   - entry: main.dart
     sources:
       main.dart: |
+        // @dart=2.9
         abstract class AIterator extends Iterator {
         }
         class Foo {
@@ -25,6 +26,7 @@
     errors: true
     sources:
       main.dart: |
+        // @dart=2.9
         abstract class BIterator extends Iterator {
         }
         class Foo {
diff --git a/pkg/front_end/testcases/incremental/issue_32366.yaml.world.2.expect b/pkg/front_end/testcases/incremental/issue_32366.yaml.world.2.expect
index e82a2d4..65cc6dc 100644
--- a/pkg/front_end/testcases/incremental/issue_32366.yaml.world.2.expect
+++ b/pkg/front_end/testcases/incremental/issue_32366.yaml.world.2.expect
@@ -3,29 +3,29 @@
 //
 // Problems in library:
 //
-// org-dartlang-test:///main.dart:4:11: Error: Expected ';' after this.
+// org-dartlang-test:///main.dart:5:11: Error: Expected ';' after this.
 //   final a kjsdf ksjdf ;
 //           ^^^^^
 //
-// org-dartlang-test:///main.dart:4:11: Error: Final field 'kjsdf' is not initialized.
+// org-dartlang-test:///main.dart:5:11: Error: Final field 'kjsdf' is not initialized.
 // Try to initialize the field in the declaration or in every constructor.
 //   final a kjsdf ksjdf ;
 //           ^^^^^
 //
-// org-dartlang-test:///main.dart:4:17: Error: Variables must be declared using the keywords 'const', 'final', 'var' or a type name.
+// org-dartlang-test:///main.dart:5:17: 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'.
 //   final a kjsdf ksjdf ;
 //                 ^^^^^
 //
-// org-dartlang-test:///main.dart:4:9: Error: 'a' isn't a type.
+// org-dartlang-test:///main.dart:5:9: Error: 'a' isn't a type.
 //   final a kjsdf ksjdf ;
 //         ^
 //
-// org-dartlang-test:///main.dart:4:9: Error: Type 'a' not found.
+// org-dartlang-test:///main.dart:5:9: Error: Type 'a' not found.
 //   final a kjsdf ksjdf ;
 //         ^
 //
-// org-dartlang-test:///main.dart:5:12: Error: 'a' isn't an instance field of this class.
+// org-dartlang-test:///main.dart:6:12: Error: 'a' isn't an instance field of this class.
 //   Foo(this.a);
 //            ^
 //
@@ -50,7 +50,7 @@
     final field invalid-type kjsdf = null;
     field dynamic ksjdf = null;
     constructor •(dynamic a) → main::Foo*
-      : final dynamic #t1 = invalid-expression "org-dartlang-test:///main.dart:5:12: Error: 'a' isn't an instance field of this class.\n  Foo(this.a);\n           ^"
+      : final dynamic #t1 = invalid-expression "org-dartlang-test:///main.dart:6:12: Error: 'a' isn't an instance field of this class.\n  Foo(this.a);\n           ^"
       ;
     abstract member-signature get _identityHashCode() → dart.core::int*; -> dart.core::Object::_identityHashCode
     abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → dart.core::bool*; -> dart.core::Object::_instanceOf
diff --git a/pkg/front_end/testcases/incremental/issue_41976.yaml b/pkg/front_end/testcases/incremental/issue_41976.yaml
index d8e31e8..ed856be 100644
--- a/pkg/front_end/testcases/incremental/issue_41976.yaml
+++ b/pkg/front_end/testcases/incremental/issue_41976.yaml
@@ -9,6 +9,7 @@
   - entry: foo.dart
     sources:
       foo.dart: |
+        // @dart=2.9
         abstract class Key {
           const factory Key(String value) = ValueKey;
           const Key.empty();
diff --git a/pkg/front_end/testcases/incremental/issue_42323.yaml b/pkg/front_end/testcases/incremental/issue_42323.yaml
index 747acd6..e731873 100644
--- a/pkg/front_end/testcases/incremental/issue_42323.yaml
+++ b/pkg/front_end/testcases/incremental/issue_42323.yaml
@@ -12,7 +12,6 @@
 nnbdMode: strong
 worlds:
   - entry: bin/runMe.dart
-    experiments: non-nullable
     enableStringReplacement: true
     sources:
       .dart_tool/package_config.json: |
diff --git a/pkg/front_end/testcases/incremental/issue_42323_prime.yaml b/pkg/front_end/testcases/incremental/issue_42323_prime.yaml
index 97d90ab..ce29481 100644
--- a/pkg/front_end/testcases/incremental/issue_42323_prime.yaml
+++ b/pkg/front_end/testcases/incremental/issue_42323_prime.yaml
@@ -12,7 +12,6 @@
 nnbdMode: strong
 worlds:
   - entry: bin/runMe.dart
-    experiments: non-nullable
     errors: true
     sources:
       .dart_tool/package_config.json: |
diff --git a/pkg/front_end/testcases/incremental/issue_44523.yaml b/pkg/front_end/testcases/incremental/issue_44523.yaml
index 63f5ae4..d7d4906 100644
--- a/pkg/front_end/testcases/incremental/issue_44523.yaml
+++ b/pkg/front_end/testcases/incremental/issue_44523.yaml
@@ -21,6 +21,7 @@
           ]
         }
       app/main.dart: |
+        // @dart=2.9
         import "package:flutter/lib1.dart";
         class _Bar extends RestorableProperty {}
       flutter/lib1.dart: |
diff --git a/pkg/front_end/testcases/incremental/issue_46666.yaml b/pkg/front_end/testcases/incremental/issue_46666.yaml
index 0ac3970..794df0d 100644
--- a/pkg/front_end/testcases/incremental/issue_46666.yaml
+++ b/pkg/front_end/testcases/incremental/issue_46666.yaml
@@ -7,7 +7,6 @@
 type: newworld
 worlds:
   - entry: b.dart
-    experiments: non-nullable
     sources:
       a.dart: |
         import 'dart:ffi';
@@ -45,7 +44,6 @@
     expectedLibraryCount: 2
 
   - entry: b.dart
-    experiments: non-nullable
     worldType: updated
     expectInitializeFromDill: false
     invalidate:
diff --git a/pkg/front_end/testcases/incremental/load_from_component_explicitly_import_dart_core.yaml b/pkg/front_end/testcases/incremental/load_from_component_explicitly_import_dart_core.yaml
index 6b88d9a..c2c104f 100644
--- a/pkg/front_end/testcases/incremental/load_from_component_explicitly_import_dart_core.yaml
+++ b/pkg/front_end/testcases/incremental/load_from_component_explicitly_import_dart_core.yaml
@@ -17,12 +17,14 @@
     warnings: false
     sources:
       main.dart: |
+        // @dart=2.9
         import "b.dart";
 
         main() {
           useString("hello");
         }
       b.dart: |
+        // @dart=2.9
         import "dart:core";
 
         void useString(String s) {
@@ -39,12 +41,14 @@
       - main.dart
     sources:
       main.dart: |
+        // @dart=2.9
         import "b.dart";
 
         main() {
           useString("hello");
         }
       b.dart: |
+        // @dart=2.9
         import "dart:core";
 
         void useString(String s) {
diff --git a/pkg/front_end/testcases/incremental/mixin_application_declares.yaml b/pkg/front_end/testcases/incremental/mixin_application_declares.yaml
index 81b1aa1..ac99df2 100644
--- a/pkg/front_end/testcases/incremental/mixin_application_declares.yaml
+++ b/pkg/front_end/testcases/incremental/mixin_application_declares.yaml
@@ -9,6 +9,7 @@
     experiments: alternative-invalidation-strategy
     sources:
       main_lib1.dart: |
+        // @dart=2.9
         class SuperClass {
           void method(covariant int i) {}
         }
@@ -19,12 +20,14 @@
 
         class Class extends SuperClass with Mixin {}
       main_lib2.dart: |
+        // @dart=2.9
         import 'main_lib1.dart';
 
         class SubClass extends Class {}
 
         method() => new SubClass().method(0);
       main.dart: |
+        // @dart=2.9
         import 'main_lib2.dart';
 
         main() {
@@ -39,6 +42,7 @@
       - main.dart
     sources:
       main.dart: |
+        // @dart=2.9
         import 'main_lib2.dart';
 
         main() {
@@ -55,6 +59,7 @@
       - main.dart
     sources:
       main.dart: |
+        // @dart=2.9
         import 'main_lib2.dart';
 
         main() {
diff --git a/pkg/front_end/testcases/incremental/mixin_from_sdk.yaml b/pkg/front_end/testcases/incremental/mixin_from_sdk.yaml
index 51be325..3e68b28 100644
--- a/pkg/front_end/testcases/incremental/mixin_from_sdk.yaml
+++ b/pkg/front_end/testcases/incremental/mixin_from_sdk.yaml
@@ -12,6 +12,7 @@
   - a.dart
 sources:
   a.dart: |
+    // @dart=2.9
     import 'dart:collection';
 
     class Foo extends Object with ListMixin<int> {
diff --git a/pkg/front_end/testcases/incremental/mixin_inferrer_error.yaml b/pkg/front_end/testcases/incremental/mixin_inferrer_error.yaml
index e760b10..c830e1c 100644
--- a/pkg/front_end/testcases/incremental/mixin_inferrer_error.yaml
+++ b/pkg/front_end/testcases/incremental/mixin_inferrer_error.yaml
@@ -10,6 +10,7 @@
   - entry: main.dart
     sources:
       main.dart: |
+        // @dart=2.9
         abstract class A<T> {}
         mixin M<T> on A<T> {}
         class C extends Object with M {}
diff --git a/pkg/front_end/testcases/incremental/mixin_inferrer_error.yaml.world.1.expect b/pkg/front_end/testcases/incremental/mixin_inferrer_error.yaml.world.1.expect
index 09119c7..3ff776a 100644
--- a/pkg/front_end/testcases/incremental/mixin_inferrer_error.yaml.world.1.expect
+++ b/pkg/front_end/testcases/incremental/mixin_inferrer_error.yaml.world.1.expect
@@ -3,14 +3,14 @@
 //
 // Problems in library:
 //
-// org-dartlang-test:///main.dart:3:7: Error: 'Object' doesn't implement 'A<dynamic>' so it can't be used with 'M<dynamic>'.
+// org-dartlang-test:///main.dart:4:7: Error: 'Object' doesn't implement 'A<dynamic>' so it can't be used with 'M<dynamic>'.
 //  - 'Object' is from 'dart:core'.
 //  - 'A' is from 'org-dartlang-test:///main.dart'.
 //  - 'M' is from 'org-dartlang-test:///main.dart'.
 // class C extends Object with M {}
 //       ^
 //
-// org-dartlang-test:///main.dart:3:7: Error: Type parameters couldn't be inferred for the mixin 'M' because 'Object' does not implement the mixin's supertype constraint 'A<T>'.
+// org-dartlang-test:///main.dart:4:7: Error: Type parameters couldn't be inferred for the mixin 'M' because 'Object' does not implement the mixin's supertype constraint 'A<T>'.
 //  - 'A' is from 'org-dartlang-test:///main.dart'.
 // class C extends Object with M {}
 //       ^
diff --git a/pkg/front_end/testcases/incremental/multiple_entriepoints.yaml b/pkg/front_end/testcases/incremental/multiple_entriepoints.yaml
index 0577118..6f4c9d8 100644
--- a/pkg/front_end/testcases/incremental/multiple_entriepoints.yaml
+++ b/pkg/front_end/testcases/incremental/multiple_entriepoints.yaml
@@ -12,14 +12,17 @@
       - b.dart
     sources:
       a.dart: |
+        // @dart=2.9
         a() {
           print("hello a");
         }
       b.dart: |
+        // @dart=2.9
         b() {
           print("hello b");
         }
       c.dart: |
+        // @dart=2.9
         b() {
           print("hello c (I'm not included!)");
         }
diff --git a/pkg/front_end/testcases/incremental/no_invalidate_on_export_of_main.yaml b/pkg/front_end/testcases/incremental/no_invalidate_on_export_of_main.yaml
index 5f3ac3c..5172413 100644
--- a/pkg/front_end/testcases/incremental/no_invalidate_on_export_of_main.yaml
+++ b/pkg/front_end/testcases/incremental/no_invalidate_on_export_of_main.yaml
@@ -10,6 +10,8 @@
 invalidate:
 sources:
   a.dart: |
+    // @dart=2.9
     export 'b.dart';
   b.dart: |
+    // @dart=2.9
     main() { print("hello"); }
\ No newline at end of file
diff --git a/pkg/front_end/testcases/incremental/no_outline_change_1.yaml b/pkg/front_end/testcases/incremental/no_outline_change_1.yaml
index 563d16c..378608c 100644
--- a/pkg/front_end/testcases/incremental/no_outline_change_1.yaml
+++ b/pkg/front_end/testcases/incremental/no_outline_change_1.yaml
@@ -10,11 +10,13 @@
     experiments: alternative-invalidation-strategy
     sources:
       actualMain.dart: |
+        // @dart=2.9
         import 'main.dart' as m;
         main() {
           m.main();
         }
       main.dart: |
+        // @dart=2.9
         import 'libA.dart';
 
         main() {
@@ -22,6 +24,7 @@
         }
         mainHello() {}
       libA.dart: |
+        // @dart=2.9
         import 'main.dart';
         import 'libB.dart';
         class Foo {}
@@ -30,6 +33,7 @@
           mainHello();
         }
       libB.dart: |
+        // @dart=2.9
         import 'libA.dart';
         class Bar {
           Foo foo;
@@ -44,6 +48,7 @@
       - main.dart
     sources:
       main.dart: |
+        // @dart=2.9
         import 'libA.dart';
 
         main() {
diff --git a/pkg/front_end/testcases/incremental/no_outline_change_10.yaml b/pkg/front_end/testcases/incremental/no_outline_change_10.yaml
index 10f6a6e..97dacaf 100644
--- a/pkg/front_end/testcases/incremental/no_outline_change_10.yaml
+++ b/pkg/front_end/testcases/incremental/no_outline_change_10.yaml
@@ -11,6 +11,7 @@
     experiments: alternative-invalidation-strategy
     sources:
       main.dart: |
+        // @dart=2.9
         import "lib1.dart";
         import "lib2.dart";
         import "lib3.dart";
@@ -20,12 +21,14 @@
           lib3Method(foo);
         }
       lib1.dart: |
+        // @dart=2.9
         class Foo {
           void fooMethod() {
             // Not filled out.
           }
         }
       lib2.dart: |
+        // @dart=2.9
         import "lib1.dart";
         class Bar extends Foo {
           void barMethod() {
@@ -33,6 +36,7 @@
           }
         }
       lib3.dart: |
+       // @dart=2.9
         import "lib1.dart";
         import "lib2.dart";
         void lib3Method(Foo foo) {
@@ -49,6 +53,7 @@
       - lib1.dart
     sources:
       lib1.dart: |
+        // @dart=2.9
         class Foo {
           void fooMethod() {
             print("fooMethod");
@@ -64,6 +69,7 @@
       - lib3.dart
     sources:
       lib3.dart: |
+        // @dart=2.9
         import "lib1.dart";
         import "lib2.dart";
         void lib3Method(Foo foo) {
diff --git a/pkg/front_end/testcases/incremental/no_outline_change_11.yaml b/pkg/front_end/testcases/incremental/no_outline_change_11.yaml
index e06e7d3..8d38adc 100644
--- a/pkg/front_end/testcases/incremental/no_outline_change_11.yaml
+++ b/pkg/front_end/testcases/incremental/no_outline_change_11.yaml
@@ -11,11 +11,13 @@
     experiments: alternative-invalidation-strategy
     sources:
       main.dart: |
+        // @dart=2.9
         import "lib1.dart";
         main() {
           libMethod();
         }
       lib1.dart: |
+        // @dart=2.9
         import "lib2.dart";
         class Foo {
           factory Foo() = Bar;
@@ -25,6 +27,7 @@
           Bar bar = new Bar();
         }
       lib2.dart: |
+        // @dart=2.9
         import "lib1.dart";
         class Bar implements Foo {
           Bar();
@@ -38,6 +41,7 @@
       - lib1.dart
     sources:
       lib1.dart: |
+        // @dart=2.9
         import "lib2.dart";
         class Foo {
           factory Foo() = Bar;
diff --git a/pkg/front_end/testcases/incremental/no_outline_change_12.yaml b/pkg/front_end/testcases/incremental/no_outline_change_12.yaml
index 24ee095..7249224 100644
--- a/pkg/front_end/testcases/incremental/no_outline_change_12.yaml
+++ b/pkg/front_end/testcases/incremental/no_outline_change_12.yaml
@@ -11,12 +11,14 @@
     experiments: alternative-invalidation-strategy
     sources:
       main.dart: |
+        // @dart=2.9
         import "lib2.dart" show Bar;
         import "lib1.dart" show Bar;
         main() {
           Bar bar = new Bar();
         }
       lib1.dart: |
+        // @dart=2.9
         export "lib2.dart";
         class Foo {
           Foo() {
@@ -24,6 +26,7 @@
           }
         }
       lib2.dart: |
+        // @dart=2.9
         class Bar {
           Bar() {
 
@@ -38,6 +41,7 @@
       - lib1.dart
     sources:
       lib1.dart: |
+        // @dart=2.9
         export "lib2.dart";
         class Foo {
           Foo() {
@@ -54,6 +58,7 @@
       - lib2.dart
     sources:
       lib2.dart: |
+        // @dart=2.9
         class Bar {
           Bar() {
             print("Bar!");
@@ -69,6 +74,7 @@
       - main.dart
     sources:
       main.dart: |
+        // @dart=2.9
         import "lib2.dart" show Bar;
         import "lib1.dart" show Bar;
         main() {
diff --git a/pkg/front_end/testcases/incremental/no_outline_change_13.yaml b/pkg/front_end/testcases/incremental/no_outline_change_13.yaml
index 10b1083..bcdc011 100644
--- a/pkg/front_end/testcases/incremental/no_outline_change_13.yaml
+++ b/pkg/front_end/testcases/incremental/no_outline_change_13.yaml
@@ -12,14 +12,17 @@
     experiments: alternative-invalidation-strategy
     sources:
       main.dart: |
+        // @dart=2.9
         import "lib1.dart" as prefix;
         main() {
           print(prefix.Foo.BAR);
         }
       lib1.dart: |
+        // @dart=2.9
         export "lib2.dart" show Foo;
         import "main.dart";
       lib2.dart: |
+        // @dart=2.9
         class Foo {
           static const Foo BAR = const Foo("BAR");
           const Foo(String x);
@@ -33,6 +36,7 @@
       - main.dart
     sources:
       main.dart: |
+        // @dart=2.9
         import "lib1.dart" as prefix;
         main() {
           print(prefix.Foo.BAR);
diff --git a/pkg/front_end/testcases/incremental/no_outline_change_14.yaml b/pkg/front_end/testcases/incremental/no_outline_change_14.yaml
index a33699a..cbce88b 100644
--- a/pkg/front_end/testcases/incremental/no_outline_change_14.yaml
+++ b/pkg/front_end/testcases/incremental/no_outline_change_14.yaml
@@ -11,16 +11,19 @@
     experiments: alternative-invalidation-strategy
     sources:
       main.dart: |
+        // @dart=2.9
         import "lib1.dart";
         abstract class Foo implements Bar {
           @override
           Foo get x;
         }
       lib1.dart: |
+        // @dart=2.9
         import "lib2.dart";
         abstract class Bar implements Baz {
         }
       lib2.dart: |
+        // @dart=2.9
         abstract class Baz {
           Baz get x;
         }
@@ -33,6 +36,7 @@
       - lib2.dart
     sources:
       lib2.dart: |
+        // @dart=2.9
         abstract class Baz {
           Baz get x;
         }
@@ -46,6 +50,7 @@
       - main.dart
     sources:
       main.dart: |
+        // @dart=2.9
         import "lib1.dart";
         abstract class Foo implements Bar {
           @override
diff --git a/pkg/front_end/testcases/incremental/no_outline_change_15.yaml b/pkg/front_end/testcases/incremental/no_outline_change_15.yaml
index 1ec3e65..fb7b2f9 100644
--- a/pkg/front_end/testcases/incremental/no_outline_change_15.yaml
+++ b/pkg/front_end/testcases/incremental/no_outline_change_15.yaml
@@ -11,12 +11,14 @@
     experiments: alternative-invalidation-strategy
     sources:
       main.dart: |
+        // @dart=2.9
         import "lib1.dart";
         abstract class C extends B implements A<int> {}
         main() {
           print("#1");
         }
       lib1.dart: |
+        // @dart=2.9
         class A<T> {
           foo(T t) {
             print("foo T $t");
@@ -37,6 +39,7 @@
       - main.dart
     sources:
       main.dart: |
+        // @dart=2.9
         import "lib1.dart";
         abstract class C extends B implements A<int> {}
         main() {
diff --git a/pkg/front_end/testcases/incremental/no_outline_change_16.yaml b/pkg/front_end/testcases/incremental/no_outline_change_16.yaml
index 856ce6a..202a3e0 100644
--- a/pkg/front_end/testcases/incremental/no_outline_change_16.yaml
+++ b/pkg/front_end/testcases/incremental/no_outline_change_16.yaml
@@ -11,6 +11,7 @@
     experiments: alternative-invalidation-strategy
     sources:
       main.dart: |
+        // @dart=2.9
         import "lib1.dart";
         class Foo1 extends Bar {
           noSuchMethod(Invocation msg) {
@@ -23,6 +24,7 @@
           }
         }
       lib1.dart: |
+        // @dart=2.9
         abstract class Bar {
           void method();
           bool get getter;
@@ -38,6 +40,7 @@
       - main.dart
     sources:
       main.dart: |
+        // @dart=2.9
         import "lib1.dart";
         class Foo1 extends Bar {
           noSuchMethod(Invocation msg) {
diff --git a/pkg/front_end/testcases/incremental/no_outline_change_17.yaml b/pkg/front_end/testcases/incremental/no_outline_change_17.yaml
index c2fe2c1..1648959 100644
--- a/pkg/front_end/testcases/incremental/no_outline_change_17.yaml
+++ b/pkg/front_end/testcases/incremental/no_outline_change_17.yaml
@@ -11,12 +11,14 @@
     experiments: alternative-invalidation-strategy
     sources:
       main.dart: |
+        // @dart=2.9
         import "lib.dart" deferred as foo;
         main() {
           var f = foo.loadLibrary;
           f();
         }
       lib.dart: |
+        // @dart=2.9
         foo() {
           print("foo!");
         }
@@ -29,6 +31,7 @@
       - main.dart
     sources:
       main.dart: |
+        // @dart=2.9
         import "lib.dart" deferred as foo;
         main() {
           var f = foo.loadLibrary;
diff --git a/pkg/front_end/testcases/incremental/no_outline_change_18.yaml b/pkg/front_end/testcases/incremental/no_outline_change_18.yaml
index dd099b7..ace7dba 100644
--- a/pkg/front_end/testcases/incremental/no_outline_change_18.yaml
+++ b/pkg/front_end/testcases/incremental/no_outline_change_18.yaml
@@ -12,16 +12,19 @@
     experiments: alternative-invalidation-strategy
     sources:
       main.dart: |
+        // @dart=2.9
         export "lib1.dart" show x;
         export "lib2.dart" show x;
         main() {
           print("exports")
         }
       lib1.dart: |
+        // @dart=2.9
         x() {
           print("lib1.x!");
         }
       lib2.dart: |
+        // @dart=2.9
         x() {
           print("lib2.x!");
         }
@@ -35,6 +38,7 @@
       - main.dart
     sources:
       main.dart: |
+        // @dart=2.9
         export "lib1.dart" show x;
         export "lib2.dart" show x;
         main() {
diff --git a/pkg/front_end/testcases/incremental/no_outline_change_18.yaml.world.1.expect b/pkg/front_end/testcases/incremental/no_outline_change_18.yaml.world.1.expect
index bc3a9bc..92cbad1 100644
--- a/pkg/front_end/testcases/incremental/no_outline_change_18.yaml.world.1.expect
+++ b/pkg/front_end/testcases/incremental/no_outline_change_18.yaml.world.1.expect
@@ -15,11 +15,11 @@
 //
 // Problems in library:
 //
-// org-dartlang-test:///main.dart:2:1: Error: 'x' is exported from both 'org-dartlang-test:///lib1.dart' and 'org-dartlang-test:///lib2.dart'.
+// org-dartlang-test:///main.dart:3:1: Error: 'x' is exported from both 'org-dartlang-test:///lib1.dart' and 'org-dartlang-test:///lib2.dart'.
 // export "lib2.dart" show x;
 // ^
 //
-// org-dartlang-test:///main.dart:4:18: Error: Expected ';' after this.
+// org-dartlang-test:///main.dart:5:18: Error: Expected ';' after this.
 //   print("exports")
 //                  ^
 //
diff --git a/pkg/front_end/testcases/incremental/no_outline_change_18.yaml.world.2.expect b/pkg/front_end/testcases/incremental/no_outline_change_18.yaml.world.2.expect
index 2387ec3..458ee49 100644
--- a/pkg/front_end/testcases/incremental/no_outline_change_18.yaml.world.2.expect
+++ b/pkg/front_end/testcases/incremental/no_outline_change_18.yaml.world.2.expect
@@ -15,11 +15,11 @@
 //
 // Problems in library:
 //
-// org-dartlang-test:///main.dart:2:1: Error: 'x' is exported from both 'org-dartlang-test:///lib1.dart' and 'org-dartlang-test:///lib2.dart'.
+// org-dartlang-test:///main.dart:3:1: Error: 'x' is exported from both 'org-dartlang-test:///lib1.dart' and 'org-dartlang-test:///lib2.dart'.
 // export "lib2.dart" show x;
 // ^
 //
-// org-dartlang-test:///main.dart:4:19: Error: Expected ';' after this.
+// org-dartlang-test:///main.dart:5:19: Error: Expected ';' after this.
 //   print("exports!")
 //                   ^
 //
diff --git a/pkg/front_end/testcases/incremental/no_outline_change_19.yaml b/pkg/front_end/testcases/incremental/no_outline_change_19.yaml
index f9251d2..8fd792f 100644
--- a/pkg/front_end/testcases/incremental/no_outline_change_19.yaml
+++ b/pkg/front_end/testcases/incremental/no_outline_change_19.yaml
@@ -11,6 +11,7 @@
     experiments: alternative-invalidation-strategy
     sources:
       main.dart: |
+        // @dart=2.9
         class A1 {}
 
         extension A2 on A1 {
@@ -36,6 +37,7 @@
       - main.dart
     sources:
       main.dart: |
+        // @dart=2.9
         class A1 {}
 
         extension A2 on A1 {
diff --git a/pkg/front_end/testcases/incremental/no_outline_change_2.yaml b/pkg/front_end/testcases/incremental/no_outline_change_2.yaml
index 861576b..13340c8 100644
--- a/pkg/front_end/testcases/incremental/no_outline_change_2.yaml
+++ b/pkg/front_end/testcases/incremental/no_outline_change_2.yaml
@@ -10,6 +10,7 @@
     experiments: alternative-invalidation-strategy
     sources:
       main.dart: |
+        // @dart=2.9
         import 'libA.dart';
 
         class Foo {
@@ -28,6 +29,7 @@
 
         enum CompilationStrategy { direct, toKernel, toData, fromData }
       libA.dart: |
+        // @dart=2.9
         import 'main.dart';
         whatever(Foo foo) {
           print(foo);
@@ -41,6 +43,7 @@
       - main.dart
     sources:
       main.dart: |
+        // @dart=2.9
         import 'libA.dart';
 
         class Foo {
diff --git a/pkg/front_end/testcases/incremental/no_outline_change_20.yaml b/pkg/front_end/testcases/incremental/no_outline_change_20.yaml
index f92ccb9..f94ccd0 100644
--- a/pkg/front_end/testcases/incremental/no_outline_change_20.yaml
+++ b/pkg/front_end/testcases/incremental/no_outline_change_20.yaml
@@ -11,6 +11,7 @@
     experiments: alternative-invalidation-strategy
     sources:
       main.dart: |
+        // @dart=2.9
         class A1 {}
 
         extension on A1 {
@@ -34,6 +35,7 @@
       - main.dart
     sources:
       main.dart: |
+        // @dart=2.9
         class A1 {}
 
         extension on A1 {
diff --git a/pkg/front_end/testcases/incremental/no_outline_change_21.yaml b/pkg/front_end/testcases/incremental/no_outline_change_21.yaml
index 23a30cf..e6f6805 100644
--- a/pkg/front_end/testcases/incremental/no_outline_change_21.yaml
+++ b/pkg/front_end/testcases/incremental/no_outline_change_21.yaml
@@ -13,6 +13,7 @@
     experiments: alternative-invalidation-strategy
     sources:
       main.dart: |
+        // @dart=2.9
         class A1 {
           A1.foo1(){}
           A1.foo1(){}
@@ -31,6 +32,7 @@
       - main.dart
     sources:
       main.dart: |
+        // @dart=2.9
         class A1 {
           A1.foo1(){}
           A1.foo1(){}
diff --git a/pkg/front_end/testcases/incremental/no_outline_change_21.yaml.world.1.expect b/pkg/front_end/testcases/incremental/no_outline_change_21.yaml.world.1.expect
index 9ba9d65..ae0225e 100644
--- a/pkg/front_end/testcases/incremental/no_outline_change_21.yaml.world.1.expect
+++ b/pkg/front_end/testcases/incremental/no_outline_change_21.yaml.world.1.expect
@@ -3,24 +3,24 @@
 //
 // Problems in library:
 //
-// org-dartlang-test:///main.dart:3:3: Error: 'A1.foo1' is already declared in this scope.
+// org-dartlang-test:///main.dart:4:3: Error: 'A1.foo1' is already declared in this scope.
 //   A1.foo1(){}
 //   ^^^^^^^
-// org-dartlang-test:///main.dart:2:3: Context: Previous declaration of 'A1.foo1'.
+// org-dartlang-test:///main.dart:3:3: Context: Previous declaration of 'A1.foo1'.
 //   A1.foo1(){}
 //   ^^^^^^^
 //
-// org-dartlang-test:///main.dart:5:7: Error: 'A1' is already declared in this scope.
+// org-dartlang-test:///main.dart:6:7: Error: 'A1' is already declared in this scope.
 // class A1 {
 //       ^^
-// org-dartlang-test:///main.dart:1:7: Context: Previous declaration of 'A1'.
+// org-dartlang-test:///main.dart:2:7: Context: Previous declaration of 'A1'.
 // class A1 {
 //       ^^
 //
-// org-dartlang-test:///main.dart:7:3: Error: 'A1.foo2' is already declared in this scope.
+// org-dartlang-test:///main.dart:8:3: Error: 'A1.foo2' is already declared in this scope.
 //   A1.foo2(){}
 //   ^^^^^^^
-// org-dartlang-test:///main.dart:6:3: Context: Previous declaration of 'A1.foo2'.
+// org-dartlang-test:///main.dart:7:3: Context: Previous declaration of 'A1.foo2'.
 //   A1.foo2(){}
 //   ^^^^^^^
 //
diff --git a/pkg/front_end/testcases/incremental/no_outline_change_21.yaml.world.2.expect b/pkg/front_end/testcases/incremental/no_outline_change_21.yaml.world.2.expect
index 9ba9d65..ae0225e 100644
--- a/pkg/front_end/testcases/incremental/no_outline_change_21.yaml.world.2.expect
+++ b/pkg/front_end/testcases/incremental/no_outline_change_21.yaml.world.2.expect
@@ -3,24 +3,24 @@
 //
 // Problems in library:
 //
-// org-dartlang-test:///main.dart:3:3: Error: 'A1.foo1' is already declared in this scope.
+// org-dartlang-test:///main.dart:4:3: Error: 'A1.foo1' is already declared in this scope.
 //   A1.foo1(){}
 //   ^^^^^^^
-// org-dartlang-test:///main.dart:2:3: Context: Previous declaration of 'A1.foo1'.
+// org-dartlang-test:///main.dart:3:3: Context: Previous declaration of 'A1.foo1'.
 //   A1.foo1(){}
 //   ^^^^^^^
 //
-// org-dartlang-test:///main.dart:5:7: Error: 'A1' is already declared in this scope.
+// org-dartlang-test:///main.dart:6:7: Error: 'A1' is already declared in this scope.
 // class A1 {
 //       ^^
-// org-dartlang-test:///main.dart:1:7: Context: Previous declaration of 'A1'.
+// org-dartlang-test:///main.dart:2:7: Context: Previous declaration of 'A1'.
 // class A1 {
 //       ^^
 //
-// org-dartlang-test:///main.dart:7:3: Error: 'A1.foo2' is already declared in this scope.
+// org-dartlang-test:///main.dart:8:3: Error: 'A1.foo2' is already declared in this scope.
 //   A1.foo2(){}
 //   ^^^^^^^
-// org-dartlang-test:///main.dart:6:3: Context: Previous declaration of 'A1.foo2'.
+// org-dartlang-test:///main.dart:7:3: Context: Previous declaration of 'A1.foo2'.
 //   A1.foo2(){}
 //   ^^^^^^^
 //
diff --git a/pkg/front_end/testcases/incremental/no_outline_change_22.yaml b/pkg/front_end/testcases/incremental/no_outline_change_22.yaml
index 244a23c..ff2b2b8 100644
--- a/pkg/front_end/testcases/incremental/no_outline_change_22.yaml
+++ b/pkg/front_end/testcases/incremental/no_outline_change_22.yaml
@@ -11,6 +11,7 @@
     experiments: alternative-invalidation-strategy
     sources:
       main.dart: |
+        // @dart=2.9
         import 'dart:collection' show ListMixin;
         class WithListMixin extends Object with ListMixin<int> {
           int length = 2;
@@ -26,6 +27,7 @@
       - main.dart
     sources:
       main.dart: |
+        // @dart=2.9
         import 'dart:collection' show ListMixin;
         class WithListMixin extends Object with ListMixin<int> {
           int length = 2;
diff --git a/pkg/front_end/testcases/incremental/no_outline_change_23.yaml b/pkg/front_end/testcases/incremental/no_outline_change_23.yaml
index 30b121e..17f8538 100644
--- a/pkg/front_end/testcases/incremental/no_outline_change_23.yaml
+++ b/pkg/front_end/testcases/incremental/no_outline_change_23.yaml
@@ -11,6 +11,7 @@
     experiments: alternative-invalidation-strategy
     sources:
       main.dart: |
+        // @dart=2.9
         class A extends Object with B {
           foo() {}
         }
@@ -26,6 +27,7 @@
       - main.dart
     sources:
       main.dart: |
+        // @dart=2.9
         class A extends Object with B {
           foo() {}
         }
diff --git a/pkg/front_end/testcases/incremental/no_outline_change_24.yaml b/pkg/front_end/testcases/incremental/no_outline_change_24.yaml
index a68ba95..3ddee3f 100644
--- a/pkg/front_end/testcases/incremental/no_outline_change_24.yaml
+++ b/pkg/front_end/testcases/incremental/no_outline_change_24.yaml
@@ -13,6 +13,7 @@
     experiments: alternative-invalidation-strategy
     sources:
       main.dart: |
+        // @dart=2.9
         void foo() {}
         void foo() {}
     expectedLibraryCount: 1
@@ -25,6 +26,7 @@
       - main.dart
     sources:
       main.dart: |
+        // @dart=2.9
         void foo() {}
         void foo() {}
     expectedLibraryCount: 1
diff --git a/pkg/front_end/testcases/incremental/no_outline_change_24.yaml.world.1.expect b/pkg/front_end/testcases/incremental/no_outline_change_24.yaml.world.1.expect
index c62e3af..69cda08 100644
--- a/pkg/front_end/testcases/incremental/no_outline_change_24.yaml.world.1.expect
+++ b/pkg/front_end/testcases/incremental/no_outline_change_24.yaml.world.1.expect
@@ -3,10 +3,10 @@
 //
 // Problems in library:
 //
-// org-dartlang-test:///main.dart:2:6: Error: 'foo' is already declared in this scope.
+// org-dartlang-test:///main.dart:3:6: Error: 'foo' is already declared in this scope.
 // void foo() {}
 //      ^^^
-// org-dartlang-test:///main.dart:1:6: Context: Previous declaration of 'foo'.
+// org-dartlang-test:///main.dart:2:6: Context: Previous declaration of 'foo'.
 // void foo() {}
 //      ^^^
 //
diff --git a/pkg/front_end/testcases/incremental/no_outline_change_24.yaml.world.2.expect b/pkg/front_end/testcases/incremental/no_outline_change_24.yaml.world.2.expect
index c62e3af..69cda08 100644
--- a/pkg/front_end/testcases/incremental/no_outline_change_24.yaml.world.2.expect
+++ b/pkg/front_end/testcases/incremental/no_outline_change_24.yaml.world.2.expect
@@ -3,10 +3,10 @@
 //
 // Problems in library:
 //
-// org-dartlang-test:///main.dart:2:6: Error: 'foo' is already declared in this scope.
+// org-dartlang-test:///main.dart:3:6: Error: 'foo' is already declared in this scope.
 // void foo() {}
 //      ^^^
-// org-dartlang-test:///main.dart:1:6: Context: Previous declaration of 'foo'.
+// org-dartlang-test:///main.dart:2:6: Context: Previous declaration of 'foo'.
 // void foo() {}
 //      ^^^
 //
diff --git a/pkg/front_end/testcases/incremental/no_outline_change_25.yaml b/pkg/front_end/testcases/incremental/no_outline_change_25.yaml
index e364005..8db1940 100644
--- a/pkg/front_end/testcases/incremental/no_outline_change_25.yaml
+++ b/pkg/front_end/testcases/incremental/no_outline_change_25.yaml
@@ -15,6 +15,7 @@
     experiments: alternative-invalidation-strategy
     sources:
       main.dart: |
+        // @dart=2.9
         class Foo {
           void bar() {
             print("bar 1");
@@ -36,6 +37,7 @@
       - main.dart
     sources:
       main.dart: |
+        // @dart=2.9
         class Foo {
           void bar() {
             print("bar 1");
diff --git a/pkg/front_end/testcases/incremental/no_outline_change_25.yaml.world.1.expect b/pkg/front_end/testcases/incremental/no_outline_change_25.yaml.world.1.expect
index 7e300e4..3d25246 100644
--- a/pkg/front_end/testcases/incremental/no_outline_change_25.yaml.world.1.expect
+++ b/pkg/front_end/testcases/incremental/no_outline_change_25.yaml.world.1.expect
@@ -3,17 +3,17 @@
 //
 // Problems in library:
 //
-// org-dartlang-test:///main.dart:5:8: Error: 'bar' is already declared in this scope.
-//   void bar() {
-//        ^^^
-// org-dartlang-test:///main.dart:2:8: Context: Previous declaration of 'bar'.
-//   void bar() {
-//        ^^^
-//
-// org-dartlang-test:///main.dart:9:5: Error: Can't use 'bar' because it is declared more than once.
+// org-dartlang-test:///main.dart:10:5: Error: Can't use 'bar' because it is declared more than once.
 //     bar();
 //     ^
 //
+// org-dartlang-test:///main.dart:6:8: Error: 'bar' is already declared in this scope.
+//   void bar() {
+//        ^^^
+// org-dartlang-test:///main.dart:3:8: Context: Previous declaration of 'bar'.
+//   void bar() {
+//        ^^^
+//
 
   class Foo extends dart.core::Object {
     synthetic constructor •() → main::Foo*
@@ -23,7 +23,7 @@
       dart.core::print("bar 1");
     }
     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    ^"{dynamic}.call();
+      invalid-expression "org-dartlang-test:///main.dart:10:5: Error: Can't use 'bar' because it is declared more than once.\n    bar();\n    ^"{dynamic}.call();
     }
     abstract member-signature get _identityHashCode() → dart.core::int*; -> dart.core::Object::_identityHashCode
     abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → dart.core::bool*; -> dart.core::Object::_instanceOf
diff --git a/pkg/front_end/testcases/incremental/no_outline_change_25.yaml.world.2.expect b/pkg/front_end/testcases/incremental/no_outline_change_25.yaml.world.2.expect
index 7e300e4..3d25246 100644
--- a/pkg/front_end/testcases/incremental/no_outline_change_25.yaml.world.2.expect
+++ b/pkg/front_end/testcases/incremental/no_outline_change_25.yaml.world.2.expect
@@ -3,17 +3,17 @@
 //
 // Problems in library:
 //
-// org-dartlang-test:///main.dart:5:8: Error: 'bar' is already declared in this scope.
-//   void bar() {
-//        ^^^
-// org-dartlang-test:///main.dart:2:8: Context: Previous declaration of 'bar'.
-//   void bar() {
-//        ^^^
-//
-// org-dartlang-test:///main.dart:9:5: Error: Can't use 'bar' because it is declared more than once.
+// org-dartlang-test:///main.dart:10:5: Error: Can't use 'bar' because it is declared more than once.
 //     bar();
 //     ^
 //
+// org-dartlang-test:///main.dart:6:8: Error: 'bar' is already declared in this scope.
+//   void bar() {
+//        ^^^
+// org-dartlang-test:///main.dart:3:8: Context: Previous declaration of 'bar'.
+//   void bar() {
+//        ^^^
+//
 
   class Foo extends dart.core::Object {
     synthetic constructor •() → main::Foo*
@@ -23,7 +23,7 @@
       dart.core::print("bar 1");
     }
     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    ^"{dynamic}.call();
+      invalid-expression "org-dartlang-test:///main.dart:10:5: Error: Can't use 'bar' because it is declared more than once.\n    bar();\n    ^"{dynamic}.call();
     }
     abstract member-signature get _identityHashCode() → dart.core::int*; -> dart.core::Object::_identityHashCode
     abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → dart.core::bool*; -> dart.core::Object::_instanceOf
diff --git a/pkg/front_end/testcases/incremental/no_outline_change_26.yaml b/pkg/front_end/testcases/incremental/no_outline_change_26.yaml
index 6fe95fa..cbfff15 100644
--- a/pkg/front_end/testcases/incremental/no_outline_change_26.yaml
+++ b/pkg/front_end/testcases/incremental/no_outline_change_26.yaml
@@ -15,6 +15,7 @@
     experiments: alternative-invalidation-strategy
     sources:
       main.dart: |
+        // @dart=2.9
         class A1 {
           A1.foo(){}
           A1.foo(){}
@@ -32,6 +33,7 @@
       - main.dart
     sources:
       main.dart: |
+        // @dart=2.9
         class A1 {
           A1.foo(){}
           A1.foo(){}
diff --git a/pkg/front_end/testcases/incremental/no_outline_change_26.yaml.world.1.expect b/pkg/front_end/testcases/incremental/no_outline_change_26.yaml.world.1.expect
index 22db75d..df38521 100644
--- a/pkg/front_end/testcases/incremental/no_outline_change_26.yaml.world.1.expect
+++ b/pkg/front_end/testcases/incremental/no_outline_change_26.yaml.world.1.expect
@@ -3,14 +3,14 @@
 //
 // Problems in library:
 //
-// org-dartlang-test:///main.dart:3:3: Error: 'A1.foo' is already declared in this scope.
+// org-dartlang-test:///main.dart:4:3: Error: 'A1.foo' is already declared in this scope.
 //   A1.foo(){}
 //   ^^^^^^
-// org-dartlang-test:///main.dart:2:3: Context: Previous declaration of 'A1.foo'.
+// org-dartlang-test:///main.dart:3:3: Context: Previous declaration of 'A1.foo'.
 //   A1.foo(){}
 //   ^^^^^^
 //
-// org-dartlang-test:///main.dart:6:7: Error: Can't use 'foo' because it is declared more than once.
+// org-dartlang-test:///main.dart:7:7: Error: Can't use 'foo' because it is declared more than once.
 //   new A1.foo();
 //       ^
 //
@@ -30,6 +30,6 @@
     abstract member-signature get runtimeType() → dart.core::Type*; -> dart.core::Object::runtimeType
   }
   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      ^";
+    invalid-expression "org-dartlang-test:///main.dart:7: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/no_outline_change_26.yaml.world.2.expect b/pkg/front_end/testcases/incremental/no_outline_change_26.yaml.world.2.expect
index 22db75d..df38521 100644
--- a/pkg/front_end/testcases/incremental/no_outline_change_26.yaml.world.2.expect
+++ b/pkg/front_end/testcases/incremental/no_outline_change_26.yaml.world.2.expect
@@ -3,14 +3,14 @@
 //
 // Problems in library:
 //
-// org-dartlang-test:///main.dart:3:3: Error: 'A1.foo' is already declared in this scope.
+// org-dartlang-test:///main.dart:4:3: Error: 'A1.foo' is already declared in this scope.
 //   A1.foo(){}
 //   ^^^^^^
-// org-dartlang-test:///main.dart:2:3: Context: Previous declaration of 'A1.foo'.
+// org-dartlang-test:///main.dart:3:3: Context: Previous declaration of 'A1.foo'.
 //   A1.foo(){}
 //   ^^^^^^
 //
-// org-dartlang-test:///main.dart:6:7: Error: Can't use 'foo' because it is declared more than once.
+// org-dartlang-test:///main.dart:7:7: Error: Can't use 'foo' because it is declared more than once.
 //   new A1.foo();
 //       ^
 //
@@ -30,6 +30,6 @@
     abstract member-signature get runtimeType() → dart.core::Type*; -> dart.core::Object::runtimeType
   }
   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      ^";
+    invalid-expression "org-dartlang-test:///main.dart:7: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/no_outline_change_27.yaml b/pkg/front_end/testcases/incremental/no_outline_change_27.yaml
index 933c328..ca31b68 100644
--- a/pkg/front_end/testcases/incremental/no_outline_change_27.yaml
+++ b/pkg/front_end/testcases/incremental/no_outline_change_27.yaml
@@ -12,11 +12,13 @@
     experiments: alternative-invalidation-strategy
     sources:
       main.dart: |
+        // @dart=2.9
         import "lib.dart";
         main() {
           libMethod();
         }
       lib.dart: |
+        // @dart=2.9
         libMethod() {
           print("Hello from lib!");
         }
@@ -32,6 +34,7 @@
       - main.dart
     sources:
       main.dart: |
+        // @dart=2.9
         import "lib.dart";
         main() {
           libMethod();
@@ -48,6 +51,7 @@
       - lib.dart
     sources:
       lib.dart: |
+        // @dart=2.9
         libMethod() {
           print("Hello from lib!!");
         }
diff --git a/pkg/front_end/testcases/incremental/no_outline_change_28.yaml b/pkg/front_end/testcases/incremental/no_outline_change_28.yaml
index 091f7c5..ead8930 100644
--- a/pkg/front_end/testcases/incremental/no_outline_change_28.yaml
+++ b/pkg/front_end/testcases/incremental/no_outline_change_28.yaml
@@ -11,6 +11,7 @@
     experiments: alternative-invalidation-strategy
     sources:
       main.dart: |
+        // @dart=2.9
         abstract class A {
           a() {
             print("Class A method a");
@@ -52,6 +53,7 @@
       - main.dart
     sources:
       main.dart: |
+        // @dart=2.9
         abstract class A {
           a() {
             print("Class A method a!");
diff --git a/pkg/front_end/testcases/incremental/no_outline_change_29.yaml b/pkg/front_end/testcases/incremental/no_outline_change_29.yaml
index 937e2cf..ba86755 100644
--- a/pkg/front_end/testcases/incremental/no_outline_change_29.yaml
+++ b/pkg/front_end/testcases/incremental/no_outline_change_29.yaml
@@ -9,7 +9,7 @@
 forceLateLoweringForTesting: true
 worlds:
   - entry: main.dart
-    experiments: non-nullable,alternative-invalidation-strategy
+    experiments: alternative-invalidation-strategy
     sources:
       main.dart: |
         late int? field1 = 42;
@@ -32,7 +32,7 @@
         }
     expectedLibraryCount: 1
   - entry: main.dart
-    experiments: non-nullable,alternative-invalidation-strategy
+    experiments: alternative-invalidation-strategy
     worldType: updated
     expectInitializeFromDill: false
     invalidate:
diff --git a/pkg/front_end/testcases/incremental/no_outline_change_3.yaml b/pkg/front_end/testcases/incremental/no_outline_change_3.yaml
index 278e445..7e1bfa9 100644
--- a/pkg/front_end/testcases/incremental/no_outline_change_3.yaml
+++ b/pkg/front_end/testcases/incremental/no_outline_change_3.yaml
@@ -10,6 +10,7 @@
     experiments: alternative-invalidation-strategy
     sources:
       main.dart: |
+        // @dart=2.9
         import 'libA.dart';
 
         class Foo {
@@ -23,6 +24,7 @@
           print(const Foo());
         }
       libA.dart: |
+        // @dart=2.9
         whatever() async {
           await null;
           return "hello";
@@ -36,6 +38,7 @@
       - main.dart
     sources:
       main.dart: |
+        // @dart=2.9
         import 'libA.dart';
 
         class Foo {
diff --git a/pkg/front_end/testcases/incremental/no_outline_change_30.yaml b/pkg/front_end/testcases/incremental/no_outline_change_30.yaml
index 8927356..93f336e 100644
--- a/pkg/front_end/testcases/incremental/no_outline_change_30.yaml
+++ b/pkg/front_end/testcases/incremental/no_outline_change_30.yaml
@@ -9,7 +9,7 @@
 forceLateLoweringForTesting: false
 worlds:
   - entry: main.dart
-    experiments: non-nullable,alternative-invalidation-strategy
+    experiments: alternative-invalidation-strategy
     sources:
       main.dart: |
         late int? field1 = 42;
@@ -32,7 +32,7 @@
         }
     expectedLibraryCount: 1
   - entry: main.dart
-    experiments: non-nullable,alternative-invalidation-strategy
+    experiments: alternative-invalidation-strategy
     worldType: updated
     expectInitializeFromDill: false
     invalidate:
diff --git a/pkg/front_end/testcases/incremental/no_outline_change_31.yaml b/pkg/front_end/testcases/incremental/no_outline_change_31.yaml
index 3405708..0d0e7ab 100644
--- a/pkg/front_end/testcases/incremental/no_outline_change_31.yaml
+++ b/pkg/front_end/testcases/incremental/no_outline_change_31.yaml
@@ -9,7 +9,7 @@
 forceLateLoweringForTesting: true
 worlds:
   - entry: main.dart
-    experiments: non-nullable,alternative-invalidation-strategy
+    experiments: alternative-invalidation-strategy
     sources:
       main.dart: |
         late int? field1 = 42;
@@ -29,7 +29,7 @@
         }
     expectedLibraryCount: 1
   - entry: main.dart
-    experiments: non-nullable,alternative-invalidation-strategy
+    experiments: alternative-invalidation-strategy
     worldType: updated
     expectInitializeFromDill: false
     invalidate:
diff --git a/pkg/front_end/testcases/incremental/no_outline_change_32.yaml b/pkg/front_end/testcases/incremental/no_outline_change_32.yaml
index a863872..f4bbb81 100644
--- a/pkg/front_end/testcases/incremental/no_outline_change_32.yaml
+++ b/pkg/front_end/testcases/incremental/no_outline_change_32.yaml
@@ -9,7 +9,7 @@
 forceLateLoweringForTesting: false
 worlds:
   - entry: main.dart
-    experiments: non-nullable,alternative-invalidation-strategy
+    experiments: alternative-invalidation-strategy
     sources:
       main.dart: |
         late int? field1 = 42;
@@ -29,7 +29,7 @@
         }
     expectedLibraryCount: 1
   - entry: main.dart
-    experiments: non-nullable,alternative-invalidation-strategy
+    experiments: alternative-invalidation-strategy
     worldType: updated
     expectInitializeFromDill: false
     invalidate:
diff --git a/pkg/front_end/testcases/incremental/no_outline_change_33.yaml b/pkg/front_end/testcases/incremental/no_outline_change_33.yaml
index c8fa4c6..1f532f7 100644
--- a/pkg/front_end/testcases/incremental/no_outline_change_33.yaml
+++ b/pkg/front_end/testcases/incremental/no_outline_change_33.yaml
@@ -11,6 +11,7 @@
     experiments: alternative-invalidation-strategy
     sources:
       main.dart: |
+        // @dart=2.9
         import "lib2.dart" show getter, setter, method, Bar;
         import "lib1.dart" show getter, setter, method, Bar;
         main() {
@@ -20,6 +21,7 @@
           setter = 42;
         }
       lib1.dart: |
+        // @dart=2.9
         export "lib2.dart";
         class Foo {
           Foo() {
@@ -27,6 +29,7 @@
           }
         }
       lib2.dart: |
+        // @dart=2.9
         String get getter => "hello";
         void set setter(int i) {}
         void method() {}
@@ -44,6 +47,7 @@
       - lib1.dart
     sources:
       lib1.dart: |
+        // @dart=2.9
         export "lib2.dart";
         class Foo {
           Foo() {
@@ -60,6 +64,7 @@
       - lib2.dart
     sources:
       lib2.dart: |
+        // @dart=2.9
         String get getter => "hello";
         void set setter(int i) {}
         void method() {}
@@ -78,6 +83,7 @@
       - main.dart
     sources:
       main.dart: |
+        // @dart=2.9
         import "lib2.dart" show getter, setter, method, Bar;
         import "lib1.dart" show getter, setter, method, Bar;
         main() {
diff --git a/pkg/front_end/testcases/incremental/no_outline_change_34.yaml b/pkg/front_end/testcases/incremental/no_outline_change_34.yaml
index 2f11a3e..7bca389 100644
--- a/pkg/front_end/testcases/incremental/no_outline_change_34.yaml
+++ b/pkg/front_end/testcases/incremental/no_outline_change_34.yaml
@@ -11,6 +11,7 @@
     experiments: alternative-invalidation-strategy
     sources:
       main.dart: |
+        // @dart=2.9
         import "lib1.dart";
         import "lib1.dart" as l1;
         import "lib2.dart";
@@ -26,6 +27,7 @@
           lib1();
         }
       lib1.dart: |
+        // @dart=2.9
         export "main.dart";
         import "main.dart";
         import "main.dart" as m;
@@ -38,6 +40,7 @@
           a.method2();
         }
       lib2.dart: |
+        // @dart=2.9
         import "lib1.dart";
         import "lib1.dart" as l1;
         extension Extension3 on Class {
@@ -57,6 +60,7 @@
       - main.dart
     sources:
       main.dart: |
+        // @dart=2.9
         import "lib1.dart";
         import "lib1.dart" as l1;
         import "lib2.dart";
@@ -82,6 +86,7 @@
       - lib2.dart
     sources:
       lib2.dart: |
+        // @dart=2.9
         import "lib1.dart";
         import "lib1.dart" as l1;
         extension Extension3 on Class {
@@ -103,6 +108,7 @@
       - lib1.dart
     sources:
       lib1.dart: |
+        // @dart=2.9
         export "main.dart";
         import "main.dart";
         import "main.dart" as m;
diff --git a/pkg/front_end/testcases/incremental/no_outline_change_35.yaml b/pkg/front_end/testcases/incremental/no_outline_change_35.yaml
index e422ff5..41c5896 100644
--- a/pkg/front_end/testcases/incremental/no_outline_change_35.yaml
+++ b/pkg/front_end/testcases/incremental/no_outline_change_35.yaml
@@ -12,6 +12,7 @@
     experiments: alternative-invalidation-strategy
     sources:
       main.dart: |
+        // @dart=2.9
         import 'lib.dart';
 
         main() {
@@ -21,6 +22,7 @@
           print(coordinate.next);
         }
       lib.dart: |
+        // @dart=2.9
         import 'dart:ffi';
         class Coordinate extends Struct {
           @Double()
@@ -44,6 +46,7 @@
       - main.dart
     sources:
       main.dart: |
+        // @dart=2.9
         import 'lib.dart';
 
         main() {
@@ -63,6 +66,7 @@
       - lib.dart
     sources:
       lib.dart: |
+        // @dart=2.9
         import 'dart:ffi';
         class Coordinate extends Struct {
           @Double()
diff --git a/pkg/front_end/testcases/incremental/no_outline_change_36.yaml b/pkg/front_end/testcases/incremental/no_outline_change_36.yaml
index 9022597..3b6cb72 100644
--- a/pkg/front_end/testcases/incremental/no_outline_change_36.yaml
+++ b/pkg/front_end/testcases/incremental/no_outline_change_36.yaml
@@ -10,16 +10,19 @@
     experiments: alternative-invalidation-strategy
     sources:
       main.dart: |
+        // @dart=2.9
         import 'file1.dart';
 
         class Class1 extends Class2 {}
       file1.dart: |
+        // @dart=2.9
         import 'file2.dart';
 
         class Class2 extends Class3 {
           Class3 foo;
         }
       file2.dart: |
+        // @dart=2.9
         abstract class Class3 {
           Class3 foo;
         }
diff --git a/pkg/front_end/testcases/incremental/no_outline_change_37.yaml b/pkg/front_end/testcases/incremental/no_outline_change_37.yaml
index a52319c..359626d 100644
--- a/pkg/front_end/testcases/incremental/no_outline_change_37.yaml
+++ b/pkg/front_end/testcases/incremental/no_outline_change_37.yaml
@@ -10,13 +10,16 @@
     experiments: alternative-invalidation-strategy
     sources:
       main.dart: |
+        // @dart=2.9
         import 'file2.dart';
         class A extends B implements C {}
       file1.dart: |
+        // @dart=2.9
         class D {
           D parent;
         }
       file2.dart: |
+        // @dart=2.9
         import 'file1.dart';
         abstract class C implements D {}
         class B extends D {
diff --git a/pkg/front_end/testcases/incremental/no_outline_change_38.yaml b/pkg/front_end/testcases/incremental/no_outline_change_38.yaml
index 90f929f..4c85485 100644
--- a/pkg/front_end/testcases/incremental/no_outline_change_38.yaml
+++ b/pkg/front_end/testcases/incremental/no_outline_change_38.yaml
@@ -10,12 +10,14 @@
     experiments: alternative-invalidation-strategy
     sources:
       main.dart: |
+        // @dart=2.9
         import 'lib.dart';
         class X {}
         int foo(X x) {
           return x is Y ? x.foo : null;
         }
       lib.dart: |
+        // @dart=2.9
         import 'main.dart';
         class Y implements X {
           int get foo => 42;
diff --git a/pkg/front_end/testcases/incremental/no_outline_change_39.yaml b/pkg/front_end/testcases/incremental/no_outline_change_39.yaml
index 0a99343..ebaefa2 100644
--- a/pkg/front_end/testcases/incremental/no_outline_change_39.yaml
+++ b/pkg/front_end/testcases/incremental/no_outline_change_39.yaml
@@ -10,6 +10,7 @@
     experiments: alternative-invalidation-strategy
     sources:
       main.dart: |
+        // @dart=2.9
         import 'lib.dart';
         class A {
           int a() {
@@ -20,6 +21,7 @@
           }
         }
       lib.dart: |
+        // @dart=2.9
         class B {
           int a() {
             return 42;
@@ -46,6 +48,7 @@
       - main.dart
     sources:
       main.dart: |
+        // @dart=2.9
         import 'lib.dart';
         class A {
           int b() {
@@ -66,6 +69,7 @@
       - lib.dart
     sources:
       lib.dart: |
+        // @dart=2.9
         class C {
           int b() {
             return 1;
diff --git a/pkg/front_end/testcases/incremental/no_outline_change_4.yaml b/pkg/front_end/testcases/incremental/no_outline_change_4.yaml
index fbab308..5aaff13 100644
--- a/pkg/front_end/testcases/incremental/no_outline_change_4.yaml
+++ b/pkg/front_end/testcases/incremental/no_outline_change_4.yaml
@@ -11,6 +11,7 @@
     experiments: alternative-invalidation-strategy
     sources:
       main.dart: |
+        // @dart=2.9
         import 'libA.dart';
 
         class Foo {
@@ -19,6 +20,7 @@
           }
         }
       libA.dart: |
+        // @dart=2.9
         import 'main.dart';
 
         class Bar extends Object with Foo {
@@ -35,6 +37,7 @@
       - main.dart
     sources:
       main.dart: |
+        // @dart=2.9
         import 'libA.dart';
 
         class Foo {
diff --git a/pkg/front_end/testcases/incremental/no_outline_change_40.yaml b/pkg/front_end/testcases/incremental/no_outline_change_40.yaml
index 3d630a8..6033b0e 100644
--- a/pkg/front_end/testcases/incremental/no_outline_change_40.yaml
+++ b/pkg/front_end/testcases/incremental/no_outline_change_40.yaml
@@ -11,11 +11,13 @@
     experiments: alternative-invalidation-strategy
     sources:
       lib1.dart: |
+        // @dart=2.9
         import 'main.dart';
         extension Extension1 on A {
           baz() => 42;
         }
       lib2.dart: |
+        // @dart=2.9
         import 'main.dart';
         import 'lib1.dart';
         export 'main.dart';
@@ -25,6 +27,7 @@
           a.boz();
         }
       main.dart: |
+        // @dart=2.9
         import 'lib1.dart';
         import 'lib2.dart';
         class A {
@@ -45,6 +48,7 @@
       - lib2.dart
     sources:
       lib2.dart: |
+        // @dart=2.9
         import 'main.dart';
         import 'lib1.dart';
         export 'main.dart';
@@ -64,6 +68,7 @@
       - main.dart
     sources:
       main.dart: |
+        // @dart=2.9
         import 'lib1.dart';
         import 'lib2.dart';
         class A {
diff --git a/pkg/front_end/testcases/incremental/no_outline_change_41.yaml b/pkg/front_end/testcases/incremental/no_outline_change_41.yaml
index 48225c0..2b10dac 100644
--- a/pkg/front_end/testcases/incremental/no_outline_change_41.yaml
+++ b/pkg/front_end/testcases/incremental/no_outline_change_41.yaml
@@ -9,7 +9,7 @@
 forceLateLoweringForTesting: true
 worlds:
   - entry: main.dart
-    experiments: non-nullable,alternative-invalidation-strategy
+    experiments: alternative-invalidation-strategy
     sources:
       lib1.dart: |
         late int field;
diff --git a/pkg/front_end/testcases/incremental/no_outline_change_42.yaml b/pkg/front_end/testcases/incremental/no_outline_change_42.yaml
index cd88790..9f8d58e 100644
--- a/pkg/front_end/testcases/incremental/no_outline_change_42.yaml
+++ b/pkg/front_end/testcases/incremental/no_outline_change_42.yaml
@@ -9,7 +9,7 @@
 forceLateLoweringForTesting: true
 worlds:
   - entry: main.dart
-    experiments: non-nullable,alternative-invalidation-strategy
+    experiments: alternative-invalidation-strategy
     sources:
       lib1.dart: |
         void set property(int value) {}
diff --git a/pkg/front_end/testcases/incremental/no_outline_change_43.yaml b/pkg/front_end/testcases/incremental/no_outline_change_43.yaml
index 8fb3d4f..a8ddc64 100644
--- a/pkg/front_end/testcases/incremental/no_outline_change_43.yaml
+++ b/pkg/front_end/testcases/incremental/no_outline_change_43.yaml
@@ -14,15 +14,18 @@
     experiments: alternative-invalidation-strategy
     sources:
       main.dart: |
+        // @dart=2.9
         import 'libExporter.dart';
         void foo() {
           int value = libField;
           libField = value+1;
         }
       libExporter.dart: |
+        // @dart=2.9
         export "lib.dart";
         String fromLibExporter = "hello";
       lib.dart: |
+        // @dart=2.9
         import "libExporter.dart";
         int libField = 42;
         void requireStuffFromLibExporter() {
diff --git a/pkg/front_end/testcases/incremental/no_outline_change_45_flutter.yaml b/pkg/front_end/testcases/incremental/no_outline_change_45_flutter.yaml
index 7ce01e9f..d1aab0e 100644
--- a/pkg/front_end/testcases/incremental/no_outline_change_45_flutter.yaml
+++ b/pkg/front_end/testcases/incremental/no_outline_change_45_flutter.yaml
@@ -12,6 +12,7 @@
     experiments: alternative-invalidation-strategy
     sources:
       main.dart: |
+        // @dart=2.9
         class Foo {
           factory Foo.bar() {
             return null;
diff --git a/pkg/front_end/testcases/incremental/no_outline_change_45_flutter_prime_1.yaml b/pkg/front_end/testcases/incremental/no_outline_change_45_flutter_prime_1.yaml
index 8b31333..6569ace 100644
--- a/pkg/front_end/testcases/incremental/no_outline_change_45_flutter_prime_1.yaml
+++ b/pkg/front_end/testcases/incremental/no_outline_change_45_flutter_prime_1.yaml
@@ -12,6 +12,7 @@
     experiments: alternative-invalidation-strategy
     sources:
       main.dart: |
+        // @dart=2.9
         class Foo {
           Foo();
           factory Foo.bar() = Baz;
diff --git a/pkg/front_end/testcases/incremental/no_outline_change_46.yaml b/pkg/front_end/testcases/incremental/no_outline_change_46.yaml
index 6f8b85b..0a162fe 100644
--- a/pkg/front_end/testcases/incremental/no_outline_change_46.yaml
+++ b/pkg/front_end/testcases/incremental/no_outline_change_46.yaml
@@ -8,7 +8,7 @@
 target: VM
 worlds:
   - entry: main.dart
-    experiments: alternative-invalidation-strategy,non-nullable
+    experiments: alternative-invalidation-strategy
     sources:
       main.dart: |
         class Foo {
@@ -17,7 +17,7 @@
     expectedLibraryCount: 1
 
   - entry: main.dart
-    experiments: alternative-invalidation-strategy,non-nullable
+    experiments: alternative-invalidation-strategy
     worldType: updated
     expectInitializeFromDill: false
     invalidate:
diff --git a/pkg/front_end/testcases/incremental/no_outline_change_47.yaml b/pkg/front_end/testcases/incremental/no_outline_change_47.yaml
index 03f5018..acf60e7 100644
--- a/pkg/front_end/testcases/incremental/no_outline_change_47.yaml
+++ b/pkg/front_end/testcases/incremental/no_outline_change_47.yaml
@@ -7,7 +7,7 @@
 type: newworld
 worlds:
   - entry: main.dart
-    experiments: alternative-invalidation-strategy,non-nullable
+    experiments: alternative-invalidation-strategy
     sources:
       main.dart: |
         late final int x = 42;
diff --git a/pkg/front_end/testcases/incremental/no_outline_change_48_ffi.yaml b/pkg/front_end/testcases/incremental/no_outline_change_48_ffi.yaml
index 03f9511a..1004210 100644
--- a/pkg/front_end/testcases/incremental/no_outline_change_48_ffi.yaml
+++ b/pkg/front_end/testcases/incremental/no_outline_change_48_ffi.yaml
@@ -8,7 +8,7 @@
 type: newworld
 worlds:
   - entry: main.dart
-    experiments: alternative-invalidation-strategy,non-nullable
+    experiments: alternative-invalidation-strategy
     sources:
       main.dart: |
         import "dart:ffi";
@@ -32,7 +32,7 @@
     expectedLibraryCount: 2
 
   - entry: main.dart
-    experiments: alternative-invalidation-strategy,non-nullable
+    experiments: alternative-invalidation-strategy
     worldType: updated
     expectInitializeFromDill: false
     invalidate:
diff --git a/pkg/front_end/testcases/incremental/no_outline_change_49_ffi.yaml b/pkg/front_end/testcases/incremental/no_outline_change_49_ffi.yaml
index 7f7cdad..d9cd713 100644
--- a/pkg/front_end/testcases/incremental/no_outline_change_49_ffi.yaml
+++ b/pkg/front_end/testcases/incremental/no_outline_change_49_ffi.yaml
@@ -9,7 +9,7 @@
 type: newworld
 worlds:
   - entry: main.dart
-    experiments: alternative-invalidation-strategy,non-nullable
+    experiments: alternative-invalidation-strategy
     sources:
       main.dart: |
         import "dart:ffi";
@@ -33,7 +33,7 @@
     expectedLibraryCount: 2
 
   - entry: main.dart
-    experiments: alternative-invalidation-strategy,non-nullable
+    experiments: alternative-invalidation-strategy
     expectInitializeFromDill: true
     invalidate:
       - lib.dart
diff --git a/pkg/front_end/testcases/incremental/no_outline_change_5.yaml b/pkg/front_end/testcases/incremental/no_outline_change_5.yaml
index d7d7a6a..b75e11c 100644
--- a/pkg/front_end/testcases/incremental/no_outline_change_5.yaml
+++ b/pkg/front_end/testcases/incremental/no_outline_change_5.yaml
@@ -11,6 +11,7 @@
     experiments: alternative-invalidation-strategy
     sources:
       main.dart: |
+        // @dart=2.9
         part 'myPart.dart';
 
         class Foo {
@@ -24,6 +25,7 @@
           print(const Foo());
         }
       myPart.dart: |
+        // @dart=2.9
         part of 'main.dart';
         whatever() async {
           await null;
@@ -38,6 +40,7 @@
       - myPart.dart
     sources:
       myPart.dart: |
+        // @dart=2.9
         part of 'main.dart';
         whatever() async {
           await null;
@@ -53,6 +56,7 @@
       - main.dart
     sources:
       main.dart: |
+        // @dart=2.9
         part 'myPart.dart';
 
         class Foo {
diff --git a/pkg/front_end/testcases/incremental/no_outline_change_50_ffi.yaml b/pkg/front_end/testcases/incremental/no_outline_change_50_ffi.yaml
index 025fb00..53a1505 100644
--- a/pkg/front_end/testcases/incremental/no_outline_change_50_ffi.yaml
+++ b/pkg/front_end/testcases/incremental/no_outline_change_50_ffi.yaml
@@ -8,7 +8,7 @@
 type: newworld
 worlds:
   - entry: main.dart
-    experiments: alternative-invalidation-strategy,non-nullable
+    experiments: alternative-invalidation-strategy
     sources:
       main.dart: |
         import "dart:ffi";
@@ -36,7 +36,7 @@
     expectedLibraryCount: 4
 
   - entry: main.dart
-    experiments: alternative-invalidation-strategy,non-nullable
+    experiments: alternative-invalidation-strategy
     worldType: updated
     expectInitializeFromDill: false
     invalidate:
diff --git a/pkg/front_end/testcases/incremental/no_outline_change_6.yaml b/pkg/front_end/testcases/incremental/no_outline_change_6.yaml
index 4e74fed..b6497de 100644
--- a/pkg/front_end/testcases/incremental/no_outline_change_6.yaml
+++ b/pkg/front_end/testcases/incremental/no_outline_change_6.yaml
@@ -11,6 +11,7 @@
     errors: true
     sources:
       main.dart: |
+        // @dart=2.9
         import 'libA.dart';
 
         class Foo {
@@ -29,6 +30,7 @@
 
         enum CompilationStrategy { direct, toKernel, toData, fromData }
       libA.dart: |
+        // @dart=2.9
         import 'main.dart';
         whatever(Foo foo) {
           print(foo);
@@ -43,6 +45,7 @@
       - main.dart
     sources:
       main.dart: |
+        // @dart=2.9
         import 'libA.dart';
 
         class Foo {
@@ -70,6 +73,7 @@
       - main.dart
     sources:
       main.dart: |
+        // @dart=2.9
         import 'libA.dart';
 
         class Foo {
diff --git a/pkg/front_end/testcases/incremental/no_outline_change_6.yaml.world.1.expect b/pkg/front_end/testcases/incremental/no_outline_change_6.yaml.world.1.expect
index 46a055a..ec42b23 100644
--- a/pkg/front_end/testcases/incremental/no_outline_change_6.yaml.world.1.expect
+++ b/pkg/front_end/testcases/incremental/no_outline_change_6.yaml.world.1.expect
@@ -11,7 +11,7 @@
 //
 // Problems in library:
 //
-// org-dartlang-test:///main.dart:7:32: Error: Expected ';' after this.
+// org-dartlang-test:///main.dart:8:32: Error: Expected ';' after this.
 //   toString() { return '$message' } // missing ;
 //                                ^
 //
diff --git a/pkg/front_end/testcases/incremental/no_outline_change_6.yaml.world.2.expect b/pkg/front_end/testcases/incremental/no_outline_change_6.yaml.world.2.expect
index f17b4d8..4b4156c 100644
--- a/pkg/front_end/testcases/incremental/no_outline_change_6.yaml.world.2.expect
+++ b/pkg/front_end/testcases/incremental/no_outline_change_6.yaml.world.2.expect
@@ -11,7 +11,7 @@
 //
 // Problems in library:
 //
-// org-dartlang-test:///main.dart:7:32: Error: Expected ';' after this.
+// org-dartlang-test:///main.dart:8:32: Error: Expected ';' after this.
 //   toString() { return '$message!!!' } // missing ; still
 //                                ^^^^
 //
diff --git a/pkg/front_end/testcases/incremental/no_outline_change_7.yaml b/pkg/front_end/testcases/incremental/no_outline_change_7.yaml
index 3dd8187..91c67e4 100644
--- a/pkg/front_end/testcases/incremental/no_outline_change_7.yaml
+++ b/pkg/front_end/testcases/incremental/no_outline_change_7.yaml
@@ -10,6 +10,7 @@
     experiments: alternative-invalidation-strategy
     sources:
       main.dart: |
+        // @dart=2.9
         import 'libA.dart';
 
         const String useMeAsAnnotation = "hello";
@@ -43,6 +44,7 @@
         @useMeAsAnnotation
         enum CompilationStrategy { @useMeAsAnnotation direct, @useMeAsAnnotation toKernel, @useMeAsAnnotation toData, @useMeAsAnnotation fromData }
       libA.dart: |
+        // @dart=2.9
         import 'main.dart';
         @useMeAsAnnotation
         whatever(Foo foo) {
@@ -57,6 +59,7 @@
       - main.dart
     sources:
       main.dart: |
+        // @dart=2.9
         import 'libA.dart';
 
         const String useMeAsAnnotation = "hello";
diff --git a/pkg/front_end/testcases/incremental/no_outline_change_8.yaml b/pkg/front_end/testcases/incremental/no_outline_change_8.yaml
index 5cbb862..fc35f07 100644
--- a/pkg/front_end/testcases/incremental/no_outline_change_8.yaml
+++ b/pkg/front_end/testcases/incremental/no_outline_change_8.yaml
@@ -11,6 +11,7 @@
     experiments: alternative-invalidation-strategy
     sources:
       main.dart: |
+        // @dart=2.9
         class Foo {
           String get x { return "x #1"; }
           void set x(String x) {}
@@ -30,6 +31,7 @@
       - main.dart
     sources:
       main.dart: |
+        // @dart=2.9
         class Foo {
           String get x { return "x #2"; }
           void set x(String x) {}
diff --git a/pkg/front_end/testcases/incremental/no_outline_change_9.yaml b/pkg/front_end/testcases/incremental/no_outline_change_9.yaml
index 7310cd4..37edf3e 100644
--- a/pkg/front_end/testcases/incremental/no_outline_change_9.yaml
+++ b/pkg/front_end/testcases/incremental/no_outline_change_9.yaml
@@ -11,6 +11,7 @@
     experiments: alternative-invalidation-strategy
     sources:
       main.dart: |
+        // @dart=2.9
         import "lib.dart";
 
         main() {
@@ -18,12 +19,14 @@
           libPartMethod();
         }
       lib.dart: |
+        // @dart=2.9
         part "libpart.dart";
 
         libMethod() {
           print("libMethod");
         }
       libpart.dart: |
+        // @dart=2.9
         part of "lib.dart";
 
         libPartMethod() {
@@ -38,6 +41,7 @@
       - lib.dart
     sources:
       lib.dart: |
+        // @dart=2.9
         part "libpart.dart";
 
         libMethod() {
diff --git a/pkg/front_end/testcases/incremental/omit_platform_works_1.yaml b/pkg/front_end/testcases/incremental/omit_platform_works_1.yaml
index 8d884a3..ad799bd 100644
--- a/pkg/front_end/testcases/incremental/omit_platform_works_1.yaml
+++ b/pkg/front_end/testcases/incremental/omit_platform_works_1.yaml
@@ -10,6 +10,7 @@
   - entry: main.dart
     sources:
       main.dart: |
+        // @dart=2.9
         main() {
           print("Hello world");
         }
@@ -20,6 +21,7 @@
       - main.dart
     sources:
       main.dart: |
+        // @dart=2.9
         main() {
           print("Hello world!");
         }
diff --git a/pkg/front_end/testcases/incremental/omit_platform_works_2.yaml b/pkg/front_end/testcases/incremental/omit_platform_works_2.yaml
index 071eacd..88e85bd 100644
--- a/pkg/front_end/testcases/incremental/omit_platform_works_2.yaml
+++ b/pkg/front_end/testcases/incremental/omit_platform_works_2.yaml
@@ -10,6 +10,7 @@
   - entry: main.dart
     sources:
       main.dart: |
+        // @dart=2.9
         main() {
           print("Hello world");
         }
@@ -20,6 +21,7 @@
       - main.dart
     sources:
       main.dart: |
+        // @dart=2.9
         main() {
           print("Hello world!");
         }
diff --git a/pkg/front_end/testcases/incremental/omit_platform_works_3.yaml b/pkg/front_end/testcases/incremental/omit_platform_works_3.yaml
index 2a6583b..c0f25a0 100644
--- a/pkg/front_end/testcases/incremental/omit_platform_works_3.yaml
+++ b/pkg/front_end/testcases/incremental/omit_platform_works_3.yaml
@@ -12,6 +12,7 @@
   - entry: main.dart
     sources:
       main.dart: |
+        // @dart=2.9
         main() {
           print("Hello world");
         }
@@ -25,11 +26,13 @@
       - main.dart
     sources:
       main.dart: |
+        // @dart=2.9
         import "lib.dart";
         main() {
           print(lib());
         }
       lib.dart: |
+        // @dart=2.9
         lib() {
           return "hello";
         }
@@ -43,6 +46,7 @@
       - main.dart
     sources:
       main.dart: |
+        // @dart=2.9
         import "lib.dart";
         main() {
           print(lib() + "!");
@@ -57,6 +61,7 @@
       - main.dart
     sources:
       main.dart: |
+        // @dart=2.9
         import "lib.dart";
         main() {
           print(lib());
@@ -70,11 +75,13 @@
       - main.dart
     sources:
       main.dart: |
+        // @dart=2.9
         import "lib.dart";
         main() {
           print(lib() + "!!");
         }
       lib.dart: |
+        // @dart=2.9
         lib() {
           return "hello";
         }
diff --git a/pkg/front_end/testcases/incremental/outline_only.yaml b/pkg/front_end/testcases/incremental/outline_only.yaml
index 59a9e45..bb3d5af 100644
--- a/pkg/front_end/testcases/incremental/outline_only.yaml
+++ b/pkg/front_end/testcases/incremental/outline_only.yaml
@@ -9,6 +9,7 @@
   - entry: main.dart
     sources:
       main.dart: |
+        // @dart=2.9
         main() {
           print("hello");
           b();
diff --git a/pkg/front_end/testcases/incremental/outline_only_2.yaml b/pkg/front_end/testcases/incremental/outline_only_2.yaml
index 94b1a83..2ec0997 100644
--- a/pkg/front_end/testcases/incremental/outline_only_2.yaml
+++ b/pkg/front_end/testcases/incremental/outline_only_2.yaml
@@ -10,6 +10,7 @@
   - entry: main.dart
     sources:
       main.dart: |
+        // @dart=2.9
         abstract class Foo {
           int get foo;
         }
diff --git a/pkg/front_end/testcases/incremental/part_as_entry.yaml b/pkg/front_end/testcases/incremental/part_as_entry.yaml
index aba97dff..266e687 100644
--- a/pkg/front_end/testcases/incremental/part_as_entry.yaml
+++ b/pkg/front_end/testcases/incremental/part_as_entry.yaml
@@ -8,9 +8,11 @@
     checkEntries: false
     sources:
       main.dart: |
+        // @dart=2.9
         part of 'lib.dart';
         partMethod() {}
       lib.dart: |
+        // @dart=2.9
         part 'main.dart';
         main() {}
     expectedLibraryCount: 1
diff --git a/pkg/front_end/testcases/incremental/part_as_package_entry.yaml b/pkg/front_end/testcases/incremental/part_as_package_entry.yaml
index e599398..9aed0c2 100644
--- a/pkg/front_end/testcases/incremental/part_as_package_entry.yaml
+++ b/pkg/front_end/testcases/incremental/part_as_package_entry.yaml
@@ -10,9 +10,11 @@
       .packages: |
         foo:.
       main.dart: |
+        // @dart=2.9
         part of 'lib.dart';
         partMethod() {}
       lib.dart: |
+        // @dart=2.9
         part 'main.dart';
         main() {}
     expectedLibraryCount: 1
diff --git a/pkg/front_end/testcases/incremental/part_as_package_entry_2.yaml b/pkg/front_end/testcases/incremental/part_as_package_entry_2.yaml
index 3d91b09..ce316cc 100644
--- a/pkg/front_end/testcases/incremental/part_as_package_entry_2.yaml
+++ b/pkg/front_end/testcases/incremental/part_as_package_entry_2.yaml
@@ -11,9 +11,11 @@
       .packages: |
         foo:.
       main.dart: |
+        // @dart=2.9
         part of 'lib.dart';
         partMethod() {}
       lib.dart: |
+        // @dart=2.9
         part 'main.dart';
         main() {}
     expectedLibraryCount: 1
diff --git a/pkg/front_end/testcases/incremental/part_not_part_of.yaml b/pkg/front_end/testcases/incremental/part_not_part_of.yaml
index 4343977..83a3567 100644
--- a/pkg/front_end/testcases/incremental/part_not_part_of.yaml
+++ b/pkg/front_end/testcases/incremental/part_not_part_of.yaml
@@ -8,9 +8,11 @@
     errors: true
     sources:
       main.dart: |
+        // @dart=2.9
         part 'lib.dart';
         main() {}
       lib.dart: |
+        // @dart=2.9
         methodFromLib() {}
     expectedLibraryCount: 2
 
diff --git a/pkg/front_end/testcases/incremental/part_not_part_of.yaml.world.1.expect b/pkg/front_end/testcases/incremental/part_not_part_of.yaml.world.1.expect
index bf0e799..63f6134 100644
--- a/pkg/front_end/testcases/incremental/part_not_part_of.yaml.world.1.expect
+++ b/pkg/front_end/testcases/incremental/part_not_part_of.yaml.world.1.expect
@@ -7,7 +7,7 @@
 //
 // Problems in library:
 //
-// org-dartlang-test:///main.dart:1:6: Error: Can't use 'org-dartlang-test:///lib.dart' as a part, because it has no 'part of' declaration.
+// org-dartlang-test:///main.dart:2:6: Error: Can't use 'org-dartlang-test:///lib.dart' as a part, because it has no 'part of' declaration.
 // part 'lib.dart';
 //      ^
 //
diff --git a/pkg/front_end/testcases/incremental/part_not_part_of.yaml.world.2.expect b/pkg/front_end/testcases/incremental/part_not_part_of.yaml.world.2.expect
index bf0e799..63f6134 100644
--- a/pkg/front_end/testcases/incremental/part_not_part_of.yaml.world.2.expect
+++ b/pkg/front_end/testcases/incremental/part_not_part_of.yaml.world.2.expect
@@ -7,7 +7,7 @@
 //
 // Problems in library:
 //
-// org-dartlang-test:///main.dart:1:6: Error: Can't use 'org-dartlang-test:///lib.dart' as a part, because it has no 'part of' declaration.
+// org-dartlang-test:///main.dart:2:6: Error: Can't use 'org-dartlang-test:///lib.dart' as a part, because it has no 'part of' declaration.
 // part 'lib.dart';
 //      ^
 //
diff --git a/pkg/front_end/testcases/incremental/part_not_part_of.yaml.world.3.expect b/pkg/front_end/testcases/incremental/part_not_part_of.yaml.world.3.expect
index bf0e799..63f6134 100644
--- a/pkg/front_end/testcases/incremental/part_not_part_of.yaml.world.3.expect
+++ b/pkg/front_end/testcases/incremental/part_not_part_of.yaml.world.3.expect
@@ -7,7 +7,7 @@
 //
 // Problems in library:
 //
-// org-dartlang-test:///main.dart:1:6: Error: Can't use 'org-dartlang-test:///lib.dart' as a part, because it has no 'part of' declaration.
+// org-dartlang-test:///main.dart:2:6: Error: Can't use 'org-dartlang-test:///lib.dart' as a part, because it has no 'part of' declaration.
 // part 'lib.dart';
 //      ^
 //
diff --git a/pkg/front_end/testcases/incremental/part_not_part_of_as_package.yaml b/pkg/front_end/testcases/incremental/part_not_part_of_as_package.yaml
index eacf043..9110606 100644
--- a/pkg/front_end/testcases/incremental/part_not_part_of_as_package.yaml
+++ b/pkg/front_end/testcases/incremental/part_not_part_of_as_package.yaml
@@ -10,9 +10,11 @@
       .packages: |
         foo:.
       main.dart: |
+        // @dart=2.9
         part 'lib.dart';
         main() {}
       lib.dart: |
+        // @dart=2.9
         methodFromLib() {}
     expectedLibraryCount: 2
 
diff --git a/pkg/front_end/testcases/incremental/part_not_part_of_as_package.yaml.world.1.expect b/pkg/front_end/testcases/incremental/part_not_part_of_as_package.yaml.world.1.expect
index fc6881c..5d581c7 100644
--- a/pkg/front_end/testcases/incremental/part_not_part_of_as_package.yaml.world.1.expect
+++ b/pkg/front_end/testcases/incremental/part_not_part_of_as_package.yaml.world.1.expect
@@ -7,7 +7,7 @@
 //
 // Problems in library:
 //
-// org-dartlang-test:///main.dart:1:6: Error: Can't use 'org-dartlang-test:///lib.dart' as a part, because it has no 'part of' declaration.
+// org-dartlang-test:///main.dart:2:6: Error: Can't use 'org-dartlang-test:///lib.dart' as a part, because it has no 'part of' declaration.
 // part 'lib.dart';
 //      ^
 //
diff --git a/pkg/front_end/testcases/incremental/part_not_part_of_as_package.yaml.world.2.expect b/pkg/front_end/testcases/incremental/part_not_part_of_as_package.yaml.world.2.expect
index fc6881c..5d581c7 100644
--- a/pkg/front_end/testcases/incremental/part_not_part_of_as_package.yaml.world.2.expect
+++ b/pkg/front_end/testcases/incremental/part_not_part_of_as_package.yaml.world.2.expect
@@ -7,7 +7,7 @@
 //
 // Problems in library:
 //
-// org-dartlang-test:///main.dart:1:6: Error: Can't use 'org-dartlang-test:///lib.dart' as a part, because it has no 'part of' declaration.
+// org-dartlang-test:///main.dart:2:6: Error: Can't use 'org-dartlang-test:///lib.dart' as a part, because it has no 'part of' declaration.
 // part 'lib.dart';
 //      ^
 //
diff --git a/pkg/front_end/testcases/incremental/part_not_part_of_as_package.yaml.world.3.expect b/pkg/front_end/testcases/incremental/part_not_part_of_as_package.yaml.world.3.expect
index fc6881c..5d581c7 100644
--- a/pkg/front_end/testcases/incremental/part_not_part_of_as_package.yaml.world.3.expect
+++ b/pkg/front_end/testcases/incremental/part_not_part_of_as_package.yaml.world.3.expect
@@ -7,7 +7,7 @@
 //
 // Problems in library:
 //
-// org-dartlang-test:///main.dart:1:6: Error: Can't use 'org-dartlang-test:///lib.dart' as a part, because it has no 'part of' declaration.
+// org-dartlang-test:///main.dart:2:6: Error: Can't use 'org-dartlang-test:///lib.dart' as a part, because it has no 'part of' declaration.
 // part 'lib.dart';
 //      ^
 //
diff --git a/pkg/front_end/testcases/incremental/part_not_part_of_experimental_invalidation.yaml b/pkg/front_end/testcases/incremental/part_not_part_of_experimental_invalidation.yaml
index a5edd21..0a6eab0 100644
--- a/pkg/front_end/testcases/incremental/part_not_part_of_experimental_invalidation.yaml
+++ b/pkg/front_end/testcases/incremental/part_not_part_of_experimental_invalidation.yaml
@@ -9,9 +9,11 @@
     errors: true
     sources:
       main.dart: |
+        // @dart=2.9
         part 'lib.dart';
         main() {}
       lib.dart: |
+        // @dart=2.9
         methodFromLib() {}
     expectedLibraryCount: 2
 
diff --git a/pkg/front_end/testcases/incremental/part_not_part_of_experimental_invalidation.yaml.world.1.expect b/pkg/front_end/testcases/incremental/part_not_part_of_experimental_invalidation.yaml.world.1.expect
index bf0e799..63f6134 100644
--- a/pkg/front_end/testcases/incremental/part_not_part_of_experimental_invalidation.yaml.world.1.expect
+++ b/pkg/front_end/testcases/incremental/part_not_part_of_experimental_invalidation.yaml.world.1.expect
@@ -7,7 +7,7 @@
 //
 // Problems in library:
 //
-// org-dartlang-test:///main.dart:1:6: Error: Can't use 'org-dartlang-test:///lib.dart' as a part, because it has no 'part of' declaration.
+// org-dartlang-test:///main.dart:2:6: Error: Can't use 'org-dartlang-test:///lib.dart' as a part, because it has no 'part of' declaration.
 // part 'lib.dart';
 //      ^
 //
diff --git a/pkg/front_end/testcases/incremental/part_not_part_of_experimental_invalidation.yaml.world.2.expect b/pkg/front_end/testcases/incremental/part_not_part_of_experimental_invalidation.yaml.world.2.expect
index bf0e799..63f6134 100644
--- a/pkg/front_end/testcases/incremental/part_not_part_of_experimental_invalidation.yaml.world.2.expect
+++ b/pkg/front_end/testcases/incremental/part_not_part_of_experimental_invalidation.yaml.world.2.expect
@@ -7,7 +7,7 @@
 //
 // Problems in library:
 //
-// org-dartlang-test:///main.dart:1:6: Error: Can't use 'org-dartlang-test:///lib.dart' as a part, because it has no 'part of' declaration.
+// org-dartlang-test:///main.dart:2:6: Error: Can't use 'org-dartlang-test:///lib.dart' as a part, because it has no 'part of' declaration.
 // part 'lib.dart';
 //      ^
 //
diff --git a/pkg/front_end/testcases/incremental/part_not_part_of_experimental_invalidation.yaml.world.3.expect b/pkg/front_end/testcases/incremental/part_not_part_of_experimental_invalidation.yaml.world.3.expect
index bf0e799..63f6134 100644
--- a/pkg/front_end/testcases/incremental/part_not_part_of_experimental_invalidation.yaml.world.3.expect
+++ b/pkg/front_end/testcases/incremental/part_not_part_of_experimental_invalidation.yaml.world.3.expect
@@ -7,7 +7,7 @@
 //
 // Problems in library:
 //
-// org-dartlang-test:///main.dart:1:6: Error: Can't use 'org-dartlang-test:///lib.dart' as a part, because it has no 'part of' declaration.
+// org-dartlang-test:///main.dart:2:6: Error: Can't use 'org-dartlang-test:///lib.dart' as a part, because it has no 'part of' declaration.
 // part 'lib.dart';
 //      ^
 //
diff --git a/pkg/front_end/testcases/incremental/part_not_part_of_initialized_from_dill.yaml b/pkg/front_end/testcases/incremental/part_not_part_of_initialized_from_dill.yaml
index e9c5703..e0d7502 100644
--- a/pkg/front_end/testcases/incremental/part_not_part_of_initialized_from_dill.yaml
+++ b/pkg/front_end/testcases/incremental/part_not_part_of_initialized_from_dill.yaml
@@ -8,9 +8,11 @@
     errors: true
     sources:
       main.dart: |
+        // @dart=2.9
         part 'lib.dart';
         main() {}
       lib.dart: |
+        // @dart=2.9
         methodFromLib() {}
     expectedLibraryCount: 2
 
@@ -20,9 +22,11 @@
       - main.dart
     sources:
       main.dart: |
+        // @dart=2.9
         part 'lib.dart';
         main() {}
       lib.dart: |
+        // @dart=2.9
         methodFromLib() {}
     expectedLibraryCount: 2
 
@@ -32,8 +36,10 @@
       - lib.dart
     sources:
       main.dart: |
+        // @dart=2.9
         part 'lib.dart';
         main() {}
       lib.dart: |
+        // @dart=2.9
         methodFromLib() {}
     expectedLibraryCount: 2
diff --git a/pkg/front_end/testcases/incremental/part_not_part_of_initialized_from_dill.yaml.world.1.expect b/pkg/front_end/testcases/incremental/part_not_part_of_initialized_from_dill.yaml.world.1.expect
index bf0e799..63f6134 100644
--- a/pkg/front_end/testcases/incremental/part_not_part_of_initialized_from_dill.yaml.world.1.expect
+++ b/pkg/front_end/testcases/incremental/part_not_part_of_initialized_from_dill.yaml.world.1.expect
@@ -7,7 +7,7 @@
 //
 // Problems in library:
 //
-// org-dartlang-test:///main.dart:1:6: Error: Can't use 'org-dartlang-test:///lib.dart' as a part, because it has no 'part of' declaration.
+// org-dartlang-test:///main.dart:2:6: Error: Can't use 'org-dartlang-test:///lib.dart' as a part, because it has no 'part of' declaration.
 // part 'lib.dart';
 //      ^
 //
diff --git a/pkg/front_end/testcases/incremental/part_not_part_of_initialized_from_dill.yaml.world.2.expect b/pkg/front_end/testcases/incremental/part_not_part_of_initialized_from_dill.yaml.world.2.expect
index bf0e799..63f6134 100644
--- a/pkg/front_end/testcases/incremental/part_not_part_of_initialized_from_dill.yaml.world.2.expect
+++ b/pkg/front_end/testcases/incremental/part_not_part_of_initialized_from_dill.yaml.world.2.expect
@@ -7,7 +7,7 @@
 //
 // Problems in library:
 //
-// org-dartlang-test:///main.dart:1:6: Error: Can't use 'org-dartlang-test:///lib.dart' as a part, because it has no 'part of' declaration.
+// org-dartlang-test:///main.dart:2:6: Error: Can't use 'org-dartlang-test:///lib.dart' as a part, because it has no 'part of' declaration.
 // part 'lib.dart';
 //      ^
 //
diff --git a/pkg/front_end/testcases/incremental/part_not_part_of_initialized_from_dill.yaml.world.3.expect b/pkg/front_end/testcases/incremental/part_not_part_of_initialized_from_dill.yaml.world.3.expect
index bf0e799..63f6134 100644
--- a/pkg/front_end/testcases/incremental/part_not_part_of_initialized_from_dill.yaml.world.3.expect
+++ b/pkg/front_end/testcases/incremental/part_not_part_of_initialized_from_dill.yaml.world.3.expect
@@ -7,7 +7,7 @@
 //
 // Problems in library:
 //
-// org-dartlang-test:///main.dart:1:6: Error: Can't use 'org-dartlang-test:///lib.dart' as a part, because it has no 'part of' declaration.
+// org-dartlang-test:///main.dart:2:6: Error: Can't use 'org-dartlang-test:///lib.dart' as a part, because it has no 'part of' declaration.
 // part 'lib.dart';
 //      ^
 //
diff --git a/pkg/front_end/testcases/incremental/regress_35215.yaml b/pkg/front_end/testcases/incremental/regress_35215.yaml
index b906cba..05e0f1a 100644
--- a/pkg/front_end/testcases/incremental/regress_35215.yaml
+++ b/pkg/front_end/testcases/incremental/regress_35215.yaml
@@ -11,11 +11,13 @@
   - entry: main.dart
     sources:
       main.dart: |
+        // @dart=2.9
         import "b.dart";
         main() {
           b(42);
         }
       b.dart: |
+        // @dart=2.9
         b({int named}) {
           print("b");
         }
@@ -27,11 +29,13 @@
       - b.dart
     sources:
       main.dart: |
+        // @dart=2.9
         import "b.dart";
         main() {
           b(42);
         }
       b.dart: |
+        // @dart=2.9
         // lots of comments
         // forcing offsets down
         // and also adding more lines
diff --git a/pkg/front_end/testcases/incremental/regress_35215.yaml.world.1.expect b/pkg/front_end/testcases/incremental/regress_35215.yaml.world.1.expect
index a4a6372..8e1d7f3 100644
--- a/pkg/front_end/testcases/incremental/regress_35215.yaml.world.1.expect
+++ b/pkg/front_end/testcases/incremental/regress_35215.yaml.world.1.expect
@@ -9,11 +9,11 @@
 //
 // Problems in library:
 //
-// org-dartlang-test:///main.dart:3:4: Error: Too many positional arguments: 0 allowed, but 1 found.
+// org-dartlang-test:///main.dart:4:4: Error: Too many positional arguments: 0 allowed, but 1 found.
 // Try removing the extra positional arguments.
 //   b(42);
 //    ^
-// org-dartlang-test:///b.dart:1:1: Context: Found this candidate, but the arguments don't match.
+// org-dartlang-test:///b.dart:2:1: Context: Found this candidate, but the arguments don't match.
 // b({int named}) {
 // ^
 //
@@ -21,7 +21,7 @@
   import "org-dartlang-test:///b.dart";
 
   static method main() → dynamic {
-    invalid-expression "org-dartlang-test:///main.dart:3:4: Error: Too many positional arguments: 0 allowed, but 1 found.\nTry removing the extra positional arguments.\n  b(42);\n   ^";
+    invalid-expression "org-dartlang-test:///main.dart:4:4: Error: Too many positional arguments: 0 allowed, but 1 found.\nTry removing the extra positional arguments.\n  b(42);\n   ^";
   }
 }
 constants  {
diff --git a/pkg/front_end/testcases/incremental/regress_35215.yaml.world.2.expect b/pkg/front_end/testcases/incremental/regress_35215.yaml.world.2.expect
index 355f0aa..21bd097 100644
--- a/pkg/front_end/testcases/incremental/regress_35215.yaml.world.2.expect
+++ b/pkg/front_end/testcases/incremental/regress_35215.yaml.world.2.expect
@@ -9,11 +9,11 @@
 //
 // Problems in library:
 //
-// org-dartlang-test:///main.dart:3:4: Error: Too many positional arguments: 0 allowed, but 1 found.
+// org-dartlang-test:///main.dart:4:4: Error: Too many positional arguments: 0 allowed, but 1 found.
 // Try removing the extra positional arguments.
 //   b(42);
 //    ^
-// org-dartlang-test:///b.dart:5:1: Context: Found this candidate, but the arguments don't match.
+// org-dartlang-test:///b.dart:6:1: Context: Found this candidate, but the arguments don't match.
 // b({int named}) {
 // ^
 //
@@ -21,7 +21,7 @@
   import "org-dartlang-test:///b.dart";
 
   static method main() → dynamic {
-    invalid-expression "org-dartlang-test:///main.dart:3:4: Error: Too many positional arguments: 0 allowed, but 1 found.\nTry removing the extra positional arguments.\n  b(42);\n   ^";
+    invalid-expression "org-dartlang-test:///main.dart:4:4: Error: Too many positional arguments: 0 allowed, but 1 found.\nTry removing the extra positional arguments.\n  b(42);\n   ^";
   }
 }
 constants  {
diff --git a/pkg/front_end/testcases/incremental/regress_46004.yaml b/pkg/front_end/testcases/incremental/regress_46004.yaml
index 115477f..da390ae3 100644
--- a/pkg/front_end/testcases/incremental/regress_46004.yaml
+++ b/pkg/front_end/testcases/incremental/regress_46004.yaml
@@ -5,7 +5,6 @@
 type: newworld
 worlds:
   - entry: main.dart
-    experiments: non-nullable
     sources:
       main.dart: |
         import 'dart:ffi';
@@ -26,7 +25,6 @@
     expectedLibraryCount: 2
 
   - entry: main.dart
-    experiments: non-nullable
     worldType: updated
     expectInitializeFromDill: false
     invalidate:
diff --git a/pkg/front_end/testcases/incremental/reissue_errors_1.yaml b/pkg/front_end/testcases/incremental/reissue_errors_1.yaml
index fb57969..0ab8b96 100644
--- a/pkg/front_end/testcases/incremental/reissue_errors_1.yaml
+++ b/pkg/front_end/testcases/incremental/reissue_errors_1.yaml
@@ -11,8 +11,10 @@
   - entry: main.dart
     sources:
       main.dart: |
+        // @dart=2.9
         import "b.dart";
       b.dart: |
+        // @dart=2.9
         asdf
     expectedLibraryCount: 2
     errors: true
@@ -24,8 +26,10 @@
   - entry: main.dart
     sources:
       main.dart: |
+        // @dart=2.9
         import "b.dart";
       b.dart: |
+        // @dart=2.9
         asdf
     expectedLibraryCount: 2
     errors: true
@@ -42,6 +46,7 @@
       - b.dart
     sources:
       b.dart: |
+        // @dart=2.9
         asdf;
     expectedLibraryCount: 2
   - entry: main.dart
@@ -51,5 +56,6 @@
       - b.dart
     sources:
       b.dart: |
+        // @dart=2.9
         asdf() {}
     expectedLibraryCount: 2
diff --git a/pkg/front_end/testcases/incremental/reissue_errors_1.yaml.world.1.expect b/pkg/front_end/testcases/incremental/reissue_errors_1.yaml.world.1.expect
index 0c74f50..089797b 100644
--- a/pkg/front_end/testcases/incremental/reissue_errors_1.yaml.world.1.expect
+++ b/pkg/front_end/testcases/incremental/reissue_errors_1.yaml.world.1.expect
@@ -3,11 +3,11 @@
 //
 // Problems in library:
 //
-// org-dartlang-test:///b.dart:1:1: Error: Expected ';' after this.
+// org-dartlang-test:///b.dart:2:1: Error: Expected ';' after this.
 // asdf
 // ^^^^
 //
-// org-dartlang-test:///b.dart:1:1: Error: Variables must be declared using the keywords 'const', 'final', 'var' or a type name.
+// org-dartlang-test:///b.dart:2:1: 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'.
 // asdf
 // ^^^^
diff --git a/pkg/front_end/testcases/incremental/reissue_errors_1.yaml.world.2.expect b/pkg/front_end/testcases/incremental/reissue_errors_1.yaml.world.2.expect
index 0c74f50..089797b 100644
--- a/pkg/front_end/testcases/incremental/reissue_errors_1.yaml.world.2.expect
+++ b/pkg/front_end/testcases/incremental/reissue_errors_1.yaml.world.2.expect
@@ -3,11 +3,11 @@
 //
 // Problems in library:
 //
-// org-dartlang-test:///b.dart:1:1: Error: Expected ';' after this.
+// org-dartlang-test:///b.dart:2:1: Error: Expected ';' after this.
 // asdf
 // ^^^^
 //
-// org-dartlang-test:///b.dart:1:1: Error: Variables must be declared using the keywords 'const', 'final', 'var' or a type name.
+// org-dartlang-test:///b.dart:2:1: 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'.
 // asdf
 // ^^^^
diff --git a/pkg/front_end/testcases/incremental/reissue_errors_1.yaml.world.3.expect b/pkg/front_end/testcases/incremental/reissue_errors_1.yaml.world.3.expect
index 0c74f50..089797b 100644
--- a/pkg/front_end/testcases/incremental/reissue_errors_1.yaml.world.3.expect
+++ b/pkg/front_end/testcases/incremental/reissue_errors_1.yaml.world.3.expect
@@ -3,11 +3,11 @@
 //
 // Problems in library:
 //
-// org-dartlang-test:///b.dart:1:1: Error: Expected ';' after this.
+// org-dartlang-test:///b.dart:2:1: Error: Expected ';' after this.
 // asdf
 // ^^^^
 //
-// org-dartlang-test:///b.dart:1:1: Error: Variables must be declared using the keywords 'const', 'final', 'var' or a type name.
+// org-dartlang-test:///b.dart:2:1: 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'.
 // asdf
 // ^^^^
diff --git a/pkg/front_end/testcases/incremental/reissue_errors_1.yaml.world.4.expect b/pkg/front_end/testcases/incremental/reissue_errors_1.yaml.world.4.expect
index 0c74f50..089797b 100644
--- a/pkg/front_end/testcases/incremental/reissue_errors_1.yaml.world.4.expect
+++ b/pkg/front_end/testcases/incremental/reissue_errors_1.yaml.world.4.expect
@@ -3,11 +3,11 @@
 //
 // Problems in library:
 //
-// org-dartlang-test:///b.dart:1:1: Error: Expected ';' after this.
+// org-dartlang-test:///b.dart:2:1: Error: Expected ';' after this.
 // asdf
 // ^^^^
 //
-// org-dartlang-test:///b.dart:1:1: Error: Variables must be declared using the keywords 'const', 'final', 'var' or a type name.
+// org-dartlang-test:///b.dart:2:1: 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'.
 // asdf
 // ^^^^
diff --git a/pkg/front_end/testcases/incremental/reissue_errors_1.yaml.world.5.expect b/pkg/front_end/testcases/incremental/reissue_errors_1.yaml.world.5.expect
index a44b5dc..1771593 100644
--- a/pkg/front_end/testcases/incremental/reissue_errors_1.yaml.world.5.expect
+++ b/pkg/front_end/testcases/incremental/reissue_errors_1.yaml.world.5.expect
@@ -3,7 +3,7 @@
 //
 // Problems in library:
 //
-// org-dartlang-test:///b.dart:1:1: Error: Variables must be declared using the keywords 'const', 'final', 'var' or a type name.
+// org-dartlang-test:///b.dart:2:1: 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'.
 // asdf;
 // ^^^^
diff --git a/pkg/front_end/testcases/incremental/reissue_errors_10.yaml b/pkg/front_end/testcases/incremental/reissue_errors_10.yaml
index 3a869c5..7230d12 100644
--- a/pkg/front_end/testcases/incremental/reissue_errors_10.yaml
+++ b/pkg/front_end/testcases/incremental/reissue_errors_10.yaml
@@ -14,11 +14,13 @@
   - entry: main.dart
     sources:
       main.dart: |
+        // @dart=2.9
         import 'lib.dart';
         main() {
           foo();
         }
       lib.dart: |
+        // @dart=2.9
         class Foo {
           const Foo(int i) : assert(i > 0);
         }
@@ -34,6 +36,7 @@
       - main.dart
     sources:
       main.dart: |
+        // @dart=2.9
         import 'lib.dart';
         import 'lib2.dart';
         import 'lib3.dart';
@@ -42,9 +45,11 @@
           print(fooField2);
         }
       lib2.dart: |
+        // @dart=2.9
         import 'lib.dart';
         const fooField = const Foo(0);
       lib3.dart: |
+        // @dart=2.9
         import 'lib.dart';
         const fooField2 = const Foo(0);
     expectInitializeFromDill: false
@@ -56,6 +61,7 @@
       - lib2.dart
     sources:
       lib2.dart: |
+        // @dart=2.9
         import 'lib.dart';
         const fooField = const Foo(1);
     expectInitializeFromDill: false
@@ -68,9 +74,11 @@
       - lib3.dart
     sources:
       lib2.dart: |
+        // @dart=2.9
         import 'lib.dart';
         const fooField = const Foo(0);
       lib3.dart: |
+        // @dart=2.9
         import 'lib.dart';
         const fooField2 = const Foo(1);
     expectInitializeFromDill: false
@@ -83,9 +91,11 @@
       - lib3.dart
     sources:
       lib2.dart: |
+        // @dart=2.9
         import 'lib.dart';
         const fooField = const Foo(1);
       lib3.dart: |
+        // @dart=2.9
         import 'lib.dart';
         const fooField2 = const Foo(1);
     expectInitializeFromDill: false
diff --git a/pkg/front_end/testcases/incremental/reissue_errors_10.yaml.world.2.expect b/pkg/front_end/testcases/incremental/reissue_errors_10.yaml.world.2.expect
index b7a31e0..dfaa047 100644
--- a/pkg/front_end/testcases/incremental/reissue_errors_10.yaml.world.2.expect
+++ b/pkg/front_end/testcases/incremental/reissue_errors_10.yaml.world.2.expect
@@ -24,13 +24,13 @@
 //
 // Problems in library:
 //
-// org-dartlang-test:///lib2.dart:2:24: Error: Constant evaluation error:
+// org-dartlang-test:///lib2.dart:3:24: Error: Constant evaluation error:
 // const fooField = const Foo(0);
 //                        ^
-// org-dartlang-test:///lib.dart:2:31: Context: This assertion failed.
+// org-dartlang-test:///lib.dart:3:31: Context: This assertion failed.
 //   const Foo(int i) : assert(i > 0);
 //                               ^
-// org-dartlang-test:///lib2.dart:2:7: Context: While analyzing:
+// org-dartlang-test:///lib2.dart:3:7: Context: While analyzing:
 // const fooField = const Foo(0);
 //       ^
 //
@@ -43,13 +43,13 @@
 //
 // Problems in library:
 //
-// org-dartlang-test:///lib3.dart:2:25: Error: Constant evaluation error:
+// org-dartlang-test:///lib3.dart:3:25: Error: Constant evaluation error:
 // const fooField2 = const Foo(0);
 //                         ^
-// org-dartlang-test:///lib.dart:2:31: Context: This assertion failed.
+// org-dartlang-test:///lib.dart:3:31: Context: This assertion failed.
 //   const Foo(int i) : assert(i > 0);
 //                               ^
-// org-dartlang-test:///lib3.dart:2:7: Context: While analyzing:
+// org-dartlang-test:///lib3.dart:3:7: Context: While analyzing:
 // const fooField2 = const Foo(0);
 //       ^
 //
diff --git a/pkg/front_end/testcases/incremental/reissue_errors_10.yaml.world.3.expect b/pkg/front_end/testcases/incremental/reissue_errors_10.yaml.world.3.expect
index 63b9159..cde8746 100644
--- a/pkg/front_end/testcases/incremental/reissue_errors_10.yaml.world.3.expect
+++ b/pkg/front_end/testcases/incremental/reissue_errors_10.yaml.world.3.expect
@@ -30,13 +30,13 @@
 //
 // Problems in library:
 //
-// org-dartlang-test:///lib3.dart:2:25: Error: Constant evaluation error:
+// org-dartlang-test:///lib3.dart:3:25: Error: Constant evaluation error:
 // const fooField2 = const Foo(0);
 //                         ^
-// org-dartlang-test:///lib.dart:2:31: Context: This assertion failed.
+// org-dartlang-test:///lib.dart:3:31: Context: This assertion failed.
 //   const Foo(int i) : assert(i > 0);
 //                               ^
-// org-dartlang-test:///lib3.dart:2:7: Context: While analyzing:
+// org-dartlang-test:///lib3.dart:3:7: Context: While analyzing:
 // const fooField2 = const Foo(0);
 //       ^
 //
diff --git a/pkg/front_end/testcases/incremental/reissue_errors_10.yaml.world.4.expect b/pkg/front_end/testcases/incremental/reissue_errors_10.yaml.world.4.expect
index a127102..d0d6582 100644
--- a/pkg/front_end/testcases/incremental/reissue_errors_10.yaml.world.4.expect
+++ b/pkg/front_end/testcases/incremental/reissue_errors_10.yaml.world.4.expect
@@ -24,13 +24,13 @@
 //
 // Problems in library:
 //
-// org-dartlang-test:///lib2.dart:2:24: Error: Constant evaluation error:
+// org-dartlang-test:///lib2.dart:3:24: Error: Constant evaluation error:
 // const fooField = const Foo(0);
 //                        ^
-// org-dartlang-test:///lib.dart:2:31: Context: This assertion failed.
+// org-dartlang-test:///lib.dart:3:31: Context: This assertion failed.
 //   const Foo(int i) : assert(i > 0);
 //                               ^
-// org-dartlang-test:///lib2.dart:2:7: Context: While analyzing:
+// org-dartlang-test:///lib2.dart:3:7: Context: While analyzing:
 // const fooField = const Foo(0);
 //       ^
 //
diff --git a/pkg/front_end/testcases/incremental/reissue_errors_11.yaml b/pkg/front_end/testcases/incremental/reissue_errors_11.yaml
index 76e71de..e481eaa 100644
--- a/pkg/front_end/testcases/incremental/reissue_errors_11.yaml
+++ b/pkg/front_end/testcases/incremental/reissue_errors_11.yaml
@@ -12,11 +12,13 @@
   - entry: main.dart
     sources:
       main.dart: |
+        // @dart=2.9
         import 'lib.dart';
         main() {
           foo();
         }
       lib.dart: |
+        // @dart=2.9
         class Foo {
           const Foo(int i) : assert(i > 0);
         }
@@ -32,6 +34,7 @@
       - main.dart
     sources:
       main.dart: |
+        // @dart=2.9
         import 'lib.dart';
         import 'lib2.dart';
         main() {
@@ -39,6 +42,7 @@
           bar();
         }
       lib2.dart: |
+        // @dart=2.9
         import 'lib.dart';
         class Bar {
           final Foo x;
@@ -54,6 +58,7 @@
       - lib2.dart
     sources:
       lib2.dart: |
+        // @dart=2.9
         import 'lib.dart';
         class Bar {
           final Foo x;
diff --git a/pkg/front_end/testcases/incremental/reissue_errors_11.yaml.world.2.expect b/pkg/front_end/testcases/incremental/reissue_errors_11.yaml.world.2.expect
index e13f758..3cac950 100644
--- a/pkg/front_end/testcases/incremental/reissue_errors_11.yaml.world.2.expect
+++ b/pkg/front_end/testcases/incremental/reissue_errors_11.yaml.world.2.expect
@@ -24,10 +24,10 @@
 //
 // Problems in library:
 //
-// org-dartlang-test:///lib2.dart:4:27: Error: Constant evaluation error:
+// org-dartlang-test:///lib2.dart:5:27: Error: Constant evaluation error:
 //   const Bar() : x = const Foo(0);
 //                           ^
-// org-dartlang-test:///lib.dart:2:31: Context: This assertion failed.
+// org-dartlang-test:///lib.dart:3:31: Context: This assertion failed.
 //   const Foo(int i) : assert(i > 0);
 //                               ^
 //
diff --git a/pkg/front_end/testcases/incremental/reissue_errors_2.yaml b/pkg/front_end/testcases/incremental/reissue_errors_2.yaml
index 91ce7a3..b3e673f 100644
--- a/pkg/front_end/testcases/incremental/reissue_errors_2.yaml
+++ b/pkg/front_end/testcases/incremental/reissue_errors_2.yaml
@@ -11,10 +11,12 @@
   - entry: main.dart
     sources:
       main.dart: |
+        // @dart=2.9
         import "b.dart";
 
         class A extends B {}
       b.dart: |
+        // @dart=2.9
         import "nonexisting.dart";
 
         class B extends A {}
@@ -28,10 +30,12 @@
   - entry: main.dart
     sources:
       main.dart: |
+        // @dart=2.9
         import "b.dart";
 
         class A extends B {}
       b.dart: |
+        // @dart=2.9
         import "nonexisting.dart";
 
         class B extends A {}
@@ -50,6 +54,7 @@
       - b.dart
     sources:
       b.dart: |
+        // @dart=2.9
         import "main.dart";
 
         class B extends A {}
@@ -61,5 +66,6 @@
       - b.dart
     sources:
       b.dart: |
+        // @dart=2.9
         class B extends Object {}
     expectedLibraryCount: 2
diff --git a/pkg/front_end/testcases/incremental/reissue_errors_2.yaml.world.1.expect b/pkg/front_end/testcases/incremental/reissue_errors_2.yaml.world.1.expect
index 9fca3c1..9137423 100644
--- a/pkg/front_end/testcases/incremental/reissue_errors_2.yaml.world.1.expect
+++ b/pkg/front_end/testcases/incremental/reissue_errors_2.yaml.world.1.expect
@@ -3,7 +3,7 @@
 //
 // Problems in library:
 //
-// org-dartlang-test:///b.dart:3:17: Error: Type 'A' not found.
+// org-dartlang-test:///b.dart:4:17: Error: Type 'A' not found.
 // class B extends A {}
 //                 ^
 //
@@ -40,7 +40,7 @@
 //
 // Problems in library:
 //
-// org-dartlang-test:///b.dart:1:8: Error: Error when reading 'org-dartlang-test:///nonexisting.dart': File org-dartlang-test:///nonexisting.dart does not exist.
+// org-dartlang-test:///b.dart:2:8: Error: Error when reading 'org-dartlang-test:///nonexisting.dart': File org-dartlang-test:///nonexisting.dart does not exist.
 // import "nonexisting.dart";
 //        ^
 //
diff --git a/pkg/front_end/testcases/incremental/reissue_errors_2.yaml.world.2.expect b/pkg/front_end/testcases/incremental/reissue_errors_2.yaml.world.2.expect
index 9fca3c1..9137423 100644
--- a/pkg/front_end/testcases/incremental/reissue_errors_2.yaml.world.2.expect
+++ b/pkg/front_end/testcases/incremental/reissue_errors_2.yaml.world.2.expect
@@ -3,7 +3,7 @@
 //
 // Problems in library:
 //
-// org-dartlang-test:///b.dart:3:17: Error: Type 'A' not found.
+// org-dartlang-test:///b.dart:4:17: Error: Type 'A' not found.
 // class B extends A {}
 //                 ^
 //
@@ -40,7 +40,7 @@
 //
 // Problems in library:
 //
-// org-dartlang-test:///b.dart:1:8: Error: Error when reading 'org-dartlang-test:///nonexisting.dart': File org-dartlang-test:///nonexisting.dart does not exist.
+// org-dartlang-test:///b.dart:2:8: Error: Error when reading 'org-dartlang-test:///nonexisting.dart': File org-dartlang-test:///nonexisting.dart does not exist.
 // import "nonexisting.dart";
 //        ^
 //
diff --git a/pkg/front_end/testcases/incremental/reissue_errors_2.yaml.world.3.expect b/pkg/front_end/testcases/incremental/reissue_errors_2.yaml.world.3.expect
index 9fca3c1..9137423 100644
--- a/pkg/front_end/testcases/incremental/reissue_errors_2.yaml.world.3.expect
+++ b/pkg/front_end/testcases/incremental/reissue_errors_2.yaml.world.3.expect
@@ -3,7 +3,7 @@
 //
 // Problems in library:
 //
-// org-dartlang-test:///b.dart:3:17: Error: Type 'A' not found.
+// org-dartlang-test:///b.dart:4:17: Error: Type 'A' not found.
 // class B extends A {}
 //                 ^
 //
@@ -40,7 +40,7 @@
 //
 // Problems in library:
 //
-// org-dartlang-test:///b.dart:1:8: Error: Error when reading 'org-dartlang-test:///nonexisting.dart': File org-dartlang-test:///nonexisting.dart does not exist.
+// org-dartlang-test:///b.dart:2:8: Error: Error when reading 'org-dartlang-test:///nonexisting.dart': File org-dartlang-test:///nonexisting.dart does not exist.
 // import "nonexisting.dart";
 //        ^
 //
diff --git a/pkg/front_end/testcases/incremental/reissue_errors_2.yaml.world.4.expect b/pkg/front_end/testcases/incremental/reissue_errors_2.yaml.world.4.expect
index 9fca3c1..9137423 100644
--- a/pkg/front_end/testcases/incremental/reissue_errors_2.yaml.world.4.expect
+++ b/pkg/front_end/testcases/incremental/reissue_errors_2.yaml.world.4.expect
@@ -3,7 +3,7 @@
 //
 // Problems in library:
 //
-// org-dartlang-test:///b.dart:3:17: Error: Type 'A' not found.
+// org-dartlang-test:///b.dart:4:17: Error: Type 'A' not found.
 // class B extends A {}
 //                 ^
 //
@@ -40,7 +40,7 @@
 //
 // Problems in library:
 //
-// org-dartlang-test:///b.dart:1:8: Error: Error when reading 'org-dartlang-test:///nonexisting.dart': File org-dartlang-test:///nonexisting.dart does not exist.
+// org-dartlang-test:///b.dart:2:8: Error: Error when reading 'org-dartlang-test:///nonexisting.dart': File org-dartlang-test:///nonexisting.dart does not exist.
 // import "nonexisting.dart";
 //        ^
 //
diff --git a/pkg/front_end/testcases/incremental/reissue_errors_2.yaml.world.5.expect b/pkg/front_end/testcases/incremental/reissue_errors_2.yaml.world.5.expect
index 149ccb1..0b8a54d 100644
--- a/pkg/front_end/testcases/incremental/reissue_errors_2.yaml.world.5.expect
+++ b/pkg/front_end/testcases/incremental/reissue_errors_2.yaml.world.5.expect
@@ -3,7 +3,7 @@
 //
 // Problems in library:
 //
-// org-dartlang-test:///b.dart:3:7: Error: 'B' is a supertype of itself.
+// org-dartlang-test:///b.dart:4:7: Error: 'B' is a supertype of itself.
 // class B extends A {}
 //       ^
 //
@@ -30,7 +30,7 @@
 //
 // Problems in library:
 //
-// org-dartlang-test:///main.dart:3:7: Error: 'A' is a supertype of itself.
+// org-dartlang-test:///main.dart:4:7: Error: 'A' is a supertype of itself.
 // class A extends B {}
 //       ^
 //
diff --git a/pkg/front_end/testcases/incremental/reissue_errors_3.yaml b/pkg/front_end/testcases/incremental/reissue_errors_3.yaml
index 1c74c07..b93e15d 100644
--- a/pkg/front_end/testcases/incremental/reissue_errors_3.yaml
+++ b/pkg/front_end/testcases/incremental/reissue_errors_3.yaml
@@ -12,13 +12,16 @@
     sources:
       .packages: mypackage:mypackage
       main.dart: |
+        // @dart=2.9
         import "package:mypackage/a.dart";
       mypackage/a.dart: |
+        // @dart=2.9
         import "package:mypackage/b.dart";
 
         class Foo<T> {}
         class Bar<T> extends Foo<T> {}
       mypackage/b.dart: |
+        // @dart=2.9
         import "package:mypackage/a.dart";
 
         class Baz extends Bar<int> implements Foo<String> {}
@@ -33,13 +36,16 @@
     sources:
       .packages: mypackage:mypackage
       main.dart: |
+        // @dart=2.9
         import "package:mypackage/a.dart";
       mypackage/a.dart: |
+        // @dart=2.9
         import "package:mypackage/b.dart";
 
         class Foo<T> {}
         class Bar<T> extends Foo<T> {}
       mypackage/b.dart: |
+        // @dart=2.9
         import "package:mypackage/a.dart";
 
         class Baz extends Bar<int> implements Foo<String> {}
@@ -58,6 +64,7 @@
       - mypackage/b.dart
     sources:
       mypackage/b.dart: |
+        // @dart=2.9
         import "package:mypackage/a.dart";
 
         class Baz extends Bar<int> {}
diff --git a/pkg/front_end/testcases/incremental/reissue_errors_3.yaml.world.1.expect b/pkg/front_end/testcases/incremental/reissue_errors_3.yaml.world.1.expect
index cc82408..4c3a08d 100644
--- a/pkg/front_end/testcases/incremental/reissue_errors_3.yaml.world.1.expect
+++ b/pkg/front_end/testcases/incremental/reissue_errors_3.yaml.world.1.expect
@@ -2,7 +2,7 @@
 //
 // Problems in component:
 //
-// org-dartlang-test:///mypackage/b.dart:3:7: Error: 'Baz' can't implement both 'Foo<int>' and 'Foo<String>'
+// org-dartlang-test:///mypackage/b.dart:4:7: Error: 'Baz' can't implement both 'Foo<int>' and 'Foo<String>'
 //  - 'Foo' is from 'package:mypackage/a.dart' ('org-dartlang-test:///mypackage/a.dart').
 // class Baz extends Bar<int> implements Foo<String> {}
 //       ^
diff --git a/pkg/front_end/testcases/incremental/reissue_errors_3.yaml.world.2.expect b/pkg/front_end/testcases/incremental/reissue_errors_3.yaml.world.2.expect
index cc82408..4c3a08d 100644
--- a/pkg/front_end/testcases/incremental/reissue_errors_3.yaml.world.2.expect
+++ b/pkg/front_end/testcases/incremental/reissue_errors_3.yaml.world.2.expect
@@ -2,7 +2,7 @@
 //
 // Problems in component:
 //
-// org-dartlang-test:///mypackage/b.dart:3:7: Error: 'Baz' can't implement both 'Foo<int>' and 'Foo<String>'
+// org-dartlang-test:///mypackage/b.dart:4:7: Error: 'Baz' can't implement both 'Foo<int>' and 'Foo<String>'
 //  - 'Foo' is from 'package:mypackage/a.dart' ('org-dartlang-test:///mypackage/a.dart').
 // class Baz extends Bar<int> implements Foo<String> {}
 //       ^
diff --git a/pkg/front_end/testcases/incremental/reissue_errors_3.yaml.world.3.expect b/pkg/front_end/testcases/incremental/reissue_errors_3.yaml.world.3.expect
index cc82408..4c3a08d 100644
--- a/pkg/front_end/testcases/incremental/reissue_errors_3.yaml.world.3.expect
+++ b/pkg/front_end/testcases/incremental/reissue_errors_3.yaml.world.3.expect
@@ -2,7 +2,7 @@
 //
 // Problems in component:
 //
-// org-dartlang-test:///mypackage/b.dart:3:7: Error: 'Baz' can't implement both 'Foo<int>' and 'Foo<String>'
+// org-dartlang-test:///mypackage/b.dart:4:7: Error: 'Baz' can't implement both 'Foo<int>' and 'Foo<String>'
 //  - 'Foo' is from 'package:mypackage/a.dart' ('org-dartlang-test:///mypackage/a.dart').
 // class Baz extends Bar<int> implements Foo<String> {}
 //       ^
diff --git a/pkg/front_end/testcases/incremental/reissue_errors_3.yaml.world.4.expect b/pkg/front_end/testcases/incremental/reissue_errors_3.yaml.world.4.expect
index cc82408..4c3a08d 100644
--- a/pkg/front_end/testcases/incremental/reissue_errors_3.yaml.world.4.expect
+++ b/pkg/front_end/testcases/incremental/reissue_errors_3.yaml.world.4.expect
@@ -2,7 +2,7 @@
 //
 // Problems in component:
 //
-// org-dartlang-test:///mypackage/b.dart:3:7: Error: 'Baz' can't implement both 'Foo<int>' and 'Foo<String>'
+// org-dartlang-test:///mypackage/b.dart:4:7: Error: 'Baz' can't implement both 'Foo<int>' and 'Foo<String>'
 //  - 'Foo' is from 'package:mypackage/a.dart' ('org-dartlang-test:///mypackage/a.dart').
 // class Baz extends Bar<int> implements Foo<String> {}
 //       ^
diff --git a/pkg/front_end/testcases/incremental/reissue_errors_4.yaml b/pkg/front_end/testcases/incremental/reissue_errors_4.yaml
index 8342cbd..47f9788 100644
--- a/pkg/front_end/testcases/incremental/reissue_errors_4.yaml
+++ b/pkg/front_end/testcases/incremental/reissue_errors_4.yaml
@@ -12,16 +12,20 @@
     sources:
       .packages: mypackage:mypackage
       main.dart: |
+        // @dart=2.9
         import "package:mypackage/a.dart";
       mypackage/a.dart: |
+        // @dart=2.9
         import "package:mypackage/b.dart";
 
         class Foo<T> {}
         class Bar<T> extends Foo<T> {}
       mypackage/b.dart: |
+        // @dart=2.9
         import "package:mypackage/a.dart";
         part "package:mypackage/c.dart";
       mypackage/c.dart: |
+        // @dart=2.9
         part of "package:mypackage/b.dart";
 
         class Baz extends Bar<int> implements Foo<String> {}
@@ -36,16 +40,20 @@
     sources:
       .packages: mypackage:mypackage
       main.dart: |
+        // @dart=2.9
         import "package:mypackage/a.dart";
       mypackage/a.dart: |
+        // @dart=2.9
         import "package:mypackage/b.dart";
 
         class Foo<T> {}
         class Bar<T> extends Foo<T> {}
       mypackage/b.dart: |
+        // @dart=2.9
         import "package:mypackage/a.dart";
         part "package:mypackage/c.dart";
       mypackage/c.dart: |
+        // @dart=2.9
         part of "package:mypackage/b.dart";
 
         class Baz extends Bar<int> implements Foo<String> {}
@@ -64,9 +72,11 @@
       - mypackage/c.dart
     sources:
       mypackage/b.dart: |
+        // @dart=2.9
         import "package:mypackage/a.dart";
         part "package:mypackage/c.dart";
       mypackage/c.dart: |
+        // @dart=2.9
         part of "package:mypackage/b.dart";
 
         class Baz extends Bar<int> {}
diff --git a/pkg/front_end/testcases/incremental/reissue_errors_4.yaml.world.1.expect b/pkg/front_end/testcases/incremental/reissue_errors_4.yaml.world.1.expect
index dcdc78a..5a7c122 100644
--- a/pkg/front_end/testcases/incremental/reissue_errors_4.yaml.world.1.expect
+++ b/pkg/front_end/testcases/incremental/reissue_errors_4.yaml.world.1.expect
@@ -2,7 +2,7 @@
 //
 // Problems in component:
 //
-// org-dartlang-test:///mypackage/c.dart:3:7: Error: 'Baz' can't implement both 'Foo<int>' and 'Foo<String>'
+// org-dartlang-test:///mypackage/c.dart:4:7: Error: 'Baz' can't implement both 'Foo<int>' and 'Foo<String>'
 //  - 'Foo' is from 'package:mypackage/a.dart' ('org-dartlang-test:///mypackage/a.dart').
 // class Baz extends Bar<int> implements Foo<String> {}
 //       ^
diff --git a/pkg/front_end/testcases/incremental/reissue_errors_4.yaml.world.2.expect b/pkg/front_end/testcases/incremental/reissue_errors_4.yaml.world.2.expect
index dcdc78a..5a7c122 100644
--- a/pkg/front_end/testcases/incremental/reissue_errors_4.yaml.world.2.expect
+++ b/pkg/front_end/testcases/incremental/reissue_errors_4.yaml.world.2.expect
@@ -2,7 +2,7 @@
 //
 // Problems in component:
 //
-// org-dartlang-test:///mypackage/c.dart:3:7: Error: 'Baz' can't implement both 'Foo<int>' and 'Foo<String>'
+// org-dartlang-test:///mypackage/c.dart:4:7: Error: 'Baz' can't implement both 'Foo<int>' and 'Foo<String>'
 //  - 'Foo' is from 'package:mypackage/a.dart' ('org-dartlang-test:///mypackage/a.dart').
 // class Baz extends Bar<int> implements Foo<String> {}
 //       ^
diff --git a/pkg/front_end/testcases/incremental/reissue_errors_4.yaml.world.3.expect b/pkg/front_end/testcases/incremental/reissue_errors_4.yaml.world.3.expect
index dcdc78a..5a7c122 100644
--- a/pkg/front_end/testcases/incremental/reissue_errors_4.yaml.world.3.expect
+++ b/pkg/front_end/testcases/incremental/reissue_errors_4.yaml.world.3.expect
@@ -2,7 +2,7 @@
 //
 // Problems in component:
 //
-// org-dartlang-test:///mypackage/c.dart:3:7: Error: 'Baz' can't implement both 'Foo<int>' and 'Foo<String>'
+// org-dartlang-test:///mypackage/c.dart:4:7: Error: 'Baz' can't implement both 'Foo<int>' and 'Foo<String>'
 //  - 'Foo' is from 'package:mypackage/a.dart' ('org-dartlang-test:///mypackage/a.dart').
 // class Baz extends Bar<int> implements Foo<String> {}
 //       ^
diff --git a/pkg/front_end/testcases/incremental/reissue_errors_4.yaml.world.4.expect b/pkg/front_end/testcases/incremental/reissue_errors_4.yaml.world.4.expect
index dcdc78a..5a7c122 100644
--- a/pkg/front_end/testcases/incremental/reissue_errors_4.yaml.world.4.expect
+++ b/pkg/front_end/testcases/incremental/reissue_errors_4.yaml.world.4.expect
@@ -2,7 +2,7 @@
 //
 // Problems in component:
 //
-// org-dartlang-test:///mypackage/c.dart:3:7: Error: 'Baz' can't implement both 'Foo<int>' and 'Foo<String>'
+// org-dartlang-test:///mypackage/c.dart:4:7: Error: 'Baz' can't implement both 'Foo<int>' and 'Foo<String>'
 //  - 'Foo' is from 'package:mypackage/a.dart' ('org-dartlang-test:///mypackage/a.dart').
 // class Baz extends Bar<int> implements Foo<String> {}
 //       ^
diff --git a/pkg/front_end/testcases/incremental/reissue_errors_5.yaml b/pkg/front_end/testcases/incremental/reissue_errors_5.yaml
index 65f2282..36e8361 100644
--- a/pkg/front_end/testcases/incremental/reissue_errors_5.yaml
+++ b/pkg/front_end/testcases/incremental/reissue_errors_5.yaml
@@ -12,18 +12,21 @@
     sources:
       .packages: mypackage:mypackage
       main.dart: |
+        // @dart=2.9
         import "package:mypackage/a.dart" as a;
 
         main() {
           a.main();
         }
       mypackage/a.dart: |
+        // @dart=2.9
         import "package:mypackage/b.dart";
 
         main() {
           foo();
         }
       mypackage/b.dart: |
+        // @dart=2.9
         foo() {
           bar();
         }
@@ -41,6 +44,7 @@
       - package:mypackage/a.dart
     sources:
       mypackage/a.dart: |
+        // @dart=2.9
         import "package:mypackage/b.dart";
 
         main() {
@@ -56,6 +60,7 @@
       - package:mypackage/a.dart
     sources:
       mypackage/a.dart: |
+        // @dart=2.9
         main() {
           foo();
           foo();
diff --git a/pkg/front_end/testcases/incremental/reissue_errors_5.yaml.world.1.expect b/pkg/front_end/testcases/incremental/reissue_errors_5.yaml.world.1.expect
index 8c28bf9..4aad801 100644
--- a/pkg/front_end/testcases/incremental/reissue_errors_5.yaml.world.1.expect
+++ b/pkg/front_end/testcases/incremental/reissue_errors_5.yaml.world.1.expect
@@ -19,12 +19,12 @@
 //
 // Problems in library:
 //
-// org-dartlang-test:///mypackage/b.dart:2:3: Error: Method not found: 'bar'.
+// org-dartlang-test:///mypackage/b.dart:3:3: Error: Method not found: 'bar'.
 //   bar();
 //   ^^^
 //
 
   static method foo() → dynamic {
-    invalid-expression "org-dartlang-test:///mypackage/b.dart:2:3: Error: Method not found: 'bar'.\n  bar();\n  ^^^";
+    invalid-expression "org-dartlang-test:///mypackage/b.dart:3:3: Error: Method not found: 'bar'.\n  bar();\n  ^^^";
   }
 }
diff --git a/pkg/front_end/testcases/incremental/reissue_errors_5.yaml.world.2.expect b/pkg/front_end/testcases/incremental/reissue_errors_5.yaml.world.2.expect
index 8c28bf9..4aad801 100644
--- a/pkg/front_end/testcases/incremental/reissue_errors_5.yaml.world.2.expect
+++ b/pkg/front_end/testcases/incremental/reissue_errors_5.yaml.world.2.expect
@@ -19,12 +19,12 @@
 //
 // Problems in library:
 //
-// org-dartlang-test:///mypackage/b.dart:2:3: Error: Method not found: 'bar'.
+// org-dartlang-test:///mypackage/b.dart:3:3: Error: Method not found: 'bar'.
 //   bar();
 //   ^^^
 //
 
   static method foo() → dynamic {
-    invalid-expression "org-dartlang-test:///mypackage/b.dart:2:3: Error: Method not found: 'bar'.\n  bar();\n  ^^^";
+    invalid-expression "org-dartlang-test:///mypackage/b.dart:3:3: Error: Method not found: 'bar'.\n  bar();\n  ^^^";
   }
 }
diff --git a/pkg/front_end/testcases/incremental/reissue_errors_5.yaml.world.3.expect b/pkg/front_end/testcases/incremental/reissue_errors_5.yaml.world.3.expect
index 3cd7e09..38fff53 100644
--- a/pkg/front_end/testcases/incremental/reissue_errors_5.yaml.world.3.expect
+++ b/pkg/front_end/testcases/incremental/reissue_errors_5.yaml.world.3.expect
@@ -20,12 +20,12 @@
 //
 // Problems in library:
 //
-// org-dartlang-test:///mypackage/b.dart:2:3: Error: Method not found: 'bar'.
+// org-dartlang-test:///mypackage/b.dart:3:3: Error: Method not found: 'bar'.
 //   bar();
 //   ^^^
 //
 
   static method foo() → dynamic {
-    invalid-expression "org-dartlang-test:///mypackage/b.dart:2:3: Error: Method not found: 'bar'.\n  bar();\n  ^^^";
+    invalid-expression "org-dartlang-test:///mypackage/b.dart:3:3: Error: Method not found: 'bar'.\n  bar();\n  ^^^";
   }
 }
diff --git a/pkg/front_end/testcases/incremental/reissue_errors_6.yaml b/pkg/front_end/testcases/incremental/reissue_errors_6.yaml
index 309b436..65569db 100644
--- a/pkg/front_end/testcases/incremental/reissue_errors_6.yaml
+++ b/pkg/front_end/testcases/incremental/reissue_errors_6.yaml
@@ -11,9 +11,11 @@
   - entry: main.dart
     sources:
       main.dart: |
+        // @dart=2.9
         import 'lib.dart';
         class Foo<X extends Bar> {}
       lib.dart: |
+        // @dart=2.9
         // The error is here: Foo is unknown
         // (although it might give some other error instead)
         class Bar<X extends Foo<Null>> {}
@@ -26,6 +28,7 @@
       - main.dart
     sources:
       main.dart: |
+        // @dart=2.9
         import 'lib.dart';
         class Foo {}
     expectInitializeFromDill: false
@@ -38,9 +41,11 @@
       - lib.dart
     sources:
       main.dart: |
+        // @dart=2.9
         import 'lib.dart';
         class Foo<X extends Bar> {}
       lib.dart: |
+        // @dart=2.9
         import 'main.dart';
         class Bar<X extends Foo<Null>> {}
     expectInitializeFromDill: false
diff --git a/pkg/front_end/testcases/incremental/reissue_errors_6.yaml.world.1.expect b/pkg/front_end/testcases/incremental/reissue_errors_6.yaml.world.1.expect
index 3d2f012..4fb5295 100644
--- a/pkg/front_end/testcases/incremental/reissue_errors_6.yaml.world.1.expect
+++ b/pkg/front_end/testcases/incremental/reissue_errors_6.yaml.world.1.expect
@@ -3,11 +3,11 @@
 //
 // Problems in library:
 //
-// org-dartlang-test:///lib.dart:3:21: Error: Expected 0 type arguments.
+// org-dartlang-test:///lib.dart:4:21: Error: Expected 0 type arguments.
 // class Bar<X extends Foo<Null>> {}
 //                     ^
 //
-// org-dartlang-test:///lib.dart:3:21: Error: Type 'Foo' not found.
+// org-dartlang-test:///lib.dart:4:21: Error: Type 'Foo' not found.
 // class Bar<X extends Foo<Null>> {}
 //                     ^^^
 //
diff --git a/pkg/front_end/testcases/incremental/reissue_errors_6.yaml.world.2.expect b/pkg/front_end/testcases/incremental/reissue_errors_6.yaml.world.2.expect
index 4033273..5a65282 100644
--- a/pkg/front_end/testcases/incremental/reissue_errors_6.yaml.world.2.expect
+++ b/pkg/front_end/testcases/incremental/reissue_errors_6.yaml.world.2.expect
@@ -3,11 +3,11 @@
 //
 // Problems in library:
 //
-// org-dartlang-test:///lib.dart:3:21: Error: Expected 0 type arguments.
+// org-dartlang-test:///lib.dart:4:21: Error: Expected 0 type arguments.
 // class Bar<X extends Foo<Null>> {}
 //                     ^
 //
-// org-dartlang-test:///lib.dart:3:21: Error: Type 'Foo' not found.
+// org-dartlang-test:///lib.dart:4:21: Error: Type 'Foo' not found.
 // class Bar<X extends Foo<Null>> {}
 //                     ^^^
 //
diff --git a/pkg/front_end/testcases/incremental/reissue_errors_7.yaml b/pkg/front_end/testcases/incremental/reissue_errors_7.yaml
index 20ae3a1..c316a64 100644
--- a/pkg/front_end/testcases/incremental/reissue_errors_7.yaml
+++ b/pkg/front_end/testcases/incremental/reissue_errors_7.yaml
@@ -11,11 +11,13 @@
   - entry: main.dart
     sources:
       main.dart: |
+        // @dart=2.9
         import 'lib.dart';
         main() {
           foo();
         }
       lib.dart: |
+        // @dart=2.9
         import 'nonexisting.dart';
         foo() {}
     expectedLibraryCount: 2
@@ -27,6 +29,7 @@
       - main.dart
     sources:
       main.dart: |
+        // @dart=2.9
         import 'lib.dart';
         main() {
           foo();
@@ -41,6 +44,7 @@
       - main.dart
     sources:
       main.dart: |
+        // @dart=2.9
         import 'lib.dart';
         import 'lib2.dart';
         main() {
@@ -48,6 +52,7 @@
           bar();
         }
       lib2.dart: |
+        // @dart=2.9
         bar() {
           print("hello");
         }
@@ -60,6 +65,7 @@
       - lib2.dart
     sources:
       lib2.dart: |
+        // @dart=2.9
         bar() {
           print("hello2");
         }
@@ -73,6 +79,7 @@
       - lib.dart
     sources:
       lib.dart: |
+        // @dart=2.9
         foo() {}
     expectInitializeFromDill: false
     expectedLibraryCount: 3
diff --git a/pkg/front_end/testcases/incremental/reissue_errors_7.yaml.world.1.expect b/pkg/front_end/testcases/incremental/reissue_errors_7.yaml.world.1.expect
index 2e97886..4639701 100644
--- a/pkg/front_end/testcases/incremental/reissue_errors_7.yaml.world.1.expect
+++ b/pkg/front_end/testcases/incremental/reissue_errors_7.yaml.world.1.expect
@@ -17,7 +17,7 @@
 //
 // Problems in library:
 //
-// org-dartlang-test:///lib.dart:1:8: Error: Error when reading 'org-dartlang-test:///nonexisting.dart': File org-dartlang-test:///nonexisting.dart does not exist.
+// org-dartlang-test:///lib.dart:2:8: Error: Error when reading 'org-dartlang-test:///nonexisting.dart': File org-dartlang-test:///nonexisting.dart does not exist.
 // import 'nonexisting.dart';
 //        ^
 //
diff --git a/pkg/front_end/testcases/incremental/reissue_errors_7.yaml.world.2.expect b/pkg/front_end/testcases/incremental/reissue_errors_7.yaml.world.2.expect
index 65648e6..912f55c 100644
--- a/pkg/front_end/testcases/incremental/reissue_errors_7.yaml.world.2.expect
+++ b/pkg/front_end/testcases/incremental/reissue_errors_7.yaml.world.2.expect
@@ -18,7 +18,7 @@
 //
 // Problems in library:
 //
-// org-dartlang-test:///lib.dart:1:8: Error: Error when reading 'org-dartlang-test:///nonexisting.dart': File org-dartlang-test:///nonexisting.dart does not exist.
+// org-dartlang-test:///lib.dart:2:8: Error: Error when reading 'org-dartlang-test:///nonexisting.dart': File org-dartlang-test:///nonexisting.dart does not exist.
 // import 'nonexisting.dart';
 //        ^
 //
diff --git a/pkg/front_end/testcases/incremental/reissue_errors_7.yaml.world.3.expect b/pkg/front_end/testcases/incremental/reissue_errors_7.yaml.world.3.expect
index 061945a..4066f1b 100644
--- a/pkg/front_end/testcases/incremental/reissue_errors_7.yaml.world.3.expect
+++ b/pkg/front_end/testcases/incremental/reissue_errors_7.yaml.world.3.expect
@@ -25,7 +25,7 @@
 //
 // Problems in library:
 //
-// org-dartlang-test:///lib.dart:1:8: Error: Error when reading 'org-dartlang-test:///nonexisting.dart': File org-dartlang-test:///nonexisting.dart does not exist.
+// org-dartlang-test:///lib.dart:2:8: Error: Error when reading 'org-dartlang-test:///nonexisting.dart': File org-dartlang-test:///nonexisting.dart does not exist.
 // import 'nonexisting.dart';
 //        ^
 //
diff --git a/pkg/front_end/testcases/incremental/reissue_errors_7.yaml.world.4.expect b/pkg/front_end/testcases/incremental/reissue_errors_7.yaml.world.4.expect
index 48606d6..c9821f8 100644
--- a/pkg/front_end/testcases/incremental/reissue_errors_7.yaml.world.4.expect
+++ b/pkg/front_end/testcases/incremental/reissue_errors_7.yaml.world.4.expect
@@ -25,7 +25,7 @@
 //
 // Problems in library:
 //
-// org-dartlang-test:///lib.dart:1:8: Error: Error when reading 'org-dartlang-test:///nonexisting.dart': File org-dartlang-test:///nonexisting.dart does not exist.
+// org-dartlang-test:///lib.dart:2:8: Error: Error when reading 'org-dartlang-test:///nonexisting.dart': File org-dartlang-test:///nonexisting.dart does not exist.
 // import 'nonexisting.dart';
 //        ^
 //
diff --git a/pkg/front_end/testcases/incremental/reissue_errors_8.yaml b/pkg/front_end/testcases/incremental/reissue_errors_8.yaml
index 3eb0124..0835d55 100644
--- a/pkg/front_end/testcases/incremental/reissue_errors_8.yaml
+++ b/pkg/front_end/testcases/incremental/reissue_errors_8.yaml
@@ -12,11 +12,13 @@
   - entry: main.dart
     sources:
       main.dart: |
+        // @dart=2.9
         import 'lib.dart';
         main() {
           foo();
         }
       lib.dart: |
+        // @dart=2.9
         class Foo {
           const Foo(int i) : assert(i > 0);
         }
@@ -32,12 +34,14 @@
       - main.dart
     sources:
       main.dart: |
+        // @dart=2.9
         import 'lib.dart';
         import 'lib2.dart';
         main() {
           foo();
         }
       lib2.dart: |
+        // @dart=2.9
         import 'lib.dart';
         bar() {
           const Foo(0);
@@ -51,6 +55,7 @@
       - main.dart
     sources:
       main.dart: |
+        // @dart=2.9
         import 'lib.dart';
         main() {
           foo();
diff --git a/pkg/front_end/testcases/incremental/reissue_errors_8.yaml.world.2.expect b/pkg/front_end/testcases/incremental/reissue_errors_8.yaml.world.2.expect
index 72d51f4..15f54b2 100644
--- a/pkg/front_end/testcases/incremental/reissue_errors_8.yaml.world.2.expect
+++ b/pkg/front_end/testcases/incremental/reissue_errors_8.yaml.world.2.expect
@@ -24,10 +24,10 @@
 //
 // Problems in library:
 //
-// org-dartlang-test:///lib2.dart:3:9: Error: Constant evaluation error:
+// org-dartlang-test:///lib2.dart:4:9: Error: Constant evaluation error:
 //   const Foo(0);
 //         ^
-// org-dartlang-test:///lib.dart:2:31: Context: This assertion failed.
+// org-dartlang-test:///lib.dart:3:31: Context: This assertion failed.
 //   const Foo(int i) : assert(i > 0);
 //                               ^
 //
diff --git a/pkg/front_end/testcases/incremental/reissue_errors_9.yaml b/pkg/front_end/testcases/incremental/reissue_errors_9.yaml
index 308cc60..ca1a5f1 100644
--- a/pkg/front_end/testcases/incremental/reissue_errors_9.yaml
+++ b/pkg/front_end/testcases/incremental/reissue_errors_9.yaml
@@ -13,11 +13,13 @@
   - entry: main.dart
     sources:
       main.dart: |
+        // @dart=2.9
         import 'lib.dart';
         main() {
           foo();
         }
       lib.dart: |
+        // @dart=2.9
         class Foo {
           const Foo(int i) : assert(i > 0);
         }
@@ -33,6 +35,7 @@
       - main.dart
     sources:
       main.dart: |
+        // @dart=2.9
         import 'lib.dart';
         import 'lib2.dart';
         import 'lib3.dart';
@@ -41,9 +44,11 @@
           print(fooField2);
         }
       lib2.dart: |
+        // @dart=2.9
         import 'lib.dart';
         const fooField = const Foo(0);
       lib3.dart: |
+        // @dart=2.9
         import 'lib2.dart';
         const fooField2 = fooField;
     expectInitializeFromDill: false
@@ -55,6 +60,7 @@
       - lib2.dart
     sources:
       lib2.dart: |
+        // @dart=2.9
         import 'lib.dart';
         const fooField = const Foo(1);
     expectInitializeFromDill: false
diff --git a/pkg/front_end/testcases/incremental/reissue_errors_9.yaml.world.2.expect b/pkg/front_end/testcases/incremental/reissue_errors_9.yaml.world.2.expect
index 0fd2abb..1ba9798 100644
--- a/pkg/front_end/testcases/incremental/reissue_errors_9.yaml.world.2.expect
+++ b/pkg/front_end/testcases/incremental/reissue_errors_9.yaml.world.2.expect
@@ -24,13 +24,13 @@
 //
 // Problems in library:
 //
-// org-dartlang-test:///lib2.dart:2:24: Error: Constant evaluation error:
+// org-dartlang-test:///lib2.dart:3:24: Error: Constant evaluation error:
 // const fooField = const Foo(0);
 //                        ^
-// org-dartlang-test:///lib.dart:2:31: Context: This assertion failed.
+// org-dartlang-test:///lib.dart:3:31: Context: This assertion failed.
 //   const Foo(int i) : assert(i > 0);
 //                               ^
-// org-dartlang-test:///lib2.dart:2:7: Context: While analyzing:
+// org-dartlang-test:///lib2.dart:3:7: Context: While analyzing:
 // const fooField = const Foo(0);
 //       ^
 //
@@ -43,13 +43,13 @@
 //
 // Problems in library:
 //
-// org-dartlang-test:///lib3.dart:2:19: Error: Constant evaluation error:
+// org-dartlang-test:///lib3.dart:3:19: Error: Constant evaluation error:
 // const fooField2 = fooField;
 //                   ^
-// org-dartlang-test:///lib.dart:2:31: Context: This assertion failed.
+// org-dartlang-test:///lib.dart:3:31: Context: This assertion failed.
 //   const Foo(int i) : assert(i > 0);
 //                               ^
-// org-dartlang-test:///lib3.dart:2:7: Context: While analyzing:
+// org-dartlang-test:///lib3.dart:3:7: Context: While analyzing:
 // const fooField2 = fooField;
 //       ^
 //
diff --git a/pkg/front_end/testcases/incremental/remove_import_with_error.yaml b/pkg/front_end/testcases/incremental/remove_import_with_error.yaml
index 5965f18..2451af9 100644
--- a/pkg/front_end/testcases/incremental/remove_import_with_error.yaml
+++ b/pkg/front_end/testcases/incremental/remove_import_with_error.yaml
@@ -13,6 +13,7 @@
     warnings: false
     sources:
       main.dart: |
+        // @dart=2.9
         library mainLibrary;
         import "b.dart" as b;
 
@@ -20,6 +21,7 @@
           b.foo();
         }
       b.dart: |
+        // @dart=2.9
         library bLibrary;
 
         foo() {
@@ -43,12 +45,14 @@
     warnings: false
     sources:
       main.dart: |
+        // @dart=2.9
         library mainLibrary;
 
         main() {
           print("hello");
         }
       b.dart: |
+        // @dart=2.9
         library bLibrary;
 
         foo() {
diff --git a/pkg/front_end/testcases/incremental/remove_import_with_error.yaml.world.1.expect b/pkg/front_end/testcases/incremental/remove_import_with_error.yaml.world.1.expect
index 4f98801..542be09 100644
--- a/pkg/front_end/testcases/incremental/remove_import_with_error.yaml.world.1.expect
+++ b/pkg/front_end/testcases/incremental/remove_import_with_error.yaml.world.1.expect
@@ -2,7 +2,7 @@
 //
 // Problems in component:
 //
-// org-dartlang-test:///b.dart:14:7: Error: 'C' can't implement both 'I<int>' and 'I<String>'
+// org-dartlang-test:///b.dart:15:7: Error: 'C' can't implement both 'I<int>' and 'I<String>'
 //  - 'I' is from 'org-dartlang-test:///b.dart'.
 // class C extends A implements B {}
 //       ^
diff --git a/pkg/front_end/testcases/incremental/remove_language_version.yaml b/pkg/front_end/testcases/incremental/remove_language_version.yaml
index fc000e4..dcd410c 100644
--- a/pkg/front_end/testcases/incremental/remove_language_version.yaml
+++ b/pkg/front_end/testcases/incremental/remove_language_version.yaml
@@ -10,7 +10,6 @@
 type: newworld
 worlds:
   - entry: main.dart
-    experiments: non-nullable
     errors: true
     warnings: false
     sources:
@@ -21,7 +20,6 @@
         }
     expectedLibraryCount: 1
   - entry: main.dart
-    experiments: non-nullable
     invalidate:
       - main.dart
     errors: false
diff --git a/pkg/front_end/testcases/incremental/remove_language_version.yaml.world.1.expect b/pkg/front_end/testcases/incremental/remove_language_version.yaml.world.1.expect
index 033ad48..32f26ec 100644
--- a/pkg/front_end/testcases/incremental/remove_language_version.yaml.world.1.expect
+++ b/pkg/front_end/testcases/incremental/remove_language_version.yaml.world.1.expect
@@ -4,7 +4,7 @@
 // Problems in library:
 //
 // org-dartlang-test:///main.dart:3:6: Error: Null safety features are disabled for this library.
-// Try removing the `@dart=` annotation or setting the language version to 2.10 or higher.
+// Try removing the `@dart=` annotation or setting the language version to 2.12 or higher.
 //   int? i;
 //      ^
 // org-dartlang-test:///main.dart:1:1: Context: This is the annotation that opts out this library from null safety features.
diff --git a/pkg/front_end/testcases/incremental/strongmode_mixins.yaml b/pkg/front_end/testcases/incremental/strongmode_mixins.yaml
index f644133..ee75714 100644
--- a/pkg/front_end/testcases/incremental/strongmode_mixins.yaml
+++ b/pkg/front_end/testcases/incremental/strongmode_mixins.yaml
@@ -12,8 +12,10 @@
   - a.dart
 sources:
   a.dart: |
+    // @dart=2.9
     import 'b.dart';
     class A extends Object with B<Object>, C {}
   b.dart: |
+    // @dart=2.9
     abstract class C<T extends Object> extends Object with B<T> {}
     abstract class B<ChildType extends Object> extends Object {}
\ No newline at end of file
diff --git a/pkg/front_end/testcases/incremental/strongmode_mixins_2.yaml b/pkg/front_end/testcases/incremental/strongmode_mixins_2.yaml
index 9238c66..19f8ea2 100644
--- a/pkg/front_end/testcases/incremental/strongmode_mixins_2.yaml
+++ b/pkg/front_end/testcases/incremental/strongmode_mixins_2.yaml
@@ -10,9 +10,11 @@
   - a.dart
 sources:
   a.dart: |
+    // @dart=2.9
     import 'b.dart';
     class A extends Object with B<C>, D {}
   b.dart: |
+    // @dart=2.9
     mixin B<ChildType extends Object> {
       ChildType get child => null;
       set child(ChildType value) {}
diff --git a/pkg/front_end/testcases/incremental/type_change_on_recompile.yaml b/pkg/front_end/testcases/incremental/type_change_on_recompile.yaml
index 40aae93..c41e41a 100644
--- a/pkg/front_end/testcases/incremental/type_change_on_recompile.yaml
+++ b/pkg/front_end/testcases/incremental/type_change_on_recompile.yaml
@@ -25,6 +25,7 @@
   - entry: main.dart
     sources:
       main.dart: |
+        // @dart=2.9
         import 'lib.dart';
         class A extends B with C, D {
             A(E parameter) : super.named(parameter);
@@ -32,6 +33,7 @@
         mixin C { }
         mixin D { }
       lib.dart: |
+        // @dart=2.9
         class E {}
         abstract class B {
           final E _field;
diff --git a/pkg/front_end/testcases/incremental/typedef_crash_01.yaml b/pkg/front_end/testcases/incremental/typedef_crash_01.yaml
index ca9f7f1..44cbeeb 100644
--- a/pkg/front_end/testcases/incremental/typedef_crash_01.yaml
+++ b/pkg/front_end/testcases/incremental/typedef_crash_01.yaml
@@ -10,9 +10,11 @@
     errors: false
     sources:
       main.dart: |
+        // @dart=2.9
         import "lib.dart";
         typedef G<T> = Function(F<T>);
       lib.dart: |
+        // @dart=2.9
         typedef F<T> = Function();
     expectedLibraryCount: 2
   - entry: main.dart
@@ -22,6 +24,7 @@
       - main.dart
     sources:
       main.dart: |
+        // @dart=2.9
         import "lib.dart";
         typedef G<T> = Function(F<T>);
         main() {
diff --git a/pkg/front_end/testcases/incremental/unused_file.yaml b/pkg/front_end/testcases/incremental/unused_file.yaml
index 1282d0d..c2569c1 100644
--- a/pkg/front_end/testcases/incremental/unused_file.yaml
+++ b/pkg/front_end/testcases/incremental/unused_file.yaml
@@ -12,12 +12,14 @@
   - entry: main.dart
     sources:
       main.dart: |
+        // @dart=2.9
         import "b.dart";
         main() {
           print("hello");
           b();
         }
       b.dart: |
+        // @dart=2.9
         b() {
           print("b");
         }
@@ -27,10 +29,12 @@
       - main.dart
     sources:
       main.dart: |
+        // @dart=2.9
         main() {
           print("hello");
         }
       b.dart: |
+        // @dart=2.9
         b() {
           print("b");
         }
diff --git a/pkg/front_end/testcases/incremental/updated_package_1.yaml b/pkg/front_end/testcases/incremental/updated_package_1.yaml
index 0a24fa7..6950f98 100644
--- a/pkg/front_end/testcases/incremental/updated_package_1.yaml
+++ b/pkg/front_end/testcases/incremental/updated_package_1.yaml
@@ -12,12 +12,14 @@
   - entry: main.dart
     sources:
       main.dart: |
+        // @dart=2.9
         import "package:example/b.dart";
         main() {
           print("hello");
           b();
         }
       package_0.1.0/a.dart: |
+        // @dart=2.9
         a() {
           la1();
         }
@@ -25,6 +27,7 @@
           print("v0.1.0");
         }
       package_0.1.0/b.dart: |
+        // @dart=2.9
         import "a.dart";
         b() {
           a();
@@ -39,12 +42,14 @@
     expectInitializeFromDill: false
     sources:
       main.dart: |
+        // @dart=2.9
         import "package:example/b.dart";
         main() {
           print("hello");
           b();
         }
       package_0.1.0/a.dart: |
+        // @dart=2.9
         a() {
           la1();
         }
@@ -52,11 +57,13 @@
           print("v0.1.0");
         }
       package_0.1.0/b.dart: |
+        // @dart=2.9
         import "a.dart";
         b() {
           a();
         }
       package_0.1.1/b.dart: |
+        // @dart=2.9
         b() {
           print("hello from v0.1.1");
         }
diff --git a/pkg/front_end/testcases/incremental/updated_package_2.yaml b/pkg/front_end/testcases/incremental/updated_package_2.yaml
index ad7756f..34110ba 100644
--- a/pkg/front_end/testcases/incremental/updated_package_2.yaml
+++ b/pkg/front_end/testcases/incremental/updated_package_2.yaml
@@ -12,12 +12,14 @@
   - entry: main.dart
     sources:
       main.dart: |
+        // @dart=2.9
         import "package:example/b.dart";
         main() {
           print("hello");
           b();
         }
       package_0.1.0/a.dart: |
+        // @dart=2.9
         a() {
           la1();
         }
@@ -25,6 +27,7 @@
           print("v0.1.0");
         }
       package_0.1.0/b.dart: |
+        // @dart=2.9
         import "a.dart";
         b() {
           a();
@@ -38,12 +41,14 @@
     expectInitializeFromDill: false
     sources:
       main.dart: |
+        // @dart=2.9
         import "package:example/b.dart";
         main() {
           print("hello");
           b();
         }
       package_0.1.0/a.dart: |
+        // @dart=2.9
         a() {
           la1();
         }
@@ -51,11 +56,13 @@
           print("v0.1.0");
         }
       package_0.1.0/b.dart: |
+        // @dart=2.9
         import "a.dart";
         b() {
           a();
         }
       package_0.1.1/b.dart: |
+        // @dart=2.9
         b() {
           print("hello from v0.1.1");
         }
diff --git a/pkg/front_end/testcases/incremental/updated_package_3.yaml b/pkg/front_end/testcases/incremental/updated_package_3.yaml
index ed1f6ab..faf431e 100644
--- a/pkg/front_end/testcases/incremental/updated_package_3.yaml
+++ b/pkg/front_end/testcases/incremental/updated_package_3.yaml
@@ -12,12 +12,14 @@
   - entry: main.dart
     sources:
       main.dart: |
+        // @dart=2.9
         import "package:example/b.dart";
         main() {
           print("hello");
           b();
         }
       package_0.1.0/a.dart: |
+        // @dart=2.9
         a() {
           la1();
         }
@@ -25,6 +27,7 @@
           print("v0.1.0");
         }
       package_0.1.0/b.dart: |
+        // @dart=2.9
         import "a.dart";
         b() {
           a();
@@ -39,6 +42,7 @@
       - .packages
     sources:
       package_0.1.1/b.dart: |
+        // @dart=2.9
         b() {
           print("hello from v0.1.1");
         }
diff --git a/pkg/front_end/testcases/incremental/updated_package_4.yaml b/pkg/front_end/testcases/incremental/updated_package_4.yaml
index 5cb7d9c..4d2fd14 100644
--- a/pkg/front_end/testcases/incremental/updated_package_4.yaml
+++ b/pkg/front_end/testcases/incremental/updated_package_4.yaml
@@ -11,12 +11,14 @@
   - entry: main.dart
     sources:
       main.dart: |
+        // @dart=2.9
         import "package:example/b.dart";
         main() {
           print("hello");
           b();
         }
       package/b.dart: |
+        // @dart=2.9
         b() {
           print("hello from package");
         }
diff --git a/pkg/front_end/testcases/incremental/updated_package_4.yaml.world.2.expect b/pkg/front_end/testcases/incremental/updated_package_4.yaml.world.2.expect
index 8607a05..3dd8e8b 100644
--- a/pkg/front_end/testcases/incremental/updated_package_4.yaml.world.2.expect
+++ b/pkg/front_end/testcases/incremental/updated_package_4.yaml.world.2.expect
@@ -3,7 +3,7 @@
 //
 // Problems in library:
 //
-// org-dartlang-test:///main.dart:4:3: Error: Method not found: 'b'.
+// org-dartlang-test:///main.dart:5:3: Error: Method not found: 'b'.
 //   b();
 //   ^
 //
@@ -12,14 +12,14 @@
 
   static method main() → dynamic {
     dart.core::print("hello");
-    invalid-expression "org-dartlang-test:///main.dart:4:3: Error: Method not found: 'b'.\n  b();\n  ^";
+    invalid-expression "org-dartlang-test:///main.dart:5:3: Error: Method not found: 'b'.\n  b();\n  ^";
   }
 }
 library from "package:example/b.dart" as b {
 //
 // Problems in library:
 //
-// org-dartlang-test:///main.dart:1:8: Error: Not found: 'package:example/b.dart'
+// org-dartlang-test:///main.dart:2:8: Error: Not found: 'package:example/b.dart'
 // import "package:example/b.dart";
 //        ^
 //
diff --git a/pkg/front_end/testcases/incremental/updated_package_uri.yaml b/pkg/front_end/testcases/incremental/updated_package_uri.yaml
index f716e96..f8e7ad9 100644
--- a/pkg/front_end/testcases/incremental/updated_package_uri.yaml
+++ b/pkg/front_end/testcases/incremental/updated_package_uri.yaml
@@ -11,12 +11,14 @@
   - entry: main.dart
     sources:
       main.dart: |
+        // @dart=2.9
         import "package:example/b.dart";
         main() {
           print("hello");
           b();
         }
       package_0.1.0/a.dart: |
+        // @dart=2.9
         a() {
           la1();
         }
@@ -24,6 +26,7 @@
           print("v0.1.0");
         }
       package_0.1.0/b.dart: |
+        // @dart=2.9
         import "a.dart";
         b() {
           a();
@@ -35,6 +38,7 @@
     expectInitializeFromDill: false
     sources:
       package_0.1.1/b.dart: |
+        // @dart=2.9
         b() {
           print("hello from v0.1.1");
         }
diff --git a/pkg/front_end/testcases/incremental/vm_IRTest_TypedDataAOT_FunctionalIndexError.yaml b/pkg/front_end/testcases/incremental/vm_IRTest_TypedDataAOT_FunctionalIndexError.yaml
index 22c9d3b..eabf11d 100644
--- a/pkg/front_end/testcases/incremental/vm_IRTest_TypedDataAOT_FunctionalIndexError.yaml
+++ b/pkg/front_end/testcases/incremental/vm_IRTest_TypedDataAOT_FunctionalIndexError.yaml
@@ -9,6 +9,7 @@
   - entry: set-Uint8List.dart
     sources:
       set-Uint8List.dart: |
+        // @dart=2.9
         import 'dart:typed_data';
         void setUint8List(Uint8List list, int index, int value) {
           list[index] = value;
@@ -22,6 +23,7 @@
       - set-Int8List.dart
     sources:
       set-Int8List.dart: |
+        // @dart=2.9
         import 'dart:typed_data';
         void setInt8List(Int8List list, int index, int value) {
           list[index] = value;
@@ -35,6 +37,7 @@
       - set-Uint8List.dart
     sources:
       set-Uint8List.dart: |
+        // @dart=2.9
         import 'dart:typed_data';
         void setUint8List(Uint8List list, int index, int value) {
           list[index] = value;
diff --git a/pkg/front_end/testcases/incremental/working_with_synthetic_libraries_1.yaml b/pkg/front_end/testcases/incremental/working_with_synthetic_libraries_1.yaml
index 9f3b66a..0d6af65 100644
--- a/pkg/front_end/testcases/incremental/working_with_synthetic_libraries_1.yaml
+++ b/pkg/front_end/testcases/incremental/working_with_synthetic_libraries_1.yaml
@@ -11,8 +11,10 @@
   - entry: main.dart
     sources:
       main.dart: |
+        // @dart=2.9
         import "b.dart";
       b.dart: |
+        // @dart=2.9
         import "nonexisting.dart";
     expectedLibraryCount: 2
     expectedSyntheticLibraryCount: 1
@@ -22,8 +24,10 @@
       - main.dart
     sources:
       main.dart: |
+        // @dart=2.9
         import "b.dart";
       b.dart: |
+        // @dart=2.9
         import "nonexisting.dart";
     expectedLibraryCount: 2
     expectedSyntheticLibraryCount: 1
diff --git a/pkg/front_end/testcases/incremental/working_with_synthetic_libraries_1.yaml.world.1.expect b/pkg/front_end/testcases/incremental/working_with_synthetic_libraries_1.yaml.world.1.expect
index 3e591c7..a861bfe 100644
--- a/pkg/front_end/testcases/incremental/working_with_synthetic_libraries_1.yaml.world.1.expect
+++ b/pkg/front_end/testcases/incremental/working_with_synthetic_libraries_1.yaml.world.1.expect
@@ -13,7 +13,7 @@
 //
 // Problems in library:
 //
-// org-dartlang-test:///b.dart:1:8: Error: Error when reading 'org-dartlang-test:///nonexisting.dart': File org-dartlang-test:///nonexisting.dart does not exist.
+// org-dartlang-test:///b.dart:2:8: Error: Error when reading 'org-dartlang-test:///nonexisting.dart': File org-dartlang-test:///nonexisting.dart does not exist.
 // import "nonexisting.dart";
 //        ^
 //
diff --git a/pkg/front_end/testcases/incremental/working_with_synthetic_libraries_1.yaml.world.2.expect b/pkg/front_end/testcases/incremental/working_with_synthetic_libraries_1.yaml.world.2.expect
index 3e591c7..a861bfe 100644
--- a/pkg/front_end/testcases/incremental/working_with_synthetic_libraries_1.yaml.world.2.expect
+++ b/pkg/front_end/testcases/incremental/working_with_synthetic_libraries_1.yaml.world.2.expect
@@ -13,7 +13,7 @@
 //
 // Problems in library:
 //
-// org-dartlang-test:///b.dart:1:8: Error: Error when reading 'org-dartlang-test:///nonexisting.dart': File org-dartlang-test:///nonexisting.dart does not exist.
+// org-dartlang-test:///b.dart:2:8: Error: Error when reading 'org-dartlang-test:///nonexisting.dart': File org-dartlang-test:///nonexisting.dart does not exist.
 // import "nonexisting.dart";
 //        ^
 //
diff --git a/pkg/front_end/testcases/incremental/working_with_synthetic_libraries_2.yaml b/pkg/front_end/testcases/incremental/working_with_synthetic_libraries_2.yaml
index 50f16a6..bb4a675 100644
--- a/pkg/front_end/testcases/incremental/working_with_synthetic_libraries_2.yaml
+++ b/pkg/front_end/testcases/incremental/working_with_synthetic_libraries_2.yaml
@@ -11,6 +11,7 @@
   - entry: main.dart
     sources:
       main.dart: |
+        // @dart=2.9
         import "dart:foo/nonexisting.dart";
     expectedLibraryCount: 1
     expectedSyntheticLibraryCount: 1
diff --git a/pkg/front_end/testcases/incremental/working_with_synthetic_libraries_3.yaml b/pkg/front_end/testcases/incremental/working_with_synthetic_libraries_3.yaml
index 6d8eb3f..48439c7 100644
--- a/pkg/front_end/testcases/incremental/working_with_synthetic_libraries_3.yaml
+++ b/pkg/front_end/testcases/incremental/working_with_synthetic_libraries_3.yaml
@@ -11,6 +11,7 @@
   - entry: main.dart
     sources:
       main.dart: |
+        // @dart=2.9
         part "dart:foo/nonexisting.dart";
     expectedLibraryCount: 1
     expectedSyntheticLibraryCount: 1
diff --git a/pkg/front_end/testcases/incremental/working_with_synthetic_libraries_3.yaml.world.1.expect b/pkg/front_end/testcases/incremental/working_with_synthetic_libraries_3.yaml.world.1.expect
index 34996e7..95c6981 100644
--- a/pkg/front_end/testcases/incremental/working_with_synthetic_libraries_3.yaml.world.1.expect
+++ b/pkg/front_end/testcases/incremental/working_with_synthetic_libraries_3.yaml.world.1.expect
@@ -3,7 +3,7 @@
 //
 // Problems in library:
 //
-// org-dartlang-test:///main.dart:1:6: Error: Can't use 'org-dartlang-untranslatable-uri:dart%3Afoo%2Fnonexisting.dart' as a part, because it has no 'part of' declaration.
+// org-dartlang-test:///main.dart:2:6: Error: Can't use 'org-dartlang-untranslatable-uri:dart%3Afoo%2Fnonexisting.dart' as a part, because it has no 'part of' declaration.
 // part "dart:foo/nonexisting.dart";
 //      ^
 //
diff --git a/pkg/front_end/testcases/incremental/working_with_synthetic_libraries_4.yaml b/pkg/front_end/testcases/incremental/working_with_synthetic_libraries_4.yaml
index 1af29a8..5822b85 100644
--- a/pkg/front_end/testcases/incremental/working_with_synthetic_libraries_4.yaml
+++ b/pkg/front_end/testcases/incremental/working_with_synthetic_libraries_4.yaml
@@ -12,6 +12,7 @@
   - entry: main.dart
     sources:
       main.dart: |
+        // @dart=2.9
         part "package:foo/nonexisting.dart";
     expectedLibraryCount: 1
     expectedSyntheticLibraryCount: 1
diff --git a/pkg/front_end/testcases/incremental/working_with_synthetic_libraries_4.yaml.world.1.expect b/pkg/front_end/testcases/incremental/working_with_synthetic_libraries_4.yaml.world.1.expect
index 76e7779..8b98f2c 100644
--- a/pkg/front_end/testcases/incremental/working_with_synthetic_libraries_4.yaml.world.1.expect
+++ b/pkg/front_end/testcases/incremental/working_with_synthetic_libraries_4.yaml.world.1.expect
@@ -3,7 +3,7 @@
 //
 // Problems in library:
 //
-// org-dartlang-test:///main.dart:1:6: Error: Can't use 'org-dartlang-untranslatable-uri:package%3Afoo%2Fnonexisting.dart' as a part, because it has no 'part of' declaration.
+// org-dartlang-test:///main.dart:2:6: Error: Can't use 'org-dartlang-untranslatable-uri:package%3Afoo%2Fnonexisting.dart' as a part, because it has no 'part of' declaration.
 // part "package:foo/nonexisting.dart";
 //      ^
 //
@@ -14,7 +14,7 @@
 //
 // Problems in library:
 //
-// org-dartlang-test:///main.dart:1:6: Error: Not found: 'package:foo/nonexisting.dart'
+// org-dartlang-test:///main.dart:2:6: Error: Not found: 'package:foo/nonexisting.dart'
 // part "package:foo/nonexisting.dart";
 //      ^
 //
diff --git a/pkg/front_end/testcases/incremental/working_with_synthetic_libraries_5.yaml b/pkg/front_end/testcases/incremental/working_with_synthetic_libraries_5.yaml
index 9aa7ede..7be194b 100644
--- a/pkg/front_end/testcases/incremental/working_with_synthetic_libraries_5.yaml
+++ b/pkg/front_end/testcases/incremental/working_with_synthetic_libraries_5.yaml
@@ -11,6 +11,7 @@
   - entry: main.dart
     sources:
       main.dart: |
+        // @dart=2.9
         import "package:foo/nonexisting.dart";
     expectedLibraryCount: 1
     expectedSyntheticLibraryCount: 1
diff --git a/pkg/front_end/testcases/incremental/working_with_synthetic_libraries_5.yaml.world.1.expect b/pkg/front_end/testcases/incremental/working_with_synthetic_libraries_5.yaml.world.1.expect
index 2ba0d73..48013d7 100644
--- a/pkg/front_end/testcases/incremental/working_with_synthetic_libraries_5.yaml.world.1.expect
+++ b/pkg/front_end/testcases/incremental/working_with_synthetic_libraries_5.yaml.world.1.expect
@@ -8,7 +8,7 @@
 //
 // Problems in library:
 //
-// org-dartlang-test:///main.dart:1:8: Error: Not found: 'package:foo/nonexisting.dart'
+// org-dartlang-test:///main.dart:2:8: Error: Not found: 'package:foo/nonexisting.dart'
 // import "package:foo/nonexisting.dart";
 //        ^
 //
diff --git a/pkg/front_end/testcases/rasta/issue_000032.dart.weak.expect b/pkg/front_end/testcases/rasta/issue_000032.dart.weak.expect
index 4346a6e..2849f6d 100644
--- a/pkg/front_end/testcases/rasta/issue_000032.dart.weak.expect
+++ b/pkg/front_end/testcases/rasta/issue_000032.dart.weak.expect
@@ -11,18 +11,18 @@
 // }
 // ^
 //
-// pkg/front_end/testcases/rasta/issue_000032.dart:7:1: Error: Expected ';' after this.
-// }
-// ^
+// pkg/front_end/testcases/rasta/issue_000032.dart:6:4: Error: Expected ';' after this.
+//   C<
+//    ^
 //
 // pkg/front_end/testcases/rasta/issue_000032.dart:11:1: Error: Expected an identifier, but got '}'.
 // Try inserting an identifier before '}'.
 // }
 // ^
 //
-// pkg/front_end/testcases/rasta/issue_000032.dart:11:1: Error: Expected ';' after this.
-// }
-// ^
+// pkg/front_end/testcases/rasta/issue_000032.dart:10:4: Error: Expected ';' after this.
+//   C<
+//    ^
 //
 // pkg/front_end/testcases/rasta/issue_000032.dart:10:4: Error: The operator '<' isn't defined for the class 'Type'.
 //  - 'Type' is from 'dart:core'.
diff --git a/pkg/front_end/testcases/rasta/issue_000032.dart.weak.outline.expect b/pkg/front_end/testcases/rasta/issue_000032.dart.weak.outline.expect
index 242ea34..dcaeb52 100644
--- a/pkg/front_end/testcases/rasta/issue_000032.dart.weak.outline.expect
+++ b/pkg/front_end/testcases/rasta/issue_000032.dart.weak.outline.expect
@@ -11,9 +11,9 @@
 // }
 // ^
 //
-// pkg/front_end/testcases/rasta/issue_000032.dart:7:1: Error: Expected ';' after this.
-// }
-// ^
+// pkg/front_end/testcases/rasta/issue_000032.dart:6:4: Error: Expected ';' after this.
+//   C<
+//    ^
 //
 import self as self;
 import "dart:core" as core;
diff --git a/pkg/front_end/testcases/rasta/issue_000032.dart.weak.transformed.expect b/pkg/front_end/testcases/rasta/issue_000032.dart.weak.transformed.expect
index 4346a6e..2849f6d 100644
--- a/pkg/front_end/testcases/rasta/issue_000032.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/rasta/issue_000032.dart.weak.transformed.expect
@@ -11,18 +11,18 @@
 // }
 // ^
 //
-// pkg/front_end/testcases/rasta/issue_000032.dart:7:1: Error: Expected ';' after this.
-// }
-// ^
+// pkg/front_end/testcases/rasta/issue_000032.dart:6:4: Error: Expected ';' after this.
+//   C<
+//    ^
 //
 // pkg/front_end/testcases/rasta/issue_000032.dart:11:1: Error: Expected an identifier, but got '}'.
 // Try inserting an identifier before '}'.
 // }
 // ^
 //
-// pkg/front_end/testcases/rasta/issue_000032.dart:11:1: Error: Expected ';' after this.
-// }
-// ^
+// pkg/front_end/testcases/rasta/issue_000032.dart:10:4: Error: Expected ';' after this.
+//   C<
+//    ^
 //
 // pkg/front_end/testcases/rasta/issue_000032.dart:10:4: Error: The operator '<' isn't defined for the class 'Type'.
 //  - 'Type' is from 'dart:core'.
diff --git a/pkg/front_end/testcases/rasta/issue_000039.dart.weak.expect b/pkg/front_end/testcases/rasta/issue_000039.dart.weak.expect
index 238ce88..289c890 100644
--- a/pkg/front_end/testcases/rasta/issue_000039.dart.weak.expect
+++ b/pkg/front_end/testcases/rasta/issue_000039.dart.weak.expect
@@ -12,9 +12,9 @@
 //   }
 //   ^
 //
-// pkg/front_end/testcases/rasta/issue_000039.dart:10:3: Error: Expected ';' after this.
-//   }
-//   ^
+// pkg/front_end/testcases/rasta/issue_000039.dart:9:15: Error: Expected ';' after this.
+//     this.a = x.
+//               ^
 //
 // pkg/front_end/testcases/rasta/issue_000039.dart:13:7: Error: The superclass, 'A', has no unnamed constructor that takes no arguments.
 // class B extends A {
diff --git a/pkg/front_end/testcases/rasta/issue_000039.dart.weak.transformed.expect b/pkg/front_end/testcases/rasta/issue_000039.dart.weak.transformed.expect
index 238ce88..289c890 100644
--- a/pkg/front_end/testcases/rasta/issue_000039.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/rasta/issue_000039.dart.weak.transformed.expect
@@ -12,9 +12,9 @@
 //   }
 //   ^
 //
-// pkg/front_end/testcases/rasta/issue_000039.dart:10:3: Error: Expected ';' after this.
-//   }
-//   ^
+// pkg/front_end/testcases/rasta/issue_000039.dart:9:15: Error: Expected ';' after this.
+//     this.a = x.
+//               ^
 //
 // pkg/front_end/testcases/rasta/issue_000039.dart:13:7: Error: The superclass, 'A', has no unnamed constructor that takes no arguments.
 // class B extends A {
diff --git a/pkg/front_end/testcases/regress/issue_31171.dart.weak.expect b/pkg/front_end/testcases/regress/issue_31171.dart.weak.expect
index 2c87a2a..af8ae54 100644
--- a/pkg/front_end/testcases/regress/issue_31171.dart.weak.expect
+++ b/pkg/front_end/testcases/regress/issue_31171.dart.weak.expect
@@ -6,9 +6,9 @@
 // typedef F = Map<String, dynamic> Function();
 // ^^^^^^^
 //
-// pkg/front_end/testcases/regress/issue_31171.dart:8:1: Error: Expected ';' after this.
-// typedef F = Map<String, dynamic> Function();
-// ^^^^^^^
+// pkg/front_end/testcases/regress/issue_31171.dart:7:11: Error: Expected ';' after this.
+// typedef T =
+//           ^
 //
 // pkg/front_end/testcases/regress/issue_31171.dart:7:11: Error: Can't create typedef from non-function type.
 // typedef T =
diff --git a/pkg/front_end/testcases/regress/issue_31171.dart.weak.outline.expect b/pkg/front_end/testcases/regress/issue_31171.dart.weak.outline.expect
index 0528f74..d0b75ac 100644
--- a/pkg/front_end/testcases/regress/issue_31171.dart.weak.outline.expect
+++ b/pkg/front_end/testcases/regress/issue_31171.dart.weak.outline.expect
@@ -6,9 +6,9 @@
 // typedef F = Map<String, dynamic> Function();
 // ^^^^^^^
 //
-// pkg/front_end/testcases/regress/issue_31171.dart:8:1: Error: Expected ';' after this.
-// typedef F = Map<String, dynamic> Function();
-// ^^^^^^^
+// pkg/front_end/testcases/regress/issue_31171.dart:7:11: Error: Expected ';' after this.
+// typedef T =
+//           ^
 //
 // pkg/front_end/testcases/regress/issue_31171.dart:7:11: Error: Can't create typedef from non-function type.
 // typedef T =
diff --git a/pkg/front_end/testcases/regress/issue_31171.dart.weak.transformed.expect b/pkg/front_end/testcases/regress/issue_31171.dart.weak.transformed.expect
index 2c87a2a..af8ae54 100644
--- a/pkg/front_end/testcases/regress/issue_31171.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/regress/issue_31171.dart.weak.transformed.expect
@@ -6,9 +6,9 @@
 // typedef F = Map<String, dynamic> Function();
 // ^^^^^^^
 //
-// pkg/front_end/testcases/regress/issue_31171.dart:8:1: Error: Expected ';' after this.
-// typedef F = Map<String, dynamic> Function();
-// ^^^^^^^
+// pkg/front_end/testcases/regress/issue_31171.dart:7:11: Error: Expected ';' after this.
+// typedef T =
+//           ^
 //
 // pkg/front_end/testcases/regress/issue_31171.dart:7:11: Error: Can't create typedef from non-function type.
 // typedef T =
diff --git a/pkg/front_end/testcases/regress/issue_31198.dart b/pkg/front_end/testcases/regress/issue_31198.dart
index e0adf99..06128f9 100644
--- a/pkg/front_end/testcases/regress/issue_31198.dart
+++ b/pkg/front_end/testcases/regress/issue_31198.dart
@@ -6,6 +6,8 @@
 
 class B extends A {
   B(): super().foo() {}
+  B.named1(): super().super() {}
+  B.named2(): super().() {}
 }
 
 bad() {
diff --git a/pkg/front_end/testcases/regress/issue_31198.dart.textual_outline.expect b/pkg/front_end/testcases/regress/issue_31198.dart.textual_outline.expect
index 1059c9e..aa17508 100644
--- a/pkg/front_end/testcases/regress/issue_31198.dart.textual_outline.expect
+++ b/pkg/front_end/testcases/regress/issue_31198.dart.textual_outline.expect
@@ -2,6 +2,8 @@
 abstract class A {}
 class B extends A {
   B(): super().foo() {}
+  B.named1(): super().super() {}
+  B.named2(): super().() {}
 }
 bad() {}
 main() {}
diff --git a/pkg/front_end/testcases/regress/issue_31198.dart.weak.expect b/pkg/front_end/testcases/regress/issue_31198.dart.weak.expect
index 3bc5419..ecfe034 100644
--- a/pkg/front_end/testcases/regress/issue_31198.dart.weak.expect
+++ b/pkg/front_end/testcases/regress/issue_31198.dart.weak.expect
@@ -2,6 +2,11 @@
 //
 // Problems in library:
 //
+// pkg/front_end/testcases/regress/issue_31198.dart:10:24: Error: Expected an identifier, but got ')'.
+// Try inserting an identifier before ')'.
+//   B.named2(): super().() {}
+//                        ^
+//
 // pkg/front_end/testcases/regress/issue_31198.dart:8:8: Error: Can't use 'super' as an expression.
 // To delegate a constructor to a super constructor, put the super call as an initializer.
 //   B(): super().foo() {}
@@ -11,6 +16,19 @@
 //   B(): super().foo() {}
 //                ^
 //
+// pkg/front_end/testcases/regress/issue_31198.dart:9:23: Error: Expected identifier, but got 'super'.
+//   B.named1(): super().super() {}
+//                       ^^^^^
+//
+// pkg/front_end/testcases/regress/issue_31198.dart:10:23: Error: Expected an identifier, but got '('.
+// Try inserting an identifier before '('.
+//   B.named2(): super().() {}
+//                       ^
+//
+// pkg/front_end/testcases/regress/issue_31198.dart:10:23: Error: Expected an initializer.
+//   B.named2(): super().() {}
+//                       ^
+//
 import self as self;
 import "dart:core" as core;
 
@@ -35,6 +53,15 @@
 To delegate a constructor to a super constructor, put the super call as an initializer.
   B(): super().foo() {}
        ^"{dynamic}.foo() {}
+  constructor named1() → self::B*
+    : final dynamic #t2 = invalid-expression "pkg/front_end/testcases/regress/issue_31198.dart:9:23: Error: Expected identifier, but got 'super'.
+  B.named1(): super().super() {}
+                      ^^^^^" {}
+  constructor named2() → self::B*
+    : final dynamic #t3 = invalid-expression "pkg/front_end/testcases/regress/issue_31198.dart:10:23: Error: Expected an identifier, but got '('.
+Try inserting an identifier before '('.
+  B.named2(): super().() {}
+                      ^" {}
 }
 static method bad() → dynamic {
   new self::B::•();
diff --git a/pkg/front_end/testcases/regress/issue_31198.dart.weak.outline.expect b/pkg/front_end/testcases/regress/issue_31198.dart.weak.outline.expect
index 60bee53..e898940 100644
--- a/pkg/front_end/testcases/regress/issue_31198.dart.weak.outline.expect
+++ b/pkg/front_end/testcases/regress/issue_31198.dart.weak.outline.expect
@@ -1,4 +1,12 @@
 library;
+//
+// Problems in library:
+//
+// pkg/front_end/testcases/regress/issue_31198.dart:10:24: Error: Expected an identifier, but got ')'.
+// Try inserting an identifier before ')'.
+//   B.named2(): super().() {}
+//                        ^
+//
 import self as self;
 import "dart:core" as core;
 
@@ -19,6 +27,10 @@
 class B extends self::A {
   constructor •() → self::B*
     ;
+  constructor named1() → self::B*
+    ;
+  constructor named2() → self::B*
+    ;
 }
 static method bad() → dynamic
   ;
diff --git a/pkg/front_end/testcases/regress/issue_31198.dart.weak.transformed.expect b/pkg/front_end/testcases/regress/issue_31198.dart.weak.transformed.expect
index 3bc5419..ecfe034 100644
--- a/pkg/front_end/testcases/regress/issue_31198.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/regress/issue_31198.dart.weak.transformed.expect
@@ -2,6 +2,11 @@
 //
 // Problems in library:
 //
+// pkg/front_end/testcases/regress/issue_31198.dart:10:24: Error: Expected an identifier, but got ')'.
+// Try inserting an identifier before ')'.
+//   B.named2(): super().() {}
+//                        ^
+//
 // pkg/front_end/testcases/regress/issue_31198.dart:8:8: Error: Can't use 'super' as an expression.
 // To delegate a constructor to a super constructor, put the super call as an initializer.
 //   B(): super().foo() {}
@@ -11,6 +16,19 @@
 //   B(): super().foo() {}
 //                ^
 //
+// pkg/front_end/testcases/regress/issue_31198.dart:9:23: Error: Expected identifier, but got 'super'.
+//   B.named1(): super().super() {}
+//                       ^^^^^
+//
+// pkg/front_end/testcases/regress/issue_31198.dart:10:23: Error: Expected an identifier, but got '('.
+// Try inserting an identifier before '('.
+//   B.named2(): super().() {}
+//                       ^
+//
+// pkg/front_end/testcases/regress/issue_31198.dart:10:23: Error: Expected an initializer.
+//   B.named2(): super().() {}
+//                       ^
+//
 import self as self;
 import "dart:core" as core;
 
@@ -35,6 +53,15 @@
 To delegate a constructor to a super constructor, put the super call as an initializer.
   B(): super().foo() {}
        ^"{dynamic}.foo() {}
+  constructor named1() → self::B*
+    : final dynamic #t2 = invalid-expression "pkg/front_end/testcases/regress/issue_31198.dart:9:23: Error: Expected identifier, but got 'super'.
+  B.named1(): super().super() {}
+                      ^^^^^" {}
+  constructor named2() → self::B*
+    : final dynamic #t3 = invalid-expression "pkg/front_end/testcases/regress/issue_31198.dart:10:23: Error: Expected an identifier, but got '('.
+Try inserting an identifier before '('.
+  B.named2(): super().() {}
+                      ^" {}
 }
 static method bad() → dynamic {
   new self::B::•();
diff --git a/pkg/front_end/testcases/regress/issue_39035.crash_dart.weak.expect b/pkg/front_end/testcases/regress/issue_39035.crash_dart.weak.expect
index c7801f6..6b4145e 100644
--- a/pkg/front_end/testcases/regress/issue_39035.crash_dart.weak.expect
+++ b/pkg/front_end/testcases/regress/issue_39035.crash_dart.weak.expect
@@ -24,9 +24,9 @@
 // M("${)=
 //       ^
 //
-// pkg/front_end/testcases/regress/issue_39035.crash_dart:5:8: Error: Expected ';' after this.
+// pkg/front_end/testcases/regress/issue_39035.crash_dart:5:7: Error: Expected ';' after this.
 // M("${)=
-//        ^...
+//       ^
 //
 // pkg/front_end/testcases/regress/issue_39035.crash_dart:5:8: Error: Unexpected token ''.
 // M("${)=
diff --git a/pkg/front_end/testcases/regress/issue_39035.crash_dart.weak.transformed.expect b/pkg/front_end/testcases/regress/issue_39035.crash_dart.weak.transformed.expect
index c7801f6..6b4145e 100644
--- a/pkg/front_end/testcases/regress/issue_39035.crash_dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/regress/issue_39035.crash_dart.weak.transformed.expect
@@ -24,9 +24,9 @@
 // M("${)=
 //       ^
 //
-// pkg/front_end/testcases/regress/issue_39035.crash_dart:5:8: Error: Expected ';' after this.
+// pkg/front_end/testcases/regress/issue_39035.crash_dart:5:7: Error: Expected ';' after this.
 // M("${)=
-//        ^...
+//       ^
 //
 // pkg/front_end/testcases/regress/issue_39035.crash_dart:5:8: Error: Unexpected token ''.
 // M("${)=
diff --git a/pkg/kernel/lib/ast.dart b/pkg/kernel/lib/ast.dart
index 9a9f894..7edd205 100644
--- a/pkg/kernel/lib/ast.dart
+++ b/pkg/kernel/lib/ast.dart
@@ -1595,6 +1595,7 @@
 
   @override
   void transformChildren(Transformer v) {
+    v.transformList(annotations, this);
     v.transformList(typeParameters, this);
     // ignore: unnecessary_null_comparison
     if (onType != null) {
@@ -1604,6 +1605,7 @@
 
   @override
   void transformOrRemoveChildren(RemovingTransformer v) {
+    v.transformExpressionList(annotations, this);
     v.transformTypeParameterList(typeParameters, this);
     // ignore: unnecessary_null_comparison
     if (onType != null) {
diff --git a/pkg/vm_service/test/mark_main_isolate_as_system_isolate_test.dart b/pkg/vm_service/test/mark_main_isolate_as_system_isolate_test.dart
index c69323d..fb97b82 100644
--- a/pkg/vm_service/test/mark_main_isolate_as_system_isolate_test.dart
+++ b/pkg/vm_service/test/mark_main_isolate_as_system_isolate_test.dart
@@ -2,6 +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.
 
+// VMOptions=--enable-isolate-groups
+// VMOptions=--no-enable-isolate-groups
+
+import 'dart:developer';
+import 'dart:io';
 import 'dart:isolate';
 import 'package:test/test.dart';
 import 'package:vm_service/vm_service.dart' as service;
@@ -9,31 +14,33 @@
 import 'common/service_test_common.dart';
 import 'common/test_helper.dart';
 
-foo(void _) async {
-  print('non system isolate started');
-  while (true) {}
-}
-
 testMain() async {
-  await Isolate.spawn<void>(foo, null);
-  print('started system isolate main');
-  while (true) {}
+  await Isolate.spawnUri(Platform.script, ['--selftest'], null,
+      debugName: 'foo');
 }
 
-var tests = <VMTest>[
-  (service.VmService service) async {
+var tests = <IsolateTest>[
+  hasStoppedAtBreakpoint,
+  (service.VmService service, _) async {
     final vm = await service.getVM();
     expect(vm.isolates!.length, 1);
     expect(vm.isolates!.first.name, 'foo');
     expect(vm.systemIsolates!.length, greaterThanOrEqualTo(1));
     expect(vm.systemIsolates!.where((e) => e.name == 'main').isNotEmpty, true);
-  }
+  },
+  resumeIsolate,
 ];
 
-main([args = const <String>[]]) => runVMTests(
-      args,
-      tests,
-      'mark_main_isolate_as_system_isolate_test.dart',
-      testeeConcurrent: testMain,
-      extraArgs: ['--mark-main-isolate-as-system-isolate'],
-    );
+main([args = const <String>[]]) {
+  if (args.length > 0 && args[0] == '--selftest') {
+    debugger();
+    return;
+  }
+  return runIsolateTests(
+    args,
+    tests,
+    'mark_main_isolate_as_system_isolate_test.dart',
+    testeeConcurrent: testMain,
+    extraArgs: ['--mark-main-isolate-as-system-isolate'],
+  );
+}
diff --git a/runtime/bin/main.cc b/runtime/bin/main.cc
index 234fa62..b779f80 100644
--- a/runtime/bin/main.cc
+++ b/runtime/bin/main.cc
@@ -369,10 +369,15 @@
 #endif  // !defined(DART_PRECOMPILED_RUNTIME)
   }
 
-  if (Options::gen_snapshot_kind() == kAppJIT) {
+  if (Options::gen_snapshot_kind() == kAppJIT && !isolate_run_app_snapshot) {
     // If we sort, we must do it for all isolates, not just the main isolate,
     // otherwise isolates related by spawnFunction will disagree on CIDs and
-    // cannot correctly send each other messages.
+    // cannot correctly send each other messages. If we run from an app
+    // snapshot, things are already sorted, and other isolate created by
+    // spawnFunction will also load from the same snapshot. Sorting such isolate
+    // is counter-productive because it invalidates their code.
+    // After we switch to always using isolate groups, this be changed to
+    // `generating-app-jit && is_main_isolate`.
     result = Dart_SortClasses();
     CHECK_RESULT(result);
   }
@@ -928,6 +933,19 @@
 void RunMainIsolate(const char* script_name,
                     const char* package_config_override,
                     CommandLineOptions* dart_options) {
+  if (script_name != NULL) {
+    const char* base_name = strrchr(script_name, '/');
+    if (base_name == NULL) {
+      base_name = script_name;
+    } else {
+      base_name++;  // Skip '/'.
+    }
+    const intptr_t kMaxNameLength = 64;
+    char name[kMaxNameLength];
+    Utils::SNPrint(name, kMaxNameLength, "dart:%s", base_name);
+    Platform::SetProcessName(name);
+  }
+
   // Call CreateIsolateGroupAndSetup which creates an isolate and loads up
   // the specified application script.
   char* error = NULL;
diff --git a/runtime/bin/platform.h b/runtime/bin/platform.h
index a34db67..68723c2 100644
--- a/runtime/bin/platform.h
+++ b/runtime/bin/platform.h
@@ -108,6 +108,8 @@
   static int GetScriptIndex() { return script_index_; }
   static char** GetArgv() { return argv_; }
 
+  static void SetProcessName(const char* name);
+
   DART_NORETURN static void Exit(int exit_code);
 
   static void SetCoreDumpResourceLimit(int value);
diff --git a/runtime/bin/platform_android.cc b/runtime/bin/platform_android.cc
index a9a5cda..dbbae40 100644
--- a/runtime/bin/platform_android.cc
+++ b/runtime/bin/platform_android.cc
@@ -7,13 +7,14 @@
 
 #include "bin/platform.h"
 
-#include <errno.h>        // NOLINT
-#include <signal.h>       // NOLINT
-#include <string.h>       // NOLINT
+#include <errno.h>
+#include <signal.h>
+#include <string.h>
+#include <sys/prctl.h>
 #include <sys/resource.h>
 #include <sys/system_properties.h>
-#include <sys/utsname.h>  // NOLINT
-#include <unistd.h>       // NOLINT
+#include <sys/utsname.h>
+#include <unistd.h>
 
 #include "bin/console.h"
 #include "bin/file.h"
@@ -158,6 +159,10 @@
   return File::ReadLinkInto("/proc/self/exe", result, result_size);
 }
 
+void Platform::SetProcessName(const char* name) {
+  prctl(PR_SET_NAME, reinterpret_cast<unsigned long>(name), 0, 0, 0);  // NOLINT
+}
+
 void Platform::Exit(int exit_code) {
   Console::RestoreConfig();
   Dart_PrepareToAbort();
diff --git a/runtime/bin/platform_fuchsia.cc b/runtime/bin/platform_fuchsia.cc
index 47c1907..2c12818 100644
--- a/runtime/bin/platform_fuchsia.cc
+++ b/runtime/bin/platform_fuchsia.cc
@@ -150,6 +150,11 @@
   return -1;
 }
 
+void Platform::SetProcessName(const char* name) {
+  zx_object_set_property(zx_process_self(), ZX_PROP_NAME, name,
+                         Utils::Minimum(strlen(name), ZX_MAX_NAME_LEN));
+}
+
 void Platform::Exit(int exit_code) {
   Console::RestoreConfig();
   Dart_PrepareToAbort();
diff --git a/runtime/bin/platform_linux.cc b/runtime/bin/platform_linux.cc
index adbfac1..84cf46c 100644
--- a/runtime/bin/platform_linux.cc
+++ b/runtime/bin/platform_linux.cc
@@ -7,12 +7,13 @@
 
 #include "bin/platform.h"
 
-#include <errno.h>        // NOLINT
-#include <signal.h>       // NOLINT
-#include <string.h>       // NOLINT
-#include <sys/resource.h>  // NOLINT
-#include <sys/utsname.h>  // NOLINT
-#include <unistd.h>       // NOLINT
+#include <errno.h>
+#include <signal.h>
+#include <string.h>
+#include <sys/prctl.h>
+#include <sys/resource.h>
+#include <sys/utsname.h>
+#include <unistd.h>
 
 #include "bin/console.h"
 #include "bin/file.h"
@@ -165,6 +166,10 @@
   return File::ReadLinkInto("/proc/self/exe", result, result_size);
 }
 
+void Platform::SetProcessName(const char* name) {
+  prctl(PR_SET_NAME, reinterpret_cast<unsigned long>(name), 0, 0, 0);  // NOLINT
+}
+
 void Platform::Exit(int exit_code) {
   Console::RestoreConfig();
   Dart_PrepareToAbort();
diff --git a/runtime/bin/platform_macos.cc b/runtime/bin/platform_macos.cc
index 8083949..26f40a4 100644
--- a/runtime/bin/platform_macos.cc
+++ b/runtime/bin/platform_macos.cc
@@ -328,6 +328,8 @@
   return path_size;
 }
 
+void Platform::SetProcessName(const char* name) {}
+
 void Platform::Exit(int exit_code) {
   Console::RestoreConfig();
   Dart_PrepareToAbort();
diff --git a/runtime/bin/platform_win.cc b/runtime/bin/platform_win.cc
index 515a569..b407cd2 100644
--- a/runtime/bin/platform_win.cc
+++ b/runtime/bin/platform_win.cc
@@ -302,6 +302,8 @@
   return -1;
 }
 
+void Platform::SetProcessName(const char* name) {}
+
 void Platform::Exit(int exit_code) {
   // Restore the console's output code page
   Console::RestoreConfig();
diff --git a/runtime/observatory/tests/service/breakpoint_gc_test.dart b/runtime/observatory/tests/service/breakpoint_gc_test.dart
new file mode 100644
index 0000000..6e11cbf
--- /dev/null
+++ b/runtime/observatory/tests/service/breakpoint_gc_test.dart
@@ -0,0 +1,53 @@
+// Copyright (c) 2021, 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 'test_helper.dart';
+import 'service_test_common.dart';
+
+const int LINE_A = 16;
+const int LINE_B = 19;
+const int LINE_C = 22;
+const String file = "breakpoint_gc_test.dart";
+
+foo() => 42;
+
+testeeMain() {
+  foo(); // static call
+
+  dynamic list = [1, 2, 3];
+  list.clear(); // instance call
+  print(list);
+
+  dynamic local = list; // debug step check = runtime call
+  return local;
+}
+
+Future forceGC(isolate) async {
+  await isolate.invokeRpcNoUpgrade("_collectAllGarbage", {});
+}
+
+var tests = <IsolateTest>[
+  hasPausedAtStart,
+  setBreakpointAtUriAndLine(file, LINE_A), // at `foo()`
+  setBreakpointAtUriAndLine(file, LINE_B), // at `list.clear()`
+  setBreakpointAtUriAndLine(file, LINE_C), // at `local = list`
+  resumeIsolate,
+  hasStoppedAtBreakpoint,
+  stoppedAtLine(LINE_A),
+  forceGC, // Should not crash
+  resumeIsolate,
+  hasStoppedAtBreakpoint,
+  stoppedAtLine(LINE_B),
+  forceGC, // Should not crash
+  resumeIsolate,
+  hasStoppedAtBreakpoint,
+  stoppedAtLine(LINE_C),
+  forceGC, // Should not crash
+  resumeIsolate,
+];
+
+main(args) {
+  runIsolateTestsSynchronous(args, tests,
+      testeeConcurrent: testeeMain, pause_on_start: true);
+}
diff --git a/runtime/observatory/tests/service/service_kernel.status b/runtime/observatory/tests/service/service_kernel.status
index 14d202d..c6e2222 100644
--- a/runtime/observatory/tests/service/service_kernel.status
+++ b/runtime/observatory/tests/service/service_kernel.status
@@ -52,6 +52,7 @@
 break_on_function_many_child_isolates_test: SkipByDesign # Debugger is disabled in AOT mode.
 break_on_function_test: SkipByDesign # Debugger is disabled in AOT mode.
 breakpoint_async_break_test: SkipByDesign # Debugger is disabled in AOT mode.
+breakpoint_gc_test: SkipByDesign # Debugger is disabled in AOT mode.
 breakpoint_in_package_parts_class_file_uri_test: SkipByDesign # Debugger is disabled in AOT mode.
 breakpoint_in_package_parts_class_test: SkipByDesign # Debugger is disabled in AOT mode.
 breakpoint_in_parts_class_test: SkipByDesign # Debugger is disabled in AOT mode.
diff --git a/runtime/observatory_2/tests/service_2/breakpoint_gc_test.dart b/runtime/observatory_2/tests/service_2/breakpoint_gc_test.dart
new file mode 100644
index 0000000..6e11cbf
--- /dev/null
+++ b/runtime/observatory_2/tests/service_2/breakpoint_gc_test.dart
@@ -0,0 +1,53 @@
+// Copyright (c) 2021, 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 'test_helper.dart';
+import 'service_test_common.dart';
+
+const int LINE_A = 16;
+const int LINE_B = 19;
+const int LINE_C = 22;
+const String file = "breakpoint_gc_test.dart";
+
+foo() => 42;
+
+testeeMain() {
+  foo(); // static call
+
+  dynamic list = [1, 2, 3];
+  list.clear(); // instance call
+  print(list);
+
+  dynamic local = list; // debug step check = runtime call
+  return local;
+}
+
+Future forceGC(isolate) async {
+  await isolate.invokeRpcNoUpgrade("_collectAllGarbage", {});
+}
+
+var tests = <IsolateTest>[
+  hasPausedAtStart,
+  setBreakpointAtUriAndLine(file, LINE_A), // at `foo()`
+  setBreakpointAtUriAndLine(file, LINE_B), // at `list.clear()`
+  setBreakpointAtUriAndLine(file, LINE_C), // at `local = list`
+  resumeIsolate,
+  hasStoppedAtBreakpoint,
+  stoppedAtLine(LINE_A),
+  forceGC, // Should not crash
+  resumeIsolate,
+  hasStoppedAtBreakpoint,
+  stoppedAtLine(LINE_B),
+  forceGC, // Should not crash
+  resumeIsolate,
+  hasStoppedAtBreakpoint,
+  stoppedAtLine(LINE_C),
+  forceGC, // Should not crash
+  resumeIsolate,
+];
+
+main(args) {
+  runIsolateTestsSynchronous(args, tests,
+      testeeConcurrent: testeeMain, pause_on_start: true);
+}
diff --git a/runtime/observatory_2/tests/service_2/service_2_kernel.status b/runtime/observatory_2/tests/service_2/service_2_kernel.status
index 6b1b364..83eb2d1 100644
--- a/runtime/observatory_2/tests/service_2/service_2_kernel.status
+++ b/runtime/observatory_2/tests/service_2/service_2_kernel.status
@@ -52,6 +52,7 @@
 break_on_function_many_child_isolates_test: SkipByDesign # Debugger is disabled in AOT mode.
 break_on_function_test: SkipByDesign # Debugger is disabled in AOT mode.
 breakpoint_async_break_test: SkipByDesign # Debugger is disabled in AOT mode.
+breakpoint_gc_test: SkipByDesign # Debugger is disabled in AOT mode.
 breakpoint_in_package_parts_class_file_uri_test: SkipByDesign # Debugger is disabled in AOT mode.
 breakpoint_in_package_parts_class_test: SkipByDesign # Debugger is disabled in AOT mode.
 breakpoint_in_parts_class_test: SkipByDesign # Debugger is disabled in AOT mode.
diff --git a/runtime/tests/concurrency/stress_test_list.json b/runtime/tests/concurrency/stress_test_list.json
index 869c233..80ae9a9 100644
--- a/runtime/tests/concurrency/stress_test_list.json
+++ b/runtime/tests/concurrency/stress_test_list.json
@@ -321,11 +321,6 @@
     "../../../tests/corelib/num_parse_test.dart",
     "../../../tests/corelib/num_sign_test.dart",
     "../../../tests/corelib/num_try_parse_test.dart",
-    "../../../tests/corelib/queue_first_test.dart",
-    "../../../tests/corelib/queue_iterator_test.dart",
-    "../../../tests/corelib/queue_last_test.dart",
-    "../../../tests/corelib/queue_single_test.dart",
-    "../../../tests/corelib/queue_test.dart",
     "../../../tests/corelib/range_error_test.dart",
     "../../../tests/corelib/reg_exp1_test.dart",
     "../../../tests/corelib/reg_exp5_test.dart",
@@ -3103,6 +3098,11 @@
     "../../../tests/lib/collection/hash_set_test.dart",
     "../../../tests/lib/collection/linked_list_test.dart",
     "../../../tests/lib/collection/list_test.dart",
+    "../../../tests/lib/collection/queue_first_test.dart",
+    "../../../tests/lib/collection/queue_iterator_test.dart",
+    "../../../tests/lib/collection/queue_last_test.dart",
+    "../../../tests/lib/collection/queue_single_test.dart",
+    "../../../tests/lib/collection/queue_test.dart",
     "../../../tests/lib/convert/ascii_test.dart",
     "../../../tests/lib/convert/base64_test.dart",
     "../../../tests/lib/convert/chunked_conversion1_test.dart",
@@ -3734,11 +3734,6 @@
     "../../../tests/corelib_2/num_parse_test.dart",
     "../../../tests/corelib_2/num_sign_test.dart",
     "../../../tests/corelib_2/num_try_parse_test.dart",
-    "../../../tests/corelib_2/queue_first_test.dart",
-    "../../../tests/corelib_2/queue_iterator_test.dart",
-    "../../../tests/corelib_2/queue_last_test.dart",
-    "../../../tests/corelib_2/queue_single_test.dart",
-    "../../../tests/corelib_2/queue_test.dart",
     "../../../tests/corelib_2/range_error_test.dart",
     "../../../tests/corelib_2/reg_exp1_test.dart",
     "../../../tests/corelib_2/reg_exp4_test.dart",
@@ -6443,6 +6438,11 @@
     "../../../tests/lib_2/collection/hash_set_test.dart",
     "../../../tests/lib_2/collection/linked_list_test.dart",
     "../../../tests/lib_2/collection/list_test.dart",
+    "../../../tests/lib_2/collection/queue_first_test.dart",
+    "../../../tests/lib_2/collection/queue_iterator_test.dart",
+    "../../../tests/lib_2/collection/queue_last_test.dart",
+    "../../../tests/lib_2/collection/queue_single_test.dart",
+    "../../../tests/lib_2/collection/queue_test.dart",
     "../../../tests/lib_2/convert/ascii_test.dart",
     "../../../tests/lib_2/convert/base64_test.dart",
     "../../../tests/lib_2/convert/chunked_conversion1_test.dart",
diff --git a/runtime/tests/vm/dart/regress_46790_test.dart b/runtime/tests/vm/dart/regress_46790_test.dart
new file mode 100644
index 0000000..ba2cfa5
--- /dev/null
+++ b/runtime/tests/vm/dart/regress_46790_test.dart
@@ -0,0 +1,120 @@
+// Copyright (c) 2021, 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=--stacktrace_every=137 --deterministic
+
+// Reduced from
+// The Dart Project Fuzz Tester (1.91).
+// Program generated as:
+//   dart dartfuzz.dart --seed 2528999334 --no-fp --no-ffi --no-flat
+
+int var73 = -9223372034707292159;
+String var81 = 'E4yq0';
+Map<Expando<int>, int> var531 = <Expando<int>,int>{
+  Expando<int>('NX') : 2147483648,
+  Expando<int>('Gy') : 0,
+  Expando<int>('DDp670v') : 40,
+  Expando<int>('zS(') : -9223372036854775807
+};
+Map<Map<bool, int>, Expando<int>> var1077 = <Map<bool, int>,Expando<int>>{
+  <bool,int>{
+    true : -74,
+    false : -65,
+    true : 7
+  } : Expando<int>('cteN2')
+};
+Map<MapEntry<int, int>, int> var1791 = <MapEntry<int, int>,int>{
+  MapEntry<int, int>(31, 45) : 13,
+  MapEntry<int, int>(10, 37) : 43
+};
+Map<MapEntry<String, bool>, int> var1911 = <MapEntry<String, bool>,int>{
+  MapEntry<String, bool>('uD', false) : 47,
+  MapEntry<String, bool>('LdL', false) : -11,
+  MapEntry<String, bool>('RO(9', false) : -92,
+  MapEntry<String, bool>('', true) : -9223372032559808513,
+  MapEntry<String, bool>('F6eH', false) : -9223372032559808512,
+  MapEntry<String, bool>('d', false) : -39
+};
+Map<MapEntry<String, int>, int>? var1972 = null;
+Map<MapEntry<String, String>, MapEntry<int, bool>> var2077 = <MapEntry<String, String>,MapEntry<int, bool>>{
+  MapEntry<String, String>('M', '') : MapEntry<int, bool>(1, true),
+  new MapEntry<String, String>('n8)mj', '') : MapEntry<int, bool>(24, true),
+  MapEntry<String, String>('', 'q9KjW') : MapEntry<int, bool>(21, false),
+  MapEntry<String, String>('C', 'k5x') : new MapEntry<int, bool>(21, false)
+};
+MapEntry<Expando<bool>, Map<String, bool>> var2287 = MapEntry<Expando<bool>, Map<String, bool>>(Expando<bool>('5E\u{1f600}\u2665'), <String,bool>{
+  'w\u266537L' : true,
+  'Rfu' : false,
+  ')JI+q&' : true,
+  'Z)@a\u2665V' : true,
+  '3+3WP' : true
+});
+MapEntry<Map<bool, String>, Expando<bool>>? var2918 = MapEntry<Map<bool, String>, Expando<bool>>(<bool,String>{
+  true : '3rVO( ',
+  true : '+9psp57'
+}, Expando<bool>('d'));
+MapEntry<Map<int, bool>, Map<int, String>>? var3006 = MapEntry<Map<int, bool>, Map<int, String>>(<int,bool>{
+  18 : false,
+  -32 : true,
+  -32 : false,
+  31 : false,
+  -50 : false
+}, <int,String>{
+  -37 : '',
+  12 : 'viG4s',
+  4294967297 : '\u2665YGL12',
+  11 : 'G',
+  31 : 'hdQ',
+  -2147483649 : 'JMsv'
+});
+
+MapEntry<MapEntry<bool, int>, Map<String, int>>? var3430 = MapEntry<MapEntry<bool, int>, Map<String, int>>(MapEntry<bool, int>(true, 29), <String,int>{
+  'k' : -31,
+  '' : 0,
+  '\u{1f600}u3IJ ' : 12,
+  '' : -89,
+  'G&5' : 39
+});
+
+class X0 {
+  Map<MapEntry<String, int>, int>? foo0_1(int par1){
+    if (par1 >= 49) {
+      return var1972;
+    }
+
+    {
+      int loc0 = 0;
+      do {
+        var2077.forEach((loc1, loc2){});
+      } while (++loc0 < 41);
+    }
+
+    for (int loc0 = 0; loc0 < 49; loc0++) {
+      try {
+        var3430 = MapEntry<MapEntry<bool, int>, Map<String, int>>(MapEntry<bool, int>(true, 11), <String,int>{
+          'tocS' : (true ? var73 : var1911[MapEntry<String, bool>('CZ\u2665G4Ra', true)]!),
+          '\u{1f600}UnA#' : var531[var1077[const <bool,int>{
+            false : -73
+          }]!]!,
+        });
+      } catch (exception, stackTrace) {
+        var3006 = var3006;
+        var2918 = var2918;
+      }
+
+      var1791.forEach((loc2, loc3){});
+    }
+
+    return foo0_1(par1 + 1);
+  }
+}
+
+
+main() {
+  try {
+    X0().foo0_1(0);
+  } catch (e, st) {
+    print('X0().foo0_1 throws');
+  }
+}
diff --git a/runtime/tests/vm/dart/regress_47010_test.dart b/runtime/tests/vm/dart/regress_47010_test.dart
new file mode 100644
index 0000000..108ead2
--- /dev/null
+++ b/runtime/tests/vm/dart/regress_47010_test.dart
@@ -0,0 +1,285 @@
+// Copyright (c) 2021, 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=--use_slow_path --deterministic
+
+// Reduced from:
+// The Dart Project Fuzz Tester (1.91).
+// Program generated as:
+//   dart dartfuzz.dart --seed 1339276199 --no-fp --no-ffi --no-flat
+// @dart=2.14
+
+import 'dart:collection';
+import 'dart:typed_data';
+
+MapEntry<Map<bool, int>, List<String>>? var0 =
+    MapEntry<Map<bool, int>, List<String>>(
+        <bool, int>{true: -32, true: 47, false: -11, false: 9, false: -69},
+        <String>['n', 'Rz!4\u2665']);
+Uint8List? var9 = Uint8List.fromList(Uint64List.fromList(
+    Int64List.fromList(Int16List.fromList(Int16List.fromList(Uint8List(38))))));
+Uint8ClampedList var10 = Uint8ClampedList.fromList(
+    Int32List.fromList(Uint64List.fromList(<int>[-27, -74])));
+Uint8ClampedList? var11 = Uint8ClampedList(31);
+Int16List var12 = Int16List(5);
+Int16List? var13 = Int16List(44);
+Uint16List var14 = Uint16List.fromList(<int>[-96, 24, -43, -9]);
+Uint16List? var15 = Uint16List.fromList(Int8List.fromList(Int32List(34)));
+Int32List var16 = Int32List(7);
+Int32List? var17 =
+    Int32List.fromList(<int>[-67, if (false) -98 else -36, -4294967295]);
+Uint32List var18 = Uint32List(28);
+Uint32List? var19 = Uint32List(18);
+Int64List var20 = Int64List.fromList(Uint64List.fromList(Uint16List(47)));
+Int64List? var21 = Int64List(1);
+Uint64List var22 = Uint64List(49);
+Uint64List? var23 = Uint64List(43);
+Int32x4List var24 = Int32x4List(45);
+Int32x4List? var25 = Int32x4List(46);
+Int32x4 var26 = Int32x4(46, 24, 23, 15);
+Int32x4? var27 = Int32x4(20, 28, 20, 2);
+Deprecated var28 = Deprecated('G-Ki');
+Deprecated? var29 = Deprecated('#Ww');
+Provisional var30 = Provisional();
+Provisional? var31 = Provisional();
+bool var32 = bool.fromEnvironment('');
+bool? var33 = bool.hasEnvironment('P9LY');
+Duration var34 = Duration();
+Duration? var35 = Duration();
+Error var36 = Error();
+Error? var37 = Error();
+AssertionError var38 = AssertionError(17);
+AssertionError? var39 = AssertionError(8);
+TypeError var40 = TypeError();
+TypeError? var41 = TypeError();
+CastError var42 = CastError();
+CastError? var43 = new CastError();
+NullThrownError var44 = NullThrownError();
+NullThrownError? var45 = new NullThrownError();
+ArgumentError var46 = ArgumentError.value(22, 'K90\u{1f600}QtS', 33);
+ArgumentError? var47 = ArgumentError.notNull(')');
+RangeError var48 = RangeError.range(2, 23, 36, 'H', 'w&');
+RangeError? var49 = new RangeError(22);
+IndexError var50 = IndexError(15, 14, 'ZuC', '#1z9xJ', 1);
+IndexError? var51 = IndexError(14, 36, 'V(', '9Jf!0\u2665', 2);
+FallThroughError var52 = FallThroughError();
+FallThroughError? var53 = FallThroughError();
+AbstractClassInstantiationError var54 = AbstractClassInstantiationError('J!');
+AbstractClassInstantiationError? var55 =
+    AbstractClassInstantiationError('L48ynpV');
+UnsupportedError var56 = UnsupportedError('5txzg');
+UnsupportedError? var57 = UnsupportedError('W4vVdfv');
+UnimplementedError var58 = UnimplementedError('pK00TI\u2665');
+UnimplementedError? var59 = UnimplementedError('J(teto2');
+StateError var60 = StateError('L\u2665');
+StateError? var61 = StateError('e\u2665mykMK');
+ConcurrentModificationError var62 = new ConcurrentModificationError(22);
+ConcurrentModificationError? var63 = ConcurrentModificationError(7);
+StackOverflowError var64 = StackOverflowError();
+StackOverflowError? var65 = new StackOverflowError();
+CyclicInitializationError var66 = CyclicInitializationError('\u{1f600}');
+CyclicInitializationError? var67 = CyclicInitializationError('C');
+Exception var68 = Exception(14);
+Exception? var69 = Exception(40);
+FormatException var70 = FormatException('\u{1f600}lv32', 21, 28);
+FormatException? var71 = FormatException('e', 19, 12);
+IntegerDivisionByZeroException var72 = IntegerDivisionByZeroException();
+IntegerDivisionByZeroException? var73 = IntegerDivisionByZeroException();
+int var74 = 40;
+int? var75 = -44;
+Null var76 = null;
+Null? var77 = null;
+num var78 = 42;
+num? var79 = -85;
+RegExp var80 = new RegExp('M5O');
+RegExp? var81 = RegExp('Fs2');
+String var82 = 'W6';
+String? var83 = 'h';
+Runes var84 = Runes('+');
+Runes? var85 = Runes('');
+RuneIterator var86 = RuneIterator('\u2665w');
+RuneIterator? var87 = new RuneIterator('iNEK\u{1f600}');
+StringBuffer var88 = StringBuffer(47);
+StringBuffer? var89 = StringBuffer(5);
+Symbol var90 = new Symbol('q\u{1f600}');
+Symbol? var91 = new Symbol('&j5');
+Expando<bool> var92 = Expando<bool>(' ');
+Expando<bool>? var93 = Expando<bool>('f5B');
+Expando<int> var94 = Expando<int>('');
+Expando<int>? var95 = Expando<int>('\u{1f600}1AwU\u2665C');
+Expando<String> var96 = Expando<String>('Xzj(d');
+Expando<String>? var97 = Expando<String>('Ulsd');
+List<bool> var98 = <bool>[false, false, false];
+List<bool>? var99 = <bool>[false, false, false, true];
+List<int> var100 = Uint8ClampedList(17);
+List<int>? var101 = Uint8ClampedList(40);
+List<String> var102 = <String>['Y h', 'f', '\u{1f600}ip dQ', ')p', '2Qo'];
+List<String>? var103 = <String>[
+  'BQ(6-',
+  '\u{1f600}6\u2665yJaC',
+  '3wa',
+  'VJ',
+  'k',
+  ''
+];
+Set<bool> var104 = <bool>{false, true, false};
+Set<bool>? var105 = <bool>{false, true, false, true, false, false};
+Set<int> var106 = <int>{44, 11};
+Set<int>? var107 = <int>{if (false) -94, 35};
+Set<String> var108 = <String>{''};
+Set<String>? var109 = <String>{'4'};
+Map<bool, bool> var110 = <bool, bool>{
+  false: true,
+  false: true,
+  false: true,
+  true: false
+};
+Map<bool, bool>? var111 = <bool, bool>{
+  false: false,
+  true: false,
+  false: false,
+  true: false
+};
+Map<bool, int> var112 = <bool, int>{
+  true: 35,
+  true: -4,
+  true: -14,
+  false: 30,
+  false: -25
+};
+Map<bool, int>? var113 = null;
+Map<bool, String> var114 = <bool, String>{
+  false: '7d',
+  false: '\u{1f600}sv+',
+  false: 'aY',
+  false: 'dt'
+};
+Map<bool, String>? var115 = <bool, String>{
+  false: '',
+  false: '(G7\u{1f600}TBN',
+  true: '',
+  true: 'zZ-\u{1f600}\u2665)X',
+  false: ')-9',
+  false: ''
+};
+Map<int, bool> var116 = <int, bool>{
+  3: true,
+  10: true,
+  -59: true,
+  15: false,
+  -36: true
+};
+Map<int, bool>? var117 = <int, bool>{16: false, 0: false};
+Map<int, int> var118 = <int, int>{
+  -92: 29,
+  -12: 40,
+  -29: -26,
+  -21: 1,
+  13: 28,
+  28: -44
+};
+Map<int, int>? var119 = <int, int>{-54: -37};
+Map<int, String> var120 = <int, String>{-80: '', -62: 'h', 40: 'C\u2665FVU'};
+Map<int, String>? var121 = <int, String>{
+  ...<int, String>{
+    -8: 'S\u{1f600}kjRb',
+    23: '4',
+    -9223372034707292160: '',
+    28: 'uz',
+    -69: '@'
+  },
+  -53: 'nU6f',
+  -5: '',
+  -9223372034707292159: '',
+  20: 'h7EB+'
+};
+Map<String, bool> var122 = <String, bool>{'8+G': false};
+Map<String, bool>? var123 = <String, bool>{'rM9m6k': true, '2': true};
+Map<String, int> var124 = <String, int>{'Z+p@\u2665Ww': -55};
+Map<String, int>? var125 = <String, int>{'9': -2147483647, 'uQ': 40};
+Map<String, String> var126 = <String, String>{
+  'Q!': ' V\u{1f600}A2\u{1f600}',
+  'z': '\u2665)',
+  'cM@7\u{1f600}': 'XUT',
+  'oLoh': 'bLPrZ',
+  'YmR67nj': 'BdeuR'
+};
+Map<String, String>? var127 = <String, String>{'nOsSM1': '3 @yIj'};
+MapEntry<bool, bool> var128 = MapEntry<bool, bool>(true, false);
+MapEntry<bool, bool>? var129 = MapEntry<bool, bool>(true, false);
+MapEntry<bool, int> var130 = MapEntry<bool, int>(false, 13);
+MapEntry<bool, int>? var131 = MapEntry<bool, int>(true, 31);
+MapEntry<bool, String> var132 =
+    MapEntry<bool, String>(true, '\u26653KE\u{1f600}');
+MapEntry<bool, String>? var133 = MapEntry<bool, String>(false, 'd');
+MapEntry<int, bool> var134 = MapEntry<int, bool>(46, true);
+MapEntry<int, bool>? var135 = MapEntry<int, bool>(34, false);
+MapEntry<int, int> var136 = MapEntry<int, int>(22, 30);
+MapEntry<int, int>? var137 = MapEntry<int, int>(30, 48);
+MapEntry<int, String> var138 = MapEntry<int, String>(46, 'by#@-nv');
+MapEntry<int, String>? var139 = MapEntry<int, String>(49, 'N@KF');
+MapEntry<String, bool> var140 =
+    MapEntry<String, bool>('\u{1f600}km\u2665', true);
+MapEntry<String, bool>? var141 = new MapEntry<String, bool>('7PZX', false);
+MapEntry<String, int> var142 = new MapEntry<String, int>('OE', 27);
+
+Map<String, Map<String, bool>> var446 = <String, Map<String, bool>>{
+  'YJ\u{1f600}': <String, bool>{'BcKzE': true, 'Cz1A+n': false, '': true},
+  'u!KEz9I': <String, bool>{
+    '\u26653Hjr': true,
+    '-\u{1f600}': true,
+    '': true,
+    ')-': false,
+    'ygN': true
+  },
+  '+R6': <String, bool>{'ta\u2665dKu)': true, 'rao9j': true},
+  'YGXS!': <String, bool>{
+    '': false,
+    '6R': false,
+    '': true,
+    'MV\u{1f600} PP': true
+  }
+};
+Map<MapEntry<String, int>, Map<int, bool>> var2000 =
+    <MapEntry<String, int>, Map<int, bool>>{
+  new MapEntry<String, int>('', 7): <int, bool>{
+    -55: true,
+    4294967295: false,
+    48: true,
+    -1: true,
+    -96: false
+  },
+  MapEntry<String, int>('ORLVr', 1): <int, bool>{
+    -21: false,
+    4294967297: false,
+    -12: false,
+    -84: false
+  }
+};
+
+void foo1_Extension0() {
+  var446.forEach((loc0, loc1) {
+    for (int loc2 = 0; loc2 < 34; loc2++) {
+      print(<MapEntry<bool, bool>, String>{
+        MapEntry<bool, bool>(true, false): 'pqKqb',
+        MapEntry<bool, bool>(true, true): 'Fkx',
+        MapEntry<bool, bool>(true, false): '',
+        MapEntry<bool, bool>(false, true): 'fJvVWOW',
+        MapEntry<bool, bool>(false, true): 'q\u2665NR',
+        MapEntry<bool, bool>(false, true): '\u2665'
+      });
+      var2000.forEach((loc3, loc4) {
+        print(MapEntry<Map<bool, String>, MapEntry<int, bool>>(
+            <bool, String>{false: 'L'}, MapEntry<int, bool>(42, false)));
+      });
+    }
+  });
+}
+
+main() {
+  foo1_Extension0();
+
+  print(
+      '$var0\n$var9\n$var11\n$var12\n$var13\n$var14\n$var15\n$var16\n$var17\n$var18\n$var19\n$var20\n$var21\n$var22\n$var23\n$var24\n$var25\n$var26\n$var27\n$var28\n$var29\n$var30\n$var31\n$var32\n$var33\n$var34\n$var35\n$var36\n$var37\n$var38\n$var39\n$var40\n$var41\n$var42\n$var43\n$var44\n$var45\n$var46\n$var47\n$var48\n$var49\n$var50\n$var51\n$var52\n$var53\n$var54\n$var55\n$var56\n$var57\n$var58\n$var59\n$var60\n$var61\n$var62\n$var63\n$var64\n$var65\n$var66\n$var67\n$var68\n$var69\n$var70\n$var71\n$var72\n$var73\n$var74\n$var75\n$var76\n$var77\n$var78\n$var79\n$var80\n$var81\n$var82\n$var83\n$var84\n$var85\n$var86\n$var87\n$var88\n$var89\n$var90\n$var91\n$var92\n$var93\n$var94\n$var95\n$var96\n$var97\n$var98\n$var99\n$var100\n$var101\n$var102\n$var103\n$var104\n$var105\n$var106\n$var107\n$var108\n$var109\n$var110\n$var111\n$var112\n$var113\n$var114\n$var115\n$var116\n$var117\n$var118\n$var119\n$var120\n$var121\n$var122\n$var123\n$var124\n$var125\n$var126\n$var127\n$var128\n$var129\n$var130\n$var131\n$var132\n');
+}
diff --git a/runtime/tests/vm/vm.status b/runtime/tests/vm/vm.status
index 64d0769..620a356 100644
--- a/runtime/tests/vm/vm.status
+++ b/runtime/tests/vm/vm.status
@@ -273,8 +273,10 @@
 
 [ $compiler == dartkp && ($arch == simarm || $arch == simarm64 || $arch == simarm64c) ]
 dart/causal_stacks/async_throws_stack_lazy_non_symbolic_test: Pass, Slow
-dart/regress_45898_test: Pass, Slow
 dart_2/causal_stacks/async_throws_stack_lazy_non_symbolic_test: Pass, Slow
+
+[ $compiler == dartkp && ($arch == simarm || $arch == simarm64 || $arch == simarm64c || $builder_tag == tsan) ]
+dart/regress_45898_test: Pass, Slow
 dart_2/regress_45898_test: Pass, Slow
 
 [ $compiler == dartkp && ($runtime == dart_precompiled || $runtime == vm) ]
diff --git a/runtime/tools/dartfuzz/dartfuzz.dart b/runtime/tools/dartfuzz/dartfuzz.dart
index be82ace..c2e2d6c 100644
--- a/runtime/tools/dartfuzz/dartfuzz.dart
+++ b/runtime/tools/dartfuzz/dartfuzz.dart
@@ -14,7 +14,7 @@
 // Version of DartFuzz. Increase this each time changes are made
 // to preserve the property that a given version of DartFuzz yields
 // the same fuzzed program for a deterministic random seed.
-const String version = '1.91';
+const String version = '1.92';
 
 // Restriction on statements and expressions.
 const int stmtDepth = 1;
@@ -1003,11 +1003,10 @@
 
         emitNewline();
         emitTryCatchFinally(() {
-          var body = '';
           for (var i = 0; i < globalVars.length; i++) {
-            body += '\$$varName$i\\n';
+            emitPrint('$varName$i: \$$varName$i');
+            emitNewline();
           }
-          emitPrint('$body');
         }, () => emitPrint('print() throws'));
       });
 
@@ -1100,7 +1099,7 @@
     }
     emitIndentation();
     // Emit a variable of the lhs type.
-    final emittedVar = emitVar(0, tp, isLhs: true)!;
+    final emittedVar = emitVar(0, tp, isLhs: true, assignOp: assignOp)!;
     var rhsFilter = RhsFilter.fromDartType(tp, emittedVar);
     emit(' $assignOp ');
     // Select one of the possible rhs types for the given lhs type and assign
@@ -1142,9 +1141,12 @@
 
   // Emit a throw statement.
   bool emitThrow() {
-    var tp = oneOfSet(dartType.allTypes);
+    var tp;
+    do {
+      tp = oneOfSet(dartType.allTypes).toNonNullable();
+    } while (tp == DartType.NULL);
     emitLn('throw ', newline: false);
-    emitExpr(0, tp.toNonNullable(), includeSemicolon: true);
+    emitExpr(0, tp, includeSemicolon: true);
     return false;
   }
 
@@ -1890,12 +1892,20 @@
   }
 
   String? emitSubscriptedVar(int depth, DartType tp,
-      {bool isLhs = false, RhsFilter? rhsFilter}) {
+      {bool isLhs = false, String? assignOp, RhsFilter? rhsFilter}) {
     String? ret;
     // Check if type tp is an indexable element of some other type.
     if (dartType.isIndexableElementType(tp)) {
       // Select a list or map type that contains elements of type tp.
-      final iterType = oneOfSet(dartType.indexableElementTypes(tp));
+      var iterType = oneOfSet(dartType.indexableElementTypes(tp));
+      // For `collection[key] <op>= value` to work, collection must not be a
+      // Map or Expando because their subscript operators return a nullable
+      // type.
+      if (assignOp != null && assignOp != "=") {
+        while (!DartType.isListType(iterType)) {
+          iterType = oneOfSet(dartType.indexableElementTypes(tp));
+        }
+      }
       // Get the index type for the respective list or map type.
       final indexType = dartType.indexType(iterType);
       // Emit a variable of the selected list or map type.
@@ -1920,14 +1930,14 @@
   }
 
   String? emitVar(int depth, DartType tp,
-      {bool isLhs = false, RhsFilter? rhsFilter}) {
+      {bool isLhs = false, String? assignOp, RhsFilter? rhsFilter}) {
     switch (choose(2)) {
       case 0:
         return emitScalarVar(tp, isLhs: isLhs, rhsFilter: rhsFilter);
         break;
       default:
         return emitSubscriptedVar(depth, tp,
-            isLhs: isLhs, rhsFilter: rhsFilter);
+            isLhs: isLhs, assignOp: assignOp, rhsFilter: rhsFilter);
         break;
     }
   }
diff --git a/runtime/vm/compiler/backend/flow_graph_compiler.cc b/runtime/vm/compiler/backend/flow_graph_compiler.cc
index fc99bfc..dfe4a43 100644
--- a/runtime/vm/compiler/backend/flow_graph_compiler.cc
+++ b/runtime/vm/compiler/backend/flow_graph_compiler.cc
@@ -3261,10 +3261,18 @@
       (compiler->CurrentTryIndex() != kInvalidTryIndex)) {
     Environment* env =
         compiler->SlowPathEnvironmentFor(instruction(), num_args);
-    if (FLAG_precompiled_mode) {
+    // TODO(47044): Should be able to say `FLAG_precompiled_mode` instead.
+    if (CompilerState::Current().is_aot()) {
       compiler->RecordCatchEntryMoves(env, try_index_);
-    } else if (env != nullptr) {
+    } else if (compiler->is_optimizing()) {
+      ASSERT(env != nullptr);
       compiler->AddSlowPathDeoptInfo(deopt_id, env);
+    } else {
+      ASSERT(env == nullptr);
+      const intptr_t deopt_id_after = DeoptId::ToDeoptAfter(deopt_id);
+      // Add deoptimization continuation point.
+      compiler->AddCurrentDescriptor(UntaggedPcDescriptors::kDeopt,
+                                     deopt_id_after, instruction()->source());
     }
   }
   if (!use_shared_stub) {
diff --git a/runtime/vm/compiler/stub_code_compiler_x64.cc b/runtime/vm/compiler/stub_code_compiler_x64.cc
index 74bab68..096d3c7 100644
--- a/runtime/vm/compiler/stub_code_compiler_x64.cc
+++ b/runtime/vm/compiler/stub_code_compiler_x64.cc
@@ -2726,13 +2726,11 @@
   __ Stop("No debugging in PRODUCT mode");
 #else
   __ EnterStubFrame();
-  __ pushq(RDX);           // Preserve receiver.
   __ pushq(RBX);           // Preserve IC data.
   __ pushq(Immediate(0));  // Result slot.
   __ CallRuntime(kBreakpointRuntimeHandlerRuntimeEntry, 0);
   __ popq(CODE_REG);  // Original stub.
   __ popq(RBX);       // Restore IC data.
-  __ popq(RDX);       // Restore receiver.
   __ LeaveStubFrame();
 
   __ movq(RAX, FieldAddress(CODE_REG, target::Code::entry_point_offset()));
diff --git a/runtime/vm/dart.cc b/runtime/vm/dart.cc
index 6a4d13e..7655866 100644
--- a/runtime/vm/dart.cc
+++ b/runtime/vm/dart.cc
@@ -1065,8 +1065,7 @@
   }
 #if !defined(PRODUCT)
   ServiceIsolate::MaybeMakeServiceIsolate(I);
-  if (!ServiceIsolate::IsServiceIsolate(I) &&
-      !KernelIsolate::IsKernelIsolate(I)) {
+  if (!Isolate::IsSystemIsolate(I)) {
     I->message_handler()->set_should_pause_on_start(
         FLAG_pause_isolates_on_start);
     I->message_handler()->set_should_pause_on_exit(FLAG_pause_isolates_on_exit);
diff --git a/runtime/vm/runtime_entry.cc b/runtime/vm/runtime_entry.cc
index de2ecfc..57a1e57 100644
--- a/runtime/vm/runtime_entry.cc
+++ b/runtime/vm/runtime_entry.cc
@@ -1697,7 +1697,7 @@
 
   void DoUnlinkedCallAOT(const UnlinkedCall& unlinked,
                          const Function& target_function);
-  void DoMonomorphicMissAOT(const Object& data,
+  void DoMonomorphicMissAOT(const Object& old_data,
                             const Function& target_function);
   void DoSingleTargetMissAOT(const SingleTargetCache& data,
                              const Function& target_function);
@@ -1712,7 +1712,7 @@
                      const Code& old_target,
                      const Function& target_function);
 
-  void DoMonomorphicMissJIT(const Object& data,
+  void DoMonomorphicMissJIT(const Object& old_data,
                             const Function& target_function);
   void DoICDataMissJIT(const ICData& data,
                        const Object& old_data,
@@ -1839,14 +1839,14 @@
 
 #if defined(DART_PRECOMPILED_RUNTIME)
 void PatchableCallHandler::DoMonomorphicMissAOT(
-    const Object& data,
+    const Object& old_data,
     const Function& target_function) {
   classid_t old_expected_cid;
-  if (data.IsSmi()) {
-    old_expected_cid = Smi::Cast(data).Value();
+  if (old_data.IsSmi()) {
+    old_expected_cid = Smi::Cast(old_data).Value();
   } else {
-    RELEASE_ASSERT(data.IsMonomorphicSmiableCall());
-    old_expected_cid = MonomorphicSmiableCall::Cast(data).expected_cid();
+    RELEASE_ASSERT(old_data.IsMonomorphicSmiableCall());
+    old_expected_cid = MonomorphicSmiableCall::Cast(old_data).expected_cid();
   }
   const bool is_monomorphic_hit = old_expected_cid == receiver().GetClassId();
   const auto& old_receiver_class = Class::Handle(
@@ -1900,20 +1900,17 @@
 
 #if !defined(DART_PRECOMPILED_RUNTIME)
 void PatchableCallHandler::DoMonomorphicMissJIT(
-    const Object& data,
+    const Object& old_data,
     const Function& target_function) {
   // Monomorphic calls use the ICData::entries() as their data.
-  const auto& ic_data_entries = Array::Cast(data);
+  const auto& old_ic_data_entries = Array::Cast(old_data);
   // Any non-empty ICData::entries() has a backref to it's ICData.
   const auto& ic_data =
-      ICData::Handle(zone_, ICData::ICDataOfEntriesArray(ic_data_entries));
-
-  const classid_t current_cid = receiver().GetClassId();
-  const classid_t old_cid = Smi::Value(Smi::RawCast(ic_data_entries.At(0)));
-  const bool same_receiver = current_cid == old_cid;
+      ICData::Handle(zone_, ICData::ICDataOfEntriesArray(old_ic_data_entries));
 
   // The target didn't change, so we can stay inside monomorphic state.
-  if (same_receiver) {
+  if (ic_data.NumberOfChecksIs(1) &&
+      (ic_data.GetReceiverClassIdAt(0) == receiver().GetClassId())) {
     // We got a miss because the old target code got disabled.
     // Notice the reverse is not true: If the old code got disabled, the call
     // might still have a different receiver then last time and possibly a
@@ -1929,10 +1926,10 @@
                    caller_frame_->pc());
     }
 
-    // We stay in monomorphic state, patch the code object and keep the same
-    // data (old ICData entries array).
+    // We stay in monomorphic state, patch the code object and reload the icdata
+    // entries array.
     const auto& code = Code::Handle(zone_, target_function.EnsureHasCode());
-    ASSERT(data.ptr() == ic_data.entries());
+    const auto& data = Object::Handle(zone_, ic_data.entries());
     CodePatcher::PatchInstanceCallAt(caller_frame_->pc(), caller_code_, data,
                                      code);
     ReturnJIT(code, data, target_function);
diff --git a/runtime/vm/stack_frame.cc b/runtime/vm/stack_frame.cc
index e9fc6f7..2e35cce 100644
--- a/runtime/vm/stack_frame.cc
+++ b/runtime/vm/stack_frame.cc
@@ -162,24 +162,12 @@
 const char* StackFrame::ToCString() const {
   ASSERT(thread_ == Thread::Current());
   Zone* zone = Thread::Current()->zone();
-  if (IsDartFrame()) {
-    const Code& code = Code::Handle(zone, LookupDartCode());
-    ASSERT(!code.IsNull());
-    const auto& owner = Object::Handle(
-        zone, WeakSerializationReference::UnwrapIfTarget(code.owner()));
-    ASSERT(!owner.IsNull());
-    auto const opt = code.IsFunctionCode() && code.is_optimized() ? "*" : "";
-    auto const owner_name =
-        owner.IsFunction() ? Function::Cast(owner).ToFullyQualifiedCString()
-                           : owner.ToCString();
-    return zone->PrintToString("[%-8s : sp(%#" Px ") fp(%#" Px ") pc(%#" Px
-                               ") %s%s ]",
-                               GetName(), sp(), fp(), pc(), opt, owner_name);
-  } else {
-    return zone->PrintToString("[%-8s : sp(%#" Px ") fp(%#" Px ") pc(%#" Px
-                               ")]",
-                               GetName(), sp(), fp(), pc());
-  }
+  const Code& code = Code::Handle(zone, GetCodeObject());
+  ASSERT(!code.IsNull());
+  const char* name =
+      code.QualifiedName(NameFormattingParams(Object::kInternalName));
+  return zone->PrintToString("  pc 0x%" Pp " fp 0x%" Pp " sp 0x%" Pp " %s",
+                             pc(), fp(), sp(), name);
 }
 
 void ExitFrame::VisitObjectPointers(ObjectPointerVisitor* visitor) {
diff --git a/runtime/vm/virtual_memory_compressed.cc b/runtime/vm/virtual_memory_compressed.cc
index 7d4b882..a53007a 100644
--- a/runtime/vm/virtual_memory_compressed.cc
+++ b/runtime/vm/virtual_memory_compressed.cc
@@ -11,6 +11,7 @@
 namespace dart {
 
 uword VirtualMemoryCompressedHeap::base_ = 0;
+uword VirtualMemoryCompressedHeap::size_ = 0;
 uint8_t* VirtualMemoryCompressedHeap::pages_ = nullptr;
 uword VirtualMemoryCompressedHeap::minimum_free_page_id_ = 0;
 Mutex* VirtualMemoryCompressedHeap::mutex_ = nullptr;
@@ -34,12 +35,29 @@
   pages_[page_id / 8] &= ~PageMask(page_id);
 }
 
-void VirtualMemoryCompressedHeap::Init(void* compressed_heap_region) {
+void VirtualMemoryCompressedHeap::Init(void* compressed_heap_region,
+                                       size_t size) {
   pages_ = new uint8_t[kCompressedHeapBitmapSize];
   memset(pages_, 0, kCompressedHeapBitmapSize);
+  ASSERT(size > 0);
+  ASSERT(size <= kCompressedHeapSize);
+  for (intptr_t page_id = size / kCompressedHeapPageSize;
+       page_id < kCompressedHeapNumPages; page_id++) {
+    SetPageUsed(page_id);
+  }
   base_ = reinterpret_cast<uword>(compressed_heap_region);
+  size_ = size;
   ASSERT(base_ != 0);
-  ASSERT(Utils::IsAligned(base_, kCompressedHeapSize));
+  ASSERT(size_ != 0);
+  ASSERT(size_ <= kCompressedHeapSize);
+  ASSERT(Utils::IsAligned(base_, kCompressedHeapPageSize));
+  ASSERT(Utils::IsAligned(size_, kCompressedHeapPageSize));
+  // base_ is not necessarily 4GB-aligned, because on some systems we can't make
+  // a large enough reservation to guarentee it. Instead, we have only the
+  // weaker property that all addresses in [base_, base_ + size_) have the same
+  // same upper 32 bits, which is what we really need for compressed pointers.
+  intptr_t mask = ~(kCompressedHeapAlignment - 1);
+  ASSERT((base_ & mask) == (base_ + size_ - 1 & mask));
   mutex_ = new Mutex(NOT_IN_PRODUCT("compressed_heap_mutex"));
 }
 
@@ -47,6 +65,7 @@
   delete[] pages_;
   delete mutex_;
   base_ = 0;
+  size_ = 0;
   pages_ = nullptr;
   minimum_free_page_id_ = 0;
   mutex_ = nullptr;
@@ -123,8 +142,7 @@
 }
 
 bool VirtualMemoryCompressedHeap::Contains(void* address) {
-  return reinterpret_cast<uword>(address) >= base_ &&
-         reinterpret_cast<uword>(address) < base_ + kCompressedHeapSize;
+  return (reinterpret_cast<uword>(address) - base_) < size_;
 }
 
 }  // namespace dart
diff --git a/runtime/vm/virtual_memory_compressed.h b/runtime/vm/virtual_memory_compressed.h
index 0df8b1c..bf6fb4c 100644
--- a/runtime/vm/virtual_memory_compressed.h
+++ b/runtime/vm/virtual_memory_compressed.h
@@ -33,7 +33,7 @@
  public:
   // Initializes the compressed heap. The callee must allocate a region of
   // kCompressedHeapSize bytes, aligned to kCompressedHeapSize.
-  static void Init(void* compressed_heap_region);
+  static void Init(void* compressed_heap_region, size_t size);
 
   // Cleans up the compressed heap. The callee is responsible for freeing the
   // region's memory.
@@ -58,6 +58,7 @@
   static void ClearPageUsed(uword page_id);
 
   static uword base_;
+  static uword size_;
   static uint8_t* pages_;
   static uword minimum_free_page_id_;
   static Mutex* mutex_;
diff --git a/runtime/vm/virtual_memory_posix.cc b/runtime/vm/virtual_memory_posix.cc
index 2291d5e..0134610 100644
--- a/runtime/vm/virtual_memory_posix.cc
+++ b/runtime/vm/virtual_memory_posix.cc
@@ -35,6 +35,10 @@
 #undef MAP_FAILED
 #define MAP_FAILED reinterpret_cast<void*>(-1)
 
+#if defined(DART_HOST_OS_IOS)
+#define LARGE_RESERVATIONS_MAY_FAIL
+#endif
+
 DECLARE_FLAG(bool, dual_map_code);
 DECLARE_FLAG(bool, write_protect_code);
 
@@ -76,12 +80,56 @@
   return page_size;
 }
 
+#if defined(DART_COMPRESSED_POINTERS) && defined(LARGE_RESERVATIONS_MAY_FAIL)
+// Truncate to the largest subregion in [region] that doesn't cross an
+// [alignment] boundary.
+static MemoryRegion ClipToAlignedRegion(MemoryRegion region, size_t alignment) {
+  uword base = region.start();
+  uword aligned_base = Utils::RoundUp(base, alignment);
+  uword size_below =
+      region.end() >= aligned_base ? aligned_base - base : region.size();
+  uword size_above =
+      region.end() >= aligned_base ? region.end() - aligned_base : 0;
+  ASSERT(size_below + size_above == region.size());
+  if (size_below >= size_above) {
+    unmap(aligned_base, aligned_base + size_above);
+    return MemoryRegion(reinterpret_cast<void*>(base), size_below);
+  }
+  unmap(base, base + size_below);
+  if (size_above > alignment) {
+    unmap(aligned_base + alignment, aligned_base + size_above);
+    size_above = alignment;
+  }
+  return MemoryRegion(reinterpret_cast<void*>(aligned_base), size_above);
+}
+#endif  // LARGE_RESERVATIONS_MAY_FAIL
+
 void VirtualMemory::Init() {
   page_size_ = CalculatePageSize();
 
 #if defined(DART_COMPRESSED_POINTERS)
   ASSERT(compressed_heap_ == nullptr);
+#if defined(LARGE_RESERVATIONS_MAY_FAIL)
+  // Try to reserve a region for the compressed heap by requesting decreasing
+  // powers-of-two until one succeeds, and use the largest subregion that does
+  // not cross a 4GB boundary. The subregion itself is not necessarily
+  // 4GB-aligned.
+  for (size_t allocated_size = kCompressedHeapSize + kCompressedHeapAlignment;
+       allocated_size >= kCompressedHeapPageSize; allocated_size >>= 1) {
+    void* address = GenericMapAligned(
+        nullptr, PROT_NONE, allocated_size, kCompressedHeapPageSize,
+        allocated_size + kCompressedHeapPageSize,
+        MAP_PRIVATE | MAP_ANONYMOUS | MAP_NORESERVE);
+    if (address == MAP_FAILED) continue;
+
+    MemoryRegion region(address, allocated_size);
+    region = ClipToAlignedRegion(region, kCompressedHeapAlignment);
+    compressed_heap_ = new VirtualMemory(region, region);
+    break;
+  }
+#else
   compressed_heap_ = Reserve(kCompressedHeapSize, kCompressedHeapAlignment);
+#endif
   if (compressed_heap_ == nullptr) {
     int error = errno;
     const int kBufferSize = 1024;
@@ -89,7 +137,8 @@
     FATAL("Failed to reserve region for compressed heap: %d (%s)", error,
           Utils::StrError(error, error_buf, kBufferSize));
   }
-  VirtualMemoryCompressedHeap::Init(compressed_heap_->address());
+  VirtualMemoryCompressedHeap::Init(compressed_heap_->address(),
+                                    compressed_heap_->size());
 #endif  // defined(DART_COMPRESSED_POINTERS)
 
 #if defined(DUAL_MAPPING_SUPPORTED)
@@ -248,6 +297,25 @@
     MemoryRegion region =
         VirtualMemoryCompressedHeap::Allocate(size, alignment);
     if (region.pointer() == nullptr) {
+#if defined(LARGE_RESERVATIONS_MAY_FAIL)
+      // Try a fresh allocation and hope it ends up in the right region. On
+      // macOS/iOS, this works surprisingly often.
+      void* address =
+          GenericMapAligned(nullptr, PROT_READ | PROT_WRITE, size, alignment,
+                            size + alignment, MAP_PRIVATE | MAP_ANONYMOUS);
+      if (address != nullptr) {
+        uword ok_start = Utils::RoundDown(compressed_heap_->start(),
+                                          kCompressedHeapAlignment);
+        uword ok_end = ok_start + kCompressedHeapSize;
+        uword start = reinterpret_cast<uword>(address);
+        uword end = start + size;
+        if ((start >= ok_start) && (end <= ok_end)) {
+          MemoryRegion region(address, size);
+          return new VirtualMemory(region, region);
+        }
+        munmap(address, size);
+      }
+#endif
       return nullptr;
     }
     Commit(region.pointer(), region.size());
@@ -372,7 +440,10 @@
                       MAP_PRIVATE | MAP_ANONYMOUS | MAP_FIXED, -1, 0);
   if (result == MAP_FAILED) {
     int error = errno;
-    FATAL("Failed to commit: %d\n", error);
+    const int kBufferSize = 1024;
+    char error_buf[kBufferSize];
+    FATAL("Failed to commit: %d (%s)", error,
+          Utils::StrError(error, error_buf, kBufferSize));
   }
 }
 
@@ -384,7 +455,10 @@
            MAP_PRIVATE | MAP_ANONYMOUS | MAP_NORESERVE | MAP_FIXED, -1, 0);
   if (result == MAP_FAILED) {
     int error = errno;
-    FATAL("Failed to decommit: %d\n", error);
+    const int kBufferSize = 1024;
+    char error_buf[kBufferSize];
+    FATAL("Failed to decommit: %d (%s)", error,
+          Utils::StrError(error, error_buf, kBufferSize));
   }
 }
 
diff --git a/runtime/vm/virtual_memory_win.cc b/runtime/vm/virtual_memory_win.cc
index 79eee52..67f1f63 100644
--- a/runtime/vm/virtual_memory_win.cc
+++ b/runtime/vm/virtual_memory_win.cc
@@ -62,7 +62,8 @@
     int error = GetLastError();
     FATAL("Failed to reserve region for compressed heap: %d", error);
   }
-  VirtualMemoryCompressedHeap::Init(compressed_heap_->address());
+  VirtualMemoryCompressedHeap::Init(compressed_heap_->address(),
+                                    compressed_heap_->size());
 #endif  // defined(DART_COMPRESSED_POINTERS)
 }
 
diff --git a/sdk/lib/collection/collection.dart b/sdk/lib/collection/collection.dart
index ce3d87f..ac592bd 100644
--- a/sdk/lib/collection/collection.dart
+++ b/sdk/lib/collection/collection.dart
@@ -14,6 +14,8 @@
 import 'dart:_internal' hide Symbol;
 import 'dart:math' show Random; // Used by ListMixin.shuffle.
 
+export 'dart:_internal' show DoubleLinkedQueueEntry;
+
 part 'collections.dart';
 part 'hash_map.dart';
 part 'hash_set.dart';
diff --git a/sdk/lib/collection/queue.dart b/sdk/lib/collection/queue.dart
index fd83b42..dcdecb4 100644
--- a/sdk/lib/collection/queue.dart
+++ b/sdk/lib/collection/queue.dart
@@ -119,116 +119,71 @@
   void clear();
 }
 
-class _DoubleLink<Link extends _DoubleLink<Link>> {
-  Link? _previousLink;
-  Link? _nextLink;
-
-  void _link(Link? previous, Link? next) {
-    _nextLink = next;
-    _previousLink = previous;
-    if (previous != null) previous._nextLink = this as Link;
-    if (next != null) next._previousLink = this as Link;
-  }
-
-  void _unlink() {
-    if (_previousLink != null) _previousLink!._nextLink = _nextLink;
-    if (_nextLink != null) _nextLink!._previousLink = _previousLink;
-    _nextLink = null;
-    _previousLink = null;
-  }
-}
-
-/// An entry in a doubly linked list. It contains a pointer to the next
-/// entry, the previous entry, and the boxed element.
-class DoubleLinkedQueueEntry<E> extends _DoubleLink<DoubleLinkedQueueEntry<E>> {
-  // TODO(rnystrom): This needs to be nullable because the subclass
-  // _DoubleLinkedQueueSentinel does not have an element. A cleaner solution is
-  // probably to refactor the class hierarchy so that _DoubleLinkedQueueSentinel
-  // does not inherit an element field.
-  E? _element;
-
-  /// The element in the queue.
-  E get element => _element as E;
-  set element(E element) {
-    _element = element;
-  }
-
-  DoubleLinkedQueueEntry(this._element);
-
-  /// Appends the given [e] as entry just after this entry.
-  void append(E e) {
-    DoubleLinkedQueueEntry<E>(e)._link(this, _nextLink);
-  }
-
-  /// Prepends the given [e] as entry just before this entry.
-  void prepend(E e) {
-    DoubleLinkedQueueEntry<E>(e)._link(_previousLink, this);
-  }
-
-  E remove() {
-    _unlink();
-    return element;
-  }
-
-  /// Returns the previous entry or `null` if there is none.
-  DoubleLinkedQueueEntry<E>? previousEntry() => _previousLink;
-
-  /// Returns the next entry or `null` if there is none.
-  DoubleLinkedQueueEntry<E>? nextEntry() => _nextLink;
-}
-
-/// Interface for the link classes used by [DoubleLinkedQueue].
+/// Interface and base class for the link classes used by [DoubleLinkedQueue].
 ///
 /// Both the [_DoubleLinkedQueueElement] and [_DoubleLinkedQueueSentinel]
 /// implement this interface.
-/// The entry contains a link back to the queue, so calling `append`
-/// or `prepend` can correctly update the element count.
-abstract class _DoubleLinkedQueueEntry<E> extends DoubleLinkedQueueEntry<E> {
-  DoubleLinkedQueue<E>? _queue;
-  _DoubleLinkedQueueEntry(E? element, this._queue) : super(element);
+abstract class _DoubleLinkedQueueEntry<E> {
+  _DoubleLinkedQueueEntry<E>? _previousLink;
+  _DoubleLinkedQueueEntry<E>? _nextLink;
 
-  DoubleLinkedQueueEntry<E>? _asNonSentinelEntry();
-
-  void _append(E e) {
-    _DoubleLinkedQueueElement<E>(e, _queue)._link(this, _nextLink);
+  void _link(
+      _DoubleLinkedQueueEntry<E>? previous, _DoubleLinkedQueueEntry<E>? next) {
+    _nextLink = next;
+    _previousLink = previous;
+    previous?._nextLink = this;
+    next?._previousLink = this;
   }
 
-  void _prepend(E e) {
-    _DoubleLinkedQueueElement<E>(e, _queue)._link(_previousLink, this);
+  void _unlink() {
+    _previousLink?._nextLink = _nextLink;
+    _nextLink?._previousLink = _previousLink;
+    _previousLink = _nextLink = null;
+  }
+
+  _DoubleLinkedQueueElement<E>? _asNonSentinelEntry();
+
+  void _append(E element, DoubleLinkedQueue<E>? queue) {
+    _DoubleLinkedQueueElement<E>(element, queue)._link(this, _nextLink);
+  }
+
+  void _prepend(E element, DoubleLinkedQueue<E>? queue) {
+    _DoubleLinkedQueueElement<E>(element, queue)._link(_previousLink, this);
   }
 
   E _remove();
 
-  E get _element => super._element as E;
-
-  DoubleLinkedQueueEntry<E>? nextEntry() {
-    _DoubleLinkedQueueEntry<E> entry = _nextLink as _DoubleLinkedQueueEntry<E>;
-    return entry._asNonSentinelEntry();
-  }
-
-  DoubleLinkedQueueEntry<E>? previousEntry() {
-    _DoubleLinkedQueueEntry<E> entry =
-        _previousLink as _DoubleLinkedQueueEntry<E>;
-    return entry._asNonSentinelEntry();
-  }
+  E get element;
 }
 
-/// The actual entry type used by the [DoubleLinkedQueue].
+/// Linked list entry used by the [DoubleLinkedQueue] to hold an element.
 ///
-/// The entry contains a reference to the queue, allowing
+/// These entry objects are also exposed by [DoubleLinkedQueue.firstEntry],
+/// [DoubleLinkedQueue.lastEntry] and [DoubleLinkedQueue.forEachEntry].
+///
+/// The entry contains both the [element] (which is mutable to anyone with
+/// access to the entry object) and a reference to the queue, allowing
 /// [append]/[prepend] to update the list length.
-class _DoubleLinkedQueueElement<E> extends _DoubleLinkedQueueEntry<E> {
-  _DoubleLinkedQueueElement(E element, DoubleLinkedQueue<E>? queue)
-      : super(element, queue);
+///
+/// When an entry is removed from its queue, the [_queue] is set to `null`
+/// and will never change again. You can still use the unlinked entry
+/// to create a new list, by calling [append] and [prepend], but it won't
+/// be part of any [DoubleLinkedQueue].
+class _DoubleLinkedQueueElement<E> extends _DoubleLinkedQueueEntry<E>
+    implements DoubleLinkedQueueEntry<E> {
+  DoubleLinkedQueue<E>? _queue;
+  E element;
+
+  _DoubleLinkedQueueElement(this.element, this._queue);
 
   void append(E e) {
-    _append(e);
-    if (_queue != null) _queue!._elementCount++;
+    _append(e, _queue);
+    _queue?._elementCount++;
   }
 
   void prepend(E e) {
-    _prepend(e);
-    if (_queue != null) _queue!._elementCount++;
+    _prepend(e, _queue);
+    _queue?._elementCount++;
   }
 
   E _remove() {
@@ -238,30 +193,43 @@
   }
 
   E remove() {
-    if (_queue != null) _queue!._elementCount--;
+    _queue?._elementCount--;
     return _remove();
   }
 
-  _DoubleLinkedQueueElement<E>? _asNonSentinelEntry() {
-    return this;
-  }
+  _DoubleLinkedQueueElement<E> _asNonSentinelEntry() => this;
+
+  DoubleLinkedQueueEntry<E>? previousEntry() =>
+      _previousLink?._asNonSentinelEntry();
+
+  DoubleLinkedQueueEntry<E>? nextEntry() => _nextLink?._asNonSentinelEntry();
 }
 
-/// A sentinel in a double linked list is used to manipulate the list
-/// at both ends.
-/// A double linked list has exactly one sentinel,
+/// A header object used to hold the two ends of a double linked queue.
+///
+/// A [DoubleLinkedQueue] has exactly one sentinel,
 /// which is the only entry when the list is constructed.
-/// Initially, a sentinel has its next and previous entry point to itself.
-/// A sentinel does not box any user element.
+///
+/// Initially, a sentinel has its next and previous entries point to itself.
+/// Its next and previous links are never `null` after creation, and
+/// the entries linked always form a circular structure with the next link
+/// pointing to the first element of the queue, and the previous link
+/// pointing to the last element of the queue, or both pointing to itself
+/// again if the queue becomes empty.
+///
+/// Implements [_DoubleLinkedQueueEntry._remove] and
+/// [_DoubleLinkedQueueEntry.element] as throwing because
+/// it makes it simple to implement members like [Queue.removeFirst]
+/// or [Queue.first] as throwing on an empty queue.
+///
+/// A sentinel does not contain any user element.
 class _DoubleLinkedQueueSentinel<E> extends _DoubleLinkedQueueEntry<E> {
-  _DoubleLinkedQueueSentinel(DoubleLinkedQueue<E> queue) : super(null, queue) {
+  _DoubleLinkedQueueSentinel() {
     _previousLink = this;
     _nextLink = this;
   }
 
-  DoubleLinkedQueueEntry<E>? _asNonSentinelEntry() {
-    return null;
-  }
+  Null _asNonSentinelEntry() => null;
 
   /// Hit by, e.g., [DoubleLinkedQueue.removeFirst] if the queue is empty.
   E _remove() {
@@ -269,7 +237,7 @@
   }
 
   /// Hit by, e.g., [DoubleLinkedQueue.first] if the queue is empty.
-  E get _element {
+  E get element {
     throw IterableElementError.noElement();
   }
 }
@@ -278,8 +246,8 @@
 ///
 /// Allows constant time add, remove-at-ends and peek operations.
 class DoubleLinkedQueue<E> extends Iterable<E> implements Queue<E> {
-  late _DoubleLinkedQueueSentinel<E> _sentinel =
-      _DoubleLinkedQueueSentinel<E>(this);
+  final _DoubleLinkedQueueSentinel<E> _sentinel =
+      _DoubleLinkedQueueSentinel<E>();
 
   int _elementCount = 0;
 
@@ -318,49 +286,48 @@
   int get length => _elementCount;
 
   void addLast(E value) {
-    _sentinel._prepend(value);
+    _sentinel._prepend(value, this);
     _elementCount++;
   }
 
   void addFirst(E value) {
-    _sentinel._append(value);
+    _sentinel._append(value, this);
     _elementCount++;
   }
 
   void add(E value) {
-    _sentinel._prepend(value);
+    _sentinel._prepend(value, this);
     _elementCount++;
   }
 
   void addAll(Iterable<E> iterable) {
     for (final E value in iterable) {
-      _sentinel._prepend(value);
+      _sentinel._prepend(value, this);
       _elementCount++;
     }
   }
 
   E removeLast() {
-    _DoubleLinkedQueueEntry<E> lastEntry =
-        _sentinel._previousLink as _DoubleLinkedQueueEntry<E>;
-    E result = lastEntry._remove();
+    // Hits sentinel's `_remove` if queue is empty.
+    E result = _sentinel._previousLink!._remove();
     _elementCount--;
     return result;
   }
 
   E removeFirst() {
-    _DoubleLinkedQueueEntry<E> firstEntry =
-        _sentinel._nextLink as _DoubleLinkedQueueEntry<E>;
-    E result = firstEntry._remove();
+    // Hits sentinel's `_remove` if queue is empty.
+    E result = _sentinel._nextLink!._remove();
     _elementCount--;
     return result;
   }
 
   bool remove(Object? o) {
-    _DoubleLinkedQueueEntry<E> entry =
-        _sentinel._nextLink as _DoubleLinkedQueueEntry<E>;
-    while (!identical(entry, _sentinel)) {
-      bool equals = (entry._element == o);
-      if (!identical(this, entry._queue)) {
+    _DoubleLinkedQueueEntry<E> entry = _sentinel._nextLink!;
+    while (true) {
+      var elementEntry = entry._asNonSentinelEntry();
+      if (elementEntry == null) return false;
+      bool equals = (elementEntry.element == o);
+      if (!identical(this, elementEntry._queue)) {
         // Entry must still be in the queue.
         throw ConcurrentModificationError(this);
       }
@@ -369,26 +336,26 @@
         _elementCount--;
         return true;
       }
-      entry = entry._nextLink as _DoubleLinkedQueueEntry<E>;
+      entry = entry._nextLink!;
     }
-    return false;
   }
 
   void _filter(bool test(E element), bool removeMatching) {
-    _DoubleLinkedQueueEntry<E> entry =
-        _sentinel._nextLink as _DoubleLinkedQueueEntry<E>;
-    while (!identical(entry, _sentinel)) {
-      bool matches = test(entry._element);
-      if (!identical(this, entry._queue)) {
+    _DoubleLinkedQueueEntry<E> entry = _sentinel._nextLink!;
+    while (true) {
+      var elementEntry = entry._asNonSentinelEntry();
+      if (elementEntry == null) return;
+      bool matches = test(elementEntry.element);
+      if (!identical(this, elementEntry._queue)) {
         // Entry must still be in the queue.
         throw ConcurrentModificationError(this);
       }
-      DoubleLinkedQueueEntry<E> next = entry._nextLink!; // Cannot be null.
+      var next = entry._nextLink!; // Cannot be null while entry is in queue.
       if (identical(removeMatching, matches)) {
-        entry._remove();
+        elementEntry._remove();
         _elementCount--;
       }
-      entry = next as _DoubleLinkedQueueEntry<E>;
+      entry = next;
     }
   }
 
@@ -400,22 +367,17 @@
     _filter(test, false);
   }
 
-  E get first {
-    DoubleLinkedQueueEntry<E> firstEntry = _sentinel._nextLink!;
-    return firstEntry._element as E;
-  }
+  // Hits sentinel's `get element` if no element in queue.
+  E get first => _sentinel._nextLink!.element;
 
-  E get last {
-    DoubleLinkedQueueEntry<E> lastEntry = _sentinel._previousLink!;
-    return lastEntry._element as E;
-  }
+  // Hits sentinel's `get element` if no element in queue.
+  E get last => _sentinel._previousLink!.element;
 
   E get single {
     // Note that this throws correctly if the queue is empty
     // because reading the element of the sentinel throws.
     if (identical(_sentinel._nextLink, _sentinel._previousLink)) {
-      DoubleLinkedQueueEntry<E> entry = _sentinel._nextLink!;
-      return entry._element as E;
+      return _sentinel._nextLink!.element;
     }
     throw IterableElementError.tooMany();
   }
@@ -430,9 +392,8 @@
   /// The entry objects can also be accessed using [lastEntry],
   /// and they can be iterated using [DoubleLinkedQueueEntry.nextEntry] and
   /// [DoubleLinkedQueueEntry.previousEntry].
-  DoubleLinkedQueueEntry<E>? firstEntry() {
-    return _sentinel.nextEntry();
-  }
+  DoubleLinkedQueueEntry<E>? firstEntry() =>
+      _sentinel._nextLink!._asNonSentinelEntry();
 
   /// The entry object of the last element in the queue.
   ///
@@ -444,15 +405,22 @@
   /// The entry objects can also be accessed using [firstEntry],
   /// and they can be iterated using [DoubleLinkedQueueEntry.nextEntry] and
   /// [DoubleLinkedQueueEntry.previousEntry].
-  DoubleLinkedQueueEntry<E>? lastEntry() {
-    return _sentinel.previousEntry();
-  }
+  DoubleLinkedQueueEntry<E>? lastEntry() =>
+      _sentinel._previousLink!._asNonSentinelEntry();
 
-  bool get isEmpty {
-    return (identical(_sentinel._nextLink, _sentinel));
-  }
+  bool get isEmpty => identical(_sentinel._nextLink, _sentinel);
 
   void clear() {
+    var cursor = _sentinel._nextLink!;
+    while (true) {
+      var entry = cursor._asNonSentinelEntry();
+      if (entry == null) break;
+      cursor = cursor._nextLink!;
+      entry
+        .._nextLink = null
+        .._previousLink = null
+        .._queue = null;
+    }
     _sentinel._nextLink = _sentinel;
     _sentinel._previousLink = _sentinel;
     _elementCount = 0;
@@ -475,57 +443,59 @@
   /// inserted after the current element before it is removed will not be
   /// visited by the iteration.
   void forEachEntry(void action(DoubleLinkedQueueEntry<E> element)) {
-    _DoubleLinkedQueueEntry<E> entry =
-        _sentinel._nextLink as _DoubleLinkedQueueEntry<E>;
-    while (!identical(entry, _sentinel)) {
-      _DoubleLinkedQueueElement<E> element =
-          entry as _DoubleLinkedQueueElement<E>;
-      _DoubleLinkedQueueEntry<E> next =
-          element._nextLink as _DoubleLinkedQueueEntry<E>;
-      // Remember both entry and entry._nextLink.
-      // If someone calls `element.remove()` we continue from `next`.
-      // Otherwise we use the value of entry._nextLink which may have been
-      // updated.
-      action(element);
-      if (identical(this, entry._queue)) {
-        next = entry._nextLink as _DoubleLinkedQueueEntry<E>;
-      } else if (!identical(this, next._queue)) {
+    var cursor = _sentinel._nextLink!;
+    while (true) {
+      var element = cursor._asNonSentinelEntry();
+      if (element == null) break;
+      if (!identical(element._queue, this)) {
         throw ConcurrentModificationError(this);
       }
-      entry = next;
+      cursor = cursor._nextLink!;
+      // Remember both element and element._nextLink (as cursor).
+      // If someone calls `element.remove()` we continue from `next`.
+      // Otherwise we use the value of element._nextLink which may have been
+      // updated.
+      action(element);
+      if (identical(this, element._queue)) {
+        cursor = element._nextLink!;
+      }
     }
   }
 
   _DoubleLinkedQueueIterator<E> get iterator {
-    return _DoubleLinkedQueueIterator<E>(_sentinel);
+    return _DoubleLinkedQueueIterator<E>(this);
   }
 
   String toString() => IterableBase.iterableToFullString(this, '{', '}');
 }
 
 class _DoubleLinkedQueueIterator<E> implements Iterator<E> {
-  _DoubleLinkedQueueSentinel<E>? _sentinel;
-  DoubleLinkedQueueEntry<E>? _nextEntry;
+  /// Queue being iterated. Used for concurrent modification checks.
+  DoubleLinkedQueue<E>? _queue;
+
+  /// Next entry to visit. Set to null when hitting the sentinel.
+  _DoubleLinkedQueueEntry<E>? _nextEntry;
+
+  /// Current element value, when valid.
   E? _current;
 
-  _DoubleLinkedQueueIterator(_DoubleLinkedQueueSentinel<E> sentinel)
-      : _sentinel = sentinel,
-        _nextEntry = sentinel._nextLink;
+  _DoubleLinkedQueueIterator(DoubleLinkedQueue<E> this._queue)
+      : _nextEntry = _queue._sentinel._nextLink;
 
   bool moveNext() {
-    if (identical(_nextEntry, _sentinel)) {
+    var nextElement = _nextEntry?._asNonSentinelEntry();
+    if (nextElement == null) {
+      // Clear everything to not unnecessarily keep values alive.
       _current = null;
       _nextEntry = null;
-      _sentinel = null;
+      _queue = null;
       return false;
     }
-    _DoubleLinkedQueueEntry<E> elementEntry =
-        _nextEntry as _DoubleLinkedQueueEntry<E>;
-    if (!identical(_sentinel!._queue, elementEntry._queue)) {
-      throw ConcurrentModificationError(_sentinel!._queue);
+    if (!identical(_queue, nextElement._queue)) {
+      throw ConcurrentModificationError(_queue);
     }
-    _current = elementEntry._element;
-    _nextEntry = elementEntry._nextLink;
+    _current = nextElement.element;
+    _nextEntry = nextElement._nextLink;
     return true;
   }
 
diff --git a/sdk/lib/internal/internal.dart b/sdk/lib/internal/internal.dart
index 0e4c898..71f02d9 100644
--- a/sdk/lib/internal/internal.dart
+++ b/sdk/lib/internal/internal.dart
@@ -948,3 +948,66 @@
   @Deprecated("Use networkConnectTimeoutError instead")
   static const int NETWORK_CONNECT_TIMEOUT_ERROR = networkConnectTimeoutError;
 }
+
+// Class moved here from dart:collection
+// to allow another, more important, class to implement the interface
+// without having to match the private members.
+
+/// An entry in a doubly linked list.
+///
+/// Such an entry contains an element and a link to the previous or next
+/// entries, if any.
+//
+// This class should have been abstract, but originally wasn't.
+// It's not used itself to interact with the double linked queue class,
+// which uses the `_DoubleLinkedQueueEntry` class and subclasses instead.
+// It's only used as an interface for the
+// `DoubleLinkedQueue.forEach`, `DoubleLinkedQueue.firstEntry` and
+// `DoubleLinkedQueue.lastEntry` members.
+// Still, someone might have based their own double-linked list on this
+// class, so we keep it functional.
+class DoubleLinkedQueueEntry<E> {
+  DoubleLinkedQueueEntry<E>? _previousLink;
+  DoubleLinkedQueueEntry<E>? _nextLink;
+
+  /// The element of the entry in the queue.
+  E element;
+
+  /// Creates a new entry with the given [element].
+  DoubleLinkedQueueEntry(this.element);
+
+  void _link(
+      DoubleLinkedQueueEntry<E>? previous, DoubleLinkedQueueEntry<E>? next) {
+    _nextLink = next;
+    _previousLink = previous;
+    previous?._nextLink = this;
+    next?._previousLink = this;
+  }
+
+  /// Appends the given element [e] as entry just after this entry.
+  void append(E e) {
+    DoubleLinkedQueueEntry<E>(e)._link(this, _nextLink);
+  }
+
+  /// Prepends the given [e] as entry just before this entry.
+  void prepend(E e) {
+    DoubleLinkedQueueEntry<E>(e)._link(_previousLink, this);
+  }
+
+  /// Removes this entry from any chain of entries it is part of.
+  ///
+  /// Returns its element value.
+  E remove() {
+    _previousLink?._nextLink = _nextLink;
+    _nextLink?._previousLink = _previousLink;
+    _nextLink = null;
+    _previousLink = null;
+    return element;
+  }
+
+  /// The previous entry, or `null` if there is none.
+  DoubleLinkedQueueEntry<E>? previousEntry() => _previousLink;
+
+  /// The next entry, or `null` if there is none.
+  DoubleLinkedQueueEntry<E>? nextEntry() => _nextLink;
+}
diff --git a/tests/corelib/corelib.status b/tests/corelib/corelib.status
index 97150c2..ecde5a5 100644
--- a/tests/corelib/corelib.status
+++ b/tests/corelib/corelib.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.
 
+bigint_parse_radix_test/3: Slow # Issue http://dartbug.com/47050
+
 [ $compiler == dartdevk ]
 regexp/lookbehind_test/01: Skip # Flaky in uncatchable way.  Issue 36280
 
diff --git a/tests/corelib/queue_single_test.dart b/tests/corelib/queue_single_test.dart
deleted file mode 100644
index 1ef6b59..0000000
--- a/tests/corelib/queue_single_test.dart
+++ /dev/null
@@ -1,20 +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.
-
-library queue.single.test;
-
-import "package:expect/expect.dart";
-import 'dart:collection' show Queue;
-
-main() {
-  Queue<int> queue1 = new Queue<int>();
-  queue1.add(42);
-  Queue queue2 = new Queue();
-  queue2..add(11)..add(12)..add(13);
-  Queue queue3 = new Queue();
-
-  Expect.equals(42, queue1.single);
-  Expect.throwsStateError(() => queue2.single);
-  Expect.throwsStateError(() => queue3.single);
-}
diff --git a/tests/corelib_2/corelib_2.status b/tests/corelib_2/corelib_2.status
index 726b58f..3ee1d12 100644
--- a/tests/corelib_2/corelib_2.status
+++ b/tests/corelib_2/corelib_2.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.
 
+bigint_parse_radix_test/3: Slow # Issue http://dartbug.com/47050
+
 [ $compiler == dartdevk ]
 regexp/lookbehind_test/01: Skip # Flaky in uncatchable way.  Issue 36280
 
diff --git a/tests/language/constructor/reference_test.dart b/tests/language/constructor/reference_test.dart
index 0a7cb37..c1b33371 100644
--- a/tests/language/constructor/reference_test.dart
+++ b/tests/language/constructor/reference_test.dart
@@ -100,12 +100,10 @@
   //     ^^^^^
   // [analyzer] COMPILE_TIME_ERROR.WRONG_NUMBER_OF_TYPE_ARGUMENTS_CONSTRUCTOR
   Foo.bar<int>.baz();
-//^^^^^^^
-// [analyzer] COMPILE_TIME_ERROR.DISALLOWED_TYPE_INSTANTIATION_EXPRESSION
 //    ^
 // [cfe] Couldn't find constructor 'bar'.
-//             ^^^
-// [analyzer] COMPILE_TIME_ERROR.UNDEFINED_METHOD
+//       ^^^^^
+// [analyzer] COMPILE_TIME_ERROR.WRONG_NUMBER_OF_TYPE_ARGUMENTS_CONSTRUCTOR
   Foo.bar.baz<int>();
 //    ^
 // [cfe] Member not found: 'bar'.
diff --git a/tests/language/label/label8_test.dart b/tests/language/label/label8_test.dart
index c59bad2..f03d2a9 100644
--- a/tests/language/label/label8_test.dart
+++ b/tests/language/label/label8_test.dart
@@ -24,10 +24,8 @@
 // [analyzer] SYNTACTIC_ERROR.EXPECTED_TOKEN
 // [cfe] Expected ';' after this.
 //          ^
-// [analyzer] SYNTACTIC_ERROR.EXPECTED_TOKEN
 // [analyzer] SYNTACTIC_ERROR.MISSING_IDENTIFIER
 // [analyzer] SYNTACTIC_ERROR.UNEXPECTED_TOKEN
-// [cfe] Expected ';' after this.
 // [cfe] Expected an identifier, but got ':'.
 // [cfe] Unexpected token ':'.
       while (false) {
diff --git a/tests/language_2/constructor/reference_test.dart b/tests/language_2/constructor/reference_test.dart
index 776fe8b..03c68d5 100644
--- a/tests/language_2/constructor/reference_test.dart
+++ b/tests/language_2/constructor/reference_test.dart
@@ -102,12 +102,10 @@
   //     ^^^^^
   // [analyzer] COMPILE_TIME_ERROR.WRONG_NUMBER_OF_TYPE_ARGUMENTS_CONSTRUCTOR
   Foo.bar<int>.baz();
-//^^^^^^^
-// [analyzer] COMPILE_TIME_ERROR.DISALLOWED_TYPE_INSTANTIATION_EXPRESSION
 //    ^
 // [cfe] Couldn't find constructor 'bar'.
-//             ^^^
-// [analyzer] COMPILE_TIME_ERROR.UNDEFINED_METHOD
+//       ^^^^^
+// [analyzer] COMPILE_TIME_ERROR.WRONG_NUMBER_OF_TYPE_ARGUMENTS_CONSTRUCTOR
   Foo.bar.baz<int>();
 //    ^
 // [cfe] Member not found: 'bar'.
diff --git a/tests/language_2/label/label8_test.dart b/tests/language_2/label/label8_test.dart
index e490609..90675c9 100644
--- a/tests/language_2/label/label8_test.dart
+++ b/tests/language_2/label/label8_test.dart
@@ -26,10 +26,8 @@
 // [analyzer] SYNTACTIC_ERROR.EXPECTED_TOKEN
 // [cfe] Expected ';' after this.
 //          ^
-// [analyzer] SYNTACTIC_ERROR.EXPECTED_TOKEN
 // [analyzer] SYNTACTIC_ERROR.MISSING_IDENTIFIER
 // [analyzer] SYNTACTIC_ERROR.UNEXPECTED_TOKEN
-// [cfe] Expected ';' after this.
 // [cfe] Expected an identifier, but got ':'.
 // [cfe] Unexpected token ':'.
       while (false) {
diff --git a/tests/corelib/queue_first_test.dart b/tests/lib/collection/queue_first_test.dart
similarity index 89%
rename from tests/corelib/queue_first_test.dart
rename to tests/lib/collection/queue_first_test.dart
index d0baf99..fb7e1a6 100644
--- a/tests/corelib/queue_first_test.dart
+++ b/tests/lib/collection/queue_first_test.dart
@@ -9,7 +9,10 @@
 
 main() {
   Queue<int> queue1 = new Queue<int>();
-  queue1..add(11)..add(12)..add(13);
+  queue1
+    ..add(11)
+    ..add(12)
+    ..add(13);
   Queue queue2 = new Queue();
 
   Expect.equals(11, queue1.first);
diff --git a/tests/corelib/queue_iterator_test.dart b/tests/lib/collection/queue_iterator_test.dart
similarity index 100%
rename from tests/corelib/queue_iterator_test.dart
rename to tests/lib/collection/queue_iterator_test.dart
diff --git a/tests/corelib/queue_last_test.dart b/tests/lib/collection/queue_last_test.dart
similarity index 89%
rename from tests/corelib/queue_last_test.dart
rename to tests/lib/collection/queue_last_test.dart
index 3ea2eff..288ad40 100644
--- a/tests/corelib/queue_last_test.dart
+++ b/tests/lib/collection/queue_last_test.dart
@@ -9,7 +9,10 @@
 
 main() {
   Queue<int> queue1 = new Queue<int>();
-  queue1..add(11)..add(12)..add(13);
+  queue1
+    ..add(11)
+    ..add(12)
+    ..add(13);
   Queue queue2 = new Queue();
 
   Expect.equals(13, queue1.last);
diff --git a/tests/corelib_2/queue_single_test.dart b/tests/lib/collection/queue_single_test.dart
similarity index 91%
copy from tests/corelib_2/queue_single_test.dart
copy to tests/lib/collection/queue_single_test.dart
index c1ebef1..a4cdfbf 100644
--- a/tests/corelib_2/queue_single_test.dart
+++ b/tests/lib/collection/queue_single_test.dart
@@ -2,8 +2,6 @@
 // for details. All rights reserved. Use of this source code is governed by a
 // BSD-style license that can be found in the LICENSE file.
 
-// @dart = 2.9
-
 library queue.single.test;
 
 import "package:expect/expect.dart";
@@ -13,7 +11,10 @@
   Queue<int> queue1 = new Queue<int>();
   queue1.add(42);
   Queue queue2 = new Queue();
-  queue2..add(11)..add(12)..add(13);
+  queue2
+    ..add(11)
+    ..add(12)
+    ..add(13);
   Queue queue3 = new Queue();
 
   Expect.equals(42, queue1.single);
diff --git a/tests/corelib/queue_test.dart b/tests/lib/collection/queue_test.dart
similarity index 89%
rename from tests/corelib/queue_test.dart
rename to tests/lib/collection/queue_test.dart
index a34038e..0abfa51 100644
--- a/tests/corelib/queue_test.dart
+++ b/tests/lib/collection/queue_test.dart
@@ -56,41 +56,29 @@
     Queue other = newQueueFrom(queue.where(is10));
     checkQueue(other, 1, 10);
 
-    Expect.equals(true, queue.any(is10));
+    Expect.isTrue(queue.any(is10));
 
     bool isInstanceOfInt(dynamic value) {
       return (value is int);
     }
 
-    Expect.equals(true, queue.every(isInstanceOfInt));
+    Expect.isTrue(queue.every(isInstanceOfInt));
 
-    Expect.equals(false, queue.every(is10));
+    Expect.isFalse(queue.every(is10));
 
     bool is1(dynamic value) {
       return (value == 1);
     }
 
-    Expect.equals(false, queue.any(is1));
+    Expect.isFalse(queue.any(is1));
 
     queue.clear();
     Expect.equals(0, queue.length);
 
-    var exception = null;
-    try {
-      queue.removeFirst();
-    } on StateError catch (e) {
-      exception = e;
-    }
-    Expect.equals(true, exception != null);
+    Expect.throws<StateError>(queue.removeFirst);
     Expect.equals(0, queue.length);
 
-    exception = null;
-    try {
-      queue.removeLast();
-    } on StateError catch (e) {
-      exception = e;
-    }
-    Expect.equals(true, exception != null);
+    Expect.throws<StateError>(queue.removeLast);
     Expect.equals(0, queue.length);
 
     queue.addFirst(1);
@@ -134,7 +122,7 @@
     Expect.equals(expectedSum, sum);
   }
 
-  testLength(int length, Queue queue) {
+  void testLength(int length, Queue queue) {
     Expect.equals(length, queue.length);
     ((length == 0) ? Expect.isTrue : Expect.isFalse)(queue.isEmpty);
     ((length != 0) ? Expect.isTrue : Expect.isFalse)(queue.isNotEmpty);
@@ -242,9 +230,12 @@
         queue.toList());
 
     // Regression test: http://dartbug.com/16270
-    // This should do nothing, and should not throw.
+    // These should all do nothing, and should not throw.
     Queue emptyQueue = newQueue();
     emptyQueue.remove(0);
+    emptyQueue.removeWhere((x) => throw "unreachable");
+    emptyQueue.retainWhere((x) => throw "unreachable");
+    Expect.equals(0, emptyQueue.length);
   }
 
   void testLarge() {
@@ -414,11 +405,11 @@
     DoubleLinkedQueueEntry<int>? entry1 = queue1.firstEntry();
     DoubleLinkedQueueEntry<int>? entry2 = queue2.firstEntry();
     while (entry1 != null) {
-      Expect.equals(true, !identical(entry1, entry2));
+      Expect.notIdentical(entry1, entry2);
       entry1 = entry1.nextEntry();
       entry2 = entry2!.nextEntry();
     }
-    Expect.equals(null, entry2);
+    Expect.isNull(entry2);
 
     var firstEntry = queue1.firstEntry()!;
     var secondEntry = queue1.firstEntry()!.nextEntry()!;
@@ -430,19 +421,27 @@
     thirdEntry.prepend(8);
     thirdEntry.append(9);
     Expect.equals(9, queue1.length);
-    Expect.listEquals(queue1.toList(), [4, 1, 5, 6, 2, 7, 8, 3, 9]);
+    Expect.listEquals([4, 1, 5, 6, 2, 7, 8, 3, 9], queue1.toList());
     Expect.equals(1, firstEntry.remove());
     Expect.equals(2, secondEntry.remove());
     Expect.equals(3, thirdEntry.remove());
     Expect.equals(6, queue1.length);
-    Expect.listEquals(queue1.toList(), [4, 5, 6, 7, 8, 9]);
+    Expect.listEquals([4, 5, 6, 7, 8, 9], queue1.toList());
+
+    var elements = [];
+    queue1.forEachEntry((entry) {
+      elements.add(entry.element);
+      entry.remove(); // Can remove while iterating.
+    });
+    Expect.listEquals([4, 5, 6, 7, 8, 9], elements);
+    Expect.isTrue(queue1.isEmpty);
   }
 }
 
 void linkEntryTest() {
   var entry = new DoubleLinkedQueueEntry(42);
-  Expect.equals(null, entry.previousEntry());
-  Expect.equals(null, entry.nextEntry());
+  Expect.isNull(entry.previousEntry());
+  Expect.isNull(entry.nextEntry());
 
   entry.append(37);
   entry.prepend(87);
@@ -453,8 +452,8 @@
   Expect.equals(87, prev.element);
   Expect.identical(entry, prev.nextEntry());
   Expect.identical(entry, next.previousEntry());
-  Expect.equals(null, next.nextEntry());
-  Expect.equals(null, prev.previousEntry());
+  Expect.isNull(next.nextEntry());
+  Expect.isNull(prev.previousEntry());
 
   entry.element = 117;
   Expect.equals(117, entry.element);
@@ -464,15 +463,15 @@
   Expect.equals(117, entry.remove());
   Expect.identical(next, prev.nextEntry());
   Expect.identical(prev, next.previousEntry());
-  Expect.equals(null, next.nextEntry());
-  Expect.equals(null, prev.previousEntry());
+  Expect.isNull(next.nextEntry());
+  Expect.isNull(prev.previousEntry());
   Expect.equals(37, next.element);
   Expect.equals(87, prev.element);
 
   Expect.equals(37, next.remove());
   Expect.equals(87, prev.element);
-  Expect.equals(null, prev.nextEntry());
-  Expect.equals(null, prev.previousEntry());
+  Expect.isNull(prev.nextEntry());
+  Expect.isNull(prev.previousEntry());
 
   Expect.equals(87, prev.remove());
 }
diff --git a/tests/corelib_2/queue_first_test.dart b/tests/lib_2/collection/queue_first_test.dart
similarity index 90%
rename from tests/corelib_2/queue_first_test.dart
rename to tests/lib_2/collection/queue_first_test.dart
index 63ec6ca..99fe1c6 100644
--- a/tests/corelib_2/queue_first_test.dart
+++ b/tests/lib_2/collection/queue_first_test.dart
@@ -11,7 +11,10 @@
 
 main() {
   Queue<int> queue1 = new Queue<int>();
-  queue1..add(11)..add(12)..add(13);
+  queue1
+    ..add(11)
+    ..add(12)
+    ..add(13);
   Queue queue2 = new Queue();
 
   Expect.equals(11, queue1.first);
diff --git a/tests/corelib_2/queue_iterator_test.dart b/tests/lib_2/collection/queue_iterator_test.dart
similarity index 100%
rename from tests/corelib_2/queue_iterator_test.dart
rename to tests/lib_2/collection/queue_iterator_test.dart
diff --git a/tests/corelib_2/queue_last_test.dart b/tests/lib_2/collection/queue_last_test.dart
similarity index 90%
rename from tests/corelib_2/queue_last_test.dart
rename to tests/lib_2/collection/queue_last_test.dart
index 3d070da..f5575f1 100644
--- a/tests/corelib_2/queue_last_test.dart
+++ b/tests/lib_2/collection/queue_last_test.dart
@@ -11,7 +11,10 @@
 
 main() {
   Queue<int> queue1 = new Queue<int>();
-  queue1..add(11)..add(12)..add(13);
+  queue1
+    ..add(11)
+    ..add(12)
+    ..add(13);
   Queue queue2 = new Queue();
 
   Expect.equals(13, queue1.last);
diff --git a/tests/corelib_2/queue_single_test.dart b/tests/lib_2/collection/queue_single_test.dart
similarity index 91%
rename from tests/corelib_2/queue_single_test.dart
rename to tests/lib_2/collection/queue_single_test.dart
index c1ebef1..29654c6 100644
--- a/tests/corelib_2/queue_single_test.dart
+++ b/tests/lib_2/collection/queue_single_test.dart
@@ -13,7 +13,10 @@
   Queue<int> queue1 = new Queue<int>();
   queue1.add(42);
   Queue queue2 = new Queue();
-  queue2..add(11)..add(12)..add(13);
+  queue2
+    ..add(11)
+    ..add(12)
+    ..add(13);
   Queue queue3 = new Queue();
 
   Expect.equals(42, queue1.single);
diff --git a/tests/corelib_2/queue_test.dart b/tests/lib_2/collection/queue_test.dart
similarity index 89%
rename from tests/corelib_2/queue_test.dart
rename to tests/lib_2/collection/queue_test.dart
index 08ea375..6a903e6 100644
--- a/tests/corelib_2/queue_test.dart
+++ b/tests/lib_2/collection/queue_test.dart
@@ -58,41 +58,29 @@
     Queue other = newQueueFrom(queue.where(is10));
     checkQueue(other, 1, 10);
 
-    Expect.equals(true, queue.any(is10));
+    Expect.isTrue(queue.any(is10));
 
     bool isInstanceOfInt(Object value) {
       return (value is int);
     }
 
-    Expect.equals(true, queue.every(isInstanceOfInt));
+    Expect.isTrue(queue.every(isInstanceOfInt));
 
-    Expect.equals(false, queue.every(is10));
+    Expect.isFalse(queue.every(is10));
 
     bool is1(Object value) {
       return (value == 1);
     }
 
-    Expect.equals(false, queue.any(is1));
+    Expect.isFalse(queue.any(is1));
 
     queue.clear();
     Expect.equals(0, queue.length);
 
-    var exception = null;
-    try {
-      queue.removeFirst();
-    } on StateError catch (e) {
-      exception = e;
-    }
-    Expect.equals(true, exception != null);
+    Expect.throws<StateError>(queue.removeFirst);
     Expect.equals(0, queue.length);
 
-    exception = null;
-    try {
-      queue.removeLast();
-    } on StateError catch (e) {
-      exception = e;
-    }
-    Expect.equals(true, exception != null);
+    Expect.throws<StateError>(queue.removeLast);
     Expect.equals(0, queue.length);
 
     queue.addFirst(1);
@@ -136,7 +124,7 @@
     Expect.equals(expectedSum, sum);
   }
 
-  testLength(int length, Queue queue) {
+  void testLength(int length, Queue queue) {
     Expect.equals(length, queue.length);
     ((length == 0) ? Expect.isTrue : Expect.isFalse)(queue.isEmpty);
     ((length != 0) ? Expect.isTrue : Expect.isFalse)(queue.isNotEmpty);
@@ -164,8 +152,6 @@
       sum += e;
     }
 
-    ;
-
     set.forEach(f);
     Expect.equals(7, sum);
     sum = 0;
@@ -249,8 +235,9 @@
     // These should all do nothing, and should not throw.
     Queue emptyQueue = newQueue();
     emptyQueue.remove(0);
-    emptyQueue.removeWhere((x) => null);
-    emptyQueue.retainWhere((x) => null);
+    emptyQueue.removeWhere((x) => throw "unreachable");
+    emptyQueue.retainWhere((x) => throw "unreachable");
+    Expect.equals(0, emptyQueue.length);
   }
 
   void testLarge() {
@@ -420,11 +407,11 @@
     DoubleLinkedQueueEntry<int> entry1 = queue1.firstEntry();
     DoubleLinkedQueueEntry<int> entry2 = queue2.firstEntry();
     while (entry1 != null) {
-      Expect.equals(true, !identical(entry1, entry2));
+      Expect.notIdentical(entry1, entry2);
       entry1 = entry1.nextEntry();
       entry2 = entry2.nextEntry();
     }
-    Expect.equals(null, entry2);
+    Expect.isNull(entry2);
 
     var firstEntry = queue1.firstEntry();
     var secondEntry = queue1.firstEntry().nextEntry();
@@ -436,19 +423,27 @@
     thirdEntry.prepend(8);
     thirdEntry.append(9);
     Expect.equals(9, queue1.length);
-    Expect.listEquals(queue1.toList(), [4, 1, 5, 6, 2, 7, 8, 3, 9]);
+    Expect.listEquals([4, 1, 5, 6, 2, 7, 8, 3, 9], queue1.toList());
     Expect.equals(1, firstEntry.remove());
     Expect.equals(2, secondEntry.remove());
     Expect.equals(3, thirdEntry.remove());
     Expect.equals(6, queue1.length);
-    Expect.listEquals(queue1.toList(), [4, 5, 6, 7, 8, 9]);
+    Expect.listEquals([4, 5, 6, 7, 8, 9], queue1.toList());
+
+    var elements = [];
+    queue1.forEachEntry((entry) {
+      elements.add(entry.element);
+      entry.remove(); // Can remove while iterating.
+    });
+    Expect.listEquals([4, 5, 6, 7, 8, 9], elements);
+    Expect.isTrue(queue1.isEmpty);
   }
 }
 
 void linkEntryTest() {
   var entry = new DoubleLinkedQueueEntry(42);
-  Expect.equals(null, entry.previousEntry());
-  Expect.equals(null, entry.nextEntry());
+  Expect.isNull(entry.previousEntry());
+  Expect.isNull(entry.nextEntry());
 
   entry.append(37);
   entry.prepend(87);
@@ -459,8 +454,8 @@
   Expect.equals(87, prev.element);
   Expect.identical(entry, prev.nextEntry());
   Expect.identical(entry, next.previousEntry());
-  Expect.equals(null, next.nextEntry());
-  Expect.equals(null, prev.previousEntry());
+  Expect.isNull(next.nextEntry());
+  Expect.isNull(prev.previousEntry());
 
   entry.element = 117;
   Expect.equals(117, entry.element);
@@ -470,15 +465,15 @@
   Expect.equals(117, entry.remove());
   Expect.identical(next, prev.nextEntry());
   Expect.identical(prev, next.previousEntry());
-  Expect.equals(null, next.nextEntry());
-  Expect.equals(null, prev.previousEntry());
+  Expect.isNull(next.nextEntry());
+  Expect.isNull(prev.previousEntry());
   Expect.equals(37, next.element);
   Expect.equals(87, prev.element);
 
   Expect.equals(37, next.remove());
   Expect.equals(87, prev.element);
-  Expect.equals(null, prev.nextEntry());
-  Expect.equals(null, prev.previousEntry());
+  Expect.isNull(prev.nextEntry());
+  Expect.isNull(prev.previousEntry());
 
   Expect.equals(87, prev.remove());
 }
diff --git a/tools/VERSION b/tools/VERSION
index f34b853..f3425e5 100644
--- a/tools/VERSION
+++ b/tools/VERSION
@@ -27,5 +27,5 @@
 MAJOR 2
 MINOR 15
 PATCH 0
-PRERELEASE 66
+PRERELEASE 67
 PRERELEASE_PATCH 0
\ No newline at end of file