Version 2.15.0-184.0.dev

Merge commit 'fad6dab20c1e5c21ad4dc34aeca676892e66b3d9' into 'dev'
diff --git a/CHANGELOG.md b/CHANGELOG.md
index db20c84..ed74bf7 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -280,7 +280,7 @@
 - When a script is `dart run` it will always be precompiled, but with
   incremental precompilation for following runs.
 
-### `dart:core`
+#### `dart:core`
 
 - Add extension `name` getter on enum values.
 - Add `Enum.compareByIndex` helper function for comparing enum values by index.
@@ -288,6 +288,12 @@
 - Add extension methods on `Iterable<T extends Enum>`, intended for
   `SomeEnumType.values` lists, to look up values by name.
 
+#### `dart:io`
+
+- **Breaking Change** [#46875](https://github.com/dart-lang/sdk/issues/46875):
+  The `SecurityContext` class in `dart:io` has been updated to set the minimum
+  TLS protocol version to TLS1_2_VERSION (1.2) instead of TLS1_VERSION.
+
 ### Tools
 
 #### Dart command line
diff --git a/DEPS b/DEPS
index 7bb539d..bbeda37f 100644
--- a/DEPS
+++ b/DEPS
@@ -107,7 +107,7 @@
   "dart_style_rev": "14d9b6fd58cc4744676c12be3cc5eee2a779db82",
 
   "dartdoc_rev" : "c2f284f09bcc49025fe26e86b2d45e1b546f81a3",
-  "devtools_rev" : "2b47d9ed486479153ca2fd038000950674ed1beb",
+  "devtools_rev" : "8881a7caa9067471008a8e00750b161f53cdb843",
   "jsshell_tag": "version:88.0",
   "ffi_rev": "4dd32429880a57b64edaf54c9d5af8a9fa9a4ffb",
   "fixnum_rev": "16d3890c6dc82ca629659da1934e412292508bba",
diff --git a/README.dart-sdk b/README.dart-sdk
index 90851d5..ff4bb61 100644
--- a/README.dart-sdk
+++ b/README.dart-sdk
@@ -1,23 +1,20 @@
 The Dart SDK is a set of tools and libraries for the Dart programming language.
 
-You can find information about Dart online at dartlang.org.
+You can find information about Dart online at https://dart.dev/.
 
 Here's a brief guide to what's in here:
 
-bin/             Binaries/scripts to compile, run, and manage Dart applications.
-  dart           Main Dart command-line executable
-  dart2js        Dart-to-JavaScript compiler
-  dart2native    Dart-to-native AOT compiler
-  dartanalyzer   Dart static analyzer
-  dartdoc        Dart documentation generator
-  pub            Pub, the Dart package manager
+bin/               Binaries/scripts to compile, run, and manage Dart apps.
+  dart             Dart virtual machine
+  dartaotruntime   Minimal Dart runtime for running AOT modules
+  dart2js          Dart-to-JavaScript compiler
+  dartanalyzer     Dart static analyzer
+  dartdoc          Dart documentation generator
 
-lib/             Libraries that are shipped with the Dart runtime. More
-                 information is available at api.dartlang.org.
+lib/               Libraries that are shipped with the Dart runtime. More
+                   information is available at https://api.dart.dev.
 
-packages/        Additional packages that are shipped outside of the Dart
-                 runtime. More information is available at api.dartlang.org.
+version            The version number of the SDK (for example, 2.12.1).
 
-version          The version number of the SDK (ex. 1.5.1).
-
-revision         The Subversion revision of the SDK build (ex. 37107).
+revision           The git commit ID of the SDK build
+                   (for example, 020b3efd3f0023c5db2097787f7cf778db837a8f).
diff --git a/pkg/_fe_analyzer_shared/lib/src/messages/codes_generated.dart b/pkg/_fe_analyzer_shared/lib/src/messages/codes_generated.dart
index 0563d92..e95acec 100644
--- a/pkg/_fe_analyzer_shared/lib/src/messages/codes_generated.dart
+++ b/pkg/_fe_analyzer_shared/lib/src/messages/codes_generated.dart
@@ -7539,16 +7539,6 @@
         r"""Try using a constructor or factory that is 'const'.""");
 
 // DO NOT EDIT. THIS FILE IS GENERATED. SEE TOP OF FILE.
-const Code<Null> codeNonInstanceTypeVariableUse =
-    messageNonInstanceTypeVariableUse;
-
-// DO NOT EDIT. THIS FILE IS GENERATED. SEE TOP OF FILE.
-const MessageCode messageNonInstanceTypeVariableUse = const MessageCode(
-    "NonInstanceTypeVariableUse",
-    analyzerCodes: <String>["TYPE_PARAMETER_REFERENCED_BY_STATIC"],
-    problemMessage: r"""Can only use type variables in instance methods.""");
-
-// DO NOT EDIT. THIS FILE IS GENERATED. SEE TOP OF FILE.
 const Template<
     Message Function(
         String
diff --git a/pkg/_fe_analyzer_shared/lib/src/parser/forwarding_listener.dart b/pkg/_fe_analyzer_shared/lib/src/parser/forwarding_listener.dart
index 613e335..82f970c 100644
--- a/pkg/_fe_analyzer_shared/lib/src/parser/forwarding_listener.dart
+++ b/pkg/_fe_analyzer_shared/lib/src/parser/forwarding_listener.dart
@@ -66,13 +66,13 @@
   }
 
   @override
-  void beginClassOrMixinBody(DeclarationKind kind, Token token) {
-    listener?.beginClassOrMixinBody(kind, token);
+  void beginClassOrMixinOrExtensionBody(DeclarationKind kind, Token token) {
+    listener?.beginClassOrMixinOrExtensionBody(kind, token);
   }
 
   @override
-  void beginClassOrNamedMixinApplicationPrelude(Token token) {
-    listener?.beginClassOrNamedMixinApplicationPrelude(token);
+  void beginClassOrMixinOrNamedMixinApplicationPrelude(Token token) {
+    listener?.beginClassOrMixinOrNamedMixinApplicationPrelude(token);
   }
 
   @override
@@ -156,9 +156,10 @@
   }
 
   @override
-  void beginFactoryMethod(
-      Token lastConsumed, Token? externalToken, Token? constToken) {
-    listener?.beginFactoryMethod(lastConsumed, externalToken, constToken);
+  void beginFactoryMethod(DeclarationKind declarationKind, Token lastConsumed,
+      Token? externalToken, Token? constToken) {
+    listener?.beginFactoryMethod(
+        declarationKind, lastConsumed, externalToken, constToken);
   }
 
   @override
@@ -224,8 +225,8 @@
   }
 
   @override
-  void beginFunctionTypeAlias(Token token) {
-    listener?.beginFunctionTypeAlias(token);
+  void beginTypedef(Token token) {
+    listener?.beginTypedef(token);
   }
 
   @override
@@ -315,14 +316,15 @@
 
   @override
   void beginMethod(
+      DeclarationKind declarationKind,
       Token? externalToken,
       Token? staticToken,
       Token? covariantToken,
       Token? varFinalOrConst,
       Token? getOrSet,
       Token name) {
-    listener?.beginMethod(externalToken, staticToken, covariantToken,
-        varFinalOrConst, getOrSet, name);
+    listener?.beginMethod(declarationKind, externalToken, staticToken,
+        covariantToken, varFinalOrConst, getOrSet, name);
   }
 
   @override
@@ -569,9 +571,10 @@
   }
 
   @override
-  void endClassOrMixinBody(
+  void endClassOrMixinOrExtensionBody(
       DeclarationKind kind, int memberCount, Token beginToken, Token endToken) {
-    listener?.endClassOrMixinBody(kind, memberCount, beginToken, endToken);
+    listener?.endClassOrMixinOrExtensionBody(
+        kind, memberCount, beginToken, endToken);
   }
 
   @override
@@ -772,9 +775,8 @@
   }
 
   @override
-  void endFunctionTypeAlias(
-      Token typedefKeyword, Token? equals, Token endToken) {
-    listener?.endFunctionTypeAlias(typedefKeyword, equals, endToken);
+  void endTypedef(Token typedefKeyword, Token? equals, Token endToken) {
+    listener?.endTypedef(typedefKeyword, equals, endToken);
   }
 
   @override
@@ -1022,8 +1024,17 @@
   }
 
   @override
-  void beginFields(Token lastConsumed) {
-    listener?.beginFields(lastConsumed);
+  void beginFields(
+      DeclarationKind declarationKind,
+      Token? abstractToken,
+      Token? externalToken,
+      Token? staticToken,
+      Token? covariantToken,
+      Token? lateToken,
+      Token? varFinalOrConst,
+      Token lastConsumed) {
+    listener?.beginFields(declarationKind, abstractToken, externalToken,
+        staticToken, covariantToken, lateToken, varFinalOrConst, lastConsumed);
   }
 
   @override
diff --git a/pkg/_fe_analyzer_shared/lib/src/parser/listener.dart b/pkg/_fe_analyzer_shared/lib/src/parser/listener.dart
index d597b3a..cd83709 100644
--- a/pkg/_fe_analyzer_shared/lib/src/parser/listener.dart
+++ b/pkg/_fe_analyzer_shared/lib/src/parser/listener.dart
@@ -100,25 +100,26 @@
   /// Handle the start of the body of a class, mixin or extension declaration
   /// beginning at [token]. The actual kind of declaration is indicated by
   /// [kind].
-  void beginClassOrMixinBody(DeclarationKind kind, Token token) {}
+  void beginClassOrMixinOrExtensionBody(DeclarationKind kind, Token token) {}
 
   /// Handle the end of the body of a class, mixin or extension declaration.
   /// The only substructures are the class, mixin or extension members.
   ///
   /// The actual kind of declaration is indicated by [kind].
-  void endClassOrMixinBody(
+  void endClassOrMixinOrExtensionBody(
       DeclarationKind kind, int memberCount, Token beginToken, Token endToken) {
-    logEvent("ClassOrMixinBody");
+    logEvent("ClassOrMixinOrExtensionBody");
   }
 
-  /// Called before parsing a class or named mixin application.
+  /// Called before parsing a class declaration, mixin declaration, or named
+  /// mixin application.
   ///
   /// At this point only the `class` or `mixin` keyword have been seen,
   /// so we know a declaration is coming but not its name or type
   /// parameter declarations.
   ///
   /// Ended by [endTopLevelDeclaration].
-  void beginClassOrNamedMixinApplicationPrelude(Token token) {}
+  void beginClassOrMixinOrNamedMixinApplicationPrelude(Token token) {}
 
   /// Handle the beginning of a class declaration.
   /// [begin] may be the same as [name], or may point to modifiers
@@ -337,8 +338,8 @@
 
   /// Note that this is ended by [endClassFactoryMethod],
   /// [endMixinFactoryMethod] or [endExtensionFactoryMethod].
-  void beginFactoryMethod(
-      Token lastConsumed, Token? externalToken, Token? constToken) {}
+  void beginFactoryMethod(DeclarationKind declarationKind, Token lastConsumed,
+      Token? externalToken, Token? constToken) {}
 
   void endClassFactoryMethod(
       Token beginToken, Token factoryKeyword, Token endToken) {
@@ -587,7 +588,7 @@
     logEvent("FunctionName");
   }
 
-  void beginFunctionTypeAlias(Token token) {}
+  void beginTypedef(Token token) {}
 
   /// Handle the end of a typedef declaration.
   ///
@@ -603,8 +604,7 @@
   /// - Name (identifier)
   /// - Alias type variables
   /// - Type (FunctionTypeAnnotation)
-  void endFunctionTypeAlias(
-      Token typedefKeyword, Token? equals, Token endToken) {
+  void endTypedef(Token typedefKeyword, Token? equals, Token endToken) {
     logEvent("FunctionTypeAlias");
   }
 
@@ -881,6 +881,7 @@
   /// [endExtensionConstructor], [endExtensionMethod], [endMixinConstructor] or
   /// [endMixinMethod].
   void beginMethod(
+      DeclarationKind declarationKind,
       Token? externalToken,
       Token? staticToken,
       Token? covariantToken,
@@ -1119,13 +1120,13 @@
   ///
   /// Normally listeners should probably override
   /// [endClassDeclaration], [endNamedMixinApplication], [endEnum],
-  /// [endFunctionTypeAlias], [endLibraryName], [endImport], [endExport],
+  /// [endTypedef], [endLibraryName], [endImport], [endExport],
   /// [endPart], [endPartOf], [endTopLevelFields], or [endTopLevelMethod]
   /// instead.
   ///
   /// Started by one of [beginExtensionDeclarationPrelude],
-  /// [beginClassOrNamedMixinApplicationPrelude], [beginTopLevelMember] or
-  /// [beginUncategorizedTopLevelDeclaration].
+  /// [beginClassOrMixinOrNamedMixinApplicationPrelude], [beginTopLevelMember]
+  /// or [beginUncategorizedTopLevelDeclaration].
   void endTopLevelDeclaration(Token nextToken) {
     logEvent("TopLevelDeclaration");
   }
@@ -1150,7 +1151,15 @@
   /// Marks the beginning of a fields declaration.
   /// Note that this is ended with [endTopLevelFields], [endClassFields],
   /// [endMixinFields] or [endExtensionFields].
-  void beginFields(Token lastConsumed) {}
+  void beginFields(
+      DeclarationKind declarationKind,
+      Token? abstractToken,
+      Token? externalToken,
+      Token? staticToken,
+      Token? covariantToken,
+      Token? lateToken,
+      Token? varFinalOrConst,
+      Token lastConsumed) {}
 
   /// Handle the end of a top level variable declaration.  Substructures:
   /// - Metadata
diff --git a/pkg/_fe_analyzer_shared/lib/src/parser/parser_impl.dart b/pkg/_fe_analyzer_shared/lib/src/parser/parser_impl.dart
index c59af84..2d4f96e 100644
--- a/pkg/_fe_analyzer_shared/lib/src/parser/parser_impl.dart
+++ b/pkg/_fe_analyzer_shared/lib/src/parser/parser_impl.dart
@@ -1162,7 +1162,7 @@
   Token parseTypedef(Token typedefKeyword) {
     assert(optional('typedef', typedefKeyword));
     listener.beginUncategorizedTopLevelDeclaration(typedefKeyword);
-    listener.beginFunctionTypeAlias(typedefKeyword);
+    listener.beginTypedef(typedefKeyword);
     TypeInfo typeInfo = computeType(typedefKeyword, /* required = */ false);
     Token token = typeInfo.skipType(typedefKeyword);
     Token next = token.next!;
@@ -1264,7 +1264,7 @@
           parseFormalParametersRequiredOpt(token, MemberKind.FunctionTypeAlias);
     }
     token = ensureSemicolon(token);
-    listener.endFunctionTypeAlias(typedefKeyword, equals, token);
+    listener.endTypedef(typedefKeyword, equals, token);
     return token;
   }
 
@@ -1986,7 +1986,7 @@
       Token? abstractToken, Token classKeyword) {
     assert(optional('class', classKeyword));
     Token begin = abstractToken ?? classKeyword;
-    listener.beginClassOrNamedMixinApplicationPrelude(begin);
+    listener.beginClassOrMixinOrNamedMixinApplicationPrelude(begin);
     Token name = ensureIdentifier(
         classKeyword, IdentifierContext.classOrMixinOrExtensionDeclaration);
     Token token = computeTypeParamOrArg(
@@ -2216,7 +2216,7 @@
   /// ```
   Token parseMixin(Token mixinKeyword) {
     assert(optional('mixin', mixinKeyword));
-    listener.beginClassOrNamedMixinApplicationPrelude(mixinKeyword);
+    listener.beginClassOrMixinOrNamedMixinApplicationPrelude(mixinKeyword);
     Token name = ensureIdentifier(
         mixinKeyword, IdentifierContext.classOrMixinOrExtensionDeclaration);
     Token headerStart = computeTypeParamOrArg(
@@ -2866,7 +2866,8 @@
       DeclarationKind kind,
       String? enclosingDeclarationName,
       bool nameIsRecovered) {
-    listener.beginFields(beforeStart);
+    listener.beginFields(kind, abstractToken, externalToken, staticToken,
+        covariantToken, lateToken, varFinalOrConst, beforeStart);
 
     // Covariant affects only the setter and final fields do not have a setter,
     // unless it's a late field (dartbug.com/40805).
@@ -3533,7 +3534,7 @@
       Token token, DeclarationKind kind, String? enclosingDeclarationName) {
     Token begin = token = token.next!;
     assert(optional('{', token));
-    listener.beginClassOrMixinBody(kind, token);
+    listener.beginClassOrMixinOrExtensionBody(kind, token);
     int count = 0;
     while (notEofOrValue('}', token.next!)) {
       token = parseClassOrMixinOrExtensionMemberImpl(
@@ -3542,7 +3543,7 @@
     }
     token = token.next!;
     assert(token.isEof || optional('}', token));
-    listener.endClassOrMixinBody(kind, count, begin, token);
+    listener.endClassOrMixinOrExtensionBody(kind, count, begin, token);
     return token;
   }
 
@@ -3994,7 +3995,7 @@
 
     // TODO(danrubel): Consider parsing the name before calling beginMethod
     // rather than passing the name token into beginMethod.
-    listener.beginMethod(externalToken, staticToken, covariantToken,
+    listener.beginMethod(kind, externalToken, staticToken, covariantToken,
         varFinalOrConst, getOrSet, name);
 
     Token token = typeInfo.parseType(beforeType, this);
@@ -4209,7 +4210,8 @@
       varFinalOrConst = null;
     }
 
-    listener.beginFactoryMethod(beforeStart, externalToken, varFinalOrConst);
+    listener.beginFactoryMethod(
+        kind, beforeStart, externalToken, varFinalOrConst);
     token = ensureIdentifier(token, IdentifierContext.methodDeclaration);
     token = parseQualifiedRestOpt(
         token, IdentifierContext.methodDeclarationContinuation);
diff --git a/pkg/analyzer/lib/src/fasta/ast_builder.dart b/pkg/analyzer/lib/src/fasta/ast_builder.dart
index 6f77e5f..95ab07b 100644
--- a/pkg/analyzer/lib/src/fasta/ast_builder.dart
+++ b/pkg/analyzer/lib/src/fasta/ast_builder.dart
@@ -268,8 +268,8 @@
   }
 
   @override
-  void beginFactoryMethod(
-      Token lastConsumed, Token? externalToken, Token? constToken) {
+  void beginFactoryMethod(DeclarationKind declarationKind, Token lastConsumed,
+      Token? externalToken, Token? constToken) {
     push(_Modifiers()
       ..externalKeyword = externalToken
       ..finalConstOrVarKeyword = constToken);
@@ -310,6 +310,7 @@
 
   @override
   void beginMethod(
+      DeclarationKind declarationKind,
       Token? externalToken,
       Token? staticToken,
       Token? covariantToken,
@@ -995,7 +996,7 @@
   }
 
   @override
-  void endClassOrMixinBody(DeclarationKind kind, int memberCount,
+  void endClassOrMixinOrExtensionBody(DeclarationKind kind, int memberCount,
       Token leftBracket, Token rightBracket) {
     // TODO(danrubel): consider renaming endClassOrMixinBody
     // to endClassOrMixinOrExtensionBody
@@ -1574,45 +1575,6 @@
   }
 
   @override
-  void endFunctionTypeAlias(
-      Token typedefKeyword, Token? equals, Token semicolon) {
-    assert(optional('typedef', typedefKeyword));
-    assert(optionalOrNull('=', equals));
-    assert(optional(';', semicolon));
-    debugEvent("FunctionTypeAlias");
-
-    if (equals == null) {
-      var parameters = pop() as FormalParameterList;
-      var typeParameters = pop() as TypeParameterList?;
-      var name = pop() as SimpleIdentifier;
-      var returnType = pop() as TypeAnnotation?;
-      var metadata = pop() as List<Annotation>?;
-      var comment = _findComment(metadata, typedefKeyword);
-      declarations.add(ast.functionTypeAlias(comment, metadata, typedefKeyword,
-          returnType, name, typeParameters, parameters, semicolon));
-    } else {
-      var type = pop() as TypeAnnotation;
-      var templateParameters = pop() as TypeParameterList?;
-      var name = pop() as SimpleIdentifier;
-      var metadata = pop() as List<Annotation>?;
-      var comment = _findComment(metadata, typedefKeyword);
-      if (type is! GenericFunctionType && !enableNonFunctionTypeAliases) {
-        var feature = Feature.nonfunction_type_aliases;
-        handleRecoverableError(
-          templateExperimentNotEnabled.withArguments(
-            feature.enableString,
-            _versionAsString(ExperimentStatus.currentVersion),
-          ),
-          equals,
-          equals,
-        );
-      }
-      declarations.add(ast.genericTypeAlias(comment, metadata, typedefKeyword,
-          name, templateParameters, equals, type, semicolon));
-    }
-  }
-
-  @override
   void endFunctionTypedFormalParameter(Token nameToken, Token? question) {
     debugEvent("FunctionTypedFormalParameter");
     if (!enableNonNullable) {
@@ -2316,6 +2278,44 @@
   }
 
   @override
+  void endTypedef(Token typedefKeyword, Token? equals, Token semicolon) {
+    assert(optional('typedef', typedefKeyword));
+    assert(optionalOrNull('=', equals));
+    assert(optional(';', semicolon));
+    debugEvent("FunctionTypeAlias");
+
+    if (equals == null) {
+      var parameters = pop() as FormalParameterList;
+      var typeParameters = pop() as TypeParameterList?;
+      var name = pop() as SimpleIdentifier;
+      var returnType = pop() as TypeAnnotation?;
+      var metadata = pop() as List<Annotation>?;
+      var comment = _findComment(metadata, typedefKeyword);
+      declarations.add(ast.functionTypeAlias(comment, metadata, typedefKeyword,
+          returnType, name, typeParameters, parameters, semicolon));
+    } else {
+      var type = pop() as TypeAnnotation;
+      var templateParameters = pop() as TypeParameterList?;
+      var name = pop() as SimpleIdentifier;
+      var metadata = pop() as List<Annotation>?;
+      var comment = _findComment(metadata, typedefKeyword);
+      if (type is! GenericFunctionType && !enableNonFunctionTypeAliases) {
+        var feature = Feature.nonfunction_type_aliases;
+        handleRecoverableError(
+          templateExperimentNotEnabled.withArguments(
+            feature.enableString,
+            _versionAsString(ExperimentStatus.currentVersion),
+          ),
+          equals,
+          equals,
+        );
+      }
+      declarations.add(ast.genericTypeAlias(comment, metadata, typedefKeyword,
+          name, templateParameters, equals, type, semicolon));
+    }
+  }
+
+  @override
   void endTypeList(int count) {
     debugEvent("TypeList");
     push(popTypedList<NamedType>(count) ?? NullValue.TypeList);
diff --git a/pkg/analyzer/lib/src/pubspec/pubspec_warning_code.g.dart b/pkg/analyzer/lib/src/pubspec/pubspec_warning_code.g.dart
index c093216..689c4ba 100644
--- a/pkg/analyzer/lib/src/pubspec/pubspec_warning_code.g.dart
+++ b/pkg/analyzer/lib/src/pubspec/pubspec_warning_code.g.dart
@@ -191,7 +191,7 @@
   // Use a map as the value of the `dependencies` key:
   //
   // ```yaml
-  // %uri='pubspec.yaml'
+  // %uri="pubspec.yaml"
   // name: example
   // dependencies:
   //   meta: ^1.0.2
@@ -539,7 +539,7 @@
   // listed under both `dependencies` and `dev_dependencies`:
   //
   // ```yaml
-  // %uri='pubspec.yaml'
+  // %uri="pubspec.yaml"
   // name: example
   // dependencies:
   //   meta: ^1.0.2
@@ -553,7 +553,7 @@
   // if that's the only package listed there):
   //
   // ```yaml
-  // %uri='pubspec.yaml'
+  // %uri="pubspec.yaml"
   // name: example
   // dependencies:
   //   meta: ^1.0.2
diff --git a/pkg/analyzer/messages.yaml b/pkg/analyzer/messages.yaml
index d9effde..50e2280 100644
--- a/pkg/analyzer/messages.yaml
+++ b/pkg/analyzer/messages.yaml
@@ -17817,7 +17817,7 @@
       Use a map as the value of the `dependencies` key:
 
       ```yaml
-      %uri='pubspec.yaml'
+      %uri="pubspec.yaml"
       name: example
       dependencies:
         meta: ^1.0.2
@@ -18129,7 +18129,7 @@
       listed under both `dependencies` and `dev_dependencies`:
 
       ```yaml
-      %uri='pubspec.yaml'
+      %uri="pubspec.yaml"
       name: example
       dependencies:
         meta: ^1.0.2
@@ -18143,7 +18143,7 @@
       if that's the only package listed there):
 
       ```yaml
-      %uri='pubspec.yaml'
+      %uri="pubspec.yaml"
       name: example
       dependencies:
         meta: ^1.0.2
diff --git a/pkg/analyzer/test/generated/parser_fasta_listener.dart b/pkg/analyzer/test/generated/parser_fasta_listener.dart
index 5d366e2..6cdd3b6 100644
--- a/pkg/analyzer/test/generated/parser_fasta_listener.dart
+++ b/pkg/analyzer/test/generated/parser_fasta_listener.dart
@@ -93,14 +93,14 @@
   }
 
   @override
-  void beginClassOrMixinBody(DeclarationKind kind, Token token) {
-    super.beginClassOrMixinBody(kind, token);
+  void beginClassOrMixinOrExtensionBody(DeclarationKind kind, Token token) {
+    super.beginClassOrMixinOrExtensionBody(kind, token);
     begin('ClassOrMixinBody');
   }
 
   @override
-  void beginClassOrNamedMixinApplicationPrelude(Token token) {
-    super.beginClassOrNamedMixinApplicationPrelude(token);
+  void beginClassOrMixinOrNamedMixinApplicationPrelude(Token token) {
+    super.beginClassOrMixinOrNamedMixinApplicationPrelude(token);
     begin('ClassOrNamedMixinApplication');
   }
 
@@ -191,9 +191,10 @@
   }
 
   @override
-  void beginFactoryMethod(
-      Token lastConsumed, Token? externalToken, Token? constToken) {
-    super.beginFactoryMethod(lastConsumed, externalToken, constToken);
+  void beginFactoryMethod(DeclarationKind declarationKind, Token lastConsumed,
+      Token? externalToken, Token? constToken) {
+    super.beginFactoryMethod(
+        declarationKind, lastConsumed, externalToken, constToken);
     begin('FactoryMethod');
   }
 
@@ -266,12 +267,6 @@
   }
 
   @override
-  void beginFunctionTypeAlias(Token token) {
-    super.beginFunctionTypeAlias(token);
-    begin('FunctionTypeAlias');
-  }
-
-  @override
   void beginFunctionTypedFormalParameter(Token token) {
     super.beginFunctionTypedFormalParameter(token);
     begin('FunctionTypedFormalParameter');
@@ -371,14 +366,15 @@
 
   @override
   void beginMethod(
+      DeclarationKind declarationKind,
       Token? externalToken,
       Token? staticToken,
       Token? covariantToken,
       Token? varFinalOrConst,
       Token? getOrSet,
       Token name) {
-    super.beginMethod(externalToken, staticToken, covariantToken,
-        varFinalOrConst, getOrSet, name);
+    super.beginMethod(declarationKind, externalToken, staticToken,
+        covariantToken, varFinalOrConst, getOrSet, name);
     begin('Method');
   }
 
@@ -498,6 +494,12 @@
   }
 
   @override
+  void beginTypedef(Token token) {
+    super.beginTypedef(token);
+    begin('FunctionTypeAlias');
+  }
+
+  @override
   void beginTypeList(Token token) {
     super.beginTypeList(token);
     begin('TypeList');
@@ -658,10 +660,11 @@
   }
 
   @override
-  void endClassOrMixinBody(
+  void endClassOrMixinOrExtensionBody(
       DeclarationKind kind, int memberCount, Token beginToken, Token endToken) {
     end('ClassOrMixinBody');
-    super.endClassOrMixinBody(kind, memberCount, beginToken, endToken);
+    super.endClassOrMixinOrExtensionBody(
+        kind, memberCount, beginToken, endToken);
   }
 
   @override
@@ -884,13 +887,6 @@
   }
 
   @override
-  void endFunctionTypeAlias(
-      Token typedefKeyword, Token? equals, Token endToken) {
-    end('FunctionTypeAlias');
-    super.endFunctionTypeAlias(typedefKeyword, equals, endToken);
-  }
-
-  @override
   void endFunctionTypedFormalParameter(Token nameToken, Token? question) {
     end('FunctionTypedFormalParameter');
     super.endFunctionTypedFormalParameter(nameToken, question);
@@ -1204,6 +1200,12 @@
   }
 
   @override
+  void endTypedef(Token typedefKeyword, Token? equals, Token endToken) {
+    end('FunctionTypeAlias');
+    super.endTypedef(typedefKeyword, equals, endToken);
+  }
+
+  @override
   void endTypeList(int count) {
     end('TypeList');
     super.endTypeList(count);
diff --git a/pkg/analyzer/tool/summary/mini_ast.dart b/pkg/analyzer/tool/summary/mini_ast.dart
index ecf9036..928fbf4 100644
--- a/pkg/analyzer/tool/summary/mini_ast.dart
+++ b/pkg/analyzer/tool/summary/mini_ast.dart
@@ -261,7 +261,7 @@
   }
 
   @override
-  void endClassOrMixinBody(
+  void endClassOrMixinOrExtensionBody(
       DeclarationKind kind, int memberCount, Token beginToken, Token endToken) {
     debugEvent("ClassOrMixinBody");
     push(popList(memberCount,
diff --git a/pkg/front_end/lib/src/fasta/builder/builtin_type_declaration_builder.dart b/pkg/front_end/lib/src/fasta/builder/builtin_type_declaration_builder.dart
index e87af39..ce5ed5b 100644
--- a/pkg/front_end/lib/src/fasta/builder/builtin_type_declaration_builder.dart
+++ b/pkg/front_end/lib/src/fasta/builder/builtin_type_declaration_builder.dart
@@ -26,13 +26,12 @@
 
   @override
   DartType buildType(LibraryBuilder library,
-      NullabilityBuilder nullabilityBuilder, List<TypeBuilder>? arguments,
-      {bool? nonInstanceContext}) {
+      NullabilityBuilder nullabilityBuilder, List<TypeBuilder>? arguments) {
     return type.withDeclaredNullability(nullabilityBuilder.build(library));
   }
 
   @override
-  DartType buildTypesWithBuiltArguments(LibraryBuilder library,
+  DartType buildTypeWithBuiltArguments(LibraryBuilder library,
       Nullability nullability, List<DartType> arguments) {
     return type.withDeclaredNullability(nullability);
   }
diff --git a/pkg/front_end/lib/src/fasta/builder/class_builder.dart b/pkg/front_end/lib/src/fasta/builder/class_builder.dart
index 9c90805..3aeffb1 100644
--- a/pkg/front_end/lib/src/fasta/builder/class_builder.dart
+++ b/pkg/front_end/lib/src/fasta/builder/class_builder.dart
@@ -168,8 +168,7 @@
   InterfaceType rawType(Nullability nullability);
 
   List<DartType> buildTypeArguments(
-      LibraryBuilder library, List<TypeBuilder>? arguments,
-      {bool? nonInstanceContext});
+      LibraryBuilder library, List<TypeBuilder>? arguments);
 
   Supertype buildSupertype(
       LibraryBuilder library, List<TypeBuilder>? arguments);
@@ -559,7 +558,7 @@
   }
 
   @override
-  DartType buildTypesWithBuiltArguments(LibraryBuilder library,
+  DartType buildTypeWithBuiltArguments(LibraryBuilder library,
       Nullability nullability, List<DartType>? arguments) {
     assert(arguments == null || cls.typeParameters.length == arguments.length);
     if (isNullClass) {
@@ -583,8 +582,7 @@
 
   @override
   List<DartType> buildTypeArguments(
-      LibraryBuilder library, List<TypeBuilder>? arguments,
-      {bool? nonInstanceContext}) {
+      LibraryBuilder library, List<TypeBuilder>? arguments) {
     if (arguments == null && typeVariables == null) {
       return <DartType>[];
     }
@@ -619,13 +617,11 @@
 
   @override
   DartType buildType(LibraryBuilder library,
-      NullabilityBuilder nullabilityBuilder, List<TypeBuilder>? arguments,
-      {bool? nonInstanceContext}) {
-    return buildTypesWithBuiltArguments(
+      NullabilityBuilder nullabilityBuilder, List<TypeBuilder>? arguments) {
+    return buildTypeWithBuiltArguments(
         library,
         nullabilityBuilder.build(library),
-        buildTypeArguments(library, arguments,
-            nonInstanceContext: nonInstanceContext));
+        buildTypeArguments(library, arguments));
   }
 
   @override
diff --git a/pkg/front_end/lib/src/fasta/builder/enum_builder.dart b/pkg/front_end/lib/src/fasta/builder/enum_builder.dart
index 0b293c4..2a94404 100644
--- a/pkg/front_end/lib/src/fasta/builder/enum_builder.dart
+++ b/pkg/front_end/lib/src/fasta/builder/enum_builder.dart
@@ -132,25 +132,39 @@
         const NullabilityBuilder.omitted(),
         /* arguments = */ null,
         /* fileUri = */ null,
-        /* charOffset = */ null);
+        /* charOffset = */ null,
+        instanceTypeVariableAccess:
+            // If "int" resolves to an instance type variable then that we would
+            // allowed (the types that we are adding are in instance context
+            // after all) but it would be unexpected and we would like an
+            // assertion failure, since "int" was meant to be `int` from
+            // `dart:core`.
+            // TODO(johnniwinther): Add a more robust way of creating named
+            // typed builders for dart:core types. This might be needed for the
+            // enhanced enums feature where enums can actually declare type
+            // variables.
+            InstanceTypeVariableAccessState.Unexpected);
     NamedTypeBuilder stringType = new NamedTypeBuilder(
         "String",
         const NullabilityBuilder.omitted(),
         /* arguments = */ null,
         /* fileUri = */ null,
-        /* charOffset = */ null);
+        /* charOffset = */ null,
+        instanceTypeVariableAccess: InstanceTypeVariableAccessState.Unexpected);
     NamedTypeBuilder objectType = new NamedTypeBuilder(
         "Object",
         const NullabilityBuilder.omitted(),
         /* arguments = */ null,
         /* fileUri = */ null,
-        /* charOffset = */ null);
+        /* charOffset = */ null,
+        instanceTypeVariableAccess: InstanceTypeVariableAccessState.Unexpected);
     NamedTypeBuilder enumType = new NamedTypeBuilder(
         "_Enum",
         const NullabilityBuilder.omitted(),
         /* arguments = */ null,
         /* fileUri = */ null,
-        /* charOffset = */ null);
+        /* charOffset = */ null,
+        instanceTypeVariableAccess: InstanceTypeVariableAccessState.Unexpected);
     Class cls = new Class(
         name: name,
         reference: referencesFromIndexed?.cls.reference,
@@ -162,13 +176,15 @@
         const NullabilityBuilder.omitted(),
         /* arguments = */ null,
         /* fileUri = */ null,
-        /* charOffset = */ null);
+        /* charOffset = */ null,
+        instanceTypeVariableAccess: InstanceTypeVariableAccessState.Unexpected);
     NamedTypeBuilder listType = new NamedTypeBuilder(
         "List",
         const NullabilityBuilder.omitted(),
         <TypeBuilder>[selfType],
         /* fileUri = */ null,
-        /* charOffset = */ null);
+        /* charOffset = */ null,
+        instanceTypeVariableAccess: InstanceTypeVariableAccessState.Unexpected);
 
     // metadata class E extends _Enum {
     //   const E(int index, String name) : super(index, name);
@@ -381,8 +397,7 @@
 
   @override
   InterfaceType buildType(LibraryBuilder library,
-      NullabilityBuilder nullabilityBuilder, List<TypeBuilder>? arguments,
-      {bool? nonInstanceContext}) {
+      NullabilityBuilder nullabilityBuilder, List<TypeBuilder>? arguments) {
     return rawType(nullabilityBuilder.build(library));
   }
 
diff --git a/pkg/front_end/lib/src/fasta/builder/extension_builder.dart b/pkg/front_end/lib/src/fasta/builder/extension_builder.dart
index 8460e59..fabf10a 100644
--- a/pkg/front_end/lib/src/fasta/builder/extension_builder.dart
+++ b/pkg/front_end/lib/src/fasta/builder/extension_builder.dart
@@ -83,15 +83,13 @@
 
   @override
   DartType buildType(LibraryBuilder library,
-      NullabilityBuilder nullabilityBuilder, List<TypeBuilder>? arguments,
-      {bool? nonInstanceContext}) {
+      NullabilityBuilder nullabilityBuilder, List<TypeBuilder>? arguments) {
     if (library is SourceLibraryBuilder &&
         library.enableExtensionTypesInLibrary) {
-      return buildTypesWithBuiltArguments(
+      return buildTypeWithBuiltArguments(
           library,
           nullabilityBuilder.build(library),
-          buildTypeArguments(library, arguments,
-              nonInstanceContext: nonInstanceContext));
+          _buildTypeArguments(library, arguments));
     } else {
       throw new UnsupportedError("ExtensionBuilder.buildType is not supported"
           "in library '${library.importUri}'.");
@@ -99,7 +97,7 @@
   }
 
   @override
-  DartType buildTypesWithBuiltArguments(LibraryBuilder library,
+  DartType buildTypeWithBuiltArguments(LibraryBuilder library,
       Nullability nullability, List<DartType> arguments) {
     if (library is SourceLibraryBuilder &&
         library.enableExtensionTypesInLibrary) {
@@ -114,9 +112,8 @@
   @override
   int get typeVariablesCount => typeParameters?.length ?? 0;
 
-  List<DartType> buildTypeArguments(
-      LibraryBuilder library, List<TypeBuilder>? arguments,
-      {bool? nonInstanceContext}) {
+  List<DartType> _buildTypeArguments(
+      LibraryBuilder library, List<TypeBuilder>? arguments) {
     if (arguments == null && typeParameters == null) {
       return <DartType>[];
     }
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 57c61dd..229ddf9 100644
--- a/pkg/front_end/lib/src/fasta/builder/field_builder.dart
+++ b/pkg/front_end/lib/src/fasta/builder/field_builder.dart
@@ -409,10 +409,7 @@
   /// Builds the core AST structures for this field as needed for the outline.
   void build(SourceLibraryBuilder libraryBuilder) {
     if (type != null) {
-      // notInstanceContext is set to true for extension fields as they
-      // ultimately become static.
-      fieldType = type!.build(libraryBuilder,
-          nonInstanceContext: isStatic || (isExtensionMember && !isExternal));
+      fieldType = type!.build(libraryBuilder);
     }
     _fieldEncoding.build(libraryBuilder, this);
   }
diff --git a/pkg/front_end/lib/src/fasta/builder/fixed_type_builder.dart b/pkg/front_end/lib/src/fasta/builder/fixed_type_builder.dart
index 660e08a..740fde3 100644
--- a/pkg/front_end/lib/src/fasta/builder/fixed_type_builder.dart
+++ b/pkg/front_end/lib/src/fasta/builder/fixed_type_builder.dart
@@ -47,8 +47,7 @@
   }
 
   @override
-  DartType build(LibraryBuilder library,
-      {TypedefType? origin, bool? nonInstanceContext}) {
+  DartType build(LibraryBuilder library, {TypedefType? origin}) {
     return type;
   }
 
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 c0df993..42c1ce6 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
@@ -128,11 +128,9 @@
   String get fullNameForErrors => name;
 
   VariableDeclaration build(
-      SourceLibraryBuilder library, int functionNestingLevel,
-      {bool? nonInstanceContext}) {
+      SourceLibraryBuilder library, int functionNestingLevel) {
     if (variable == null) {
-      DartType? builtType =
-          type?.build(library, nonInstanceContext: nonInstanceContext);
+      DartType? builtType = type?.build(library);
       if (!library.isNonNullableByDefault && builtType != null) {
         builtType = legacyErasure(builtType);
       }
diff --git a/pkg/front_end/lib/src/fasta/builder/function_builder.dart b/pkg/front_end/lib/src/fasta/builder/function_builder.dart
index 8c525b7..0ad02c9 100644
--- a/pkg/front_end/lib/src/fasta/builder/function_builder.dart
+++ b/pkg/front_end/lib/src/fasta/builder/function_builder.dart
@@ -7,8 +7,6 @@
 import 'package:kernel/ast.dart';
 import 'package:kernel/core_types.dart';
 
-import 'package:kernel/type_algebra.dart' show containsTypeVariable, substitute;
-
 import '../identifiers.dart';
 import '../scope.dart';
 
@@ -19,7 +17,6 @@
 
 import '../messages.dart'
     show
-        messageNonInstanceTypeVariableUse,
         messagePatchDeclarationMismatch,
         messagePatchDeclarationOrigin,
         messagePatchNonExternal,
@@ -354,8 +351,7 @@
     }
     if (formals != null) {
       for (FormalParameterBuilder formal in formals!) {
-        VariableDeclaration parameter = formal.build(library, 0,
-            nonInstanceContext: !isConstructor && !isDeclarationInstanceMember);
+        VariableDeclaration parameter = formal.build(library, 0);
         if (needsCheckVisitor != null) {
           if (parameter.type.accept(needsCheckVisitor)) {
             parameter.isCovariantByClass = true;
@@ -399,48 +395,7 @@
       function.requiredParameterCount = 1;
     }
     if (returnType != null) {
-      function.returnType = returnType!.build(library,
-          nonInstanceContext: !isConstructor && !isDeclarationInstanceMember);
-    }
-    if (!isConstructor && !isDeclarationInstanceMember) {
-      List<TypeParameter>? typeParameters;
-      if (parent is ClassBuilder) {
-        ClassBuilder enclosingClassBuilder = parent as ClassBuilder;
-        typeParameters = enclosingClassBuilder.cls.typeParameters;
-      } else if (parent is ExtensionBuilder) {
-        ExtensionBuilder enclosingExtensionBuilder = parent as ExtensionBuilder;
-        typeParameters = enclosingExtensionBuilder.extension.typeParameters;
-      }
-
-      if (typeParameters != null && typeParameters.isNotEmpty) {
-        Map<TypeParameter, DartType>? substitution;
-        DartType removeTypeVariables(DartType type) {
-          if (substitution == null) {
-            substitution = <TypeParameter, DartType>{};
-            for (TypeParameter parameter in typeParameters!) {
-              substitution![parameter] = const DynamicType();
-            }
-          }
-          library.addProblem(
-              messageNonInstanceTypeVariableUse, charOffset, noLength, fileUri);
-          return substitute(type, substitution!);
-        }
-
-        Set<TypeParameter> set = typeParameters.toSet();
-        for (VariableDeclaration parameter in function.positionalParameters) {
-          if (containsTypeVariable(parameter.type, set)) {
-            parameter.type = removeTypeVariables(parameter.type);
-          }
-        }
-        for (VariableDeclaration parameter in function.namedParameters) {
-          if (containsTypeVariable(parameter.type, set)) {
-            parameter.type = removeTypeVariables(parameter.type);
-          }
-        }
-        if (containsTypeVariable(function.returnType, set)) {
-          function.returnType = removeTypeVariables(function.returnType);
-        }
-      }
+      function.returnType = returnType!.build(library);
     }
     if (isExtensionInstanceMember) {
       ExtensionBuilder extensionBuilder = parent as ExtensionBuilder;
diff --git a/pkg/front_end/lib/src/fasta/builder/function_type_builder.dart b/pkg/front_end/lib/src/fasta/builder/function_type_builder.dart
index 5128a9d..58226d1 100644
--- a/pkg/front_end/lib/src/fasta/builder/function_type_builder.dart
+++ b/pkg/front_end/lib/src/fasta/builder/function_type_builder.dart
@@ -82,19 +82,15 @@
   }
 
   @override
-  FunctionType build(LibraryBuilder library,
-      {TypedefType? origin, bool? nonInstanceContext}) {
+  FunctionType build(LibraryBuilder library, {TypedefType? origin}) {
     DartType builtReturnType =
-        returnType?.build(library, nonInstanceContext: nonInstanceContext) ??
-            const DynamicType();
+        returnType?.build(library) ?? const DynamicType();
     List<DartType> positionalParameters = <DartType>[];
     List<NamedType>? namedParameters;
     int requiredParameterCount = 0;
     if (formals != null) {
       for (FormalParameterBuilder formal in formals!) {
-        DartType type = formal.type
-                ?.build(library, nonInstanceContext: nonInstanceContext) ??
-            const DynamicType();
+        DartType type = formal.type?.build(library) ?? const DynamicType();
         if (formal.isPositional) {
           positionalParameters.add(type);
           if (formal.isRequired) requiredParameterCount++;
diff --git a/pkg/front_end/lib/src/fasta/builder/future_or_type_declaration_builder.dart b/pkg/front_end/lib/src/fasta/builder/future_or_type_declaration_builder.dart
index a004dac..277a400 100644
--- a/pkg/front_end/lib/src/fasta/builder/future_or_type_declaration_builder.dart
+++ b/pkg/front_end/lib/src/fasta/builder/future_or_type_declaration_builder.dart
@@ -21,16 +21,13 @@
 
   @override
   DartType buildType(LibraryBuilder library,
-      NullabilityBuilder nullabilityBuilder, List<TypeBuilder>? arguments,
-      {bool? nonInstanceContext}) {
+      NullabilityBuilder nullabilityBuilder, List<TypeBuilder>? arguments) {
     return new FutureOrType(
-        arguments!.single
-            .build(library, nonInstanceContext: nonInstanceContext),
-        nullabilityBuilder.build(library));
+        arguments!.single.build(library), nullabilityBuilder.build(library));
   }
 
   @override
-  DartType buildTypesWithBuiltArguments(LibraryBuilder library,
+  DartType buildTypeWithBuiltArguments(LibraryBuilder library,
       Nullability nullability, List<DartType> arguments) {
     return new FutureOrType(arguments.single, nullability);
   }
diff --git a/pkg/front_end/lib/src/fasta/builder/invalid_type_declaration_builder.dart b/pkg/front_end/lib/src/fasta/builder/invalid_type_declaration_builder.dart
index 1adb629..5f2b68b 100644
--- a/pkg/front_end/lib/src/fasta/builder/invalid_type_declaration_builder.dart
+++ b/pkg/front_end/lib/src/fasta/builder/invalid_type_declaration_builder.dart
@@ -34,14 +34,13 @@
 
   @override
   DartType buildType(LibraryBuilder library,
-      NullabilityBuilder nullabilityBuilder, List<TypeBuilder>? arguments,
-      {bool? nonInstanceContext}) {
-    return buildTypesWithBuiltArguments(library, null, null);
+      NullabilityBuilder nullabilityBuilder, List<TypeBuilder>? arguments) {
+    return buildTypeWithBuiltArguments(library, null, null);
   }
 
   /// [Arguments] have already been built.
   @override
-  DartType buildTypesWithBuiltArguments(LibraryBuilder library,
+  DartType buildTypeWithBuiltArguments(LibraryBuilder library,
       Nullability? nullability, List<DartType>? arguments) {
     if (!suppressMessage) {
       library.addProblem(message.messageObject, message.charOffset,
diff --git a/pkg/front_end/lib/src/fasta/builder/mixin_application_builder.dart b/pkg/front_end/lib/src/fasta/builder/mixin_application_builder.dart
index 079fb6b..ade332c 100644
--- a/pkg/front_end/lib/src/fasta/builder/mixin_application_builder.dart
+++ b/pkg/front_end/lib/src/fasta/builder/mixin_application_builder.dart
@@ -56,8 +56,7 @@
   }
 
   @override
-  InterfaceType build(LibraryBuilder library,
-      {TypedefType? origin, bool? nonInstanceContext}) {
+  InterfaceType build(LibraryBuilder library, {TypedefType? origin}) {
     int charOffset = -1; // TODO(ahe): Provide these.
     Uri? fileUri = null; // TODO(ahe): Provide these.
     return unsupported("build", charOffset, fileUri);
diff --git a/pkg/front_end/lib/src/fasta/builder/named_type_builder.dart b/pkg/front_end/lib/src/fasta/builder/named_type_builder.dart
index 70e72af..e6547b9 100644
--- a/pkg/front_end/lib/src/fasta/builder/named_type_builder.dart
+++ b/pkg/front_end/lib/src/fasta/builder/named_type_builder.dart
@@ -48,6 +48,50 @@
 import 'type_variable_builder.dart';
 import 'void_type_declaration_builder.dart';
 
+/// Enum used to determine how instance type variable access is allowed.
+enum InstanceTypeVariableAccessState {
+  /// Instance type variable access is allowed.
+  ///
+  /// This is used for valid references to instance type variables, like
+  ///
+  ///     class Class<T> {
+  ///       void instanceMethod(T t) {}
+  ///     }
+  Allowed,
+
+  /// Instance type variable access is disallowed and results in a compile-time
+  /// error.
+  ///
+  /// This is used for static references to instance type variables, like
+  ///
+  ///     class Class<T> {
+  ///       static void staticMethod(T t) {}
+  ///     }
+  ///
+  /// The type is resolved as an [InvalidType].
+  Disallowed,
+
+  /// Instance type variable access is invalid since it occurs in an invalid
+  /// context. The occurrence _doesn't_ result in a compile-time error.
+  ///
+  /// This is used for references to instance type variables where they might
+  /// be valid if the context where, like
+  ///
+  ///     class Extension<T> {
+  ///       T field; // Instance extension fields are not allowed.
+  ///     }
+  ///
+  /// The type is resolved as an [InvalidType].
+  Invalid,
+
+  /// Instance type variable access is unexpected and results in an assertion
+  /// failure.
+  ///
+  /// This is used for [NamedTypeBuilder]s for known non-type variable types,
+  /// like for `Object` and `String`.
+  Unexpected,
+}
+
 class NamedTypeBuilder extends TypeBuilder {
   @override
   final Object name;
@@ -66,12 +110,18 @@
   @override
   TypeDeclarationBuilder? declaration;
 
+  final InstanceTypeVariableAccessState instanceTypeVariableAccess;
+
   NamedTypeBuilder(this.name, this.nullabilityBuilder, this.arguments,
-      this.fileUri, this.charOffset);
+      this.fileUri, this.charOffset,
+      {required this.instanceTypeVariableAccess});
 
   NamedTypeBuilder.fromTypeDeclarationBuilder(
       TypeDeclarationBuilder this.declaration, this.nullabilityBuilder,
-      [this.arguments, this.fileUri, this.charOffset])
+      {this.arguments,
+      this.fileUri,
+      this.charOffset,
+      required this.instanceTypeVariableAccess})
       : this.name = declaration.name;
 
   @override
@@ -79,7 +129,7 @@
 
   @override
   void bind(TypeDeclarationBuilder declaration) {
-    this.declaration = declaration.origin as TypeDeclarationBuilder;
+    this.declaration = declaration.origin;
   }
 
   int get nameOffset {
@@ -140,7 +190,7 @@
       }
       return;
     } else if (member is TypeDeclarationBuilder) {
-      declaration = member.origin as TypeDeclarationBuilder;
+      declaration = member.origin;
       if (!declaration!.isExtension ||
           library is SourceLibraryBuilder &&
               library.enableExtensionTypesInLibrary) {
@@ -256,62 +306,58 @@
   }
 
   @override
-  DartType build(LibraryBuilder library,
-      {TypedefType? origin, bool? nonInstanceContext}) {
-    return buildInternal(library,
-        origin: origin,
-        nonInstanceContext: nonInstanceContext,
-        forTypeLiteral: false);
+  DartType build(LibraryBuilder library, {TypedefType? origin}) {
+    return buildInternal(library, origin: origin, forTypeLiteral: false);
   }
 
   @override
-  DartType buildTypeLiteralType(LibraryBuilder library,
-      {TypedefType? origin, bool? nonInstanceContext}) {
-    return buildInternal(library,
-        origin: origin,
-        nonInstanceContext: nonInstanceContext,
-        forTypeLiteral: true);
+  DartType buildTypeLiteralType(LibraryBuilder library, {TypedefType? origin}) {
+    return buildInternal(library, origin: origin, forTypeLiteral: true);
   }
 
   DartType declarationBuildType(LibraryBuilder library,
-      {bool? nonInstanceContext, required bool forTypeLiteral}) {
+      {required bool forTypeLiteral}) {
     if (forTypeLiteral) {
-      return declaration!.buildTypeLiteralType(
-          library, nullabilityBuilder, arguments,
-          nonInstanceContext: nonInstanceContext);
+      return declaration!
+          .buildTypeLiteralType(library, nullabilityBuilder, arguments);
     } else {
-      return declaration!.buildType(library, nullabilityBuilder, arguments,
-          nonInstanceContext: nonInstanceContext);
+      return declaration!.buildType(library, nullabilityBuilder, arguments);
     }
   }
 
   // TODO(johnniwinther): Store [origin] on the built type.
   DartType buildInternal(LibraryBuilder library,
-      {TypedefType? origin,
-      required bool? nonInstanceContext,
-      required bool forTypeLiteral}) {
+      {TypedefType? origin, required bool forTypeLiteral}) {
     assert(declaration != null, "Declaration has not been resolved on $this.");
-    // TODO(johnniwinther): Change `nonInstanceContext == true` to
-    // `nonInstanceContext` when it's passed everywhere.
-    if (nonInstanceContext == true && declaration!.isTypeVariable) {
+    if (declaration!.isTypeVariable) {
       TypeVariableBuilder typeParameterBuilder =
           declaration as TypeVariableBuilder;
       TypeParameter typeParameter = typeParameterBuilder.parameter;
       if (typeParameter.parent is Class || typeParameter.parent is Extension) {
-        library.addProblem(
-            messageTypeVariableInStaticContext,
-            charOffset ?? TreeNode.noOffset,
-            noLength,
-            fileUri ?? library.fileUri);
-        return const InvalidType();
+        switch (instanceTypeVariableAccess) {
+          case InstanceTypeVariableAccessState.Disallowed:
+            library.addProblem(
+                messageTypeVariableInStaticContext,
+                charOffset ?? TreeNode.noOffset,
+                noLength,
+                fileUri ?? library.fileUri);
+            return const InvalidType();
+          case InstanceTypeVariableAccessState.Invalid:
+            return const InvalidType();
+          case InstanceTypeVariableAccessState.Unexpected:
+            assert(false,
+                "Unexpected instance type variable $typeParameterBuilder");
+            break;
+          case InstanceTypeVariableAccessState.Allowed:
+            break;
+        }
       }
     }
 
     if (library is SourceLibraryBuilder) {
       int uncheckedTypedefTypeCount = library.uncheckedTypedefTypes.length;
-      DartType builtType = declarationBuildType(library,
-          nonInstanceContext: nonInstanceContext,
-          forTypeLiteral: forTypeLiteral);
+      DartType builtType =
+          declarationBuildType(library, forTypeLiteral: forTypeLiteral);
       // Set locations for new unchecked TypedefTypes for error reporting.
       for (int i = uncheckedTypedefTypeCount;
           i < library.uncheckedTypedefTypes.length;
@@ -324,9 +370,7 @@
       }
       return builtType;
     } else {
-      return declarationBuildType(library,
-          nonInstanceContext: nonInstanceContext,
-          forTypeLiteral: forTypeLiteral);
+      return declarationBuildType(library, forTypeLiteral: forTypeLiteral);
     }
   }
 
@@ -448,7 +492,8 @@
       }
       if (arguments != null) {
         NamedTypeBuilder result = new NamedTypeBuilder(
-            name, nullabilityBuilder, arguments, fileUri, charOffset);
+            name, nullabilityBuilder, arguments, fileUri, charOffset,
+            instanceTypeVariableAccess: instanceTypeVariableAccess);
         if (declaration != null) {
           result.bind(declaration!);
         } else {
@@ -474,7 +519,8 @@
       }, growable: false);
     }
     NamedTypeBuilder newType = new NamedTypeBuilder(
-        name, nullabilityBuilder, clonedArguments, fileUri, charOffset);
+        name, nullabilityBuilder, clonedArguments, fileUri, charOffset,
+        instanceTypeVariableAccess: instanceTypeVariableAccess);
     if (declaration is BuiltinTypeDeclarationBuilder) {
       newType.declaration = declaration;
     } else {
@@ -487,7 +533,8 @@
   NamedTypeBuilder withNullabilityBuilder(
       NullabilityBuilder nullabilityBuilder) {
     return new NamedTypeBuilder(
-        name, nullabilityBuilder, arguments, fileUri, charOffset)
+        name, nullabilityBuilder, arguments, fileUri, charOffset,
+        instanceTypeVariableAccess: instanceTypeVariableAccess)
       ..bind(declaration!);
   }
 }
diff --git a/pkg/front_end/lib/src/fasta/builder/never_type_declaration_builder.dart b/pkg/front_end/lib/src/fasta/builder/never_type_declaration_builder.dart
index 52b67ee..2e2c1b5 100644
--- a/pkg/front_end/lib/src/fasta/builder/never_type_declaration_builder.dart
+++ b/pkg/front_end/lib/src/fasta/builder/never_type_declaration_builder.dart
@@ -24,13 +24,12 @@
 
   @override
   DartType buildType(LibraryBuilder library,
-      NullabilityBuilder nullabilityBuilder, List<TypeBuilder>? arguments,
-      {bool? nonInstanceContext}) {
+      NullabilityBuilder nullabilityBuilder, List<TypeBuilder>? arguments) {
     return type.withDeclaredNullability(nullabilityBuilder.build(library));
   }
 
   @override
-  DartType buildTypesWithBuiltArguments(LibraryBuilder library,
+  DartType buildTypeWithBuiltArguments(LibraryBuilder library,
       Nullability nullability, List<DartType> arguments) {
     return type.withDeclaredNullability(nullability);
   }
diff --git a/pkg/front_end/lib/src/fasta/builder/null_type_declaration_builder.dart b/pkg/front_end/lib/src/fasta/builder/null_type_declaration_builder.dart
index 9e18f07..818c6f0 100644
--- a/pkg/front_end/lib/src/fasta/builder/null_type_declaration_builder.dart
+++ b/pkg/front_end/lib/src/fasta/builder/null_type_declaration_builder.dart
@@ -21,13 +21,12 @@
 
   @override
   DartType buildType(LibraryBuilder library,
-      NullabilityBuilder nullabilityBuilder, List<TypeBuilder>? arguments,
-      {bool? nonInstanceContext}) {
+      NullabilityBuilder nullabilityBuilder, List<TypeBuilder>? arguments) {
     return type;
   }
 
   @override
-  DartType buildTypesWithBuiltArguments(LibraryBuilder library,
+  DartType buildTypeWithBuiltArguments(LibraryBuilder library,
       Nullability nullability, List<DartType> arguments) {
     return type;
   }
diff --git a/pkg/front_end/lib/src/fasta/builder/type_alias_builder.dart b/pkg/front_end/lib/src/fasta/builder/type_alias_builder.dart
index 511ad2e..14a2b41c 100644
--- a/pkg/front_end/lib/src/fasta/builder/type_alias_builder.dart
+++ b/pkg/front_end/lib/src/fasta/builder/type_alias_builder.dart
@@ -57,21 +57,15 @@
 
   /// [arguments] have already been built.
   @override
-  DartType buildTypesWithBuiltArguments(LibraryBuilder library,
+  DartType buildTypeWithBuiltArguments(LibraryBuilder library,
       Nullability nullability, List<DartType>? arguments);
 
   List<DartType> buildTypeArguments(
-      LibraryBuilder library, List<TypeBuilder>? arguments,
-      {bool? nonInstanceContext});
+      LibraryBuilder library, List<TypeBuilder>? arguments);
 
   /// Returns `true` if this typedef is an alias of the `Null` type.
   bool get isNullAlias;
 
-  @override
-  DartType buildType(LibraryBuilder library,
-      NullabilityBuilder nullabilityBuilder, List<TypeBuilder>? arguments,
-      {bool? nonInstanceContext});
-
   /// Returns the [TypeDeclarationBuilder] for the type aliased by `this`,
   /// based on the given [typeArguments]. It expands type aliases repeatedly
   /// until it encounters a builder which is not a [TypeAliasBuilder].
@@ -159,7 +153,7 @@
 
   /// [arguments] have already been built.
   @override
-  DartType buildTypesWithBuiltArguments(LibraryBuilder library,
+  DartType buildTypeWithBuiltArguments(LibraryBuilder library,
       Nullability nullability, List<DartType>? arguments) {
     DartType thisType = buildThisType();
     if (const DynamicType() == thisType) return thisType;
@@ -189,23 +183,21 @@
 
   @override
   DartType buildType(LibraryBuilder library,
-      NullabilityBuilder nullabilityBuilder, List<TypeBuilder>? arguments,
-      {bool? nonInstanceContext}) {
+      NullabilityBuilder nullabilityBuilder, List<TypeBuilder>? arguments) {
     return buildTypeInternal(library, nullabilityBuilder, arguments,
-        nonInstanceContext: nonInstanceContext, performLegacyErasure: true);
+        performLegacyErasure: true);
   }
 
   @override
   DartType buildTypeLiteralType(LibraryBuilder library,
-      NullabilityBuilder nullabilityBuilder, List<TypeBuilder>? arguments,
-      {bool? nonInstanceContext}) {
+      NullabilityBuilder nullabilityBuilder, List<TypeBuilder>? arguments) {
     return buildTypeInternal(library, nullabilityBuilder, arguments,
-        nonInstanceContext: nonInstanceContext, performLegacyErasure: false);
+        performLegacyErasure: false);
   }
 
   DartType buildTypeInternal(LibraryBuilder library,
       NullabilityBuilder nullabilityBuilder, List<TypeBuilder>? arguments,
-      {bool? nonInstanceContext, required bool performLegacyErasure}) {
+      {required bool performLegacyErasure}) {
     DartType thisType = buildThisType();
     if (thisType is InvalidType) return thisType;
 
@@ -229,7 +221,7 @@
       result = thisType.withDeclaredNullability(nullability);
     } else {
       // Otherwise, substitute.
-      result = buildTypesWithBuiltArguments(
+      result = buildTypeWithBuiltArguments(
           library, nullability, buildTypeArguments(library, arguments));
     }
     if (performLegacyErasure && !library.isNonNullableByDefault) {
@@ -311,12 +303,12 @@
             if (typeVariables != null)
               for (TypeVariableBuilder typeVariable in typeVariables!)
                 new NamedTypeBuilder.fromTypeDeclarationBuilder(
-                  typeVariable,
-                  library.nonNullableBuilder,
-                  const [],
-                  fileUri,
-                  charOffset,
-                ),
+                    typeVariable, library.nonNullableBuilder,
+                    arguments: const [],
+                    fileUri: fileUri,
+                    charOffset: charOffset,
+                    instanceTypeVariableAccess:
+                        InstanceTypeVariableAccessState.Unexpected),
           ];
           TypeDeclarationBuilder? typeDeclarationBuilder =
               _unaliasDeclaration(freshTypeArguments);
diff --git a/pkg/front_end/lib/src/fasta/builder/type_builder.dart b/pkg/front_end/lib/src/fasta/builder/type_builder.dart
index b7feb2e..8fc9d35 100644
--- a/pkg/front_end/lib/src/fasta/builder/type_builder.dart
+++ b/pkg/front_end/lib/src/fasta/builder/type_builder.dart
@@ -68,13 +68,10 @@
 
   String get fullNameForErrors => "${printOn(new StringBuffer())}";
 
-  DartType build(LibraryBuilder library,
-      {TypedefType? origin, bool? nonInstanceContext});
+  DartType build(LibraryBuilder library, {TypedefType? origin});
 
-  DartType buildTypeLiteralType(LibraryBuilder library,
-      {TypedefType? origin, bool? nonInstanceContext}) {
-    return build(library,
-        origin: origin, nonInstanceContext: nonInstanceContext);
+  DartType buildTypeLiteralType(LibraryBuilder library, {TypedefType? origin}) {
+    return build(library, origin: origin);
   }
 
   Supertype? buildSupertype(
diff --git a/pkg/front_end/lib/src/fasta/builder/type_declaration_builder.dart b/pkg/front_end/lib/src/fasta/builder/type_declaration_builder.dart
index 727888b..65085dc 100644
--- a/pkg/front_end/lib/src/fasta/builder/type_declaration_builder.dart
+++ b/pkg/front_end/lib/src/fasta/builder/type_declaration_builder.dart
@@ -25,16 +25,26 @@
 
   int get typeVariablesCount => 0;
 
+  @override
+  TypeDeclarationBuilder get origin;
+
+  /// Creates the [DartType] corresponding to this declaration applied with
+  /// [arguments] in [library] with the syntactical nullability defined by
+  /// [nullabilityBuilder].
+  ///
+  /// For instance, if this declaration is a class declaration `C`, then
+  /// an occurrence of `C<int>?` in a null safe library `lib1` would call
+  /// `buildType(<lib1>, <?>, [<int>])` to create `C<int>?`, or `C<int>` in a
+  /// legacy library `lib2` call `buildType(<lib2>, <> [<int>]` to create
+  /// `C<int*>*`.
   DartType buildType(LibraryBuilder library,
-      NullabilityBuilder nullabilityBuilder, List<TypeBuilder>? arguments,
-      {bool? nonInstanceContext});
+      NullabilityBuilder nullabilityBuilder, List<TypeBuilder>? arguments);
 
   DartType buildTypeLiteralType(LibraryBuilder library,
-      NullabilityBuilder nullabilityBuilder, List<TypeBuilder>? arguments,
-      {bool? nonInstanceContext});
+      NullabilityBuilder nullabilityBuilder, List<TypeBuilder>? arguments);
 
   /// [arguments] have already been built.
-  DartType buildTypesWithBuiltArguments(LibraryBuilder library,
+  DartType buildTypeWithBuiltArguments(LibraryBuilder library,
       Nullability nullability, List<DartType> arguments);
 }
 
@@ -56,6 +66,9 @@
         super(parent, charOffset);
 
   @override
+  TypeDeclarationBuilder get origin => this;
+
+  @override
   bool get isNamedMixinApplication => false;
 
   @override
@@ -69,9 +82,7 @@
 
   @override
   DartType buildTypeLiteralType(LibraryBuilder library,
-      NullabilityBuilder nullabilityBuilder, List<TypeBuilder>? arguments,
-      {bool? nonInstanceContext}) {
-    return buildType(library, nullabilityBuilder, arguments,
-        nonInstanceContext: nonInstanceContext);
+      NullabilityBuilder nullabilityBuilder, List<TypeBuilder>? arguments) {
+    return buildType(library, nullabilityBuilder, arguments);
   }
 }
diff --git a/pkg/front_end/lib/src/fasta/builder/type_variable_builder.dart b/pkg/front_end/lib/src/fasta/builder/type_variable_builder.dart
index a612517..1dd6221 100644
--- a/pkg/front_end/lib/src/fasta/builder/type_variable_builder.dart
+++ b/pkg/front_end/lib/src/fasta/builder/type_variable_builder.dart
@@ -23,7 +23,6 @@
 import 'library_builder.dart';
 import 'member_builder.dart';
 import 'metadata_builder.dart';
-import 'named_type_builder.dart';
 import 'nullability_builder.dart';
 import 'type_builder.dart';
 import 'type_declaration_builder.dart';
@@ -101,8 +100,7 @@
 
   @override
   DartType buildType(LibraryBuilder library,
-      NullabilityBuilder nullabilityBuilder, List<TypeBuilder>? arguments,
-      {bool? nonInstanceContext}) {
+      NullabilityBuilder nullabilityBuilder, List<TypeBuilder>? arguments) {
     if (arguments != null) {
       int charOffset = -1; // TODO(ahe): Provide these.
       Uri? fileUri = null; // TODO(ahe): Provide these.
@@ -129,7 +127,7 @@
       nullability = nullabilityBuilder.build(library);
     }
     TypeParameterType type =
-        buildTypesWithBuiltArguments(library, nullability, null);
+        buildTypeWithBuiltArguments(library, nullability, null);
     if (needsPostUpdate) {
       if (library is SourceLibraryBuilder) {
         library.registerPendingNullability(fileUri!, charOffset, type);
@@ -146,7 +144,7 @@
   }
 
   @override
-  TypeParameterType buildTypesWithBuiltArguments(LibraryBuilder library,
+  TypeParameterType buildTypeWithBuiltArguments(LibraryBuilder library,
       Nullability nullability, List<DartType>? arguments) {
     if (arguments != null) {
       int charOffset = -1; // TODO(ahe): Provide these.
@@ -160,12 +158,6 @@
     return new TypeParameterType(parameter, nullability);
   }
 
-  TypeBuilder asTypeBuilder() {
-    return new NamedTypeBuilder(
-        name, const NullabilityBuilder.omitted(), null, fileUri, charOffset)
-      ..bind(this);
-  }
-
   void finish(
       LibraryBuilder library, ClassBuilder object, TypeBuilder dynamicType) {
     if (isPatch) return;
diff --git a/pkg/front_end/lib/src/fasta/dill/dill_class_builder.dart b/pkg/front_end/lib/src/fasta/dill/dill_class_builder.dart
index c4ba7a5..0a5f4e1 100644
--- a/pkg/front_end/lib/src/fasta/dill/dill_class_builder.dart
+++ b/pkg/front_end/lib/src/fasta/dill/dill_class_builder.dart
@@ -121,8 +121,7 @@
 
   @override
   List<DartType> buildTypeArguments(
-      LibraryBuilder library, List<TypeBuilder>? arguments,
-      {bool? nonInstanceContext}) {
+      LibraryBuilder library, List<TypeBuilder>? arguments) {
     // For performance reasons, [typeVariables] aren't restored from [target].
     // So, if [arguments] is null, the default types should be retrieved from
     // [cls.typeParameters].
@@ -134,9 +133,7 @@
 
     // [arguments] != null
     return new List<DartType>.generate(
-        arguments.length,
-        (int i) =>
-            arguments[i].build(library, nonInstanceContext: nonInstanceContext),
+        arguments.length, (int i) => arguments[i].build(library),
         growable: true);
   }
 
diff --git a/pkg/front_end/lib/src/fasta/dill/dill_type_alias_builder.dart b/pkg/front_end/lib/src/fasta/dill/dill_type_alias_builder.dart
index 697dbef..65a7fb6 100644
--- a/pkg/front_end/lib/src/fasta/dill/dill_type_alias_builder.dart
+++ b/pkg/front_end/lib/src/fasta/dill/dill_type_alias_builder.dart
@@ -74,8 +74,7 @@
 
   @override
   List<DartType> buildTypeArguments(
-      LibraryBuilder library, List<TypeBuilder>? arguments,
-      {bool? nonInstanceContext}) {
+      LibraryBuilder library, List<TypeBuilder>? arguments) {
     // For performance reasons, [typeVariables] aren't restored from [target].
     // So, if [arguments] is null, the default types should be retrieved from
     // [cls.typeParameters].
diff --git a/pkg/front_end/lib/src/fasta/fasta_codes_cfe_generated.dart b/pkg/front_end/lib/src/fasta/fasta_codes_cfe_generated.dart
index 53468ab..66e0e85 100644
--- a/pkg/front_end/lib/src/fasta/fasta_codes_cfe_generated.dart
+++ b/pkg/front_end/lib/src/fasta/fasta_codes_cfe_generated.dart
@@ -2101,6 +2101,37 @@
 }
 
 // DO NOT EDIT. THIS FILE IS GENERATED. SEE TOP OF FILE.
+const Template<Message Function(DartType _type, bool isNonNullableByDefault)>
+    templateInstantiationNullableGenericFunctionType = const Template<
+            Message Function(DartType _type, bool isNonNullableByDefault)>(
+        problemMessageTemplate:
+            r"""The static type of the explicit instantiation operand must be a non-null generic function type but is '#type'.""",
+        correctionMessageTemplate:
+            r"""Try changing the operand or remove the type arguments.""",
+        withArguments: _withArgumentsInstantiationNullableGenericFunctionType);
+
+// DO NOT EDIT. THIS FILE IS GENERATED. SEE TOP OF FILE.
+const Code<Message Function(DartType _type, bool isNonNullableByDefault)>
+    codeInstantiationNullableGenericFunctionType =
+    const Code<Message Function(DartType _type, bool isNonNullableByDefault)>(
+        "InstantiationNullableGenericFunctionType",
+        analyzerCodes: <String>["DISALLOWED_TYPE_INSTANTIATION_EXPRESSION"]);
+
+// DO NOT EDIT. THIS FILE IS GENERATED. SEE TOP OF FILE.
+Message _withArgumentsInstantiationNullableGenericFunctionType(
+    DartType _type, bool isNonNullableByDefault) {
+  TypeLabeler labeler = new TypeLabeler(isNonNullableByDefault);
+  List<Object> typeParts = labeler.labelType(_type);
+  String type = typeParts.join();
+  return new Message(codeInstantiationNullableGenericFunctionType,
+      problemMessage:
+          """The static type of the explicit instantiation operand must be a non-null generic function type but is '${type}'.""" +
+              labeler.originMessages,
+      correctionMessage: """Try changing the operand or remove the type arguments.""",
+      arguments: {'type': _type});
+}
+
+// DO NOT EDIT. THIS FILE IS GENERATED. SEE TOP OF FILE.
 const Template<
         Message Function(
             String string, DartType _type, bool isNonNullableByDefault)>
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 15ba274..ec84e16 100644
--- a/pkg/front_end/lib/src/fasta/kernel/body_builder.dart
+++ b/pkg/front_end/lib/src/fasta/kernel/body_builder.dart
@@ -427,11 +427,23 @@
     return functionNestingLevel == 0 && member is ConstructorBuilder;
   }
 
+  @override
   bool get isDeclarationInstanceContext {
     return isDeclarationInstanceMember || member is ConstructorBuilder;
   }
 
   @override
+  InstanceTypeVariableAccessState get instanceTypeVariableAccessState {
+    if (member.isExtensionMember && member.isField && !member.isExternal) {
+      return InstanceTypeVariableAccessState.Invalid;
+    } else if (isDeclarationInstanceContext || member is DeclarationBuilder) {
+      return InstanceTypeVariableAccessState.Allowed;
+    } else {
+      return InstanceTypeVariableAccessState.Disallowed;
+    }
+  }
+
+  @override
   TypeEnvironment get typeEnvironment => typeInferrer.typeSchemaEnvironment;
 
   DartType get implicitTypeArgument => const ImplicitTypeArgument();
@@ -3744,16 +3756,16 @@
         libraryBuilder.addProblem(
             message, offset, lengthOfSpan(beginToken, suffix), uri);
         push(new UnresolvedType(
-            new NamedTypeBuilder(
-                name,
+            new NamedTypeBuilder.fromTypeDeclarationBuilder(
+                new InvalidTypeDeclarationBuilder(
+                    name,
+                    message.withLocation(
+                        uri, offset, lengthOfSpan(beginToken, suffix))),
                 libraryBuilder.nullableBuilderIfTrue(isMarkedAsNullable),
-                null,
-                uri,
-                offset)
-              ..bind(new InvalidTypeDeclarationBuilder(
-                  name,
-                  message.withLocation(
-                      uri, offset, lengthOfSpan(beginToken, suffix)))),
+                fileUri: uri,
+                charOffset: offset,
+                instanceTypeVariableAccess:
+                    InstanceTypeVariableAccessState.Unexpected),
             offset,
             uri));
         return;
@@ -3782,16 +3794,16 @@
       // TODO(ahe): Arguments could be passed here.
       libraryBuilder.addProblem(
           name.message, name.charOffset, name.name.length, name.fileUri);
-      result = new NamedTypeBuilder(
-          name.name,
+      result = new NamedTypeBuilder.fromTypeDeclarationBuilder(
+          new InvalidTypeDeclarationBuilder(
+              name.name,
+              name.message.withLocation(
+                  name.fileUri, name.charOffset, name.name.length)),
           libraryBuilder.nullableBuilderIfTrue(isMarkedAsNullable),
-          /* arguments = */ null,
-          name.fileUri,
-          name.charOffset)
-        ..bind(new InvalidTypeDeclarationBuilder(
-            name.name,
-            name.message.withLocation(
-                name.fileUri, name.charOffset, name.name.length)));
+          fileUri: name.fileUri,
+          charOffset: name.charOffset,
+          instanceTypeVariableAccess:
+              InstanceTypeVariableAccessState.Unexpected);
     } else {
       unhandled(
           "${name.runtimeType}", "handleType", beginToken.charOffset, uri);
@@ -3860,10 +3872,14 @@
     int offset = offsetForToken(token);
     // "void" is always nullable.
     push(new UnresolvedType(
-        new NamedTypeBuilder(
-            "void", const NullabilityBuilder.nullable(), null, uri, offset)
-          ..bind(new VoidTypeDeclarationBuilder(
-              const VoidType(), libraryBuilder, offset)),
+        new NamedTypeBuilder.fromTypeDeclarationBuilder(
+            new VoidTypeDeclarationBuilder(
+                const VoidType(), libraryBuilder, offset),
+            const NullabilityBuilder.nullable(),
+            fileUri: uri,
+            charOffset: offset,
+            instanceTypeVariableAccess:
+                InstanceTypeVariableAccessState.Unexpected),
         offset,
         uri));
   }
@@ -4048,9 +4064,8 @@
           fileUri: uri)
         ..hasDeclaredInitializer = (initializerStart != null);
     }
-    VariableDeclaration variable = parameter.build(
-        libraryBuilder, functionNestingLevel,
-        nonInstanceContext: !isDeclarationInstanceContext);
+    VariableDeclaration variable =
+        parameter.build(libraryBuilder, functionNestingLevel);
     Expression? initializer = name?.initializer;
     if (initializer != null) {
       if (member is RedirectingFactoryBuilder) {
@@ -5557,8 +5572,7 @@
       annotations = pop() as List<Expression>?; // Metadata.
     }
     FunctionNode function = formals.buildFunctionNode(libraryBuilder,
-        returnType, typeParameters, asyncModifier, body, token.charOffset,
-        nonInstanceContext: !isDeclarationInstanceContext);
+        returnType, typeParameters, asyncModifier, body, token.charOffset);
 
     if (declaration is FunctionDeclaration) {
       VariableDeclaration variable = declaration.variable;
@@ -5660,8 +5674,7 @@
     List<TypeVariableBuilder>? typeParameters =
         pop() as List<TypeVariableBuilder>?;
     FunctionNode function = formals.buildFunctionNode(libraryBuilder, null,
-        typeParameters, asyncModifier, body, token.charOffset,
-        nonInstanceContext: !isDeclarationInstanceContext)
+        typeParameters, asyncModifier, body, token.charOffset)
       ..fileOffset = beginToken.charOffset;
 
     Expression result;
@@ -6884,29 +6897,46 @@
         TypeVariableBuilder typeParameterBuilder =
             builder.declaration as TypeVariableBuilder;
         TypeParameter typeParameter = typeParameterBuilder.parameter;
-        bool extensionField =
-            member.isExtensionMember && member.isField && !member.isExternal;
-        if ((extensionField || !isDeclarationInstanceContext) &&
-            (typeParameter.parent is Class ||
-                typeParameter.parent is Extension)) {
-          // TODO(johnniwinther): Can we unify this check with the similar check
-          // in NamedTypeBuilder.buildTypeInternal. If we skip it here, the
-          // error below (type variable in constant context) will be emitted
-          // _instead_ of this (type variable in static context), which seems
-          // like an odd prioritization.
-          LocatedMessage message = fasta.messageTypeVariableInStaticContext
-              .withLocation(builder.fileUri ?? fileUri,
-                  builder.charOffset ?? charOffset, typeParameter.name!.length);
-          builder.bind(
-              new InvalidTypeDeclarationBuilder(typeParameter.name!, message));
-          addProblem(message.messageObject, message.charOffset, message.length);
-        } else if (constantContext != ConstantContext.none &&
-            (!inConstructorInitializer || !allowPotentiallyConstantType)) {
-          LocatedMessage message = fasta.messageTypeVariableInConstantContext
-              .withLocation(fileUri, charOffset, typeParameter.name!.length);
-          builder.bind(
-              new InvalidTypeDeclarationBuilder(typeParameter.name!, message));
-          addProblem(message.messageObject, message.charOffset, message.length);
+        if (typeParameter.parent is Class ||
+            typeParameter.parent is Extension) {
+          switch (builder.instanceTypeVariableAccess) {
+            case InstanceTypeVariableAccessState.Allowed:
+              if (constantContext != ConstantContext.none &&
+                  (!inConstructorInitializer ||
+                      !allowPotentiallyConstantType)) {
+                LocatedMessage message =
+                    fasta.messageTypeVariableInConstantContext.withLocation(
+                        fileUri, charOffset, typeParameter.name!.length);
+                builder.bind(new InvalidTypeDeclarationBuilder(
+                    typeParameter.name!, message));
+                addProblem(
+                    message.messageObject, message.charOffset, message.length);
+              }
+              break;
+            case InstanceTypeVariableAccessState.Disallowed:
+              // TODO(johnniwinther): Can we unify this check with the similar
+              // check in NamedTypeBuilder.buildTypeInternal. If we skip it
+              // here, the error below (type variable in constant context) will
+              // be emitted _instead_ of this (type variable in static context),
+              // which seems like an odd prioritization.
+              // TODO: Handle this case.
+              LocatedMessage message = fasta.messageTypeVariableInStaticContext
+                  .withLocation(
+                      builder.fileUri ?? fileUri,
+                      builder.charOffset ?? charOffset,
+                      typeParameter.name!.length);
+              builder.bind(new InvalidTypeDeclarationBuilder(
+                  typeParameter.name!, message));
+              addProblem(
+                  message.messageObject, message.charOffset, message.length);
+              break;
+            case InstanceTypeVariableAccessState.Invalid:
+              break;
+            case InstanceTypeVariableAccessState.Unexpected:
+              assert(false,
+                  "Unexpected instance type variable $typeParameterBuilder");
+              break;
+          }
         }
       }
       if (builder.arguments != null) {
@@ -7337,12 +7367,11 @@
       List<TypeVariableBuilder>? typeParameters,
       AsyncMarker asyncModifier,
       Statement body,
-      int fileEndOffset,
-      {required bool nonInstanceContext}) {
+      int fileEndOffset) {
     FunctionType type = toFunctionType(
             returnType, const NullabilityBuilder.omitted(), typeParameters)
         .builder
-        .build(library, nonInstanceContext: nonInstanceContext) as FunctionType;
+        .build(library) as FunctionType;
     List<VariableDeclaration> positionalParameters = <VariableDeclaration>[];
     List<VariableDeclaration> namedParameters = <VariableDeclaration>[];
     if (parameters != null) {
diff --git a/pkg/front_end/lib/src/fasta/kernel/constant_evaluator.dart b/pkg/front_end/lib/src/fasta/kernel/constant_evaluator.dart
index 67b6929..90961d6 100644
--- a/pkg/front_end/lib/src/fasta/kernel/constant_evaluator.dart
+++ b/pkg/front_end/lib/src/fasta/kernel/constant_evaluator.dart
@@ -3598,10 +3598,12 @@
     final DartType result = env.substituteType(type);
 
     if (!isInstantiated(result)) {
-      _gotError = createEvaluationErrorConstant(
-          node,
-          templateConstEvalFreeTypeParameter.withArguments(
-              type, isNonNullableByDefault));
+      // TODO(johnniwinther): Maybe we should always report this in the body
+      // builder. Currently we report some, because we need to handle
+      // potentially constant types, but we should be able to handle all (or
+      // none) in the body builder.
+      _gotError = createExpressionErrorConstant(
+          node, messageTypeVariableInConstantContext);
       return null;
     }
 
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 cd04351..d3f4eec 100644
--- a/pkg/front_end/lib/src/fasta/kernel/expression_generator.dart
+++ b/pkg/front_end/lib/src/fasta/kernel/expression_generator.dart
@@ -280,7 +280,8 @@
         nullabilityBuilder,
         /* arguments = */ null,
         /* fileUri = */ null,
-        /* charOffset = */ null);
+        /* charOffset = */ null,
+        instanceTypeVariableAccess: _helper.instanceTypeVariableAccessState);
     Message message = templateNotAType.withArguments(token.lexeme);
     _helper.libraryBuilder
         .addProblem(message, fileOffset, lengthForToken(token), _uri);
@@ -2927,7 +2928,8 @@
     }
     // TODO(johnniwinther): Could we use a FixedTypeBuilder(InvalidType()) here?
     NamedTypeBuilder result = new NamedTypeBuilder(name, nullabilityBuilder,
-        /* arguments = */ null, /* fileUri = */ null, /* charOffset = */ null);
+        /* arguments = */ null, /* fileUri = */ null, /* charOffset = */ null,
+        instanceTypeVariableAccess: InstanceTypeVariableAccessState.Unexpected);
     _helper.libraryBuilder.addProblem(
         message.messageObject, message.charOffset, message.length, message.uri);
     result.bind(result.buildInvalidTypeDeclarationBuilder(message));
@@ -3063,7 +3065,8 @@
       }, growable: false);
     }
     return new NamedTypeBuilder(
-        targetName, nullabilityBuilder, argumentBuilders, _uri, fileOffset)
+        targetName, nullabilityBuilder, argumentBuilders, _uri, fileOffset,
+        instanceTypeVariableAccess: _helper.instanceTypeVariableAccessState)
       ..bind(declaration);
   }
 
@@ -3180,7 +3183,9 @@
             for (TypeVariableBuilder typeVariable
                 in aliasBuilder.typeVariables!) {
               aliasedTypeArguments.add(new NamedTypeBuilder(typeVariable.name,
-                  const NullabilityBuilder.omitted(), null, _uri, fileOffset)
+                  const NullabilityBuilder.omitted(), null, _uri, fileOffset,
+                  instanceTypeVariableAccess:
+                      _helper.instanceTypeVariableAccessState)
                 ..bind(typeVariable));
             }
           }
@@ -4175,7 +4180,8 @@
         nullabilityBuilder,
         /* arguments = */ null,
         /* fileUri = */ null,
-        /* charOffset = */ null);
+        /* charOffset = */ null,
+        instanceTypeVariableAccess: InstanceTypeVariableAccessState.Unexpected);
     Message message =
         template.withArguments(prefixGenerator.token.lexeme, token.lexeme);
     _helper.libraryBuilder.addProblem(
@@ -4297,7 +4303,8 @@
         nullabilityBuilder,
         /* arguments = */ null,
         /* fileUri = */ null,
-        /* charOffset = */ null);
+        /* charOffset = */ null,
+        instanceTypeVariableAccess: InstanceTypeVariableAccessState.Unexpected);
     _helper.libraryBuilder.addProblem(message, fileOffset, noLength, _uri);
     result.bind(result.buildInvalidTypeDeclarationBuilder(
         message.withLocation(_uri, fileOffset, noLength)));
diff --git a/pkg/front_end/lib/src/fasta/kernel/expression_generator_helper.dart b/pkg/front_end/lib/src/fasta/kernel/expression_generator_helper.dart
index 9f355e5..d0aaf1f 100644
--- a/pkg/front_end/lib/src/fasta/kernel/expression_generator_helper.dart
+++ b/pkg/front_end/lib/src/fasta/kernel/expression_generator_helper.dart
@@ -11,6 +11,7 @@
 
 import '../builder/builder.dart';
 import '../builder/formal_parameter_builder.dart';
+import '../builder/named_type_builder.dart';
 import '../builder/prefix_builder.dart';
 import '../builder/type_declaration_builder.dart';
 import '../builder/unresolved_type.dart';
@@ -40,6 +41,14 @@
 
   ConstantContext get constantContext;
 
+  bool get isDeclarationInstanceContext;
+
+  /// Whether instance type variables can be accessed.
+  ///
+  /// This is used when creating [NamedTypeBuilder]s within
+  /// [ExpressionGenerator]s.
+  InstanceTypeVariableAccessState get instanceTypeVariableAccessState;
+
   Forest get forest;
 
   Constructor? lookupConstructor(Name name, {bool isSuper: false});
diff --git a/pkg/front_end/lib/src/fasta/kernel/inference_visitor.dart b/pkg/front_end/lib/src/fasta/kernel/inference_visitor.dart
index 29fa3a2..91cd4ff 100644
--- a/pkg/front_end/lib/src/fasta/kernel/inference_visitor.dart
+++ b/pkg/front_end/lib/src/fasta/kernel/inference_visitor.dart
@@ -412,12 +412,24 @@
     DartType resultType = const InvalidType();
     if (operandType is FunctionType) {
       if (operandType.typeParameters.length == node.typeArguments.length) {
-        inferrer.checkBoundsInInstantiation(
-            operandType, node.typeArguments, node.fileOffset,
-            inferred: false);
-        resultType = Substitution.fromPairs(
-                operandType.typeParameters, node.typeArguments)
-            .substituteType(operandType.withoutTypeParameters);
+        if (!inferrer.isTopLevel) {
+          inferrer.checkBoundsInInstantiation(
+              operandType, node.typeArguments, node.fileOffset,
+              inferred: false);
+        }
+        if (operandType.isPotentiallyNullable) {
+          if (!inferrer.isTopLevel) {
+            result = inferrer.helper!.buildProblem(
+                templateInstantiationNullableGenericFunctionType.withArguments(
+                    operandType, inferrer.isNonNullableByDefault),
+                node.fileOffset,
+                noLength);
+          }
+        } else {
+          resultType = Substitution.fromPairs(
+                  operandType.typeParameters, node.typeArguments)
+              .substituteType(operandType.withoutTypeParameters);
+        }
       } else {
         if (!inferrer.isTopLevel) {
           if (operandType.typeParameters.isEmpty) {
diff --git a/pkg/front_end/lib/src/fasta/kernel/kernel_target.dart b/pkg/front_end/lib/src/fasta/kernel/kernel_target.dart
index 91a86f3..ca85431 100644
--- a/pkg/front_end/lib/src/fasta/kernel/kernel_target.dart
+++ b/pkg/front_end/lib/src/fasta/kernel/kernel_target.dart
@@ -112,14 +112,16 @@
       const NullabilityBuilder.nullable(),
       /* arguments = */ null,
       /* fileUri = */ null,
-      /* charOffset = */ null);
+      /* charOffset = */ null,
+      instanceTypeVariableAccess: InstanceTypeVariableAccessState.Unexpected);
 
   final NamedTypeBuilder objectType = new NamedTypeBuilder(
       "Object",
       const NullabilityBuilder.omitted(),
       /* arguments = */ null,
       /* fileUri = */ null,
-      /* charOffset = */ null);
+      /* charOffset = */ null,
+      instanceTypeVariableAccess: InstanceTypeVariableAccessState.Unexpected);
 
   // Null is always nullable.
   // TODO(johnniwinther): This could (maybe) use a FixedTypeBuilder when we
@@ -129,7 +131,8 @@
       const NullabilityBuilder.nullable(),
       /* arguments = */ null,
       /* fileUri = */ null,
-      /* charOffset = */ null);
+      /* charOffset = */ null,
+      instanceTypeVariableAccess: InstanceTypeVariableAccessState.Unexpected);
 
   // TODO(johnniwinther): Why isn't this using a FixedTypeBuilder?
   final TypeBuilder bottomType = new NamedTypeBuilder(
@@ -137,7 +140,8 @@
       const NullabilityBuilder.omitted(),
       /* arguments = */ null,
       /* fileUri = */ null,
-      /* charOffset = */ null);
+      /* charOffset = */ null,
+      instanceTypeVariableAccess: InstanceTypeVariableAccessState.Unexpected);
 
   final bool excludeSource = !CompilerContext.current.options.embedSourceText;
 
@@ -478,7 +482,8 @@
         const NullabilityBuilder.omitted(),
         /* arguments = */ null,
         /* fileUri = */ null,
-        /* charOffset = */ null)
+        /* charOffset = */ null,
+        instanceTypeVariableAccess: InstanceTypeVariableAccessState.Unexpected)
       ..bind(objectClassBuilder);
     builder.interfaceBuilders = null;
     builder.mixedInTypeBuilder = null;
@@ -723,7 +728,9 @@
                   const NullabilityBuilder.omitted(),
                   /* arguments = */ null,
                   /* fileUri = */ null,
-                  /* charOffset = */ null)
+                  /* charOffset = */ null,
+                  instanceTypeVariableAccess:
+                      InstanceTypeVariableAccessState.Unexpected)
                 ..bind(objectClassBuilder);
             }
             if (declaration.isMixinApplication) {
diff --git a/pkg/front_end/lib/src/fasta/kernel/type_algorithms.dart b/pkg/front_end/lib/src/fasta/kernel/type_algorithms.dart
index a64b323..a0fef49 100644
--- a/pkg/front_end/lib/src/fasta/kernel/type_algorithms.dart
+++ b/pkg/front_end/lib/src/fasta/kernel/type_algorithms.dart
@@ -267,7 +267,8 @@
     }
     if (arguments != null) {
       NamedTypeBuilder newTypeBuilder = new NamedTypeBuilder(type.name,
-          type.nullabilityBuilder, arguments, type.fileUri, type.charOffset);
+          type.nullabilityBuilder, arguments, type.fileUri, type.charOffset,
+          instanceTypeVariableAccess: type.instanceTypeVariableAccess);
       if (declaration != null) {
         newTypeBuilder.bind(declaration);
       } else {
@@ -312,7 +313,9 @@
               functionTypeLowerSubstitution![variable] =
                   new NamedTypeBuilder.fromTypeDeclarationBuilder(
                       newTypeVariableBuilder,
-                      const NullabilityBuilder.omitted());
+                      const NullabilityBuilder.omitted(),
+                      instanceTypeVariableAccess:
+                          InstanceTypeVariableAccessState.Unexpected);
           changed = true;
         } else {
           variables[i] = variable;
diff --git a/pkg/front_end/lib/src/fasta/kernel/type_builder_computer.dart b/pkg/front_end/lib/src/fasta/kernel/type_builder_computer.dart
index 550c2d2..341c589 100644
--- a/pkg/front_end/lib/src/fasta/kernel/type_builder_computer.dart
+++ b/pkg/front_end/lib/src/fasta/kernel/type_builder_computer.dart
@@ -48,7 +48,8 @@
   TypeBuilder visitDynamicType(DynamicType node) {
     // 'dynamic' is always nullable.
     return new NamedTypeBuilder("dynamic", const NullabilityBuilder.nullable(),
-        /* arguments = */ null, /* fileUri = */ null, /* charOffset = */ null)
+        /* arguments = */ null, /* fileUri = */ null, /* charOffset = */ null,
+        instanceTypeVariableAccess: InstanceTypeVariableAccessState.Unexpected)
       ..bind(new DynamicTypeDeclarationBuilder(
           const DynamicType(), loader.coreLibrary, -1));
   }
@@ -57,7 +58,8 @@
   TypeBuilder visitVoidType(VoidType node) {
     // 'void' is always nullable.
     return new NamedTypeBuilder("void", const NullabilityBuilder.nullable(),
-        /* arguments = */ null, /* fileUri = */ null, /* charOffset = */ null)
+        /* arguments = */ null, /* fileUri = */ null, /* charOffset = */ null,
+        instanceTypeVariableAccess: InstanceTypeVariableAccessState.Unexpected)
       ..bind(new VoidTypeDeclarationBuilder(
           const VoidType(), loader.coreLibrary, -1));
   }
@@ -69,14 +71,16 @@
         new NullabilityBuilder.fromNullability(node.nullability),
         /* arguments = */ null,
         /* fileUri = */ null,
-        /* charOffset = */ null)
+        /* charOffset = */ null,
+        instanceTypeVariableAccess: InstanceTypeVariableAccessState.Unexpected)
       ..bind(new NeverTypeDeclarationBuilder(node, loader.coreLibrary, -1));
   }
 
   @override
   TypeBuilder visitNullType(NullType node) {
     return new NamedTypeBuilder("Null", new NullabilityBuilder.nullable(),
-        /* arguments = */ null, /* fileUri = */ null, /* charOffset = */ null)
+        /* arguments = */ null, /* fileUri = */ null, /* charOffset = */ null,
+        instanceTypeVariableAccess: InstanceTypeVariableAccessState.Unexpected)
       ..bind(new NullTypeDeclarationBuilder(node, loader.coreLibrary, -1));
   }
 
@@ -96,7 +100,8 @@
         new NullabilityBuilder.fromNullability(node.nullability),
         arguments,
         /* fileUri = */ null,
-        /* charOffset = */ null)
+        /* charOffset = */ null,
+        instanceTypeVariableAccess: InstanceTypeVariableAccessState.Unexpected)
       ..bind(cls);
   }
 
@@ -113,7 +118,8 @@
         new NullabilityBuilder.fromNullability(node.nullability),
         [argument],
         /* fileUri = */ null,
-        /* charOffset = */ null)
+        /* charOffset = */ null,
+        instanceTypeVariableAccess: InstanceTypeVariableAccessState.Unexpected)
       ..bind(new FutureOrTypeDeclarationBuilder(node, loader.coreLibrary, -1));
   }
 
@@ -181,7 +187,8 @@
         new NullabilityBuilder.fromNullability(node.nullability),
         /* arguments = */ null,
         /* fileUri = */ null,
-        /* charOffset = */ null)
+        /* charOffset = */ null,
+        instanceTypeVariableAccess: InstanceTypeVariableAccessState.Allowed)
       ..bind(new TypeVariableBuilder.fromKernel(parameter, library));
   }
 
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 2a08cd3..a1e2b88 100644
--- a/pkg/front_end/lib/src/fasta/source/diet_listener.dart
+++ b/pkg/front_end/lib/src/fasta/source/diet_listener.dart
@@ -267,8 +267,7 @@
   }
 
   @override
-  void endFunctionTypeAlias(
-      Token typedefKeyword, Token? equals, Token endToken) {
+  void endTypedef(Token typedefKeyword, Token? equals, Token endToken) {
     debugEvent("FunctionTypeAlias");
 
     if (equals == null) pop(); // endToken
@@ -868,7 +867,7 @@
   }
 
   @override
-  void beginClassOrMixinBody(DeclarationKind kind, Token token) {
+  void beginClassOrMixinOrExtensionBody(DeclarationKind kind, Token token) {
     assert(checkState(token, [
       ValueKinds.Token,
       ValueKinds.NameOrParserRecovery,
@@ -890,7 +889,7 @@
   }
 
   @override
-  void endClassOrMixinBody(
+  void endClassOrMixinOrExtensionBody(
       DeclarationKind kind, int memberCount, Token beginToken, Token endToken) {
     debugEvent("ClassOrMixinBody");
     currentDeclaration = null;
diff --git a/pkg/front_end/lib/src/fasta/source/outline_builder.dart b/pkg/front_end/lib/src/fasta/source/outline_builder.dart
index 0a838d9..77966df 100644
--- a/pkg/front_end/lib/src/fasta/source/outline_builder.dart
+++ b/pkg/front_end/lib/src/fasta/source/outline_builder.dart
@@ -24,6 +24,8 @@
 
 import 'package:_fe_analyzer_shared/src/scanner/scanner.dart' show Token;
 
+import 'package:_fe_analyzer_shared/src/util/link.dart';
+
 import 'package:kernel/ast.dart'
     show AsyncMarker, InvalidType, Nullability, ProcedureKind, Variance;
 
@@ -101,6 +103,258 @@
   RedirectingFactoryBody,
 }
 
+/// Enum for the context in which declarations occur.
+///
+/// This is used to determine whether instance type variables access is allowed.
+enum DeclarationContext {
+  /// In the context of the enclosing library.
+  ///
+  /// This is used for library, import, export, part, and part of declarations
+  /// in libraries and parts, as well as annotations on top level declarations.
+  Library,
+
+  /// In a typedef declaration
+  ///
+  /// This excludes annotations on the typedef declaration itself, which are
+  /// seen in the [Library] context.
+  Typedef,
+
+  /// In an enum declaration
+  ///
+  /// This excludes annotations on the enum declaration itself, which are seen
+  /// in the [Library] context.
+  Enum,
+
+  /// In a top level method declaration.
+  ///
+  /// This includes return type of the declaration but excludes annotations on
+  /// the method declaration itself, which are seen in the [Library] context.
+  TopLevelMethod,
+
+  /// In a top level field declaration.
+  ///
+  /// This includes  type of the declaration but excludes annotations on the
+  /// field declaration itself, which are seen in the [Library] context.
+  TopLevelField,
+
+  /// In a `class Name<TypeParams>` or `mixin Name<TypeParams>` prefix of a
+  /// class declaration `class Name<TypeParams> ... { ... }`, mixin declaration
+  /// `mixin Name<TypeParams> ... { ... }` or named mixin application
+  /// `class Name<TypeParams> = ...;`.
+  ///
+  /// This is replaced by [Class], [Mixin] or [NamedMixinApplication] after the
+  /// type parameters have been parsed.
+  ClassOrMixinOrNamedMixinApplication,
+
+  /// In a named mixin application.
+  ///
+  /// This excludes type parameters declared on the named mixin application,
+  /// which are seen in the [ClassOrMixinOrNamedMixinApplication] context,
+  /// and annotations on the named mixin application itself, which are seen in
+  /// the [Library] context.
+  NamedMixinApplication,
+
+  /// In a class declaration before the class body.
+  ///
+  /// This excludes type parameters declared on the class declaration, which are
+  /// seen in the [ClassOrMixinOrNamedMixinApplication] context, and annotations
+  /// on the class declaration itself, which are seen in the [Library] context.
+  Class,
+
+  /// In a class declaration body.
+  ///
+  /// This includes annotations on class member declarations.
+  ClassBody,
+
+  /// In a generative constructor declaration inside a class declaration.
+  ///
+  /// This  excludes annotations on the constructor declaration itself, which
+  /// are seen in the [ClassBody] context.
+  ClassConstructor,
+
+  /// In a factory constructor declaration inside a class declaration.
+  ///
+  /// This excludes annotations on the constructor declaration itself, which
+  /// are seen in the [ClassBody] context.
+  ClassFactory,
+
+  /// In an instance method declaration inside a class declaration.
+  ///
+  /// This includes return type of the declaration but excludes annotations on
+  /// the method declaration itself, which are seen in the [ClassBody] context.
+  ClassInstanceMethod,
+
+  /// In an instance field declaration inside a class declaration.
+  ///
+  /// This includes type of the declaration but excludes annotations on the
+  /// field declaration itself, which are seen in the [ClassBody] context.
+  ClassInstanceField,
+
+  /// In a static method declaration inside a class declaration.
+  ///
+  /// This includes return type of the declaration but excludes annotations on
+  /// the method declaration itself, which are seen in the [ClassBody] context.
+  ClassStaticMethod,
+
+  /// In a static field declaration inside a class declaration.
+  ///
+  /// This includes type of the declaration but excludes annotations on the
+  /// field declaration itself, which are seen in the [ClassBody] context.
+  ClassStaticField,
+
+  /// In a mixin declaration before the mixin body.
+  ///
+  /// This excludes type parameters declared on the mixin declaration, which are
+  /// seen in the [ClassOrMixinOrNamedMixinApplication] context, and annotations
+  /// on the mixin declaration itself, which are seen in the [Library] context.
+  Mixin,
+
+  /// In a mixin declaration body.
+  ///
+  /// This includes annotations on mixin member declarations.
+  MixinBody,
+
+  /// In a generative constructor declaration inside a mixin declaration. This
+  /// is an error case.
+  ///
+  /// This excludes annotations on the constructor declaration itself, which
+  /// are seen in the [MixinBody] context.
+  MixinConstructor,
+
+  /// In a factory constructor declaration inside a mixin declaration. This is
+  /// an error case.
+  ///
+  /// This excludes annotations on the constructor declaration itself, which
+  /// are seen in the [MixinBody] context.
+  MixinFactory,
+
+  /// In an instance method declaration inside a mixin declaration.
+  ///
+  /// This includes return type of the declaration but excludes annotations on
+  /// the method declaration itself, which are seen in the [MixinBody] context.
+  MixinInstanceMethod,
+
+  /// In an instance field declaration inside a mixin declaration.
+  ///
+  /// This includes type of the declaration but excludes annotations on the
+  /// field declaration itself, which are seen in the [MixinBody] context.
+  MixinInstanceField,
+
+  /// In a static method declaration inside a mixin declaration.
+  ///
+  /// This includes return type of the declaration but excludes annotations on
+  /// the method declaration itself, which are seen in the [MixinBody] context.
+  MixinStaticMethod,
+
+  /// In a static field declaration inside a mixin declaration.
+  ///
+  /// This includes type of the declaration but excludes annotations on the
+  /// field declaration itself, which are seen in the [MixinBody] context.
+  MixinStaticField,
+
+  /// In an extension declaration before the extension body.
+  ///
+  /// This includes type parameters declared on the class declaration but
+  /// excludes annotations on the extension declaration itself, which are seen
+  /// in the [Library] context.
+  Extension,
+
+  /// In a extension declaration body.
+  ///
+  /// This includes annotations on extension member declarations.
+  ExtensionBody,
+
+  /// In a generative constructor declaration inside an extension declaration.
+  /// This is an error case.
+  ///
+  /// This excludes annotations on the constructor declaration itself, which
+  /// are seen in the [ExtensionBody] context.
+  ExtensionConstructor,
+
+  /// In a factory constructor declaration inside an extension declaration. This
+  /// is an error case.
+  ///
+  /// This excludes annotations on the constructor declaration itself, which
+  /// are seen in the [ExtensionBody] context.
+  ExtensionFactory,
+
+  /// In an instance method declaration inside an extension declaration.
+  ///
+  /// This includes return type of the declaration but excludes annotations on
+  /// the method declaration itself, which are seen in the [ExtensionBody]
+  /// context.
+  ExtensionInstanceMethod,
+
+  /// In a non-external instance field declaration inside an extension
+  /// declaration. This is an error case.
+  ///
+  /// This includes type of the declaration but excludes annotations on the
+  /// field declaration itself, which are seen in the [ExtensionBody] context.
+  ExtensionInstanceField,
+
+  /// In an external instance field declaration inside an extension declaration.
+  ///
+  /// This includes type of the declaration but excludes annotations on the
+  /// field declaration itself, which are seen in the [ExtensionBody] context.
+  ExtensionExternalInstanceField,
+
+  /// In a static method declaration inside an extension declaration.
+  ///
+  /// This includes return type of the declaration but excludes annotations on
+  /// the method declaration itself, which are seen in the [ExtensionBody]
+  /// context.
+  ExtensionStaticMethod,
+
+  /// In a static field declaration inside an extension declaration.
+  ///
+  /// This includes type of the declaration but excludes annotations on the
+  /// field declaration itself, which are seen in the [ExtensionBody] context.
+  ExtensionStaticField,
+}
+
+extension on DeclarationContext {
+  InstanceTypeVariableAccessState get instanceTypeVariableAccessState {
+    switch (this) {
+      case DeclarationContext.Library:
+      case DeclarationContext.Typedef:
+      case DeclarationContext.TopLevelMethod:
+      case DeclarationContext.TopLevelField:
+      case DeclarationContext.Enum:
+        return InstanceTypeVariableAccessState.Unexpected;
+      case DeclarationContext.ClassOrMixinOrNamedMixinApplication:
+      case DeclarationContext.NamedMixinApplication:
+      case DeclarationContext.Class:
+      case DeclarationContext.ClassConstructor:
+      case DeclarationContext.ClassFactory:
+      case DeclarationContext.ClassInstanceMethod:
+      case DeclarationContext.ClassInstanceField:
+      case DeclarationContext.Mixin:
+      case DeclarationContext.MixinInstanceMethod:
+      case DeclarationContext.MixinInstanceField:
+      case DeclarationContext.Extension:
+      case DeclarationContext.ExtensionInstanceMethod:
+      case DeclarationContext.ExtensionExternalInstanceField:
+        return InstanceTypeVariableAccessState.Allowed;
+      case DeclarationContext.ClassBody:
+      case DeclarationContext.ClassStaticMethod:
+      case DeclarationContext.ClassStaticField:
+      case DeclarationContext.MixinBody:
+      case DeclarationContext.MixinStaticMethod:
+      case DeclarationContext.MixinStaticField:
+      case DeclarationContext.ExtensionBody:
+      case DeclarationContext.ExtensionStaticMethod:
+      case DeclarationContext.ExtensionStaticField:
+        return InstanceTypeVariableAccessState.Disallowed;
+      case DeclarationContext.MixinConstructor:
+      case DeclarationContext.MixinFactory:
+      case DeclarationContext.ExtensionConstructor:
+      case DeclarationContext.ExtensionFactory:
+      case DeclarationContext.ExtensionInstanceField:
+        return InstanceTypeVariableAccessState.Invalid;
+    }
+  }
+}
+
 class OutlineBuilder extends StackListenerImpl {
   @override
   final SourceLibraryBuilder libraryBuilder;
@@ -117,6 +371,8 @@
   /// Counter used for naming unnamed extension declarations.
   int unnamedExtensionCounter = 0;
 
+  Link<DeclarationContext> _declarationContext = const Link();
+
   OutlineBuilder(SourceLibraryBuilder library)
       : libraryBuilder = library,
         enableNative =
@@ -124,6 +380,20 @@
         stringExpectedAfterNative =
             library.loader.target.backendTarget.nativeExtensionExpectsString;
 
+  DeclarationContext get declarationContext => _declarationContext.head;
+
+  void pushDeclarationContext(DeclarationContext value) {
+    _declarationContext = _declarationContext.prepend(value);
+  }
+
+  void popDeclarationContext([DeclarationContext? expectedContext]) {
+    assert(
+        expectedContext == null || expectedContext == declarationContext,
+        "Unexpected declaration context: "
+        "Expected $expectedContext, actual $declarationContext.");
+    _declarationContext = _declarationContext.tail!;
+  }
+
   @override
   Uri get uri => libraryBuilder.fileUri;
 
@@ -146,6 +416,16 @@
   }
 
   @override
+  void beginCompilationUnit(Token token) {
+    pushDeclarationContext(DeclarationContext.Library);
+  }
+
+  @override
+  void endCompilationUnit(int count, Token token) {
+    popDeclarationContext(DeclarationContext.Library);
+  }
+
+  @override
   void endMetadata(Token beginToken, Token? periodBeforeName, Token endToken) {
     debugEvent("Metadata");
     pop(); // arguments
@@ -491,8 +771,10 @@
   }
 
   @override
-  void beginClassOrNamedMixinApplicationPrelude(Token token) {
+  void beginClassOrMixinOrNamedMixinApplicationPrelude(Token token) {
     debugEvent("beginClassOrNamedMixinApplicationPrelude");
+    pushDeclarationContext(
+        DeclarationContext.ClassOrMixinOrNamedMixinApplication);
     libraryBuilder.beginNestedDeclaration(
         TypeParameterScopeKind.classOrNamedMixinApplication,
         "class or mixin application");
@@ -501,6 +783,9 @@
   @override
   void beginClassDeclaration(Token begin, Token? abstractToken, Token name) {
     debugEvent("beginClassDeclaration");
+    popDeclarationContext(
+        DeclarationContext.ClassOrMixinOrNamedMixinApplication);
+    pushDeclarationContext(DeclarationContext.Class);
     List<TypeVariableBuilder>? typeVariables =
         pop() as List<TypeVariableBuilder>?;
     push(typeVariables ?? NullValue.TypeVariables);
@@ -514,6 +799,9 @@
   @override
   void beginMixinDeclaration(Token mixinKeyword, Token name) {
     debugEvent("beginMixinDeclaration");
+    popDeclarationContext(
+        DeclarationContext.ClassOrMixinOrNamedMixinApplication);
+    pushDeclarationContext(DeclarationContext.Mixin);
     List<TypeVariableBuilder>? typeVariables =
         pop() as List<TypeVariableBuilder>?;
     push(typeVariables ?? NullValue.TypeVariables);
@@ -523,7 +811,22 @@
   }
 
   @override
-  void beginClassOrMixinBody(DeclarationKind kind, Token token) {
+  void beginClassOrMixinOrExtensionBody(DeclarationKind kind, Token token) {
+    DeclarationContext declarationContext;
+    switch (kind) {
+      case DeclarationKind.TopLevel:
+        throw new UnsupportedError('Unexpected top level body.');
+      case DeclarationKind.Class:
+        declarationContext = DeclarationContext.ClassBody;
+        break;
+      case DeclarationKind.Mixin:
+        declarationContext = DeclarationContext.MixinBody;
+        break;
+      case DeclarationKind.Extension:
+        declarationContext = DeclarationContext.ExtensionBody;
+        break;
+    }
+    pushDeclarationContext(declarationContext);
     if (kind == DeclarationKind.Extension) {
       assert(checkState(token, [
         /* hide type elements = */ ValueKinds.TypeBuilderListOrNull,
@@ -562,6 +865,9 @@
   void beginNamedMixinApplication(
       Token begin, Token? abstractToken, Token name) {
     debugEvent("beginNamedMixinApplication");
+    popDeclarationContext(
+        DeclarationContext.ClassOrMixinOrNamedMixinApplication);
+    pushDeclarationContext(DeclarationContext.NamedMixinApplication);
     List<TypeVariableBuilder>? typeVariables =
         pop() as List<TypeVariableBuilder>?;
     push(typeVariables ?? NullValue.TypeVariables);
@@ -711,71 +1017,70 @@
           .endNestedDeclaration(
               TypeParameterScopeKind.classDeclaration, "<syntax-error>")
           .resolveTypes(typeVariables, libraryBuilder);
-      return;
-    }
+    } else {
+      final int startCharOffset =
+          metadata == null ? beginToken.charOffset : metadata.first.charOffset;
 
-    final int startCharOffset =
-        metadata == null ? beginToken.charOffset : metadata.first.charOffset;
-
-    if (libraryBuilder.isNonNullableByDefault) {
-      String classNameForErrors = "${name}";
-      TypeBuilder? supertypeForErrors = supertype is MixinApplicationBuilder
-          ? supertype.supertype
-          : supertype;
-      List<TypeBuilder>? mixins =
-          supertype is MixinApplicationBuilder ? supertype.mixins : null;
-      if (supertypeForErrors != null) {
-        if (supertypeForErrors.nullabilityBuilder.build(libraryBuilder) ==
-            Nullability.nullable) {
-          libraryBuilder.addProblem(
-              templateNullableSuperclassError
-                  .withArguments(supertypeForErrors.fullNameForErrors),
-              nameOffset,
-              classNameForErrors.length,
-              uri);
-        }
-      }
-      if (mixins != null) {
-        for (TypeBuilder mixin in mixins) {
-          if (mixin.nullabilityBuilder.build(libraryBuilder) ==
+      if (libraryBuilder.isNonNullableByDefault) {
+        String classNameForErrors = "${name}";
+        TypeBuilder? supertypeForErrors = supertype is MixinApplicationBuilder
+            ? supertype.supertype
+            : supertype;
+        List<TypeBuilder>? mixins =
+            supertype is MixinApplicationBuilder ? supertype.mixins : null;
+        if (supertypeForErrors != null) {
+          if (supertypeForErrors.nullabilityBuilder.build(libraryBuilder) ==
               Nullability.nullable) {
             libraryBuilder.addProblem(
-                templateNullableMixinError
-                    .withArguments(mixin.fullNameForErrors),
+                templateNullableSuperclassError
+                    .withArguments(supertypeForErrors.fullNameForErrors),
                 nameOffset,
                 classNameForErrors.length,
                 uri);
           }
         }
-      }
-      if (interfaces != null) {
-        for (TypeBuilder interface in interfaces) {
-          if (interface.nullabilityBuilder.build(libraryBuilder) ==
-              Nullability.nullable) {
-            libraryBuilder.addProblem(
-                templateNullableInterfaceError
-                    .withArguments(interface.fullNameForErrors),
-                nameOffset,
-                classNameForErrors.length,
-                uri);
+        if (mixins != null) {
+          for (TypeBuilder mixin in mixins) {
+            if (mixin.nullabilityBuilder.build(libraryBuilder) ==
+                Nullability.nullable) {
+              libraryBuilder.addProblem(
+                  templateNullableMixinError
+                      .withArguments(mixin.fullNameForErrors),
+                  nameOffset,
+                  classNameForErrors.length,
+                  uri);
+            }
+          }
+        }
+        if (interfaces != null) {
+          for (TypeBuilder interface in interfaces) {
+            if (interface.nullabilityBuilder.build(libraryBuilder) ==
+                Nullability.nullable) {
+              libraryBuilder.addProblem(
+                  templateNullableInterfaceError
+                      .withArguments(interface.fullNameForErrors),
+                  nameOffset,
+                  classNameForErrors.length,
+                  uri);
+            }
           }
         }
       }
+
+      libraryBuilder.addClass(
+          metadata,
+          modifiers,
+          name as String,
+          typeVariables,
+          supertype,
+          interfaces,
+          startCharOffset,
+          nameOffset,
+          endToken.charOffset,
+          supertypeOffset);
     }
-
-    libraryBuilder.addClass(
-        metadata,
-        modifiers,
-        name as String,
-        typeVariables,
-        supertype,
-        interfaces,
-        startCharOffset,
-        nameOffset,
-        endToken.charOffset,
-        supertypeOffset);
-
     libraryBuilder.setCurrentClassName(null);
+    popDeclarationContext(DeclarationContext.Class);
   }
 
   Object? nullIfParserRecovery(Object? node) {
@@ -801,71 +1106,73 @@
           .endNestedDeclaration(
               TypeParameterScopeKind.mixinDeclaration, "<syntax-error>")
           .resolveTypes(typeVariables, libraryBuilder);
-      return;
-    }
-    int startOffset =
-        metadata == null ? mixinToken.charOffset : metadata.first.charOffset;
-    TypeBuilder? supertype;
-    if (supertypeConstraints != null && supertypeConstraints.isNotEmpty) {
-      if (supertypeConstraints.length == 1) {
-        supertype = supertypeConstraints.first;
-      } else {
-        supertype = new MixinApplicationBuilder(
-            supertypeConstraints.first,
-            supertypeConstraints.skip(1).toList(),
-            supertypeConstraints.first.fileUri!,
-            supertypeConstraints.first.charOffset!);
+    } else {
+      int startOffset =
+          metadata == null ? mixinToken.charOffset : metadata.first.charOffset;
+      TypeBuilder? supertype;
+      if (supertypeConstraints != null && supertypeConstraints.isNotEmpty) {
+        if (supertypeConstraints.length == 1) {
+          supertype = supertypeConstraints.first;
+        } else {
+          supertype = new MixinApplicationBuilder(
+              supertypeConstraints.first,
+              supertypeConstraints.skip(1).toList(),
+              supertypeConstraints.first.fileUri!,
+              supertypeConstraints.first.charOffset!);
+        }
       }
-    }
 
-    if (libraryBuilder.isNonNullableByDefault) {
-      String classNameForErrors = "${name}";
-      if (supertypeConstraints != null) {
-        for (TypeBuilder supertype in supertypeConstraints) {
-          if (supertype.nullabilityBuilder.build(libraryBuilder) ==
-              Nullability.nullable) {
-            libraryBuilder.addProblem(
-                templateNullableSuperclassError
-                    .withArguments(supertype.fullNameForErrors),
-                nameOffset,
-                classNameForErrors.length,
-                uri);
+      if (libraryBuilder.isNonNullableByDefault) {
+        String classNameForErrors = "${name}";
+        if (supertypeConstraints != null) {
+          for (TypeBuilder supertype in supertypeConstraints) {
+            if (supertype.nullabilityBuilder.build(libraryBuilder) ==
+                Nullability.nullable) {
+              libraryBuilder.addProblem(
+                  templateNullableSuperclassError
+                      .withArguments(supertype.fullNameForErrors),
+                  nameOffset,
+                  classNameForErrors.length,
+                  uri);
+            }
+          }
+        }
+        if (interfaces != null) {
+          for (TypeBuilder interface in interfaces) {
+            if (interface.nullabilityBuilder.build(libraryBuilder) ==
+                Nullability.nullable) {
+              libraryBuilder.addProblem(
+                  templateNullableInterfaceError
+                      .withArguments(interface.fullNameForErrors),
+                  nameOffset,
+                  classNameForErrors.length,
+                  uri);
+            }
           }
         }
       }
-      if (interfaces != null) {
-        for (TypeBuilder interface in interfaces) {
-          if (interface.nullabilityBuilder.build(libraryBuilder) ==
-              Nullability.nullable) {
-            libraryBuilder.addProblem(
-                templateNullableInterfaceError
-                    .withArguments(interface.fullNameForErrors),
-                nameOffset,
-                classNameForErrors.length,
-                uri);
-          }
-        }
-      }
-    }
 
-    libraryBuilder.addMixinDeclaration(
-        metadata,
-        mixinDeclarationMask,
-        name as String,
-        typeVariables,
-        supertype,
-        interfaces,
-        startOffset,
-        nameOffset,
-        endToken.charOffset,
-        -1);
+      libraryBuilder.addMixinDeclaration(
+          metadata,
+          mixinDeclarationMask,
+          name as String,
+          typeVariables,
+          supertype,
+          interfaces,
+          startOffset,
+          nameOffset,
+          endToken.charOffset,
+          -1);
+    }
     libraryBuilder.setCurrentClassName(null);
+    popDeclarationContext(DeclarationContext.Mixin);
   }
 
   @override
   void beginExtensionDeclarationPrelude(Token extensionKeyword) {
     assert(checkState(extensionKeyword, [ValueKinds.MetadataListOrNull]));
     debugEvent("beginExtensionDeclaration");
+    pushDeclarationContext(DeclarationContext.Extension);
     libraryBuilder.beginNestedDeclaration(
         TypeParameterScopeKind.extensionDeclaration, "extension");
   }
@@ -983,6 +1290,7 @@
         startOffset,
         nameOffset,
         endToken.charOffset);
+    popDeclarationContext(DeclarationContext.Extension);
   }
 
   ProcedureKind computeProcedureKind(Token? token) {
@@ -995,6 +1303,7 @@
 
   @override
   void beginTopLevelMethod(Token lastConsumed, Token? externalToken) {
+    pushDeclarationContext(DeclarationContext.TopLevelMethod);
     libraryBuilder.beginNestedDeclaration(
         TypeParameterScopeKind.topLevelMethod, "#method",
         hasMembers: false);
@@ -1037,26 +1346,28 @@
     libraryBuilder
         .endNestedDeclaration(TypeParameterScopeKind.topLevelMethod, "#method")
         .resolveTypes(typeVariables, libraryBuilder);
-    if (name is ParserRecovery) return;
-    final int startCharOffset =
-        metadata == null ? beginToken.charOffset : metadata.first.charOffset;
-    libraryBuilder.addProcedure(
-        metadata,
-        modifiers,
-        returnType,
-        name as String,
-        typeVariables,
-        formals,
-        computeProcedureKind(getOrSet),
-        startCharOffset,
-        charOffset,
-        formalsOffset,
-        endToken.charOffset,
-        nativeMethodName,
-        asyncModifier,
-        isInstanceMember: false,
-        isExtensionMember: false);
-    nativeMethodName = null;
+    if (name is! ParserRecovery) {
+      final int startCharOffset =
+          metadata == null ? beginToken.charOffset : metadata.first.charOffset;
+      libraryBuilder.addProcedure(
+          metadata,
+          modifiers,
+          returnType,
+          name as String,
+          typeVariables,
+          formals,
+          computeProcedureKind(getOrSet),
+          startCharOffset,
+          charOffset,
+          formalsOffset,
+          endToken.charOffset,
+          nativeMethodName,
+          asyncModifier,
+          isInstanceMember: false,
+          isExtensionMember: false);
+      nativeMethodName = null;
+    }
+    popDeclarationContext(DeclarationContext.TopLevelMethod);
   }
 
   @override
@@ -1101,6 +1412,7 @@
 
   @override
   void beginMethod(
+      DeclarationKind declarationKind,
       Token? externalToken,
       Token? staticToken,
       Token? covariantToken,
@@ -1110,6 +1422,45 @@
     inConstructor =
         name.lexeme == libraryBuilder.currentTypeParameterScopeBuilder.name &&
             getOrSet == null;
+    DeclarationContext declarationContext;
+    switch (declarationKind) {
+      case DeclarationKind.TopLevel:
+        assert(
+            false,
+            "Expected top level method to be handled by "
+            "`beginTopLevelMethod`.");
+        declarationContext = DeclarationContext.TopLevelMethod;
+        break;
+      case DeclarationKind.Class:
+        if (inConstructor) {
+          declarationContext = DeclarationContext.ClassConstructor;
+        } else if (staticToken != null) {
+          declarationContext = DeclarationContext.ClassStaticMethod;
+        } else {
+          declarationContext = DeclarationContext.ClassInstanceMethod;
+        }
+        break;
+      case DeclarationKind.Mixin:
+        if (inConstructor) {
+          declarationContext = DeclarationContext.MixinConstructor;
+        } else if (staticToken != null) {
+          declarationContext = DeclarationContext.MixinStaticMethod;
+        } else {
+          declarationContext = DeclarationContext.MixinInstanceMethod;
+        }
+        break;
+      case DeclarationKind.Extension:
+        if (inConstructor) {
+          declarationContext = DeclarationContext.ExtensionConstructor;
+        } else if (staticToken != null) {
+          declarationContext = DeclarationContext.ExtensionStaticMethod;
+        } else {
+          declarationContext = DeclarationContext.ExtensionInstanceMethod;
+        }
+        break;
+    }
+    pushDeclarationContext(declarationContext);
+
     List<Modifier>? modifiers;
     if (externalToken != null) {
       modifiers ??= <Modifier>[];
@@ -1140,9 +1491,15 @@
     }
     push(varFinalOrConst?.charOffset ?? -1);
     push(modifiers ?? NullValue.Modifiers);
-    libraryBuilder.beginNestedDeclaration(
-        TypeParameterScopeKind.staticOrInstanceMethodOrConstructor, "#method",
-        hasMembers: false);
+    TypeParameterScopeKind kind;
+    if (inConstructor) {
+      kind = TypeParameterScopeKind.constructor;
+    } else if (staticToken != null) {
+      kind = TypeParameterScopeKind.staticMethod;
+    } else {
+      kind = TypeParameterScopeKind.instanceMethod;
+    }
+    libraryBuilder.beginNestedDeclaration(kind, "#method", hasMembers: false);
   }
 
   @override
@@ -1306,140 +1663,150 @@
     int varFinalOrConstOffset = popCharOffset();
     List<MetadataBuilder>? metadata = pop() as List<MetadataBuilder>?;
 
+    TypeParameterScopeKind scopeKind;
+    if (inConstructor) {
+      scopeKind = TypeParameterScopeKind.constructor;
+    } else if ((modifiers & staticMask) != 0) {
+      scopeKind = TypeParameterScopeKind.staticMethod;
+    } else {
+      scopeKind = TypeParameterScopeKind.instanceMethod;
+    }
     TypeParameterScopeBuilder declarationBuilder =
-        libraryBuilder.endNestedDeclaration(
-            TypeParameterScopeKind.staticOrInstanceMethodOrConstructor,
-            "#method");
+        libraryBuilder.endNestedDeclaration(scopeKind, "#method");
     if (name is ParserRecovery) {
       nativeMethodName = null;
       inConstructor = false;
       declarationBuilder.resolveTypes(typeVariables, libraryBuilder);
-      return;
-    }
-
-    String? constructorName;
-    switch (methodKind) {
-      case _MethodKind.classConstructor:
-      case _MethodKind.mixinConstructor:
-      case _MethodKind.extensionConstructor:
-        constructorName = libraryBuilder.computeAndValidateConstructorName(
-                name, charOffset) ??
-            name as String?;
-        break;
-      case _MethodKind.classMethod:
-      case _MethodKind.mixinMethod:
-      case _MethodKind.extensionMethod:
-        break;
-    }
-    bool isStatic = (modifiers & staticMask) != 0;
-    if (constructorName == null &&
-        !isStatic &&
-        libraryBuilder.currentTypeParameterScopeBuilder.kind ==
-            TypeParameterScopeKind.extensionDeclaration) {
-      TypeParameterScopeBuilder extension =
-          libraryBuilder.currentTypeParameterScopeBuilder;
-      Map<TypeVariableBuilder, TypeBuilder>? substitution;
-      if (extension.typeVariables != null) {
-        // We synthesize the names of the generated [TypeParameter]s, i.e.
-        // rename 'T' to '#T'. We cannot do it on the builders because their
-        // names are used to create the scope.
-        List<TypeVariableBuilder> synthesizedTypeVariables = libraryBuilder
-            .copyTypeVariables(extension.typeVariables!, declarationBuilder,
-                isExtensionTypeParameter: true);
-        substitution = {};
-        for (int i = 0; i < synthesizedTypeVariables.length; i++) {
-          substitution[extension.typeVariables![i]] =
-              new NamedTypeBuilder.fromTypeDeclarationBuilder(
-                  synthesizedTypeVariables[i],
-                  const NullabilityBuilder.omitted());
-        }
-        if (typeVariables != null) {
-          typeVariables = synthesizedTypeVariables..addAll(typeVariables);
-        } else {
-          typeVariables = synthesizedTypeVariables;
-        }
-      }
-      List<FormalParameterBuilder> synthesizedFormals = [];
-      TypeBuilder thisType = extension.extensionThisType;
-      if (substitution != null) {
-        List<TypeBuilder> unboundTypes = [];
-        List<TypeVariableBuilder> unboundTypeVariables = [];
-        thisType = substitute(thisType, substitution,
-            unboundTypes: unboundTypes,
-            unboundTypeVariables: unboundTypeVariables)!;
-        for (TypeBuilder unboundType in unboundTypes) {
-          extension.addType(new UnresolvedType(
-              unboundType, thisType.charOffset!, thisType.fileUri!));
-        }
-        libraryBuilder.boundlessTypeVariables.addAll(unboundTypeVariables);
-      }
-      synthesizedFormals.add(new FormalParameterBuilder(
-          null, finalMask, thisType, extensionThisName, null, charOffset,
-          fileUri: uri, isExtensionThis: true));
-      if (formals != null) {
-        synthesizedFormals.addAll(formals);
-      }
-      formals = synthesizedFormals;
-    }
-
-    declarationBuilder.resolveTypes(typeVariables, libraryBuilder);
-    if (constructorName != null) {
-      if (isConst &&
-          bodyKind != MethodBody.Abstract &&
-          !libraryBuilder.enableConstFunctionsInLibrary) {
-        addProblem(messageConstConstructorWithBody, varFinalOrConstOffset, 5);
-        modifiers &= ~constMask;
-      }
-      if (returnType != null) {
-        addProblem(messageConstructorWithReturnType,
-            returnType.charOffset ?? beginToken.offset, noLength);
-        returnType = null;
-      }
-      final int startCharOffset =
-          metadata == null ? beginToken.charOffset : metadata.first.charOffset;
-      libraryBuilder.addConstructor(
-          metadata,
-          modifiers,
-          returnType,
-          name,
-          constructorName,
-          typeVariables,
-          formals,
-          startCharOffset,
-          charOffset,
-          formalsOffset,
-          endToken.charOffset,
-          nativeMethodName,
-          beginInitializers: beginInitializers,
-          forAbstractClass: inAbstractClass);
     } else {
-      if (isConst) {
-        // TODO(danrubel): consider removing this
-        // because it is an error to have a const method.
-        modifiers &= ~constMask;
+      String? constructorName;
+      switch (methodKind) {
+        case _MethodKind.classConstructor:
+        case _MethodKind.mixinConstructor:
+        case _MethodKind.extensionConstructor:
+          constructorName = libraryBuilder.computeAndValidateConstructorName(
+                  name, charOffset) ??
+              name as String?;
+          break;
+        case _MethodKind.classMethod:
+        case _MethodKind.mixinMethod:
+        case _MethodKind.extensionMethod:
+          break;
       }
-      final int startCharOffset =
-          metadata == null ? beginToken.charOffset : metadata.first.charOffset;
-      bool isExtensionMember = methodKind == _MethodKind.extensionMethod;
-      libraryBuilder.addProcedure(
-          metadata,
-          modifiers,
-          returnType,
-          name as String,
-          typeVariables,
-          formals,
-          kind,
-          startCharOffset,
-          charOffset,
-          formalsOffset,
-          endToken.charOffset,
-          nativeMethodName,
-          asyncModifier,
-          isInstanceMember: !isStatic,
-          isExtensionMember: isExtensionMember);
+      bool isStatic = (modifiers & staticMask) != 0;
+      if (constructorName == null &&
+          !isStatic &&
+          libraryBuilder.currentTypeParameterScopeBuilder.kind ==
+              TypeParameterScopeKind.extensionDeclaration) {
+        TypeParameterScopeBuilder extension =
+            libraryBuilder.currentTypeParameterScopeBuilder;
+        Map<TypeVariableBuilder, TypeBuilder>? substitution;
+        if (extension.typeVariables != null) {
+          // We synthesize the names of the generated [TypeParameter]s, i.e.
+          // rename 'T' to '#T'. We cannot do it on the builders because their
+          // names are used to create the scope.
+          List<TypeVariableBuilder> synthesizedTypeVariables = libraryBuilder
+              .copyTypeVariables(extension.typeVariables!, declarationBuilder,
+                  isExtensionTypeParameter: true);
+          substitution = {};
+          for (int i = 0; i < synthesizedTypeVariables.length; i++) {
+            substitution[extension.typeVariables![i]] =
+                new NamedTypeBuilder.fromTypeDeclarationBuilder(
+                    synthesizedTypeVariables[i],
+                    const NullabilityBuilder.omitted(),
+                    instanceTypeVariableAccess:
+                        declarationContext.instanceTypeVariableAccessState);
+          }
+          if (typeVariables != null) {
+            typeVariables = synthesizedTypeVariables..addAll(typeVariables);
+          } else {
+            typeVariables = synthesizedTypeVariables;
+          }
+        }
+        List<FormalParameterBuilder> synthesizedFormals = [];
+        TypeBuilder thisType = extension.extensionThisType;
+        if (substitution != null) {
+          List<TypeBuilder> unboundTypes = [];
+          List<TypeVariableBuilder> unboundTypeVariables = [];
+          thisType = substitute(thisType, substitution,
+              unboundTypes: unboundTypes,
+              unboundTypeVariables: unboundTypeVariables)!;
+          for (TypeBuilder unboundType in unboundTypes) {
+            extension.addType(new UnresolvedType(
+                unboundType, thisType.charOffset!, thisType.fileUri!));
+          }
+          libraryBuilder.unboundTypeVariables.addAll(unboundTypeVariables);
+        }
+        synthesizedFormals.add(new FormalParameterBuilder(
+            null, finalMask, thisType, extensionThisName, null, charOffset,
+            fileUri: uri, isExtensionThis: true));
+        if (formals != null) {
+          synthesizedFormals.addAll(formals);
+        }
+        formals = synthesizedFormals;
+      }
+
+      declarationBuilder.resolveTypes(typeVariables, libraryBuilder);
+      if (constructorName != null) {
+        if (isConst &&
+            bodyKind != MethodBody.Abstract &&
+            !libraryBuilder.enableConstFunctionsInLibrary) {
+          addProblem(messageConstConstructorWithBody, varFinalOrConstOffset, 5);
+          modifiers &= ~constMask;
+        }
+        if (returnType != null) {
+          addProblem(messageConstructorWithReturnType,
+              returnType.charOffset ?? beginToken.offset, noLength);
+          returnType = null;
+        }
+        final int startCharOffset = metadata == null
+            ? beginToken.charOffset
+            : metadata.first.charOffset;
+        libraryBuilder.addConstructor(
+            metadata,
+            modifiers,
+            returnType,
+            name,
+            constructorName,
+            typeVariables,
+            formals,
+            startCharOffset,
+            charOffset,
+            formalsOffset,
+            endToken.charOffset,
+            nativeMethodName,
+            beginInitializers: beginInitializers,
+            forAbstractClass: inAbstractClass);
+      } else {
+        if (isConst) {
+          // TODO(danrubel): consider removing this
+          // because it is an error to have a const method.
+          modifiers &= ~constMask;
+        }
+        final int startCharOffset = metadata == null
+            ? beginToken.charOffset
+            : metadata.first.charOffset;
+        bool isExtensionMember = methodKind == _MethodKind.extensionMethod;
+        libraryBuilder.addProcedure(
+            metadata,
+            modifiers,
+            returnType,
+            name as String,
+            typeVariables,
+            formals,
+            kind,
+            startCharOffset,
+            charOffset,
+            formalsOffset,
+            endToken.charOffset,
+            nativeMethodName,
+            asyncModifier,
+            isInstanceMember: !isStatic,
+            isExtensionMember: isExtensionMember);
+      }
     }
     nativeMethodName = null;
     inConstructor = false;
+    popDeclarationContext();
   }
 
   @override
@@ -1476,63 +1843,64 @@
           .endNestedDeclaration(
               TypeParameterScopeKind.namedMixinApplication, "<syntax-error>")
           .resolveTypes(typeVariables, libraryBuilder);
-      return;
-    }
-
-    if (libraryBuilder.isNonNullableByDefault) {
-      String classNameForErrors = "${name}";
-      MixinApplicationBuilder mixinApplicationBuilder =
-          mixinApplication as MixinApplicationBuilder;
-      TypeBuilder? supertype = mixinApplicationBuilder.supertype;
-      List<TypeBuilder> mixins = mixinApplicationBuilder.mixins;
-      if (supertype != null && supertype is! MixinApplicationBuilder) {
-        if (supertype.nullabilityBuilder.build(libraryBuilder) ==
-            Nullability.nullable) {
-          libraryBuilder.addProblem(
-              templateNullableSuperclassError
-                  .withArguments(supertype.fullNameForErrors),
-              charOffset,
-              classNameForErrors.length,
-              uri);
-        }
-      }
-      for (TypeBuilder mixin in mixins) {
-        if (mixin.nullabilityBuilder.build(libraryBuilder) ==
-            Nullability.nullable) {
-          libraryBuilder.addProblem(
-              templateNullableMixinError.withArguments(mixin.fullNameForErrors),
-              charOffset,
-              classNameForErrors.length,
-              uri);
-        }
-      }
-      if (interfaces != null) {
-        for (TypeBuilder interface in interfaces) {
-          if (interface.nullabilityBuilder.build(libraryBuilder) ==
+    } else {
+      if (libraryBuilder.isNonNullableByDefault) {
+        String classNameForErrors = "${name}";
+        MixinApplicationBuilder mixinApplicationBuilder =
+            mixinApplication as MixinApplicationBuilder;
+        TypeBuilder? supertype = mixinApplicationBuilder.supertype;
+        List<TypeBuilder> mixins = mixinApplicationBuilder.mixins;
+        if (supertype != null && supertype is! MixinApplicationBuilder) {
+          if (supertype.nullabilityBuilder.build(libraryBuilder) ==
               Nullability.nullable) {
             libraryBuilder.addProblem(
-                templateNullableInterfaceError
-                    .withArguments(interface.fullNameForErrors),
+                templateNullableSuperclassError
+                    .withArguments(supertype.fullNameForErrors),
                 charOffset,
                 classNameForErrors.length,
                 uri);
           }
         }
+        for (TypeBuilder mixin in mixins) {
+          if (mixin.nullabilityBuilder.build(libraryBuilder) ==
+              Nullability.nullable) {
+            libraryBuilder.addProblem(
+                templateNullableMixinError
+                    .withArguments(mixin.fullNameForErrors),
+                charOffset,
+                classNameForErrors.length,
+                uri);
+          }
+        }
+        if (interfaces != null) {
+          for (TypeBuilder interface in interfaces) {
+            if (interface.nullabilityBuilder.build(libraryBuilder) ==
+                Nullability.nullable) {
+              libraryBuilder.addProblem(
+                  templateNullableInterfaceError
+                      .withArguments(interface.fullNameForErrors),
+                  charOffset,
+                  classNameForErrors.length,
+                  uri);
+            }
+          }
+        }
       }
-    }
 
-    int startCharOffset = beginToken.charOffset;
-    int charEndOffset = endToken.charOffset;
-    libraryBuilder.addNamedMixinApplication(
-        metadata,
-        name as String,
-        typeVariables,
-        modifiers,
-        mixinApplication as TypeBuilder?,
-        interfaces,
-        startCharOffset,
-        charOffset,
-        charEndOffset);
+      int startCharOffset = beginToken.charOffset;
+      int charEndOffset = endToken.charOffset;
+      libraryBuilder.addNamedMixinApplication(
+          metadata,
+          name as String,
+          typeVariables,
+          modifiers,
+          mixinApplication as TypeBuilder?,
+          interfaces,
+          startCharOffset,
+          charOffset,
+          charEndOffset);
+    }
+    popDeclarationContext(DeclarationContext.NamedMixinApplication);
   }
 
   @override
@@ -1578,7 +1946,9 @@
           name,
           libraryBuilder.nullableBuilderIfTrue(isMarkedAsNullable),
           arguments,
-          charOffset));
+          charOffset,
+          instanceTypeVariableAccess:
+              declarationContext.instanceTypeVariableAccessState));
     }
   }
 
@@ -1786,6 +2156,11 @@
   }
 
   @override
+  void beginEnum(Token enumKeyword) {
+    pushDeclarationContext(DeclarationContext.Enum);
+  }
+
+  @override
   void endEnum(Token enumKeyword, Token leftBrace, int count) {
     debugEvent("Enum");
     List<EnumConstantInfo?>? enumConstantInfos =
@@ -1795,13 +2170,16 @@
     Object? name = pop();
     List<MetadataBuilder>? metadata = pop() as List<MetadataBuilder>?;
     checkEmpty(enumKeyword.charOffset);
-    if (name is ParserRecovery) return;
-    libraryBuilder.addEnum(metadata, name as String, enumConstantInfos,
-        startCharOffset, charOffset, leftBrace.endGroup!.charOffset);
+    if (name is! ParserRecovery) {
+      libraryBuilder.addEnum(metadata, name as String, enumConstantInfos,
+          startCharOffset, charOffset, leftBrace.endGroup!.charOffset);
+    }
+    popDeclarationContext(DeclarationContext.Enum);
   }
 
   @override
-  void beginFunctionTypeAlias(Token token) {
+  void beginTypedef(Token token) {
+    pushDeclarationContext(DeclarationContext.Typedef);
     libraryBuilder.beginNestedDeclaration(
         TypeParameterScopeKind.typedef, "#typedef",
         hasMembers: false);
@@ -1866,8 +2244,7 @@
   }
 
   @override
-  void endFunctionTypeAlias(
-      Token typedefKeyword, Token? equals, Token endToken) {
+  void endTypedef(Token typedefKeyword, Token? equals, Token endToken) {
     debugEvent("endFunctionTypeAlias");
     List<TypeVariableBuilder>? typeVariables;
     Object? name;
@@ -1889,6 +2266,7 @@
             .endNestedDeclaration(
                 TypeParameterScopeKind.typedef, "<syntax-error>")
             .resolveTypes(typeVariables, libraryBuilder);
+        popDeclarationContext(DeclarationContext.Typedef);
         return;
       }
       libraryBuilder.beginNestedDeclaration(
@@ -1908,6 +2286,7 @@
             .endNestedDeclaration(
                 TypeParameterScopeKind.functionType, "<syntax-error>")
             .resolveTypes(typeVariables, libraryBuilder);
+        popDeclarationContext(DeclarationContext.Typedef);
         return;
       }
       if (type is FunctionTypeBuilder &&
@@ -1943,6 +2322,50 @@
     checkEmpty(typedefKeyword.charOffset);
     libraryBuilder.addFunctionTypeAlias(
         metadata, name as String, typeVariables, aliasedType, charOffset);
+    popDeclarationContext(DeclarationContext.Typedef);
+  }
+
+  @override
+  void beginFields(
+      DeclarationKind declarationKind,
+      Token? abstractToken,
+      Token? externalToken,
+      Token? staticToken,
+      Token? covariantToken,
+      Token? lateToken,
+      Token? varFinalOrConst,
+      Token lastConsumed) {
+    DeclarationContext declarationContext;
+    switch (declarationKind) {
+      case DeclarationKind.TopLevel:
+        declarationContext = DeclarationContext.TopLevelField;
+        break;
+      case DeclarationKind.Class:
+        if (staticToken != null) {
+          declarationContext = DeclarationContext.ClassStaticField;
+        } else {
+          declarationContext = DeclarationContext.ClassInstanceField;
+        }
+        break;
+      case DeclarationKind.Mixin:
+        if (staticToken != null) {
+          declarationContext = DeclarationContext.MixinStaticField;
+        } else {
+          declarationContext = DeclarationContext.MixinInstanceField;
+        }
+        break;
+      case DeclarationKind.Extension:
+        if (staticToken != null) {
+          declarationContext = DeclarationContext.ExtensionStaticField;
+        } else if (externalToken != null) {
+          declarationContext =
+              DeclarationContext.ExtensionExternalInstanceField;
+        } else {
+          declarationContext = DeclarationContext.ExtensionInstanceField;
+        }
+        break;
+    }
+    pushDeclarationContext(declarationContext);
   }
 
   @override
@@ -1979,9 +2402,11 @@
         Modifier.validateVarFinalOrConst(varFinalOrConst?.lexeme);
     List<MetadataBuilder>? metadata = pop() as List<MetadataBuilder>?;
     checkEmpty(beginToken.charOffset);
-    if (fieldInfos == null) return;
-    libraryBuilder.addFields(
-        metadata, modifiers, /* isTopLevel = */ true, type, fieldInfos);
+    if (fieldInfos != null) {
+      libraryBuilder.addFields(
+          metadata, modifiers, /* isTopLevel = */ true, type, fieldInfos);
+    }
+    popDeclarationContext();
   }
 
   @override
@@ -2040,9 +2465,11 @@
       modifiers &= ~constMask;
     }
     List<MetadataBuilder>? metadata = pop() as List<MetadataBuilder>?;
-    if (fieldInfos == null) return;
-    libraryBuilder.addFields(
-        metadata, modifiers, /* isTopLevel = */ false, type, fieldInfos);
+    if (fieldInfos != null) {
+      libraryBuilder.addFields(
+          metadata, modifiers, /* isTopLevel = */ false, type, fieldInfos);
+    }
+    popDeclarationContext();
   }
 
   List<FieldInfo>? popFieldInfos(int count) {
@@ -2161,7 +2588,10 @@
                 const NullabilityBuilder.omitted(),
                 null,
                 uri,
-                builder.charOffset)
+                builder.charOffset,
+                instanceTypeVariableAccess:
+                    //InstanceTypeVariableAccessState.Unexpected
+                    declarationContext.instanceTypeVariableAccessState)
               ..bind(new InvalidTypeDeclarationBuilder(
                   builder.name,
                   message.withLocation(
@@ -2212,8 +2642,24 @@
   }
 
   @override
-  void beginFactoryMethod(
-      Token lastConsumed, Token? externalToken, Token? constToken) {
+  void beginFactoryMethod(DeclarationKind declarationKind, Token lastConsumed,
+      Token? externalToken, Token? constToken) {
+    DeclarationContext declarationContext;
+    switch (declarationKind) {
+      case DeclarationKind.TopLevel:
+        throw new UnsupportedError("Unexpected top level factory method.");
+      case DeclarationKind.Class:
+        declarationContext = DeclarationContext.ClassFactory;
+        break;
+      case DeclarationKind.Mixin:
+        declarationContext = DeclarationContext.MixinFactory;
+        break;
+      case DeclarationKind.Extension:
+        declarationContext = DeclarationContext.ExtensionFactory;
+        break;
+    }
+
+    pushDeclarationContext(declarationContext);
     inConstructor = true;
     libraryBuilder.beginNestedDeclaration(
         TypeParameterScopeKind.factoryMethod, "#factory_method",
@@ -2222,8 +2668,7 @@
         (constToken != null ? constMask : 0));
   }
 
-  @override
-  void endClassFactoryMethod(
+  void _endFactoryMethod(
       Token beginToken, Token factoryKeyword, Token endToken) {
     debugEvent("ClassFactoryMethod");
     MethodBody kind = pop() as MethodBody;
@@ -2247,23 +2692,42 @@
     if (name is ParserRecovery) {
       libraryBuilder.endNestedDeclaration(
           TypeParameterScopeKind.factoryMethod, "<syntax-error>");
-      return;
+    } else {
+      libraryBuilder.addFactoryMethod(
+        metadata,
+        modifiers,
+        name,
+        formals,
+        redirectionTarget,
+        beginToken.charOffset,
+        charOffset,
+        formalsOffset,
+        endToken.charOffset,
+        nativeMethodName,
+        asyncModifier,
+      );
     }
-    libraryBuilder.addFactoryMethod(
-      metadata,
-      modifiers,
-      name,
-      formals,
-      redirectionTarget,
-      beginToken.charOffset,
-      charOffset,
-      formalsOffset,
-      endToken.charOffset,
-      nativeMethodName,
-      asyncModifier,
-    );
     nativeMethodName = null;
     inConstructor = false;
+    popDeclarationContext();
+  }
+
+  @override
+  void endClassFactoryMethod(
+      Token beginToken, Token factoryKeyword, Token endToken) {
+    _endFactoryMethod(beginToken, factoryKeyword, endToken);
+  }
+
+  @override
+  void endMixinFactoryMethod(
+      Token beginToken, Token factoryKeyword, Token endToken) {
+    _endFactoryMethod(beginToken, factoryKeyword, endToken);
+  }
+
+  @override
+  void endExtensionFactoryMethod(
+      Token beginToken, Token factoryKeyword, Token endToken) {
+    _endFactoryMethod(beginToken, factoryKeyword, endToken);
   }
 
   @override
@@ -2368,9 +2832,10 @@
   }
 
   @override
-  void endClassOrMixinBody(
+  void endClassOrMixinOrExtensionBody(
       DeclarationKind kind, int memberCount, Token beginToken, Token endToken) {
     debugEvent("ClassOrMixinBody");
+    popDeclarationContext();
   }
 
   @override
@@ -2411,6 +2876,7 @@
   }
 }
 
+/// TODO(johnniwinther): Use [DeclarationContext] instead of [_MethodKind].
 enum _MethodKind {
   classConstructor,
   classMethod,
diff --git a/pkg/front_end/lib/src/fasta/source/source_class_builder.dart b/pkg/front_end/lib/src/fasta/source/source_class_builder.dart
index 448fe67..e1dfd44 100644
--- a/pkg/front_end/lib/src/fasta/source/source_class_builder.dart
+++ b/pkg/front_end/lib/src/fasta/source/source_class_builder.dart
@@ -334,7 +334,9 @@
           const NullabilityBuilder.omitted(),
           /* arguments = */ null,
           fileUri,
-          charOffset)
+          charOffset,
+          instanceTypeVariableAccess:
+              InstanceTypeVariableAccessState.Unexpected)
         ..bind(new InvalidTypeDeclarationBuilder(supertype.name as String,
             message.withLocation(fileUri, charOffset, noLength)));
     }
diff --git a/pkg/front_end/lib/src/fasta/source/source_library_builder.dart b/pkg/front_end/lib/src/fasta/source/source_library_builder.dart
index f1cb153..39420c4 100644
--- a/pkg/front_end/lib/src/fasta/source/source_library_builder.dart
+++ b/pkg/front_end/lib/src/fasta/source/source_library_builder.dart
@@ -102,6 +102,7 @@
     show
         abstractMask,
         constMask,
+        externalMask,
         finalMask,
         declaresConstConstructorMask,
         hasInitializerMask,
@@ -184,7 +185,7 @@
 
   final List<FunctionBuilder> nativeMethods = <FunctionBuilder>[];
 
-  final List<TypeVariableBuilder> boundlessTypeVariables =
+  final List<TypeVariableBuilder> unboundTypeVariables =
       <TypeVariableBuilder>[];
 
   final List<UncheckedTypedefType> uncheckedTypedefTypes =
@@ -1249,7 +1250,7 @@
       exporters.addAll(part.exporters);
 
       nativeMethods.addAll(part.nativeMethods);
-      boundlessTypeVariables.addAll(part.boundlessTypeVariables);
+      unboundTypeVariables.addAll(part.unboundTypeVariables);
       // Check that the targets are different. This is not normally a problem
       // but is for patch files.
       if (library != part.library && part.library.problemsAsJson != null) {
@@ -1483,10 +1484,12 @@
   }
 
   TypeBuilder addNamedType(Object name, NullabilityBuilder nullabilityBuilder,
-      List<TypeBuilder>? arguments, int charOffset) {
+      List<TypeBuilder>? arguments, int charOffset,
+      {required InstanceTypeVariableAccessState instanceTypeVariableAccess}) {
     return addType(
         new NamedTypeBuilder(
-            name, nullabilityBuilder, arguments, fileUri, charOffset),
+            name, nullabilityBuilder, arguments, fileUri, charOffset,
+            instanceTypeVariableAccess: instanceTypeVariableAccess),
         charOffset);
   }
 
@@ -1500,7 +1503,8 @@
   TypeBuilder addVoidType(int charOffset) {
     // 'void' is always nullable.
     return addNamedType(
-        "void", const NullabilityBuilder.nullable(), null, charOffset)
+        "void", const NullabilityBuilder.nullable(), null, charOffset,
+        instanceTypeVariableAccess: InstanceTypeVariableAccessState.Unexpected)
       ..bind(
           new VoidTypeDeclarationBuilder(const VoidType(), this, charOffset));
   }
@@ -2134,7 +2138,9 @@
             applicationTypeArguments = <TypeBuilder>[];
             for (TypeVariableBuilder typeVariable in typeVariables) {
               applicationTypeArguments.add(addNamedType(typeVariable.name,
-                  const NullabilityBuilder.omitted(), null, charOffset)
+                  const NullabilityBuilder.omitted(), null, charOffset,
+                  instanceTypeVariableAccess:
+                      InstanceTypeVariableAccessState.Allowed)
                 ..bind(
                     // The type variable types passed as arguments to the
                     // generic class representing the anonymous mixin
@@ -2191,7 +2197,9 @@
         addBuilder(fullname, application, charOffset,
             getterReference: referencesFromIndexedClass?.cls.reference);
         supertype = addNamedType(fullname, const NullabilityBuilder.omitted(),
-            applicationTypeArguments, charOffset);
+            applicationTypeArguments, charOffset,
+            instanceTypeVariableAccess:
+                InstanceTypeVariableAccessState.Allowed);
       }
       return supertype;
     } else {
@@ -2236,11 +2244,15 @@
     if (hasInitializer) {
       modifiers |= hasInitializerMask;
     }
-    final bool fieldIsLateWithLowering = (modifiers & lateMask) != 0 &&
+    bool isLate = (modifiers & lateMask) != 0;
+    bool isFinal = (modifiers & finalMask) != 0;
+    bool isStatic = (modifiers & staticMask) != 0;
+    bool isExternal = (modifiers & externalMask) != 0;
+    final bool fieldIsLateWithLowering = isLate &&
         loader.target.backendTarget.isLateFieldLoweringEnabled(
             hasInitializer: hasInitializer,
-            isFinal: (modifiers & finalMask) != 0,
-            isStatic: isTopLevel || (modifiers & staticMask) != 0);
+            isFinal: isFinal,
+            isStatic: isTopLevel || isStatic);
     final bool isInstanceMember = currentTypeParameterScopeBuilder.kind !=
             TypeParameterScopeKind.library &&
         (modifiers & staticMask) == 0;
@@ -2273,13 +2285,25 @@
     if (referencesFrom != null) {
       IndexedContainer indexedContainer =
           (_currentClassReferencesFromIndexed ?? referencesFromIndexed)!;
-      Name nameToLookupName = nameScheme.getFieldName(FieldNameType.Field, name,
-          isSynthesized: fieldIsLateWithLowering);
-      fieldReference = indexedContainer.lookupFieldReference(nameToLookupName);
-      fieldGetterReference =
-          indexedContainer.lookupGetterReference(nameToLookupName);
-      fieldSetterReference =
-          indexedContainer.lookupSetterReference(nameToLookupName);
+      if (isExtensionMember && isInstanceMember && isExternal) {
+        /// An external extension instance field is special. It is treated
+        /// as an external getter/setter pair and is therefore encoded as a pair
+        /// of top level methods using the extension instance member naming
+        /// convention.
+        fieldGetterReference = indexedContainer.lookupGetterReference(
+            nameScheme.getProcedureName(ProcedureKind.Getter, name));
+        fieldSetterReference = indexedContainer.lookupGetterReference(
+            nameScheme.getProcedureName(ProcedureKind.Setter, name));
+      } else {
+        Name nameToLookup = nameScheme.getFieldName(FieldNameType.Field, name,
+            isSynthesized: fieldIsLateWithLowering);
+        fieldReference = indexedContainer.lookupFieldReference(nameToLookup);
+        fieldGetterReference =
+            indexedContainer.lookupGetterReference(nameToLookup);
+        fieldSetterReference =
+            indexedContainer.lookupSetterReference(nameToLookup);
+      }
+
       if (fieldIsLateWithLowering) {
         Name lateIsSetName = nameScheme.getFieldName(
             FieldNameType.IsSetField, name,
@@ -2510,7 +2534,8 @@
         currentTypeParameterScopeBuilder.parent!.name,
         const NullabilityBuilder.omitted(),
         <TypeBuilder>[],
-        charOffset);
+        charOffset,
+        instanceTypeVariableAccess: InstanceTypeVariableAccessState.Allowed);
     if (currentTypeParameterScopeBuilder.parent?.kind ==
         TypeParameterScopeKind.extensionDeclaration) {
       // Make the synthesized return type invalid for extensions.
@@ -2607,7 +2632,8 @@
     for (TypeVariableBuilder tv in procedureBuilder.typeVariables!) {
       NamedTypeBuilder t = procedureBuilder.returnType as NamedTypeBuilder;
       t.arguments!.add(addNamedType(tv.name, const NullabilityBuilder.omitted(),
-          null, procedureBuilder.charOffset));
+          null, procedureBuilder.charOffset,
+          instanceTypeVariableAccess: InstanceTypeVariableAccessState.Allowed));
     }
     currentTypeParameterScopeBuilder = savedDeclaration;
 
@@ -2718,7 +2744,8 @@
     TypeVariableBuilder builder = new TypeVariableBuilder(
         name, this, charOffset, fileUri,
         bound: bound, metadata: metadata);
-    boundlessTypeVariables.add(builder);
+
+    unboundTypeVariables.add(builder);
     return builder;
   }
 
@@ -3037,7 +3064,7 @@
           variableVariance:
               variable.parameter.isLegacyCovariant ? null : variable.variance);
       copy.add(newVariable);
-      boundlessTypeVariables.add(newVariable);
+      unboundTypeVariables.add(newVariable);
     }
     for (TypeBuilder newType in newTypes) {
       declaration.addType(
@@ -3048,14 +3075,14 @@
 
   @override
   int finishTypeVariables(ClassBuilder object, TypeBuilder dynamicType) {
-    int count = boundlessTypeVariables.length;
+    int count = unboundTypeVariables.length;
     // Ensure that type parameters are built after their dependencies by sorting
     // them topologically using references in bounds.
     for (TypeVariableBuilder builder
-        in _sortTypeVariablesTopologically(boundlessTypeVariables)) {
+        in _sortTypeVariablesTopologically(unboundTypeVariables)) {
       builder.finish(this, object, dynamicType);
     }
-    boundlessTypeVariables.clear();
+    unboundTypeVariables.clear();
 
     processPendingNullabilities();
 
@@ -3292,7 +3319,7 @@
             currentTypeParameterScopeBuilder.addType(new UnresolvedType(
                 unboundType, unboundType.charOffset!, unboundType.fileUri!));
           }
-          boundlessTypeVariables.addAll(unboundTypeVariables);
+          this.unboundTypeVariables.addAll(unboundTypeVariables);
           for (int i = 0; i < variables.length; ++i) {
             variables[i].defaultType = calculatedBounds[i];
           }
@@ -4531,7 +4558,9 @@
   namedMixinApplication,
   extensionDeclaration,
   typedef,
-  staticOrInstanceMethodOrConstructor,
+  staticMethod,
+  instanceMethod,
+  constructor,
   topLevelMethod,
   factoryMethod,
   functionType,
@@ -4919,7 +4948,7 @@
 }
 
 List<TypeVariableBuilder> _sortTypeVariablesTopologically(
-    List<TypeVariableBuilder> typeVariables) {
+    Iterable<TypeVariableBuilder> typeVariables) {
   Set<TypeVariableBuilder> unhandled = new Set<TypeVariableBuilder>.identity()
     ..addAll(typeVariables);
   List<TypeVariableBuilder> result = <TypeVariableBuilder>[];
diff --git a/pkg/front_end/lib/src/fasta/source/source_type_alias_builder.dart b/pkg/front_end/lib/src/fasta/source/source_type_alias_builder.dart
index ea9bb01..9585ec4 100644
--- a/pkg/front_end/lib/src/fasta/source/source_type_alias_builder.dart
+++ b/pkg/front_end/lib/src/fasta/source/source_type_alias_builder.dart
@@ -216,8 +216,7 @@
 
   @override
   List<DartType> buildTypeArguments(
-      LibraryBuilder library, List<TypeBuilder>? arguments,
-      {bool? nonInstanceContext}) {
+      LibraryBuilder library, List<TypeBuilder>? arguments) {
     if (arguments == null && typeVariables == null) {
       return <DartType>[];
     }
diff --git a/pkg/front_end/lib/src/fasta/util/direct_parser_ast.dart b/pkg/front_end/lib/src/fasta/util/direct_parser_ast.dart
index 14d5e17..94a1865 100644
--- a/pkg/front_end/lib/src/fasta/util/direct_parser_ast.dart
+++ b/pkg/front_end/lib/src/fasta/util/direct_parser_ast.dart
@@ -70,7 +70,7 @@
   void accept(DirectParserASTContent node) {
     if (node is DirectParserASTContentCompilationUnitEnd ||
         node is DirectParserASTContentTopLevelDeclarationEnd ||
-        node is DirectParserASTContentClassOrMixinBodyEnd ||
+        node is DirectParserASTContentClassOrMixinOrExtensionBodyEnd ||
         node is DirectParserASTContentMemberEnd) {
       visitChildren(node);
       return;
@@ -99,8 +99,8 @@
       visitMetadataStar(metadata);
       return;
     }
-    if (node is DirectParserASTContentFunctionTypeAliasEnd) {
-      DirectParserASTContentFunctionTypeAliasEnd typedefDecl = node;
+    if (node is DirectParserASTContentTypedefEnd) {
+      DirectParserASTContentTypedefEnd typedefDecl = node;
       visitTypedef(
           typedefDecl, typedefDecl.typedefKeyword, typedefDecl.endToken);
       return;
@@ -253,8 +253,8 @@
       Token endInclusive) {}
 
   /// Note: Implementers are NOT expected to call visitChildren on this node.
-  void visitTypedef(DirectParserASTContentFunctionTypeAliasEnd node,
-      Token startInclusive, Token endInclusive) {}
+  void visitTypedef(DirectParserASTContentTypedefEnd node, Token startInclusive,
+      Token endInclusive) {}
 
   /// Note: Implementers can call visitChildren on this node.
   void visitMetadataStar(DirectParserASTContentMetadataStarEnd node) {
@@ -364,7 +364,8 @@
       return false;
     }
     if (children!.first
-        is! DirectParserASTContentClassOrNamedMixinApplicationPreludeBegin) {
+        // ignore: lines_longer_than_80_chars
+        is! DirectParserASTContentClassOrMixinOrNamedMixinApplicationPreludeBegin) {
       return false;
     }
     if (children!.last is! DirectParserASTContentClassDeclarationEnd) {
@@ -447,16 +448,16 @@
         is! DirectParserASTContentUncategorizedTopLevelDeclarationBegin) {
       return false;
     }
-    if (children!.last is! DirectParserASTContentFunctionTypeAliasEnd) {
+    if (children!.last is! DirectParserASTContentTypedefEnd) {
       return false;
     }
 
     return true;
   }
 
-  DirectParserASTContentFunctionTypeAliasEnd asTypedef() {
+  DirectParserASTContentTypedefEnd asTypedef() {
     if (!isTypedef()) throw "Not typedef";
-    return children!.last as DirectParserASTContentFunctionTypeAliasEnd;
+    return children!.last as DirectParserASTContentTypedefEnd;
   }
 
   bool isScript() {
@@ -541,7 +542,8 @@
       return false;
     }
     if (children!.first
-        is! DirectParserASTContentClassOrNamedMixinApplicationPreludeBegin) {
+        // ignore: lines_longer_than_80_chars
+        is! DirectParserASTContentClassOrMixinOrNamedMixinApplicationPreludeBegin) {
       return false;
     }
     if (children!.last is! DirectParserASTContentMixinDeclarationEnd) {
@@ -561,7 +563,8 @@
       return false;
     }
     if (children!.first
-        is! DirectParserASTContentClassOrNamedMixinApplicationPreludeBegin) {
+        // ignore: lines_longer_than_80_chars
+        is! DirectParserASTContentClassOrMixinOrNamedMixinApplicationPreludeBegin) {
       return false;
     }
     if (children!.last is! DirectParserASTContentNamedMixinApplicationEnd) {
@@ -849,9 +852,12 @@
 
 extension MixinDeclarationExtension
     on DirectParserASTContentMixinDeclarationEnd {
-  DirectParserASTContentClassOrMixinBodyEnd getClassOrMixinBody() {
+  DirectParserASTContentClassOrMixinOrExtensionBodyEnd
+      getClassOrMixinOrExtensionBody() {
     for (DirectParserASTContent child in children!) {
-      if (child is DirectParserASTContentClassOrMixinBodyEnd) return child;
+      if (child is DirectParserASTContentClassOrMixinOrExtensionBodyEnd) {
+        return child;
+      }
     }
     throw "Not found.";
   }
@@ -859,9 +865,12 @@
 
 extension ClassDeclarationExtension
     on DirectParserASTContentClassDeclarationEnd {
-  DirectParserASTContentClassOrMixinBodyEnd getClassOrMixinBody() {
+  DirectParserASTContentClassOrMixinOrExtensionBodyEnd
+      getClassOrMixinOrExtensionBody() {
     for (DirectParserASTContent child in children!) {
-      if (child is DirectParserASTContentClassOrMixinBodyEnd) return child;
+      if (child is DirectParserASTContentClassOrMixinOrExtensionBodyEnd) {
+        return child;
+      }
     }
     throw "Not found.";
   }
@@ -893,7 +902,7 @@
 }
 
 extension ClassOrMixinBodyExtension
-    on DirectParserASTContentClassOrMixinBodyEnd {
+    on DirectParserASTContentClassOrMixinOrExtensionBodyEnd {
   List<DirectParserASTContentMemberEnd> getMembers() {
     List<DirectParserASTContentMemberEnd> members = [];
     for (DirectParserASTContent child in children!) {
@@ -1213,7 +1222,7 @@
           // Exact match.
         } else if (end == "TopLevelDeclaration" &&
             (begin == "ExtensionDeclarationPrelude" ||
-                begin == "ClassOrNamedMixinApplicationPrelude" ||
+                begin == "ClassOrMixinOrNamedMixinApplicationPrelude" ||
                 begin == "TopLevelMember" ||
                 begin == "UncategorizedTopLevelDeclaration")) {
           // endTopLevelDeclaration is started by one of
diff --git a/pkg/front_end/lib/src/fasta/util/direct_parser_ast_helper.dart b/pkg/front_end/lib/src/fasta/util/direct_parser_ast_helper.dart
index 8c34151..ffb7439 100644
--- a/pkg/front_end/lib/src/fasta/util/direct_parser_ast_helper.dart
+++ b/pkg/front_end/lib/src/fasta/util/direct_parser_ast_helper.dart
@@ -155,9 +155,9 @@
   }
 
   @override
-  void beginClassOrMixinBody(DeclarationKind kind, Token token) {
-    DirectParserASTContentClassOrMixinBodyBegin data =
-        new DirectParserASTContentClassOrMixinBodyBegin(
+  void beginClassOrMixinOrExtensionBody(DeclarationKind kind, Token token) {
+    DirectParserASTContentClassOrMixinOrExtensionBodyBegin data =
+        new DirectParserASTContentClassOrMixinOrExtensionBodyBegin(
             DirectParserASTType.BEGIN,
             kind: kind,
             token: token);
@@ -165,10 +165,11 @@
   }
 
   @override
-  void endClassOrMixinBody(
+  void endClassOrMixinOrExtensionBody(
       DeclarationKind kind, int memberCount, Token beginToken, Token endToken) {
-    DirectParserASTContentClassOrMixinBodyEnd data =
-        new DirectParserASTContentClassOrMixinBodyEnd(DirectParserASTType.END,
+    DirectParserASTContentClassOrMixinOrExtensionBodyEnd data =
+        new DirectParserASTContentClassOrMixinOrExtensionBodyEnd(
+            DirectParserASTType.END,
             kind: kind,
             memberCount: memberCount,
             beginToken: beginToken,
@@ -177,9 +178,9 @@
   }
 
   @override
-  void beginClassOrNamedMixinApplicationPrelude(Token token) {
-    DirectParserASTContentClassOrNamedMixinApplicationPreludeBegin data =
-        new DirectParserASTContentClassOrNamedMixinApplicationPreludeBegin(
+  void beginClassOrMixinOrNamedMixinApplicationPrelude(Token token) {
+    DirectParserASTContentClassOrMixinOrNamedMixinApplicationPreludeBegin data =
+        new DirectParserASTContentClassOrMixinOrNamedMixinApplicationPreludeBegin(
             DirectParserASTType.BEGIN,
             token: token);
     seen(data);
@@ -526,10 +527,11 @@
   }
 
   @override
-  void beginFactoryMethod(
-      Token lastConsumed, Token? externalToken, Token? constToken) {
+  void beginFactoryMethod(DeclarationKind declarationKind, Token lastConsumed,
+      Token? externalToken, Token? constToken) {
     DirectParserASTContentFactoryMethodBegin data =
         new DirectParserASTContentFactoryMethodBegin(DirectParserASTType.BEGIN,
+            declarationKind: declarationKind,
             lastConsumed: lastConsumed,
             externalToken: externalToken,
             constToken: constToken);
@@ -929,19 +931,17 @@
   }
 
   @override
-  void beginFunctionTypeAlias(Token token) {
-    DirectParserASTContentFunctionTypeAliasBegin data =
-        new DirectParserASTContentFunctionTypeAliasBegin(
-            DirectParserASTType.BEGIN,
+  void beginTypedef(Token token) {
+    DirectParserASTContentTypedefBegin data =
+        new DirectParserASTContentTypedefBegin(DirectParserASTType.BEGIN,
             token: token);
     seen(data);
   }
 
   @override
-  void endFunctionTypeAlias(
-      Token typedefKeyword, Token? equals, Token endToken) {
-    DirectParserASTContentFunctionTypeAliasEnd data =
-        new DirectParserASTContentFunctionTypeAliasEnd(DirectParserASTType.END,
+  void endTypedef(Token typedefKeyword, Token? equals, Token endToken) {
+    DirectParserASTContentTypedefEnd data =
+        new DirectParserASTContentTypedefEnd(DirectParserASTType.END,
             typedefKeyword: typedefKeyword, equals: equals, endToken: endToken);
     seen(data);
   }
@@ -1431,6 +1431,7 @@
 
   @override
   void beginMethod(
+      DeclarationKind declarationKind,
       Token? externalToken,
       Token? staticToken,
       Token? covariantToken,
@@ -1439,6 +1440,7 @@
       Token name) {
     DirectParserASTContentMethodBegin data =
         new DirectParserASTContentMethodBegin(DirectParserASTType.BEGIN,
+            declarationKind: declarationKind,
             externalToken: externalToken,
             staticToken: staticToken,
             covariantToken: covariantToken,
@@ -1834,9 +1836,24 @@
   }
 
   @override
-  void beginFields(Token lastConsumed) {
+  void beginFields(
+      DeclarationKind declarationKind,
+      Token? abstractToken,
+      Token? externalToken,
+      Token? staticToken,
+      Token? covariantToken,
+      Token? lateToken,
+      Token? varFinalOrConst,
+      Token lastConsumed) {
     DirectParserASTContentFieldsBegin data =
         new DirectParserASTContentFieldsBegin(DirectParserASTType.BEGIN,
+            declarationKind: declarationKind,
+            abstractToken: abstractToken,
+            externalToken: externalToken,
+            staticToken: staticToken,
+            covariantToken: covariantToken,
+            lateToken: lateToken,
+            varFinalOrConst: varFinalOrConst,
             lastConsumed: lastConsumed);
     seen(data);
   }
@@ -3080,14 +3097,16 @@
       };
 }
 
-class DirectParserASTContentClassOrMixinBodyBegin
+class DirectParserASTContentClassOrMixinOrExtensionBodyBegin
     extends DirectParserASTContent {
   final DeclarationKind kind;
   final Token token;
 
-  DirectParserASTContentClassOrMixinBodyBegin(DirectParserASTType type,
-      {required this.kind, required this.token})
-      : super("ClassOrMixinBody", type);
+  DirectParserASTContentClassOrMixinOrExtensionBodyBegin(
+      DirectParserASTType type,
+      {required this.kind,
+      required this.token})
+      : super("ClassOrMixinOrExtensionBody", type);
 
   @override
   Map<String, Object?> get deprecatedArguments => {
@@ -3096,18 +3115,19 @@
       };
 }
 
-class DirectParserASTContentClassOrMixinBodyEnd extends DirectParserASTContent {
+class DirectParserASTContentClassOrMixinOrExtensionBodyEnd
+    extends DirectParserASTContent {
   final DeclarationKind kind;
   final int memberCount;
   final Token beginToken;
   final Token endToken;
 
-  DirectParserASTContentClassOrMixinBodyEnd(DirectParserASTType type,
+  DirectParserASTContentClassOrMixinOrExtensionBodyEnd(DirectParserASTType type,
       {required this.kind,
       required this.memberCount,
       required this.beginToken,
       required this.endToken})
-      : super("ClassOrMixinBody", type);
+      : super("ClassOrMixinOrExtensionBody", type);
 
   @override
   Map<String, Object?> get deprecatedArguments => {
@@ -3118,14 +3138,14 @@
       };
 }
 
-class DirectParserASTContentClassOrNamedMixinApplicationPreludeBegin
+class DirectParserASTContentClassOrMixinOrNamedMixinApplicationPreludeBegin
     extends DirectParserASTContent {
   final Token token;
 
-  DirectParserASTContentClassOrNamedMixinApplicationPreludeBegin(
+  DirectParserASTContentClassOrMixinOrNamedMixinApplicationPreludeBegin(
       DirectParserASTType type,
       {required this.token})
-      : super("ClassOrNamedMixinApplicationPrelude", type);
+      : super("ClassOrMixinOrNamedMixinApplicationPrelude", type);
 
   @override
   Map<String, Object?> get deprecatedArguments => {
@@ -3694,16 +3714,21 @@
 }
 
 class DirectParserASTContentFactoryMethodBegin extends DirectParserASTContent {
+  final DeclarationKind declarationKind;
   final Token lastConsumed;
   final Token? externalToken;
   final Token? constToken;
 
   DirectParserASTContentFactoryMethodBegin(DirectParserASTType type,
-      {required this.lastConsumed, this.externalToken, this.constToken})
+      {required this.declarationKind,
+      required this.lastConsumed,
+      this.externalToken,
+      this.constToken})
       : super("FactoryMethod", type);
 
   @override
   Map<String, Object?> get deprecatedArguments => {
+        "declarationKind": declarationKind,
         "lastConsumed": lastConsumed,
         "externalToken": externalToken,
         "constToken": constToken,
@@ -4353,13 +4378,12 @@
       };
 }
 
-class DirectParserASTContentFunctionTypeAliasBegin
-    extends DirectParserASTContent {
+class DirectParserASTContentTypedefBegin extends DirectParserASTContent {
   final Token token;
 
-  DirectParserASTContentFunctionTypeAliasBegin(DirectParserASTType type,
+  DirectParserASTContentTypedefBegin(DirectParserASTType type,
       {required this.token})
-      : super("FunctionTypeAlias", type);
+      : super("Typedef", type);
 
   @override
   Map<String, Object?> get deprecatedArguments => {
@@ -4367,15 +4391,14 @@
       };
 }
 
-class DirectParserASTContentFunctionTypeAliasEnd
-    extends DirectParserASTContent {
+class DirectParserASTContentTypedefEnd extends DirectParserASTContent {
   final Token typedefKeyword;
   final Token? equals;
   final Token endToken;
 
-  DirectParserASTContentFunctionTypeAliasEnd(DirectParserASTType type,
+  DirectParserASTContentTypedefEnd(DirectParserASTType type,
       {required this.typedefKeyword, this.equals, required this.endToken})
-      : super("FunctionTypeAlias", type);
+      : super("Typedef", type);
 
   @override
   Map<String, Object?> get deprecatedArguments => {
@@ -5166,6 +5189,7 @@
 }
 
 class DirectParserASTContentMethodBegin extends DirectParserASTContent {
+  final DeclarationKind declarationKind;
   final Token? externalToken;
   final Token? staticToken;
   final Token? covariantToken;
@@ -5174,7 +5198,8 @@
   final Token name;
 
   DirectParserASTContentMethodBegin(DirectParserASTType type,
-      {this.externalToken,
+      {required this.declarationKind,
+      this.externalToken,
       this.staticToken,
       this.covariantToken,
       this.varFinalOrConst,
@@ -5184,6 +5209,7 @@
 
   @override
   Map<String, Object?> get deprecatedArguments => {
+        "declarationKind": declarationKind,
         "externalToken": externalToken,
         "staticToken": staticToken,
         "covariantToken": covariantToken,
@@ -5858,14 +5884,35 @@
 }
 
 class DirectParserASTContentFieldsBegin extends DirectParserASTContent {
+  final DeclarationKind declarationKind;
+  final Token? abstractToken;
+  final Token? externalToken;
+  final Token? staticToken;
+  final Token? covariantToken;
+  final Token? lateToken;
+  final Token? varFinalOrConst;
   final Token lastConsumed;
 
   DirectParserASTContentFieldsBegin(DirectParserASTType type,
-      {required this.lastConsumed})
+      {required this.declarationKind,
+      this.abstractToken,
+      this.externalToken,
+      this.staticToken,
+      this.covariantToken,
+      this.lateToken,
+      this.varFinalOrConst,
+      required this.lastConsumed})
       : super("Fields", type);
 
   @override
   Map<String, Object?> get deprecatedArguments => {
+        "declarationKind": declarationKind,
+        "abstractToken": abstractToken,
+        "externalToken": externalToken,
+        "staticToken": staticToken,
+        "covariantToken": covariantToken,
+        "lateToken": lateToken,
+        "varFinalOrConst": varFinalOrConst,
         "lastConsumed": lastConsumed,
       };
 }
diff --git a/pkg/front_end/lib/src/fasta/util/textual_outline.dart b/pkg/front_end/lib/src/fasta/util/textual_outline.dart
index 3392abe..b72d8b6 100644
--- a/pkg/front_end/lib/src/fasta/util/textual_outline.dart
+++ b/pkg/front_end/lib/src/fasta/util/textual_outline.dart
@@ -753,8 +753,7 @@
   }
 
   @override
-  void endFunctionTypeAlias(
-      Token typedefKeyword, Token? equals, Token endToken) {
+  void endTypedef(Token typedefKeyword, Token? equals, Token endToken) {
     elementStartToChunk[typedefKeyword] =
         new _FunctionTypeAliasChunk(typedefKeyword, endToken);
   }
diff --git a/pkg/front_end/messages.yaml b/pkg/front_end/messages.yaml
index 78090a5..dc77400 100644
--- a/pkg/front_end/messages.yaml
+++ b/pkg/front_end/messages.yaml
@@ -1726,10 +1726,6 @@
   problemMessage: "Type '#name' not found."
   analyzerCode: UNDEFINED_CLASS
 
-NonInstanceTypeVariableUse:
-  problemMessage: "Can only use type variables in instance methods."
-  analyzerCode: TYPE_PARAMETER_REFERENCED_BY_STATIC
-
 NameNotFound:
   problemMessage: "Undefined name '#name'."
   analyzerCode: UNDEFINED_NAME
@@ -5359,6 +5355,14 @@
     f() {}
     main() => f<int>;
 
+InstantiationNullableGenericFunctionType:
+  problemMessage: "The static type of the explicit instantiation operand must be a non-null generic function type but is '#type'."
+  correctionMessage: "Try changing the operand or remove the type arguments."
+  analyzerCode: DISALLOWED_TYPE_INSTANTIATION_EXPRESSION
+  experiments: constructor-tearoffs
+  script: |
+    test(void Function<T>()? f) => f<int>;
+
 InstantiationTooFewArguments:
   problemMessage: "Too few type arguments: #count required, #count2 given."
   correctionMessage: "Try adding the missing type arguments."
diff --git a/pkg/front_end/parser_testcases/error_recovery/bracket_mismatch_01.dart.expect b/pkg/front_end/parser_testcases/error_recovery/bracket_mismatch_01.dart.expect
index 75b5105..c15e3f8 100644
--- a/pkg/front_end/parser_testcases/error_recovery/bracket_mismatch_01.dart.expect
+++ b/pkg/front_end/parser_testcases/error_recovery/bracket_mismatch_01.dart.expect
@@ -23,7 +23,7 @@
 beginCompilationUnit(class)
   beginMetadataStar(class)
   endMetadataStar(0)
-  beginClassOrNamedMixinApplicationPrelude(class)
+  beginClassOrMixinOrNamedMixinApplicationPrelude(class)
     handleIdentifier(C, classOrMixinDeclaration)
     handleNoTypeVariables({)
     beginClassDeclaration(class, null, C)
@@ -32,11 +32,11 @@
       handleClassNoWithClause()
       handleClassOrMixinImplements(null, 0)
       handleClassHeader(class, class, null)
-      beginClassOrMixinBody(DeclarationKind.Class, {)
+      beginClassOrMixinOrExtensionBody(DeclarationKind.Class, {)
         beginMetadataStar(C)
         endMetadataStar(0)
         beginMember()
-          beginMethod(null, null, null, null, null, C)
+          beginMethod(DeclarationKind.Class, null, null, null, null, null, C)
             handleNoType({)
             handleIdentifier(C, methodDeclaration)
             handleNoTypeVariables(()
@@ -59,7 +59,7 @@
         beginMetadataStar(C)
         endMetadataStar(0)
         beginMember()
-          beginMethod(null, null, null, null, null, m)
+          beginMethod(DeclarationKind.Class, null, null, null, null, null, m)
             handleIdentifier(C, typeReference)
             handleNoTypeArguments(m)
             handleType(C, null)
@@ -118,12 +118,12 @@
             endBlockFunctionBody(1, {, })
           endClassMethod(null, C, (, null, })
         endMember()
-      endClassOrMixinBody(DeclarationKind.Class, 2, {, })
+      endClassOrMixinOrExtensionBody(DeclarationKind.Class, 2, {, })
     endClassDeclaration(class, })
   endTopLevelDeclaration(class)
   beginMetadataStar(class)
   endMetadataStar(0)
-  beginClassOrNamedMixinApplicationPrelude(class)
+  beginClassOrMixinOrNamedMixinApplicationPrelude(class)
     handleIdentifier(D, classOrMixinDeclaration)
     handleNoTypeVariables({)
     beginClassDeclaration(class, null, D)
@@ -132,11 +132,11 @@
       handleClassNoWithClause()
       handleClassOrMixinImplements(null, 0)
       handleClassHeader(class, class, null)
-      beginClassOrMixinBody(DeclarationKind.Class, {)
+      beginClassOrMixinOrExtensionBody(DeclarationKind.Class, {)
         beginMetadataStar(D)
         endMetadataStar(0)
         beginMember()
-          beginMethod(null, null, null, null, null, D)
+          beginMethod(DeclarationKind.Class, null, null, null, null, null, D)
             handleNoType({)
             handleIdentifier(D, methodDeclaration)
             handleNoTypeVariables(()
@@ -159,7 +159,7 @@
         beginMetadataStar(D)
         endMetadataStar(0)
         beginMember()
-          beginMethod(null, null, null, null, null, m)
+          beginMethod(DeclarationKind.Class, null, null, null, null, null, m)
             handleIdentifier(D, typeReference)
             handleNoTypeArguments(m)
             handleType(D, null)
@@ -225,7 +225,7 @@
             endBlockFunctionBody(1, {, })
           endClassMethod(null, D, (, null, })
         endMember()
-      endClassOrMixinBody(DeclarationKind.Class, 2, {, })
+      endClassOrMixinOrExtensionBody(DeclarationKind.Class, 2, {, })
     endClassDeclaration(class, })
   endTopLevelDeclaration()
 endCompilationUnit(2, )
diff --git a/pkg/front_end/parser_testcases/error_recovery/bracket_mismatch_01.dart.intertwined.expect b/pkg/front_end/parser_testcases/error_recovery/bracket_mismatch_01.dart.intertwined.expect
index 0b1eeb0..ea9535d 100644
--- a/pkg/front_end/parser_testcases/error_recovery/bracket_mismatch_01.dart.intertwined.expect
+++ b/pkg/front_end/parser_testcases/error_recovery/bracket_mismatch_01.dart.intertwined.expect
@@ -9,7 +9,7 @@
     parseTopLevelKeywordDeclaration(, class, Instance of 'DirectiveContext')
       parseClassDeclarationModifiers(, class)
       parseClassOrNamedMixinApplication(null, class)
-        listener: beginClassOrNamedMixinApplicationPrelude(class)
+        listener: beginClassOrMixinOrNamedMixinApplicationPrelude(class)
         ensureIdentifier(class, classOrMixinDeclaration)
           listener: handleIdentifier(C, classOrMixinDeclaration)
         listener: handleNoTypeVariables({)
@@ -25,7 +25,7 @@
               listener: handleClassOrMixinImplements(null, 0)
             listener: handleClassHeader(class, class, null)
           parseClassOrMixinOrExtensionBody(C, DeclarationKind.Class, C)
-            listener: beginClassOrMixinBody(DeclarationKind.Class, {)
+            listener: beginClassOrMixinOrExtensionBody(DeclarationKind.Class, {)
             notEofOrValue(}, C)
             parseClassOrMixinOrExtensionMemberImpl({, DeclarationKind.Class, C)
               parseMetadataStar({)
@@ -34,7 +34,7 @@
               listener: beginMember()
               isReservedKeyword(()
               parseMethod({, null, null, null, null, null, null, {, Instance of 'NoType', null, C, DeclarationKind.Class, C, false)
-                listener: beginMethod(null, null, null, null, null, C)
+                listener: beginMethod(DeclarationKind.Class, null, null, null, null, null, C)
                 listener: handleNoType({)
                 ensureIdentifierPotentiallyRecovered({, methodDeclaration, false)
                   listener: handleIdentifier(C, methodDeclaration)
@@ -77,7 +77,7 @@
                 listener: endMetadataStar(0)
               listener: beginMember()
               parseMethod(;, null, null, null, null, null, null, ;, Instance of 'SimpleType', null, m, DeclarationKind.Class, C, false)
-                listener: beginMethod(null, null, null, null, null, m)
+                listener: beginMethod(DeclarationKind.Class, null, null, null, null, null, m)
                 listener: handleIdentifier(C, typeReference)
                 listener: handleNoTypeArguments(m)
                 listener: handleType(C, null)
@@ -251,7 +251,7 @@
                 listener: endClassMethod(null, C, (, null, })
               listener: endMember()
             notEofOrValue(}, })
-            listener: endClassOrMixinBody(DeclarationKind.Class, 2, {, })
+            listener: endClassOrMixinOrExtensionBody(DeclarationKind.Class, 2, {, })
           listener: endClassDeclaration(class, })
   listener: endTopLevelDeclaration(class)
   parseTopLevelDeclarationImpl(}, Instance of 'DirectiveContext')
@@ -261,7 +261,7 @@
     parseTopLevelKeywordDeclaration(}, class, Instance of 'DirectiveContext')
       parseClassDeclarationModifiers(}, class)
       parseClassOrNamedMixinApplication(null, class)
-        listener: beginClassOrNamedMixinApplicationPrelude(class)
+        listener: beginClassOrMixinOrNamedMixinApplicationPrelude(class)
         ensureIdentifier(class, classOrMixinDeclaration)
           listener: handleIdentifier(D, classOrMixinDeclaration)
         listener: handleNoTypeVariables({)
@@ -277,7 +277,7 @@
               listener: handleClassOrMixinImplements(null, 0)
             listener: handleClassHeader(class, class, null)
           parseClassOrMixinOrExtensionBody(D, DeclarationKind.Class, D)
-            listener: beginClassOrMixinBody(DeclarationKind.Class, {)
+            listener: beginClassOrMixinOrExtensionBody(DeclarationKind.Class, {)
             notEofOrValue(}, D)
             parseClassOrMixinOrExtensionMemberImpl({, DeclarationKind.Class, D)
               parseMetadataStar({)
@@ -286,7 +286,7 @@
               listener: beginMember()
               isReservedKeyword(()
               parseMethod({, null, null, null, null, null, null, {, Instance of 'NoType', null, D, DeclarationKind.Class, D, false)
-                listener: beginMethod(null, null, null, null, null, D)
+                listener: beginMethod(DeclarationKind.Class, null, null, null, null, null, D)
                 listener: handleNoType({)
                 ensureIdentifierPotentiallyRecovered({, methodDeclaration, false)
                   listener: handleIdentifier(D, methodDeclaration)
@@ -329,7 +329,7 @@
                 listener: endMetadataStar(0)
               listener: beginMember()
               parseMethod(;, null, null, null, null, null, null, ;, Instance of 'SimpleType', null, m, DeclarationKind.Class, D, false)
-                listener: beginMethod(null, null, null, null, null, m)
+                listener: beginMethod(DeclarationKind.Class, null, null, null, null, null, m)
                 listener: handleIdentifier(D, typeReference)
                 listener: handleNoTypeArguments(m)
                 listener: handleType(D, null)
@@ -520,7 +520,7 @@
                 listener: endClassMethod(null, D, (, null, })
               listener: endMember()
             notEofOrValue(}, })
-            listener: endClassOrMixinBody(DeclarationKind.Class, 2, {, })
+            listener: endClassOrMixinOrExtensionBody(DeclarationKind.Class, 2, {, })
           listener: endClassDeclaration(class, })
   listener: endTopLevelDeclaration()
   reportAllErrorTokens(class)
diff --git a/pkg/front_end/parser_testcases/error_recovery/constructor_recovery_bad_name_general.crash_dart.expect b/pkg/front_end/parser_testcases/error_recovery/constructor_recovery_bad_name_general.crash_dart.expect
index caa817a..5ee9cdb 100644
--- a/pkg/front_end/parser_testcases/error_recovery/constructor_recovery_bad_name_general.crash_dart.expect
+++ b/pkg/front_end/parser_testcases/error_recovery/constructor_recovery_bad_name_general.crash_dart.expect
@@ -123,7 +123,7 @@
 beginCompilationUnit(class)
   beginMetadataStar(class)
   endMetadataStar(0)
-  beginClassOrNamedMixinApplicationPrelude(class)
+  beginClassOrMixinOrNamedMixinApplicationPrelude(class)
     handleIdentifier(Foo, classOrMixinDeclaration)
     handleNoTypeVariables({)
     beginClassDeclaration(class, null, Foo)
@@ -132,11 +132,11 @@
       handleClassNoWithClause()
       handleClassOrMixinImplements(null, 0)
       handleClassHeader(class, class, null)
-      beginClassOrMixinBody(DeclarationKind.Class, {)
+      beginClassOrMixinOrExtensionBody(DeclarationKind.Class, {)
         beginMetadataStar(foo)
         endMetadataStar(0)
         beginMember()
-          beginMethod(null, null, null, null, null, foo)
+          beginMethod(DeclarationKind.Class, null, null, null, null, null, foo)
             handleNoType({)
             handleIdentifier(foo, methodDeclaration)
             handleIdentifier(x, methodDeclarationContinuation)
@@ -154,7 +154,7 @@
         beginMetadataStar(foo)
         endMetadataStar(0)
         beginMember()
-          beginMethod(null, null, null, null, null, foo)
+          beginMethod(DeclarationKind.Class, null, null, null, null, null, foo)
             handleNoType(})
             handleIdentifier(foo, methodDeclaration)
             handleIdentifier(x, methodDeclarationContinuation)
@@ -181,7 +181,7 @@
         beginMetadataStar(foo)
         endMetadataStar(0)
         beginMember()
-          beginMethod(null, null, null, null, null, foo)
+          beginMethod(DeclarationKind.Class, null, null, null, null, null, foo)
             handleNoType(})
             handleIdentifier(foo, methodDeclaration)
             handleNoTypeVariables(()
@@ -206,7 +206,7 @@
         beginMetadataStar(get)
         endMetadataStar(0)
         beginMember()
-          beginMethod(null, null, null, null, get, Foo)
+          beginMethod(DeclarationKind.Class, null, null, null, null, get, Foo)
             handleNoType(})
             handleIdentifier(Foo, methodDeclaration)
             handleNoTypeVariables(=>)
@@ -221,7 +221,7 @@
         beginMetadataStar(get)
         endMetadataStar(0)
         beginMember()
-          beginMethod(null, null, null, null, get, Foo)
+          beginMethod(DeclarationKind.Class, null, null, null, null, get, Foo)
             handleNoType(;)
             handleIdentifier(Foo, methodDeclaration)
             handleNoTypeVariables({)
@@ -239,7 +239,7 @@
         beginMetadataStar(get)
         endMetadataStar(0)
         beginMember()
-          beginMethod(null, null, null, null, get, Foo)
+          beginMethod(DeclarationKind.Class, null, null, null, null, get, Foo)
             handleNoType(})
             handleIdentifier(Foo, methodDeclaration)
             handleIdentifier(X, methodDeclarationContinuation)
@@ -258,7 +258,7 @@
         beginMetadataStar(get)
         endMetadataStar(0)
         beginMember()
-          beginMethod(null, null, null, null, get, Foo)
+          beginMethod(DeclarationKind.Class, null, null, null, null, get, Foo)
             handleNoType(;)
             handleIdentifier(Foo, methodDeclaration)
             handleIdentifier(X, methodDeclarationContinuation)
@@ -280,7 +280,7 @@
         beginMetadataStar(get)
         endMetadataStar(0)
         beginMember()
-          beginMethod(null, null, null, null, get, Foo)
+          beginMethod(DeclarationKind.Class, null, null, null, null, get, Foo)
             handleNoType(})
             handleIdentifier(Foo, methodDeclaration)
             handleNoTypeVariables(:)
@@ -306,7 +306,7 @@
         beginMetadataStar(get)
         endMetadataStar(0)
         beginMember()
-          beginMethod(null, null, null, null, get, Foo)
+          beginMethod(DeclarationKind.Class, null, null, null, null, get, Foo)
             handleNoType(;)
             handleIdentifier(Foo, methodDeclaration)
             handleIdentifier(X, methodDeclarationContinuation)
@@ -337,7 +337,7 @@
         beginMetadataStar(set)
         endMetadataStar(0)
         beginMember()
-          beginMethod(null, null, null, null, set, Foo)
+          beginMethod(DeclarationKind.Class, null, null, null, null, set, Foo)
             handleNoType(})
             handleIdentifier(Foo, methodDeclaration)
             handleNoTypeVariables(=>)
@@ -354,7 +354,7 @@
         beginMetadataStar(set)
         endMetadataStar(0)
         beginMember()
-          beginMethod(null, null, null, null, set, Foo)
+          beginMethod(DeclarationKind.Class, null, null, null, null, set, Foo)
             handleNoType(;)
             handleIdentifier(Foo, methodDeclaration)
             handleNoTypeVariables({)
@@ -374,7 +374,7 @@
         beginMetadataStar(set)
         endMetadataStar(0)
         beginMember()
-          beginMethod(null, null, null, null, set, Foo)
+          beginMethod(DeclarationKind.Class, null, null, null, null, set, Foo)
             handleNoType(})
             handleIdentifier(Foo, methodDeclaration)
             handleIdentifier(X, methodDeclarationContinuation)
@@ -393,7 +393,7 @@
         beginMetadataStar(set)
         endMetadataStar(0)
         beginMember()
-          beginMethod(null, null, null, null, set, Foo)
+          beginMethod(DeclarationKind.Class, null, null, null, null, set, Foo)
             handleNoType(;)
             handleIdentifier(Foo, methodDeclaration)
             handleIdentifier(X, methodDeclarationContinuation)
@@ -415,7 +415,7 @@
         beginMetadataStar(set)
         endMetadataStar(0)
         beginMember()
-          beginMethod(null, null, null, null, set, Foo)
+          beginMethod(DeclarationKind.Class, null, null, null, null, set, Foo)
             handleNoType(})
             handleIdentifier(Foo, methodDeclaration)
             handleNoTypeVariables(:)
@@ -441,7 +441,7 @@
         beginMetadataStar(set)
         endMetadataStar(0)
         beginMember()
-          beginMethod(null, null, null, null, set, Foo)
+          beginMethod(DeclarationKind.Class, null, null, null, null, set, Foo)
             handleNoType(;)
             handleIdentifier(Foo, methodDeclaration)
             handleIdentifier(X, methodDeclarationContinuation)
@@ -472,7 +472,7 @@
         beginMetadataStar(external)
         endMetadataStar(0)
         beginMember()
-          beginMethod(external, null, null, null, null, Foo)
+          beginMethod(DeclarationKind.Class, external, null, null, null, null, Foo)
             handleNoType(external)
             handleIdentifier(Foo, methodDeclaration)
             handleNoTypeVariables(()
@@ -496,7 +496,7 @@
         beginMetadataStar(external)
         endMetadataStar(0)
         beginMember()
-          beginMethod(external, null, null, null, null, Foo)
+          beginMethod(DeclarationKind.Class, external, null, null, null, null, Foo)
             handleNoType(external)
             handleIdentifier(Foo, methodDeclaration)
             handleIdentifier(X, methodDeclarationContinuation)
@@ -527,7 +527,7 @@
         beginMetadataStar(int)
         endMetadataStar(0)
         beginMember()
-          beginFields(})
+          beginFields(DeclarationKind.Class, null, null, null, null, null, null, })
             handleIdentifier(int, typeReference)
             handleNoTypeArguments(Foo)
             handleType(int, null)
@@ -539,7 +539,7 @@
         beginMetadataStar(int)
         endMetadataStar(0)
         beginMember()
-          beginFields(;)
+          beginFields(DeclarationKind.Class, null, null, null, null, null, null, ;)
             handleIdentifier(int, typeReference)
             handleNoTypeArguments(A)
             handleType(int, null)
@@ -552,7 +552,7 @@
             handleNoFieldInitializer(;)
           endClassFields(null, null, null, null, null, null, 3, int, ;)
         endMember()
-      endClassOrMixinBody(DeclarationKind.Class, 19, {, })
+      endClassOrMixinOrExtensionBody(DeclarationKind.Class, 19, {, })
     endClassDeclaration(class, })
   endTopLevelDeclaration()
 endCompilationUnit(1, )
diff --git a/pkg/front_end/parser_testcases/error_recovery/constructor_recovery_bad_name_general.crash_dart.intertwined.expect b/pkg/front_end/parser_testcases/error_recovery/constructor_recovery_bad_name_general.crash_dart.intertwined.expect
index a652954..7e46b8b 100644
--- a/pkg/front_end/parser_testcases/error_recovery/constructor_recovery_bad_name_general.crash_dart.intertwined.expect
+++ b/pkg/front_end/parser_testcases/error_recovery/constructor_recovery_bad_name_general.crash_dart.intertwined.expect
@@ -9,7 +9,7 @@
     parseTopLevelKeywordDeclaration(, class, Instance of 'DirectiveContext')
       parseClassDeclarationModifiers(, class)
       parseClassOrNamedMixinApplication(null, class)
-        listener: beginClassOrNamedMixinApplicationPrelude(class)
+        listener: beginClassOrMixinOrNamedMixinApplicationPrelude(class)
         ensureIdentifier(class, classOrMixinDeclaration)
           listener: handleIdentifier(Foo, classOrMixinDeclaration)
         listener: handleNoTypeVariables({)
@@ -25,7 +25,7 @@
               listener: handleClassOrMixinImplements(null, 0)
             listener: handleClassHeader(class, class, null)
           parseClassOrMixinOrExtensionBody(Foo, DeclarationKind.Class, Foo)
-            listener: beginClassOrMixinBody(DeclarationKind.Class, {)
+            listener: beginClassOrMixinOrExtensionBody(DeclarationKind.Class, {)
             notEofOrValue(}, foo)
             parseClassOrMixinOrExtensionMemberImpl({, DeclarationKind.Class, Foo)
               parseMetadataStar({)
@@ -34,7 +34,7 @@
               listener: beginMember()
               isReservedKeyword(.)
               parseMethod({, null, null, null, null, null, null, {, Instance of 'NoType', null, foo, DeclarationKind.Class, Foo, false)
-                listener: beginMethod(null, null, null, null, null, foo)
+                listener: beginMethod(DeclarationKind.Class, null, null, null, null, null, foo)
                 listener: handleNoType({)
                 ensureIdentifierPotentiallyRecovered({, methodDeclaration, false)
                   listener: handleIdentifier(foo, methodDeclaration)
@@ -72,7 +72,7 @@
               listener: beginMember()
               isReservedKeyword(.)
               parseMethod(}, null, null, null, null, null, null, }, Instance of 'NoType', null, foo, DeclarationKind.Class, Foo, false)
-                listener: beginMethod(null, null, null, null, null, foo)
+                listener: beginMethod(DeclarationKind.Class, null, null, null, null, null, foo)
                 listener: handleNoType(})
                 ensureIdentifierPotentiallyRecovered(}, methodDeclaration, false)
                   listener: handleIdentifier(foo, methodDeclaration)
@@ -135,7 +135,7 @@
               listener: beginMember()
               isReservedKeyword(()
               parseMethod(}, null, null, null, null, null, null, }, Instance of 'NoType', null, foo, DeclarationKind.Class, Foo, false)
-                listener: beginMethod(null, null, null, null, null, foo)
+                listener: beginMethod(DeclarationKind.Class, null, null, null, null, null, foo)
                 listener: handleNoType(})
                 ensureIdentifierPotentiallyRecovered(}, methodDeclaration, false)
                   listener: handleIdentifier(foo, methodDeclaration)
@@ -193,7 +193,7 @@
                 listener: endMetadataStar(0)
               listener: beginMember()
               parseMethod(}, null, null, null, null, null, null, }, Instance of 'NoType', get, Foo, DeclarationKind.Class, Foo, false)
-                listener: beginMethod(null, null, null, null, get, Foo)
+                listener: beginMethod(DeclarationKind.Class, null, null, null, null, get, Foo)
                 listener: handleNoType(})
                 ensureIdentifierPotentiallyRecovered(get, methodDeclaration, false)
                   listener: handleIdentifier(Foo, methodDeclaration)
@@ -230,7 +230,7 @@
                 listener: endMetadataStar(0)
               listener: beginMember()
               parseMethod(;, null, null, null, null, null, null, ;, Instance of 'NoType', get, Foo, DeclarationKind.Class, Foo, false)
-                listener: beginMethod(null, null, null, null, get, Foo)
+                listener: beginMethod(DeclarationKind.Class, null, null, null, null, get, Foo)
                 listener: handleNoType(;)
                 ensureIdentifierPotentiallyRecovered(get, methodDeclaration, false)
                   listener: handleIdentifier(Foo, methodDeclaration)
@@ -274,7 +274,7 @@
                 listener: endMetadataStar(0)
               listener: beginMember()
               parseMethod(}, null, null, null, null, null, null, }, Instance of 'NoType', get, Foo, DeclarationKind.Class, Foo, false)
-                listener: beginMethod(null, null, null, null, get, Foo)
+                listener: beginMethod(DeclarationKind.Class, null, null, null, null, get, Foo)
                 listener: handleNoType(})
                 ensureIdentifierPotentiallyRecovered(get, methodDeclaration, false)
                   listener: handleIdentifier(Foo, methodDeclaration)
@@ -321,7 +321,7 @@
                 listener: endMetadataStar(0)
               listener: beginMember()
               parseMethod(;, null, null, null, null, null, null, ;, Instance of 'NoType', get, Foo, DeclarationKind.Class, Foo, false)
-                listener: beginMethod(null, null, null, null, get, Foo)
+                listener: beginMethod(DeclarationKind.Class, null, null, null, null, get, Foo)
                 listener: handleNoType(;)
                 ensureIdentifierPotentiallyRecovered(get, methodDeclaration, false)
                   listener: handleIdentifier(Foo, methodDeclaration)
@@ -375,7 +375,7 @@
                 listener: endMetadataStar(0)
               listener: beginMember()
               parseMethod(}, null, null, null, null, null, null, }, Instance of 'NoType', get, Foo, DeclarationKind.Class, Foo, false)
-                listener: beginMethod(null, null, null, null, get, Foo)
+                listener: beginMethod(DeclarationKind.Class, null, null, null, null, get, Foo)
                 listener: handleNoType(})
                 ensureIdentifierPotentiallyRecovered(get, methodDeclaration, false)
                   listener: handleIdentifier(Foo, methodDeclaration)
@@ -443,7 +443,7 @@
                 listener: endMetadataStar(0)
               listener: beginMember()
               parseMethod(;, null, null, null, null, null, null, ;, Instance of 'NoType', get, Foo, DeclarationKind.Class, Foo, false)
-                listener: beginMethod(null, null, null, null, get, Foo)
+                listener: beginMethod(DeclarationKind.Class, null, null, null, null, get, Foo)
                 listener: handleNoType(;)
                 ensureIdentifierPotentiallyRecovered(get, methodDeclaration, false)
                   listener: handleIdentifier(Foo, methodDeclaration)
@@ -522,7 +522,7 @@
                 listener: endMetadataStar(0)
               listener: beginMember()
               parseMethod(}, null, null, null, null, null, null, }, Instance of 'NoType', set, Foo, DeclarationKind.Class, Foo, false)
-                listener: beginMethod(null, null, null, null, set, Foo)
+                listener: beginMethod(DeclarationKind.Class, null, null, null, null, set, Foo)
                 listener: handleNoType(})
                 ensureIdentifierPotentiallyRecovered(set, methodDeclaration, false)
                   listener: handleIdentifier(Foo, methodDeclaration)
@@ -565,7 +565,7 @@
                 listener: endMetadataStar(0)
               listener: beginMember()
               parseMethod(;, null, null, null, null, null, null, ;, Instance of 'NoType', set, Foo, DeclarationKind.Class, Foo, false)
-                listener: beginMethod(null, null, null, null, set, Foo)
+                listener: beginMethod(DeclarationKind.Class, null, null, null, null, set, Foo)
                 listener: handleNoType(;)
                 ensureIdentifierPotentiallyRecovered(set, methodDeclaration, false)
                   listener: handleIdentifier(Foo, methodDeclaration)
@@ -615,7 +615,7 @@
                 listener: endMetadataStar(0)
               listener: beginMember()
               parseMethod(}, null, null, null, null, null, null, }, Instance of 'NoType', set, Foo, DeclarationKind.Class, Foo, false)
-                listener: beginMethod(null, null, null, null, set, Foo)
+                listener: beginMethod(DeclarationKind.Class, null, null, null, null, set, Foo)
                 listener: handleNoType(})
                 ensureIdentifierPotentiallyRecovered(set, methodDeclaration, false)
                   listener: handleIdentifier(Foo, methodDeclaration)
@@ -662,7 +662,7 @@
                 listener: endMetadataStar(0)
               listener: beginMember()
               parseMethod(;, null, null, null, null, null, null, ;, Instance of 'NoType', set, Foo, DeclarationKind.Class, Foo, false)
-                listener: beginMethod(null, null, null, null, set, Foo)
+                listener: beginMethod(DeclarationKind.Class, null, null, null, null, set, Foo)
                 listener: handleNoType(;)
                 ensureIdentifierPotentiallyRecovered(set, methodDeclaration, false)
                   listener: handleIdentifier(Foo, methodDeclaration)
@@ -716,7 +716,7 @@
                 listener: endMetadataStar(0)
               listener: beginMember()
               parseMethod(}, null, null, null, null, null, null, }, Instance of 'NoType', set, Foo, DeclarationKind.Class, Foo, false)
-                listener: beginMethod(null, null, null, null, set, Foo)
+                listener: beginMethod(DeclarationKind.Class, null, null, null, null, set, Foo)
                 listener: handleNoType(})
                 ensureIdentifierPotentiallyRecovered(set, methodDeclaration, false)
                   listener: handleIdentifier(Foo, methodDeclaration)
@@ -784,7 +784,7 @@
                 listener: endMetadataStar(0)
               listener: beginMember()
               parseMethod(;, null, null, null, null, null, null, ;, Instance of 'NoType', set, Foo, DeclarationKind.Class, Foo, false)
-                listener: beginMethod(null, null, null, null, set, Foo)
+                listener: beginMethod(DeclarationKind.Class, null, null, null, null, set, Foo)
                 listener: handleNoType(;)
                 ensureIdentifierPotentiallyRecovered(set, methodDeclaration, false)
                   listener: handleIdentifier(Foo, methodDeclaration)
@@ -864,7 +864,7 @@
               listener: beginMember()
               isReservedKeyword(()
               parseMethod(}, null, external, null, null, null, null, external, Instance of 'NoType', null, Foo, DeclarationKind.Class, Foo, false)
-                listener: beginMethod(external, null, null, null, null, Foo)
+                listener: beginMethod(DeclarationKind.Class, external, null, null, null, null, Foo)
                 listener: handleNoType(external)
                 ensureIdentifierPotentiallyRecovered(external, methodDeclaration, false)
                   listener: handleIdentifier(Foo, methodDeclaration)
@@ -921,7 +921,7 @@
               listener: beginMember()
               isReservedKeyword(.)
               parseMethod(;, null, external, null, null, null, null, external, Instance of 'NoType', null, Foo, DeclarationKind.Class, Foo, false)
-                listener: beginMethod(external, null, null, null, null, Foo)
+                listener: beginMethod(DeclarationKind.Class, external, null, null, null, null, Foo)
                 listener: handleNoType(external)
                 ensureIdentifierPotentiallyRecovered(external, methodDeclaration, false)
                   listener: handleIdentifier(Foo, methodDeclaration)
@@ -999,7 +999,7 @@
                 listener: endMetadataStar(0)
               listener: beginMember()
               parseFields(}, null, null, null, null, null, null, }, Instance of 'SimpleType', Foo, DeclarationKind.Class, Foo, false)
-                listener: beginFields(})
+                listener: beginFields(DeclarationKind.Class, null, null, null, null, null, null, })
                 listener: handleIdentifier(int, typeReference)
                 listener: handleNoTypeArguments(Foo)
                 listener: handleType(int, null)
@@ -1018,7 +1018,7 @@
                 listener: endMetadataStar(0)
               listener: beginMember()
               parseFields(;, null, null, null, null, null, null, ;, Instance of 'SimpleType', A, DeclarationKind.Class, Foo, false)
-                listener: beginFields(;)
+                listener: beginFields(DeclarationKind.Class, null, null, null, null, null, null, ;)
                 listener: handleIdentifier(int, typeReference)
                 listener: handleNoTypeArguments(A)
                 listener: handleType(int, null)
@@ -1039,7 +1039,7 @@
                 listener: endClassFields(null, null, null, null, null, null, 3, int, ;)
               listener: endMember()
             notEofOrValue(}, })
-            listener: endClassOrMixinBody(DeclarationKind.Class, 19, {, })
+            listener: endClassOrMixinOrExtensionBody(DeclarationKind.Class, 19, {, })
           listener: endClassDeclaration(class, })
   listener: endTopLevelDeclaration()
   reportAllErrorTokens(class)
diff --git a/pkg/front_end/parser_testcases/error_recovery/constructor_recovery_bad_name_get.crash_dart.expect b/pkg/front_end/parser_testcases/error_recovery/constructor_recovery_bad_name_get.crash_dart.expect
index cae9938..06805796 100644
--- a/pkg/front_end/parser_testcases/error_recovery/constructor_recovery_bad_name_get.crash_dart.expect
+++ b/pkg/front_end/parser_testcases/error_recovery/constructor_recovery_bad_name_get.crash_dart.expect
@@ -31,7 +31,7 @@
 beginCompilationUnit(class)
   beginMetadataStar(class)
   endMetadataStar(0)
-  beginClassOrNamedMixinApplicationPrelude(class)
+  beginClassOrMixinOrNamedMixinApplicationPrelude(class)
     handleIdentifier(Foo, classOrMixinDeclaration)
     handleNoTypeVariables({)
     beginClassDeclaration(class, null, Foo)
@@ -40,11 +40,11 @@
       handleClassNoWithClause()
       handleClassOrMixinImplements(null, 0)
       handleClassHeader(class, class, null)
-      beginClassOrMixinBody(DeclarationKind.Class, {)
+      beginClassOrMixinOrExtensionBody(DeclarationKind.Class, {)
         beginMetadataStar(get)
         endMetadataStar(0)
         beginMember()
-          beginMethod(null, null, null, null, get, foo)
+          beginMethod(DeclarationKind.Class, null, null, null, null, get, foo)
             handleNoType({)
             handleIdentifier(foo, methodDeclaration)
             handleIdentifier(x, methodDeclarationContinuation)
@@ -63,7 +63,7 @@
         beginMetadataStar(get)
         endMetadataStar(0)
         beginMember()
-          beginMethod(null, null, null, null, get, foo)
+          beginMethod(DeclarationKind.Class, null, null, null, null, get, foo)
             handleNoType(})
             handleIdentifier(foo, methodDeclaration)
             handleIdentifier(x, methodDeclarationContinuation)
@@ -91,7 +91,7 @@
         beginMetadataStar(get)
         endMetadataStar(0)
         beginMember()
-          beginMethod(null, null, null, null, get, foo)
+          beginMethod(DeclarationKind.Class, null, null, null, null, get, foo)
             handleNoType(})
             handleIdentifier(foo, methodDeclaration)
             handleNoTypeVariables(()
@@ -115,7 +115,7 @@
             handleRecoverableError(GetterConstructor, get, get)
           endClassConstructor(get, get, (, :, })
         endMember()
-      endClassOrMixinBody(DeclarationKind.Class, 3, {, })
+      endClassOrMixinOrExtensionBody(DeclarationKind.Class, 3, {, })
     endClassDeclaration(class, })
   endTopLevelDeclaration()
 endCompilationUnit(1, )
diff --git a/pkg/front_end/parser_testcases/error_recovery/constructor_recovery_bad_name_get.crash_dart.intertwined.expect b/pkg/front_end/parser_testcases/error_recovery/constructor_recovery_bad_name_get.crash_dart.intertwined.expect
index 4180073..c1bf8ebf 100644
--- a/pkg/front_end/parser_testcases/error_recovery/constructor_recovery_bad_name_get.crash_dart.intertwined.expect
+++ b/pkg/front_end/parser_testcases/error_recovery/constructor_recovery_bad_name_get.crash_dart.intertwined.expect
@@ -9,7 +9,7 @@
     parseTopLevelKeywordDeclaration(, class, Instance of 'DirectiveContext')
       parseClassDeclarationModifiers(, class)
       parseClassOrNamedMixinApplication(null, class)
-        listener: beginClassOrNamedMixinApplicationPrelude(class)
+        listener: beginClassOrMixinOrNamedMixinApplicationPrelude(class)
         ensureIdentifier(class, classOrMixinDeclaration)
           listener: handleIdentifier(Foo, classOrMixinDeclaration)
         listener: handleNoTypeVariables({)
@@ -25,7 +25,7 @@
               listener: handleClassOrMixinImplements(null, 0)
             listener: handleClassHeader(class, class, null)
           parseClassOrMixinOrExtensionBody(Foo, DeclarationKind.Class, Foo)
-            listener: beginClassOrMixinBody(DeclarationKind.Class, {)
+            listener: beginClassOrMixinOrExtensionBody(DeclarationKind.Class, {)
             notEofOrValue(}, get)
             parseClassOrMixinOrExtensionMemberImpl({, DeclarationKind.Class, Foo)
               parseMetadataStar({)
@@ -33,7 +33,7 @@
                 listener: endMetadataStar(0)
               listener: beginMember()
               parseMethod({, null, null, null, null, null, null, {, Instance of 'NoType', get, foo, DeclarationKind.Class, Foo, false)
-                listener: beginMethod(null, null, null, null, get, foo)
+                listener: beginMethod(DeclarationKind.Class, null, null, null, null, get, foo)
                 listener: handleNoType({)
                 ensureIdentifierPotentiallyRecovered(get, methodDeclaration, false)
                   listener: handleIdentifier(foo, methodDeclaration)
@@ -72,7 +72,7 @@
                 listener: endMetadataStar(0)
               listener: beginMember()
               parseMethod(}, null, null, null, null, null, null, }, Instance of 'NoType', get, foo, DeclarationKind.Class, Foo, false)
-                listener: beginMethod(null, null, null, null, get, foo)
+                listener: beginMethod(DeclarationKind.Class, null, null, null, null, get, foo)
                 listener: handleNoType(})
                 ensureIdentifierPotentiallyRecovered(get, methodDeclaration, false)
                   listener: handleIdentifier(foo, methodDeclaration)
@@ -136,7 +136,7 @@
                 listener: endMetadataStar(0)
               listener: beginMember()
               parseMethod(}, null, null, null, null, null, null, }, Instance of 'NoType', get, foo, DeclarationKind.Class, Foo, false)
-                listener: beginMethod(null, null, null, null, get, foo)
+                listener: beginMethod(DeclarationKind.Class, null, null, null, null, get, foo)
                 listener: handleNoType(})
                 ensureIdentifierPotentiallyRecovered(get, methodDeclaration, false)
                   listener: handleIdentifier(foo, methodDeclaration)
@@ -192,7 +192,7 @@
                 listener: endClassConstructor(get, get, (, :, })
               listener: endMember()
             notEofOrValue(}, })
-            listener: endClassOrMixinBody(DeclarationKind.Class, 3, {, })
+            listener: endClassOrMixinOrExtensionBody(DeclarationKind.Class, 3, {, })
           listener: endClassDeclaration(class, })
   listener: endTopLevelDeclaration()
   reportAllErrorTokens(class)
diff --git a/pkg/front_end/parser_testcases/error_recovery/constructor_recovery_bad_name_return_type.crash_dart.expect b/pkg/front_end/parser_testcases/error_recovery/constructor_recovery_bad_name_return_type.crash_dart.expect
index df016c6..7629bd3 100644
--- a/pkg/front_end/parser_testcases/error_recovery/constructor_recovery_bad_name_return_type.crash_dart.expect
+++ b/pkg/front_end/parser_testcases/error_recovery/constructor_recovery_bad_name_return_type.crash_dart.expect
@@ -27,7 +27,7 @@
 beginCompilationUnit(class)
   beginMetadataStar(class)
   endMetadataStar(0)
-  beginClassOrNamedMixinApplicationPrelude(class)
+  beginClassOrMixinOrNamedMixinApplicationPrelude(class)
     handleIdentifier(Foo, classOrMixinDeclaration)
     handleNoTypeVariables({)
     beginClassDeclaration(class, null, Foo)
@@ -36,11 +36,11 @@
       handleClassNoWithClause()
       handleClassOrMixinImplements(null, 0)
       handleClassHeader(class, class, null)
-      beginClassOrMixinBody(DeclarationKind.Class, {)
+      beginClassOrMixinOrExtensionBody(DeclarationKind.Class, {)
         beginMetadataStar(void)
         endMetadataStar(0)
         beginMember()
-          beginMethod(null, null, null, null, null, foo)
+          beginMethod(DeclarationKind.Class, null, null, null, null, null, foo)
             handleVoidKeyword(void)
             handleIdentifier(foo, methodDeclaration)
             handleIdentifier(x, methodDeclarationContinuation)
@@ -59,7 +59,7 @@
         beginMetadataStar(void)
         endMetadataStar(0)
         beginMember()
-          beginMethod(null, null, null, null, null, foo)
+          beginMethod(DeclarationKind.Class, null, null, null, null, null, foo)
             handleVoidKeyword(void)
             handleIdentifier(foo, methodDeclaration)
             handleIdentifier(x, methodDeclarationContinuation)
@@ -87,7 +87,7 @@
         beginMetadataStar(void)
         endMetadataStar(0)
         beginMember()
-          beginMethod(null, null, null, null, null, foo)
+          beginMethod(DeclarationKind.Class, null, null, null, null, null, foo)
             handleVoidKeyword(void)
             handleIdentifier(foo, methodDeclaration)
             handleNoTypeVariables(()
@@ -110,7 +110,7 @@
             handleRecoverableError(ConstructorWithReturnType, void, void)
           endClassConstructor(null, void, (, :, })
         endMember()
-      endClassOrMixinBody(DeclarationKind.Class, 3, {, })
+      endClassOrMixinOrExtensionBody(DeclarationKind.Class, 3, {, })
     endClassDeclaration(class, })
   endTopLevelDeclaration()
 endCompilationUnit(1, )
diff --git a/pkg/front_end/parser_testcases/error_recovery/constructor_recovery_bad_name_return_type.crash_dart.intertwined.expect b/pkg/front_end/parser_testcases/error_recovery/constructor_recovery_bad_name_return_type.crash_dart.intertwined.expect
index 69f5eb9..1502968 100644
--- a/pkg/front_end/parser_testcases/error_recovery/constructor_recovery_bad_name_return_type.crash_dart.intertwined.expect
+++ b/pkg/front_end/parser_testcases/error_recovery/constructor_recovery_bad_name_return_type.crash_dart.intertwined.expect
@@ -9,7 +9,7 @@
     parseTopLevelKeywordDeclaration(, class, Instance of 'DirectiveContext')
       parseClassDeclarationModifiers(, class)
       parseClassOrNamedMixinApplication(null, class)
-        listener: beginClassOrNamedMixinApplicationPrelude(class)
+        listener: beginClassOrMixinOrNamedMixinApplicationPrelude(class)
         ensureIdentifier(class, classOrMixinDeclaration)
           listener: handleIdentifier(Foo, classOrMixinDeclaration)
         listener: handleNoTypeVariables({)
@@ -25,7 +25,7 @@
               listener: handleClassOrMixinImplements(null, 0)
             listener: handleClassHeader(class, class, null)
           parseClassOrMixinOrExtensionBody(Foo, DeclarationKind.Class, Foo)
-            listener: beginClassOrMixinBody(DeclarationKind.Class, {)
+            listener: beginClassOrMixinOrExtensionBody(DeclarationKind.Class, {)
             notEofOrValue(}, void)
             parseClassOrMixinOrExtensionMemberImpl({, DeclarationKind.Class, Foo)
               parseMetadataStar({)
@@ -33,7 +33,7 @@
                 listener: endMetadataStar(0)
               listener: beginMember()
               parseMethod({, null, null, null, null, null, null, {, Instance of 'VoidType', null, foo, DeclarationKind.Class, Foo, false)
-                listener: beginMethod(null, null, null, null, null, foo)
+                listener: beginMethod(DeclarationKind.Class, null, null, null, null, null, foo)
                 listener: handleVoidKeyword(void)
                 ensureIdentifierPotentiallyRecovered(void, methodDeclaration, false)
                   listener: handleIdentifier(foo, methodDeclaration)
@@ -72,7 +72,7 @@
                 listener: endMetadataStar(0)
               listener: beginMember()
               parseMethod(}, null, null, null, null, null, null, }, Instance of 'VoidType', null, foo, DeclarationKind.Class, Foo, false)
-                listener: beginMethod(null, null, null, null, null, foo)
+                listener: beginMethod(DeclarationKind.Class, null, null, null, null, null, foo)
                 listener: handleVoidKeyword(void)
                 ensureIdentifierPotentiallyRecovered(void, methodDeclaration, false)
                   listener: handleIdentifier(foo, methodDeclaration)
@@ -136,7 +136,7 @@
                 listener: endMetadataStar(0)
               listener: beginMember()
               parseMethod(}, null, null, null, null, null, null, }, Instance of 'VoidType', null, foo, DeclarationKind.Class, Foo, false)
-                listener: beginMethod(null, null, null, null, null, foo)
+                listener: beginMethod(DeclarationKind.Class, null, null, null, null, null, foo)
                 listener: handleVoidKeyword(void)
                 ensureIdentifierPotentiallyRecovered(void, methodDeclaration, false)
                   listener: handleIdentifier(foo, methodDeclaration)
@@ -190,7 +190,7 @@
                 listener: endClassConstructor(null, void, (, :, })
               listener: endMember()
             notEofOrValue(}, })
-            listener: endClassOrMixinBody(DeclarationKind.Class, 3, {, })
+            listener: endClassOrMixinOrExtensionBody(DeclarationKind.Class, 3, {, })
           listener: endClassDeclaration(class, })
   listener: endTopLevelDeclaration()
   reportAllErrorTokens(class)
diff --git a/pkg/front_end/parser_testcases/error_recovery/constructor_recovery_bad_name_set.crash_dart.expect b/pkg/front_end/parser_testcases/error_recovery/constructor_recovery_bad_name_set.crash_dart.expect
index 4fdb547..26bb64b 100644
--- a/pkg/front_end/parser_testcases/error_recovery/constructor_recovery_bad_name_set.crash_dart.expect
+++ b/pkg/front_end/parser_testcases/error_recovery/constructor_recovery_bad_name_set.crash_dart.expect
@@ -27,7 +27,7 @@
 beginCompilationUnit(class)
   beginMetadataStar(class)
   endMetadataStar(0)
-  beginClassOrNamedMixinApplicationPrelude(class)
+  beginClassOrMixinOrNamedMixinApplicationPrelude(class)
     handleIdentifier(Foo, classOrMixinDeclaration)
     handleNoTypeVariables({)
     beginClassDeclaration(class, null, Foo)
@@ -36,11 +36,11 @@
       handleClassNoWithClause()
       handleClassOrMixinImplements(null, 0)
       handleClassHeader(class, class, null)
-      beginClassOrMixinBody(DeclarationKind.Class, {)
+      beginClassOrMixinOrExtensionBody(DeclarationKind.Class, {)
         beginMetadataStar(set)
         endMetadataStar(0)
         beginMember()
-          beginMethod(null, null, null, null, set, foo)
+          beginMethod(DeclarationKind.Class, null, null, null, null, set, foo)
             handleNoType({)
             handleIdentifier(foo, methodDeclaration)
             handleIdentifier(x, methodDeclarationContinuation)
@@ -59,7 +59,7 @@
         beginMetadataStar(set)
         endMetadataStar(0)
         beginMember()
-          beginMethod(null, null, null, null, set, foo)
+          beginMethod(DeclarationKind.Class, null, null, null, null, set, foo)
             handleNoType(})
             handleIdentifier(foo, methodDeclaration)
             handleIdentifier(x, methodDeclarationContinuation)
@@ -87,7 +87,7 @@
         beginMetadataStar(set)
         endMetadataStar(0)
         beginMember()
-          beginMethod(null, null, null, null, set, foo)
+          beginMethod(DeclarationKind.Class, null, null, null, null, set, foo)
             handleNoType(})
             handleIdentifier(foo, methodDeclaration)
             handleNoTypeVariables(()
@@ -110,7 +110,7 @@
             handleRecoverableError(SetterConstructor, set, set)
           endClassConstructor(set, set, (, :, })
         endMember()
-      endClassOrMixinBody(DeclarationKind.Class, 3, {, })
+      endClassOrMixinOrExtensionBody(DeclarationKind.Class, 3, {, })
     endClassDeclaration(class, })
   endTopLevelDeclaration()
 endCompilationUnit(1, )
diff --git a/pkg/front_end/parser_testcases/error_recovery/constructor_recovery_bad_name_set.crash_dart.intertwined.expect b/pkg/front_end/parser_testcases/error_recovery/constructor_recovery_bad_name_set.crash_dart.intertwined.expect
index 2950a4b..ca57772 100644
--- a/pkg/front_end/parser_testcases/error_recovery/constructor_recovery_bad_name_set.crash_dart.intertwined.expect
+++ b/pkg/front_end/parser_testcases/error_recovery/constructor_recovery_bad_name_set.crash_dart.intertwined.expect
@@ -9,7 +9,7 @@
     parseTopLevelKeywordDeclaration(, class, Instance of 'DirectiveContext')
       parseClassDeclarationModifiers(, class)
       parseClassOrNamedMixinApplication(null, class)
-        listener: beginClassOrNamedMixinApplicationPrelude(class)
+        listener: beginClassOrMixinOrNamedMixinApplicationPrelude(class)
         ensureIdentifier(class, classOrMixinDeclaration)
           listener: handleIdentifier(Foo, classOrMixinDeclaration)
         listener: handleNoTypeVariables({)
@@ -25,7 +25,7 @@
               listener: handleClassOrMixinImplements(null, 0)
             listener: handleClassHeader(class, class, null)
           parseClassOrMixinOrExtensionBody(Foo, DeclarationKind.Class, Foo)
-            listener: beginClassOrMixinBody(DeclarationKind.Class, {)
+            listener: beginClassOrMixinOrExtensionBody(DeclarationKind.Class, {)
             notEofOrValue(}, set)
             parseClassOrMixinOrExtensionMemberImpl({, DeclarationKind.Class, Foo)
               parseMetadataStar({)
@@ -33,7 +33,7 @@
                 listener: endMetadataStar(0)
               listener: beginMember()
               parseMethod({, null, null, null, null, null, null, {, Instance of 'NoType', set, foo, DeclarationKind.Class, Foo, false)
-                listener: beginMethod(null, null, null, null, set, foo)
+                listener: beginMethod(DeclarationKind.Class, null, null, null, null, set, foo)
                 listener: handleNoType({)
                 ensureIdentifierPotentiallyRecovered(set, methodDeclaration, false)
                   listener: handleIdentifier(foo, methodDeclaration)
@@ -72,7 +72,7 @@
                 listener: endMetadataStar(0)
               listener: beginMember()
               parseMethod(}, null, null, null, null, null, null, }, Instance of 'NoType', set, foo, DeclarationKind.Class, Foo, false)
-                listener: beginMethod(null, null, null, null, set, foo)
+                listener: beginMethod(DeclarationKind.Class, null, null, null, null, set, foo)
                 listener: handleNoType(})
                 ensureIdentifierPotentiallyRecovered(set, methodDeclaration, false)
                   listener: handleIdentifier(foo, methodDeclaration)
@@ -136,7 +136,7 @@
                 listener: endMetadataStar(0)
               listener: beginMember()
               parseMethod(}, null, null, null, null, null, null, }, Instance of 'NoType', set, foo, DeclarationKind.Class, Foo, false)
-                listener: beginMethod(null, null, null, null, set, foo)
+                listener: beginMethod(DeclarationKind.Class, null, null, null, null, set, foo)
                 listener: handleNoType(})
                 ensureIdentifierPotentiallyRecovered(set, methodDeclaration, false)
                   listener: handleIdentifier(foo, methodDeclaration)
@@ -190,7 +190,7 @@
                 listener: endClassConstructor(set, set, (, :, })
               listener: endMember()
             notEofOrValue(}, })
-            listener: endClassOrMixinBody(DeclarationKind.Class, 3, {, })
+            listener: endClassOrMixinOrExtensionBody(DeclarationKind.Class, 3, {, })
           listener: endClassDeclaration(class, })
   listener: endTopLevelDeclaration()
   reportAllErrorTokens(class)
diff --git a/pkg/front_end/parser_testcases/error_recovery/constructor_recovery_get.dart.expect b/pkg/front_end/parser_testcases/error_recovery/constructor_recovery_get.dart.expect
index 0a3de66..daaa1b0 100644
--- a/pkg/front_end/parser_testcases/error_recovery/constructor_recovery_get.dart.expect
+++ b/pkg/front_end/parser_testcases/error_recovery/constructor_recovery_get.dart.expect
@@ -27,7 +27,7 @@
 beginCompilationUnit(class)
   beginMetadataStar(class)
   endMetadataStar(0)
-  beginClassOrNamedMixinApplicationPrelude(class)
+  beginClassOrMixinOrNamedMixinApplicationPrelude(class)
     handleIdentifier(Foo, classOrMixinDeclaration)
     handleNoTypeVariables({)
     beginClassDeclaration(class, null, Foo)
@@ -36,11 +36,11 @@
       handleClassNoWithClause()
       handleClassOrMixinImplements(null, 0)
       handleClassHeader(class, class, null)
-      beginClassOrMixinBody(DeclarationKind.Class, {)
+      beginClassOrMixinOrExtensionBody(DeclarationKind.Class, {)
         beginMetadataStar(get)
         endMetadataStar(0)
         beginMember()
-          beginMethod(null, null, null, null, get, Foo)
+          beginMethod(DeclarationKind.Class, null, null, null, null, get, Foo)
             handleNoType({)
             handleIdentifier(Foo, methodDeclaration)
             handleNoTypeVariables(()
@@ -57,7 +57,7 @@
         beginMetadataStar(get)
         endMetadataStar(0)
         beginMember()
-          beginMethod(null, null, null, null, get, Foo)
+          beginMethod(DeclarationKind.Class, null, null, null, null, get, Foo)
             handleNoType(})
             handleIdentifier(Foo, methodDeclaration)
             handleNoTypeVariables(()
@@ -83,7 +83,7 @@
         beginMetadataStar(get)
         endMetadataStar(0)
         beginMember()
-          beginMethod(null, null, null, null, get, Foo)
+          beginMethod(DeclarationKind.Class, null, null, null, null, get, Foo)
             handleNoType(})
             handleIdentifier(Foo, methodDeclaration)
             handleIdentifier(x, methodDeclarationContinuation)
@@ -101,7 +101,7 @@
         beginMetadataStar(get)
         endMetadataStar(0)
         beginMember()
-          beginMethod(null, null, null, null, get, Foo)
+          beginMethod(DeclarationKind.Class, null, null, null, null, get, Foo)
             handleNoType(})
             handleIdentifier(Foo, methodDeclaration)
             handleIdentifier(x, methodDeclarationContinuation)
@@ -125,7 +125,7 @@
             handleRecoverableError(GetterConstructor, get, get)
           endClassConstructor(get, get, (, :, })
         endMember()
-      endClassOrMixinBody(DeclarationKind.Class, 4, {, })
+      endClassOrMixinOrExtensionBody(DeclarationKind.Class, 4, {, })
     endClassDeclaration(class, })
   endTopLevelDeclaration()
 endCompilationUnit(1, )
diff --git a/pkg/front_end/parser_testcases/error_recovery/constructor_recovery_get.dart.intertwined.expect b/pkg/front_end/parser_testcases/error_recovery/constructor_recovery_get.dart.intertwined.expect
index 2b05409..75d8a2f0 100644
--- a/pkg/front_end/parser_testcases/error_recovery/constructor_recovery_get.dart.intertwined.expect
+++ b/pkg/front_end/parser_testcases/error_recovery/constructor_recovery_get.dart.intertwined.expect
@@ -9,7 +9,7 @@
     parseTopLevelKeywordDeclaration(, class, Instance of 'DirectiveContext')
       parseClassDeclarationModifiers(, class)
       parseClassOrNamedMixinApplication(null, class)
-        listener: beginClassOrNamedMixinApplicationPrelude(class)
+        listener: beginClassOrMixinOrNamedMixinApplicationPrelude(class)
         ensureIdentifier(class, classOrMixinDeclaration)
           listener: handleIdentifier(Foo, classOrMixinDeclaration)
         listener: handleNoTypeVariables({)
@@ -25,7 +25,7 @@
               listener: handleClassOrMixinImplements(null, 0)
             listener: handleClassHeader(class, class, null)
           parseClassOrMixinOrExtensionBody(Foo, DeclarationKind.Class, Foo)
-            listener: beginClassOrMixinBody(DeclarationKind.Class, {)
+            listener: beginClassOrMixinOrExtensionBody(DeclarationKind.Class, {)
             notEofOrValue(}, get)
             parseClassOrMixinOrExtensionMemberImpl({, DeclarationKind.Class, Foo)
               parseMetadataStar({)
@@ -33,7 +33,7 @@
                 listener: endMetadataStar(0)
               listener: beginMember()
               parseMethod({, null, null, null, null, null, null, {, Instance of 'NoType', get, Foo, DeclarationKind.Class, Foo, false)
-                listener: beginMethod(null, null, null, null, get, Foo)
+                listener: beginMethod(DeclarationKind.Class, null, null, null, null, get, Foo)
                 listener: handleNoType({)
                 ensureIdentifierPotentiallyRecovered(get, methodDeclaration, false)
                   listener: handleIdentifier(Foo, methodDeclaration)
@@ -68,7 +68,7 @@
                 listener: endMetadataStar(0)
               listener: beginMember()
               parseMethod(}, null, null, null, null, null, null, }, Instance of 'NoType', get, Foo, DeclarationKind.Class, Foo, false)
-                listener: beginMethod(null, null, null, null, get, Foo)
+                listener: beginMethod(DeclarationKind.Class, null, null, null, null, get, Foo)
                 listener: handleNoType(})
                 ensureIdentifierPotentiallyRecovered(get, methodDeclaration, false)
                   listener: handleIdentifier(Foo, methodDeclaration)
@@ -128,7 +128,7 @@
                 listener: endMetadataStar(0)
               listener: beginMember()
               parseMethod(}, null, null, null, null, null, null, }, Instance of 'NoType', get, Foo, DeclarationKind.Class, Foo, false)
-                listener: beginMethod(null, null, null, null, get, Foo)
+                listener: beginMethod(DeclarationKind.Class, null, null, null, null, get, Foo)
                 listener: handleNoType(})
                 ensureIdentifierPotentiallyRecovered(get, methodDeclaration, false)
                   listener: handleIdentifier(Foo, methodDeclaration)
@@ -165,7 +165,7 @@
                 listener: endMetadataStar(0)
               listener: beginMember()
               parseMethod(}, null, null, null, null, null, null, }, Instance of 'NoType', get, Foo, DeclarationKind.Class, Foo, false)
-                listener: beginMethod(null, null, null, null, get, Foo)
+                listener: beginMethod(DeclarationKind.Class, null, null, null, null, get, Foo)
                 listener: handleNoType(})
                 ensureIdentifierPotentiallyRecovered(get, methodDeclaration, false)
                   listener: handleIdentifier(Foo, methodDeclaration)
@@ -221,7 +221,7 @@
                 listener: endClassConstructor(get, get, (, :, })
               listener: endMember()
             notEofOrValue(}, })
-            listener: endClassOrMixinBody(DeclarationKind.Class, 4, {, })
+            listener: endClassOrMixinOrExtensionBody(DeclarationKind.Class, 4, {, })
           listener: endClassDeclaration(class, })
   listener: endTopLevelDeclaration()
   reportAllErrorTokens(class)
diff --git a/pkg/front_end/parser_testcases/error_recovery/constructor_recovery_ok.dart.expect b/pkg/front_end/parser_testcases/error_recovery/constructor_recovery_ok.dart.expect
index 003aeba..750f16f 100644
--- a/pkg/front_end/parser_testcases/error_recovery/constructor_recovery_ok.dart.expect
+++ b/pkg/front_end/parser_testcases/error_recovery/constructor_recovery_ok.dart.expect
@@ -1,7 +1,7 @@
 beginCompilationUnit(class)
   beginMetadataStar(class)
   endMetadataStar(0)
-  beginClassOrNamedMixinApplicationPrelude(class)
+  beginClassOrMixinOrNamedMixinApplicationPrelude(class)
     handleIdentifier(Foo, classOrMixinDeclaration)
     handleNoTypeVariables({)
     beginClassDeclaration(class, null, Foo)
@@ -10,11 +10,11 @@
       handleClassNoWithClause()
       handleClassOrMixinImplements(null, 0)
       handleClassHeader(class, class, null)
-      beginClassOrMixinBody(DeclarationKind.Class, {)
+      beginClassOrMixinOrExtensionBody(DeclarationKind.Class, {)
         beginMetadataStar(Foo)
         endMetadataStar(0)
         beginMember()
-          beginMethod(null, null, null, null, null, Foo)
+          beginMethod(DeclarationKind.Class, null, null, null, null, null, Foo)
             handleNoType({)
             handleIdentifier(Foo, methodDeclaration)
             handleNoTypeVariables(()
@@ -29,7 +29,7 @@
         beginMetadataStar(Foo)
         endMetadataStar(0)
         beginMember()
-          beginMethod(null, null, null, null, null, Foo)
+          beginMethod(DeclarationKind.Class, null, null, null, null, null, Foo)
             handleNoType(})
             handleIdentifier(Foo, methodDeclaration)
             handleNoTypeVariables(()
@@ -53,7 +53,7 @@
         beginMetadataStar(Foo)
         endMetadataStar(0)
         beginMember()
-          beginMethod(null, null, null, null, null, Foo)
+          beginMethod(DeclarationKind.Class, null, null, null, null, null, Foo)
             handleNoType(})
             handleIdentifier(Foo, methodDeclaration)
             handleIdentifier(x, methodDeclarationContinuation)
@@ -70,7 +70,7 @@
         beginMetadataStar(Foo)
         endMetadataStar(0)
         beginMember()
-          beginMethod(null, null, null, null, null, Foo)
+          beginMethod(DeclarationKind.Class, null, null, null, null, null, Foo)
             handleNoType(})
             handleIdentifier(Foo, methodDeclaration)
             handleIdentifier(x, methodDeclarationContinuation)
@@ -93,7 +93,7 @@
             endBlockFunctionBody(0, {, })
           endClassConstructor(null, Foo, (, :, })
         endMember()
-      endClassOrMixinBody(DeclarationKind.Class, 4, {, })
+      endClassOrMixinOrExtensionBody(DeclarationKind.Class, 4, {, })
     endClassDeclaration(class, })
   endTopLevelDeclaration()
 endCompilationUnit(1, )
diff --git a/pkg/front_end/parser_testcases/error_recovery/constructor_recovery_ok.dart.intertwined.expect b/pkg/front_end/parser_testcases/error_recovery/constructor_recovery_ok.dart.intertwined.expect
index 9a4c31d..9286fc8 100644
--- a/pkg/front_end/parser_testcases/error_recovery/constructor_recovery_ok.dart.intertwined.expect
+++ b/pkg/front_end/parser_testcases/error_recovery/constructor_recovery_ok.dart.intertwined.expect
@@ -9,7 +9,7 @@
     parseTopLevelKeywordDeclaration(, class, Instance of 'DirectiveContext')
       parseClassDeclarationModifiers(, class)
       parseClassOrNamedMixinApplication(null, class)
-        listener: beginClassOrNamedMixinApplicationPrelude(class)
+        listener: beginClassOrMixinOrNamedMixinApplicationPrelude(class)
         ensureIdentifier(class, classOrMixinDeclaration)
           listener: handleIdentifier(Foo, classOrMixinDeclaration)
         listener: handleNoTypeVariables({)
@@ -25,7 +25,7 @@
               listener: handleClassOrMixinImplements(null, 0)
             listener: handleClassHeader(class, class, null)
           parseClassOrMixinOrExtensionBody(Foo, DeclarationKind.Class, Foo)
-            listener: beginClassOrMixinBody(DeclarationKind.Class, {)
+            listener: beginClassOrMixinOrExtensionBody(DeclarationKind.Class, {)
             notEofOrValue(}, Foo)
             parseClassOrMixinOrExtensionMemberImpl({, DeclarationKind.Class, Foo)
               parseMetadataStar({)
@@ -34,7 +34,7 @@
               listener: beginMember()
               isReservedKeyword(()
               parseMethod({, null, null, null, null, null, null, {, Instance of 'NoType', null, Foo, DeclarationKind.Class, Foo, false)
-                listener: beginMethod(null, null, null, null, null, Foo)
+                listener: beginMethod(DeclarationKind.Class, null, null, null, null, null, Foo)
                 listener: handleNoType({)
                 ensureIdentifierPotentiallyRecovered({, methodDeclaration, false)
                   listener: handleIdentifier(Foo, methodDeclaration)
@@ -66,7 +66,7 @@
               listener: beginMember()
               isReservedKeyword(()
               parseMethod(}, null, null, null, null, null, null, }, Instance of 'NoType', null, Foo, DeclarationKind.Class, Foo, false)
-                listener: beginMethod(null, null, null, null, null, Foo)
+                listener: beginMethod(DeclarationKind.Class, null, null, null, null, null, Foo)
                 listener: handleNoType(})
                 ensureIdentifierPotentiallyRecovered(}, methodDeclaration, false)
                   listener: handleIdentifier(Foo, methodDeclaration)
@@ -123,7 +123,7 @@
               listener: beginMember()
               isReservedKeyword(.)
               parseMethod(}, null, null, null, null, null, null, }, Instance of 'NoType', null, Foo, DeclarationKind.Class, Foo, false)
-                listener: beginMethod(null, null, null, null, null, Foo)
+                listener: beginMethod(DeclarationKind.Class, null, null, null, null, null, Foo)
                 listener: handleNoType(})
                 ensureIdentifierPotentiallyRecovered(}, methodDeclaration, false)
                   listener: handleIdentifier(Foo, methodDeclaration)
@@ -159,7 +159,7 @@
               listener: beginMember()
               isReservedKeyword(.)
               parseMethod(}, null, null, null, null, null, null, }, Instance of 'NoType', null, Foo, DeclarationKind.Class, Foo, false)
-                listener: beginMethod(null, null, null, null, null, Foo)
+                listener: beginMethod(DeclarationKind.Class, null, null, null, null, null, Foo)
                 listener: handleNoType(})
                 ensureIdentifierPotentiallyRecovered(}, methodDeclaration, false)
                   listener: handleIdentifier(Foo, methodDeclaration)
@@ -213,7 +213,7 @@
                 listener: endClassConstructor(null, Foo, (, :, })
               listener: endMember()
             notEofOrValue(}, })
-            listener: endClassOrMixinBody(DeclarationKind.Class, 4, {, })
+            listener: endClassOrMixinOrExtensionBody(DeclarationKind.Class, 4, {, })
           listener: endClassDeclaration(class, })
   listener: endTopLevelDeclaration()
   reportAllErrorTokens(class)
diff --git a/pkg/front_end/parser_testcases/error_recovery/constructor_recovery_operator.crash_dart.expect b/pkg/front_end/parser_testcases/error_recovery/constructor_recovery_operator.crash_dart.expect
index 4a792a7..5e8a7be 100644
--- a/pkg/front_end/parser_testcases/error_recovery/constructor_recovery_operator.crash_dart.expect
+++ b/pkg/front_end/parser_testcases/error_recovery/constructor_recovery_operator.crash_dart.expect
@@ -75,7 +75,7 @@
 beginCompilationUnit(class)
   beginMetadataStar(class)
   endMetadataStar(0)
-  beginClassOrNamedMixinApplicationPrelude(class)
+  beginClassOrMixinOrNamedMixinApplicationPrelude(class)
     handleIdentifier(Foo, classOrMixinDeclaration)
     handleNoTypeVariables({)
     beginClassDeclaration(class, null, Foo)
@@ -84,11 +84,11 @@
       handleClassNoWithClause()
       handleClassOrMixinImplements(null, 0)
       handleClassHeader(class, class, null)
-      beginClassOrMixinBody(DeclarationKind.Class, {)
+      beginClassOrMixinOrExtensionBody(DeclarationKind.Class, {)
         beginMetadataStar(Foo)
         endMetadataStar(0)
         beginMember()
-          beginMethod(null, null, null, null, null, Foo)
+          beginMethod(DeclarationKind.Class, null, null, null, null, null, Foo)
             handleNoType({)
             handleIdentifier(Foo, methodDeclaration)
             handleNoTypeVariables(()
@@ -104,7 +104,7 @@
         endMetadataStar(0)
         beginMember()
           handleRecoverableError(MissingOperatorKeyword, /, /)
-          beginMethod(null, null, null, null, null, operator)
+          beginMethod(DeclarationKind.Class, null, null, null, null, null, operator)
             handleNoType(})
             handleOperatorName(operator, /)
             handleNoTypeVariables(:)
@@ -129,7 +129,7 @@
         beginMetadataStar(Foo)
         endMetadataStar(0)
         beginMember()
-          beginMethod(null, null, null, null, null, Foo)
+          beginMethod(DeclarationKind.Class, null, null, null, null, null, Foo)
             handleNoType(})
             handleIdentifier(Foo, methodDeclaration)
             handleNoTypeVariables(()
@@ -151,7 +151,7 @@
         endMetadataStar(0)
         beginMember()
           handleRecoverableError(MissingOperatorKeyword, /, /)
-          beginMethod(null, null, null, null, null, operator)
+          beginMethod(DeclarationKind.Class, null, null, null, null, null, operator)
             handleNoType(.)
             handleOperatorName(operator, /)
             handleNoTypeVariables(:)
@@ -176,7 +176,7 @@
         beginMetadataStar(foo)
         endMetadataStar(0)
         beginMember()
-          beginMethod(null, null, null, null, null, foo)
+          beginMethod(DeclarationKind.Class, null, null, null, null, null, foo)
             handleNoType(})
             handleIdentifier(foo, methodDeclaration)
             handleNoTypeVariables(()
@@ -192,7 +192,7 @@
         endMetadataStar(0)
         beginMember()
           handleRecoverableError(MissingOperatorKeyword, /, /)
-          beginMethod(null, null, null, null, null, operator)
+          beginMethod(DeclarationKind.Class, null, null, null, null, null, operator)
             handleNoType(})
             handleOperatorName(operator, /)
             handleNoTypeVariables(:)
@@ -217,7 +217,7 @@
         beginMetadataStar(foo)
         endMetadataStar(0)
         beginMember()
-          beginMethod(null, null, null, null, null, foo)
+          beginMethod(DeclarationKind.Class, null, null, null, null, null, foo)
             handleNoType(})
             handleIdentifier(foo, methodDeclaration)
             handleNoTypeVariables(()
@@ -239,7 +239,7 @@
         endMetadataStar(0)
         beginMember()
           handleRecoverableError(MissingOperatorKeyword, /, /)
-          beginMethod(null, null, null, null, null, operator)
+          beginMethod(DeclarationKind.Class, null, null, null, null, null, operator)
             handleNoType(.)
             handleOperatorName(operator, /)
             handleNoTypeVariables(:)
@@ -261,7 +261,7 @@
             handleRecoverableError(ConstructorWithWrongName, /, /)
           endClassConstructor(null, operator, (, :, })
         endMember()
-      endClassOrMixinBody(DeclarationKind.Class, 10, {, })
+      endClassOrMixinOrExtensionBody(DeclarationKind.Class, 10, {, })
     endClassDeclaration(class, })
   endTopLevelDeclaration()
 endCompilationUnit(1, )
diff --git a/pkg/front_end/parser_testcases/error_recovery/constructor_recovery_operator.crash_dart.intertwined.expect b/pkg/front_end/parser_testcases/error_recovery/constructor_recovery_operator.crash_dart.intertwined.expect
index 3c1d1d2..968b712 100644
--- a/pkg/front_end/parser_testcases/error_recovery/constructor_recovery_operator.crash_dart.intertwined.expect
+++ b/pkg/front_end/parser_testcases/error_recovery/constructor_recovery_operator.crash_dart.intertwined.expect
@@ -9,7 +9,7 @@
     parseTopLevelKeywordDeclaration(, class, Instance of 'DirectiveContext')
       parseClassDeclarationModifiers(, class)
       parseClassOrNamedMixinApplication(null, class)
-        listener: beginClassOrNamedMixinApplicationPrelude(class)
+        listener: beginClassOrMixinOrNamedMixinApplicationPrelude(class)
         ensureIdentifier(class, classOrMixinDeclaration)
           listener: handleIdentifier(Foo, classOrMixinDeclaration)
         listener: handleNoTypeVariables({)
@@ -25,7 +25,7 @@
               listener: handleClassOrMixinImplements(null, 0)
             listener: handleClassHeader(class, class, null)
           parseClassOrMixinOrExtensionBody(Foo, DeclarationKind.Class, Foo)
-            listener: beginClassOrMixinBody(DeclarationKind.Class, {)
+            listener: beginClassOrMixinOrExtensionBody(DeclarationKind.Class, {)
             notEofOrValue(}, Foo)
             parseClassOrMixinOrExtensionMemberImpl({, DeclarationKind.Class, Foo)
               parseMetadataStar({)
@@ -34,7 +34,7 @@
               listener: beginMember()
               isReservedKeyword(()
               parseMethod({, null, null, null, null, null, null, {, Instance of 'NoType', null, Foo, DeclarationKind.Class, Foo, false)
-                listener: beginMethod(null, null, null, null, null, Foo)
+                listener: beginMethod(DeclarationKind.Class, null, null, null, null, null, Foo)
                 listener: handleNoType({)
                 ensureIdentifierPotentiallyRecovered({, methodDeclaration, false)
                   listener: handleIdentifier(Foo, methodDeclaration)
@@ -74,7 +74,7 @@
                     listener: handleRecoverableError(MissingOperatorKeyword, /, /)
                   rewriter()
                   parseMethod(}, null, null, null, null, null, null, }, Instance of 'NoType', null, operator, DeclarationKind.Class, Foo, false)
-                    listener: beginMethod(null, null, null, null, null, operator)
+                    listener: beginMethod(DeclarationKind.Class, null, null, null, null, null, operator)
                     listener: handleNoType(})
                     parseOperatorName(})
                       listener: handleOperatorName(operator, /)
@@ -129,7 +129,7 @@
               listener: beginMember()
               isReservedKeyword(()
               parseMethod(}, null, null, null, null, null, null, }, Instance of 'NoType', null, Foo, DeclarationKind.Class, Foo, false)
-                listener: beginMethod(null, null, null, null, null, Foo)
+                listener: beginMethod(DeclarationKind.Class, null, null, null, null, null, Foo)
                 listener: handleNoType(})
                 ensureIdentifierPotentiallyRecovered(}, methodDeclaration, false)
                   listener: handleIdentifier(Foo, methodDeclaration)
@@ -180,7 +180,7 @@
                     listener: handleRecoverableError(MissingOperatorKeyword, /, /)
                   rewriter()
                   parseMethod(., null, null, null, null, null, null, ., Instance of 'NoType', null, operator, DeclarationKind.Class, Foo, false)
-                    listener: beginMethod(null, null, null, null, null, operator)
+                    listener: beginMethod(DeclarationKind.Class, null, null, null, null, null, operator)
                     listener: handleNoType(.)
                     parseOperatorName(.)
                       listener: handleOperatorName(operator, /)
@@ -235,7 +235,7 @@
               listener: beginMember()
               isReservedKeyword(()
               parseMethod(}, null, null, null, null, null, null, }, Instance of 'NoType', null, foo, DeclarationKind.Class, Foo, false)
-                listener: beginMethod(null, null, null, null, null, foo)
+                listener: beginMethod(DeclarationKind.Class, null, null, null, null, null, foo)
                 listener: handleNoType(})
                 ensureIdentifierPotentiallyRecovered(}, methodDeclaration, false)
                   listener: handleIdentifier(foo, methodDeclaration)
@@ -275,7 +275,7 @@
                     listener: handleRecoverableError(MissingOperatorKeyword, /, /)
                   rewriter()
                   parseMethod(}, null, null, null, null, null, null, }, Instance of 'NoType', null, operator, DeclarationKind.Class, Foo, false)
-                    listener: beginMethod(null, null, null, null, null, operator)
+                    listener: beginMethod(DeclarationKind.Class, null, null, null, null, null, operator)
                     listener: handleNoType(})
                     parseOperatorName(})
                       listener: handleOperatorName(operator, /)
@@ -330,7 +330,7 @@
               listener: beginMember()
               isReservedKeyword(()
               parseMethod(}, null, null, null, null, null, null, }, Instance of 'NoType', null, foo, DeclarationKind.Class, Foo, false)
-                listener: beginMethod(null, null, null, null, null, foo)
+                listener: beginMethod(DeclarationKind.Class, null, null, null, null, null, foo)
                 listener: handleNoType(})
                 ensureIdentifierPotentiallyRecovered(}, methodDeclaration, false)
                   listener: handleIdentifier(foo, methodDeclaration)
@@ -381,7 +381,7 @@
                     listener: handleRecoverableError(MissingOperatorKeyword, /, /)
                   rewriter()
                   parseMethod(., null, null, null, null, null, null, ., Instance of 'NoType', null, operator, DeclarationKind.Class, Foo, false)
-                    listener: beginMethod(null, null, null, null, null, operator)
+                    listener: beginMethod(DeclarationKind.Class, null, null, null, null, null, operator)
                     listener: handleNoType(.)
                     parseOperatorName(.)
                       listener: handleOperatorName(operator, /)
@@ -429,7 +429,7 @@
                     listener: endClassConstructor(null, operator, (, :, })
                   listener: endMember()
             notEofOrValue(}, })
-            listener: endClassOrMixinBody(DeclarationKind.Class, 10, {, })
+            listener: endClassOrMixinOrExtensionBody(DeclarationKind.Class, 10, {, })
           listener: endClassDeclaration(class, })
   listener: endTopLevelDeclaration()
   reportAllErrorTokens(class)
diff --git a/pkg/front_end/parser_testcases/error_recovery/constructor_recovery_return_type.dart.expect b/pkg/front_end/parser_testcases/error_recovery/constructor_recovery_return_type.dart.expect
index 3bcea14..9e97581 100644
--- a/pkg/front_end/parser_testcases/error_recovery/constructor_recovery_return_type.dart.expect
+++ b/pkg/front_end/parser_testcases/error_recovery/constructor_recovery_return_type.dart.expect
@@ -19,7 +19,7 @@
 beginCompilationUnit(class)
   beginMetadataStar(class)
   endMetadataStar(0)
-  beginClassOrNamedMixinApplicationPrelude(class)
+  beginClassOrMixinOrNamedMixinApplicationPrelude(class)
     handleIdentifier(Foo, classOrMixinDeclaration)
     handleNoTypeVariables({)
     beginClassDeclaration(class, null, Foo)
@@ -28,11 +28,11 @@
       handleClassNoWithClause()
       handleClassOrMixinImplements(null, 0)
       handleClassHeader(class, class, null)
-      beginClassOrMixinBody(DeclarationKind.Class, {)
+      beginClassOrMixinOrExtensionBody(DeclarationKind.Class, {)
         beginMetadataStar(void)
         endMetadataStar(0)
         beginMember()
-          beginMethod(null, null, null, null, null, Foo)
+          beginMethod(DeclarationKind.Class, null, null, null, null, null, Foo)
             handleVoidKeyword(void)
             handleIdentifier(Foo, methodDeclaration)
             handleNoTypeVariables(()
@@ -48,7 +48,7 @@
         beginMetadataStar(void)
         endMetadataStar(0)
         beginMember()
-          beginMethod(null, null, null, null, null, Foo)
+          beginMethod(DeclarationKind.Class, null, null, null, null, null, Foo)
             handleVoidKeyword(void)
             handleIdentifier(Foo, methodDeclaration)
             handleNoTypeVariables(()
@@ -73,7 +73,7 @@
         beginMetadataStar(void)
         endMetadataStar(0)
         beginMember()
-          beginMethod(null, null, null, null, null, Foo)
+          beginMethod(DeclarationKind.Class, null, null, null, null, null, Foo)
             handleVoidKeyword(void)
             handleIdentifier(Foo, methodDeclaration)
             handleIdentifier(x, methodDeclarationContinuation)
@@ -91,7 +91,7 @@
         beginMetadataStar(void)
         endMetadataStar(0)
         beginMember()
-          beginMethod(null, null, null, null, null, Foo)
+          beginMethod(DeclarationKind.Class, null, null, null, null, null, Foo)
             handleVoidKeyword(void)
             handleIdentifier(Foo, methodDeclaration)
             handleIdentifier(x, methodDeclarationContinuation)
@@ -115,7 +115,7 @@
             handleRecoverableError(ConstructorWithReturnType, void, void)
           endClassConstructor(null, void, (, :, })
         endMember()
-      endClassOrMixinBody(DeclarationKind.Class, 4, {, })
+      endClassOrMixinOrExtensionBody(DeclarationKind.Class, 4, {, })
     endClassDeclaration(class, })
   endTopLevelDeclaration()
 endCompilationUnit(1, )
diff --git a/pkg/front_end/parser_testcases/error_recovery/constructor_recovery_return_type.dart.intertwined.expect b/pkg/front_end/parser_testcases/error_recovery/constructor_recovery_return_type.dart.intertwined.expect
index eff668e..37469fb 100644
--- a/pkg/front_end/parser_testcases/error_recovery/constructor_recovery_return_type.dart.intertwined.expect
+++ b/pkg/front_end/parser_testcases/error_recovery/constructor_recovery_return_type.dart.intertwined.expect
@@ -9,7 +9,7 @@
     parseTopLevelKeywordDeclaration(, class, Instance of 'DirectiveContext')
       parseClassDeclarationModifiers(, class)
       parseClassOrNamedMixinApplication(null, class)
-        listener: beginClassOrNamedMixinApplicationPrelude(class)
+        listener: beginClassOrMixinOrNamedMixinApplicationPrelude(class)
         ensureIdentifier(class, classOrMixinDeclaration)
           listener: handleIdentifier(Foo, classOrMixinDeclaration)
         listener: handleNoTypeVariables({)
@@ -25,7 +25,7 @@
               listener: handleClassOrMixinImplements(null, 0)
             listener: handleClassHeader(class, class, null)
           parseClassOrMixinOrExtensionBody(Foo, DeclarationKind.Class, Foo)
-            listener: beginClassOrMixinBody(DeclarationKind.Class, {)
+            listener: beginClassOrMixinOrExtensionBody(DeclarationKind.Class, {)
             notEofOrValue(}, void)
             parseClassOrMixinOrExtensionMemberImpl({, DeclarationKind.Class, Foo)
               parseMetadataStar({)
@@ -33,7 +33,7 @@
                 listener: endMetadataStar(0)
               listener: beginMember()
               parseMethod({, null, null, null, null, null, null, {, Instance of 'VoidType', null, Foo, DeclarationKind.Class, Foo, false)
-                listener: beginMethod(null, null, null, null, null, Foo)
+                listener: beginMethod(DeclarationKind.Class, null, null, null, null, null, Foo)
                 listener: handleVoidKeyword(void)
                 ensureIdentifierPotentiallyRecovered(void, methodDeclaration, false)
                   listener: handleIdentifier(Foo, methodDeclaration)
@@ -66,7 +66,7 @@
                 listener: endMetadataStar(0)
               listener: beginMember()
               parseMethod(}, null, null, null, null, null, null, }, Instance of 'VoidType', null, Foo, DeclarationKind.Class, Foo, false)
-                listener: beginMethod(null, null, null, null, null, Foo)
+                listener: beginMethod(DeclarationKind.Class, null, null, null, null, null, Foo)
                 listener: handleVoidKeyword(void)
                 ensureIdentifierPotentiallyRecovered(void, methodDeclaration, false)
                   listener: handleIdentifier(Foo, methodDeclaration)
@@ -124,7 +124,7 @@
                 listener: endMetadataStar(0)
               listener: beginMember()
               parseMethod(}, null, null, null, null, null, null, }, Instance of 'VoidType', null, Foo, DeclarationKind.Class, Foo, false)
-                listener: beginMethod(null, null, null, null, null, Foo)
+                listener: beginMethod(DeclarationKind.Class, null, null, null, null, null, Foo)
                 listener: handleVoidKeyword(void)
                 ensureIdentifierPotentiallyRecovered(void, methodDeclaration, false)
                   listener: handleIdentifier(Foo, methodDeclaration)
@@ -161,7 +161,7 @@
                 listener: endMetadataStar(0)
               listener: beginMember()
               parseMethod(}, null, null, null, null, null, null, }, Instance of 'VoidType', null, Foo, DeclarationKind.Class, Foo, false)
-                listener: beginMethod(null, null, null, null, null, Foo)
+                listener: beginMethod(DeclarationKind.Class, null, null, null, null, null, Foo)
                 listener: handleVoidKeyword(void)
                 ensureIdentifierPotentiallyRecovered(void, methodDeclaration, false)
                   listener: handleIdentifier(Foo, methodDeclaration)
@@ -217,7 +217,7 @@
                 listener: endClassConstructor(null, void, (, :, })
               listener: endMember()
             notEofOrValue(}, })
-            listener: endClassOrMixinBody(DeclarationKind.Class, 4, {, })
+            listener: endClassOrMixinOrExtensionBody(DeclarationKind.Class, 4, {, })
           listener: endClassDeclaration(class, })
   listener: endTopLevelDeclaration()
   reportAllErrorTokens(class)
diff --git a/pkg/front_end/parser_testcases/error_recovery/constructor_recovery_set.dart.expect b/pkg/front_end/parser_testcases/error_recovery/constructor_recovery_set.dart.expect
index 3219c73..927d34c 100644
--- a/pkg/front_end/parser_testcases/error_recovery/constructor_recovery_set.dart.expect
+++ b/pkg/front_end/parser_testcases/error_recovery/constructor_recovery_set.dart.expect
@@ -19,7 +19,7 @@
 beginCompilationUnit(class)
   beginMetadataStar(class)
   endMetadataStar(0)
-  beginClassOrNamedMixinApplicationPrelude(class)
+  beginClassOrMixinOrNamedMixinApplicationPrelude(class)
     handleIdentifier(Foo, classOrMixinDeclaration)
     handleNoTypeVariables({)
     beginClassDeclaration(class, null, Foo)
@@ -28,11 +28,11 @@
       handleClassNoWithClause()
       handleClassOrMixinImplements(null, 0)
       handleClassHeader(class, class, null)
-      beginClassOrMixinBody(DeclarationKind.Class, {)
+      beginClassOrMixinOrExtensionBody(DeclarationKind.Class, {)
         beginMetadataStar(set)
         endMetadataStar(0)
         beginMember()
-          beginMethod(null, null, null, null, set, Foo)
+          beginMethod(DeclarationKind.Class, null, null, null, null, set, Foo)
             handleNoType({)
             handleIdentifier(Foo, methodDeclaration)
             handleNoTypeVariables(()
@@ -48,7 +48,7 @@
         beginMetadataStar(set)
         endMetadataStar(0)
         beginMember()
-          beginMethod(null, null, null, null, set, Foo)
+          beginMethod(DeclarationKind.Class, null, null, null, null, set, Foo)
             handleNoType(})
             handleIdentifier(Foo, methodDeclaration)
             handleNoTypeVariables(()
@@ -73,7 +73,7 @@
         beginMetadataStar(set)
         endMetadataStar(0)
         beginMember()
-          beginMethod(null, null, null, null, set, Foo)
+          beginMethod(DeclarationKind.Class, null, null, null, null, set, Foo)
             handleNoType(})
             handleIdentifier(Foo, methodDeclaration)
             handleIdentifier(x, methodDeclarationContinuation)
@@ -91,7 +91,7 @@
         beginMetadataStar(set)
         endMetadataStar(0)
         beginMember()
-          beginMethod(null, null, null, null, set, Foo)
+          beginMethod(DeclarationKind.Class, null, null, null, null, set, Foo)
             handleNoType(})
             handleIdentifier(Foo, methodDeclaration)
             handleIdentifier(x, methodDeclarationContinuation)
@@ -115,7 +115,7 @@
             handleRecoverableError(SetterConstructor, set, set)
           endClassConstructor(set, set, (, :, })
         endMember()
-      endClassOrMixinBody(DeclarationKind.Class, 4, {, })
+      endClassOrMixinOrExtensionBody(DeclarationKind.Class, 4, {, })
     endClassDeclaration(class, })
   endTopLevelDeclaration()
 endCompilationUnit(1, )
diff --git a/pkg/front_end/parser_testcases/error_recovery/constructor_recovery_set.dart.intertwined.expect b/pkg/front_end/parser_testcases/error_recovery/constructor_recovery_set.dart.intertwined.expect
index b32f3d4..716dcfc 100644
--- a/pkg/front_end/parser_testcases/error_recovery/constructor_recovery_set.dart.intertwined.expect
+++ b/pkg/front_end/parser_testcases/error_recovery/constructor_recovery_set.dart.intertwined.expect
@@ -9,7 +9,7 @@
     parseTopLevelKeywordDeclaration(, class, Instance of 'DirectiveContext')
       parseClassDeclarationModifiers(, class)
       parseClassOrNamedMixinApplication(null, class)
-        listener: beginClassOrNamedMixinApplicationPrelude(class)
+        listener: beginClassOrMixinOrNamedMixinApplicationPrelude(class)
         ensureIdentifier(class, classOrMixinDeclaration)
           listener: handleIdentifier(Foo, classOrMixinDeclaration)
         listener: handleNoTypeVariables({)
@@ -25,7 +25,7 @@
               listener: handleClassOrMixinImplements(null, 0)
             listener: handleClassHeader(class, class, null)
           parseClassOrMixinOrExtensionBody(Foo, DeclarationKind.Class, Foo)
-            listener: beginClassOrMixinBody(DeclarationKind.Class, {)
+            listener: beginClassOrMixinOrExtensionBody(DeclarationKind.Class, {)
             notEofOrValue(}, set)
             parseClassOrMixinOrExtensionMemberImpl({, DeclarationKind.Class, Foo)
               parseMetadataStar({)
@@ -33,7 +33,7 @@
                 listener: endMetadataStar(0)
               listener: beginMember()
               parseMethod({, null, null, null, null, null, null, {, Instance of 'NoType', set, Foo, DeclarationKind.Class, Foo, false)
-                listener: beginMethod(null, null, null, null, set, Foo)
+                listener: beginMethod(DeclarationKind.Class, null, null, null, null, set, Foo)
                 listener: handleNoType({)
                 ensureIdentifierPotentiallyRecovered(set, methodDeclaration, false)
                   listener: handleIdentifier(Foo, methodDeclaration)
@@ -66,7 +66,7 @@
                 listener: endMetadataStar(0)
               listener: beginMember()
               parseMethod(}, null, null, null, null, null, null, }, Instance of 'NoType', set, Foo, DeclarationKind.Class, Foo, false)
-                listener: beginMethod(null, null, null, null, set, Foo)
+                listener: beginMethod(DeclarationKind.Class, null, null, null, null, set, Foo)
                 listener: handleNoType(})
                 ensureIdentifierPotentiallyRecovered(set, methodDeclaration, false)
                   listener: handleIdentifier(Foo, methodDeclaration)
@@ -124,7 +124,7 @@
                 listener: endMetadataStar(0)
               listener: beginMember()
               parseMethod(}, null, null, null, null, null, null, }, Instance of 'NoType', set, Foo, DeclarationKind.Class, Foo, false)
-                listener: beginMethod(null, null, null, null, set, Foo)
+                listener: beginMethod(DeclarationKind.Class, null, null, null, null, set, Foo)
                 listener: handleNoType(})
                 ensureIdentifierPotentiallyRecovered(set, methodDeclaration, false)
                   listener: handleIdentifier(Foo, methodDeclaration)
@@ -161,7 +161,7 @@
                 listener: endMetadataStar(0)
               listener: beginMember()
               parseMethod(}, null, null, null, null, null, null, }, Instance of 'NoType', set, Foo, DeclarationKind.Class, Foo, false)
-                listener: beginMethod(null, null, null, null, set, Foo)
+                listener: beginMethod(DeclarationKind.Class, null, null, null, null, set, Foo)
                 listener: handleNoType(})
                 ensureIdentifierPotentiallyRecovered(set, methodDeclaration, false)
                   listener: handleIdentifier(Foo, methodDeclaration)
@@ -217,7 +217,7 @@
                 listener: endClassConstructor(set, set, (, :, })
               listener: endMember()
             notEofOrValue(}, })
-            listener: endClassOrMixinBody(DeclarationKind.Class, 4, {, })
+            listener: endClassOrMixinOrExtensionBody(DeclarationKind.Class, 4, {, })
           listener: endClassDeclaration(class, })
   listener: endTopLevelDeclaration()
   reportAllErrorTokens(class)
diff --git a/pkg/front_end/parser_testcases/error_recovery/extension_member_contributor_test_completion.dart.expect b/pkg/front_end/parser_testcases/error_recovery/extension_member_contributor_test_completion.dart.expect
index ec1dd0c..faffbc1 100644
--- a/pkg/front_end/parser_testcases/error_recovery/extension_member_contributor_test_completion.dart.expect
+++ b/pkg/front_end/parser_testcases/error_recovery/extension_member_contributor_test_completion.dart.expect
@@ -32,11 +32,11 @@
       endTypeArguments(1, <, >)
       handleType(List, null)
       handleExtensionShowHide(null, 0, null, 0)
-      beginClassOrMixinBody(DeclarationKind.Extension, {)
+      beginClassOrMixinOrExtensionBody(DeclarationKind.Extension, {)
         beginMetadataStar(bool)
         endMetadataStar(0)
         beginMember()
-          beginMethod(null, null, null, null, null, a)
+          beginMethod(DeclarationKind.Extension, null, null, null, null, null, a)
             handleIdentifier(bool, typeReference)
             handleNoTypeArguments(a)
             handleType(bool, null)
@@ -71,7 +71,7 @@
         beginMetadataStar(int)
         endMetadataStar(0)
         beginMember()
-          beginMethod(null, null, null, null, get, b)
+          beginMethod(DeclarationKind.Extension, null, null, null, null, get, b)
             handleIdentifier(int, typeReference)
             handleNoTypeArguments(get)
             handleType(int, null)
@@ -87,7 +87,7 @@
         beginMetadataStar(set)
         endMetadataStar(0)
         beginMember()
-          beginMethod(null, null, null, null, set, c)
+          beginMethod(DeclarationKind.Extension, null, null, null, null, set, c)
             handleNoType(;)
             handleIdentifier(c, methodDeclaration)
             handleNoTypeVariables(()
@@ -108,7 +108,7 @@
             endBlockFunctionBody(0, {, })
           endExtensionMethod(set, set, (, null, })
         endMember()
-      endClassOrMixinBody(DeclarationKind.Extension, 3, {, })
+      endClassOrMixinOrExtensionBody(DeclarationKind.Extension, 3, {, })
     endExtensionDeclaration(extension, null, on, null, null, })
   endTopLevelDeclaration(void)
   beginMetadataStar(void)
diff --git a/pkg/front_end/parser_testcases/error_recovery/extension_member_contributor_test_completion.dart.intertwined.expect b/pkg/front_end/parser_testcases/error_recovery/extension_member_contributor_test_completion.dart.intertwined.expect
index 0244778..c4a5cfd 100644
--- a/pkg/front_end/parser_testcases/error_recovery/extension_member_contributor_test_completion.dart.intertwined.expect
+++ b/pkg/front_end/parser_testcases/error_recovery/extension_member_contributor_test_completion.dart.intertwined.expect
@@ -33,7 +33,7 @@
         listener: handleType(List, null)
         listener: handleExtensionShowHide(null, 0, null, 0)
         parseClassOrMixinOrExtensionBody(>, DeclarationKind.Extension, E)
-          listener: beginClassOrMixinBody(DeclarationKind.Extension, {)
+          listener: beginClassOrMixinOrExtensionBody(DeclarationKind.Extension, {)
           notEofOrValue(}, bool)
           parseClassOrMixinOrExtensionMemberImpl({, DeclarationKind.Extension, E)
             parseMetadataStar({)
@@ -41,7 +41,7 @@
               listener: endMetadataStar(0)
             listener: beginMember()
             parseMethod({, null, null, null, null, null, null, {, Instance of 'SimpleType', null, a, DeclarationKind.Extension, E, false)
-              listener: beginMethod(null, null, null, null, null, a)
+              listener: beginMethod(DeclarationKind.Extension, null, null, null, null, null, a)
               listener: handleIdentifier(bool, typeReference)
               listener: handleNoTypeArguments(a)
               listener: handleType(bool, null)
@@ -98,7 +98,7 @@
               listener: endMetadataStar(0)
             listener: beginMember()
             parseMethod(}, null, null, null, null, null, null, }, Instance of 'SimpleType', get, b, DeclarationKind.Extension, E, false)
-              listener: beginMethod(null, null, null, null, get, b)
+              listener: beginMethod(DeclarationKind.Extension, null, null, null, null, get, b)
               listener: handleIdentifier(int, typeReference)
               listener: handleNoTypeArguments(get)
               listener: handleType(int, null)
@@ -135,7 +135,7 @@
               listener: endMetadataStar(0)
             listener: beginMember()
             parseMethod(;, null, null, null, null, null, null, ;, Instance of 'NoType', set, c, DeclarationKind.Extension, E, false)
-              listener: beginMethod(null, null, null, null, set, c)
+              listener: beginMethod(DeclarationKind.Extension, null, null, null, null, set, c)
               listener: handleNoType(;)
               ensureIdentifierPotentiallyRecovered(set, methodDeclaration, false)
                 listener: handleIdentifier(c, methodDeclaration)
@@ -172,7 +172,7 @@
               listener: endExtensionMethod(set, set, (, null, })
             listener: endMember()
           notEofOrValue(}, })
-          listener: endClassOrMixinBody(DeclarationKind.Extension, 3, {, })
+          listener: endClassOrMixinOrExtensionBody(DeclarationKind.Extension, 3, {, })
         listener: endExtensionDeclaration(extension, null, on, null, null, })
   listener: endTopLevelDeclaration(void)
   parseTopLevelDeclarationImpl(}, Instance of 'DirectiveContext')
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 0136c1d..daa2562 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
@@ -23,7 +23,7 @@
 beginCompilationUnit(class)
   beginMetadataStar(class)
   endMetadataStar(0)
-  beginClassOrNamedMixinApplicationPrelude(class)
+  beginClassOrMixinOrNamedMixinApplicationPrelude(class)
     handleIdentifier(C, classOrMixinDeclaration)
     handleNoTypeVariables({)
     beginClassDeclaration(class, null, C)
@@ -32,11 +32,11 @@
       handleClassNoWithClause()
       handleClassOrMixinImplements(null, 0)
       handleClassHeader(class, class, null)
-      beginClassOrMixinBody(DeclarationKind.Class, {)
+      beginClassOrMixinOrExtensionBody(DeclarationKind.Class, {)
         beginMetadataStar(C)
         endMetadataStar(0)
         beginMember()
-          beginFields({)
+          beginFields(DeclarationKind.Class, null, null, null, null, null, null, {)
             handleIdentifier(C, typeReference)
             beginTypeArguments(<)
               handleRecoverableError(Message[ExpectedType, Expected a type, but got '}'., null, {lexeme: }}], }, })
@@ -51,7 +51,7 @@
             handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], <, <)
           endClassFields(null, null, null, null, null, null, 1, C, ;)
         endMember()
-      endClassOrMixinBody(DeclarationKind.Class, 1, {, })
+      endClassOrMixinOrExtensionBody(DeclarationKind.Class, 1, {, })
     endClassDeclaration(class, })
   endTopLevelDeclaration(main)
   beginMetadataStar(main)
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 2733df1..7fce480 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
@@ -9,7 +9,7 @@
     parseTopLevelKeywordDeclaration(, class, Instance of 'DirectiveContext')
       parseClassDeclarationModifiers(, class)
       parseClassOrNamedMixinApplication(null, class)
-        listener: beginClassOrNamedMixinApplicationPrelude(class)
+        listener: beginClassOrMixinOrNamedMixinApplicationPrelude(class)
         ensureIdentifier(class, classOrMixinDeclaration)
           listener: handleIdentifier(C, classOrMixinDeclaration)
         listener: handleNoTypeVariables({)
@@ -25,7 +25,7 @@
               listener: handleClassOrMixinImplements(null, 0)
             listener: handleClassHeader(class, class, null)
           parseClassOrMixinOrExtensionBody(C, DeclarationKind.Class, C)
-            listener: beginClassOrMixinBody(DeclarationKind.Class, {)
+            listener: beginClassOrMixinOrExtensionBody(DeclarationKind.Class, {)
             notEofOrValue(}, C)
             parseClassOrMixinOrExtensionMemberImpl({, DeclarationKind.Class, C)
               parseMetadataStar({)
@@ -34,7 +34,7 @@
               listener: beginMember()
               recoverFromInvalidMember(>, {, null, null, null, null, null, null, {, Instance of 'ComplexTypeInfo', null, DeclarationKind.Class, C)
                 parseFields({, null, null, null, null, null, null, {, Instance of 'ComplexTypeInfo', }, DeclarationKind.Class, C, false)
-                  listener: beginFields({)
+                  listener: beginFields(DeclarationKind.Class, null, null, null, null, null, null, {)
                   ensureIdentifier({, typeReference)
                     listener: handleIdentifier(C, typeReference)
                   listener: beginTypeArguments(<)
@@ -61,7 +61,7 @@
                   listener: endClassFields(null, null, null, null, null, null, 1, C, ;)
                 listener: endMember()
             notEofOrValue(}, })
-            listener: endClassOrMixinBody(DeclarationKind.Class, 1, {, })
+            listener: endClassOrMixinOrExtensionBody(DeclarationKind.Class, 1, {, })
           listener: endClassDeclaration(class, })
   listener: endTopLevelDeclaration(main)
   parseTopLevelDeclarationImpl(}, Instance of 'DirectiveContext')
diff --git a/pkg/front_end/parser_testcases/error_recovery/issue_22313.dart.expect b/pkg/front_end/parser_testcases/error_recovery/issue_22313.dart.expect
index cf35cb4..40cd176 100644
--- a/pkg/front_end/parser_testcases/error_recovery/issue_22313.dart.expect
+++ b/pkg/front_end/parser_testcases/error_recovery/issue_22313.dart.expect
@@ -23,7 +23,7 @@
 beginCompilationUnit(class)
   beginMetadataStar(class)
   endMetadataStar(0)
-  beginClassOrNamedMixinApplicationPrelude(class)
+  beginClassOrMixinOrNamedMixinApplicationPrelude(class)
     handleIdentifier(A, classOrMixinDeclaration)
     handleNoTypeVariables({)
     beginClassDeclaration(class, null, A)
@@ -32,13 +32,13 @@
       handleClassNoWithClause()
       handleClassOrMixinImplements(null, 0)
       handleClassHeader(class, class, null)
-      beginClassOrMixinBody(DeclarationKind.Class, {)
-      endClassOrMixinBody(DeclarationKind.Class, 0, {, })
+      beginClassOrMixinOrExtensionBody(DeclarationKind.Class, {)
+      endClassOrMixinOrExtensionBody(DeclarationKind.Class, 0, {, })
     endClassDeclaration(class, })
   endTopLevelDeclaration(class)
   beginMetadataStar(class)
   endMetadataStar(0)
-  beginClassOrNamedMixinApplicationPrelude(class)
+  beginClassOrMixinOrNamedMixinApplicationPrelude(class)
     handleIdentifier(B, classOrMixinDeclaration)
     handleNoTypeVariables({)
     beginClassDeclaration(class, null, B)
@@ -47,13 +47,13 @@
       handleClassNoWithClause()
       handleClassOrMixinImplements(null, 0)
       handleClassHeader(class, class, null)
-      beginClassOrMixinBody(DeclarationKind.Class, {)
-      endClassOrMixinBody(DeclarationKind.Class, 0, {, })
+      beginClassOrMixinOrExtensionBody(DeclarationKind.Class, {)
+      endClassOrMixinOrExtensionBody(DeclarationKind.Class, 0, {, })
     endClassDeclaration(class, })
   endTopLevelDeclaration(class)
   beginMetadataStar(class)
   endMetadataStar(0)
-  beginClassOrNamedMixinApplicationPrelude(class)
+  beginClassOrMixinOrNamedMixinApplicationPrelude(class)
     handleIdentifier(Foo, classOrMixinDeclaration)
     handleNoTypeVariables(extends)
     beginClassDeclaration(class, null, Foo)
@@ -68,11 +68,11 @@
       handleClassNoWithClause()
       handleClassOrMixinImplements(null, 0)
       handleClassHeader(class, class, null)
-      beginClassOrMixinBody(DeclarationKind.Class, {)
+      beginClassOrMixinOrExtensionBody(DeclarationKind.Class, {)
         beginMetadataStar(Foo)
         endMetadataStar(0)
         beginMember()
-          beginMethod(null, null, null, null, null, Foo)
+          beginMethod(DeclarationKind.Class, null, null, null, null, null, Foo)
             handleNoType({)
             handleIdentifier(Foo, methodDeclaration)
             handleNoTypeVariables(()
@@ -84,12 +84,12 @@
             endBlockFunctionBody(0, {, })
           endClassConstructor(null, Foo, (, null, })
         endMember()
-      endClassOrMixinBody(DeclarationKind.Class, 1, {, })
+      endClassOrMixinOrExtensionBody(DeclarationKind.Class, 1, {, })
     endClassDeclaration(class, })
   endTopLevelDeclaration(class)
   beginMetadataStar(class)
   endMetadataStar(0)
-  beginClassOrNamedMixinApplicationPrelude(class)
+  beginClassOrMixinOrNamedMixinApplicationPrelude(class)
     handleIdentifier(Bar, classOrMixinDeclaration)
     handleNoTypeVariables(extend)
     beginClassDeclaration(class, null, Bar)
@@ -110,11 +110,11 @@
       handleClassNoWithClause()
       handleClassOrMixinImplements(null, 0)
       handleRecoverClassHeader()
-      beginClassOrMixinBody(DeclarationKind.Class, {)
+      beginClassOrMixinOrExtensionBody(DeclarationKind.Class, {)
         beginMetadataStar(Bar)
         endMetadataStar(0)
         beginMember()
-          beginMethod(null, null, null, null, null, Bar)
+          beginMethod(DeclarationKind.Class, null, null, null, null, null, Bar)
             handleNoType({)
             handleIdentifier(Bar, methodDeclaration)
             handleNoTypeVariables(()
@@ -126,12 +126,12 @@
             endBlockFunctionBody(0, {, })
           endClassConstructor(null, Bar, (, null, })
         endMember()
-      endClassOrMixinBody(DeclarationKind.Class, 1, {, })
+      endClassOrMixinOrExtensionBody(DeclarationKind.Class, 1, {, })
     endClassDeclaration(class, })
   endTopLevelDeclaration(class)
   beginMetadataStar(class)
   endMetadataStar(0)
-  beginClassOrNamedMixinApplicationPrelude(class)
+  beginClassOrMixinOrNamedMixinApplicationPrelude(class)
     handleIdentifier(Baz, classOrMixinDeclaration)
     handleNoTypeVariables(on)
     beginClassDeclaration(class, null, Baz)
@@ -152,11 +152,11 @@
       handleClassNoWithClause()
       handleClassOrMixinImplements(null, 0)
       handleRecoverClassHeader()
-      beginClassOrMixinBody(DeclarationKind.Class, {)
+      beginClassOrMixinOrExtensionBody(DeclarationKind.Class, {)
         beginMetadataStar(Baz)
         endMetadataStar(0)
         beginMember()
-          beginMethod(null, null, null, null, null, Baz)
+          beginMethod(DeclarationKind.Class, null, null, null, null, null, Baz)
             handleNoType({)
             handleIdentifier(Baz, methodDeclaration)
             handleNoTypeVariables(()
@@ -168,7 +168,7 @@
             endBlockFunctionBody(0, {, })
           endClassConstructor(null, Baz, (, null, })
         endMember()
-      endClassOrMixinBody(DeclarationKind.Class, 1, {, })
+      endClassOrMixinOrExtensionBody(DeclarationKind.Class, 1, {, })
     endClassDeclaration(class, })
   endTopLevelDeclaration()
 endCompilationUnit(5, )
diff --git a/pkg/front_end/parser_testcases/error_recovery/issue_22313.dart.intertwined.expect b/pkg/front_end/parser_testcases/error_recovery/issue_22313.dart.intertwined.expect
index 6686db3..e4749d3 100644
--- a/pkg/front_end/parser_testcases/error_recovery/issue_22313.dart.intertwined.expect
+++ b/pkg/front_end/parser_testcases/error_recovery/issue_22313.dart.intertwined.expect
@@ -9,7 +9,7 @@
     parseTopLevelKeywordDeclaration(, class, Instance of 'DirectiveContext')
       parseClassDeclarationModifiers(, class)
       parseClassOrNamedMixinApplication(null, class)
-        listener: beginClassOrNamedMixinApplicationPrelude(class)
+        listener: beginClassOrMixinOrNamedMixinApplicationPrelude(class)
         ensureIdentifier(class, classOrMixinDeclaration)
           listener: handleIdentifier(A, classOrMixinDeclaration)
         listener: handleNoTypeVariables({)
@@ -25,9 +25,9 @@
               listener: handleClassOrMixinImplements(null, 0)
             listener: handleClassHeader(class, class, null)
           parseClassOrMixinOrExtensionBody(A, DeclarationKind.Class, A)
-            listener: beginClassOrMixinBody(DeclarationKind.Class, {)
+            listener: beginClassOrMixinOrExtensionBody(DeclarationKind.Class, {)
             notEofOrValue(}, })
-            listener: endClassOrMixinBody(DeclarationKind.Class, 0, {, })
+            listener: endClassOrMixinOrExtensionBody(DeclarationKind.Class, 0, {, })
           listener: endClassDeclaration(class, })
   listener: endTopLevelDeclaration(class)
   parseTopLevelDeclarationImpl(}, Instance of 'DirectiveContext')
@@ -37,7 +37,7 @@
     parseTopLevelKeywordDeclaration(}, class, Instance of 'DirectiveContext')
       parseClassDeclarationModifiers(}, class)
       parseClassOrNamedMixinApplication(null, class)
-        listener: beginClassOrNamedMixinApplicationPrelude(class)
+        listener: beginClassOrMixinOrNamedMixinApplicationPrelude(class)
         ensureIdentifier(class, classOrMixinDeclaration)
           listener: handleIdentifier(B, classOrMixinDeclaration)
         listener: handleNoTypeVariables({)
@@ -53,9 +53,9 @@
               listener: handleClassOrMixinImplements(null, 0)
             listener: handleClassHeader(class, class, null)
           parseClassOrMixinOrExtensionBody(B, DeclarationKind.Class, B)
-            listener: beginClassOrMixinBody(DeclarationKind.Class, {)
+            listener: beginClassOrMixinOrExtensionBody(DeclarationKind.Class, {)
             notEofOrValue(}, })
-            listener: endClassOrMixinBody(DeclarationKind.Class, 0, {, })
+            listener: endClassOrMixinOrExtensionBody(DeclarationKind.Class, 0, {, })
           listener: endClassDeclaration(class, })
   listener: endTopLevelDeclaration(class)
   parseTopLevelDeclarationImpl(}, Instance of 'DirectiveContext')
@@ -65,7 +65,7 @@
     parseTopLevelKeywordDeclaration(}, class, Instance of 'DirectiveContext')
       parseClassDeclarationModifiers(}, class)
       parseClassOrNamedMixinApplication(null, class)
-        listener: beginClassOrNamedMixinApplicationPrelude(class)
+        listener: beginClassOrMixinOrNamedMixinApplicationPrelude(class)
         ensureIdentifier(class, classOrMixinDeclaration)
           listener: handleIdentifier(Foo, classOrMixinDeclaration)
         listener: handleNoTypeVariables(extends)
@@ -89,7 +89,7 @@
               listener: handleClassOrMixinImplements(null, 0)
             listener: handleClassHeader(class, class, null)
           parseClassOrMixinOrExtensionBody(B, DeclarationKind.Class, Foo)
-            listener: beginClassOrMixinBody(DeclarationKind.Class, {)
+            listener: beginClassOrMixinOrExtensionBody(DeclarationKind.Class, {)
             notEofOrValue(}, Foo)
             parseClassOrMixinOrExtensionMemberImpl({, DeclarationKind.Class, Foo)
               parseMetadataStar({)
@@ -98,7 +98,7 @@
               listener: beginMember()
               isReservedKeyword(()
               parseMethod({, null, null, null, null, null, null, {, Instance of 'NoType', null, Foo, DeclarationKind.Class, Foo, false)
-                listener: beginMethod(null, null, null, null, null, Foo)
+                listener: beginMethod(DeclarationKind.Class, null, null, null, null, null, Foo)
                 listener: handleNoType({)
                 ensureIdentifierPotentiallyRecovered({, methodDeclaration, false)
                   listener: handleIdentifier(Foo, methodDeclaration)
@@ -123,7 +123,7 @@
                 listener: endClassConstructor(null, Foo, (, null, })
               listener: endMember()
             notEofOrValue(}, })
-            listener: endClassOrMixinBody(DeclarationKind.Class, 1, {, })
+            listener: endClassOrMixinOrExtensionBody(DeclarationKind.Class, 1, {, })
           listener: endClassDeclaration(class, })
   listener: endTopLevelDeclaration(class)
   parseTopLevelDeclarationImpl(}, Instance of 'DirectiveContext')
@@ -133,7 +133,7 @@
     parseTopLevelKeywordDeclaration(}, class, Instance of 'DirectiveContext')
       parseClassDeclarationModifiers(}, class)
       parseClassOrNamedMixinApplication(null, class)
-        listener: beginClassOrNamedMixinApplicationPrelude(class)
+        listener: beginClassOrMixinOrNamedMixinApplicationPrelude(class)
         ensureIdentifier(class, classOrMixinDeclaration)
           listener: handleIdentifier(Bar, classOrMixinDeclaration)
         listener: handleNoTypeVariables(extend)
@@ -173,7 +173,7 @@
             listener: handleRecoverClassHeader()
           ensureBlock(B, null, class declaration)
           parseClassOrMixinOrExtensionBody(B, DeclarationKind.Class, Bar)
-            listener: beginClassOrMixinBody(DeclarationKind.Class, {)
+            listener: beginClassOrMixinOrExtensionBody(DeclarationKind.Class, {)
             notEofOrValue(}, Bar)
             parseClassOrMixinOrExtensionMemberImpl({, DeclarationKind.Class, Bar)
               parseMetadataStar({)
@@ -182,7 +182,7 @@
               listener: beginMember()
               isReservedKeyword(()
               parseMethod({, null, null, null, null, null, null, {, Instance of 'NoType', null, Bar, DeclarationKind.Class, Bar, false)
-                listener: beginMethod(null, null, null, null, null, Bar)
+                listener: beginMethod(DeclarationKind.Class, null, null, null, null, null, Bar)
                 listener: handleNoType({)
                 ensureIdentifierPotentiallyRecovered({, methodDeclaration, false)
                   listener: handleIdentifier(Bar, methodDeclaration)
@@ -207,7 +207,7 @@
                 listener: endClassConstructor(null, Bar, (, null, })
               listener: endMember()
             notEofOrValue(}, })
-            listener: endClassOrMixinBody(DeclarationKind.Class, 1, {, })
+            listener: endClassOrMixinOrExtensionBody(DeclarationKind.Class, 1, {, })
           listener: endClassDeclaration(class, })
   listener: endTopLevelDeclaration(class)
   parseTopLevelDeclarationImpl(}, Instance of 'DirectiveContext')
@@ -217,7 +217,7 @@
     parseTopLevelKeywordDeclaration(}, class, Instance of 'DirectiveContext')
       parseClassDeclarationModifiers(}, class)
       parseClassOrNamedMixinApplication(null, class)
-        listener: beginClassOrNamedMixinApplicationPrelude(class)
+        listener: beginClassOrMixinOrNamedMixinApplicationPrelude(class)
         ensureIdentifier(class, classOrMixinDeclaration)
           listener: handleIdentifier(Baz, classOrMixinDeclaration)
         listener: handleNoTypeVariables(on)
@@ -257,7 +257,7 @@
             listener: handleRecoverClassHeader()
           ensureBlock(B, null, class declaration)
           parseClassOrMixinOrExtensionBody(B, DeclarationKind.Class, Baz)
-            listener: beginClassOrMixinBody(DeclarationKind.Class, {)
+            listener: beginClassOrMixinOrExtensionBody(DeclarationKind.Class, {)
             notEofOrValue(}, Baz)
             parseClassOrMixinOrExtensionMemberImpl({, DeclarationKind.Class, Baz)
               parseMetadataStar({)
@@ -266,7 +266,7 @@
               listener: beginMember()
               isReservedKeyword(()
               parseMethod({, null, null, null, null, null, null, {, Instance of 'NoType', null, Baz, DeclarationKind.Class, Baz, false)
-                listener: beginMethod(null, null, null, null, null, Baz)
+                listener: beginMethod(DeclarationKind.Class, null, null, null, null, null, Baz)
                 listener: handleNoType({)
                 ensureIdentifierPotentiallyRecovered({, methodDeclaration, false)
                   listener: handleIdentifier(Baz, methodDeclaration)
@@ -291,7 +291,7 @@
                 listener: endClassConstructor(null, Baz, (, null, })
               listener: endMember()
             notEofOrValue(}, })
-            listener: endClassOrMixinBody(DeclarationKind.Class, 1, {, })
+            listener: endClassOrMixinOrExtensionBody(DeclarationKind.Class, 1, {, })
           listener: endClassDeclaration(class, })
   listener: endTopLevelDeclaration()
   reportAllErrorTokens(class)
diff --git a/pkg/front_end/parser_testcases/error_recovery/issue_22314.dart.expect b/pkg/front_end/parser_testcases/error_recovery/issue_22314.dart.expect
index 23e29a3..43b85dd 100644
--- a/pkg/front_end/parser_testcases/error_recovery/issue_22314.dart.expect
+++ b/pkg/front_end/parser_testcases/error_recovery/issue_22314.dart.expect
@@ -12,7 +12,7 @@
   beginMetadataStar(const)
   endMetadataStar(0)
   beginTopLevelMember(const)
-    beginFields()
+    beginFields(DeclarationKind.TopLevel, null, null, null, null, null, const, )
       handleNoType(const)
       handleIdentifier(annotation, topLevelVariableDeclaration)
       beginFieldInitializer(=)
@@ -22,7 +22,7 @@
   endTopLevelDeclaration(class)
   beginMetadataStar(class)
   endMetadataStar(0)
-  beginClassOrNamedMixinApplicationPrelude(class)
+  beginClassOrMixinOrNamedMixinApplicationPrelude(class)
     handleIdentifier(Annotation, classOrMixinDeclaration)
     handleNoTypeVariables({)
     beginClassDeclaration(class, null, Annotation)
@@ -31,11 +31,11 @@
       handleClassNoWithClause()
       handleClassOrMixinImplements(null, 0)
       handleClassHeader(class, class, null)
-      beginClassOrMixinBody(DeclarationKind.Class, {)
+      beginClassOrMixinOrExtensionBody(DeclarationKind.Class, {)
         beginMetadataStar(final)
         endMetadataStar(0)
         beginMember()
-          beginFields({)
+          beginFields(DeclarationKind.Class, null, null, null, null, null, final, {)
             handleIdentifier(String, typeReference)
             handleNoTypeArguments(message)
             handleType(String, null)
@@ -46,7 +46,7 @@
         beginMetadataStar(const)
         endMetadataStar(0)
         beginMember()
-          beginMethod(null, null, null, const, null, Annotation)
+          beginMethod(DeclarationKind.Class, null, null, null, const, null, Annotation)
             handleNoType(const)
             handleIdentifier(Annotation, methodDeclaration)
             handleNoTypeVariables(()
@@ -64,12 +64,12 @@
             handleEmptyFunctionBody(;)
           endClassConstructor(null, const, (, null, ;)
         endMember()
-      endClassOrMixinBody(DeclarationKind.Class, 2, {, })
+      endClassOrMixinOrExtensionBody(DeclarationKind.Class, 2, {, })
     endClassDeclaration(class, })
   endTopLevelDeclaration(class)
   beginMetadataStar(class)
   endMetadataStar(0)
-  beginClassOrNamedMixinApplicationPrelude(class)
+  beginClassOrMixinOrNamedMixinApplicationPrelude(class)
     handleIdentifier(A, classOrMixinDeclaration)
     beginTypeVariables(<)
       beginMetadataStar(E)
@@ -86,13 +86,13 @@
       handleClassNoWithClause()
       handleClassOrMixinImplements(null, 0)
       handleClassHeader(class, class, null)
-      beginClassOrMixinBody(DeclarationKind.Class, {)
-      endClassOrMixinBody(DeclarationKind.Class, 0, {, })
+      beginClassOrMixinOrExtensionBody(DeclarationKind.Class, {)
+      endClassOrMixinOrExtensionBody(DeclarationKind.Class, 0, {, })
     endClassDeclaration(class, })
   endTopLevelDeclaration(class)
   beginMetadataStar(class)
   endMetadataStar(0)
-  beginClassOrNamedMixinApplicationPrelude(class)
+  beginClassOrMixinOrNamedMixinApplicationPrelude(class)
     handleIdentifier(C, classOrMixinDeclaration)
     handleNoTypeVariables({)
     beginClassDeclaration(class, null, C)
@@ -101,11 +101,11 @@
       handleClassNoWithClause()
       handleClassOrMixinImplements(null, 0)
       handleClassHeader(class, class, null)
-      beginClassOrMixinBody(DeclarationKind.Class, {)
+      beginClassOrMixinOrExtensionBody(DeclarationKind.Class, {)
         beginMetadataStar(m)
         endMetadataStar(0)
         beginMember()
-          beginMethod(null, null, null, null, null, m)
+          beginMethod(DeclarationKind.Class, null, null, null, null, null, m)
             handleNoType({)
             handleIdentifier(m, methodDeclaration)
             handleNoTypeVariables(()
@@ -131,7 +131,7 @@
             handleExpressionFunctionBody(=>, ;)
           endClassMethod(null, m, (, null, ;)
         endMember()
-      endClassOrMixinBody(DeclarationKind.Class, 1, {, })
+      endClassOrMixinOrExtensionBody(DeclarationKind.Class, 1, {, })
     endClassDeclaration(class, })
   endTopLevelDeclaration()
 endCompilationUnit(4, )
diff --git a/pkg/front_end/parser_testcases/error_recovery/issue_22314.dart.intertwined.expect b/pkg/front_end/parser_testcases/error_recovery/issue_22314.dart.intertwined.expect
index f79f784..392f65b 100644
--- a/pkg/front_end/parser_testcases/error_recovery/issue_22314.dart.intertwined.expect
+++ b/pkg/front_end/parser_testcases/error_recovery/issue_22314.dart.intertwined.expect
@@ -9,7 +9,7 @@
     parseTopLevelMemberImpl()
       listener: beginTopLevelMember(const)
       parseFields(, null, null, null, null, null, const, const, Instance of 'NoType', annotation, DeclarationKind.TopLevel, null, false)
-        listener: beginFields()
+        listener: beginFields(DeclarationKind.TopLevel, null, null, null, null, null, const, )
         listener: handleNoType(const)
         ensureIdentifierPotentiallyRecovered(const, topLevelVariableDeclaration, false)
           listener: handleIdentifier(annotation, topLevelVariableDeclaration)
@@ -31,7 +31,7 @@
     parseTopLevelKeywordDeclaration(;, class, Instance of 'DirectiveContext')
       parseClassDeclarationModifiers(;, class)
       parseClassOrNamedMixinApplication(null, class)
-        listener: beginClassOrNamedMixinApplicationPrelude(class)
+        listener: beginClassOrMixinOrNamedMixinApplicationPrelude(class)
         ensureIdentifier(class, classOrMixinDeclaration)
           listener: handleIdentifier(Annotation, classOrMixinDeclaration)
         listener: handleNoTypeVariables({)
@@ -47,7 +47,7 @@
               listener: handleClassOrMixinImplements(null, 0)
             listener: handleClassHeader(class, class, null)
           parseClassOrMixinOrExtensionBody(Annotation, DeclarationKind.Class, Annotation)
-            listener: beginClassOrMixinBody(DeclarationKind.Class, {)
+            listener: beginClassOrMixinOrExtensionBody(DeclarationKind.Class, {)
             notEofOrValue(}, final)
             parseClassOrMixinOrExtensionMemberImpl({, DeclarationKind.Class, Annotation)
               parseMetadataStar({)
@@ -55,7 +55,7 @@
                 listener: endMetadataStar(0)
               listener: beginMember()
               parseFields({, null, null, null, null, null, final, final, Instance of 'SimpleType', message, DeclarationKind.Class, Annotation, false)
-                listener: beginFields({)
+                listener: beginFields(DeclarationKind.Class, null, null, null, null, null, final, {)
                 listener: handleIdentifier(String, typeReference)
                 listener: handleNoTypeArguments(message)
                 listener: handleType(String, null)
@@ -72,7 +72,7 @@
                 listener: endMetadataStar(0)
               listener: beginMember()
               parseMethod(;, null, null, null, null, null, const, const, Instance of 'NoType', null, Annotation, DeclarationKind.Class, Annotation, false)
-                listener: beginMethod(null, null, null, const, null, Annotation)
+                listener: beginMethod(DeclarationKind.Class, null, null, null, const, null, Annotation)
                 listener: handleNoType(const)
                 ensureIdentifierPotentiallyRecovered(const, methodDeclaration, false)
                   listener: handleIdentifier(Annotation, methodDeclaration)
@@ -105,7 +105,7 @@
                 listener: endClassConstructor(null, const, (, null, ;)
               listener: endMember()
             notEofOrValue(}, })
-            listener: endClassOrMixinBody(DeclarationKind.Class, 2, {, })
+            listener: endClassOrMixinOrExtensionBody(DeclarationKind.Class, 2, {, })
           listener: endClassDeclaration(class, })
   listener: endTopLevelDeclaration(class)
   parseTopLevelDeclarationImpl(}, Instance of 'DirectiveContext')
@@ -115,7 +115,7 @@
     parseTopLevelKeywordDeclaration(}, class, Instance of 'DirectiveContext')
       parseClassDeclarationModifiers(}, class)
       parseClassOrNamedMixinApplication(null, class)
-        listener: beginClassOrNamedMixinApplicationPrelude(class)
+        listener: beginClassOrMixinOrNamedMixinApplicationPrelude(class)
         ensureIdentifier(class, classOrMixinDeclaration)
           listener: handleIdentifier(A, classOrMixinDeclaration)
         listener: beginTypeVariables(<)
@@ -139,9 +139,9 @@
               listener: handleClassOrMixinImplements(null, 0)
             listener: handleClassHeader(class, class, null)
           parseClassOrMixinOrExtensionBody(>, DeclarationKind.Class, A)
-            listener: beginClassOrMixinBody(DeclarationKind.Class, {)
+            listener: beginClassOrMixinOrExtensionBody(DeclarationKind.Class, {)
             notEofOrValue(}, })
-            listener: endClassOrMixinBody(DeclarationKind.Class, 0, {, })
+            listener: endClassOrMixinOrExtensionBody(DeclarationKind.Class, 0, {, })
           listener: endClassDeclaration(class, })
   listener: endTopLevelDeclaration(class)
   parseTopLevelDeclarationImpl(}, Instance of 'DirectiveContext')
@@ -151,7 +151,7 @@
     parseTopLevelKeywordDeclaration(}, class, Instance of 'DirectiveContext')
       parseClassDeclarationModifiers(}, class)
       parseClassOrNamedMixinApplication(null, class)
-        listener: beginClassOrNamedMixinApplicationPrelude(class)
+        listener: beginClassOrMixinOrNamedMixinApplicationPrelude(class)
         ensureIdentifier(class, classOrMixinDeclaration)
           listener: handleIdentifier(C, classOrMixinDeclaration)
         listener: handleNoTypeVariables({)
@@ -167,7 +167,7 @@
               listener: handleClassOrMixinImplements(null, 0)
             listener: handleClassHeader(class, class, null)
           parseClassOrMixinOrExtensionBody(C, DeclarationKind.Class, C)
-            listener: beginClassOrMixinBody(DeclarationKind.Class, {)
+            listener: beginClassOrMixinOrExtensionBody(DeclarationKind.Class, {)
             notEofOrValue(}, m)
             parseClassOrMixinOrExtensionMemberImpl({, DeclarationKind.Class, C)
               parseMetadataStar({)
@@ -176,7 +176,7 @@
               listener: beginMember()
               isReservedKeyword(()
               parseMethod({, null, null, null, null, null, null, {, Instance of 'NoType', null, m, DeclarationKind.Class, C, false)
-                listener: beginMethod(null, null, null, null, null, m)
+                listener: beginMethod(DeclarationKind.Class, null, null, null, null, null, m)
                 listener: handleNoType({)
                 ensureIdentifierPotentiallyRecovered({, methodDeclaration, false)
                   listener: handleIdentifier(m, methodDeclaration)
@@ -230,7 +230,7 @@
                 listener: endClassMethod(null, m, (, null, ;)
               listener: endMember()
             notEofOrValue(}, })
-            listener: endClassOrMixinBody(DeclarationKind.Class, 1, {, })
+            listener: endClassOrMixinOrExtensionBody(DeclarationKind.Class, 1, {, })
           listener: endClassDeclaration(class, })
   listener: endTopLevelDeclaration()
   reportAllErrorTokens(const)
diff --git a/pkg/front_end/parser_testcases/error_recovery/issue_26073.dart.expect b/pkg/front_end/parser_testcases/error_recovery/issue_26073.dart.expect
index b3607e5..810e998 100644
--- a/pkg/front_end/parser_testcases/error_recovery/issue_26073.dart.expect
+++ b/pkg/front_end/parser_testcases/error_recovery/issue_26073.dart.expect
@@ -36,7 +36,7 @@
   beginMetadataStar(typedef)
   endMetadataStar(0)
   beginUncategorizedTopLevelDeclaration(typedef)
-    beginFunctionTypeAlias(typedef)
+    beginTypedef(typedef)
       handleIdentifier(a, typedefDeclaration)
       handleNoTypeVariables(=)
       beginFunctionType(foo)
@@ -56,12 +56,12 @@
           endFormalParameter(null, null, x, null, null, FormalParameterKind.mandatory, MemberKind.GeneralizedFunctionType)
         endFormalParameters(1, (, ), MemberKind.GeneralizedFunctionType)
       endFunctionType(Function, null)
-    endFunctionTypeAlias(typedef, =, ;)
+    endTypedef(typedef, =, ;)
   endTopLevelDeclaration(typedef)
   beginMetadataStar(typedef)
   endMetadataStar(0)
   beginUncategorizedTopLevelDeclaration(typedef)
-    beginFunctionTypeAlias(typedef)
+    beginTypedef(typedef)
       handleIdentifier(b, typedefDeclaration)
       handleNoTypeVariables(=)
       beginFunctionType(Function)
@@ -79,12 +79,12 @@
           endFormalParameter(null, null, x, null, null, FormalParameterKind.mandatory, MemberKind.GeneralizedFunctionType)
         endFormalParameters(1, (, ), MemberKind.GeneralizedFunctionType)
       endFunctionType(Function, null)
-    endFunctionTypeAlias(typedef, =, ;)
+    endTypedef(typedef, =, ;)
   endTopLevelDeclaration(typedef)
   beginMetadataStar(typedef)
   endMetadataStar(0)
   beginUncategorizedTopLevelDeclaration(typedef)
-    beginFunctionTypeAlias(typedef)
+    beginTypedef(typedef)
       handleIdentifier(c, typedefDeclaration)
       handleNoTypeVariables(=)
       handleRecoverableError(Message[ExpectedButGot, Expected 'Function' before this., null, {string: Function}], (, ()
@@ -105,12 +105,12 @@
           endFormalParameter(null, null, x, null, null, FormalParameterKind.mandatory, MemberKind.GeneralizedFunctionType)
         endFormalParameters(1, (, ), MemberKind.GeneralizedFunctionType)
       endFunctionType(Function, null)
-    endFunctionTypeAlias(typedef, =, ;)
+    endTypedef(typedef, =, ;)
   endTopLevelDeclaration(typedef)
   beginMetadataStar(typedef)
   endMetadataStar(0)
   beginUncategorizedTopLevelDeclaration(typedef)
-    beginFunctionTypeAlias(typedef)
+    beginTypedef(typedef)
       handleIdentifier(d, typedefDeclaration)
       handleNoTypeVariables(=)
       handleRecoverableError(Message[ExpectedButGot, Expected 'Function' before this., null, {string: Function}], (, ()
@@ -129,12 +129,12 @@
           endFormalParameter(null, null, x, null, null, FormalParameterKind.mandatory, MemberKind.GeneralizedFunctionType)
         endFormalParameters(1, (, ), MemberKind.GeneralizedFunctionType)
       endFunctionType(Function, null)
-    endFunctionTypeAlias(typedef, =, ;)
+    endTypedef(typedef, =, ;)
   endTopLevelDeclaration(typedef)
   beginMetadataStar(typedef)
   endMetadataStar(0)
   beginUncategorizedTopLevelDeclaration(typedef)
-    beginFunctionTypeAlias(typedef)
+    beginTypedef(typedef)
       handleIdentifier(e, typedefDeclaration)
       handleNoTypeVariables(=)
       handleRecoverableError(Message[ExpectedButGot, Expected 'Function' before this., null, {string: Function}], (, ()
@@ -159,12 +159,12 @@
           endFormalParameter(null, null, x, null, null, FormalParameterKind.mandatory, MemberKind.GeneralizedFunctionType)
         endFormalParameters(1, (, ), MemberKind.GeneralizedFunctionType)
       endFunctionType(Function, null)
-    endFunctionTypeAlias(typedef, =, ;)
+    endTypedef(typedef, =, ;)
   endTopLevelDeclaration(typedef)
   beginMetadataStar(typedef)
   endMetadataStar(0)
   beginUncategorizedTopLevelDeclaration(typedef)
-    beginFunctionTypeAlias(typedef)
+    beginTypedef(typedef)
       handleIdentifier(f, typedefDeclaration)
       handleNoTypeVariables(=)
       handleRecoverableError(Message[ExpectedButGot, Expected 'Function' before this., null, {string: Function}], <, <)
@@ -191,12 +191,12 @@
           endFormalParameter(null, null, x, null, null, FormalParameterKind.mandatory, MemberKind.GeneralizedFunctionType)
         endFormalParameters(1, (, ), MemberKind.GeneralizedFunctionType)
       endFunctionType(Function, null)
-    endFunctionTypeAlias(typedef, =, ;)
+    endTypedef(typedef, =, ;)
   endTopLevelDeclaration(typedef)
   beginMetadataStar(typedef)
   endMetadataStar(0)
   beginUncategorizedTopLevelDeclaration(typedef)
-    beginFunctionTypeAlias(typedef)
+    beginTypedef(typedef)
       handleIdentifier(g, typedefDeclaration)
       handleNoTypeVariables(=)
       handleRecoverableError(Message[ExpectedButGot, Expected 'Function' before this., null, {string: Function}], (, ()
@@ -233,12 +233,12 @@
           endFormalParameter(null, null, x, null, null, FormalParameterKind.mandatory, MemberKind.GeneralizedFunctionType)
         endFormalParameters(1, (, ), MemberKind.GeneralizedFunctionType)
       endFunctionType(Function, null)
-    endFunctionTypeAlias(typedef, =, ;)
+    endTypedef(typedef, =, ;)
   endTopLevelDeclaration(typedef)
   beginMetadataStar(typedef)
   endMetadataStar(0)
   beginUncategorizedTopLevelDeclaration(typedef)
-    beginFunctionTypeAlias(typedef)
+    beginTypedef(typedef)
       handleIdentifier(h, typedefDeclaration)
       handleNoTypeVariables(=)
       handleRecoverableError(Message[ExpectedButGot, Expected 'Function' before this., null, {string: Function}], <, <)
@@ -289,12 +289,12 @@
           endFormalParameter(null, null, x, null, null, FormalParameterKind.mandatory, MemberKind.GeneralizedFunctionType)
         endFormalParameters(1, (, ), MemberKind.GeneralizedFunctionType)
       endFunctionType(Function, null)
-    endFunctionTypeAlias(typedef, =, ;)
+    endTypedef(typedef, =, ;)
   endTopLevelDeclaration(typedef)
   beginMetadataStar(typedef)
   endMetadataStar(0)
   beginUncategorizedTopLevelDeclaration(typedef)
-    beginFunctionTypeAlias(typedef)
+    beginTypedef(typedef)
       handleIdentifier(i, typedefDeclaration)
       handleNoTypeVariables(=)
       handleRecoverableError(MissingTypedefParameters, >, >)
@@ -337,23 +337,23 @@
         beginFormalParameters((, MemberKind.GeneralizedFunctionType)
         endFormalParameters(0, (, ), MemberKind.GeneralizedFunctionType)
       endFunctionType(Function, null)
-    endFunctionTypeAlias(typedef, =, ;)
+    endTypedef(typedef, =, ;)
   endTopLevelDeclaration(typedef)
   beginMetadataStar(typedef)
   endMetadataStar(0)
   beginUncategorizedTopLevelDeclaration(typedef)
-    beginFunctionTypeAlias(typedef)
+    beginTypedef(typedef)
       handleIdentifier(j, typedefDeclaration)
       handleNoTypeVariables(=)
       handleIdentifier(foo, typeReference)
       handleNoTypeArguments(;)
       handleType(foo, null)
-    endFunctionTypeAlias(typedef, =, ;)
+    endTypedef(typedef, =, ;)
   endTopLevelDeclaration(typedef)
   beginMetadataStar(typedef)
   endMetadataStar(0)
   beginUncategorizedTopLevelDeclaration(typedef)
-    beginFunctionTypeAlias(typedef)
+    beginTypedef(typedef)
       handleIdentifier(k, typedefDeclaration)
       handleNoTypeVariables(=)
       handleIdentifier(List, typeReference)
@@ -363,6 +363,6 @@
         handleType(int, null)
       endTypeArguments(1, <, >)
       handleType(List, null)
-    endFunctionTypeAlias(typedef, =, ;)
+    endTypedef(typedef, =, ;)
   endTopLevelDeclaration()
 endCompilationUnit(11, )
diff --git a/pkg/front_end/parser_testcases/error_recovery/issue_26073.dart.intertwined.expect b/pkg/front_end/parser_testcases/error_recovery/issue_26073.dart.intertwined.expect
index 703ab59..317743c 100644
--- a/pkg/front_end/parser_testcases/error_recovery/issue_26073.dart.intertwined.expect
+++ b/pkg/front_end/parser_testcases/error_recovery/issue_26073.dart.intertwined.expect
@@ -10,7 +10,7 @@
       parseTopLevelKeywordModifiers(, typedef)
       parseTypedef(typedef)
         listener: beginUncategorizedTopLevelDeclaration(typedef)
-        listener: beginFunctionTypeAlias(typedef)
+        listener: beginTypedef(typedef)
         ensureIdentifierPotentiallyRecovered(typedef, typedefDeclaration, true)
           listener: handleIdentifier(a, typedefDeclaration)
         listener: handleNoTypeVariables(=)
@@ -38,7 +38,7 @@
             listener: endFormalParameters(1, (, ), MemberKind.GeneralizedFunctionType)
         listener: endFunctionType(Function, null)
         ensureSemicolon())
-        listener: endFunctionTypeAlias(typedef, =, ;)
+        listener: endTypedef(typedef, =, ;)
   listener: endTopLevelDeclaration(typedef)
   parseTopLevelDeclarationImpl(;, Instance of 'DirectiveContext')
     parseMetadataStar(;)
@@ -48,7 +48,7 @@
       parseTopLevelKeywordModifiers(;, typedef)
       parseTypedef(typedef)
         listener: beginUncategorizedTopLevelDeclaration(typedef)
-        listener: beginFunctionTypeAlias(typedef)
+        listener: beginTypedef(typedef)
         ensureIdentifierPotentiallyRecovered(typedef, typedefDeclaration, true)
           listener: handleIdentifier(b, typedefDeclaration)
         listener: handleNoTypeVariables(=)
@@ -73,7 +73,7 @@
             listener: endFormalParameters(1, (, ), MemberKind.GeneralizedFunctionType)
         listener: endFunctionType(Function, null)
         ensureSemicolon())
-        listener: endFunctionTypeAlias(typedef, =, ;)
+        listener: endTypedef(typedef, =, ;)
   listener: endTopLevelDeclaration(typedef)
   parseTopLevelDeclarationImpl(;, Instance of 'DirectiveContext')
     parseMetadataStar(;)
@@ -83,7 +83,7 @@
       parseTopLevelKeywordModifiers(;, typedef)
       parseTypedef(typedef)
         listener: beginUncategorizedTopLevelDeclaration(typedef)
-        listener: beginFunctionTypeAlias(typedef)
+        listener: beginTypedef(typedef)
         ensureIdentifierPotentiallyRecovered(typedef, typedefDeclaration, true)
           listener: handleIdentifier(c, typedefDeclaration)
         listener: handleNoTypeVariables(=)
@@ -114,7 +114,7 @@
             listener: endFormalParameters(1, (, ), MemberKind.GeneralizedFunctionType)
         listener: endFunctionType(Function, null)
         ensureSemicolon())
-        listener: endFunctionTypeAlias(typedef, =, ;)
+        listener: endTypedef(typedef, =, ;)
   listener: endTopLevelDeclaration(typedef)
   parseTopLevelDeclarationImpl(;, Instance of 'DirectiveContext')
     parseMetadataStar(;)
@@ -124,7 +124,7 @@
       parseTopLevelKeywordModifiers(;, typedef)
       parseTypedef(typedef)
         listener: beginUncategorizedTopLevelDeclaration(typedef)
-        listener: beginFunctionTypeAlias(typedef)
+        listener: beginTypedef(typedef)
         ensureIdentifierPotentiallyRecovered(typedef, typedefDeclaration, true)
           listener: handleIdentifier(d, typedefDeclaration)
         listener: handleNoTypeVariables(=)
@@ -152,7 +152,7 @@
             listener: endFormalParameters(1, (, ), MemberKind.GeneralizedFunctionType)
         listener: endFunctionType(Function, null)
         ensureSemicolon())
-        listener: endFunctionTypeAlias(typedef, =, ;)
+        listener: endTypedef(typedef, =, ;)
   listener: endTopLevelDeclaration(typedef)
   parseTopLevelDeclarationImpl(;, Instance of 'DirectiveContext')
     parseMetadataStar(;)
@@ -162,7 +162,7 @@
       parseTopLevelKeywordModifiers(;, typedef)
       parseTypedef(typedef)
         listener: beginUncategorizedTopLevelDeclaration(typedef)
-        listener: beginFunctionTypeAlias(typedef)
+        listener: beginTypedef(typedef)
         ensureIdentifierPotentiallyRecovered(typedef, typedefDeclaration, true)
           listener: handleIdentifier(e, typedefDeclaration)
         listener: handleNoTypeVariables(=)
@@ -197,7 +197,7 @@
             listener: endFormalParameters(1, (, ), MemberKind.GeneralizedFunctionType)
         listener: endFunctionType(Function, null)
         ensureSemicolon())
-        listener: endFunctionTypeAlias(typedef, =, ;)
+        listener: endTypedef(typedef, =, ;)
   listener: endTopLevelDeclaration(typedef)
   parseTopLevelDeclarationImpl(;, Instance of 'DirectiveContext')
     parseMetadataStar(;)
@@ -207,7 +207,7 @@
       parseTopLevelKeywordModifiers(;, typedef)
       parseTypedef(typedef)
         listener: beginUncategorizedTopLevelDeclaration(typedef)
-        listener: beginFunctionTypeAlias(typedef)
+        listener: beginTypedef(typedef)
         ensureIdentifierPotentiallyRecovered(typedef, typedefDeclaration, true)
           listener: handleIdentifier(f, typedefDeclaration)
         listener: handleNoTypeVariables(=)
@@ -243,7 +243,7 @@
             listener: endFormalParameters(1, (, ), MemberKind.GeneralizedFunctionType)
         listener: endFunctionType(Function, null)
         ensureSemicolon())
-        listener: endFunctionTypeAlias(typedef, =, ;)
+        listener: endTypedef(typedef, =, ;)
   listener: endTopLevelDeclaration(typedef)
   parseTopLevelDeclarationImpl(;, Instance of 'DirectiveContext')
     parseMetadataStar(;)
@@ -253,7 +253,7 @@
       parseTopLevelKeywordModifiers(;, typedef)
       parseTypedef(typedef)
         listener: beginUncategorizedTopLevelDeclaration(typedef)
-        listener: beginFunctionTypeAlias(typedef)
+        listener: beginTypedef(typedef)
         ensureIdentifierPotentiallyRecovered(typedef, typedefDeclaration, true)
           listener: handleIdentifier(g, typedefDeclaration)
         listener: handleNoTypeVariables(=)
@@ -300,7 +300,7 @@
             listener: endFormalParameters(1, (, ), MemberKind.GeneralizedFunctionType)
         listener: endFunctionType(Function, null)
         ensureSemicolon())
-        listener: endFunctionTypeAlias(typedef, =, ;)
+        listener: endTypedef(typedef, =, ;)
   listener: endTopLevelDeclaration(typedef)
   parseTopLevelDeclarationImpl(;, Instance of 'DirectiveContext')
     parseMetadataStar(;)
@@ -310,7 +310,7 @@
       parseTopLevelKeywordModifiers(;, typedef)
       parseTypedef(typedef)
         listener: beginUncategorizedTopLevelDeclaration(typedef)
-        listener: beginFunctionTypeAlias(typedef)
+        listener: beginTypedef(typedef)
         ensureIdentifierPotentiallyRecovered(typedef, typedefDeclaration, true)
           listener: handleIdentifier(h, typedefDeclaration)
         listener: handleNoTypeVariables(=)
@@ -380,7 +380,7 @@
             listener: endFormalParameters(1, (, ), MemberKind.GeneralizedFunctionType)
         listener: endFunctionType(Function, null)
         ensureSemicolon())
-        listener: endFunctionTypeAlias(typedef, =, ;)
+        listener: endTypedef(typedef, =, ;)
   listener: endTopLevelDeclaration(typedef)
   parseTopLevelDeclarationImpl(;, Instance of 'DirectiveContext')
     parseMetadataStar(;)
@@ -390,7 +390,7 @@
       parseTopLevelKeywordModifiers(;, typedef)
       parseTypedef(typedef)
         listener: beginUncategorizedTopLevelDeclaration(typedef)
-        listener: beginFunctionTypeAlias(typedef)
+        listener: beginTypedef(typedef)
         ensureIdentifierPotentiallyRecovered(typedef, typedefDeclaration, true)
           listener: handleIdentifier(i, typedefDeclaration)
         listener: handleNoTypeVariables(=)
@@ -452,7 +452,7 @@
             listener: endFormalParameters(0, (, ), MemberKind.GeneralizedFunctionType)
         listener: endFunctionType(Function, null)
         ensureSemicolon())
-        listener: endFunctionTypeAlias(typedef, =, ;)
+        listener: endTypedef(typedef, =, ;)
   listener: endTopLevelDeclaration(typedef)
   parseTopLevelDeclarationImpl(;, Instance of 'DirectiveContext')
     parseMetadataStar(;)
@@ -462,7 +462,7 @@
       parseTopLevelKeywordModifiers(;, typedef)
       parseTypedef(typedef)
         listener: beginUncategorizedTopLevelDeclaration(typedef)
-        listener: beginFunctionTypeAlias(typedef)
+        listener: beginTypedef(typedef)
         ensureIdentifierPotentiallyRecovered(typedef, typedefDeclaration, true)
           listener: handleIdentifier(j, typedefDeclaration)
         listener: handleNoTypeVariables(=)
@@ -470,7 +470,7 @@
         listener: handleNoTypeArguments(;)
         listener: handleType(foo, null)
         ensureSemicolon(foo)
-        listener: endFunctionTypeAlias(typedef, =, ;)
+        listener: endTypedef(typedef, =, ;)
   listener: endTopLevelDeclaration(typedef)
   parseTopLevelDeclarationImpl(;, Instance of 'DirectiveContext')
     parseMetadataStar(;)
@@ -480,7 +480,7 @@
       parseTopLevelKeywordModifiers(;, typedef)
       parseTypedef(typedef)
         listener: beginUncategorizedTopLevelDeclaration(typedef)
-        listener: beginFunctionTypeAlias(typedef)
+        listener: beginTypedef(typedef)
         ensureIdentifierPotentiallyRecovered(typedef, typedefDeclaration, true)
           listener: handleIdentifier(k, typedefDeclaration)
         listener: handleNoTypeVariables(=)
@@ -492,7 +492,7 @@
         listener: endTypeArguments(1, <, >)
         listener: handleType(List, null)
         ensureSemicolon(>)
-        listener: endFunctionTypeAlias(typedef, =, ;)
+        listener: endTypedef(typedef, =, ;)
   listener: endTopLevelDeclaration()
   reportAllErrorTokens(typedef)
   listener: endCompilationUnit(11, )
diff --git a/pkg/front_end/parser_testcases/error_recovery/issue_26810.dart.expect b/pkg/front_end/parser_testcases/error_recovery/issue_26810.dart.expect
index 9eb58d9..464bf21 100644
--- a/pkg/front_end/parser_testcases/error_recovery/issue_26810.dart.expect
+++ b/pkg/front_end/parser_testcases/error_recovery/issue_26810.dart.expect
@@ -63,7 +63,7 @@
 beginCompilationUnit(abstract)
   beginMetadataStar(abstract)
   endMetadataStar(0)
-  beginClassOrNamedMixinApplicationPrelude(abstract)
+  beginClassOrMixinOrNamedMixinApplicationPrelude(abstract)
     handleIdentifier(Key, classOrMixinDeclaration)
     handleNoTypeVariables({)
     beginClassDeclaration(abstract, abstract, Key)
@@ -72,11 +72,11 @@
       handleClassNoWithClause()
       handleClassOrMixinImplements(null, 0)
       handleClassHeader(abstract, class, null)
-      beginClassOrMixinBody(DeclarationKind.Class, {)
+      beginClassOrMixinOrExtensionBody(DeclarationKind.Class, {)
         beginMetadataStar(int)
         endMetadataStar(0)
         beginMember()
-          beginMethod(null, null, null, null, get, a)
+          beginMethod(DeclarationKind.Class, null, null, null, null, get, a)
             handleIdentifier(int, typeReference)
             handleNoTypeArguments(get)
             handleType(int, null)
@@ -109,7 +109,7 @@
         beginMetadataStar(int)
         endMetadataStar(0)
         beginMember()
-          beginMethod(null, null, null, null, get, b)
+          beginMethod(DeclarationKind.Class, null, null, null, null, get, b)
             handleIdentifier(int, typeReference)
             handleNoTypeArguments(get)
             handleType(int, null)
@@ -141,7 +141,7 @@
         beginMetadataStar(int)
         endMetadataStar(0)
         beginMember()
-          beginMethod(null, null, null, null, get, c)
+          beginMethod(DeclarationKind.Class, null, null, null, null, get, c)
             handleIdentifier(int, typeReference)
             handleNoTypeArguments(get)
             handleType(int, null)
@@ -177,7 +177,7 @@
         beginMetadataStar(int)
         endMetadataStar(0)
         beginMember()
-          beginMethod(null, null, null, null, get, d)
+          beginMethod(DeclarationKind.Class, null, null, null, null, get, d)
             handleIdentifier(int, typeReference)
             handleNoTypeArguments(get)
             handleType(int, null)
@@ -212,7 +212,7 @@
         beginMetadataStar(int)
         endMetadataStar(0)
         beginMember()
-          beginMethod(null, null, null, null, get, e)
+          beginMethod(DeclarationKind.Class, null, null, null, null, get, e)
             handleIdentifier(int, typeReference)
             handleNoTypeArguments(get)
             handleType(int, null)
@@ -251,7 +251,7 @@
         beginMetadataStar(int)
         endMetadataStar(0)
         beginMember()
-          beginMethod(null, null, null, null, get, f)
+          beginMethod(DeclarationKind.Class, null, null, null, null, get, f)
             handleIdentifier(int, typeReference)
             handleNoTypeArguments(get)
             handleType(int, null)
@@ -289,7 +289,7 @@
         beginMetadataStar(int)
         endMetadataStar(0)
         beginMember()
-          beginMethod(null, null, null, null, get, g)
+          beginMethod(DeclarationKind.Class, null, null, null, null, get, g)
             handleIdentifier(int, typeReference)
             handleNoTypeArguments(get)
             handleType(int, null)
@@ -331,7 +331,7 @@
         beginMetadataStar(int)
         endMetadataStar(0)
         beginMember()
-          beginMethod(null, null, null, null, get, h)
+          beginMethod(DeclarationKind.Class, null, null, null, null, get, h)
             handleIdentifier(int, typeReference)
             handleNoTypeArguments(get)
             handleType(int, null)
@@ -372,7 +372,7 @@
         beginMetadataStar(int)
         endMetadataStar(0)
         beginMember()
-          beginMethod(null, null, null, null, null, i)
+          beginMethod(DeclarationKind.Class, null, null, null, null, null, i)
             handleIdentifier(int, typeReference)
             handleNoTypeArguments(i)
             handleType(int, null)
@@ -417,7 +417,7 @@
         beginMetadataStar(int)
         endMetadataStar(0)
         beginMember()
-          beginMethod(null, null, null, null, null, j)
+          beginMethod(DeclarationKind.Class, null, null, null, null, null, j)
             handleIdentifier(int, typeReference)
             handleNoTypeArguments(j)
             handleType(int, null)
@@ -461,7 +461,7 @@
         beginMetadataStar(int)
         endMetadataStar(0)
         beginMember()
-          beginMethod(null, null, null, null, null, k)
+          beginMethod(DeclarationKind.Class, null, null, null, null, null, k)
             handleIdentifier(int, typeReference)
             handleNoTypeArguments(k)
             handleType(int, null)
@@ -509,7 +509,7 @@
         beginMetadataStar(int)
         endMetadataStar(0)
         beginMember()
-          beginMethod(null, null, null, null, null, l)
+          beginMethod(DeclarationKind.Class, null, null, null, null, null, l)
             handleIdentifier(int, typeReference)
             handleNoTypeArguments(l)
             handleType(int, null)
@@ -556,7 +556,7 @@
         beginMetadataStar(int)
         endMetadataStar(0)
         beginMember()
-          beginMethod(null, null, null, null, null, m)
+          beginMethod(DeclarationKind.Class, null, null, null, null, null, m)
             handleIdentifier(int, typeReference)
             handleNoTypeArguments(m)
             handleType(int, null)
@@ -620,7 +620,7 @@
         beginMetadataStar(int)
         endMetadataStar(0)
         beginMember()
-          beginMethod(null, null, null, null, null, n)
+          beginMethod(DeclarationKind.Class, null, null, null, null, null, n)
             handleIdentifier(int, typeReference)
             handleNoTypeArguments(n)
             handleType(int, null)
@@ -683,7 +683,7 @@
         beginMetadataStar(int)
         endMetadataStar(0)
         beginMember()
-          beginMethod(null, null, null, null, null, o)
+          beginMethod(DeclarationKind.Class, null, null, null, null, null, o)
             handleIdentifier(int, typeReference)
             handleNoTypeArguments(o)
             handleType(int, null)
@@ -734,7 +734,7 @@
         beginMetadataStar(int)
         endMetadataStar(0)
         beginMember()
-          beginMethod(null, null, null, null, null, p)
+          beginMethod(DeclarationKind.Class, null, null, null, null, null, p)
             handleIdentifier(int, typeReference)
             handleNoTypeArguments(p)
             handleType(int, null)
@@ -784,7 +784,7 @@
         beginMetadataStar(int)
         endMetadataStar(0)
         beginMember()
-          beginMethod(null, null, null, null, null, q)
+          beginMethod(DeclarationKind.Class, null, null, null, null, null, q)
             handleIdentifier(int, typeReference)
             handleNoTypeArguments(q)
             handleType(int, null)
@@ -838,7 +838,7 @@
         beginMetadataStar(int)
         endMetadataStar(0)
         beginMember()
-          beginMethod(null, null, null, null, null, r)
+          beginMethod(DeclarationKind.Class, null, null, null, null, null, r)
             handleIdentifier(int, typeReference)
             handleNoTypeArguments(r)
             handleType(int, null)
@@ -891,7 +891,7 @@
         beginMetadataStar(s)
         endMetadataStar(0)
         beginMember()
-          beginMethod(null, null, null, null, null, s)
+          beginMethod(DeclarationKind.Class, null, null, null, null, null, s)
             handleNoType(})
             handleIdentifier(s, methodDeclaration)
             handleNoTypeVariables(()
@@ -978,7 +978,7 @@
         beginMetadataStar(Key)
         endMetadataStar(0)
         beginMember()
-          beginMethod(null, null, null, null, null, Key)
+          beginMethod(DeclarationKind.Class, null, null, null, null, null, Key)
             handleNoType(})
             handleIdentifier(Key, methodDeclaration)
             handleNoTypeVariables(()
@@ -1069,7 +1069,7 @@
         beginMetadataStar(Key)
         endMetadataStar(0)
         beginMember()
-          beginMethod(null, null, null, null, null, Key)
+          beginMethod(DeclarationKind.Class, null, null, null, null, null, Key)
             handleNoType(})
             handleIdentifier(Key, methodDeclaration)
             handleNoTypeVariables(()
@@ -1157,7 +1157,7 @@
         beginMetadataStar(not_currently_working)
         endMetadataStar(0)
         beginMember()
-          beginMethod(null, null, null, null, null, not_currently_working)
+          beginMethod(DeclarationKind.Class, null, null, null, null, null, not_currently_working)
             handleNoType(})
             handleIdentifier(not_currently_working, methodDeclaration)
             handleNoTypeVariables(()
@@ -1215,7 +1215,7 @@
             endBlockFunctionBody(3, {, })
           endClassMethod(null, not_currently_working, (, null, })
         endMember()
-      endClassOrMixinBody(DeclarationKind.Class, 22, {, })
+      endClassOrMixinOrExtensionBody(DeclarationKind.Class, 22, {, })
     endClassDeclaration(abstract, })
   endTopLevelDeclaration()
 endCompilationUnit(1, )
diff --git a/pkg/front_end/parser_testcases/error_recovery/issue_26810.dart.intertwined.expect b/pkg/front_end/parser_testcases/error_recovery/issue_26810.dart.intertwined.expect
index 0bf333d..95350ea 100644
--- a/pkg/front_end/parser_testcases/error_recovery/issue_26810.dart.intertwined.expect
+++ b/pkg/front_end/parser_testcases/error_recovery/issue_26810.dart.intertwined.expect
@@ -10,7 +10,7 @@
       parseClassDeclarationModifiers(, class)
         parseTopLevelKeywordModifiers(abstract, class)
       parseClassOrNamedMixinApplication(abstract, class)
-        listener: beginClassOrNamedMixinApplicationPrelude(abstract)
+        listener: beginClassOrMixinOrNamedMixinApplicationPrelude(abstract)
         ensureIdentifier(class, classOrMixinDeclaration)
           listener: handleIdentifier(Key, classOrMixinDeclaration)
         listener: handleNoTypeVariables({)
@@ -26,7 +26,7 @@
               listener: handleClassOrMixinImplements(null, 0)
             listener: handleClassHeader(abstract, class, null)
           parseClassOrMixinOrExtensionBody(Key, DeclarationKind.Class, Key)
-            listener: beginClassOrMixinBody(DeclarationKind.Class, {)
+            listener: beginClassOrMixinOrExtensionBody(DeclarationKind.Class, {)
             notEofOrValue(}, int)
             parseClassOrMixinOrExtensionMemberImpl({, DeclarationKind.Class, Key)
               parseMetadataStar({)
@@ -34,7 +34,7 @@
                 listener: endMetadataStar(0)
               listener: beginMember()
               parseMethod({, null, null, null, null, null, null, {, Instance of 'SimpleType', get, a, DeclarationKind.Class, Key, false)
-                listener: beginMethod(null, null, null, null, get, a)
+                listener: beginMethod(DeclarationKind.Class, null, null, null, null, get, a)
                 listener: handleIdentifier(int, typeReference)
                 listener: handleNoTypeArguments(get)
                 listener: handleType(int, null)
@@ -121,7 +121,7 @@
                 listener: endMetadataStar(0)
               listener: beginMember()
               parseMethod(;, null, null, null, null, null, null, ;, Instance of 'SimpleType', get, b, DeclarationKind.Class, Key, false)
-                listener: beginMethod(null, null, null, null, get, b)
+                listener: beginMethod(DeclarationKind.Class, null, null, null, null, get, b)
                 listener: handleIdentifier(int, typeReference)
                 listener: handleNoTypeArguments(get)
                 listener: handleType(int, null)
@@ -194,7 +194,7 @@
                 listener: endMetadataStar(0)
               listener: beginMember()
               parseMethod(;, null, null, null, null, null, null, ;, Instance of 'SimpleType', get, c, DeclarationKind.Class, Key, false)
-                listener: beginMethod(null, null, null, null, get, c)
+                listener: beginMethod(DeclarationKind.Class, null, null, null, null, get, c)
                 listener: handleIdentifier(int, typeReference)
                 listener: handleNoTypeArguments(get)
                 listener: handleType(int, null)
@@ -288,7 +288,7 @@
                 listener: endMetadataStar(0)
               listener: beginMember()
               parseMethod(}, null, null, null, null, null, null, }, Instance of 'SimpleType', get, d, DeclarationKind.Class, Key, false)
-                listener: beginMethod(null, null, null, null, get, d)
+                listener: beginMethod(DeclarationKind.Class, null, null, null, null, get, d)
                 listener: handleIdentifier(int, typeReference)
                 listener: handleNoTypeArguments(get)
                 listener: handleType(int, null)
@@ -368,7 +368,7 @@
                 listener: endMetadataStar(0)
               listener: beginMember()
               parseMethod(}, null, null, null, null, null, null, }, Instance of 'SimpleType', get, e, DeclarationKind.Class, Key, false)
-                listener: beginMethod(null, null, null, null, get, e)
+                listener: beginMethod(DeclarationKind.Class, null, null, null, null, get, e)
                 listener: handleIdentifier(int, typeReference)
                 listener: handleNoTypeArguments(get)
                 listener: handleType(int, null)
@@ -474,7 +474,7 @@
                 listener: endMetadataStar(0)
               listener: beginMember()
               parseMethod(;, null, null, null, null, null, null, ;, Instance of 'SimpleType', get, f, DeclarationKind.Class, Key, false)
-                listener: beginMethod(null, null, null, null, get, f)
+                listener: beginMethod(DeclarationKind.Class, null, null, null, null, get, f)
                 listener: handleIdentifier(int, typeReference)
                 listener: handleNoTypeArguments(get)
                 listener: handleType(int, null)
@@ -561,7 +561,7 @@
                 listener: endMetadataStar(0)
               listener: beginMember()
               parseMethod(;, null, null, null, null, null, null, ;, Instance of 'SimpleType', get, g, DeclarationKind.Class, Key, false)
-                listener: beginMethod(null, null, null, null, get, g)
+                listener: beginMethod(DeclarationKind.Class, null, null, null, null, get, g)
                 listener: handleIdentifier(int, typeReference)
                 listener: handleNoTypeArguments(get)
                 listener: handleType(int, null)
@@ -674,7 +674,7 @@
                 listener: endMetadataStar(0)
               listener: beginMember()
               parseMethod(}, null, null, null, null, null, null, }, Instance of 'SimpleType', get, h, DeclarationKind.Class, Key, false)
-                listener: beginMethod(null, null, null, null, get, h)
+                listener: beginMethod(DeclarationKind.Class, null, null, null, null, get, h)
                 listener: handleIdentifier(int, typeReference)
                 listener: handleNoTypeArguments(get)
                 listener: handleType(int, null)
@@ -768,7 +768,7 @@
                 listener: endMetadataStar(0)
               listener: beginMember()
               parseMethod(}, null, null, null, null, null, null, }, Instance of 'SimpleType', null, i, DeclarationKind.Class, Key, false)
-                listener: beginMethod(null, null, null, null, null, i)
+                listener: beginMethod(DeclarationKind.Class, null, null, null, null, null, i)
                 listener: handleIdentifier(int, typeReference)
                 listener: handleNoTypeArguments(i)
                 listener: handleType(int, null)
@@ -865,7 +865,7 @@
                 listener: endMetadataStar(0)
               listener: beginMember()
               parseMethod(;, null, null, null, null, null, null, ;, Instance of 'SimpleType', null, j, DeclarationKind.Class, Key, false)
-                listener: beginMethod(null, null, null, null, null, j)
+                listener: beginMethod(DeclarationKind.Class, null, null, null, null, null, j)
                 listener: handleIdentifier(int, typeReference)
                 listener: handleNoTypeArguments(j)
                 listener: handleType(int, null)
@@ -950,7 +950,7 @@
                 listener: endMetadataStar(0)
               listener: beginMember()
               parseMethod(;, null, null, null, null, null, null, ;, Instance of 'SimpleType', null, k, DeclarationKind.Class, Key, false)
-                listener: beginMethod(null, null, null, null, null, k)
+                listener: beginMethod(DeclarationKind.Class, null, null, null, null, null, k)
                 listener: handleIdentifier(int, typeReference)
                 listener: handleNoTypeArguments(k)
                 listener: handleType(int, null)
@@ -1054,7 +1054,7 @@
                 listener: endMetadataStar(0)
               listener: beginMember()
               parseMethod(}, null, null, null, null, null, null, }, Instance of 'SimpleType', null, l, DeclarationKind.Class, Key, false)
-                listener: beginMethod(null, null, null, null, null, l)
+                listener: beginMethod(DeclarationKind.Class, null, null, null, null, null, l)
                 listener: handleIdentifier(int, typeReference)
                 listener: handleNoTypeArguments(l)
                 listener: handleType(int, null)
@@ -1146,7 +1146,7 @@
                 listener: endMetadataStar(0)
               listener: beginMember()
               parseMethod(}, null, null, null, null, null, null, }, Instance of 'SimpleType', null, m, DeclarationKind.Class, Key, false)
-                listener: beginMethod(null, null, null, null, null, m)
+                listener: beginMethod(DeclarationKind.Class, null, null, null, null, null, m)
                 listener: handleIdentifier(int, typeReference)
                 listener: handleNoTypeArguments(m)
                 listener: handleType(int, null)
@@ -1285,7 +1285,7 @@
                 listener: endMetadataStar(0)
               listener: beginMember()
               parseMethod(}, null, null, null, null, null, null, }, Instance of 'SimpleType', null, n, DeclarationKind.Class, Key, false)
-                listener: beginMethod(null, null, null, null, null, n)
+                listener: beginMethod(DeclarationKind.Class, null, null, null, null, null, n)
                 listener: handleIdentifier(int, typeReference)
                 listener: handleNoTypeArguments(n)
                 listener: handleType(int, null)
@@ -1412,7 +1412,7 @@
                 listener: endMetadataStar(0)
               listener: beginMember()
               parseMethod(}, null, null, null, null, null, null, }, Instance of 'SimpleType', null, o, DeclarationKind.Class, Key, false)
-                listener: beginMethod(null, null, null, null, null, o)
+                listener: beginMethod(DeclarationKind.Class, null, null, null, null, null, o)
                 listener: handleIdentifier(int, typeReference)
                 listener: handleNoTypeArguments(o)
                 listener: handleType(int, null)
@@ -1528,7 +1528,7 @@
                 listener: endMetadataStar(0)
               listener: beginMember()
               parseMethod(;, null, null, null, null, null, null, ;, Instance of 'SimpleType', null, p, DeclarationKind.Class, Key, false)
-                listener: beginMethod(null, null, null, null, null, p)
+                listener: beginMethod(DeclarationKind.Class, null, null, null, null, null, p)
                 listener: handleIdentifier(int, typeReference)
                 listener: handleNoTypeArguments(p)
                 listener: handleType(int, null)
@@ -1627,7 +1627,7 @@
                 listener: endMetadataStar(0)
               listener: beginMember()
               parseMethod(;, null, null, null, null, null, null, ;, Instance of 'SimpleType', null, q, DeclarationKind.Class, Key, false)
-                listener: beginMethod(null, null, null, null, null, q)
+                listener: beginMethod(DeclarationKind.Class, null, null, null, null, null, q)
                 listener: handleIdentifier(int, typeReference)
                 listener: handleNoTypeArguments(q)
                 listener: handleType(int, null)
@@ -1750,7 +1750,7 @@
                 listener: endMetadataStar(0)
               listener: beginMember()
               parseMethod(}, null, null, null, null, null, null, }, Instance of 'SimpleType', null, r, DeclarationKind.Class, Key, false)
-                listener: beginMethod(null, null, null, null, null, r)
+                listener: beginMethod(DeclarationKind.Class, null, null, null, null, null, r)
                 listener: handleIdentifier(int, typeReference)
                 listener: handleNoTypeArguments(r)
                 listener: handleType(int, null)
@@ -1857,7 +1857,7 @@
               listener: beginMember()
               isReservedKeyword(()
               parseMethod(}, null, null, null, null, null, null, }, Instance of 'NoType', null, s, DeclarationKind.Class, Key, false)
-                listener: beginMethod(null, null, null, null, null, s)
+                listener: beginMethod(DeclarationKind.Class, null, null, null, null, null, s)
                 listener: handleNoType(})
                 ensureIdentifierPotentiallyRecovered(}, methodDeclaration, false)
                   listener: handleIdentifier(s, methodDeclaration)
@@ -2095,7 +2095,7 @@
               listener: beginMember()
               isReservedKeyword(()
               parseMethod(}, null, null, null, null, null, null, }, Instance of 'NoType', null, Key, DeclarationKind.Class, Key, false)
-                listener: beginMethod(null, null, null, null, null, Key)
+                listener: beginMethod(DeclarationKind.Class, null, null, null, null, null, Key)
                 listener: handleNoType(})
                 ensureIdentifierPotentiallyRecovered(}, methodDeclaration, false)
                   listener: handleIdentifier(Key, methodDeclaration)
@@ -2340,7 +2340,7 @@
               listener: beginMember()
               isReservedKeyword(()
               parseMethod(}, null, null, null, null, null, null, }, Instance of 'NoType', null, Key, DeclarationKind.Class, Key, false)
-                listener: beginMethod(null, null, null, null, null, Key)
+                listener: beginMethod(DeclarationKind.Class, null, null, null, null, null, Key)
                 listener: handleNoType(})
                 ensureIdentifierPotentiallyRecovered(}, methodDeclaration, false)
                   listener: handleIdentifier(Key, methodDeclaration)
@@ -2549,7 +2549,7 @@
               listener: beginMember()
               isReservedKeyword(()
               parseMethod(}, null, null, null, null, null, null, }, Instance of 'NoType', null, not_currently_working, DeclarationKind.Class, Key, false)
-                listener: beginMethod(null, null, null, null, null, not_currently_working)
+                listener: beginMethod(DeclarationKind.Class, null, null, null, null, null, not_currently_working)
                 listener: handleNoType(})
                 ensureIdentifierPotentiallyRecovered(}, methodDeclaration, false)
                   listener: handleIdentifier(not_currently_working, methodDeclaration)
@@ -2678,7 +2678,7 @@
                 listener: endClassMethod(null, not_currently_working, (, null, })
               listener: endMember()
             notEofOrValue(}, })
-            listener: endClassOrMixinBody(DeclarationKind.Class, 22, {, })
+            listener: endClassOrMixinOrExtensionBody(DeclarationKind.Class, 22, {, })
           listener: endClassDeclaration(abstract, })
   listener: endTopLevelDeclaration()
   reportAllErrorTokens(abstract)
diff --git a/pkg/front_end/parser_testcases/error_recovery/issue_26810_and.dart.expect b/pkg/front_end/parser_testcases/error_recovery/issue_26810_and.dart.expect
index e907a22..0859270 100644
--- a/pkg/front_end/parser_testcases/error_recovery/issue_26810_and.dart.expect
+++ b/pkg/front_end/parser_testcases/error_recovery/issue_26810_and.dart.expect
@@ -63,7 +63,7 @@
 beginCompilationUnit(abstract)
   beginMetadataStar(abstract)
   endMetadataStar(0)
-  beginClassOrNamedMixinApplicationPrelude(abstract)
+  beginClassOrMixinOrNamedMixinApplicationPrelude(abstract)
     handleIdentifier(Key, classOrMixinDeclaration)
     handleNoTypeVariables({)
     beginClassDeclaration(abstract, abstract, Key)
@@ -72,11 +72,11 @@
       handleClassNoWithClause()
       handleClassOrMixinImplements(null, 0)
       handleClassHeader(abstract, class, null)
-      beginClassOrMixinBody(DeclarationKind.Class, {)
+      beginClassOrMixinOrExtensionBody(DeclarationKind.Class, {)
         beginMetadataStar(int)
         endMetadataStar(0)
         beginMember()
-          beginMethod(null, null, null, null, get, a)
+          beginMethod(DeclarationKind.Class, null, null, null, null, get, a)
             handleIdentifier(int, typeReference)
             handleNoTypeArguments(get)
             handleType(int, null)
@@ -109,7 +109,7 @@
         beginMetadataStar(int)
         endMetadataStar(0)
         beginMember()
-          beginMethod(null, null, null, null, get, b)
+          beginMethod(DeclarationKind.Class, null, null, null, null, get, b)
             handleIdentifier(int, typeReference)
             handleNoTypeArguments(get)
             handleType(int, null)
@@ -141,7 +141,7 @@
         beginMetadataStar(int)
         endMetadataStar(0)
         beginMember()
-          beginMethod(null, null, null, null, get, c)
+          beginMethod(DeclarationKind.Class, null, null, null, null, get, c)
             handleIdentifier(int, typeReference)
             handleNoTypeArguments(get)
             handleType(int, null)
@@ -177,7 +177,7 @@
         beginMetadataStar(int)
         endMetadataStar(0)
         beginMember()
-          beginMethod(null, null, null, null, get, d)
+          beginMethod(DeclarationKind.Class, null, null, null, null, get, d)
             handleIdentifier(int, typeReference)
             handleNoTypeArguments(get)
             handleType(int, null)
@@ -212,7 +212,7 @@
         beginMetadataStar(int)
         endMetadataStar(0)
         beginMember()
-          beginMethod(null, null, null, null, get, e)
+          beginMethod(DeclarationKind.Class, null, null, null, null, get, e)
             handleIdentifier(int, typeReference)
             handleNoTypeArguments(get)
             handleType(int, null)
@@ -251,7 +251,7 @@
         beginMetadataStar(int)
         endMetadataStar(0)
         beginMember()
-          beginMethod(null, null, null, null, get, f)
+          beginMethod(DeclarationKind.Class, null, null, null, null, get, f)
             handleIdentifier(int, typeReference)
             handleNoTypeArguments(get)
             handleType(int, null)
@@ -289,7 +289,7 @@
         beginMetadataStar(int)
         endMetadataStar(0)
         beginMember()
-          beginMethod(null, null, null, null, get, g)
+          beginMethod(DeclarationKind.Class, null, null, null, null, get, g)
             handleIdentifier(int, typeReference)
             handleNoTypeArguments(get)
             handleType(int, null)
@@ -331,7 +331,7 @@
         beginMetadataStar(int)
         endMetadataStar(0)
         beginMember()
-          beginMethod(null, null, null, null, get, h)
+          beginMethod(DeclarationKind.Class, null, null, null, null, get, h)
             handleIdentifier(int, typeReference)
             handleNoTypeArguments(get)
             handleType(int, null)
@@ -372,7 +372,7 @@
         beginMetadataStar(int)
         endMetadataStar(0)
         beginMember()
-          beginMethod(null, null, null, null, null, i)
+          beginMethod(DeclarationKind.Class, null, null, null, null, null, i)
             handleIdentifier(int, typeReference)
             handleNoTypeArguments(i)
             handleType(int, null)
@@ -417,7 +417,7 @@
         beginMetadataStar(int)
         endMetadataStar(0)
         beginMember()
-          beginMethod(null, null, null, null, null, j)
+          beginMethod(DeclarationKind.Class, null, null, null, null, null, j)
             handleIdentifier(int, typeReference)
             handleNoTypeArguments(j)
             handleType(int, null)
@@ -461,7 +461,7 @@
         beginMetadataStar(int)
         endMetadataStar(0)
         beginMember()
-          beginMethod(null, null, null, null, null, k)
+          beginMethod(DeclarationKind.Class, null, null, null, null, null, k)
             handleIdentifier(int, typeReference)
             handleNoTypeArguments(k)
             handleType(int, null)
@@ -509,7 +509,7 @@
         beginMetadataStar(int)
         endMetadataStar(0)
         beginMember()
-          beginMethod(null, null, null, null, null, l)
+          beginMethod(DeclarationKind.Class, null, null, null, null, null, l)
             handleIdentifier(int, typeReference)
             handleNoTypeArguments(l)
             handleType(int, null)
@@ -556,7 +556,7 @@
         beginMetadataStar(int)
         endMetadataStar(0)
         beginMember()
-          beginMethod(null, null, null, null, null, m)
+          beginMethod(DeclarationKind.Class, null, null, null, null, null, m)
             handleIdentifier(int, typeReference)
             handleNoTypeArguments(m)
             handleType(int, null)
@@ -620,7 +620,7 @@
         beginMetadataStar(int)
         endMetadataStar(0)
         beginMember()
-          beginMethod(null, null, null, null, null, n)
+          beginMethod(DeclarationKind.Class, null, null, null, null, null, n)
             handleIdentifier(int, typeReference)
             handleNoTypeArguments(n)
             handleType(int, null)
@@ -683,7 +683,7 @@
         beginMetadataStar(int)
         endMetadataStar(0)
         beginMember()
-          beginMethod(null, null, null, null, null, o)
+          beginMethod(DeclarationKind.Class, null, null, null, null, null, o)
             handleIdentifier(int, typeReference)
             handleNoTypeArguments(o)
             handleType(int, null)
@@ -734,7 +734,7 @@
         beginMetadataStar(int)
         endMetadataStar(0)
         beginMember()
-          beginMethod(null, null, null, null, null, p)
+          beginMethod(DeclarationKind.Class, null, null, null, null, null, p)
             handleIdentifier(int, typeReference)
             handleNoTypeArguments(p)
             handleType(int, null)
@@ -784,7 +784,7 @@
         beginMetadataStar(int)
         endMetadataStar(0)
         beginMember()
-          beginMethod(null, null, null, null, null, q)
+          beginMethod(DeclarationKind.Class, null, null, null, null, null, q)
             handleIdentifier(int, typeReference)
             handleNoTypeArguments(q)
             handleType(int, null)
@@ -838,7 +838,7 @@
         beginMetadataStar(int)
         endMetadataStar(0)
         beginMember()
-          beginMethod(null, null, null, null, null, r)
+          beginMethod(DeclarationKind.Class, null, null, null, null, null, r)
             handleIdentifier(int, typeReference)
             handleNoTypeArguments(r)
             handleType(int, null)
@@ -891,7 +891,7 @@
         beginMetadataStar(s)
         endMetadataStar(0)
         beginMember()
-          beginMethod(null, null, null, null, null, s)
+          beginMethod(DeclarationKind.Class, null, null, null, null, null, s)
             handleNoType(})
             handleIdentifier(s, methodDeclaration)
             handleNoTypeVariables(()
@@ -978,7 +978,7 @@
         beginMetadataStar(Key)
         endMetadataStar(0)
         beginMember()
-          beginMethod(null, null, null, null, null, Key)
+          beginMethod(DeclarationKind.Class, null, null, null, null, null, Key)
             handleNoType(})
             handleIdentifier(Key, methodDeclaration)
             handleNoTypeVariables(()
@@ -1069,7 +1069,7 @@
         beginMetadataStar(Key)
         endMetadataStar(0)
         beginMember()
-          beginMethod(null, null, null, null, null, Key)
+          beginMethod(DeclarationKind.Class, null, null, null, null, null, Key)
             handleNoType(})
             handleIdentifier(Key, methodDeclaration)
             handleNoTypeVariables(()
@@ -1157,7 +1157,7 @@
         beginMetadataStar(not_currently_working)
         endMetadataStar(0)
         beginMember()
-          beginMethod(null, null, null, null, null, not_currently_working)
+          beginMethod(DeclarationKind.Class, null, null, null, null, null, not_currently_working)
             handleNoType(})
             handleIdentifier(not_currently_working, methodDeclaration)
             handleNoTypeVariables(()
@@ -1215,7 +1215,7 @@
             endBlockFunctionBody(3, {, })
           endClassMethod(null, not_currently_working, (, null, })
         endMember()
-      endClassOrMixinBody(DeclarationKind.Class, 22, {, })
+      endClassOrMixinOrExtensionBody(DeclarationKind.Class, 22, {, })
     endClassDeclaration(abstract, })
   endTopLevelDeclaration()
 endCompilationUnit(1, )
diff --git a/pkg/front_end/parser_testcases/error_recovery/issue_26810_and.dart.intertwined.expect b/pkg/front_end/parser_testcases/error_recovery/issue_26810_and.dart.intertwined.expect
index e6dd152..3f6b15d 100644
--- a/pkg/front_end/parser_testcases/error_recovery/issue_26810_and.dart.intertwined.expect
+++ b/pkg/front_end/parser_testcases/error_recovery/issue_26810_and.dart.intertwined.expect
@@ -10,7 +10,7 @@
       parseClassDeclarationModifiers(, class)
         parseTopLevelKeywordModifiers(abstract, class)
       parseClassOrNamedMixinApplication(abstract, class)
-        listener: beginClassOrNamedMixinApplicationPrelude(abstract)
+        listener: beginClassOrMixinOrNamedMixinApplicationPrelude(abstract)
         ensureIdentifier(class, classOrMixinDeclaration)
           listener: handleIdentifier(Key, classOrMixinDeclaration)
         listener: handleNoTypeVariables({)
@@ -26,7 +26,7 @@
               listener: handleClassOrMixinImplements(null, 0)
             listener: handleClassHeader(abstract, class, null)
           parseClassOrMixinOrExtensionBody(Key, DeclarationKind.Class, Key)
-            listener: beginClassOrMixinBody(DeclarationKind.Class, {)
+            listener: beginClassOrMixinOrExtensionBody(DeclarationKind.Class, {)
             notEofOrValue(}, int)
             parseClassOrMixinOrExtensionMemberImpl({, DeclarationKind.Class, Key)
               parseMetadataStar({)
@@ -34,7 +34,7 @@
                 listener: endMetadataStar(0)
               listener: beginMember()
               parseMethod({, null, null, null, null, null, null, {, Instance of 'SimpleType', get, a, DeclarationKind.Class, Key, false)
-                listener: beginMethod(null, null, null, null, get, a)
+                listener: beginMethod(DeclarationKind.Class, null, null, null, null, get, a)
                 listener: handleIdentifier(int, typeReference)
                 listener: handleNoTypeArguments(get)
                 listener: handleType(int, null)
@@ -121,7 +121,7 @@
                 listener: endMetadataStar(0)
               listener: beginMember()
               parseMethod(;, null, null, null, null, null, null, ;, Instance of 'SimpleType', get, b, DeclarationKind.Class, Key, false)
-                listener: beginMethod(null, null, null, null, get, b)
+                listener: beginMethod(DeclarationKind.Class, null, null, null, null, get, b)
                 listener: handleIdentifier(int, typeReference)
                 listener: handleNoTypeArguments(get)
                 listener: handleType(int, null)
@@ -194,7 +194,7 @@
                 listener: endMetadataStar(0)
               listener: beginMember()
               parseMethod(;, null, null, null, null, null, null, ;, Instance of 'SimpleType', get, c, DeclarationKind.Class, Key, false)
-                listener: beginMethod(null, null, null, null, get, c)
+                listener: beginMethod(DeclarationKind.Class, null, null, null, null, get, c)
                 listener: handleIdentifier(int, typeReference)
                 listener: handleNoTypeArguments(get)
                 listener: handleType(int, null)
@@ -288,7 +288,7 @@
                 listener: endMetadataStar(0)
               listener: beginMember()
               parseMethod(}, null, null, null, null, null, null, }, Instance of 'SimpleType', get, d, DeclarationKind.Class, Key, false)
-                listener: beginMethod(null, null, null, null, get, d)
+                listener: beginMethod(DeclarationKind.Class, null, null, null, null, get, d)
                 listener: handleIdentifier(int, typeReference)
                 listener: handleNoTypeArguments(get)
                 listener: handleType(int, null)
@@ -368,7 +368,7 @@
                 listener: endMetadataStar(0)
               listener: beginMember()
               parseMethod(}, null, null, null, null, null, null, }, Instance of 'SimpleType', get, e, DeclarationKind.Class, Key, false)
-                listener: beginMethod(null, null, null, null, get, e)
+                listener: beginMethod(DeclarationKind.Class, null, null, null, null, get, e)
                 listener: handleIdentifier(int, typeReference)
                 listener: handleNoTypeArguments(get)
                 listener: handleType(int, null)
@@ -475,7 +475,7 @@
                 listener: endMetadataStar(0)
               listener: beginMember()
               parseMethod(;, null, null, null, null, null, null, ;, Instance of 'SimpleType', get, f, DeclarationKind.Class, Key, false)
-                listener: beginMethod(null, null, null, null, get, f)
+                listener: beginMethod(DeclarationKind.Class, null, null, null, null, get, f)
                 listener: handleIdentifier(int, typeReference)
                 listener: handleNoTypeArguments(get)
                 listener: handleType(int, null)
@@ -562,7 +562,7 @@
                 listener: endMetadataStar(0)
               listener: beginMember()
               parseMethod(;, null, null, null, null, null, null, ;, Instance of 'SimpleType', get, g, DeclarationKind.Class, Key, false)
-                listener: beginMethod(null, null, null, null, get, g)
+                listener: beginMethod(DeclarationKind.Class, null, null, null, null, get, g)
                 listener: handleIdentifier(int, typeReference)
                 listener: handleNoTypeArguments(get)
                 listener: handleType(int, null)
@@ -676,7 +676,7 @@
                 listener: endMetadataStar(0)
               listener: beginMember()
               parseMethod(}, null, null, null, null, null, null, }, Instance of 'SimpleType', get, h, DeclarationKind.Class, Key, false)
-                listener: beginMethod(null, null, null, null, get, h)
+                listener: beginMethod(DeclarationKind.Class, null, null, null, null, get, h)
                 listener: handleIdentifier(int, typeReference)
                 listener: handleNoTypeArguments(get)
                 listener: handleType(int, null)
@@ -770,7 +770,7 @@
                 listener: endMetadataStar(0)
               listener: beginMember()
               parseMethod(}, null, null, null, null, null, null, }, Instance of 'SimpleType', null, i, DeclarationKind.Class, Key, false)
-                listener: beginMethod(null, null, null, null, null, i)
+                listener: beginMethod(DeclarationKind.Class, null, null, null, null, null, i)
                 listener: handleIdentifier(int, typeReference)
                 listener: handleNoTypeArguments(i)
                 listener: handleType(int, null)
@@ -867,7 +867,7 @@
                 listener: endMetadataStar(0)
               listener: beginMember()
               parseMethod(;, null, null, null, null, null, null, ;, Instance of 'SimpleType', null, j, DeclarationKind.Class, Key, false)
-                listener: beginMethod(null, null, null, null, null, j)
+                listener: beginMethod(DeclarationKind.Class, null, null, null, null, null, j)
                 listener: handleIdentifier(int, typeReference)
                 listener: handleNoTypeArguments(j)
                 listener: handleType(int, null)
@@ -952,7 +952,7 @@
                 listener: endMetadataStar(0)
               listener: beginMember()
               parseMethod(;, null, null, null, null, null, null, ;, Instance of 'SimpleType', null, k, DeclarationKind.Class, Key, false)
-                listener: beginMethod(null, null, null, null, null, k)
+                listener: beginMethod(DeclarationKind.Class, null, null, null, null, null, k)
                 listener: handleIdentifier(int, typeReference)
                 listener: handleNoTypeArguments(k)
                 listener: handleType(int, null)
@@ -1056,7 +1056,7 @@
                 listener: endMetadataStar(0)
               listener: beginMember()
               parseMethod(}, null, null, null, null, null, null, }, Instance of 'SimpleType', null, l, DeclarationKind.Class, Key, false)
-                listener: beginMethod(null, null, null, null, null, l)
+                listener: beginMethod(DeclarationKind.Class, null, null, null, null, null, l)
                 listener: handleIdentifier(int, typeReference)
                 listener: handleNoTypeArguments(l)
                 listener: handleType(int, null)
@@ -1148,7 +1148,7 @@
                 listener: endMetadataStar(0)
               listener: beginMember()
               parseMethod(}, null, null, null, null, null, null, }, Instance of 'SimpleType', null, m, DeclarationKind.Class, Key, false)
-                listener: beginMethod(null, null, null, null, null, m)
+                listener: beginMethod(DeclarationKind.Class, null, null, null, null, null, m)
                 listener: handleIdentifier(int, typeReference)
                 listener: handleNoTypeArguments(m)
                 listener: handleType(int, null)
@@ -1287,7 +1287,7 @@
                 listener: endMetadataStar(0)
               listener: beginMember()
               parseMethod(}, null, null, null, null, null, null, }, Instance of 'SimpleType', null, n, DeclarationKind.Class, Key, false)
-                listener: beginMethod(null, null, null, null, null, n)
+                listener: beginMethod(DeclarationKind.Class, null, null, null, null, null, n)
                 listener: handleIdentifier(int, typeReference)
                 listener: handleNoTypeArguments(n)
                 listener: handleType(int, null)
@@ -1414,7 +1414,7 @@
                 listener: endMetadataStar(0)
               listener: beginMember()
               parseMethod(}, null, null, null, null, null, null, }, Instance of 'SimpleType', null, o, DeclarationKind.Class, Key, false)
-                listener: beginMethod(null, null, null, null, null, o)
+                listener: beginMethod(DeclarationKind.Class, null, null, null, null, null, o)
                 listener: handleIdentifier(int, typeReference)
                 listener: handleNoTypeArguments(o)
                 listener: handleType(int, null)
@@ -1531,7 +1531,7 @@
                 listener: endMetadataStar(0)
               listener: beginMember()
               parseMethod(;, null, null, null, null, null, null, ;, Instance of 'SimpleType', null, p, DeclarationKind.Class, Key, false)
-                listener: beginMethod(null, null, null, null, null, p)
+                listener: beginMethod(DeclarationKind.Class, null, null, null, null, null, p)
                 listener: handleIdentifier(int, typeReference)
                 listener: handleNoTypeArguments(p)
                 listener: handleType(int, null)
@@ -1630,7 +1630,7 @@
                 listener: endMetadataStar(0)
               listener: beginMember()
               parseMethod(;, null, null, null, null, null, null, ;, Instance of 'SimpleType', null, q, DeclarationKind.Class, Key, false)
-                listener: beginMethod(null, null, null, null, null, q)
+                listener: beginMethod(DeclarationKind.Class, null, null, null, null, null, q)
                 listener: handleIdentifier(int, typeReference)
                 listener: handleNoTypeArguments(q)
                 listener: handleType(int, null)
@@ -1754,7 +1754,7 @@
                 listener: endMetadataStar(0)
               listener: beginMember()
               parseMethod(}, null, null, null, null, null, null, }, Instance of 'SimpleType', null, r, DeclarationKind.Class, Key, false)
-                listener: beginMethod(null, null, null, null, null, r)
+                listener: beginMethod(DeclarationKind.Class, null, null, null, null, null, r)
                 listener: handleIdentifier(int, typeReference)
                 listener: handleNoTypeArguments(r)
                 listener: handleType(int, null)
@@ -1861,7 +1861,7 @@
               listener: beginMember()
               isReservedKeyword(()
               parseMethod(}, null, null, null, null, null, null, }, Instance of 'NoType', null, s, DeclarationKind.Class, Key, false)
-                listener: beginMethod(null, null, null, null, null, s)
+                listener: beginMethod(DeclarationKind.Class, null, null, null, null, null, s)
                 listener: handleNoType(})
                 ensureIdentifierPotentiallyRecovered(}, methodDeclaration, false)
                   listener: handleIdentifier(s, methodDeclaration)
@@ -2099,7 +2099,7 @@
               listener: beginMember()
               isReservedKeyword(()
               parseMethod(}, null, null, null, null, null, null, }, Instance of 'NoType', null, Key, DeclarationKind.Class, Key, false)
-                listener: beginMethod(null, null, null, null, null, Key)
+                listener: beginMethod(DeclarationKind.Class, null, null, null, null, null, Key)
                 listener: handleNoType(})
                 ensureIdentifierPotentiallyRecovered(}, methodDeclaration, false)
                   listener: handleIdentifier(Key, methodDeclaration)
@@ -2344,7 +2344,7 @@
               listener: beginMember()
               isReservedKeyword(()
               parseMethod(}, null, null, null, null, null, null, }, Instance of 'NoType', null, Key, DeclarationKind.Class, Key, false)
-                listener: beginMethod(null, null, null, null, null, Key)
+                listener: beginMethod(DeclarationKind.Class, null, null, null, null, null, Key)
                 listener: handleNoType(})
                 ensureIdentifierPotentiallyRecovered(}, methodDeclaration, false)
                   listener: handleIdentifier(Key, methodDeclaration)
@@ -2553,7 +2553,7 @@
               listener: beginMember()
               isReservedKeyword(()
               parseMethod(}, null, null, null, null, null, null, }, Instance of 'NoType', null, not_currently_working, DeclarationKind.Class, Key, false)
-                listener: beginMethod(null, null, null, null, null, not_currently_working)
+                listener: beginMethod(DeclarationKind.Class, null, null, null, null, null, not_currently_working)
                 listener: handleNoType(})
                 ensureIdentifierPotentiallyRecovered(}, methodDeclaration, false)
                   listener: handleIdentifier(not_currently_working, methodDeclaration)
@@ -2682,7 +2682,7 @@
                 listener: endClassMethod(null, not_currently_working, (, null, })
               listener: endMember()
             notEofOrValue(}, })
-            listener: endClassOrMixinBody(DeclarationKind.Class, 22, {, })
+            listener: endClassOrMixinOrExtensionBody(DeclarationKind.Class, 22, {, })
           listener: endClassDeclaration(abstract, })
   listener: endTopLevelDeclaration()
   reportAllErrorTokens(abstract)
diff --git a/pkg/front_end/parser_testcases/error_recovery/issue_26810_or.dart.expect b/pkg/front_end/parser_testcases/error_recovery/issue_26810_or.dart.expect
index 9080b89..fae98c4 100644
--- a/pkg/front_end/parser_testcases/error_recovery/issue_26810_or.dart.expect
+++ b/pkg/front_end/parser_testcases/error_recovery/issue_26810_or.dart.expect
@@ -63,7 +63,7 @@
 beginCompilationUnit(abstract)
   beginMetadataStar(abstract)
   endMetadataStar(0)
-  beginClassOrNamedMixinApplicationPrelude(abstract)
+  beginClassOrMixinOrNamedMixinApplicationPrelude(abstract)
     handleIdentifier(Key, classOrMixinDeclaration)
     handleNoTypeVariables({)
     beginClassDeclaration(abstract, abstract, Key)
@@ -72,11 +72,11 @@
       handleClassNoWithClause()
       handleClassOrMixinImplements(null, 0)
       handleClassHeader(abstract, class, null)
-      beginClassOrMixinBody(DeclarationKind.Class, {)
+      beginClassOrMixinOrExtensionBody(DeclarationKind.Class, {)
         beginMetadataStar(int)
         endMetadataStar(0)
         beginMember()
-          beginMethod(null, null, null, null, get, a)
+          beginMethod(DeclarationKind.Class, null, null, null, null, get, a)
             handleIdentifier(int, typeReference)
             handleNoTypeArguments(get)
             handleType(int, null)
@@ -109,7 +109,7 @@
         beginMetadataStar(int)
         endMetadataStar(0)
         beginMember()
-          beginMethod(null, null, null, null, get, b)
+          beginMethod(DeclarationKind.Class, null, null, null, null, get, b)
             handleIdentifier(int, typeReference)
             handleNoTypeArguments(get)
             handleType(int, null)
@@ -141,7 +141,7 @@
         beginMetadataStar(int)
         endMetadataStar(0)
         beginMember()
-          beginMethod(null, null, null, null, get, c)
+          beginMethod(DeclarationKind.Class, null, null, null, null, get, c)
             handleIdentifier(int, typeReference)
             handleNoTypeArguments(get)
             handleType(int, null)
@@ -177,7 +177,7 @@
         beginMetadataStar(int)
         endMetadataStar(0)
         beginMember()
-          beginMethod(null, null, null, null, get, d)
+          beginMethod(DeclarationKind.Class, null, null, null, null, get, d)
             handleIdentifier(int, typeReference)
             handleNoTypeArguments(get)
             handleType(int, null)
@@ -212,7 +212,7 @@
         beginMetadataStar(int)
         endMetadataStar(0)
         beginMember()
-          beginMethod(null, null, null, null, get, e)
+          beginMethod(DeclarationKind.Class, null, null, null, null, get, e)
             handleIdentifier(int, typeReference)
             handleNoTypeArguments(get)
             handleType(int, null)
@@ -251,7 +251,7 @@
         beginMetadataStar(int)
         endMetadataStar(0)
         beginMember()
-          beginMethod(null, null, null, null, get, f)
+          beginMethod(DeclarationKind.Class, null, null, null, null, get, f)
             handleIdentifier(int, typeReference)
             handleNoTypeArguments(get)
             handleType(int, null)
@@ -289,7 +289,7 @@
         beginMetadataStar(int)
         endMetadataStar(0)
         beginMember()
-          beginMethod(null, null, null, null, get, g)
+          beginMethod(DeclarationKind.Class, null, null, null, null, get, g)
             handleIdentifier(int, typeReference)
             handleNoTypeArguments(get)
             handleType(int, null)
@@ -331,7 +331,7 @@
         beginMetadataStar(int)
         endMetadataStar(0)
         beginMember()
-          beginMethod(null, null, null, null, get, h)
+          beginMethod(DeclarationKind.Class, null, null, null, null, get, h)
             handleIdentifier(int, typeReference)
             handleNoTypeArguments(get)
             handleType(int, null)
@@ -372,7 +372,7 @@
         beginMetadataStar(int)
         endMetadataStar(0)
         beginMember()
-          beginMethod(null, null, null, null, null, i)
+          beginMethod(DeclarationKind.Class, null, null, null, null, null, i)
             handleIdentifier(int, typeReference)
             handleNoTypeArguments(i)
             handleType(int, null)
@@ -417,7 +417,7 @@
         beginMetadataStar(int)
         endMetadataStar(0)
         beginMember()
-          beginMethod(null, null, null, null, null, j)
+          beginMethod(DeclarationKind.Class, null, null, null, null, null, j)
             handleIdentifier(int, typeReference)
             handleNoTypeArguments(j)
             handleType(int, null)
@@ -461,7 +461,7 @@
         beginMetadataStar(int)
         endMetadataStar(0)
         beginMember()
-          beginMethod(null, null, null, null, null, k)
+          beginMethod(DeclarationKind.Class, null, null, null, null, null, k)
             handleIdentifier(int, typeReference)
             handleNoTypeArguments(k)
             handleType(int, null)
@@ -509,7 +509,7 @@
         beginMetadataStar(int)
         endMetadataStar(0)
         beginMember()
-          beginMethod(null, null, null, null, null, l)
+          beginMethod(DeclarationKind.Class, null, null, null, null, null, l)
             handleIdentifier(int, typeReference)
             handleNoTypeArguments(l)
             handleType(int, null)
@@ -556,7 +556,7 @@
         beginMetadataStar(int)
         endMetadataStar(0)
         beginMember()
-          beginMethod(null, null, null, null, null, m)
+          beginMethod(DeclarationKind.Class, null, null, null, null, null, m)
             handleIdentifier(int, typeReference)
             handleNoTypeArguments(m)
             handleType(int, null)
@@ -620,7 +620,7 @@
         beginMetadataStar(int)
         endMetadataStar(0)
         beginMember()
-          beginMethod(null, null, null, null, null, n)
+          beginMethod(DeclarationKind.Class, null, null, null, null, null, n)
             handleIdentifier(int, typeReference)
             handleNoTypeArguments(n)
             handleType(int, null)
@@ -683,7 +683,7 @@
         beginMetadataStar(int)
         endMetadataStar(0)
         beginMember()
-          beginMethod(null, null, null, null, null, o)
+          beginMethod(DeclarationKind.Class, null, null, null, null, null, o)
             handleIdentifier(int, typeReference)
             handleNoTypeArguments(o)
             handleType(int, null)
@@ -734,7 +734,7 @@
         beginMetadataStar(int)
         endMetadataStar(0)
         beginMember()
-          beginMethod(null, null, null, null, null, p)
+          beginMethod(DeclarationKind.Class, null, null, null, null, null, p)
             handleIdentifier(int, typeReference)
             handleNoTypeArguments(p)
             handleType(int, null)
@@ -784,7 +784,7 @@
         beginMetadataStar(int)
         endMetadataStar(0)
         beginMember()
-          beginMethod(null, null, null, null, null, q)
+          beginMethod(DeclarationKind.Class, null, null, null, null, null, q)
             handleIdentifier(int, typeReference)
             handleNoTypeArguments(q)
             handleType(int, null)
@@ -838,7 +838,7 @@
         beginMetadataStar(int)
         endMetadataStar(0)
         beginMember()
-          beginMethod(null, null, null, null, null, r)
+          beginMethod(DeclarationKind.Class, null, null, null, null, null, r)
             handleIdentifier(int, typeReference)
             handleNoTypeArguments(r)
             handleType(int, null)
@@ -891,7 +891,7 @@
         beginMetadataStar(s)
         endMetadataStar(0)
         beginMember()
-          beginMethod(null, null, null, null, null, s)
+          beginMethod(DeclarationKind.Class, null, null, null, null, null, s)
             handleNoType(})
             handleIdentifier(s, methodDeclaration)
             handleNoTypeVariables(()
@@ -978,7 +978,7 @@
         beginMetadataStar(Key)
         endMetadataStar(0)
         beginMember()
-          beginMethod(null, null, null, null, null, Key)
+          beginMethod(DeclarationKind.Class, null, null, null, null, null, Key)
             handleNoType(})
             handleIdentifier(Key, methodDeclaration)
             handleNoTypeVariables(()
@@ -1069,7 +1069,7 @@
         beginMetadataStar(Key)
         endMetadataStar(0)
         beginMember()
-          beginMethod(null, null, null, null, null, Key)
+          beginMethod(DeclarationKind.Class, null, null, null, null, null, Key)
             handleNoType(})
             handleIdentifier(Key, methodDeclaration)
             handleNoTypeVariables(()
@@ -1157,7 +1157,7 @@
         beginMetadataStar(not_currently_working)
         endMetadataStar(0)
         beginMember()
-          beginMethod(null, null, null, null, null, not_currently_working)
+          beginMethod(DeclarationKind.Class, null, null, null, null, null, not_currently_working)
             handleNoType(})
             handleIdentifier(not_currently_working, methodDeclaration)
             handleNoTypeVariables(()
@@ -1215,7 +1215,7 @@
             endBlockFunctionBody(3, {, })
           endClassMethod(null, not_currently_working, (, null, })
         endMember()
-      endClassOrMixinBody(DeclarationKind.Class, 22, {, })
+      endClassOrMixinOrExtensionBody(DeclarationKind.Class, 22, {, })
     endClassDeclaration(abstract, })
   endTopLevelDeclaration()
 endCompilationUnit(1, )
diff --git a/pkg/front_end/parser_testcases/error_recovery/issue_26810_or.dart.intertwined.expect b/pkg/front_end/parser_testcases/error_recovery/issue_26810_or.dart.intertwined.expect
index af1484e..5923c78 100644
--- a/pkg/front_end/parser_testcases/error_recovery/issue_26810_or.dart.intertwined.expect
+++ b/pkg/front_end/parser_testcases/error_recovery/issue_26810_or.dart.intertwined.expect
@@ -10,7 +10,7 @@
       parseClassDeclarationModifiers(, class)
         parseTopLevelKeywordModifiers(abstract, class)
       parseClassOrNamedMixinApplication(abstract, class)
-        listener: beginClassOrNamedMixinApplicationPrelude(abstract)
+        listener: beginClassOrMixinOrNamedMixinApplicationPrelude(abstract)
         ensureIdentifier(class, classOrMixinDeclaration)
           listener: handleIdentifier(Key, classOrMixinDeclaration)
         listener: handleNoTypeVariables({)
@@ -26,7 +26,7 @@
               listener: handleClassOrMixinImplements(null, 0)
             listener: handleClassHeader(abstract, class, null)
           parseClassOrMixinOrExtensionBody(Key, DeclarationKind.Class, Key)
-            listener: beginClassOrMixinBody(DeclarationKind.Class, {)
+            listener: beginClassOrMixinOrExtensionBody(DeclarationKind.Class, {)
             notEofOrValue(}, int)
             parseClassOrMixinOrExtensionMemberImpl({, DeclarationKind.Class, Key)
               parseMetadataStar({)
@@ -34,7 +34,7 @@
                 listener: endMetadataStar(0)
               listener: beginMember()
               parseMethod({, null, null, null, null, null, null, {, Instance of 'SimpleType', get, a, DeclarationKind.Class, Key, false)
-                listener: beginMethod(null, null, null, null, get, a)
+                listener: beginMethod(DeclarationKind.Class, null, null, null, null, get, a)
                 listener: handleIdentifier(int, typeReference)
                 listener: handleNoTypeArguments(get)
                 listener: handleType(int, null)
@@ -121,7 +121,7 @@
                 listener: endMetadataStar(0)
               listener: beginMember()
               parseMethod(;, null, null, null, null, null, null, ;, Instance of 'SimpleType', get, b, DeclarationKind.Class, Key, false)
-                listener: beginMethod(null, null, null, null, get, b)
+                listener: beginMethod(DeclarationKind.Class, null, null, null, null, get, b)
                 listener: handleIdentifier(int, typeReference)
                 listener: handleNoTypeArguments(get)
                 listener: handleType(int, null)
@@ -194,7 +194,7 @@
                 listener: endMetadataStar(0)
               listener: beginMember()
               parseMethod(;, null, null, null, null, null, null, ;, Instance of 'SimpleType', get, c, DeclarationKind.Class, Key, false)
-                listener: beginMethod(null, null, null, null, get, c)
+                listener: beginMethod(DeclarationKind.Class, null, null, null, null, get, c)
                 listener: handleIdentifier(int, typeReference)
                 listener: handleNoTypeArguments(get)
                 listener: handleType(int, null)
@@ -288,7 +288,7 @@
                 listener: endMetadataStar(0)
               listener: beginMember()
               parseMethod(}, null, null, null, null, null, null, }, Instance of 'SimpleType', get, d, DeclarationKind.Class, Key, false)
-                listener: beginMethod(null, null, null, null, get, d)
+                listener: beginMethod(DeclarationKind.Class, null, null, null, null, get, d)
                 listener: handleIdentifier(int, typeReference)
                 listener: handleNoTypeArguments(get)
                 listener: handleType(int, null)
@@ -368,7 +368,7 @@
                 listener: endMetadataStar(0)
               listener: beginMember()
               parseMethod(}, null, null, null, null, null, null, }, Instance of 'SimpleType', get, e, DeclarationKind.Class, Key, false)
-                listener: beginMethod(null, null, null, null, get, e)
+                listener: beginMethod(DeclarationKind.Class, null, null, null, null, get, e)
                 listener: handleIdentifier(int, typeReference)
                 listener: handleNoTypeArguments(get)
                 listener: handleType(int, null)
@@ -475,7 +475,7 @@
                 listener: endMetadataStar(0)
               listener: beginMember()
               parseMethod(;, null, null, null, null, null, null, ;, Instance of 'SimpleType', get, f, DeclarationKind.Class, Key, false)
-                listener: beginMethod(null, null, null, null, get, f)
+                listener: beginMethod(DeclarationKind.Class, null, null, null, null, get, f)
                 listener: handleIdentifier(int, typeReference)
                 listener: handleNoTypeArguments(get)
                 listener: handleType(int, null)
@@ -562,7 +562,7 @@
                 listener: endMetadataStar(0)
               listener: beginMember()
               parseMethod(;, null, null, null, null, null, null, ;, Instance of 'SimpleType', get, g, DeclarationKind.Class, Key, false)
-                listener: beginMethod(null, null, null, null, get, g)
+                listener: beginMethod(DeclarationKind.Class, null, null, null, null, get, g)
                 listener: handleIdentifier(int, typeReference)
                 listener: handleNoTypeArguments(get)
                 listener: handleType(int, null)
@@ -676,7 +676,7 @@
                 listener: endMetadataStar(0)
               listener: beginMember()
               parseMethod(}, null, null, null, null, null, null, }, Instance of 'SimpleType', get, h, DeclarationKind.Class, Key, false)
-                listener: beginMethod(null, null, null, null, get, h)
+                listener: beginMethod(DeclarationKind.Class, null, null, null, null, get, h)
                 listener: handleIdentifier(int, typeReference)
                 listener: handleNoTypeArguments(get)
                 listener: handleType(int, null)
@@ -770,7 +770,7 @@
                 listener: endMetadataStar(0)
               listener: beginMember()
               parseMethod(}, null, null, null, null, null, null, }, Instance of 'SimpleType', null, i, DeclarationKind.Class, Key, false)
-                listener: beginMethod(null, null, null, null, null, i)
+                listener: beginMethod(DeclarationKind.Class, null, null, null, null, null, i)
                 listener: handleIdentifier(int, typeReference)
                 listener: handleNoTypeArguments(i)
                 listener: handleType(int, null)
@@ -867,7 +867,7 @@
                 listener: endMetadataStar(0)
               listener: beginMember()
               parseMethod(;, null, null, null, null, null, null, ;, Instance of 'SimpleType', null, j, DeclarationKind.Class, Key, false)
-                listener: beginMethod(null, null, null, null, null, j)
+                listener: beginMethod(DeclarationKind.Class, null, null, null, null, null, j)
                 listener: handleIdentifier(int, typeReference)
                 listener: handleNoTypeArguments(j)
                 listener: handleType(int, null)
@@ -952,7 +952,7 @@
                 listener: endMetadataStar(0)
               listener: beginMember()
               parseMethod(;, null, null, null, null, null, null, ;, Instance of 'SimpleType', null, k, DeclarationKind.Class, Key, false)
-                listener: beginMethod(null, null, null, null, null, k)
+                listener: beginMethod(DeclarationKind.Class, null, null, null, null, null, k)
                 listener: handleIdentifier(int, typeReference)
                 listener: handleNoTypeArguments(k)
                 listener: handleType(int, null)
@@ -1056,7 +1056,7 @@
                 listener: endMetadataStar(0)
               listener: beginMember()
               parseMethod(}, null, null, null, null, null, null, }, Instance of 'SimpleType', null, l, DeclarationKind.Class, Key, false)
-                listener: beginMethod(null, null, null, null, null, l)
+                listener: beginMethod(DeclarationKind.Class, null, null, null, null, null, l)
                 listener: handleIdentifier(int, typeReference)
                 listener: handleNoTypeArguments(l)
                 listener: handleType(int, null)
@@ -1148,7 +1148,7 @@
                 listener: endMetadataStar(0)
               listener: beginMember()
               parseMethod(}, null, null, null, null, null, null, }, Instance of 'SimpleType', null, m, DeclarationKind.Class, Key, false)
-                listener: beginMethod(null, null, null, null, null, m)
+                listener: beginMethod(DeclarationKind.Class, null, null, null, null, null, m)
                 listener: handleIdentifier(int, typeReference)
                 listener: handleNoTypeArguments(m)
                 listener: handleType(int, null)
@@ -1287,7 +1287,7 @@
                 listener: endMetadataStar(0)
               listener: beginMember()
               parseMethod(}, null, null, null, null, null, null, }, Instance of 'SimpleType', null, n, DeclarationKind.Class, Key, false)
-                listener: beginMethod(null, null, null, null, null, n)
+                listener: beginMethod(DeclarationKind.Class, null, null, null, null, null, n)
                 listener: handleIdentifier(int, typeReference)
                 listener: handleNoTypeArguments(n)
                 listener: handleType(int, null)
@@ -1414,7 +1414,7 @@
                 listener: endMetadataStar(0)
               listener: beginMember()
               parseMethod(}, null, null, null, null, null, null, }, Instance of 'SimpleType', null, o, DeclarationKind.Class, Key, false)
-                listener: beginMethod(null, null, null, null, null, o)
+                listener: beginMethod(DeclarationKind.Class, null, null, null, null, null, o)
                 listener: handleIdentifier(int, typeReference)
                 listener: handleNoTypeArguments(o)
                 listener: handleType(int, null)
@@ -1531,7 +1531,7 @@
                 listener: endMetadataStar(0)
               listener: beginMember()
               parseMethod(;, null, null, null, null, null, null, ;, Instance of 'SimpleType', null, p, DeclarationKind.Class, Key, false)
-                listener: beginMethod(null, null, null, null, null, p)
+                listener: beginMethod(DeclarationKind.Class, null, null, null, null, null, p)
                 listener: handleIdentifier(int, typeReference)
                 listener: handleNoTypeArguments(p)
                 listener: handleType(int, null)
@@ -1630,7 +1630,7 @@
                 listener: endMetadataStar(0)
               listener: beginMember()
               parseMethod(;, null, null, null, null, null, null, ;, Instance of 'SimpleType', null, q, DeclarationKind.Class, Key, false)
-                listener: beginMethod(null, null, null, null, null, q)
+                listener: beginMethod(DeclarationKind.Class, null, null, null, null, null, q)
                 listener: handleIdentifier(int, typeReference)
                 listener: handleNoTypeArguments(q)
                 listener: handleType(int, null)
@@ -1754,7 +1754,7 @@
                 listener: endMetadataStar(0)
               listener: beginMember()
               parseMethod(}, null, null, null, null, null, null, }, Instance of 'SimpleType', null, r, DeclarationKind.Class, Key, false)
-                listener: beginMethod(null, null, null, null, null, r)
+                listener: beginMethod(DeclarationKind.Class, null, null, null, null, null, r)
                 listener: handleIdentifier(int, typeReference)
                 listener: handleNoTypeArguments(r)
                 listener: handleType(int, null)
@@ -1861,7 +1861,7 @@
               listener: beginMember()
               isReservedKeyword(()
               parseMethod(}, null, null, null, null, null, null, }, Instance of 'NoType', null, s, DeclarationKind.Class, Key, false)
-                listener: beginMethod(null, null, null, null, null, s)
+                listener: beginMethod(DeclarationKind.Class, null, null, null, null, null, s)
                 listener: handleNoType(})
                 ensureIdentifierPotentiallyRecovered(}, methodDeclaration, false)
                   listener: handleIdentifier(s, methodDeclaration)
@@ -2099,7 +2099,7 @@
               listener: beginMember()
               isReservedKeyword(()
               parseMethod(}, null, null, null, null, null, null, }, Instance of 'NoType', null, Key, DeclarationKind.Class, Key, false)
-                listener: beginMethod(null, null, null, null, null, Key)
+                listener: beginMethod(DeclarationKind.Class, null, null, null, null, null, Key)
                 listener: handleNoType(})
                 ensureIdentifierPotentiallyRecovered(}, methodDeclaration, false)
                   listener: handleIdentifier(Key, methodDeclaration)
@@ -2344,7 +2344,7 @@
               listener: beginMember()
               isReservedKeyword(()
               parseMethod(}, null, null, null, null, null, null, }, Instance of 'NoType', null, Key, DeclarationKind.Class, Key, false)
-                listener: beginMethod(null, null, null, null, null, Key)
+                listener: beginMethod(DeclarationKind.Class, null, null, null, null, null, Key)
                 listener: handleNoType(})
                 ensureIdentifierPotentiallyRecovered(}, methodDeclaration, false)
                   listener: handleIdentifier(Key, methodDeclaration)
@@ -2553,7 +2553,7 @@
               listener: beginMember()
               isReservedKeyword(()
               parseMethod(}, null, null, null, null, null, null, }, Instance of 'NoType', null, not_currently_working, DeclarationKind.Class, Key, false)
-                listener: beginMethod(null, null, null, null, null, not_currently_working)
+                listener: beginMethod(DeclarationKind.Class, null, null, null, null, null, not_currently_working)
                 listener: handleNoType(})
                 ensureIdentifierPotentiallyRecovered(}, methodDeclaration, false)
                   listener: handleIdentifier(not_currently_working, methodDeclaration)
@@ -2682,7 +2682,7 @@
                 listener: endClassMethod(null, not_currently_working, (, null, })
               listener: endMember()
             notEofOrValue(}, })
-            listener: endClassOrMixinBody(DeclarationKind.Class, 22, {, })
+            listener: endClassOrMixinOrExtensionBody(DeclarationKind.Class, 22, {, })
           listener: endClassDeclaration(abstract, })
   listener: endTopLevelDeclaration()
   reportAllErrorTokens(abstract)
diff --git a/pkg/front_end/parser_testcases/error_recovery/issue_39026.crash_dart.expect b/pkg/front_end/parser_testcases/error_recovery/issue_39026.crash_dart.expect
index 2ae2a55..550de5d 100644
--- a/pkg/front_end/parser_testcases/error_recovery/issue_39026.crash_dart.expect
+++ b/pkg/front_end/parser_testcases/error_recovery/issue_39026.crash_dart.expect
@@ -11,7 +11,7 @@
 beginCompilationUnit(class)
   beginMetadataStar(class)
   endMetadataStar(0)
-  beginClassOrNamedMixinApplicationPrelude(class)
+  beginClassOrMixinOrNamedMixinApplicationPrelude(class)
     handleIdentifier(A, classOrMixinDeclaration)
     handleNoTypeVariables({)
     beginClassDeclaration(class, null, A)
@@ -20,12 +20,12 @@
       handleClassNoWithClause()
       handleClassOrMixinImplements(null, 0)
       handleClassHeader(class, class, null)
-      beginClassOrMixinBody(DeclarationKind.Class, {)
+      beginClassOrMixinOrExtensionBody(DeclarationKind.Class, {)
         beginMetadataStar(co)
         endMetadataStar(0)
         beginMember()
           handleRecoverableError(MissingOperatorKeyword, <, <)
-          beginMethod(null, null, null, null, null, operator)
+          beginMethod(DeclarationKind.Class, null, null, null, null, null, operator)
             handleIdentifier(co, typeReference)
             handleNoTypeArguments(operator)
             handleType(co, null)
@@ -40,7 +40,7 @@
             endBlockFunctionBody(0, {, })
           endClassMethod(null, co, (, null, })
         endMember()
-      endClassOrMixinBody(DeclarationKind.Class, 1, {, })
+      endClassOrMixinOrExtensionBody(DeclarationKind.Class, 1, {, })
     endClassDeclaration(class, })
   endTopLevelDeclaration()
 endCompilationUnit(1, )
diff --git a/pkg/front_end/parser_testcases/error_recovery/issue_39026.crash_dart.intertwined.expect b/pkg/front_end/parser_testcases/error_recovery/issue_39026.crash_dart.intertwined.expect
index 6a32cbd..20a6ec6 100644
--- a/pkg/front_end/parser_testcases/error_recovery/issue_39026.crash_dart.intertwined.expect
+++ b/pkg/front_end/parser_testcases/error_recovery/issue_39026.crash_dart.intertwined.expect
@@ -9,7 +9,7 @@
     parseTopLevelKeywordDeclaration(, class, Instance of 'DirectiveContext')
       parseClassDeclarationModifiers(, class)
       parseClassOrNamedMixinApplication(null, class)
-        listener: beginClassOrNamedMixinApplicationPrelude(class)
+        listener: beginClassOrMixinOrNamedMixinApplicationPrelude(class)
         ensureIdentifier(class, classOrMixinDeclaration)
           listener: handleIdentifier(A, classOrMixinDeclaration)
         listener: handleNoTypeVariables({)
@@ -25,7 +25,7 @@
               listener: handleClassOrMixinImplements(null, 0)
             listener: handleClassHeader(class, class, null)
           parseClassOrMixinOrExtensionBody(A, DeclarationKind.Class, A)
-            listener: beginClassOrMixinBody(DeclarationKind.Class, {)
+            listener: beginClassOrMixinOrExtensionBody(DeclarationKind.Class, {)
             notEofOrValue(}, co)
             parseClassOrMixinOrExtensionMemberImpl({, DeclarationKind.Class, A)
               parseMetadataStar({)
@@ -37,7 +37,7 @@
                   listener: handleRecoverableError(MissingOperatorKeyword, <, <)
                 rewriter()
                 parseMethod({, null, null, null, null, null, null, {, Instance of 'SimpleType', null, operator, DeclarationKind.Class, A, false)
-                  listener: beginMethod(null, null, null, null, null, operator)
+                  listener: beginMethod(DeclarationKind.Class, null, null, null, null, null, operator)
                   listener: handleIdentifier(co, typeReference)
                   listener: handleNoTypeArguments(operator)
                   listener: handleType(co, null)
@@ -66,7 +66,7 @@
                   listener: endClassMethod(null, co, (, null, })
                 listener: endMember()
             notEofOrValue(}, })
-            listener: endClassOrMixinBody(DeclarationKind.Class, 1, {, })
+            listener: endClassOrMixinOrExtensionBody(DeclarationKind.Class, 1, {, })
           listener: endClassDeclaration(class, })
   listener: endTopLevelDeclaration()
   reportAllErrorTokens(class)
diff --git a/pkg/front_end/parser_testcases/error_recovery/issue_39026_prime.crash_dart.expect b/pkg/front_end/parser_testcases/error_recovery/issue_39026_prime.crash_dart.expect
index 36cbb74..2c563eb 100644
--- a/pkg/front_end/parser_testcases/error_recovery/issue_39026_prime.crash_dart.expect
+++ b/pkg/front_end/parser_testcases/error_recovery/issue_39026_prime.crash_dart.expect
@@ -7,7 +7,7 @@
 beginCompilationUnit(class)
   beginMetadataStar(class)
   endMetadataStar(0)
-  beginClassOrNamedMixinApplicationPrelude(class)
+  beginClassOrMixinOrNamedMixinApplicationPrelude(class)
     handleIdentifier(A, classOrMixinDeclaration)
     handleNoTypeVariables({)
     beginClassDeclaration(class, null, A)
@@ -16,11 +16,11 @@
       handleClassNoWithClause()
       handleClassOrMixinImplements(null, 0)
       handleClassHeader(class, class, null)
-      beginClassOrMixinBody(DeclarationKind.Class, {)
+      beginClassOrMixinOrExtensionBody(DeclarationKind.Class, {)
         beginMetadataStar(co)
         endMetadataStar(0)
         beginMember()
-          beginMethod(null, null, null, null, null, operator)
+          beginMethod(DeclarationKind.Class, null, null, null, null, null, operator)
             handleIdentifier(co, typeReference)
             handleNoTypeArguments(operator)
             handleType(co, null)
@@ -35,7 +35,7 @@
             endBlockFunctionBody(0, {, })
           endClassMethod(null, co, (, null, })
         endMember()
-      endClassOrMixinBody(DeclarationKind.Class, 1, {, })
+      endClassOrMixinOrExtensionBody(DeclarationKind.Class, 1, {, })
     endClassDeclaration(class, })
   endTopLevelDeclaration()
 endCompilationUnit(1, )
diff --git a/pkg/front_end/parser_testcases/error_recovery/issue_39026_prime.crash_dart.intertwined.expect b/pkg/front_end/parser_testcases/error_recovery/issue_39026_prime.crash_dart.intertwined.expect
index cecf6e2..0029b54 100644
--- a/pkg/front_end/parser_testcases/error_recovery/issue_39026_prime.crash_dart.intertwined.expect
+++ b/pkg/front_end/parser_testcases/error_recovery/issue_39026_prime.crash_dart.intertwined.expect
@@ -9,7 +9,7 @@
     parseTopLevelKeywordDeclaration(, class, Instance of 'DirectiveContext')
       parseClassDeclarationModifiers(, class)
       parseClassOrNamedMixinApplication(null, class)
-        listener: beginClassOrNamedMixinApplicationPrelude(class)
+        listener: beginClassOrMixinOrNamedMixinApplicationPrelude(class)
         ensureIdentifier(class, classOrMixinDeclaration)
           listener: handleIdentifier(A, classOrMixinDeclaration)
         listener: handleNoTypeVariables({)
@@ -25,7 +25,7 @@
               listener: handleClassOrMixinImplements(null, 0)
             listener: handleClassHeader(class, class, null)
           parseClassOrMixinOrExtensionBody(A, DeclarationKind.Class, A)
-            listener: beginClassOrMixinBody(DeclarationKind.Class, {)
+            listener: beginClassOrMixinOrExtensionBody(DeclarationKind.Class, {)
             notEofOrValue(}, co)
             parseClassOrMixinOrExtensionMemberImpl({, DeclarationKind.Class, A)
               parseMetadataStar({)
@@ -33,7 +33,7 @@
                 listener: endMetadataStar(0)
               listener: beginMember()
               parseMethod({, null, null, null, null, null, null, {, Instance of 'SimpleType', null, operator, DeclarationKind.Class, A, false)
-                listener: beginMethod(null, null, null, null, null, operator)
+                listener: beginMethod(DeclarationKind.Class, null, null, null, null, null, operator)
                 listener: handleIdentifier(co, typeReference)
                 listener: handleNoTypeArguments(operator)
                 listener: handleType(co, null)
@@ -62,7 +62,7 @@
                 listener: endClassMethod(null, co, (, null, })
               listener: endMember()
             notEofOrValue(}, })
-            listener: endClassOrMixinBody(DeclarationKind.Class, 1, {, })
+            listener: endClassOrMixinOrExtensionBody(DeclarationKind.Class, 1, {, })
           listener: endClassDeclaration(class, })
   listener: endTopLevelDeclaration()
   reportAllErrorTokens(class)
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 46f6afb..692595f 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
@@ -18,7 +18,7 @@
   beginMetadataStar(typedef)
   endMetadataStar(0)
   beginUncategorizedTopLevelDeclaration(typedef)
-    beginFunctionTypeAlias(typedef)
+    beginTypedef(typedef)
       handleIdentifier(F, typedefDeclaration)
       beginTypeVariables(<)
         beginMetadataStar(Glib)
@@ -36,6 +36,6 @@
       handleNoTypeArguments()
       handleType(, null)
       handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], =, =)
-    endFunctionTypeAlias(typedef, =, ;)
+    endTypedef(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 b2f18b7..8064bef 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
@@ -10,7 +10,7 @@
       parseTopLevelKeywordModifiers(, typedef)
       parseTypedef(typedef)
         listener: beginUncategorizedTopLevelDeclaration(typedef)
-        listener: beginFunctionTypeAlias(typedef)
+        listener: beginTypedef(typedef)
         ensureIdentifierPotentiallyRecovered(typedef, typedefDeclaration, true)
           listener: handleIdentifier(F, typedefDeclaration)
         listener: beginTypeVariables(<)
@@ -37,7 +37,7 @@
           reportRecoverableError(=, Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}])
             listener: handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], =, =)
           rewriter()
-        listener: endFunctionTypeAlias(typedef, =, ;)
+        listener: endTypedef(typedef, =, ;)
   listener: endTopLevelDeclaration()
   reportAllErrorTokens(typedef)
   listener: endCompilationUnit(1, )
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 5bd3f47..16300c9 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
@@ -65,7 +65,7 @@
   beginMetadataStar(b)
   endMetadataStar(0)
   beginTopLevelMember(b)
-    beginFields(;)
+    beginFields(DeclarationKind.TopLevel, null, null, null, null, null, null, ;)
       handleIdentifier(b, typeReference)
       beginTypeArguments(<)
         handleIdentifier(c, typeReference)
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 7754b5d..a0bb58f 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
@@ -77,7 +77,7 @@
     parseTopLevelMemberImpl(;)
       listener: beginTopLevelMember(b)
       parseFields(;, null, null, null, null, null, null, ;, Instance of 'ComplexTypeInfo', $, DeclarationKind.TopLevel, null, false)
-        listener: beginFields(;)
+        listener: beginFields(DeclarationKind.TopLevel, null, null, null, null, null, null, ;)
         ensureIdentifier(;, typeReference)
           listener: handleIdentifier(b, typeReference)
         listener: beginTypeArguments(<)
diff --git a/pkg/front_end/parser_testcases/error_recovery/issue_39230.crash_dart.expect b/pkg/front_end/parser_testcases/error_recovery/issue_39230.crash_dart.expect
index dd50f65..71be906 100644
--- a/pkg/front_end/parser_testcases/error_recovery/issue_39230.crash_dart.expect
+++ b/pkg/front_end/parser_testcases/error_recovery/issue_39230.crash_dart.expect
@@ -19,7 +19,7 @@
 beginCompilationUnit(class)
   beginMetadataStar(class)
   endMetadataStar(0)
-  beginClassOrNamedMixinApplicationPrelude(class)
+  beginClassOrMixinOrNamedMixinApplicationPrelude(class)
     handleIdentifier(C, classOrMixinDeclaration)
     handleNoTypeVariables({)
     beginClassDeclaration(class, null, C)
@@ -28,11 +28,11 @@
       handleClassNoWithClause()
       handleClassOrMixinImplements(null, 0)
       handleClassHeader(class, class, null)
-      beginClassOrMixinBody(DeclarationKind.Class, {)
+      beginClassOrMixinOrExtensionBody(DeclarationKind.Class, {)
         beginMetadataStar(C)
         endMetadataStar(0)
         beginMember()
-          beginMethod(null, null, null, null, null, C)
+          beginMethod(DeclarationKind.Class, null, null, null, null, null, C)
             handleNoType({)
             handleIdentifier(C, methodDeclaration)
             handleNoTypeVariables(()
@@ -48,7 +48,7 @@
         endMetadataStar(0)
         beginMember()
           handleRecoverableError(MissingOperatorKeyword, /, /)
-          beginMethod(null, null, null, null, null, operator)
+          beginMethod(DeclarationKind.Class, null, null, null, null, null, operator)
             handleNoType(})
             handleOperatorName(operator, /)
             handleNoTypeVariables(:)
@@ -69,7 +69,7 @@
             handleRecoverableError(ConstructorWithWrongName, /, /)
           endClassConstructor(null, operator, (, :, ;)
         endMember()
-      endClassOrMixinBody(DeclarationKind.Class, 2, {, })
+      endClassOrMixinOrExtensionBody(DeclarationKind.Class, 2, {, })
     endClassDeclaration(class, })
   endTopLevelDeclaration()
 endCompilationUnit(1, )
diff --git a/pkg/front_end/parser_testcases/error_recovery/issue_39230.crash_dart.intertwined.expect b/pkg/front_end/parser_testcases/error_recovery/issue_39230.crash_dart.intertwined.expect
index e8df55f..f465d58 100644
--- a/pkg/front_end/parser_testcases/error_recovery/issue_39230.crash_dart.intertwined.expect
+++ b/pkg/front_end/parser_testcases/error_recovery/issue_39230.crash_dart.intertwined.expect
@@ -9,7 +9,7 @@
     parseTopLevelKeywordDeclaration(, class, Instance of 'DirectiveContext')
       parseClassDeclarationModifiers(, class)
       parseClassOrNamedMixinApplication(null, class)
-        listener: beginClassOrNamedMixinApplicationPrelude(class)
+        listener: beginClassOrMixinOrNamedMixinApplicationPrelude(class)
         ensureIdentifier(class, classOrMixinDeclaration)
           listener: handleIdentifier(C, classOrMixinDeclaration)
         listener: handleNoTypeVariables({)
@@ -25,7 +25,7 @@
               listener: handleClassOrMixinImplements(null, 0)
             listener: handleClassHeader(class, class, null)
           parseClassOrMixinOrExtensionBody(C, DeclarationKind.Class, C)
-            listener: beginClassOrMixinBody(DeclarationKind.Class, {)
+            listener: beginClassOrMixinOrExtensionBody(DeclarationKind.Class, {)
             notEofOrValue(}, C)
             parseClassOrMixinOrExtensionMemberImpl({, DeclarationKind.Class, C)
               parseMetadataStar({)
@@ -34,7 +34,7 @@
               listener: beginMember()
               isReservedKeyword(()
               parseMethod({, null, null, null, null, null, null, {, Instance of 'NoType', null, C, DeclarationKind.Class, C, false)
-                listener: beginMethod(null, null, null, null, null, C)
+                listener: beginMethod(DeclarationKind.Class, null, null, null, null, null, C)
                 listener: handleNoType({)
                 ensureIdentifierPotentiallyRecovered({, methodDeclaration, false)
                   listener: handleIdentifier(C, methodDeclaration)
@@ -74,7 +74,7 @@
                     listener: handleRecoverableError(MissingOperatorKeyword, /, /)
                   rewriter()
                   parseMethod(}, null, null, null, null, null, null, }, Instance of 'NoType', null, operator, DeclarationKind.Class, C, false)
-                    listener: beginMethod(null, null, null, null, null, operator)
+                    listener: beginMethod(DeclarationKind.Class, null, null, null, null, null, operator)
                     listener: handleNoType(})
                     parseOperatorName(})
                       listener: handleOperatorName(operator, /)
@@ -120,7 +120,7 @@
                     listener: endClassConstructor(null, operator, (, :, ;)
                   listener: endMember()
             notEofOrValue(}, })
-            listener: endClassOrMixinBody(DeclarationKind.Class, 2, {, })
+            listener: endClassOrMixinOrExtensionBody(DeclarationKind.Class, 2, {, })
           listener: endClassDeclaration(class, })
   listener: endTopLevelDeclaration()
   reportAllErrorTokens(class)
diff --git a/pkg/front_end/parser_testcases/error_recovery/issue_41265.crash_dart.expect b/pkg/front_end/parser_testcases/error_recovery/issue_41265.crash_dart.expect
index e4aa63a..fed361e 100644
--- a/pkg/front_end/parser_testcases/error_recovery/issue_41265.crash_dart.expect
+++ b/pkg/front_end/parser_testcases/error_recovery/issue_41265.crash_dart.expect
@@ -7,7 +7,7 @@
 beginCompilationUnit(class)
   beginMetadataStar(class)
   endMetadataStar(0)
-  beginClassOrNamedMixinApplicationPrelude(class)
+  beginClassOrMixinOrNamedMixinApplicationPrelude(class)
     handleIdentifier(A, classOrMixinDeclaration)
     beginTypeVariables(<)
       beginMetadataStar(T)
@@ -24,13 +24,13 @@
       handleClassNoWithClause()
       handleClassOrMixinImplements(null, 0)
       handleClassHeader(class, class, null)
-      beginClassOrMixinBody(DeclarationKind.Class, {)
-      endClassOrMixinBody(DeclarationKind.Class, 0, {, })
+      beginClassOrMixinOrExtensionBody(DeclarationKind.Class, {)
+      endClassOrMixinOrExtensionBody(DeclarationKind.Class, 0, {, })
     endClassDeclaration(class, })
   endTopLevelDeclaration(mixin)
   beginMetadataStar(mixin)
   endMetadataStar(0)
-  beginClassOrNamedMixinApplicationPrelude(mixin)
+  beginClassOrMixinOrNamedMixinApplicationPrelude(mixin)
     handleIdentifier(M, classOrMixinDeclaration)
     beginTypeVariables(<)
       beginMetadataStar(T)
@@ -45,13 +45,13 @@
       handleMixinOn(null, 0)
       handleClassOrMixinImplements(null, 0)
       handleMixinHeader(mixin)
-      beginClassOrMixinBody(DeclarationKind.Mixin, {)
-      endClassOrMixinBody(DeclarationKind.Mixin, 0, {, })
+      beginClassOrMixinOrExtensionBody(DeclarationKind.Mixin, {)
+      endClassOrMixinOrExtensionBody(DeclarationKind.Mixin, 0, {, })
     endMixinDeclaration(mixin, })
   endTopLevelDeclaration(class)
   beginMetadataStar(class)
   endMetadataStar(0)
-  beginClassOrNamedMixinApplicationPrelude(class)
+  beginClassOrMixinOrNamedMixinApplicationPrelude(class)
     handleIdentifier(DND1, classOrMixinDeclaration)
     handleNoTypeVariables(extends)
     beginClassDeclaration(class, null, DND1)
@@ -82,8 +82,8 @@
       handleClassNoWithClause()
       handleClassOrMixinImplements(null, 0)
       handleRecoverClassHeader()
-      beginClassOrMixinBody(DeclarationKind.Class, {)
-      endClassOrMixinBody(DeclarationKind.Class, 0, {, })
+      beginClassOrMixinOrExtensionBody(DeclarationKind.Class, {)
+      endClassOrMixinOrExtensionBody(DeclarationKind.Class, 0, {, })
     endClassDeclaration(class, })
   endTopLevelDeclaration()
 endCompilationUnit(3, )
diff --git a/pkg/front_end/parser_testcases/error_recovery/issue_41265.crash_dart.intertwined.expect b/pkg/front_end/parser_testcases/error_recovery/issue_41265.crash_dart.intertwined.expect
index 9ea2f50..6017b1c 100644
--- a/pkg/front_end/parser_testcases/error_recovery/issue_41265.crash_dart.intertwined.expect
+++ b/pkg/front_end/parser_testcases/error_recovery/issue_41265.crash_dart.intertwined.expect
@@ -9,7 +9,7 @@
     parseTopLevelKeywordDeclaration(, class, Instance of 'DirectiveContext')
       parseClassDeclarationModifiers(, class)
       parseClassOrNamedMixinApplication(null, class)
-        listener: beginClassOrNamedMixinApplicationPrelude(class)
+        listener: beginClassOrMixinOrNamedMixinApplicationPrelude(class)
         ensureIdentifier(class, classOrMixinDeclaration)
           listener: handleIdentifier(A, classOrMixinDeclaration)
         listener: beginTypeVariables(<)
@@ -33,9 +33,9 @@
               listener: handleClassOrMixinImplements(null, 0)
             listener: handleClassHeader(class, class, null)
           parseClassOrMixinOrExtensionBody(>, DeclarationKind.Class, A)
-            listener: beginClassOrMixinBody(DeclarationKind.Class, {)
+            listener: beginClassOrMixinOrExtensionBody(DeclarationKind.Class, {)
             notEofOrValue(}, })
-            listener: endClassOrMixinBody(DeclarationKind.Class, 0, {, })
+            listener: endClassOrMixinOrExtensionBody(DeclarationKind.Class, 0, {, })
           listener: endClassDeclaration(class, })
   listener: endTopLevelDeclaration(mixin)
   parseTopLevelDeclarationImpl(}, Instance of 'DirectiveContext')
@@ -45,7 +45,7 @@
     parseTopLevelKeywordDeclaration(}, mixin, Instance of 'DirectiveContext')
       parseTopLevelKeywordModifiers(}, mixin)
       parseMixin(mixin)
-        listener: beginClassOrNamedMixinApplicationPrelude(mixin)
+        listener: beginClassOrMixinOrNamedMixinApplicationPrelude(mixin)
         ensureIdentifier(mixin, classOrMixinDeclaration)
           listener: handleIdentifier(M, classOrMixinDeclaration)
         listener: beginTypeVariables(<)
@@ -65,9 +65,9 @@
             listener: handleClassOrMixinImplements(null, 0)
           listener: handleMixinHeader(mixin)
         parseClassOrMixinOrExtensionBody(>, DeclarationKind.Mixin, M)
-          listener: beginClassOrMixinBody(DeclarationKind.Mixin, {)
+          listener: beginClassOrMixinOrExtensionBody(DeclarationKind.Mixin, {)
           notEofOrValue(}, })
-          listener: endClassOrMixinBody(DeclarationKind.Mixin, 0, {, })
+          listener: endClassOrMixinOrExtensionBody(DeclarationKind.Mixin, 0, {, })
         listener: endMixinDeclaration(mixin, })
   listener: endTopLevelDeclaration(class)
   parseTopLevelDeclarationImpl(}, Instance of 'DirectiveContext')
@@ -77,7 +77,7 @@
     parseTopLevelKeywordDeclaration(}, class, Instance of 'DirectiveContext')
       parseClassDeclarationModifiers(}, class)
       parseClassOrNamedMixinApplication(null, class)
-        listener: beginClassOrNamedMixinApplicationPrelude(class)
+        listener: beginClassOrMixinOrNamedMixinApplicationPrelude(class)
         ensureIdentifier(class, classOrMixinDeclaration)
           listener: handleIdentifier(DND1, classOrMixinDeclaration)
         listener: handleNoTypeVariables(extends)
@@ -136,9 +136,9 @@
             listener: handleRecoverClassHeader()
           ensureBlock(>, null, class declaration)
           parseClassOrMixinOrExtensionBody(>, DeclarationKind.Class, DND1)
-            listener: beginClassOrMixinBody(DeclarationKind.Class, {)
+            listener: beginClassOrMixinOrExtensionBody(DeclarationKind.Class, {)
             notEofOrValue(}, })
-            listener: endClassOrMixinBody(DeclarationKind.Class, 0, {, })
+            listener: endClassOrMixinOrExtensionBody(DeclarationKind.Class, 0, {, })
           listener: endClassDeclaration(class, })
   listener: endTopLevelDeclaration()
   reportAllErrorTokens(class)
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 1a1a560..3a61651 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
@@ -26,7 +26,7 @@
   beginTopLevelMember(Stream)
     handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got ''., Try inserting an identifier before ''., {lexeme: }], , )
     // WARNING: Reporting at eof for .
-    beginFields()
+    beginFields(DeclarationKind.TopLevel, null, null, null, null, null, null, )
       handleIdentifier(Stream, typeReference)
       beginTypeArguments(<)
         handleIdentifier(List, typeReference)
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 02666ab..c9a97e6 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
@@ -14,7 +14,7 @@
           listener: // WARNING: Reporting at eof for .
         rewriter()
       parseFields(, null, null, null, null, null, null, , Instance of 'ComplexTypeInfo', , DeclarationKind.TopLevel, null, false)
-        listener: beginFields()
+        listener: beginFields(DeclarationKind.TopLevel, null, null, null, null, null, null, )
         ensureIdentifier(, typeReference)
           listener: handleIdentifier(Stream, typeReference)
         listener: beginTypeArguments(<)
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 8fca493..48888ea 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
@@ -20,7 +20,7 @@
   beginTopLevelMember(Stream)
     handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got ''., Try inserting an identifier before ''., {lexeme: }], , )
     // WARNING: Reporting at eof for .
-    beginFields()
+    beginFields(DeclarationKind.TopLevel, null, null, null, null, null, null, )
       handleIdentifier(Stream, typeReference)
       beginTypeArguments(<)
         handleIdentifier(List, typeReference)
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 898699b..f8c3b8a 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
@@ -14,7 +14,7 @@
           listener: // WARNING: Reporting at eof for .
         rewriter()
       parseFields(, null, null, null, null, null, null, , Instance of 'ComplexTypeInfo', , DeclarationKind.TopLevel, null, false)
-        listener: beginFields()
+        listener: beginFields(DeclarationKind.TopLevel, null, null, null, null, null, null, )
         ensureIdentifier(, typeReference)
           listener: handleIdentifier(Stream, typeReference)
         listener: beginTypeArguments(<)
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 77d9505..3225ca5 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
@@ -22,7 +22,7 @@
   beginTopLevelMember(Stream)
     handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got ''., Try inserting an identifier before ''., {lexeme: }], , )
     // WARNING: Reporting at eof for .
-    beginFields()
+    beginFields(DeclarationKind.TopLevel, null, null, null, null, null, null, )
       handleIdentifier(Stream, typeReference)
       beginTypeArguments(<)
         handleIdentifier(List, typeReference)
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 09c91a7..5885b58 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
@@ -14,7 +14,7 @@
           listener: // WARNING: Reporting at eof for .
         rewriter()
       parseFields(, null, null, null, null, null, null, , Instance of 'ComplexTypeInfo', , DeclarationKind.TopLevel, null, false)
-        listener: beginFields()
+        listener: beginFields(DeclarationKind.TopLevel, null, null, null, null, null, null, )
         ensureIdentifier(, typeReference)
           listener: handleIdentifier(Stream, typeReference)
         listener: beginTypeArguments(<)
diff --git a/pkg/front_end/parser_testcases/error_recovery/issue_42229_prime_4.crash_dart.expect b/pkg/front_end/parser_testcases/error_recovery/issue_42229_prime_4.crash_dart.expect
index c639885..39d125c 100644
--- a/pkg/front_end/parser_testcases/error_recovery/issue_42229_prime_4.crash_dart.expect
+++ b/pkg/front_end/parser_testcases/error_recovery/issue_42229_prime_4.crash_dart.expect
@@ -2,7 +2,7 @@
   beginMetadataStar(Stream)
   endMetadataStar(0)
   beginTopLevelMember(Stream)
-    beginFields()
+    beginFields(DeclarationKind.TopLevel, null, null, null, null, null, null, )
       handleIdentifier(Stream, typeReference)
       beginTypeArguments(<)
         handleIdentifier(List, typeReference)
diff --git a/pkg/front_end/parser_testcases/error_recovery/issue_42229_prime_4.crash_dart.intertwined.expect b/pkg/front_end/parser_testcases/error_recovery/issue_42229_prime_4.crash_dart.intertwined.expect
index 8d42e4b..f4ac12c 100644
--- a/pkg/front_end/parser_testcases/error_recovery/issue_42229_prime_4.crash_dart.intertwined.expect
+++ b/pkg/front_end/parser_testcases/error_recovery/issue_42229_prime_4.crash_dart.intertwined.expect
@@ -9,7 +9,7 @@
     parseTopLevelMemberImpl()
       listener: beginTopLevelMember(Stream)
       parseFields(, null, null, null, null, null, null, , Instance of 'ComplexTypeInfo', y, DeclarationKind.TopLevel, null, false)
-        listener: beginFields()
+        listener: beginFields(DeclarationKind.TopLevel, null, null, null, null, null, null, )
         ensureIdentifier(, typeReference)
           listener: handleIdentifier(Stream, typeReference)
         listener: beginTypeArguments(<)
diff --git a/pkg/front_end/parser_testcases/error_recovery/issue_42229_prime_5.dart.expect b/pkg/front_end/parser_testcases/error_recovery/issue_42229_prime_5.dart.expect
index afecf7c..c0c945b 100644
--- a/pkg/front_end/parser_testcases/error_recovery/issue_42229_prime_5.dart.expect
+++ b/pkg/front_end/parser_testcases/error_recovery/issue_42229_prime_5.dart.expect
@@ -12,7 +12,7 @@
   beginMetadataStar(hello)
   endMetadataStar(0)
   beginTopLevelMember(hello)
-    beginFields()
+    beginFields(DeclarationKind.TopLevel, null, null, null, null, null, null, )
       handleRecoverableError(MissingConstFinalVarOrType, hello, hello)
       handleNoType()
       handleIdentifier(hello, topLevelVariableDeclaration)
diff --git a/pkg/front_end/parser_testcases/error_recovery/issue_42229_prime_5.dart.intertwined.expect b/pkg/front_end/parser_testcases/error_recovery/issue_42229_prime_5.dart.intertwined.expect
index ed05b5e..ddc263d 100644
--- a/pkg/front_end/parser_testcases/error_recovery/issue_42229_prime_5.dart.intertwined.expect
+++ b/pkg/front_end/parser_testcases/error_recovery/issue_42229_prime_5.dart.intertwined.expect
@@ -10,7 +10,7 @@
       listener: beginTopLevelMember(hello)
       isReservedKeyword()
       parseFields(, null, null, null, null, null, null, , Instance of 'NoType', hello, DeclarationKind.TopLevel, null, false)
-        listener: beginFields()
+        listener: beginFields(DeclarationKind.TopLevel, null, null, null, null, null, null, )
         reportRecoverableError(hello, MissingConstFinalVarOrType)
           listener: handleRecoverableError(MissingConstFinalVarOrType, hello, hello)
         listener: handleNoType()
diff --git a/pkg/front_end/parser_testcases/error_recovery/issue_42229_prime_6.dart.expect b/pkg/front_end/parser_testcases/error_recovery/issue_42229_prime_6.dart.expect
index bc06b28..bbe91f5 100644
--- a/pkg/front_end/parser_testcases/error_recovery/issue_42229_prime_6.dart.expect
+++ b/pkg/front_end/parser_testcases/error_recovery/issue_42229_prime_6.dart.expect
@@ -12,7 +12,7 @@
   beginMetadataStar(const)
   endMetadataStar(0)
   beginTopLevelMember(const)
-    beginFields()
+    beginFields(DeclarationKind.TopLevel, null, null, null, null, null, const, )
       handleNoType(const)
       handleIdentifier(foo, topLevelVariableDeclaration)
       handleRecoverableError(Message[ConstFieldWithoutInitializer, The const variable 'foo' must be initialized., Try adding an initializer ('= expression') to the declaration., {name: foo}], foo, foo)
diff --git a/pkg/front_end/parser_testcases/error_recovery/issue_42229_prime_6.dart.intertwined.expect b/pkg/front_end/parser_testcases/error_recovery/issue_42229_prime_6.dart.intertwined.expect
index c70f970..5b2699c 100644
--- a/pkg/front_end/parser_testcases/error_recovery/issue_42229_prime_6.dart.intertwined.expect
+++ b/pkg/front_end/parser_testcases/error_recovery/issue_42229_prime_6.dart.intertwined.expect
@@ -9,7 +9,7 @@
     parseTopLevelMemberImpl()
       listener: beginTopLevelMember(const)
       parseFields(, null, null, null, null, null, const, const, Instance of 'NoType', foo, DeclarationKind.TopLevel, null, false)
-        listener: beginFields()
+        listener: beginFields(DeclarationKind.TopLevel, null, null, null, null, null, const, )
         listener: handleNoType(const)
         ensureIdentifierPotentiallyRecovered(const, topLevelVariableDeclaration, false)
           listener: handleIdentifier(foo, topLevelVariableDeclaration)
diff --git a/pkg/front_end/parser_testcases/error_recovery/issue_43090.crash_dart.expect b/pkg/front_end/parser_testcases/error_recovery/issue_43090.crash_dart.expect
index 38e3d3b..8038a68 100644
--- a/pkg/front_end/parser_testcases/error_recovery/issue_43090.crash_dart.expect
+++ b/pkg/front_end/parser_testcases/error_recovery/issue_43090.crash_dart.expect
@@ -8,7 +8,7 @@
   beginMetadataStar(typedef)
   endMetadataStar(0)
   beginUncategorizedTopLevelDeclaration(typedef)
-    beginFunctionTypeAlias(typedef)
+    beginTypedef(typedef)
       handleIdentifier(A, typedefDeclaration)
       beginTypeVariables(<)
         beginMetadataStar(=)
@@ -26,6 +26,6 @@
         beginFormalParameters((, MemberKind.GeneralizedFunctionType)
         endFormalParameters(0, (, ), MemberKind.GeneralizedFunctionType)
       endFunctionType(Function, null)
-    endFunctionTypeAlias(typedef, =, ;)
+    endTypedef(typedef, =, ;)
   endTopLevelDeclaration()
 endCompilationUnit(1, )
diff --git a/pkg/front_end/parser_testcases/error_recovery/issue_43090.crash_dart.intertwined.expect b/pkg/front_end/parser_testcases/error_recovery/issue_43090.crash_dart.intertwined.expect
index b25871b..1fc743a 100644
--- a/pkg/front_end/parser_testcases/error_recovery/issue_43090.crash_dart.intertwined.expect
+++ b/pkg/front_end/parser_testcases/error_recovery/issue_43090.crash_dart.intertwined.expect
@@ -10,7 +10,7 @@
       parseTopLevelKeywordModifiers(, typedef)
       parseTypedef(typedef)
         listener: beginUncategorizedTopLevelDeclaration(typedef)
-        listener: beginFunctionTypeAlias(typedef)
+        listener: beginTypedef(typedef)
         ensureIdentifierPotentiallyRecovered(typedef, typedefDeclaration, true)
           listener: handleIdentifier(A, typedefDeclaration)
         listener: beginTypeVariables(<)
@@ -36,7 +36,7 @@
             listener: endFormalParameters(0, (, ), MemberKind.GeneralizedFunctionType)
         listener: endFunctionType(Function, null)
         ensureSemicolon())
-        listener: endFunctionTypeAlias(typedef, =, ;)
+        listener: endTypedef(typedef, =, ;)
   listener: endTopLevelDeclaration()
   reportAllErrorTokens(typedef)
   listener: endCompilationUnit(1, )
diff --git a/pkg/front_end/parser_testcases/error_recovery/issue_43090_prime_01.crash_dart.expect b/pkg/front_end/parser_testcases/error_recovery/issue_43090_prime_01.crash_dart.expect
index 06f3c99..9de7c23 100644
--- a/pkg/front_end/parser_testcases/error_recovery/issue_43090_prime_01.crash_dart.expect
+++ b/pkg/front_end/parser_testcases/error_recovery/issue_43090_prime_01.crash_dart.expect
@@ -2,7 +2,7 @@
   beginMetadataStar(typedef)
   endMetadataStar(0)
   beginUncategorizedTopLevelDeclaration(typedef)
-    beginFunctionTypeAlias(typedef)
+    beginTypedef(typedef)
       handleIdentifier(A, typedefDeclaration)
       beginTypeVariables(<)
         beginMetadataStar(int)
@@ -19,6 +19,6 @@
         beginFormalParameters((, MemberKind.GeneralizedFunctionType)
         endFormalParameters(0, (, ), MemberKind.GeneralizedFunctionType)
       endFunctionType(Function, null)
-    endFunctionTypeAlias(typedef, =, ;)
+    endTypedef(typedef, =, ;)
   endTopLevelDeclaration()
 endCompilationUnit(1, )
diff --git a/pkg/front_end/parser_testcases/error_recovery/issue_43090_prime_01.crash_dart.intertwined.expect b/pkg/front_end/parser_testcases/error_recovery/issue_43090_prime_01.crash_dart.intertwined.expect
index e0ba1a2..2c656d6 100644
--- a/pkg/front_end/parser_testcases/error_recovery/issue_43090_prime_01.crash_dart.intertwined.expect
+++ b/pkg/front_end/parser_testcases/error_recovery/issue_43090_prime_01.crash_dart.intertwined.expect
@@ -10,7 +10,7 @@
       parseTopLevelKeywordModifiers(, typedef)
       parseTypedef(typedef)
         listener: beginUncategorizedTopLevelDeclaration(typedef)
-        listener: beginFunctionTypeAlias(typedef)
+        listener: beginTypedef(typedef)
         ensureIdentifierPotentiallyRecovered(typedef, typedefDeclaration, true)
           listener: handleIdentifier(A, typedefDeclaration)
         listener: beginTypeVariables(<)
@@ -31,7 +31,7 @@
             listener: endFormalParameters(0, (, ), MemberKind.GeneralizedFunctionType)
         listener: endFunctionType(Function, null)
         ensureSemicolon())
-        listener: endFunctionTypeAlias(typedef, =, ;)
+        listener: endTypedef(typedef, =, ;)
   listener: endTopLevelDeclaration()
   reportAllErrorTokens(typedef)
   listener: endCompilationUnit(1, )
diff --git a/pkg/front_end/parser_testcases/error_recovery/issue_43090_prime_02.crash_dart.expect b/pkg/front_end/parser_testcases/error_recovery/issue_43090_prime_02.crash_dart.expect
index bc0db5a..cae49f8 100644
--- a/pkg/front_end/parser_testcases/error_recovery/issue_43090_prime_02.crash_dart.expect
+++ b/pkg/front_end/parser_testcases/error_recovery/issue_43090_prime_02.crash_dart.expect
@@ -8,7 +8,7 @@
   beginMetadataStar(typedef)
   endMetadataStar(0)
   beginUncategorizedTopLevelDeclaration(typedef)
-    beginFunctionTypeAlias(typedef)
+    beginTypedef(typedef)
       handleIdentifier(A, typedefDeclaration)
       beginTypeVariables(<)
         beginMetadataStar(>=)
@@ -26,6 +26,6 @@
         beginFormalParameters((, MemberKind.GeneralizedFunctionType)
         endFormalParameters(0, (, ), MemberKind.GeneralizedFunctionType)
       endFunctionType(Function, null)
-    endFunctionTypeAlias(typedef, =, ;)
+    endTypedef(typedef, =, ;)
   endTopLevelDeclaration()
 endCompilationUnit(1, )
diff --git a/pkg/front_end/parser_testcases/error_recovery/issue_43090_prime_02.crash_dart.intertwined.expect b/pkg/front_end/parser_testcases/error_recovery/issue_43090_prime_02.crash_dart.intertwined.expect
index da37ef6..2845e0b 100644
--- a/pkg/front_end/parser_testcases/error_recovery/issue_43090_prime_02.crash_dart.intertwined.expect
+++ b/pkg/front_end/parser_testcases/error_recovery/issue_43090_prime_02.crash_dart.intertwined.expect
@@ -10,7 +10,7 @@
       parseTopLevelKeywordModifiers(, typedef)
       parseTypedef(typedef)
         listener: beginUncategorizedTopLevelDeclaration(typedef)
-        listener: beginFunctionTypeAlias(typedef)
+        listener: beginTypedef(typedef)
         ensureIdentifierPotentiallyRecovered(typedef, typedefDeclaration, true)
           listener: handleIdentifier(A, typedefDeclaration)
         listener: beginTypeVariables(<)
@@ -36,7 +36,7 @@
             listener: endFormalParameters(0, (, ), MemberKind.GeneralizedFunctionType)
         listener: endFunctionType(Function, null)
         ensureSemicolon())
-        listener: endFunctionTypeAlias(typedef, =, ;)
+        listener: endTypedef(typedef, =, ;)
   listener: endTopLevelDeclaration()
   reportAllErrorTokens(typedef)
   listener: endCompilationUnit(1, )
diff --git a/pkg/front_end/parser_testcases/error_recovery/issue_45251.dart.expect b/pkg/front_end/parser_testcases/error_recovery/issue_45251.dart.expect
index 702b63b..90f0494 100644
--- a/pkg/front_end/parser_testcases/error_recovery/issue_45251.dart.expect
+++ b/pkg/front_end/parser_testcases/error_recovery/issue_45251.dart.expect
@@ -19,7 +19,7 @@
 beginCompilationUnit(class)
   beginMetadataStar(class)
   endMetadataStar(0)
-  beginClassOrNamedMixinApplicationPrelude(class)
+  beginClassOrMixinOrNamedMixinApplicationPrelude(class)
     handleIdentifier(F, classOrMixinDeclaration)
     handleNoTypeVariables({)
     beginClassDeclaration(class, null, F)
@@ -28,11 +28,11 @@
       handleClassNoWithClause()
       handleClassOrMixinImplements(null, 0)
       handleClassHeader(class, class, null)
-      beginClassOrMixinBody(DeclarationKind.Class, {)
+      beginClassOrMixinOrExtensionBody(DeclarationKind.Class, {)
         beginMetadataStar(final)
         endMetadataStar(0)
         beginMember()
-          beginFields({)
+          beginFields(DeclarationKind.Class, null, null, null, null, null, final, {)
             handleIdentifier(Map, typeReference)
             beginTypeArguments(<)
               handleIdentifier(String, typeReference)
@@ -65,7 +65,7 @@
         beginMetadataStar(final)
         endMetadataStar(0)
         beginMember()
-          beginFields(;)
+          beginFields(DeclarationKind.Class, null, null, null, null, null, final, ;)
             handleIdentifier(Map, typeReference)
             beginTypeArguments(<)
               handleIdentifier(String, typeReference)
@@ -97,7 +97,7 @@
         beginMetadataStar(final)
         endMetadataStar(0)
         beginMember()
-          beginFields(;)
+          beginFields(DeclarationKind.Class, null, null, null, null, null, final, ;)
             handleIdentifier(Map, typeReference)
             beginTypeArguments(<)
               handleIdentifier(String, typeReference)
@@ -119,7 +119,7 @@
         beginMetadataStar(final)
         endMetadataStar(0)
         beginMember()
-          beginFields(;)
+          beginFields(DeclarationKind.Class, null, null, null, null, null, final, ;)
             handleIdentifier(Map, typeReference)
             beginTypeArguments(<)
               handleIdentifier(String, typeReference)
@@ -154,7 +154,7 @@
         beginMetadataStar(final)
         endMetadataStar(0)
         beginMember()
-          beginFields(;)
+          beginFields(DeclarationKind.Class, null, null, null, null, null, final, ;)
             handleIdentifier(Map, typeReference)
             beginTypeArguments(<)
               handleIdentifier(String, typeReference)
@@ -178,7 +178,7 @@
         beginMetadataStar(final)
         endMetadataStar(0)
         beginMember()
-          beginFields(;)
+          beginFields(DeclarationKind.Class, null, null, null, null, null, final, ;)
             handleIdentifier(Map, typeReference)
             beginTypeArguments(<)
               handleIdentifier(String, typeReference)
@@ -215,7 +215,7 @@
         beginMetadataStar(final)
         endMetadataStar(0)
         beginMember()
-          beginFields(;)
+          beginFields(DeclarationKind.Class, null, null, null, null, null, final, ;)
             handleIdentifier(Map, typeReference)
             beginTypeArguments(<)
               handleIdentifier(String, typeReference)
@@ -241,7 +241,7 @@
         beginMetadataStar(final)
         endMetadataStar(0)
         beginMember()
-          beginFields(;)
+          beginFields(DeclarationKind.Class, null, null, null, null, null, final, ;)
             handleIdentifier(Map, typeReference)
             beginTypeArguments(<)
               handleIdentifier(String, typeReference)
@@ -277,7 +277,7 @@
         beginMetadataStar(final)
         endMetadataStar(0)
         beginMember()
-          beginFields(;)
+          beginFields(DeclarationKind.Class, null, null, null, null, null, final, ;)
             handleIdentifier(Map, typeReference)
             beginTypeArguments(<)
               handleIdentifier(String, typeReference)
@@ -299,7 +299,7 @@
             endFieldInitializer(=, ;)
           endClassFields(null, null, null, null, null, final, 1, final, ;)
         endMember()
-      endClassOrMixinBody(DeclarationKind.Class, 9, {, })
+      endClassOrMixinOrExtensionBody(DeclarationKind.Class, 9, {, })
     endClassDeclaration(class, })
   endTopLevelDeclaration()
 endCompilationUnit(1, )
diff --git a/pkg/front_end/parser_testcases/error_recovery/issue_45251.dart.intertwined.expect b/pkg/front_end/parser_testcases/error_recovery/issue_45251.dart.intertwined.expect
index fb1a4d4..a1f507a 100644
--- a/pkg/front_end/parser_testcases/error_recovery/issue_45251.dart.intertwined.expect
+++ b/pkg/front_end/parser_testcases/error_recovery/issue_45251.dart.intertwined.expect
@@ -9,7 +9,7 @@
     parseTopLevelKeywordDeclaration(, class, Instance of 'DirectiveContext')
       parseClassDeclarationModifiers(, class)
       parseClassOrNamedMixinApplication(null, class)
-        listener: beginClassOrNamedMixinApplicationPrelude(class)
+        listener: beginClassOrMixinOrNamedMixinApplicationPrelude(class)
         ensureIdentifier(class, classOrMixinDeclaration)
           listener: handleIdentifier(F, classOrMixinDeclaration)
         listener: handleNoTypeVariables({)
@@ -25,7 +25,7 @@
               listener: handleClassOrMixinImplements(null, 0)
             listener: handleClassHeader(class, class, null)
           parseClassOrMixinOrExtensionBody(F, DeclarationKind.Class, F)
-            listener: beginClassOrMixinBody(DeclarationKind.Class, {)
+            listener: beginClassOrMixinOrExtensionBody(DeclarationKind.Class, {)
             notEofOrValue(}, final)
             parseClassOrMixinOrExtensionMemberImpl({, DeclarationKind.Class, F)
               parseMetadataStar({)
@@ -33,7 +33,7 @@
                 listener: endMetadataStar(0)
               listener: beginMember()
               parseFields({, null, null, null, null, null, final, final, Instance of 'ComplexTypeInfo', foo1, DeclarationKind.Class, F, false)
-                listener: beginFields({)
+                listener: beginFields(DeclarationKind.Class, null, null, null, null, null, final, {)
                 ensureIdentifier(final, typeReference)
                   listener: handleIdentifier(Map, typeReference)
                 listener: beginTypeArguments(<)
@@ -84,7 +84,7 @@
                 listener: endMetadataStar(0)
               listener: beginMember()
               parseFields(;, null, null, null, null, null, final, final, Instance of 'ComplexTypeInfo', foo2, DeclarationKind.Class, F, false)
-                listener: beginFields(;)
+                listener: beginFields(DeclarationKind.Class, null, null, null, null, null, final, ;)
                 ensureIdentifier(final, typeReference)
                   listener: handleIdentifier(Map, typeReference)
                 listener: beginTypeArguments(<)
@@ -129,7 +129,7 @@
                 listener: endMetadataStar(0)
               listener: beginMember()
               parseFields(;, null, null, null, null, null, final, final, Instance of 'ComplexTypeInfo', foo3, DeclarationKind.Class, F, false)
-                listener: beginFields(;)
+                listener: beginFields(DeclarationKind.Class, null, null, null, null, null, final, ;)
                 ensureIdentifier(final, typeReference)
                   listener: handleIdentifier(Map, typeReference)
                 listener: beginTypeArguments(<)
@@ -168,7 +168,7 @@
                 listener: endMetadataStar(0)
               listener: beginMember()
               parseFields(;, null, null, null, null, null, final, final, Instance of 'ComplexTypeInfo', foo4, DeclarationKind.Class, F, false)
-                listener: beginFields(;)
+                listener: beginFields(DeclarationKind.Class, null, null, null, null, null, final, ;)
                 ensureIdentifier(final, typeReference)
                   listener: handleIdentifier(Map, typeReference)
                 listener: beginTypeArguments(<)
@@ -222,7 +222,7 @@
                 listener: endMetadataStar(0)
               listener: beginMember()
               parseFields(;, null, null, null, null, null, final, final, Instance of 'ComplexTypeInfo', foo5, DeclarationKind.Class, F, false)
-                listener: beginFields(;)
+                listener: beginFields(DeclarationKind.Class, null, null, null, null, null, final, ;)
                 ensureIdentifier(final, typeReference)
                   listener: handleIdentifier(Map, typeReference)
                 listener: beginTypeArguments(<)
@@ -265,7 +265,7 @@
                 listener: endMetadataStar(0)
               listener: beginMember()
               parseFields(;, null, null, null, null, null, final, final, Instance of 'ComplexTypeInfo', foo6, DeclarationKind.Class, F, false)
-                listener: beginFields(;)
+                listener: beginFields(DeclarationKind.Class, null, null, null, null, null, final, ;)
                 ensureIdentifier(final, typeReference)
                   listener: handleIdentifier(Map, typeReference)
                 listener: beginTypeArguments(<)
@@ -331,7 +331,7 @@
                 listener: endMetadataStar(0)
               listener: beginMember()
               parseFields(;, null, null, null, null, null, final, final, Instance of 'ComplexTypeInfo', foo7, DeclarationKind.Class, F, false)
-                listener: beginFields(;)
+                listener: beginFields(DeclarationKind.Class, null, null, null, null, null, final, ;)
                 ensureIdentifier(final, typeReference)
                   listener: handleIdentifier(Map, typeReference)
                 listener: beginTypeArguments(<)
@@ -385,7 +385,7 @@
                 listener: endMetadataStar(0)
               listener: beginMember()
               parseFields(;, null, null, null, null, null, final, final, Instance of 'ComplexTypeInfo', foo8, DeclarationKind.Class, F, false)
-                listener: beginFields(;)
+                listener: beginFields(DeclarationKind.Class, null, null, null, null, null, final, ;)
                 ensureIdentifier(final, typeReference)
                   listener: handleIdentifier(Map, typeReference)
                 listener: beginTypeArguments(<)
@@ -445,7 +445,7 @@
                 listener: endMetadataStar(0)
               listener: beginMember()
               parseFields(;, null, null, null, null, null, final, final, Instance of 'ComplexTypeInfo', foo9, DeclarationKind.Class, F, false)
-                listener: beginFields(;)
+                listener: beginFields(DeclarationKind.Class, null, null, null, null, null, final, ;)
                 ensureIdentifier(final, typeReference)
                   listener: handleIdentifier(Map, typeReference)
                 listener: beginTypeArguments(<)
@@ -487,7 +487,7 @@
                 listener: endClassFields(null, null, null, null, null, final, 1, final, ;)
               listener: endMember()
             notEofOrValue(}, })
-            listener: endClassOrMixinBody(DeclarationKind.Class, 9, {, })
+            listener: endClassOrMixinOrExtensionBody(DeclarationKind.Class, 9, {, })
           listener: endClassDeclaration(class, })
   listener: endTopLevelDeclaration()
   reportAllErrorTokens(class)
diff --git a/pkg/front_end/parser_testcases/error_recovery/issue_45251_const.dart.expect b/pkg/front_end/parser_testcases/error_recovery/issue_45251_const.dart.expect
index a6a2fda..f85d2a9 100644
--- a/pkg/front_end/parser_testcases/error_recovery/issue_45251_const.dart.expect
+++ b/pkg/front_end/parser_testcases/error_recovery/issue_45251_const.dart.expect
@@ -19,7 +19,7 @@
 beginCompilationUnit(class)
   beginMetadataStar(class)
   endMetadataStar(0)
-  beginClassOrNamedMixinApplicationPrelude(class)
+  beginClassOrMixinOrNamedMixinApplicationPrelude(class)
     handleIdentifier(F, classOrMixinDeclaration)
     handleNoTypeVariables({)
     beginClassDeclaration(class, null, F)
@@ -28,11 +28,11 @@
       handleClassNoWithClause()
       handleClassOrMixinImplements(null, 0)
       handleClassHeader(class, class, null)
-      beginClassOrMixinBody(DeclarationKind.Class, {)
+      beginClassOrMixinOrExtensionBody(DeclarationKind.Class, {)
         beginMetadataStar(final)
         endMetadataStar(0)
         beginMember()
-          beginFields({)
+          beginFields(DeclarationKind.Class, null, null, null, null, null, final, {)
             handleIdentifier(Map, typeReference)
             beginTypeArguments(<)
               handleIdentifier(String, typeReference)
@@ -67,7 +67,7 @@
         beginMetadataStar(final)
         endMetadataStar(0)
         beginMember()
-          beginFields(;)
+          beginFields(DeclarationKind.Class, null, null, null, null, null, final, ;)
             handleIdentifier(Map, typeReference)
             beginTypeArguments(<)
               handleIdentifier(String, typeReference)
@@ -101,7 +101,7 @@
         beginMetadataStar(final)
         endMetadataStar(0)
         beginMember()
-          beginFields(;)
+          beginFields(DeclarationKind.Class, null, null, null, null, null, final, ;)
             handleIdentifier(Map, typeReference)
             beginTypeArguments(<)
               handleIdentifier(String, typeReference)
@@ -125,7 +125,7 @@
         beginMetadataStar(final)
         endMetadataStar(0)
         beginMember()
-          beginFields(;)
+          beginFields(DeclarationKind.Class, null, null, null, null, null, final, ;)
             handleIdentifier(Map, typeReference)
             beginTypeArguments(<)
               handleIdentifier(String, typeReference)
@@ -164,7 +164,7 @@
         beginMetadataStar(final)
         endMetadataStar(0)
         beginMember()
-          beginFields(;)
+          beginFields(DeclarationKind.Class, null, null, null, null, null, final, ;)
             handleIdentifier(Map, typeReference)
             beginTypeArguments(<)
               handleIdentifier(String, typeReference)
@@ -192,7 +192,7 @@
         beginMetadataStar(final)
         endMetadataStar(0)
         beginMember()
-          beginFields(;)
+          beginFields(DeclarationKind.Class, null, null, null, null, null, final, ;)
             handleIdentifier(Map, typeReference)
             beginTypeArguments(<)
               handleIdentifier(String, typeReference)
@@ -231,7 +231,7 @@
         beginMetadataStar(final)
         endMetadataStar(0)
         beginMember()
-          beginFields(;)
+          beginFields(DeclarationKind.Class, null, null, null, null, null, final, ;)
             handleIdentifier(Map, typeReference)
             beginTypeArguments(<)
               handleIdentifier(String, typeReference)
@@ -259,7 +259,7 @@
         beginMetadataStar(final)
         endMetadataStar(0)
         beginMember()
-          beginFields(;)
+          beginFields(DeclarationKind.Class, null, null, null, null, null, final, ;)
             handleIdentifier(Map, typeReference)
             beginTypeArguments(<)
               handleIdentifier(String, typeReference)
@@ -297,7 +297,7 @@
         beginMetadataStar(final)
         endMetadataStar(0)
         beginMember()
-          beginFields(;)
+          beginFields(DeclarationKind.Class, null, null, null, null, null, final, ;)
             handleIdentifier(Map, typeReference)
             beginTypeArguments(<)
               handleIdentifier(String, typeReference)
@@ -321,7 +321,7 @@
             endFieldInitializer(=, ;)
           endClassFields(null, null, null, null, null, final, 1, final, ;)
         endMember()
-      endClassOrMixinBody(DeclarationKind.Class, 9, {, })
+      endClassOrMixinOrExtensionBody(DeclarationKind.Class, 9, {, })
     endClassDeclaration(class, })
   endTopLevelDeclaration()
 endCompilationUnit(1, )
diff --git a/pkg/front_end/parser_testcases/error_recovery/issue_45251_const.dart.intertwined.expect b/pkg/front_end/parser_testcases/error_recovery/issue_45251_const.dart.intertwined.expect
index dcf5d7e..3fdbced 100644
--- a/pkg/front_end/parser_testcases/error_recovery/issue_45251_const.dart.intertwined.expect
+++ b/pkg/front_end/parser_testcases/error_recovery/issue_45251_const.dart.intertwined.expect
@@ -9,7 +9,7 @@
     parseTopLevelKeywordDeclaration(, class, Instance of 'DirectiveContext')
       parseClassDeclarationModifiers(, class)
       parseClassOrNamedMixinApplication(null, class)
-        listener: beginClassOrNamedMixinApplicationPrelude(class)
+        listener: beginClassOrMixinOrNamedMixinApplicationPrelude(class)
         ensureIdentifier(class, classOrMixinDeclaration)
           listener: handleIdentifier(F, classOrMixinDeclaration)
         listener: handleNoTypeVariables({)
@@ -25,7 +25,7 @@
               listener: handleClassOrMixinImplements(null, 0)
             listener: handleClassHeader(class, class, null)
           parseClassOrMixinOrExtensionBody(F, DeclarationKind.Class, F)
-            listener: beginClassOrMixinBody(DeclarationKind.Class, {)
+            listener: beginClassOrMixinOrExtensionBody(DeclarationKind.Class, {)
             notEofOrValue(}, final)
             parseClassOrMixinOrExtensionMemberImpl({, DeclarationKind.Class, F)
               parseMetadataStar({)
@@ -33,7 +33,7 @@
                 listener: endMetadataStar(0)
               listener: beginMember()
               parseFields({, null, null, null, null, null, final, final, Instance of 'ComplexTypeInfo', foo1, DeclarationKind.Class, F, false)
-                listener: beginFields({)
+                listener: beginFields(DeclarationKind.Class, null, null, null, null, null, final, {)
                 ensureIdentifier(final, typeReference)
                   listener: handleIdentifier(Map, typeReference)
                 listener: beginTypeArguments(<)
@@ -83,7 +83,7 @@
                 listener: endMetadataStar(0)
               listener: beginMember()
               parseFields(;, null, null, null, null, null, final, final, Instance of 'ComplexTypeInfo', foo2, DeclarationKind.Class, F, false)
-                listener: beginFields(;)
+                listener: beginFields(DeclarationKind.Class, null, null, null, null, null, final, ;)
                 ensureIdentifier(final, typeReference)
                   listener: handleIdentifier(Map, typeReference)
                 listener: beginTypeArguments(<)
@@ -131,7 +131,7 @@
                 listener: endMetadataStar(0)
               listener: beginMember()
               parseFields(;, null, null, null, null, null, final, final, Instance of 'ComplexTypeInfo', foo3, DeclarationKind.Class, F, false)
-                listener: beginFields(;)
+                listener: beginFields(DeclarationKind.Class, null, null, null, null, null, final, ;)
                 ensureIdentifier(final, typeReference)
                   listener: handleIdentifier(Map, typeReference)
                 listener: beginTypeArguments(<)
@@ -169,7 +169,7 @@
                 listener: endMetadataStar(0)
               listener: beginMember()
               parseFields(;, null, null, null, null, null, final, final, Instance of 'ComplexTypeInfo', foo4, DeclarationKind.Class, F, false)
-                listener: beginFields(;)
+                listener: beginFields(DeclarationKind.Class, null, null, null, null, null, final, ;)
                 ensureIdentifier(final, typeReference)
                   listener: handleIdentifier(Map, typeReference)
                 listener: beginTypeArguments(<)
@@ -225,7 +225,7 @@
                 listener: endMetadataStar(0)
               listener: beginMember()
               parseFields(;, null, null, null, null, null, final, final, Instance of 'ComplexTypeInfo', foo5, DeclarationKind.Class, F, false)
-                listener: beginFields(;)
+                listener: beginFields(DeclarationKind.Class, null, null, null, null, null, final, ;)
                 ensureIdentifier(final, typeReference)
                   listener: handleIdentifier(Map, typeReference)
                 listener: beginTypeArguments(<)
@@ -270,7 +270,7 @@
                 listener: endMetadataStar(0)
               listener: beginMember()
               parseFields(;, null, null, null, null, null, final, final, Instance of 'ComplexTypeInfo', foo6, DeclarationKind.Class, F, false)
-                listener: beginFields(;)
+                listener: beginFields(DeclarationKind.Class, null, null, null, null, null, final, ;)
                 ensureIdentifier(final, typeReference)
                   listener: handleIdentifier(Map, typeReference)
                 listener: beginTypeArguments(<)
@@ -335,7 +335,7 @@
                 listener: endMetadataStar(0)
               listener: beginMember()
               parseFields(;, null, null, null, null, null, final, final, Instance of 'ComplexTypeInfo', foo7, DeclarationKind.Class, F, false)
-                listener: beginFields(;)
+                listener: beginFields(DeclarationKind.Class, null, null, null, null, null, final, ;)
                 ensureIdentifier(final, typeReference)
                   listener: handleIdentifier(Map, typeReference)
                 listener: beginTypeArguments(<)
@@ -388,7 +388,7 @@
                 listener: endMetadataStar(0)
               listener: beginMember()
               parseFields(;, null, null, null, null, null, final, final, Instance of 'ComplexTypeInfo', foo8, DeclarationKind.Class, F, false)
-                listener: beginFields(;)
+                listener: beginFields(DeclarationKind.Class, null, null, null, null, null, final, ;)
                 ensureIdentifier(final, typeReference)
                   listener: handleIdentifier(Map, typeReference)
                 listener: beginTypeArguments(<)
@@ -451,7 +451,7 @@
                 listener: endMetadataStar(0)
               listener: beginMember()
               parseFields(;, null, null, null, null, null, final, final, Instance of 'ComplexTypeInfo', foo9, DeclarationKind.Class, F, false)
-                listener: beginFields(;)
+                listener: beginFields(DeclarationKind.Class, null, null, null, null, null, final, ;)
                 ensureIdentifier(final, typeReference)
                   listener: handleIdentifier(Map, typeReference)
                 listener: beginTypeArguments(<)
@@ -496,7 +496,7 @@
                 listener: endClassFields(null, null, null, null, null, final, 1, final, ;)
               listener: endMember()
             notEofOrValue(}, })
-            listener: endClassOrMixinBody(DeclarationKind.Class, 9, {, })
+            listener: endClassOrMixinOrExtensionBody(DeclarationKind.Class, 9, {, })
           listener: endClassDeclaration(class, })
   listener: endTopLevelDeclaration()
   reportAllErrorTokens(class)
diff --git a/pkg/front_end/parser_testcases/error_recovery/issue_45251_list.dart.expect b/pkg/front_end/parser_testcases/error_recovery/issue_45251_list.dart.expect
index f5c21fa..dbfa889 100644
--- a/pkg/front_end/parser_testcases/error_recovery/issue_45251_list.dart.expect
+++ b/pkg/front_end/parser_testcases/error_recovery/issue_45251_list.dart.expect
@@ -15,7 +15,7 @@
 beginCompilationUnit(class)
   beginMetadataStar(class)
   endMetadataStar(0)
-  beginClassOrNamedMixinApplicationPrelude(class)
+  beginClassOrMixinOrNamedMixinApplicationPrelude(class)
     handleIdentifier(F, classOrMixinDeclaration)
     handleNoTypeVariables({)
     beginClassDeclaration(class, null, F)
@@ -24,11 +24,11 @@
       handleClassNoWithClause()
       handleClassOrMixinImplements(null, 0)
       handleClassHeader(class, class, null)
-      beginClassOrMixinBody(DeclarationKind.Class, {)
+      beginClassOrMixinOrExtensionBody(DeclarationKind.Class, {)
         beginMetadataStar(final)
         endMetadataStar(0)
         beginMember()
-          beginFields({)
+          beginFields(DeclarationKind.Class, null, null, null, null, null, final, {)
             handleIdentifier(List, typeReference)
             beginTypeArguments(<)
               handleIdentifier(Undefined, typeReference)
@@ -55,7 +55,7 @@
         beginMetadataStar(final)
         endMetadataStar(0)
         beginMember()
-          beginFields(;)
+          beginFields(DeclarationKind.Class, null, null, null, null, null, final, ;)
             handleIdentifier(List, typeReference)
             beginTypeArguments(<)
               handleIdentifier(Undefined, typeReference)
@@ -81,7 +81,7 @@
         beginMetadataStar(final)
         endMetadataStar(0)
         beginMember()
-          beginFields(;)
+          beginFields(DeclarationKind.Class, null, null, null, null, null, final, ;)
             handleIdentifier(List, typeReference)
             beginTypeArguments(<)
               handleIdentifier(Undefined, typeReference)
@@ -100,7 +100,7 @@
         beginMetadataStar(final)
         endMetadataStar(0)
         beginMember()
-          beginFields(;)
+          beginFields(DeclarationKind.Class, null, null, null, null, null, final, ;)
             handleIdentifier(List, typeReference)
             beginTypeArguments(<)
               handleIdentifier(Undefined, typeReference)
@@ -129,7 +129,7 @@
         beginMetadataStar(final)
         endMetadataStar(0)
         beginMember()
-          beginFields(;)
+          beginFields(DeclarationKind.Class, null, null, null, null, null, final, ;)
             handleIdentifier(List, typeReference)
             beginTypeArguments(<)
               handleIdentifier(Undefined, typeReference)
@@ -150,7 +150,7 @@
         beginMetadataStar(final)
         endMetadataStar(0)
         beginMember()
-          beginFields(;)
+          beginFields(DeclarationKind.Class, null, null, null, null, null, final, ;)
             handleIdentifier(List, typeReference)
             beginTypeArguments(<)
               handleIdentifier(Undefined, typeReference)
@@ -178,7 +178,7 @@
         beginMetadataStar(final)
         endMetadataStar(0)
         beginMember()
-          beginFields(;)
+          beginFields(DeclarationKind.Class, null, null, null, null, null, final, ;)
             handleIdentifier(List, typeReference)
             beginTypeArguments(<)
               handleIdentifier(Undefined, typeReference)
@@ -200,7 +200,7 @@
         beginMetadataStar(final)
         endMetadataStar(0)
         beginMember()
-          beginFields(;)
+          beginFields(DeclarationKind.Class, null, null, null, null, null, final, ;)
             handleIdentifier(List, typeReference)
             beginTypeArguments(<)
               handleIdentifier(Undefined, typeReference)
@@ -227,7 +227,7 @@
         beginMetadataStar(final)
         endMetadataStar(0)
         beginMember()
-          beginFields(;)
+          beginFields(DeclarationKind.Class, null, null, null, null, null, final, ;)
             handleIdentifier(List, typeReference)
             beginTypeArguments(<)
               handleIdentifier(Undefined, typeReference)
@@ -243,7 +243,7 @@
             endFieldInitializer(=, ;)
           endClassFields(null, null, null, null, null, final, 1, final, ;)
         endMember()
-      endClassOrMixinBody(DeclarationKind.Class, 9, {, })
+      endClassOrMixinOrExtensionBody(DeclarationKind.Class, 9, {, })
     endClassDeclaration(class, })
   endTopLevelDeclaration()
 endCompilationUnit(1, )
diff --git a/pkg/front_end/parser_testcases/error_recovery/issue_45251_list.dart.intertwined.expect b/pkg/front_end/parser_testcases/error_recovery/issue_45251_list.dart.intertwined.expect
index afe7290..fe10043 100644
--- a/pkg/front_end/parser_testcases/error_recovery/issue_45251_list.dart.intertwined.expect
+++ b/pkg/front_end/parser_testcases/error_recovery/issue_45251_list.dart.intertwined.expect
@@ -9,7 +9,7 @@
     parseTopLevelKeywordDeclaration(, class, Instance of 'DirectiveContext')
       parseClassDeclarationModifiers(, class)
       parseClassOrNamedMixinApplication(null, class)
-        listener: beginClassOrNamedMixinApplicationPrelude(class)
+        listener: beginClassOrMixinOrNamedMixinApplicationPrelude(class)
         ensureIdentifier(class, classOrMixinDeclaration)
           listener: handleIdentifier(F, classOrMixinDeclaration)
         listener: handleNoTypeVariables({)
@@ -25,7 +25,7 @@
               listener: handleClassOrMixinImplements(null, 0)
             listener: handleClassHeader(class, class, null)
           parseClassOrMixinOrExtensionBody(F, DeclarationKind.Class, F)
-            listener: beginClassOrMixinBody(DeclarationKind.Class, {)
+            listener: beginClassOrMixinOrExtensionBody(DeclarationKind.Class, {)
             notEofOrValue(}, final)
             parseClassOrMixinOrExtensionMemberImpl({, DeclarationKind.Class, F)
               parseMetadataStar({)
@@ -33,7 +33,7 @@
                 listener: endMetadataStar(0)
               listener: beginMember()
               parseFields({, null, null, null, null, null, final, final, Instance of 'SimpleTypeWith1Argument', foo1, DeclarationKind.Class, F, false)
-                listener: beginFields({)
+                listener: beginFields(DeclarationKind.Class, null, null, null, null, null, final, {)
                 listener: handleIdentifier(List, typeReference)
                 listener: beginTypeArguments(<)
                 listener: handleIdentifier(Undefined, typeReference)
@@ -80,7 +80,7 @@
                 listener: endMetadataStar(0)
               listener: beginMember()
               parseFields(;, null, null, null, null, null, final, final, Instance of 'SimpleTypeWith1Argument', foo2, DeclarationKind.Class, F, false)
-                listener: beginFields(;)
+                listener: beginFields(DeclarationKind.Class, null, null, null, null, null, final, ;)
                 listener: handleIdentifier(List, typeReference)
                 listener: beginTypeArguments(<)
                 listener: handleIdentifier(Undefined, typeReference)
@@ -121,7 +121,7 @@
                 listener: endMetadataStar(0)
               listener: beginMember()
               parseFields(;, null, null, null, null, null, final, final, Instance of 'SimpleTypeWith1Argument', foo3, DeclarationKind.Class, F, false)
-                listener: beginFields(;)
+                listener: beginFields(DeclarationKind.Class, null, null, null, null, null, final, ;)
                 listener: handleIdentifier(List, typeReference)
                 listener: beginTypeArguments(<)
                 listener: handleIdentifier(Undefined, typeReference)
@@ -159,7 +159,7 @@
                 listener: endMetadataStar(0)
               listener: beginMember()
               parseFields(;, null, null, null, null, null, final, final, Instance of 'SimpleTypeWith1Argument', foo4, DeclarationKind.Class, F, false)
-                listener: beginFields(;)
+                listener: beginFields(DeclarationKind.Class, null, null, null, null, null, final, ;)
                 listener: handleIdentifier(List, typeReference)
                 listener: beginTypeArguments(<)
                 listener: handleIdentifier(Undefined, typeReference)
@@ -206,7 +206,7 @@
                 listener: endMetadataStar(0)
               listener: beginMember()
               parseFields(;, null, null, null, null, null, final, final, Instance of 'SimpleTypeWith1Argument', foo5, DeclarationKind.Class, F, false)
-                listener: beginFields(;)
+                listener: beginFields(DeclarationKind.Class, null, null, null, null, null, final, ;)
                 listener: handleIdentifier(List, typeReference)
                 listener: beginTypeArguments(<)
                 listener: handleIdentifier(Undefined, typeReference)
@@ -245,7 +245,7 @@
                 listener: endMetadataStar(0)
               listener: beginMember()
               parseFields(;, null, null, null, null, null, final, final, Instance of 'SimpleTypeWith1Argument', foo6, DeclarationKind.Class, F, false)
-                listener: beginFields(;)
+                listener: beginFields(DeclarationKind.Class, null, null, null, null, null, final, ;)
                 listener: handleIdentifier(List, typeReference)
                 listener: beginTypeArguments(<)
                 listener: handleIdentifier(Undefined, typeReference)
@@ -295,7 +295,7 @@
                 listener: endMetadataStar(0)
               listener: beginMember()
               parseFields(;, null, null, null, null, null, final, final, Instance of 'SimpleTypeWith1Argument', foo7, DeclarationKind.Class, F, false)
-                listener: beginFields(;)
+                listener: beginFields(DeclarationKind.Class, null, null, null, null, null, final, ;)
                 listener: handleIdentifier(List, typeReference)
                 listener: beginTypeArguments(<)
                 listener: handleIdentifier(Undefined, typeReference)
@@ -338,7 +338,7 @@
                 listener: endMetadataStar(0)
               listener: beginMember()
               parseFields(;, null, null, null, null, null, final, final, Instance of 'SimpleTypeWith1Argument', foo8, DeclarationKind.Class, F, false)
-                listener: beginFields(;)
+                listener: beginFields(DeclarationKind.Class, null, null, null, null, null, final, ;)
                 listener: handleIdentifier(List, typeReference)
                 listener: beginTypeArguments(<)
                 listener: handleIdentifier(Undefined, typeReference)
@@ -382,7 +382,7 @@
                 listener: endMetadataStar(0)
               listener: beginMember()
               parseFields(;, null, null, null, null, null, final, final, Instance of 'SimpleTypeWith1Argument', foo9, DeclarationKind.Class, F, false)
-                listener: beginFields(;)
+                listener: beginFields(DeclarationKind.Class, null, null, null, null, null, final, ;)
                 listener: handleIdentifier(List, typeReference)
                 listener: beginTypeArguments(<)
                 listener: handleIdentifier(Undefined, typeReference)
@@ -411,7 +411,7 @@
                 listener: endClassFields(null, null, null, null, null, final, 1, final, ;)
               listener: endMember()
             notEofOrValue(}, })
-            listener: endClassOrMixinBody(DeclarationKind.Class, 9, {, })
+            listener: endClassOrMixinOrExtensionBody(DeclarationKind.Class, 9, {, })
           listener: endClassDeclaration(class, })
   listener: endTopLevelDeclaration()
   reportAllErrorTokens(class)
diff --git a/pkg/front_end/parser_testcases/error_recovery/issue_45251_list_const.dart.expect b/pkg/front_end/parser_testcases/error_recovery/issue_45251_list_const.dart.expect
index 50b89e2..ee30059 100644
--- a/pkg/front_end/parser_testcases/error_recovery/issue_45251_list_const.dart.expect
+++ b/pkg/front_end/parser_testcases/error_recovery/issue_45251_list_const.dart.expect
@@ -19,7 +19,7 @@
 beginCompilationUnit(class)
   beginMetadataStar(class)
   endMetadataStar(0)
-  beginClassOrNamedMixinApplicationPrelude(class)
+  beginClassOrMixinOrNamedMixinApplicationPrelude(class)
     handleIdentifier(F, classOrMixinDeclaration)
     handleNoTypeVariables({)
     beginClassDeclaration(class, null, F)
@@ -28,11 +28,11 @@
       handleClassNoWithClause()
       handleClassOrMixinImplements(null, 0)
       handleClassHeader(class, class, null)
-      beginClassOrMixinBody(DeclarationKind.Class, {)
+      beginClassOrMixinOrExtensionBody(DeclarationKind.Class, {)
         beginMetadataStar(final)
         endMetadataStar(0)
         beginMember()
-          beginFields({)
+          beginFields(DeclarationKind.Class, null, null, null, null, null, final, {)
             handleIdentifier(List, typeReference)
             beginTypeArguments(<)
               handleIdentifier(Undefined, typeReference)
@@ -61,7 +61,7 @@
         beginMetadataStar(final)
         endMetadataStar(0)
         beginMember()
-          beginFields(;)
+          beginFields(DeclarationKind.Class, null, null, null, null, null, final, ;)
             handleIdentifier(List, typeReference)
             beginTypeArguments(<)
               handleIdentifier(Undefined, typeReference)
@@ -89,7 +89,7 @@
         beginMetadataStar(final)
         endMetadataStar(0)
         beginMember()
-          beginFields(;)
+          beginFields(DeclarationKind.Class, null, null, null, null, null, final, ;)
             handleIdentifier(List, typeReference)
             beginTypeArguments(<)
               handleIdentifier(Undefined, typeReference)
@@ -110,7 +110,7 @@
         beginMetadataStar(final)
         endMetadataStar(0)
         beginMember()
-          beginFields(;)
+          beginFields(DeclarationKind.Class, null, null, null, null, null, final, ;)
             handleIdentifier(List, typeReference)
             beginTypeArguments(<)
               handleIdentifier(Undefined, typeReference)
@@ -143,7 +143,7 @@
         beginMetadataStar(final)
         endMetadataStar(0)
         beginMember()
-          beginFields(;)
+          beginFields(DeclarationKind.Class, null, null, null, null, null, final, ;)
             handleIdentifier(List, typeReference)
             beginTypeArguments(<)
               handleIdentifier(Undefined, typeReference)
@@ -168,7 +168,7 @@
         beginMetadataStar(final)
         endMetadataStar(0)
         beginMember()
-          beginFields(;)
+          beginFields(DeclarationKind.Class, null, null, null, null, null, final, ;)
             handleIdentifier(List, typeReference)
             beginTypeArguments(<)
               handleIdentifier(Undefined, typeReference)
@@ -198,7 +198,7 @@
         beginMetadataStar(final)
         endMetadataStar(0)
         beginMember()
-          beginFields(;)
+          beginFields(DeclarationKind.Class, null, null, null, null, null, final, ;)
             handleIdentifier(List, typeReference)
             beginTypeArguments(<)
               handleIdentifier(Undefined, typeReference)
@@ -220,7 +220,7 @@
         beginMetadataStar(final)
         endMetadataStar(0)
         beginMember()
-          beginFields(;)
+          beginFields(DeclarationKind.Class, null, null, null, null, null, final, ;)
             handleIdentifier(List, typeReference)
             beginTypeArguments(<)
               handleIdentifier(Undefined, typeReference)
@@ -249,7 +249,7 @@
         beginMetadataStar(final)
         endMetadataStar(0)
         beginMember()
-          beginFields(;)
+          beginFields(DeclarationKind.Class, null, null, null, null, null, final, ;)
             handleIdentifier(List, typeReference)
             beginTypeArguments(<)
               handleIdentifier(Undefined, typeReference)
@@ -267,7 +267,7 @@
             endFieldInitializer(=, ;)
           endClassFields(null, null, null, null, null, final, 1, final, ;)
         endMember()
-      endClassOrMixinBody(DeclarationKind.Class, 9, {, })
+      endClassOrMixinOrExtensionBody(DeclarationKind.Class, 9, {, })
     endClassDeclaration(class, })
   endTopLevelDeclaration()
 endCompilationUnit(1, )
diff --git a/pkg/front_end/parser_testcases/error_recovery/issue_45251_list_const.dart.intertwined.expect b/pkg/front_end/parser_testcases/error_recovery/issue_45251_list_const.dart.intertwined.expect
index cce2e11..2a9f996 100644
--- a/pkg/front_end/parser_testcases/error_recovery/issue_45251_list_const.dart.intertwined.expect
+++ b/pkg/front_end/parser_testcases/error_recovery/issue_45251_list_const.dart.intertwined.expect
@@ -9,7 +9,7 @@
     parseTopLevelKeywordDeclaration(, class, Instance of 'DirectiveContext')
       parseClassDeclarationModifiers(, class)
       parseClassOrNamedMixinApplication(null, class)
-        listener: beginClassOrNamedMixinApplicationPrelude(class)
+        listener: beginClassOrMixinOrNamedMixinApplicationPrelude(class)
         ensureIdentifier(class, classOrMixinDeclaration)
           listener: handleIdentifier(F, classOrMixinDeclaration)
         listener: handleNoTypeVariables({)
@@ -25,7 +25,7 @@
               listener: handleClassOrMixinImplements(null, 0)
             listener: handleClassHeader(class, class, null)
           parseClassOrMixinOrExtensionBody(F, DeclarationKind.Class, F)
-            listener: beginClassOrMixinBody(DeclarationKind.Class, {)
+            listener: beginClassOrMixinOrExtensionBody(DeclarationKind.Class, {)
             notEofOrValue(}, final)
             parseClassOrMixinOrExtensionMemberImpl({, DeclarationKind.Class, F)
               parseMetadataStar({)
@@ -33,7 +33,7 @@
                 listener: endMetadataStar(0)
               listener: beginMember()
               parseFields({, null, null, null, null, null, final, final, Instance of 'SimpleTypeWith1Argument', foo1, DeclarationKind.Class, F, false)
-                listener: beginFields({)
+                listener: beginFields(DeclarationKind.Class, null, null, null, null, null, final, {)
                 listener: handleIdentifier(List, typeReference)
                 listener: beginTypeArguments(<)
                 listener: handleIdentifier(Undefined, typeReference)
@@ -79,7 +79,7 @@
                 listener: endMetadataStar(0)
               listener: beginMember()
               parseFields(;, null, null, null, null, null, final, final, Instance of 'SimpleTypeWith1Argument', foo2, DeclarationKind.Class, F, false)
-                listener: beginFields(;)
+                listener: beginFields(DeclarationKind.Class, null, null, null, null, null, final, ;)
                 listener: handleIdentifier(List, typeReference)
                 listener: beginTypeArguments(<)
                 listener: handleIdentifier(Undefined, typeReference)
@@ -123,7 +123,7 @@
                 listener: endMetadataStar(0)
               listener: beginMember()
               parseFields(;, null, null, null, null, null, final, final, Instance of 'SimpleTypeWith1Argument', foo3, DeclarationKind.Class, F, false)
-                listener: beginFields(;)
+                listener: beginFields(DeclarationKind.Class, null, null, null, null, null, final, ;)
                 listener: handleIdentifier(List, typeReference)
                 listener: beginTypeArguments(<)
                 listener: handleIdentifier(Undefined, typeReference)
@@ -160,7 +160,7 @@
                 listener: endMetadataStar(0)
               listener: beginMember()
               parseFields(;, null, null, null, null, null, final, final, Instance of 'SimpleTypeWith1Argument', foo4, DeclarationKind.Class, F, false)
-                listener: beginFields(;)
+                listener: beginFields(DeclarationKind.Class, null, null, null, null, null, final, ;)
                 listener: handleIdentifier(List, typeReference)
                 listener: beginTypeArguments(<)
                 listener: handleIdentifier(Undefined, typeReference)
@@ -209,7 +209,7 @@
                 listener: endMetadataStar(0)
               listener: beginMember()
               parseFields(;, null, null, null, null, null, final, final, Instance of 'SimpleTypeWith1Argument', foo5, DeclarationKind.Class, F, false)
-                listener: beginFields(;)
+                listener: beginFields(DeclarationKind.Class, null, null, null, null, null, final, ;)
                 listener: handleIdentifier(List, typeReference)
                 listener: beginTypeArguments(<)
                 listener: handleIdentifier(Undefined, typeReference)
@@ -250,7 +250,7 @@
                 listener: endMetadataStar(0)
               listener: beginMember()
               parseFields(;, null, null, null, null, null, final, final, Instance of 'SimpleTypeWith1Argument', foo6, DeclarationKind.Class, F, false)
-                listener: beginFields(;)
+                listener: beginFields(DeclarationKind.Class, null, null, null, null, null, final, ;)
                 listener: handleIdentifier(List, typeReference)
                 listener: beginTypeArguments(<)
                 listener: handleIdentifier(Undefined, typeReference)
@@ -299,7 +299,7 @@
                 listener: endMetadataStar(0)
               listener: beginMember()
               parseFields(;, null, null, null, null, null, final, final, Instance of 'SimpleTypeWith1Argument', foo7, DeclarationKind.Class, F, false)
-                listener: beginFields(;)
+                listener: beginFields(DeclarationKind.Class, null, null, null, null, null, final, ;)
                 listener: handleIdentifier(List, typeReference)
                 listener: beginTypeArguments(<)
                 listener: handleIdentifier(Undefined, typeReference)
@@ -339,7 +339,7 @@
                 listener: endMetadataStar(0)
               listener: beginMember()
               parseFields(;, null, null, null, null, null, final, final, Instance of 'SimpleTypeWith1Argument', foo8, DeclarationKind.Class, F, false)
-                listener: beginFields(;)
+                listener: beginFields(DeclarationKind.Class, null, null, null, null, null, final, ;)
                 listener: handleIdentifier(List, typeReference)
                 listener: beginTypeArguments(<)
                 listener: handleIdentifier(Undefined, typeReference)
@@ -386,7 +386,7 @@
                 listener: endMetadataStar(0)
               listener: beginMember()
               parseFields(;, null, null, null, null, null, final, final, Instance of 'SimpleTypeWith1Argument', foo9, DeclarationKind.Class, F, false)
-                listener: beginFields(;)
+                listener: beginFields(DeclarationKind.Class, null, null, null, null, null, final, ;)
                 listener: handleIdentifier(List, typeReference)
                 listener: beginTypeArguments(<)
                 listener: handleIdentifier(Undefined, typeReference)
@@ -418,7 +418,7 @@
                 listener: endClassFields(null, null, null, null, null, final, 1, final, ;)
               listener: endMember()
             notEofOrValue(}, })
-            listener: endClassOrMixinBody(DeclarationKind.Class, 9, {, })
+            listener: endClassOrMixinOrExtensionBody(DeclarationKind.Class, 9, {, })
           listener: endClassDeclaration(class, })
   listener: endTopLevelDeclaration()
   reportAllErrorTokens(class)
diff --git a/pkg/front_end/parser_testcases/error_recovery/issue_45251_list_new.dart.expect b/pkg/front_end/parser_testcases/error_recovery/issue_45251_list_new.dart.expect
index afbfdbd..53c04d2 100644
--- a/pkg/front_end/parser_testcases/error_recovery/issue_45251_list_new.dart.expect
+++ b/pkg/front_end/parser_testcases/error_recovery/issue_45251_list_new.dart.expect
@@ -31,7 +31,7 @@
 beginCompilationUnit(class)
   beginMetadataStar(class)
   endMetadataStar(0)
-  beginClassOrNamedMixinApplicationPrelude(class)
+  beginClassOrMixinOrNamedMixinApplicationPrelude(class)
     handleIdentifier(F, classOrMixinDeclaration)
     handleNoTypeVariables({)
     beginClassDeclaration(class, null, F)
@@ -40,11 +40,11 @@
       handleClassNoWithClause()
       handleClassOrMixinImplements(null, 0)
       handleClassHeader(class, class, null)
-      beginClassOrMixinBody(DeclarationKind.Class, {)
+      beginClassOrMixinOrExtensionBody(DeclarationKind.Class, {)
         beginMetadataStar(final)
         endMetadataStar(0)
         beginMember()
-          beginFields({)
+          beginFields(DeclarationKind.Class, null, null, null, null, null, final, {)
             handleIdentifier(List, typeReference)
             beginTypeArguments(<)
               handleIdentifier(Undefined, typeReference)
@@ -71,7 +71,7 @@
         beginMetadataStar(final)
         endMetadataStar(0)
         beginMember()
-          beginFields(;)
+          beginFields(DeclarationKind.Class, null, null, null, null, null, final, ;)
             handleIdentifier(List, typeReference)
             beginTypeArguments(<)
               handleIdentifier(Undefined, typeReference)
@@ -98,7 +98,7 @@
         beginMetadataStar(final)
         endMetadataStar(0)
         beginMember()
-          beginFields(;)
+          beginFields(DeclarationKind.Class, null, null, null, null, null, final, ;)
             handleIdentifier(List, typeReference)
             beginTypeArguments(<)
               handleIdentifier(Undefined, typeReference)
@@ -117,7 +117,7 @@
         beginMetadataStar(final)
         endMetadataStar(0)
         beginMember()
-          beginFields(;)
+          beginFields(DeclarationKind.Class, null, null, null, null, null, final, ;)
             handleIdentifier(List, typeReference)
             beginTypeArguments(<)
               handleIdentifier(Undefined, typeReference)
@@ -150,7 +150,7 @@
         beginMetadataStar(final)
         endMetadataStar(0)
         beginMember()
-          beginFields(;)
+          beginFields(DeclarationKind.Class, null, null, null, null, null, final, ;)
             handleIdentifier(List, typeReference)
             beginTypeArguments(<)
               handleIdentifier(Undefined, typeReference)
@@ -175,7 +175,7 @@
         beginMetadataStar(final)
         endMetadataStar(0)
         beginMember()
-          beginFields(;)
+          beginFields(DeclarationKind.Class, null, null, null, null, null, final, ;)
             handleIdentifier(List, typeReference)
             beginTypeArguments(<)
               handleIdentifier(Undefined, typeReference)
@@ -203,7 +203,7 @@
         beginMetadataStar(final)
         endMetadataStar(0)
         beginMember()
-          beginFields(;)
+          beginFields(DeclarationKind.Class, null, null, null, null, null, final, ;)
             handleIdentifier(List, typeReference)
             beginTypeArguments(<)
               handleIdentifier(Undefined, typeReference)
@@ -223,7 +223,7 @@
         beginMetadataStar(final)
         endMetadataStar(0)
         beginMember()
-          beginFields(;)
+          beginFields(DeclarationKind.Class, null, null, null, null, null, final, ;)
             handleIdentifier(List, typeReference)
             beginTypeArguments(<)
               handleIdentifier(Undefined, typeReference)
@@ -251,7 +251,7 @@
         beginMetadataStar(final)
         endMetadataStar(0)
         beginMember()
-          beginFields(;)
+          beginFields(DeclarationKind.Class, null, null, null, null, null, final, ;)
             handleIdentifier(List, typeReference)
             beginTypeArguments(<)
               handleIdentifier(Undefined, typeReference)
@@ -268,7 +268,7 @@
             endFieldInitializer(=, ;)
           endClassFields(null, null, null, null, null, final, 1, final, ;)
         endMember()
-      endClassOrMixinBody(DeclarationKind.Class, 9, {, })
+      endClassOrMixinOrExtensionBody(DeclarationKind.Class, 9, {, })
     endClassDeclaration(class, })
   endTopLevelDeclaration()
 endCompilationUnit(1, )
diff --git a/pkg/front_end/parser_testcases/error_recovery/issue_45251_list_new.dart.intertwined.expect b/pkg/front_end/parser_testcases/error_recovery/issue_45251_list_new.dart.intertwined.expect
index a698701..0133f20 100644
--- a/pkg/front_end/parser_testcases/error_recovery/issue_45251_list_new.dart.intertwined.expect
+++ b/pkg/front_end/parser_testcases/error_recovery/issue_45251_list_new.dart.intertwined.expect
@@ -9,7 +9,7 @@
     parseTopLevelKeywordDeclaration(, class, Instance of 'DirectiveContext')
       parseClassDeclarationModifiers(, class)
       parseClassOrNamedMixinApplication(null, class)
-        listener: beginClassOrNamedMixinApplicationPrelude(class)
+        listener: beginClassOrMixinOrNamedMixinApplicationPrelude(class)
         ensureIdentifier(class, classOrMixinDeclaration)
           listener: handleIdentifier(F, classOrMixinDeclaration)
         listener: handleNoTypeVariables({)
@@ -25,7 +25,7 @@
               listener: handleClassOrMixinImplements(null, 0)
             listener: handleClassHeader(class, class, null)
           parseClassOrMixinOrExtensionBody(F, DeclarationKind.Class, F)
-            listener: beginClassOrMixinBody(DeclarationKind.Class, {)
+            listener: beginClassOrMixinOrExtensionBody(DeclarationKind.Class, {)
             notEofOrValue(}, final)
             parseClassOrMixinOrExtensionMemberImpl({, DeclarationKind.Class, F)
               parseMetadataStar({)
@@ -33,7 +33,7 @@
                 listener: endMetadataStar(0)
               listener: beginMember()
               parseFields({, null, null, null, null, null, final, final, Instance of 'SimpleTypeWith1Argument', foo1, DeclarationKind.Class, F, false)
-                listener: beginFields({)
+                listener: beginFields(DeclarationKind.Class, null, null, null, null, null, final, {)
                 listener: handleIdentifier(List, typeReference)
                 listener: beginTypeArguments(<)
                 listener: handleIdentifier(Undefined, typeReference)
@@ -79,7 +79,7 @@
                 listener: endMetadataStar(0)
               listener: beginMember()
               parseFields(;, null, null, null, null, null, final, final, Instance of 'SimpleTypeWith1Argument', foo2, DeclarationKind.Class, F, false)
-                listener: beginFields(;)
+                listener: beginFields(DeclarationKind.Class, null, null, null, null, null, final, ;)
                 listener: handleIdentifier(List, typeReference)
                 listener: beginTypeArguments(<)
                 listener: handleIdentifier(Undefined, typeReference)
@@ -125,7 +125,7 @@
                 listener: endMetadataStar(0)
               listener: beginMember()
               parseFields(;, null, null, null, null, null, final, final, Instance of 'SimpleTypeWith1Argument', foo3, DeclarationKind.Class, F, false)
-                listener: beginFields(;)
+                listener: beginFields(DeclarationKind.Class, null, null, null, null, null, final, ;)
                 listener: handleIdentifier(List, typeReference)
                 listener: beginTypeArguments(<)
                 listener: handleIdentifier(Undefined, typeReference)
@@ -162,7 +162,7 @@
                 listener: endMetadataStar(0)
               listener: beginMember()
               parseFields(;, null, null, null, null, null, final, final, Instance of 'SimpleTypeWith1Argument', foo4, DeclarationKind.Class, F, false)
-                listener: beginFields(;)
+                listener: beginFields(DeclarationKind.Class, null, null, null, null, null, final, ;)
                 listener: handleIdentifier(List, typeReference)
                 listener: beginTypeArguments(<)
                 listener: handleIdentifier(Undefined, typeReference)
@@ -212,7 +212,7 @@
                 listener: endMetadataStar(0)
               listener: beginMember()
               parseFields(;, null, null, null, null, null, final, final, Instance of 'SimpleTypeWith1Argument', foo5, DeclarationKind.Class, F, false)
-                listener: beginFields(;)
+                listener: beginFields(DeclarationKind.Class, null, null, null, null, null, final, ;)
                 listener: handleIdentifier(List, typeReference)
                 listener: beginTypeArguments(<)
                 listener: handleIdentifier(Undefined, typeReference)
@@ -254,7 +254,7 @@
                 listener: endMetadataStar(0)
               listener: beginMember()
               parseFields(;, null, null, null, null, null, final, final, Instance of 'SimpleTypeWith1Argument', foo6, DeclarationKind.Class, F, false)
-                listener: beginFields(;)
+                listener: beginFields(DeclarationKind.Class, null, null, null, null, null, final, ;)
                 listener: handleIdentifier(List, typeReference)
                 listener: beginTypeArguments(<)
                 listener: handleIdentifier(Undefined, typeReference)
@@ -303,7 +303,7 @@
                 listener: endMetadataStar(0)
               listener: beginMember()
               parseFields(;, null, null, null, null, null, final, final, Instance of 'SimpleTypeWith1Argument', foo7, DeclarationKind.Class, F, false)
-                listener: beginFields(;)
+                listener: beginFields(DeclarationKind.Class, null, null, null, null, null, final, ;)
                 listener: handleIdentifier(List, typeReference)
                 listener: beginTypeArguments(<)
                 listener: handleIdentifier(Undefined, typeReference)
@@ -343,7 +343,7 @@
                 listener: endMetadataStar(0)
               listener: beginMember()
               parseFields(;, null, null, null, null, null, final, final, Instance of 'SimpleTypeWith1Argument', foo8, DeclarationKind.Class, F, false)
-                listener: beginFields(;)
+                listener: beginFields(DeclarationKind.Class, null, null, null, null, null, final, ;)
                 listener: handleIdentifier(List, typeReference)
                 listener: beginTypeArguments(<)
                 listener: handleIdentifier(Undefined, typeReference)
@@ -392,7 +392,7 @@
                 listener: endMetadataStar(0)
               listener: beginMember()
               parseFields(;, null, null, null, null, null, final, final, Instance of 'SimpleTypeWith1Argument', foo9, DeclarationKind.Class, F, false)
-                listener: beginFields(;)
+                listener: beginFields(DeclarationKind.Class, null, null, null, null, null, final, ;)
                 listener: handleIdentifier(List, typeReference)
                 listener: beginTypeArguments(<)
                 listener: handleIdentifier(Undefined, typeReference)
@@ -426,7 +426,7 @@
                 listener: endClassFields(null, null, null, null, null, final, 1, final, ;)
               listener: endMember()
             notEofOrValue(}, })
-            listener: endClassOrMixinBody(DeclarationKind.Class, 9, {, })
+            listener: endClassOrMixinOrExtensionBody(DeclarationKind.Class, 9, {, })
           listener: endClassDeclaration(class, })
   listener: endTopLevelDeclaration()
   reportAllErrorTokens(class)
diff --git a/pkg/front_end/parser_testcases/error_recovery/issue_45251_new.dart.expect b/pkg/front_end/parser_testcases/error_recovery/issue_45251_new.dart.expect
index 2010b9a..173eeae 100644
--- a/pkg/front_end/parser_testcases/error_recovery/issue_45251_new.dart.expect
+++ b/pkg/front_end/parser_testcases/error_recovery/issue_45251_new.dart.expect
@@ -31,7 +31,7 @@
 beginCompilationUnit(class)
   beginMetadataStar(class)
   endMetadataStar(0)
-  beginClassOrNamedMixinApplicationPrelude(class)
+  beginClassOrMixinOrNamedMixinApplicationPrelude(class)
     handleIdentifier(F, classOrMixinDeclaration)
     handleNoTypeVariables({)
     beginClassDeclaration(class, null, F)
@@ -40,11 +40,11 @@
       handleClassNoWithClause()
       handleClassOrMixinImplements(null, 0)
       handleClassHeader(class, class, null)
-      beginClassOrMixinBody(DeclarationKind.Class, {)
+      beginClassOrMixinOrExtensionBody(DeclarationKind.Class, {)
         beginMetadataStar(final)
         endMetadataStar(0)
         beginMember()
-          beginFields({)
+          beginFields(DeclarationKind.Class, null, null, null, null, null, final, {)
             handleIdentifier(Map, typeReference)
             beginTypeArguments(<)
               handleIdentifier(String, typeReference)
@@ -77,7 +77,7 @@
         beginMetadataStar(final)
         endMetadataStar(0)
         beginMember()
-          beginFields(;)
+          beginFields(DeclarationKind.Class, null, null, null, null, null, final, ;)
             handleIdentifier(Map, typeReference)
             beginTypeArguments(<)
               handleIdentifier(String, typeReference)
@@ -110,7 +110,7 @@
         beginMetadataStar(final)
         endMetadataStar(0)
         beginMember()
-          beginFields(;)
+          beginFields(DeclarationKind.Class, null, null, null, null, null, final, ;)
             handleIdentifier(Map, typeReference)
             beginTypeArguments(<)
               handleIdentifier(String, typeReference)
@@ -132,7 +132,7 @@
         beginMetadataStar(final)
         endMetadataStar(0)
         beginMember()
-          beginFields(;)
+          beginFields(DeclarationKind.Class, null, null, null, null, null, final, ;)
             handleIdentifier(Map, typeReference)
             beginTypeArguments(<)
               handleIdentifier(String, typeReference)
@@ -171,7 +171,7 @@
         beginMetadataStar(final)
         endMetadataStar(0)
         beginMember()
-          beginFields(;)
+          beginFields(DeclarationKind.Class, null, null, null, null, null, final, ;)
             handleIdentifier(Map, typeReference)
             beginTypeArguments(<)
               handleIdentifier(String, typeReference)
@@ -199,7 +199,7 @@
         beginMetadataStar(final)
         endMetadataStar(0)
         beginMember()
-          beginFields(;)
+          beginFields(DeclarationKind.Class, null, null, null, null, null, final, ;)
             handleIdentifier(Map, typeReference)
             beginTypeArguments(<)
               handleIdentifier(String, typeReference)
@@ -236,7 +236,7 @@
         beginMetadataStar(final)
         endMetadataStar(0)
         beginMember()
-          beginFields(;)
+          beginFields(DeclarationKind.Class, null, null, null, null, null, final, ;)
             handleIdentifier(Map, typeReference)
             beginTypeArguments(<)
               handleIdentifier(String, typeReference)
@@ -262,7 +262,7 @@
         beginMetadataStar(final)
         endMetadataStar(0)
         beginMember()
-          beginFields(;)
+          beginFields(DeclarationKind.Class, null, null, null, null, null, final, ;)
             handleIdentifier(Map, typeReference)
             beginTypeArguments(<)
               handleIdentifier(String, typeReference)
@@ -299,7 +299,7 @@
         beginMetadataStar(final)
         endMetadataStar(0)
         beginMember()
-          beginFields(;)
+          beginFields(DeclarationKind.Class, null, null, null, null, null, final, ;)
             handleIdentifier(Map, typeReference)
             beginTypeArguments(<)
               handleIdentifier(String, typeReference)
@@ -322,7 +322,7 @@
             endFieldInitializer(=, ;)
           endClassFields(null, null, null, null, null, final, 1, final, ;)
         endMember()
-      endClassOrMixinBody(DeclarationKind.Class, 9, {, })
+      endClassOrMixinOrExtensionBody(DeclarationKind.Class, 9, {, })
     endClassDeclaration(class, })
   endTopLevelDeclaration()
 endCompilationUnit(1, )
diff --git a/pkg/front_end/parser_testcases/error_recovery/issue_45251_new.dart.intertwined.expect b/pkg/front_end/parser_testcases/error_recovery/issue_45251_new.dart.intertwined.expect
index 61610fe1..0b1733b 100644
--- a/pkg/front_end/parser_testcases/error_recovery/issue_45251_new.dart.intertwined.expect
+++ b/pkg/front_end/parser_testcases/error_recovery/issue_45251_new.dart.intertwined.expect
@@ -9,7 +9,7 @@
     parseTopLevelKeywordDeclaration(, class, Instance of 'DirectiveContext')
       parseClassDeclarationModifiers(, class)
       parseClassOrNamedMixinApplication(null, class)
-        listener: beginClassOrNamedMixinApplicationPrelude(class)
+        listener: beginClassOrMixinOrNamedMixinApplicationPrelude(class)
         ensureIdentifier(class, classOrMixinDeclaration)
           listener: handleIdentifier(F, classOrMixinDeclaration)
         listener: handleNoTypeVariables({)
@@ -25,7 +25,7 @@
               listener: handleClassOrMixinImplements(null, 0)
             listener: handleClassHeader(class, class, null)
           parseClassOrMixinOrExtensionBody(F, DeclarationKind.Class, F)
-            listener: beginClassOrMixinBody(DeclarationKind.Class, {)
+            listener: beginClassOrMixinOrExtensionBody(DeclarationKind.Class, {)
             notEofOrValue(}, final)
             parseClassOrMixinOrExtensionMemberImpl({, DeclarationKind.Class, F)
               parseMetadataStar({)
@@ -33,7 +33,7 @@
                 listener: endMetadataStar(0)
               listener: beginMember()
               parseFields({, null, null, null, null, null, final, final, Instance of 'ComplexTypeInfo', foo1, DeclarationKind.Class, F, false)
-                listener: beginFields({)
+                listener: beginFields(DeclarationKind.Class, null, null, null, null, null, final, {)
                 ensureIdentifier(final, typeReference)
                   listener: handleIdentifier(Map, typeReference)
                 listener: beginTypeArguments(<)
@@ -83,7 +83,7 @@
                 listener: endMetadataStar(0)
               listener: beginMember()
               parseFields(;, null, null, null, null, null, final, final, Instance of 'ComplexTypeInfo', foo2, DeclarationKind.Class, F, false)
-                listener: beginFields(;)
+                listener: beginFields(DeclarationKind.Class, null, null, null, null, null, final, ;)
                 ensureIdentifier(final, typeReference)
                   listener: handleIdentifier(Map, typeReference)
                 listener: beginTypeArguments(<)
@@ -133,7 +133,7 @@
                 listener: endMetadataStar(0)
               listener: beginMember()
               parseFields(;, null, null, null, null, null, final, final, Instance of 'ComplexTypeInfo', foo3, DeclarationKind.Class, F, false)
-                listener: beginFields(;)
+                listener: beginFields(DeclarationKind.Class, null, null, null, null, null, final, ;)
                 ensureIdentifier(final, typeReference)
                   listener: handleIdentifier(Map, typeReference)
                 listener: beginTypeArguments(<)
@@ -171,7 +171,7 @@
                 listener: endMetadataStar(0)
               listener: beginMember()
               parseFields(;, null, null, null, null, null, final, final, Instance of 'ComplexTypeInfo', foo4, DeclarationKind.Class, F, false)
-                listener: beginFields(;)
+                listener: beginFields(DeclarationKind.Class, null, null, null, null, null, final, ;)
                 ensureIdentifier(final, typeReference)
                   listener: handleIdentifier(Map, typeReference)
                 listener: beginTypeArguments(<)
@@ -228,7 +228,7 @@
                 listener: endMetadataStar(0)
               listener: beginMember()
               parseFields(;, null, null, null, null, null, final, final, Instance of 'ComplexTypeInfo', foo5, DeclarationKind.Class, F, false)
-                listener: beginFields(;)
+                listener: beginFields(DeclarationKind.Class, null, null, null, null, null, final, ;)
                 ensureIdentifier(final, typeReference)
                   listener: handleIdentifier(Map, typeReference)
                 listener: beginTypeArguments(<)
@@ -274,7 +274,7 @@
                 listener: endMetadataStar(0)
               listener: beginMember()
               parseFields(;, null, null, null, null, null, final, final, Instance of 'ComplexTypeInfo', foo6, DeclarationKind.Class, F, false)
-                listener: beginFields(;)
+                listener: beginFields(DeclarationKind.Class, null, null, null, null, null, final, ;)
                 ensureIdentifier(final, typeReference)
                   listener: handleIdentifier(Map, typeReference)
                 listener: beginTypeArguments(<)
@@ -339,7 +339,7 @@
                 listener: endMetadataStar(0)
               listener: beginMember()
               parseFields(;, null, null, null, null, null, final, final, Instance of 'ComplexTypeInfo', foo7, DeclarationKind.Class, F, false)
-                listener: beginFields(;)
+                listener: beginFields(DeclarationKind.Class, null, null, null, null, null, final, ;)
                 ensureIdentifier(final, typeReference)
                   listener: handleIdentifier(Map, typeReference)
                 listener: beginTypeArguments(<)
@@ -392,7 +392,7 @@
                 listener: endMetadataStar(0)
               listener: beginMember()
               parseFields(;, null, null, null, null, null, final, final, Instance of 'ComplexTypeInfo', foo8, DeclarationKind.Class, F, false)
-                listener: beginFields(;)
+                listener: beginFields(DeclarationKind.Class, null, null, null, null, null, final, ;)
                 ensureIdentifier(final, typeReference)
                   listener: handleIdentifier(Map, typeReference)
                 listener: beginTypeArguments(<)
@@ -457,7 +457,7 @@
                 listener: endMetadataStar(0)
               listener: beginMember()
               parseFields(;, null, null, null, null, null, final, final, Instance of 'ComplexTypeInfo', foo9, DeclarationKind.Class, F, false)
-                listener: beginFields(;)
+                listener: beginFields(DeclarationKind.Class, null, null, null, null, null, final, ;)
                 ensureIdentifier(final, typeReference)
                   listener: handleIdentifier(Map, typeReference)
                 listener: beginTypeArguments(<)
@@ -504,7 +504,7 @@
                 listener: endClassFields(null, null, null, null, null, final, 1, final, ;)
               listener: endMember()
             notEofOrValue(}, })
-            listener: endClassOrMixinBody(DeclarationKind.Class, 9, {, })
+            listener: endClassOrMixinOrExtensionBody(DeclarationKind.Class, 9, {, })
           listener: endClassDeclaration(class, })
   listener: endTopLevelDeclaration()
   reportAllErrorTokens(class)
diff --git a/pkg/front_end/parser_testcases/error_recovery/issue_45251_set.dart.expect b/pkg/front_end/parser_testcases/error_recovery/issue_45251_set.dart.expect
index e1d57ca..7a1bda5 100644
--- a/pkg/front_end/parser_testcases/error_recovery/issue_45251_set.dart.expect
+++ b/pkg/front_end/parser_testcases/error_recovery/issue_45251_set.dart.expect
@@ -19,7 +19,7 @@
 beginCompilationUnit(class)
   beginMetadataStar(class)
   endMetadataStar(0)
-  beginClassOrNamedMixinApplicationPrelude(class)
+  beginClassOrMixinOrNamedMixinApplicationPrelude(class)
     handleIdentifier(F, classOrMixinDeclaration)
     handleNoTypeVariables({)
     beginClassDeclaration(class, null, F)
@@ -28,11 +28,11 @@
       handleClassNoWithClause()
       handleClassOrMixinImplements(null, 0)
       handleClassHeader(class, class, null)
-      beginClassOrMixinBody(DeclarationKind.Class, {)
+      beginClassOrMixinOrExtensionBody(DeclarationKind.Class, {)
         beginMetadataStar(final)
         endMetadataStar(0)
         beginMember()
-          beginFields({)
+          beginFields(DeclarationKind.Class, null, null, null, null, null, final, {)
             handleIdentifier(Set, typeReference)
             beginTypeArguments(<)
               handleIdentifier(Undefined, typeReference)
@@ -59,7 +59,7 @@
         beginMetadataStar(final)
         endMetadataStar(0)
         beginMember()
-          beginFields(;)
+          beginFields(DeclarationKind.Class, null, null, null, null, null, final, ;)
             handleIdentifier(Set, typeReference)
             beginTypeArguments(<)
               handleIdentifier(Undefined, typeReference)
@@ -85,7 +85,7 @@
         beginMetadataStar(final)
         endMetadataStar(0)
         beginMember()
-          beginFields(;)
+          beginFields(DeclarationKind.Class, null, null, null, null, null, final, ;)
             handleIdentifier(Set, typeReference)
             beginTypeArguments(<)
               handleIdentifier(Undefined, typeReference)
@@ -104,7 +104,7 @@
         beginMetadataStar(final)
         endMetadataStar(0)
         beginMember()
-          beginFields(;)
+          beginFields(DeclarationKind.Class, null, null, null, null, null, final, ;)
             handleIdentifier(Set, typeReference)
             beginTypeArguments(<)
               handleIdentifier(Undefined, typeReference)
@@ -133,7 +133,7 @@
         beginMetadataStar(final)
         endMetadataStar(0)
         beginMember()
-          beginFields(;)
+          beginFields(DeclarationKind.Class, null, null, null, null, null, final, ;)
             handleIdentifier(Set, typeReference)
             beginTypeArguments(<)
               handleIdentifier(Undefined, typeReference)
@@ -154,7 +154,7 @@
         beginMetadataStar(final)
         endMetadataStar(0)
         beginMember()
-          beginFields(;)
+          beginFields(DeclarationKind.Class, null, null, null, null, null, final, ;)
             handleIdentifier(Set, typeReference)
             beginTypeArguments(<)
               handleIdentifier(Undefined, typeReference)
@@ -182,7 +182,7 @@
         beginMetadataStar(final)
         endMetadataStar(0)
         beginMember()
-          beginFields(;)
+          beginFields(DeclarationKind.Class, null, null, null, null, null, final, ;)
             handleIdentifier(Set, typeReference)
             beginTypeArguments(<)
               handleIdentifier(Undefined, typeReference)
@@ -202,7 +202,7 @@
         beginMetadataStar(final)
         endMetadataStar(0)
         beginMember()
-          beginFields(;)
+          beginFields(DeclarationKind.Class, null, null, null, null, null, final, ;)
             handleIdentifier(Set, typeReference)
             beginTypeArguments(<)
               handleIdentifier(Undefined, typeReference)
@@ -229,7 +229,7 @@
         beginMetadataStar(final)
         endMetadataStar(0)
         beginMember()
-          beginFields(;)
+          beginFields(DeclarationKind.Class, null, null, null, null, null, final, ;)
             handleIdentifier(Set, typeReference)
             beginTypeArguments(<)
               handleIdentifier(Undefined, typeReference)
@@ -245,7 +245,7 @@
             endFieldInitializer(=, ;)
           endClassFields(null, null, null, null, null, final, 1, final, ;)
         endMember()
-      endClassOrMixinBody(DeclarationKind.Class, 9, {, })
+      endClassOrMixinOrExtensionBody(DeclarationKind.Class, 9, {, })
     endClassDeclaration(class, })
   endTopLevelDeclaration()
 endCompilationUnit(1, )
diff --git a/pkg/front_end/parser_testcases/error_recovery/issue_45251_set.dart.intertwined.expect b/pkg/front_end/parser_testcases/error_recovery/issue_45251_set.dart.intertwined.expect
index 1d5f628..6419253 100644
--- a/pkg/front_end/parser_testcases/error_recovery/issue_45251_set.dart.intertwined.expect
+++ b/pkg/front_end/parser_testcases/error_recovery/issue_45251_set.dart.intertwined.expect
@@ -9,7 +9,7 @@
     parseTopLevelKeywordDeclaration(, class, Instance of 'DirectiveContext')
       parseClassDeclarationModifiers(, class)
       parseClassOrNamedMixinApplication(null, class)
-        listener: beginClassOrNamedMixinApplicationPrelude(class)
+        listener: beginClassOrMixinOrNamedMixinApplicationPrelude(class)
         ensureIdentifier(class, classOrMixinDeclaration)
           listener: handleIdentifier(F, classOrMixinDeclaration)
         listener: handleNoTypeVariables({)
@@ -25,7 +25,7 @@
               listener: handleClassOrMixinImplements(null, 0)
             listener: handleClassHeader(class, class, null)
           parseClassOrMixinOrExtensionBody(F, DeclarationKind.Class, F)
-            listener: beginClassOrMixinBody(DeclarationKind.Class, {)
+            listener: beginClassOrMixinOrExtensionBody(DeclarationKind.Class, {)
             notEofOrValue(}, final)
             parseClassOrMixinOrExtensionMemberImpl({, DeclarationKind.Class, F)
               parseMetadataStar({)
@@ -33,7 +33,7 @@
                 listener: endMetadataStar(0)
               listener: beginMember()
               parseFields({, null, null, null, null, null, final, final, Instance of 'SimpleTypeWith1Argument', foo1, DeclarationKind.Class, F, false)
-                listener: beginFields({)
+                listener: beginFields(DeclarationKind.Class, null, null, null, null, null, final, {)
                 listener: handleIdentifier(Set, typeReference)
                 listener: beginTypeArguments(<)
                 listener: handleIdentifier(Undefined, typeReference)
@@ -77,7 +77,7 @@
                 listener: endMetadataStar(0)
               listener: beginMember()
               parseFields(;, null, null, null, null, null, final, final, Instance of 'SimpleTypeWith1Argument', foo2, DeclarationKind.Class, F, false)
-                listener: beginFields(;)
+                listener: beginFields(DeclarationKind.Class, null, null, null, null, null, final, ;)
                 listener: handleIdentifier(Set, typeReference)
                 listener: beginTypeArguments(<)
                 listener: handleIdentifier(Undefined, typeReference)
@@ -115,7 +115,7 @@
                 listener: endMetadataStar(0)
               listener: beginMember()
               parseFields(;, null, null, null, null, null, final, final, Instance of 'SimpleTypeWith1Argument', foo3, DeclarationKind.Class, F, false)
-                listener: beginFields(;)
+                listener: beginFields(DeclarationKind.Class, null, null, null, null, null, final, ;)
                 listener: handleIdentifier(Set, typeReference)
                 listener: beginTypeArguments(<)
                 listener: handleIdentifier(Undefined, typeReference)
@@ -150,7 +150,7 @@
                 listener: endMetadataStar(0)
               listener: beginMember()
               parseFields(;, null, null, null, null, null, final, final, Instance of 'SimpleTypeWith1Argument', foo4, DeclarationKind.Class, F, false)
-                listener: beginFields(;)
+                listener: beginFields(DeclarationKind.Class, null, null, null, null, null, final, ;)
                 listener: handleIdentifier(Set, typeReference)
                 listener: beginTypeArguments(<)
                 listener: handleIdentifier(Undefined, typeReference)
@@ -197,7 +197,7 @@
                 listener: endMetadataStar(0)
               listener: beginMember()
               parseFields(;, null, null, null, null, null, final, final, Instance of 'SimpleTypeWith1Argument', foo5, DeclarationKind.Class, F, false)
-                listener: beginFields(;)
+                listener: beginFields(DeclarationKind.Class, null, null, null, null, null, final, ;)
                 listener: handleIdentifier(Set, typeReference)
                 listener: beginTypeArguments(<)
                 listener: handleIdentifier(Undefined, typeReference)
@@ -236,7 +236,7 @@
                 listener: endMetadataStar(0)
               listener: beginMember()
               parseFields(;, null, null, null, null, null, final, final, Instance of 'SimpleTypeWith1Argument', foo6, DeclarationKind.Class, F, false)
-                listener: beginFields(;)
+                listener: beginFields(DeclarationKind.Class, null, null, null, null, null, final, ;)
                 listener: handleIdentifier(Set, typeReference)
                 listener: beginTypeArguments(<)
                 listener: handleIdentifier(Undefined, typeReference)
@@ -286,7 +286,7 @@
                 listener: endMetadataStar(0)
               listener: beginMember()
               parseFields(;, null, null, null, null, null, final, final, Instance of 'SimpleTypeWith1Argument', foo7, DeclarationKind.Class, F, false)
-                listener: beginFields(;)
+                listener: beginFields(DeclarationKind.Class, null, null, null, null, null, final, ;)
                 listener: handleIdentifier(Set, typeReference)
                 listener: beginTypeArguments(<)
                 listener: handleIdentifier(Undefined, typeReference)
@@ -327,7 +327,7 @@
                 listener: endMetadataStar(0)
               listener: beginMember()
               parseFields(;, null, null, null, null, null, final, final, Instance of 'SimpleTypeWith1Argument', foo8, DeclarationKind.Class, F, false)
-                listener: beginFields(;)
+                listener: beginFields(DeclarationKind.Class, null, null, null, null, null, final, ;)
                 listener: handleIdentifier(Set, typeReference)
                 listener: beginTypeArguments(<)
                 listener: handleIdentifier(Undefined, typeReference)
@@ -371,7 +371,7 @@
                 listener: endMetadataStar(0)
               listener: beginMember()
               parseFields(;, null, null, null, null, null, final, final, Instance of 'SimpleTypeWith1Argument', foo9, DeclarationKind.Class, F, false)
-                listener: beginFields(;)
+                listener: beginFields(DeclarationKind.Class, null, null, null, null, null, final, ;)
                 listener: handleIdentifier(Set, typeReference)
                 listener: beginTypeArguments(<)
                 listener: handleIdentifier(Undefined, typeReference)
@@ -400,7 +400,7 @@
                 listener: endClassFields(null, null, null, null, null, final, 1, final, ;)
               listener: endMember()
             notEofOrValue(}, })
-            listener: endClassOrMixinBody(DeclarationKind.Class, 9, {, })
+            listener: endClassOrMixinOrExtensionBody(DeclarationKind.Class, 9, {, })
           listener: endClassDeclaration(class, })
   listener: endTopLevelDeclaration()
   reportAllErrorTokens(class)
diff --git a/pkg/front_end/parser_testcases/error_recovery/issue_45251_set_const.dart.expect b/pkg/front_end/parser_testcases/error_recovery/issue_45251_set_const.dart.expect
index 4fa9c10..be8115b 100644
--- a/pkg/front_end/parser_testcases/error_recovery/issue_45251_set_const.dart.expect
+++ b/pkg/front_end/parser_testcases/error_recovery/issue_45251_set_const.dart.expect
@@ -19,7 +19,7 @@
 beginCompilationUnit(class)
   beginMetadataStar(class)
   endMetadataStar(0)
-  beginClassOrNamedMixinApplicationPrelude(class)
+  beginClassOrMixinOrNamedMixinApplicationPrelude(class)
     handleIdentifier(F, classOrMixinDeclaration)
     handleNoTypeVariables({)
     beginClassDeclaration(class, null, F)
@@ -28,11 +28,11 @@
       handleClassNoWithClause()
       handleClassOrMixinImplements(null, 0)
       handleClassHeader(class, class, null)
-      beginClassOrMixinBody(DeclarationKind.Class, {)
+      beginClassOrMixinOrExtensionBody(DeclarationKind.Class, {)
         beginMetadataStar(final)
         endMetadataStar(0)
         beginMember()
-          beginFields({)
+          beginFields(DeclarationKind.Class, null, null, null, null, null, final, {)
             handleIdentifier(Set, typeReference)
             beginTypeArguments(<)
               handleIdentifier(Undefined, typeReference)
@@ -61,7 +61,7 @@
         beginMetadataStar(final)
         endMetadataStar(0)
         beginMember()
-          beginFields(;)
+          beginFields(DeclarationKind.Class, null, null, null, null, null, final, ;)
             handleIdentifier(Set, typeReference)
             beginTypeArguments(<)
               handleIdentifier(Undefined, typeReference)
@@ -89,7 +89,7 @@
         beginMetadataStar(final)
         endMetadataStar(0)
         beginMember()
-          beginFields(;)
+          beginFields(DeclarationKind.Class, null, null, null, null, null, final, ;)
             handleIdentifier(Set, typeReference)
             beginTypeArguments(<)
               handleIdentifier(Undefined, typeReference)
@@ -110,7 +110,7 @@
         beginMetadataStar(final)
         endMetadataStar(0)
         beginMember()
-          beginFields(;)
+          beginFields(DeclarationKind.Class, null, null, null, null, null, final, ;)
             handleIdentifier(Set, typeReference)
             beginTypeArguments(<)
               handleIdentifier(Undefined, typeReference)
@@ -143,7 +143,7 @@
         beginMetadataStar(final)
         endMetadataStar(0)
         beginMember()
-          beginFields(;)
+          beginFields(DeclarationKind.Class, null, null, null, null, null, final, ;)
             handleIdentifier(Set, typeReference)
             beginTypeArguments(<)
               handleIdentifier(Undefined, typeReference)
@@ -168,7 +168,7 @@
         beginMetadataStar(final)
         endMetadataStar(0)
         beginMember()
-          beginFields(;)
+          beginFields(DeclarationKind.Class, null, null, null, null, null, final, ;)
             handleIdentifier(Set, typeReference)
             beginTypeArguments(<)
               handleIdentifier(Undefined, typeReference)
@@ -198,7 +198,7 @@
         beginMetadataStar(final)
         endMetadataStar(0)
         beginMember()
-          beginFields(;)
+          beginFields(DeclarationKind.Class, null, null, null, null, null, final, ;)
             handleIdentifier(Set, typeReference)
             beginTypeArguments(<)
               handleIdentifier(Undefined, typeReference)
@@ -220,7 +220,7 @@
         beginMetadataStar(final)
         endMetadataStar(0)
         beginMember()
-          beginFields(;)
+          beginFields(DeclarationKind.Class, null, null, null, null, null, final, ;)
             handleIdentifier(Set, typeReference)
             beginTypeArguments(<)
               handleIdentifier(Undefined, typeReference)
@@ -249,7 +249,7 @@
         beginMetadataStar(final)
         endMetadataStar(0)
         beginMember()
-          beginFields(;)
+          beginFields(DeclarationKind.Class, null, null, null, null, null, final, ;)
             handleIdentifier(Set, typeReference)
             beginTypeArguments(<)
               handleIdentifier(Undefined, typeReference)
@@ -267,7 +267,7 @@
             endFieldInitializer(=, ;)
           endClassFields(null, null, null, null, null, final, 1, final, ;)
         endMember()
-      endClassOrMixinBody(DeclarationKind.Class, 9, {, })
+      endClassOrMixinOrExtensionBody(DeclarationKind.Class, 9, {, })
     endClassDeclaration(class, })
   endTopLevelDeclaration()
 endCompilationUnit(1, )
diff --git a/pkg/front_end/parser_testcases/error_recovery/issue_45251_set_const.dart.intertwined.expect b/pkg/front_end/parser_testcases/error_recovery/issue_45251_set_const.dart.intertwined.expect
index bce083f..fe81a69 100644
--- a/pkg/front_end/parser_testcases/error_recovery/issue_45251_set_const.dart.intertwined.expect
+++ b/pkg/front_end/parser_testcases/error_recovery/issue_45251_set_const.dart.intertwined.expect
@@ -9,7 +9,7 @@
     parseTopLevelKeywordDeclaration(, class, Instance of 'DirectiveContext')
       parseClassDeclarationModifiers(, class)
       parseClassOrNamedMixinApplication(null, class)
-        listener: beginClassOrNamedMixinApplicationPrelude(class)
+        listener: beginClassOrMixinOrNamedMixinApplicationPrelude(class)
         ensureIdentifier(class, classOrMixinDeclaration)
           listener: handleIdentifier(F, classOrMixinDeclaration)
         listener: handleNoTypeVariables({)
@@ -25,7 +25,7 @@
               listener: handleClassOrMixinImplements(null, 0)
             listener: handleClassHeader(class, class, null)
           parseClassOrMixinOrExtensionBody(F, DeclarationKind.Class, F)
-            listener: beginClassOrMixinBody(DeclarationKind.Class, {)
+            listener: beginClassOrMixinOrExtensionBody(DeclarationKind.Class, {)
             notEofOrValue(}, final)
             parseClassOrMixinOrExtensionMemberImpl({, DeclarationKind.Class, F)
               parseMetadataStar({)
@@ -33,7 +33,7 @@
                 listener: endMetadataStar(0)
               listener: beginMember()
               parseFields({, null, null, null, null, null, final, final, Instance of 'SimpleTypeWith1Argument', foo1, DeclarationKind.Class, F, false)
-                listener: beginFields({)
+                listener: beginFields(DeclarationKind.Class, null, null, null, null, null, final, {)
                 listener: handleIdentifier(Set, typeReference)
                 listener: beginTypeArguments(<)
                 listener: handleIdentifier(Undefined, typeReference)
@@ -76,7 +76,7 @@
                 listener: endMetadataStar(0)
               listener: beginMember()
               parseFields(;, null, null, null, null, null, final, final, Instance of 'SimpleTypeWith1Argument', foo2, DeclarationKind.Class, F, false)
-                listener: beginFields(;)
+                listener: beginFields(DeclarationKind.Class, null, null, null, null, null, final, ;)
                 listener: handleIdentifier(Set, typeReference)
                 listener: beginTypeArguments(<)
                 listener: handleIdentifier(Undefined, typeReference)
@@ -117,7 +117,7 @@
                 listener: endMetadataStar(0)
               listener: beginMember()
               parseFields(;, null, null, null, null, null, final, final, Instance of 'SimpleTypeWith1Argument', foo3, DeclarationKind.Class, F, false)
-                listener: beginFields(;)
+                listener: beginFields(DeclarationKind.Class, null, null, null, null, null, final, ;)
                 listener: handleIdentifier(Set, typeReference)
                 listener: beginTypeArguments(<)
                 listener: handleIdentifier(Undefined, typeReference)
@@ -151,7 +151,7 @@
                 listener: endMetadataStar(0)
               listener: beginMember()
               parseFields(;, null, null, null, null, null, final, final, Instance of 'SimpleTypeWith1Argument', foo4, DeclarationKind.Class, F, false)
-                listener: beginFields(;)
+                listener: beginFields(DeclarationKind.Class, null, null, null, null, null, final, ;)
                 listener: handleIdentifier(Set, typeReference)
                 listener: beginTypeArguments(<)
                 listener: handleIdentifier(Undefined, typeReference)
@@ -200,7 +200,7 @@
                 listener: endMetadataStar(0)
               listener: beginMember()
               parseFields(;, null, null, null, null, null, final, final, Instance of 'SimpleTypeWith1Argument', foo5, DeclarationKind.Class, F, false)
-                listener: beginFields(;)
+                listener: beginFields(DeclarationKind.Class, null, null, null, null, null, final, ;)
                 listener: handleIdentifier(Set, typeReference)
                 listener: beginTypeArguments(<)
                 listener: handleIdentifier(Undefined, typeReference)
@@ -241,7 +241,7 @@
                 listener: endMetadataStar(0)
               listener: beginMember()
               parseFields(;, null, null, null, null, null, final, final, Instance of 'SimpleTypeWith1Argument', foo6, DeclarationKind.Class, F, false)
-                listener: beginFields(;)
+                listener: beginFields(DeclarationKind.Class, null, null, null, null, null, final, ;)
                 listener: handleIdentifier(Set, typeReference)
                 listener: beginTypeArguments(<)
                 listener: handleIdentifier(Undefined, typeReference)
@@ -290,7 +290,7 @@
                 listener: endMetadataStar(0)
               listener: beginMember()
               parseFields(;, null, null, null, null, null, final, final, Instance of 'SimpleTypeWith1Argument', foo7, DeclarationKind.Class, F, false)
-                listener: beginFields(;)
+                listener: beginFields(DeclarationKind.Class, null, null, null, null, null, final, ;)
                 listener: handleIdentifier(Set, typeReference)
                 listener: beginTypeArguments(<)
                 listener: handleIdentifier(Undefined, typeReference)
@@ -330,7 +330,7 @@
                 listener: endMetadataStar(0)
               listener: beginMember()
               parseFields(;, null, null, null, null, null, final, final, Instance of 'SimpleTypeWith1Argument', foo8, DeclarationKind.Class, F, false)
-                listener: beginFields(;)
+                listener: beginFields(DeclarationKind.Class, null, null, null, null, null, final, ;)
                 listener: handleIdentifier(Set, typeReference)
                 listener: beginTypeArguments(<)
                 listener: handleIdentifier(Undefined, typeReference)
@@ -377,7 +377,7 @@
                 listener: endMetadataStar(0)
               listener: beginMember()
               parseFields(;, null, null, null, null, null, final, final, Instance of 'SimpleTypeWith1Argument', foo9, DeclarationKind.Class, F, false)
-                listener: beginFields(;)
+                listener: beginFields(DeclarationKind.Class, null, null, null, null, null, final, ;)
                 listener: handleIdentifier(Set, typeReference)
                 listener: beginTypeArguments(<)
                 listener: handleIdentifier(Undefined, typeReference)
@@ -409,7 +409,7 @@
                 listener: endClassFields(null, null, null, null, null, final, 1, final, ;)
               listener: endMember()
             notEofOrValue(}, })
-            listener: endClassOrMixinBody(DeclarationKind.Class, 9, {, })
+            listener: endClassOrMixinOrExtensionBody(DeclarationKind.Class, 9, {, })
           listener: endClassDeclaration(class, })
   listener: endTopLevelDeclaration()
   reportAllErrorTokens(class)
diff --git a/pkg/front_end/parser_testcases/error_recovery/issue_45251_set_new.dart.expect b/pkg/front_end/parser_testcases/error_recovery/issue_45251_set_new.dart.expect
index 8259775..47c67e8 100644
--- a/pkg/front_end/parser_testcases/error_recovery/issue_45251_set_new.dart.expect
+++ b/pkg/front_end/parser_testcases/error_recovery/issue_45251_set_new.dart.expect
@@ -31,7 +31,7 @@
 beginCompilationUnit(class)
   beginMetadataStar(class)
   endMetadataStar(0)
-  beginClassOrNamedMixinApplicationPrelude(class)
+  beginClassOrMixinOrNamedMixinApplicationPrelude(class)
     handleIdentifier(F, classOrMixinDeclaration)
     handleNoTypeVariables({)
     beginClassDeclaration(class, null, F)
@@ -40,11 +40,11 @@
       handleClassNoWithClause()
       handleClassOrMixinImplements(null, 0)
       handleClassHeader(class, class, null)
-      beginClassOrMixinBody(DeclarationKind.Class, {)
+      beginClassOrMixinOrExtensionBody(DeclarationKind.Class, {)
         beginMetadataStar(final)
         endMetadataStar(0)
         beginMember()
-          beginFields({)
+          beginFields(DeclarationKind.Class, null, null, null, null, null, final, {)
             handleIdentifier(Set, typeReference)
             beginTypeArguments(<)
               handleIdentifier(Undefined, typeReference)
@@ -71,7 +71,7 @@
         beginMetadataStar(final)
         endMetadataStar(0)
         beginMember()
-          beginFields(;)
+          beginFields(DeclarationKind.Class, null, null, null, null, null, final, ;)
             handleIdentifier(Set, typeReference)
             beginTypeArguments(<)
               handleIdentifier(Undefined, typeReference)
@@ -98,7 +98,7 @@
         beginMetadataStar(final)
         endMetadataStar(0)
         beginMember()
-          beginFields(;)
+          beginFields(DeclarationKind.Class, null, null, null, null, null, final, ;)
             handleIdentifier(Set, typeReference)
             beginTypeArguments(<)
               handleIdentifier(Undefined, typeReference)
@@ -117,7 +117,7 @@
         beginMetadataStar(final)
         endMetadataStar(0)
         beginMember()
-          beginFields(;)
+          beginFields(DeclarationKind.Class, null, null, null, null, null, final, ;)
             handleIdentifier(Set, typeReference)
             beginTypeArguments(<)
               handleIdentifier(Undefined, typeReference)
@@ -150,7 +150,7 @@
         beginMetadataStar(final)
         endMetadataStar(0)
         beginMember()
-          beginFields(;)
+          beginFields(DeclarationKind.Class, null, null, null, null, null, final, ;)
             handleIdentifier(Set, typeReference)
             beginTypeArguments(<)
               handleIdentifier(Undefined, typeReference)
@@ -175,7 +175,7 @@
         beginMetadataStar(final)
         endMetadataStar(0)
         beginMember()
-          beginFields(;)
+          beginFields(DeclarationKind.Class, null, null, null, null, null, final, ;)
             handleIdentifier(Set, typeReference)
             beginTypeArguments(<)
               handleIdentifier(Undefined, typeReference)
@@ -203,7 +203,7 @@
         beginMetadataStar(final)
         endMetadataStar(0)
         beginMember()
-          beginFields(;)
+          beginFields(DeclarationKind.Class, null, null, null, null, null, final, ;)
             handleIdentifier(Set, typeReference)
             beginTypeArguments(<)
               handleIdentifier(Undefined, typeReference)
@@ -223,7 +223,7 @@
         beginMetadataStar(final)
         endMetadataStar(0)
         beginMember()
-          beginFields(;)
+          beginFields(DeclarationKind.Class, null, null, null, null, null, final, ;)
             handleIdentifier(Set, typeReference)
             beginTypeArguments(<)
               handleIdentifier(Undefined, typeReference)
@@ -251,7 +251,7 @@
         beginMetadataStar(final)
         endMetadataStar(0)
         beginMember()
-          beginFields(;)
+          beginFields(DeclarationKind.Class, null, null, null, null, null, final, ;)
             handleIdentifier(Set, typeReference)
             beginTypeArguments(<)
               handleIdentifier(Undefined, typeReference)
@@ -268,7 +268,7 @@
             endFieldInitializer(=, ;)
           endClassFields(null, null, null, null, null, final, 1, final, ;)
         endMember()
-      endClassOrMixinBody(DeclarationKind.Class, 9, {, })
+      endClassOrMixinOrExtensionBody(DeclarationKind.Class, 9, {, })
     endClassDeclaration(class, })
   endTopLevelDeclaration()
 endCompilationUnit(1, )
diff --git a/pkg/front_end/parser_testcases/error_recovery/issue_45251_set_new.dart.intertwined.expect b/pkg/front_end/parser_testcases/error_recovery/issue_45251_set_new.dart.intertwined.expect
index ae71f89..02cf05c 100644
--- a/pkg/front_end/parser_testcases/error_recovery/issue_45251_set_new.dart.intertwined.expect
+++ b/pkg/front_end/parser_testcases/error_recovery/issue_45251_set_new.dart.intertwined.expect
@@ -9,7 +9,7 @@
     parseTopLevelKeywordDeclaration(, class, Instance of 'DirectiveContext')
       parseClassDeclarationModifiers(, class)
       parseClassOrNamedMixinApplication(null, class)
-        listener: beginClassOrNamedMixinApplicationPrelude(class)
+        listener: beginClassOrMixinOrNamedMixinApplicationPrelude(class)
         ensureIdentifier(class, classOrMixinDeclaration)
           listener: handleIdentifier(F, classOrMixinDeclaration)
         listener: handleNoTypeVariables({)
@@ -25,7 +25,7 @@
               listener: handleClassOrMixinImplements(null, 0)
             listener: handleClassHeader(class, class, null)
           parseClassOrMixinOrExtensionBody(F, DeclarationKind.Class, F)
-            listener: beginClassOrMixinBody(DeclarationKind.Class, {)
+            listener: beginClassOrMixinOrExtensionBody(DeclarationKind.Class, {)
             notEofOrValue(}, final)
             parseClassOrMixinOrExtensionMemberImpl({, DeclarationKind.Class, F)
               parseMetadataStar({)
@@ -33,7 +33,7 @@
                 listener: endMetadataStar(0)
               listener: beginMember()
               parseFields({, null, null, null, null, null, final, final, Instance of 'SimpleTypeWith1Argument', foo1, DeclarationKind.Class, F, false)
-                listener: beginFields({)
+                listener: beginFields(DeclarationKind.Class, null, null, null, null, null, final, {)
                 listener: handleIdentifier(Set, typeReference)
                 listener: beginTypeArguments(<)
                 listener: handleIdentifier(Undefined, typeReference)
@@ -76,7 +76,7 @@
                 listener: endMetadataStar(0)
               listener: beginMember()
               parseFields(;, null, null, null, null, null, final, final, Instance of 'SimpleTypeWith1Argument', foo2, DeclarationKind.Class, F, false)
-                listener: beginFields(;)
+                listener: beginFields(DeclarationKind.Class, null, null, null, null, null, final, ;)
                 listener: handleIdentifier(Set, typeReference)
                 listener: beginTypeArguments(<)
                 listener: handleIdentifier(Undefined, typeReference)
@@ -119,7 +119,7 @@
                 listener: endMetadataStar(0)
               listener: beginMember()
               parseFields(;, null, null, null, null, null, final, final, Instance of 'SimpleTypeWith1Argument', foo3, DeclarationKind.Class, F, false)
-                listener: beginFields(;)
+                listener: beginFields(DeclarationKind.Class, null, null, null, null, null, final, ;)
                 listener: handleIdentifier(Set, typeReference)
                 listener: beginTypeArguments(<)
                 listener: handleIdentifier(Undefined, typeReference)
@@ -153,7 +153,7 @@
                 listener: endMetadataStar(0)
               listener: beginMember()
               parseFields(;, null, null, null, null, null, final, final, Instance of 'SimpleTypeWith1Argument', foo4, DeclarationKind.Class, F, false)
-                listener: beginFields(;)
+                listener: beginFields(DeclarationKind.Class, null, null, null, null, null, final, ;)
                 listener: handleIdentifier(Set, typeReference)
                 listener: beginTypeArguments(<)
                 listener: handleIdentifier(Undefined, typeReference)
@@ -203,7 +203,7 @@
                 listener: endMetadataStar(0)
               listener: beginMember()
               parseFields(;, null, null, null, null, null, final, final, Instance of 'SimpleTypeWith1Argument', foo5, DeclarationKind.Class, F, false)
-                listener: beginFields(;)
+                listener: beginFields(DeclarationKind.Class, null, null, null, null, null, final, ;)
                 listener: handleIdentifier(Set, typeReference)
                 listener: beginTypeArguments(<)
                 listener: handleIdentifier(Undefined, typeReference)
@@ -245,7 +245,7 @@
                 listener: endMetadataStar(0)
               listener: beginMember()
               parseFields(;, null, null, null, null, null, final, final, Instance of 'SimpleTypeWith1Argument', foo6, DeclarationKind.Class, F, false)
-                listener: beginFields(;)
+                listener: beginFields(DeclarationKind.Class, null, null, null, null, null, final, ;)
                 listener: handleIdentifier(Set, typeReference)
                 listener: beginTypeArguments(<)
                 listener: handleIdentifier(Undefined, typeReference)
@@ -294,7 +294,7 @@
                 listener: endMetadataStar(0)
               listener: beginMember()
               parseFields(;, null, null, null, null, null, final, final, Instance of 'SimpleTypeWith1Argument', foo7, DeclarationKind.Class, F, false)
-                listener: beginFields(;)
+                listener: beginFields(DeclarationKind.Class, null, null, null, null, null, final, ;)
                 listener: handleIdentifier(Set, typeReference)
                 listener: beginTypeArguments(<)
                 listener: handleIdentifier(Undefined, typeReference)
@@ -334,7 +334,7 @@
                 listener: endMetadataStar(0)
               listener: beginMember()
               parseFields(;, null, null, null, null, null, final, final, Instance of 'SimpleTypeWith1Argument', foo8, DeclarationKind.Class, F, false)
-                listener: beginFields(;)
+                listener: beginFields(DeclarationKind.Class, null, null, null, null, null, final, ;)
                 listener: handleIdentifier(Set, typeReference)
                 listener: beginTypeArguments(<)
                 listener: handleIdentifier(Undefined, typeReference)
@@ -383,7 +383,7 @@
                 listener: endMetadataStar(0)
               listener: beginMember()
               parseFields(;, null, null, null, null, null, final, final, Instance of 'SimpleTypeWith1Argument', foo9, DeclarationKind.Class, F, false)
-                listener: beginFields(;)
+                listener: beginFields(DeclarationKind.Class, null, null, null, null, null, final, ;)
                 listener: handleIdentifier(Set, typeReference)
                 listener: beginTypeArguments(<)
                 listener: handleIdentifier(Undefined, typeReference)
@@ -417,7 +417,7 @@
                 listener: endClassFields(null, null, null, null, null, final, 1, final, ;)
               listener: endMember()
             notEofOrValue(}, })
-            listener: endClassOrMixinBody(DeclarationKind.Class, 9, {, })
+            listener: endClassOrMixinOrExtensionBody(DeclarationKind.Class, 9, {, })
           listener: endClassDeclaration(class, })
   listener: endTopLevelDeclaration()
   reportAllErrorTokens(class)
diff --git a/pkg/front_end/parser_testcases/error_recovery/issue_45327_prime_1.crash_dart.expect b/pkg/front_end/parser_testcases/error_recovery/issue_45327_prime_1.crash_dart.expect
index a9b75e9..3879cab 100644
--- a/pkg/front_end/parser_testcases/error_recovery/issue_45327_prime_1.crash_dart.expect
+++ b/pkg/front_end/parser_testcases/error_recovery/issue_45327_prime_1.crash_dart.expect
@@ -11,7 +11,7 @@
 beginCompilationUnit(class)
   beginMetadataStar(class)
   endMetadataStar(0)
-  beginClassOrNamedMixinApplicationPrelude(class)
+  beginClassOrMixinOrNamedMixinApplicationPrelude(class)
     handleIdentifier(Foo, classOrMixinDeclaration)
     beginTypeVariables(<)
       beginMetadataStar(T)
@@ -28,11 +28,11 @@
       handleClassNoWithClause()
       handleClassOrMixinImplements(null, 0)
       handleClassHeader(class, class, null)
-      beginClassOrMixinBody(DeclarationKind.Class, {)
+      beginClassOrMixinOrExtensionBody(DeclarationKind.Class, {)
         beginMetadataStar(foo)
         endMetadataStar(0)
         beginMember()
-          beginMethod(null, null, null, null, null, foo)
+          beginMethod(DeclarationKind.Class, null, null, null, null, null, foo)
             handleNoType({)
             handleIdentifier(foo, methodDeclaration)
             handleNoTypeVariables(()
@@ -74,7 +74,7 @@
             endBlockFunctionBody(1, {, })
           endClassMethod(null, foo, (, null, })
         endMember()
-      endClassOrMixinBody(DeclarationKind.Class, 1, {, })
+      endClassOrMixinOrExtensionBody(DeclarationKind.Class, 1, {, })
     endClassDeclaration(class, })
   endTopLevelDeclaration()
   handleErrorToken(UnmatchedToken(())
diff --git a/pkg/front_end/parser_testcases/error_recovery/issue_45327_prime_1.crash_dart.intertwined.expect b/pkg/front_end/parser_testcases/error_recovery/issue_45327_prime_1.crash_dart.intertwined.expect
index ae57b93..a9e5ff3 100644
--- a/pkg/front_end/parser_testcases/error_recovery/issue_45327_prime_1.crash_dart.intertwined.expect
+++ b/pkg/front_end/parser_testcases/error_recovery/issue_45327_prime_1.crash_dart.intertwined.expect
@@ -9,7 +9,7 @@
     parseTopLevelKeywordDeclaration(UnmatchedToken((), class, Instance of 'DirectiveContext')
       parseClassDeclarationModifiers(UnmatchedToken((), class)
       parseClassOrNamedMixinApplication(null, class)
-        listener: beginClassOrNamedMixinApplicationPrelude(class)
+        listener: beginClassOrMixinOrNamedMixinApplicationPrelude(class)
         ensureIdentifier(class, classOrMixinDeclaration)
           listener: handleIdentifier(Foo, classOrMixinDeclaration)
         listener: beginTypeVariables(<)
@@ -33,7 +33,7 @@
               listener: handleClassOrMixinImplements(null, 0)
             listener: handleClassHeader(class, class, null)
           parseClassOrMixinOrExtensionBody(>, DeclarationKind.Class, Foo)
-            listener: beginClassOrMixinBody(DeclarationKind.Class, {)
+            listener: beginClassOrMixinOrExtensionBody(DeclarationKind.Class, {)
             notEofOrValue(}, foo)
             parseClassOrMixinOrExtensionMemberImpl({, DeclarationKind.Class, Foo)
               parseMetadataStar({)
@@ -42,7 +42,7 @@
               listener: beginMember()
               isReservedKeyword(()
               parseMethod({, null, null, null, null, null, null, {, Instance of 'NoType', null, foo, DeclarationKind.Class, Foo, false)
-                listener: beginMethod(null, null, null, null, null, foo)
+                listener: beginMethod(DeclarationKind.Class, null, null, null, null, null, foo)
                 listener: handleNoType({)
                 ensureIdentifierPotentiallyRecovered({, methodDeclaration, false)
                   listener: handleIdentifier(foo, methodDeclaration)
@@ -147,7 +147,7 @@
                 listener: endClassMethod(null, foo, (, null, })
               listener: endMember()
             notEofOrValue(}, })
-            listener: endClassOrMixinBody(DeclarationKind.Class, 1, {, })
+            listener: endClassOrMixinOrExtensionBody(DeclarationKind.Class, 1, {, })
           listener: endClassDeclaration(class, })
   listener: endTopLevelDeclaration()
   reportAllErrorTokens(UnmatchedToken(())
diff --git a/pkg/front_end/parser_testcases/error_recovery/issue_46346.dart.expect b/pkg/front_end/parser_testcases/error_recovery/issue_46346.dart.expect
index c371313..5c15762 100644
--- a/pkg/front_end/parser_testcases/error_recovery/issue_46346.dart.expect
+++ b/pkg/front_end/parser_testcases/error_recovery/issue_46346.dart.expect
@@ -223,7 +223,7 @@
 beginCompilationUnit(class)
   beginMetadataStar(class)
   endMetadataStar(0)
-  beginClassOrNamedMixinApplicationPrelude(class)
+  beginClassOrMixinOrNamedMixinApplicationPrelude(class)
     handleRecoverableError(Message[BuiltInIdentifierInDeclaration, Can't use 'abstract' as a name here., null, {lexeme: abstract}], abstract, abstract)
     handleIdentifier(abstract, classOrMixinDeclaration)
     handleNoTypeVariables({)
@@ -233,13 +233,13 @@
       handleClassNoWithClause()
       handleClassOrMixinImplements(null, 0)
       handleClassHeader(class, class, null)
-      beginClassOrMixinBody(DeclarationKind.Class, {)
-      endClassOrMixinBody(DeclarationKind.Class, 0, {, })
+      beginClassOrMixinOrExtensionBody(DeclarationKind.Class, {)
+      endClassOrMixinOrExtensionBody(DeclarationKind.Class, 0, {, })
     endClassDeclaration(class, })
   endTopLevelDeclaration(class)
   beginMetadataStar(class)
   endMetadataStar(0)
-  beginClassOrNamedMixinApplicationPrelude(class)
+  beginClassOrMixinOrNamedMixinApplicationPrelude(class)
     handleRecoverableError(Message[BuiltInIdentifierInDeclaration, Can't use 'as' as a name here., null, {lexeme: as}], as, as)
     handleIdentifier(as, classOrMixinDeclaration)
     handleNoTypeVariables({)
@@ -249,13 +249,13 @@
       handleClassNoWithClause()
       handleClassOrMixinImplements(null, 0)
       handleClassHeader(class, class, null)
-      beginClassOrMixinBody(DeclarationKind.Class, {)
-      endClassOrMixinBody(DeclarationKind.Class, 0, {, })
+      beginClassOrMixinOrExtensionBody(DeclarationKind.Class, {)
+      endClassOrMixinOrExtensionBody(DeclarationKind.Class, 0, {, })
     endClassDeclaration(class, })
   endTopLevelDeclaration(class)
   beginMetadataStar(class)
   endMetadataStar(0)
-  beginClassOrNamedMixinApplicationPrelude(class)
+  beginClassOrMixinOrNamedMixinApplicationPrelude(class)
     handleRecoverableError(Message[ExpectedIdentifierButGotKeyword, 'assert' can't be used as an identifier because it's a keyword., Try renaming this to be an identifier that isn't a keyword., {lexeme: assert}], assert, assert)
     handleIdentifier(assert, classOrMixinDeclaration)
     handleNoTypeVariables({)
@@ -265,13 +265,13 @@
       handleClassNoWithClause()
       handleClassOrMixinImplements(null, 0)
       handleClassHeader(class, class, null)
-      beginClassOrMixinBody(DeclarationKind.Class, {)
-      endClassOrMixinBody(DeclarationKind.Class, 0, {, })
+      beginClassOrMixinOrExtensionBody(DeclarationKind.Class, {)
+      endClassOrMixinOrExtensionBody(DeclarationKind.Class, 0, {, })
     endClassDeclaration(class, })
   endTopLevelDeclaration(class)
   beginMetadataStar(class)
   endMetadataStar(0)
-  beginClassOrNamedMixinApplicationPrelude(class)
+  beginClassOrMixinOrNamedMixinApplicationPrelude(class)
     handleIdentifier(async, classOrMixinDeclaration)
     handleNoTypeVariables({)
     beginClassDeclaration(class, null, async)
@@ -280,13 +280,13 @@
       handleClassNoWithClause()
       handleClassOrMixinImplements(null, 0)
       handleClassHeader(class, class, null)
-      beginClassOrMixinBody(DeclarationKind.Class, {)
-      endClassOrMixinBody(DeclarationKind.Class, 0, {, })
+      beginClassOrMixinOrExtensionBody(DeclarationKind.Class, {)
+      endClassOrMixinOrExtensionBody(DeclarationKind.Class, 0, {, })
     endClassDeclaration(class, })
   endTopLevelDeclaration(class)
   beginMetadataStar(class)
   endMetadataStar(0)
-  beginClassOrNamedMixinApplicationPrelude(class)
+  beginClassOrMixinOrNamedMixinApplicationPrelude(class)
     handleIdentifier(await, classOrMixinDeclaration)
     handleNoTypeVariables({)
     beginClassDeclaration(class, null, await)
@@ -295,13 +295,13 @@
       handleClassNoWithClause()
       handleClassOrMixinImplements(null, 0)
       handleClassHeader(class, class, null)
-      beginClassOrMixinBody(DeclarationKind.Class, {)
-      endClassOrMixinBody(DeclarationKind.Class, 0, {, })
+      beginClassOrMixinOrExtensionBody(DeclarationKind.Class, {)
+      endClassOrMixinOrExtensionBody(DeclarationKind.Class, 0, {, })
     endClassDeclaration(class, })
   endTopLevelDeclaration(class)
   beginMetadataStar(class)
   endMetadataStar(0)
-  beginClassOrNamedMixinApplicationPrelude(class)
+  beginClassOrMixinOrNamedMixinApplicationPrelude(class)
     handleRecoverableError(Message[ExpectedIdentifierButGotKeyword, 'break' can't be used as an identifier because it's a keyword., Try renaming this to be an identifier that isn't a keyword., {lexeme: break}], break, break)
     handleIdentifier(break, classOrMixinDeclaration)
     handleNoTypeVariables({)
@@ -311,13 +311,13 @@
       handleClassNoWithClause()
       handleClassOrMixinImplements(null, 0)
       handleClassHeader(class, class, null)
-      beginClassOrMixinBody(DeclarationKind.Class, {)
-      endClassOrMixinBody(DeclarationKind.Class, 0, {, })
+      beginClassOrMixinOrExtensionBody(DeclarationKind.Class, {)
+      endClassOrMixinOrExtensionBody(DeclarationKind.Class, 0, {, })
     endClassDeclaration(class, })
   endTopLevelDeclaration(class)
   beginMetadataStar(class)
   endMetadataStar(0)
-  beginClassOrNamedMixinApplicationPrelude(class)
+  beginClassOrMixinOrNamedMixinApplicationPrelude(class)
     handleRecoverableError(Message[ExpectedIdentifierButGotKeyword, 'case' can't be used as an identifier because it's a keyword., Try renaming this to be an identifier that isn't a keyword., {lexeme: case}], case, case)
     handleIdentifier(case, classOrMixinDeclaration)
     handleNoTypeVariables({)
@@ -327,13 +327,13 @@
       handleClassNoWithClause()
       handleClassOrMixinImplements(null, 0)
       handleClassHeader(class, class, null)
-      beginClassOrMixinBody(DeclarationKind.Class, {)
-      endClassOrMixinBody(DeclarationKind.Class, 0, {, })
+      beginClassOrMixinOrExtensionBody(DeclarationKind.Class, {)
+      endClassOrMixinOrExtensionBody(DeclarationKind.Class, 0, {, })
     endClassDeclaration(class, })
   endTopLevelDeclaration(class)
   beginMetadataStar(class)
   endMetadataStar(0)
-  beginClassOrNamedMixinApplicationPrelude(class)
+  beginClassOrMixinOrNamedMixinApplicationPrelude(class)
     handleRecoverableError(Message[ExpectedIdentifierButGotKeyword, 'catch' can't be used as an identifier because it's a keyword., Try renaming this to be an identifier that isn't a keyword., {lexeme: catch}], catch, catch)
     handleIdentifier(catch, classOrMixinDeclaration)
     handleNoTypeVariables({)
@@ -343,13 +343,13 @@
       handleClassNoWithClause()
       handleClassOrMixinImplements(null, 0)
       handleClassHeader(class, class, null)
-      beginClassOrMixinBody(DeclarationKind.Class, {)
-      endClassOrMixinBody(DeclarationKind.Class, 0, {, })
+      beginClassOrMixinOrExtensionBody(DeclarationKind.Class, {)
+      endClassOrMixinOrExtensionBody(DeclarationKind.Class, 0, {, })
     endClassDeclaration(class, })
   endTopLevelDeclaration(class)
   beginMetadataStar(class)
   endMetadataStar(0)
-  beginClassOrNamedMixinApplicationPrelude(class)
+  beginClassOrMixinOrNamedMixinApplicationPrelude(class)
     handleRecoverableError(Message[ExpectedIdentifierButGotKeyword, 'class' can't be used as an identifier because it's a keyword., Try renaming this to be an identifier that isn't a keyword., {lexeme: class}], class, class)
     handleIdentifier(class, classOrMixinDeclaration)
     handleNoTypeVariables({)
@@ -359,13 +359,13 @@
       handleClassNoWithClause()
       handleClassOrMixinImplements(null, 0)
       handleClassHeader(class, class, null)
-      beginClassOrMixinBody(DeclarationKind.Class, {)
-      endClassOrMixinBody(DeclarationKind.Class, 0, {, })
+      beginClassOrMixinOrExtensionBody(DeclarationKind.Class, {)
+      endClassOrMixinOrExtensionBody(DeclarationKind.Class, 0, {, })
     endClassDeclaration(class, })
   endTopLevelDeclaration(class)
   beginMetadataStar(class)
   endMetadataStar(0)
-  beginClassOrNamedMixinApplicationPrelude(class)
+  beginClassOrMixinOrNamedMixinApplicationPrelude(class)
     handleRecoverableError(Message[ExpectedIdentifierButGotKeyword, 'const' can't be used as an identifier because it's a keyword., Try renaming this to be an identifier that isn't a keyword., {lexeme: const}], const, const)
     handleIdentifier(const, classOrMixinDeclaration)
     handleNoTypeVariables({)
@@ -375,13 +375,13 @@
       handleClassNoWithClause()
       handleClassOrMixinImplements(null, 0)
       handleClassHeader(class, class, null)
-      beginClassOrMixinBody(DeclarationKind.Class, {)
-      endClassOrMixinBody(DeclarationKind.Class, 0, {, })
+      beginClassOrMixinOrExtensionBody(DeclarationKind.Class, {)
+      endClassOrMixinOrExtensionBody(DeclarationKind.Class, 0, {, })
     endClassDeclaration(class, })
   endTopLevelDeclaration(class)
   beginMetadataStar(class)
   endMetadataStar(0)
-  beginClassOrNamedMixinApplicationPrelude(class)
+  beginClassOrMixinOrNamedMixinApplicationPrelude(class)
     handleRecoverableError(Message[ExpectedIdentifierButGotKeyword, 'continue' can't be used as an identifier because it's a keyword., Try renaming this to be an identifier that isn't a keyword., {lexeme: continue}], continue, continue)
     handleIdentifier(continue, classOrMixinDeclaration)
     handleNoTypeVariables({)
@@ -391,13 +391,13 @@
       handleClassNoWithClause()
       handleClassOrMixinImplements(null, 0)
       handleClassHeader(class, class, null)
-      beginClassOrMixinBody(DeclarationKind.Class, {)
-      endClassOrMixinBody(DeclarationKind.Class, 0, {, })
+      beginClassOrMixinOrExtensionBody(DeclarationKind.Class, {)
+      endClassOrMixinOrExtensionBody(DeclarationKind.Class, 0, {, })
     endClassDeclaration(class, })
   endTopLevelDeclaration(class)
   beginMetadataStar(class)
   endMetadataStar(0)
-  beginClassOrNamedMixinApplicationPrelude(class)
+  beginClassOrMixinOrNamedMixinApplicationPrelude(class)
     handleRecoverableError(Message[BuiltInIdentifierInDeclaration, Can't use 'covariant' as a name here., null, {lexeme: covariant}], covariant, covariant)
     handleIdentifier(covariant, classOrMixinDeclaration)
     handleNoTypeVariables({)
@@ -407,13 +407,13 @@
       handleClassNoWithClause()
       handleClassOrMixinImplements(null, 0)
       handleClassHeader(class, class, null)
-      beginClassOrMixinBody(DeclarationKind.Class, {)
-      endClassOrMixinBody(DeclarationKind.Class, 0, {, })
+      beginClassOrMixinOrExtensionBody(DeclarationKind.Class, {)
+      endClassOrMixinOrExtensionBody(DeclarationKind.Class, 0, {, })
     endClassDeclaration(class, })
   endTopLevelDeclaration(class)
   beginMetadataStar(class)
   endMetadataStar(0)
-  beginClassOrNamedMixinApplicationPrelude(class)
+  beginClassOrMixinOrNamedMixinApplicationPrelude(class)
     handleRecoverableError(Message[ExpectedIdentifierButGotKeyword, 'default' can't be used as an identifier because it's a keyword., Try renaming this to be an identifier that isn't a keyword., {lexeme: default}], default, default)
     handleIdentifier(default, classOrMixinDeclaration)
     handleNoTypeVariables({)
@@ -423,13 +423,13 @@
       handleClassNoWithClause()
       handleClassOrMixinImplements(null, 0)
       handleClassHeader(class, class, null)
-      beginClassOrMixinBody(DeclarationKind.Class, {)
-      endClassOrMixinBody(DeclarationKind.Class, 0, {, })
+      beginClassOrMixinOrExtensionBody(DeclarationKind.Class, {)
+      endClassOrMixinOrExtensionBody(DeclarationKind.Class, 0, {, })
     endClassDeclaration(class, })
   endTopLevelDeclaration(class)
   beginMetadataStar(class)
   endMetadataStar(0)
-  beginClassOrNamedMixinApplicationPrelude(class)
+  beginClassOrMixinOrNamedMixinApplicationPrelude(class)
     handleRecoverableError(Message[BuiltInIdentifierInDeclaration, Can't use 'deferred' as a name here., null, {lexeme: deferred}], deferred, deferred)
     handleIdentifier(deferred, classOrMixinDeclaration)
     handleNoTypeVariables({)
@@ -439,13 +439,13 @@
       handleClassNoWithClause()
       handleClassOrMixinImplements(null, 0)
       handleClassHeader(class, class, null)
-      beginClassOrMixinBody(DeclarationKind.Class, {)
-      endClassOrMixinBody(DeclarationKind.Class, 0, {, })
+      beginClassOrMixinOrExtensionBody(DeclarationKind.Class, {)
+      endClassOrMixinOrExtensionBody(DeclarationKind.Class, 0, {, })
     endClassDeclaration(class, })
   endTopLevelDeclaration(class)
   beginMetadataStar(class)
   endMetadataStar(0)
-  beginClassOrNamedMixinApplicationPrelude(class)
+  beginClassOrMixinOrNamedMixinApplicationPrelude(class)
     handleRecoverableError(Message[ExpectedIdentifierButGotKeyword, 'do' can't be used as an identifier because it's a keyword., Try renaming this to be an identifier that isn't a keyword., {lexeme: do}], do, do)
     handleIdentifier(do, classOrMixinDeclaration)
     handleNoTypeVariables({)
@@ -455,13 +455,13 @@
       handleClassNoWithClause()
       handleClassOrMixinImplements(null, 0)
       handleClassHeader(class, class, null)
-      beginClassOrMixinBody(DeclarationKind.Class, {)
-      endClassOrMixinBody(DeclarationKind.Class, 0, {, })
+      beginClassOrMixinOrExtensionBody(DeclarationKind.Class, {)
+      endClassOrMixinOrExtensionBody(DeclarationKind.Class, 0, {, })
     endClassDeclaration(class, })
   endTopLevelDeclaration(class)
   beginMetadataStar(class)
   endMetadataStar(0)
-  beginClassOrNamedMixinApplicationPrelude(class)
+  beginClassOrMixinOrNamedMixinApplicationPrelude(class)
     handleRecoverableError(Message[BuiltInIdentifierInDeclaration, Can't use 'dynamic' as a name here., null, {lexeme: dynamic}], dynamic, dynamic)
     handleIdentifier(dynamic, classOrMixinDeclaration)
     handleNoTypeVariables({)
@@ -471,13 +471,13 @@
       handleClassNoWithClause()
       handleClassOrMixinImplements(null, 0)
       handleClassHeader(class, class, null)
-      beginClassOrMixinBody(DeclarationKind.Class, {)
-      endClassOrMixinBody(DeclarationKind.Class, 0, {, })
+      beginClassOrMixinOrExtensionBody(DeclarationKind.Class, {)
+      endClassOrMixinOrExtensionBody(DeclarationKind.Class, 0, {, })
     endClassDeclaration(class, })
   endTopLevelDeclaration(class)
   beginMetadataStar(class)
   endMetadataStar(0)
-  beginClassOrNamedMixinApplicationPrelude(class)
+  beginClassOrMixinOrNamedMixinApplicationPrelude(class)
     handleRecoverableError(Message[ExpectedIdentifierButGotKeyword, 'else' can't be used as an identifier because it's a keyword., Try renaming this to be an identifier that isn't a keyword., {lexeme: else}], else, else)
     handleIdentifier(else, classOrMixinDeclaration)
     handleNoTypeVariables({)
@@ -487,13 +487,13 @@
       handleClassNoWithClause()
       handleClassOrMixinImplements(null, 0)
       handleClassHeader(class, class, null)
-      beginClassOrMixinBody(DeclarationKind.Class, {)
-      endClassOrMixinBody(DeclarationKind.Class, 0, {, })
+      beginClassOrMixinOrExtensionBody(DeclarationKind.Class, {)
+      endClassOrMixinOrExtensionBody(DeclarationKind.Class, 0, {, })
     endClassDeclaration(class, })
   endTopLevelDeclaration(class)
   beginMetadataStar(class)
   endMetadataStar(0)
-  beginClassOrNamedMixinApplicationPrelude(class)
+  beginClassOrMixinOrNamedMixinApplicationPrelude(class)
     handleRecoverableError(Message[ExpectedIdentifierButGotKeyword, 'enum' can't be used as an identifier because it's a keyword., Try renaming this to be an identifier that isn't a keyword., {lexeme: enum}], enum, enum)
     handleIdentifier(enum, classOrMixinDeclaration)
     handleNoTypeVariables({)
@@ -503,13 +503,13 @@
       handleClassNoWithClause()
       handleClassOrMixinImplements(null, 0)
       handleClassHeader(class, class, null)
-      beginClassOrMixinBody(DeclarationKind.Class, {)
-      endClassOrMixinBody(DeclarationKind.Class, 0, {, })
+      beginClassOrMixinOrExtensionBody(DeclarationKind.Class, {)
+      endClassOrMixinOrExtensionBody(DeclarationKind.Class, 0, {, })
     endClassDeclaration(class, })
   endTopLevelDeclaration(class)
   beginMetadataStar(class)
   endMetadataStar(0)
-  beginClassOrNamedMixinApplicationPrelude(class)
+  beginClassOrMixinOrNamedMixinApplicationPrelude(class)
     handleRecoverableError(Message[BuiltInIdentifierInDeclaration, Can't use 'export' as a name here., null, {lexeme: export}], export, export)
     handleIdentifier(export, classOrMixinDeclaration)
     handleNoTypeVariables({)
@@ -519,13 +519,13 @@
       handleClassNoWithClause()
       handleClassOrMixinImplements(null, 0)
       handleClassHeader(class, class, null)
-      beginClassOrMixinBody(DeclarationKind.Class, {)
-      endClassOrMixinBody(DeclarationKind.Class, 0, {, })
+      beginClassOrMixinOrExtensionBody(DeclarationKind.Class, {)
+      endClassOrMixinOrExtensionBody(DeclarationKind.Class, 0, {, })
     endClassDeclaration(class, })
   endTopLevelDeclaration(class)
   beginMetadataStar(class)
   endMetadataStar(0)
-  beginClassOrNamedMixinApplicationPrelude(class)
+  beginClassOrMixinOrNamedMixinApplicationPrelude(class)
     handleRecoverableError(Message[ExpectedIdentifierButGotKeyword, 'extends' can't be used as an identifier because it's a keyword., Try renaming this to be an identifier that isn't a keyword., {lexeme: extends}], extends, extends)
     handleIdentifier(extends, classOrMixinDeclaration)
     handleNoTypeVariables({)
@@ -535,13 +535,13 @@
       handleClassNoWithClause()
       handleClassOrMixinImplements(null, 0)
       handleClassHeader(class, class, null)
-      beginClassOrMixinBody(DeclarationKind.Class, {)
-      endClassOrMixinBody(DeclarationKind.Class, 0, {, })
+      beginClassOrMixinOrExtensionBody(DeclarationKind.Class, {)
+      endClassOrMixinOrExtensionBody(DeclarationKind.Class, 0, {, })
     endClassDeclaration(class, })
   endTopLevelDeclaration(class)
   beginMetadataStar(class)
   endMetadataStar(0)
-  beginClassOrNamedMixinApplicationPrelude(class)
+  beginClassOrMixinOrNamedMixinApplicationPrelude(class)
     handleRecoverableError(Message[BuiltInIdentifierInDeclaration, Can't use 'extension' as a name here., null, {lexeme: extension}], extension, extension)
     handleIdentifier(extension, classOrMixinDeclaration)
     handleNoTypeVariables({)
@@ -551,13 +551,13 @@
       handleClassNoWithClause()
       handleClassOrMixinImplements(null, 0)
       handleClassHeader(class, class, null)
-      beginClassOrMixinBody(DeclarationKind.Class, {)
-      endClassOrMixinBody(DeclarationKind.Class, 0, {, })
+      beginClassOrMixinOrExtensionBody(DeclarationKind.Class, {)
+      endClassOrMixinOrExtensionBody(DeclarationKind.Class, 0, {, })
     endClassDeclaration(class, })
   endTopLevelDeclaration(class)
   beginMetadataStar(class)
   endMetadataStar(0)
-  beginClassOrNamedMixinApplicationPrelude(class)
+  beginClassOrMixinOrNamedMixinApplicationPrelude(class)
     handleRecoverableError(Message[BuiltInIdentifierInDeclaration, Can't use 'external' as a name here., null, {lexeme: external}], external, external)
     handleIdentifier(external, classOrMixinDeclaration)
     handleNoTypeVariables({)
@@ -567,13 +567,13 @@
       handleClassNoWithClause()
       handleClassOrMixinImplements(null, 0)
       handleClassHeader(class, class, null)
-      beginClassOrMixinBody(DeclarationKind.Class, {)
-      endClassOrMixinBody(DeclarationKind.Class, 0, {, })
+      beginClassOrMixinOrExtensionBody(DeclarationKind.Class, {)
+      endClassOrMixinOrExtensionBody(DeclarationKind.Class, 0, {, })
     endClassDeclaration(class, })
   endTopLevelDeclaration(class)
   beginMetadataStar(class)
   endMetadataStar(0)
-  beginClassOrNamedMixinApplicationPrelude(class)
+  beginClassOrMixinOrNamedMixinApplicationPrelude(class)
     handleRecoverableError(Message[BuiltInIdentifierInDeclaration, Can't use 'factory' as a name here., null, {lexeme: factory}], factory, factory)
     handleIdentifier(factory, classOrMixinDeclaration)
     handleNoTypeVariables({)
@@ -583,13 +583,13 @@
       handleClassNoWithClause()
       handleClassOrMixinImplements(null, 0)
       handleClassHeader(class, class, null)
-      beginClassOrMixinBody(DeclarationKind.Class, {)
-      endClassOrMixinBody(DeclarationKind.Class, 0, {, })
+      beginClassOrMixinOrExtensionBody(DeclarationKind.Class, {)
+      endClassOrMixinOrExtensionBody(DeclarationKind.Class, 0, {, })
     endClassDeclaration(class, })
   endTopLevelDeclaration(class)
   beginMetadataStar(class)
   endMetadataStar(0)
-  beginClassOrNamedMixinApplicationPrelude(class)
+  beginClassOrMixinOrNamedMixinApplicationPrelude(class)
     handleRecoverableError(Message[ExpectedIdentifierButGotKeyword, 'false' can't be used as an identifier because it's a keyword., Try renaming this to be an identifier that isn't a keyword., {lexeme: false}], false, false)
     handleIdentifier(false, classOrMixinDeclaration)
     handleNoTypeVariables({)
@@ -599,13 +599,13 @@
       handleClassNoWithClause()
       handleClassOrMixinImplements(null, 0)
       handleClassHeader(class, class, null)
-      beginClassOrMixinBody(DeclarationKind.Class, {)
-      endClassOrMixinBody(DeclarationKind.Class, 0, {, })
+      beginClassOrMixinOrExtensionBody(DeclarationKind.Class, {)
+      endClassOrMixinOrExtensionBody(DeclarationKind.Class, 0, {, })
     endClassDeclaration(class, })
   endTopLevelDeclaration(class)
   beginMetadataStar(class)
   endMetadataStar(0)
-  beginClassOrNamedMixinApplicationPrelude(class)
+  beginClassOrMixinOrNamedMixinApplicationPrelude(class)
     handleRecoverableError(Message[ExpectedIdentifierButGotKeyword, 'final' can't be used as an identifier because it's a keyword., Try renaming this to be an identifier that isn't a keyword., {lexeme: final}], final, final)
     handleIdentifier(final, classOrMixinDeclaration)
     handleNoTypeVariables({)
@@ -615,13 +615,13 @@
       handleClassNoWithClause()
       handleClassOrMixinImplements(null, 0)
       handleClassHeader(class, class, null)
-      beginClassOrMixinBody(DeclarationKind.Class, {)
-      endClassOrMixinBody(DeclarationKind.Class, 0, {, })
+      beginClassOrMixinOrExtensionBody(DeclarationKind.Class, {)
+      endClassOrMixinOrExtensionBody(DeclarationKind.Class, 0, {, })
     endClassDeclaration(class, })
   endTopLevelDeclaration(class)
   beginMetadataStar(class)
   endMetadataStar(0)
-  beginClassOrNamedMixinApplicationPrelude(class)
+  beginClassOrMixinOrNamedMixinApplicationPrelude(class)
     handleRecoverableError(Message[ExpectedIdentifierButGotKeyword, 'finally' can't be used as an identifier because it's a keyword., Try renaming this to be an identifier that isn't a keyword., {lexeme: finally}], finally, finally)
     handleIdentifier(finally, classOrMixinDeclaration)
     handleNoTypeVariables({)
@@ -631,13 +631,13 @@
       handleClassNoWithClause()
       handleClassOrMixinImplements(null, 0)
       handleClassHeader(class, class, null)
-      beginClassOrMixinBody(DeclarationKind.Class, {)
-      endClassOrMixinBody(DeclarationKind.Class, 0, {, })
+      beginClassOrMixinOrExtensionBody(DeclarationKind.Class, {)
+      endClassOrMixinOrExtensionBody(DeclarationKind.Class, 0, {, })
     endClassDeclaration(class, })
   endTopLevelDeclaration(class)
   beginMetadataStar(class)
   endMetadataStar(0)
-  beginClassOrNamedMixinApplicationPrelude(class)
+  beginClassOrMixinOrNamedMixinApplicationPrelude(class)
     handleRecoverableError(Message[ExpectedIdentifierButGotKeyword, 'for' can't be used as an identifier because it's a keyword., Try renaming this to be an identifier that isn't a keyword., {lexeme: for}], for, for)
     handleIdentifier(for, classOrMixinDeclaration)
     handleNoTypeVariables({)
@@ -647,13 +647,13 @@
       handleClassNoWithClause()
       handleClassOrMixinImplements(null, 0)
       handleClassHeader(class, class, null)
-      beginClassOrMixinBody(DeclarationKind.Class, {)
-      endClassOrMixinBody(DeclarationKind.Class, 0, {, })
+      beginClassOrMixinOrExtensionBody(DeclarationKind.Class, {)
+      endClassOrMixinOrExtensionBody(DeclarationKind.Class, 0, {, })
     endClassDeclaration(class, })
   endTopLevelDeclaration(class)
   beginMetadataStar(class)
   endMetadataStar(0)
-  beginClassOrNamedMixinApplicationPrelude(class)
+  beginClassOrMixinOrNamedMixinApplicationPrelude(class)
     handleIdentifier(Function, classOrMixinDeclaration)
     handleNoTypeVariables({)
     beginClassDeclaration(class, null, Function)
@@ -662,13 +662,13 @@
       handleClassNoWithClause()
       handleClassOrMixinImplements(null, 0)
       handleClassHeader(class, class, null)
-      beginClassOrMixinBody(DeclarationKind.Class, {)
-      endClassOrMixinBody(DeclarationKind.Class, 0, {, })
+      beginClassOrMixinOrExtensionBody(DeclarationKind.Class, {)
+      endClassOrMixinOrExtensionBody(DeclarationKind.Class, 0, {, })
     endClassDeclaration(class, })
   endTopLevelDeclaration(class)
   beginMetadataStar(class)
   endMetadataStar(0)
-  beginClassOrNamedMixinApplicationPrelude(class)
+  beginClassOrMixinOrNamedMixinApplicationPrelude(class)
     handleRecoverableError(Message[BuiltInIdentifierInDeclaration, Can't use 'get' as a name here., null, {lexeme: get}], get, get)
     handleIdentifier(get, classOrMixinDeclaration)
     handleNoTypeVariables({)
@@ -678,13 +678,13 @@
       handleClassNoWithClause()
       handleClassOrMixinImplements(null, 0)
       handleClassHeader(class, class, null)
-      beginClassOrMixinBody(DeclarationKind.Class, {)
-      endClassOrMixinBody(DeclarationKind.Class, 0, {, })
+      beginClassOrMixinOrExtensionBody(DeclarationKind.Class, {)
+      endClassOrMixinOrExtensionBody(DeclarationKind.Class, 0, {, })
     endClassDeclaration(class, })
   endTopLevelDeclaration(class)
   beginMetadataStar(class)
   endMetadataStar(0)
-  beginClassOrNamedMixinApplicationPrelude(class)
+  beginClassOrMixinOrNamedMixinApplicationPrelude(class)
     handleIdentifier(hide, classOrMixinDeclaration)
     handleNoTypeVariables({)
     beginClassDeclaration(class, null, hide)
@@ -693,13 +693,13 @@
       handleClassNoWithClause()
       handleClassOrMixinImplements(null, 0)
       handleClassHeader(class, class, null)
-      beginClassOrMixinBody(DeclarationKind.Class, {)
-      endClassOrMixinBody(DeclarationKind.Class, 0, {, })
+      beginClassOrMixinOrExtensionBody(DeclarationKind.Class, {)
+      endClassOrMixinOrExtensionBody(DeclarationKind.Class, 0, {, })
     endClassDeclaration(class, })
   endTopLevelDeclaration(class)
   beginMetadataStar(class)
   endMetadataStar(0)
-  beginClassOrNamedMixinApplicationPrelude(class)
+  beginClassOrMixinOrNamedMixinApplicationPrelude(class)
     handleRecoverableError(Message[ExpectedIdentifierButGotKeyword, 'if' can't be used as an identifier because it's a keyword., Try renaming this to be an identifier that isn't a keyword., {lexeme: if}], if, if)
     handleIdentifier(if, classOrMixinDeclaration)
     handleNoTypeVariables({)
@@ -709,13 +709,13 @@
       handleClassNoWithClause()
       handleClassOrMixinImplements(null, 0)
       handleClassHeader(class, class, null)
-      beginClassOrMixinBody(DeclarationKind.Class, {)
-      endClassOrMixinBody(DeclarationKind.Class, 0, {, })
+      beginClassOrMixinOrExtensionBody(DeclarationKind.Class, {)
+      endClassOrMixinOrExtensionBody(DeclarationKind.Class, 0, {, })
     endClassDeclaration(class, })
   endTopLevelDeclaration(class)
   beginMetadataStar(class)
   endMetadataStar(0)
-  beginClassOrNamedMixinApplicationPrelude(class)
+  beginClassOrMixinOrNamedMixinApplicationPrelude(class)
     handleRecoverableError(Message[BuiltInIdentifierInDeclaration, Can't use 'implements' as a name here., null, {lexeme: implements}], implements, implements)
     handleIdentifier(implements, classOrMixinDeclaration)
     handleNoTypeVariables({)
@@ -725,13 +725,13 @@
       handleClassNoWithClause()
       handleClassOrMixinImplements(null, 0)
       handleClassHeader(class, class, null)
-      beginClassOrMixinBody(DeclarationKind.Class, {)
-      endClassOrMixinBody(DeclarationKind.Class, 0, {, })
+      beginClassOrMixinOrExtensionBody(DeclarationKind.Class, {)
+      endClassOrMixinOrExtensionBody(DeclarationKind.Class, 0, {, })
     endClassDeclaration(class, })
   endTopLevelDeclaration(class)
   beginMetadataStar(class)
   endMetadataStar(0)
-  beginClassOrNamedMixinApplicationPrelude(class)
+  beginClassOrMixinOrNamedMixinApplicationPrelude(class)
     handleRecoverableError(Message[BuiltInIdentifierInDeclaration, Can't use 'import' as a name here., null, {lexeme: import}], import, import)
     handleIdentifier(import, classOrMixinDeclaration)
     handleNoTypeVariables({)
@@ -741,13 +741,13 @@
       handleClassNoWithClause()
       handleClassOrMixinImplements(null, 0)
       handleClassHeader(class, class, null)
-      beginClassOrMixinBody(DeclarationKind.Class, {)
-      endClassOrMixinBody(DeclarationKind.Class, 0, {, })
+      beginClassOrMixinOrExtensionBody(DeclarationKind.Class, {)
+      endClassOrMixinOrExtensionBody(DeclarationKind.Class, 0, {, })
     endClassDeclaration(class, })
   endTopLevelDeclaration(class)
   beginMetadataStar(class)
   endMetadataStar(0)
-  beginClassOrNamedMixinApplicationPrelude(class)
+  beginClassOrMixinOrNamedMixinApplicationPrelude(class)
     handleRecoverableError(Message[ExpectedIdentifierButGotKeyword, 'in' can't be used as an identifier because it's a keyword., Try renaming this to be an identifier that isn't a keyword., {lexeme: in}], in, in)
     handleIdentifier(in, classOrMixinDeclaration)
     handleNoTypeVariables({)
@@ -757,13 +757,13 @@
       handleClassNoWithClause()
       handleClassOrMixinImplements(null, 0)
       handleClassHeader(class, class, null)
-      beginClassOrMixinBody(DeclarationKind.Class, {)
-      endClassOrMixinBody(DeclarationKind.Class, 0, {, })
+      beginClassOrMixinOrExtensionBody(DeclarationKind.Class, {)
+      endClassOrMixinOrExtensionBody(DeclarationKind.Class, 0, {, })
     endClassDeclaration(class, })
   endTopLevelDeclaration(class)
   beginMetadataStar(class)
   endMetadataStar(0)
-  beginClassOrNamedMixinApplicationPrelude(class)
+  beginClassOrMixinOrNamedMixinApplicationPrelude(class)
     handleIdentifier(inout, classOrMixinDeclaration)
     handleNoTypeVariables({)
     beginClassDeclaration(class, null, inout)
@@ -772,13 +772,13 @@
       handleClassNoWithClause()
       handleClassOrMixinImplements(null, 0)
       handleClassHeader(class, class, null)
-      beginClassOrMixinBody(DeclarationKind.Class, {)
-      endClassOrMixinBody(DeclarationKind.Class, 0, {, })
+      beginClassOrMixinOrExtensionBody(DeclarationKind.Class, {)
+      endClassOrMixinOrExtensionBody(DeclarationKind.Class, 0, {, })
     endClassDeclaration(class, })
   endTopLevelDeclaration(class)
   beginMetadataStar(class)
   endMetadataStar(0)
-  beginClassOrNamedMixinApplicationPrelude(class)
+  beginClassOrMixinOrNamedMixinApplicationPrelude(class)
     handleRecoverableError(Message[BuiltInIdentifierInDeclaration, Can't use 'interface' as a name here., null, {lexeme: interface}], interface, interface)
     handleIdentifier(interface, classOrMixinDeclaration)
     handleNoTypeVariables({)
@@ -788,13 +788,13 @@
       handleClassNoWithClause()
       handleClassOrMixinImplements(null, 0)
       handleClassHeader(class, class, null)
-      beginClassOrMixinBody(DeclarationKind.Class, {)
-      endClassOrMixinBody(DeclarationKind.Class, 0, {, })
+      beginClassOrMixinOrExtensionBody(DeclarationKind.Class, {)
+      endClassOrMixinOrExtensionBody(DeclarationKind.Class, 0, {, })
     endClassDeclaration(class, })
   endTopLevelDeclaration(class)
   beginMetadataStar(class)
   endMetadataStar(0)
-  beginClassOrNamedMixinApplicationPrelude(class)
+  beginClassOrMixinOrNamedMixinApplicationPrelude(class)
     handleRecoverableError(Message[ExpectedIdentifierButGotKeyword, 'is' can't be used as an identifier because it's a keyword., Try renaming this to be an identifier that isn't a keyword., {lexeme: is}], is, is)
     handleIdentifier(is, classOrMixinDeclaration)
     handleNoTypeVariables({)
@@ -804,13 +804,13 @@
       handleClassNoWithClause()
       handleClassOrMixinImplements(null, 0)
       handleClassHeader(class, class, null)
-      beginClassOrMixinBody(DeclarationKind.Class, {)
-      endClassOrMixinBody(DeclarationKind.Class, 0, {, })
+      beginClassOrMixinOrExtensionBody(DeclarationKind.Class, {)
+      endClassOrMixinOrExtensionBody(DeclarationKind.Class, 0, {, })
     endClassDeclaration(class, })
   endTopLevelDeclaration(class)
   beginMetadataStar(class)
   endMetadataStar(0)
-  beginClassOrNamedMixinApplicationPrelude(class)
+  beginClassOrMixinOrNamedMixinApplicationPrelude(class)
     handleRecoverableError(Message[BuiltInIdentifierInDeclaration, Can't use 'late' as a name here., null, {lexeme: late}], late, late)
     handleIdentifier(late, classOrMixinDeclaration)
     handleNoTypeVariables({)
@@ -820,13 +820,13 @@
       handleClassNoWithClause()
       handleClassOrMixinImplements(null, 0)
       handleClassHeader(class, class, null)
-      beginClassOrMixinBody(DeclarationKind.Class, {)
-      endClassOrMixinBody(DeclarationKind.Class, 0, {, })
+      beginClassOrMixinOrExtensionBody(DeclarationKind.Class, {)
+      endClassOrMixinOrExtensionBody(DeclarationKind.Class, 0, {, })
     endClassDeclaration(class, })
   endTopLevelDeclaration(class)
   beginMetadataStar(class)
   endMetadataStar(0)
-  beginClassOrNamedMixinApplicationPrelude(class)
+  beginClassOrMixinOrNamedMixinApplicationPrelude(class)
     handleRecoverableError(Message[BuiltInIdentifierInDeclaration, Can't use 'library' as a name here., null, {lexeme: library}], library, library)
     handleIdentifier(library, classOrMixinDeclaration)
     handleNoTypeVariables({)
@@ -836,13 +836,13 @@
       handleClassNoWithClause()
       handleClassOrMixinImplements(null, 0)
       handleClassHeader(class, class, null)
-      beginClassOrMixinBody(DeclarationKind.Class, {)
-      endClassOrMixinBody(DeclarationKind.Class, 0, {, })
+      beginClassOrMixinOrExtensionBody(DeclarationKind.Class, {)
+      endClassOrMixinOrExtensionBody(DeclarationKind.Class, 0, {, })
     endClassDeclaration(class, })
   endTopLevelDeclaration(class)
   beginMetadataStar(class)
   endMetadataStar(0)
-  beginClassOrNamedMixinApplicationPrelude(class)
+  beginClassOrMixinOrNamedMixinApplicationPrelude(class)
     handleRecoverableError(Message[BuiltInIdentifierInDeclaration, Can't use 'mixin' as a name here., null, {lexeme: mixin}], mixin, mixin)
     handleIdentifier(mixin, classOrMixinDeclaration)
     handleNoTypeVariables({)
@@ -852,13 +852,13 @@
       handleClassNoWithClause()
       handleClassOrMixinImplements(null, 0)
       handleClassHeader(class, class, null)
-      beginClassOrMixinBody(DeclarationKind.Class, {)
-      endClassOrMixinBody(DeclarationKind.Class, 0, {, })
+      beginClassOrMixinOrExtensionBody(DeclarationKind.Class, {)
+      endClassOrMixinOrExtensionBody(DeclarationKind.Class, 0, {, })
     endClassDeclaration(class, })
   endTopLevelDeclaration(class)
   beginMetadataStar(class)
   endMetadataStar(0)
-  beginClassOrNamedMixinApplicationPrelude(class)
+  beginClassOrMixinOrNamedMixinApplicationPrelude(class)
     handleIdentifier(native, classOrMixinDeclaration)
     handleNoTypeVariables({)
     beginClassDeclaration(class, null, native)
@@ -867,13 +867,13 @@
       handleClassNoWithClause()
       handleClassOrMixinImplements(null, 0)
       handleClassHeader(class, class, null)
-      beginClassOrMixinBody(DeclarationKind.Class, {)
-      endClassOrMixinBody(DeclarationKind.Class, 0, {, })
+      beginClassOrMixinOrExtensionBody(DeclarationKind.Class, {)
+      endClassOrMixinOrExtensionBody(DeclarationKind.Class, 0, {, })
     endClassDeclaration(class, })
   endTopLevelDeclaration(class)
   beginMetadataStar(class)
   endMetadataStar(0)
-  beginClassOrNamedMixinApplicationPrelude(class)
+  beginClassOrMixinOrNamedMixinApplicationPrelude(class)
     handleRecoverableError(Message[ExpectedIdentifierButGotKeyword, 'new' can't be used as an identifier because it's a keyword., Try renaming this to be an identifier that isn't a keyword., {lexeme: new}], new, new)
     handleIdentifier(new, classOrMixinDeclaration)
     handleNoTypeVariables({)
@@ -883,13 +883,13 @@
       handleClassNoWithClause()
       handleClassOrMixinImplements(null, 0)
       handleClassHeader(class, class, null)
-      beginClassOrMixinBody(DeclarationKind.Class, {)
-      endClassOrMixinBody(DeclarationKind.Class, 0, {, })
+      beginClassOrMixinOrExtensionBody(DeclarationKind.Class, {)
+      endClassOrMixinOrExtensionBody(DeclarationKind.Class, 0, {, })
     endClassDeclaration(class, })
   endTopLevelDeclaration(class)
   beginMetadataStar(class)
   endMetadataStar(0)
-  beginClassOrNamedMixinApplicationPrelude(class)
+  beginClassOrMixinOrNamedMixinApplicationPrelude(class)
     handleRecoverableError(Message[ExpectedIdentifierButGotKeyword, 'null' can't be used as an identifier because it's a keyword., Try renaming this to be an identifier that isn't a keyword., {lexeme: null}], null, null)
     handleIdentifier(null, classOrMixinDeclaration)
     handleNoTypeVariables({)
@@ -899,13 +899,13 @@
       handleClassNoWithClause()
       handleClassOrMixinImplements(null, 0)
       handleClassHeader(class, class, null)
-      beginClassOrMixinBody(DeclarationKind.Class, {)
-      endClassOrMixinBody(DeclarationKind.Class, 0, {, })
+      beginClassOrMixinOrExtensionBody(DeclarationKind.Class, {)
+      endClassOrMixinOrExtensionBody(DeclarationKind.Class, 0, {, })
     endClassDeclaration(class, })
   endTopLevelDeclaration(class)
   beginMetadataStar(class)
   endMetadataStar(0)
-  beginClassOrNamedMixinApplicationPrelude(class)
+  beginClassOrMixinOrNamedMixinApplicationPrelude(class)
     handleIdentifier(of, classOrMixinDeclaration)
     handleNoTypeVariables({)
     beginClassDeclaration(class, null, of)
@@ -914,13 +914,13 @@
       handleClassNoWithClause()
       handleClassOrMixinImplements(null, 0)
       handleClassHeader(class, class, null)
-      beginClassOrMixinBody(DeclarationKind.Class, {)
-      endClassOrMixinBody(DeclarationKind.Class, 0, {, })
+      beginClassOrMixinOrExtensionBody(DeclarationKind.Class, {)
+      endClassOrMixinOrExtensionBody(DeclarationKind.Class, 0, {, })
     endClassDeclaration(class, })
   endTopLevelDeclaration(class)
   beginMetadataStar(class)
   endMetadataStar(0)
-  beginClassOrNamedMixinApplicationPrelude(class)
+  beginClassOrMixinOrNamedMixinApplicationPrelude(class)
     handleIdentifier(on, classOrMixinDeclaration)
     handleNoTypeVariables({)
     beginClassDeclaration(class, null, on)
@@ -929,13 +929,13 @@
       handleClassNoWithClause()
       handleClassOrMixinImplements(null, 0)
       handleClassHeader(class, class, null)
-      beginClassOrMixinBody(DeclarationKind.Class, {)
-      endClassOrMixinBody(DeclarationKind.Class, 0, {, })
+      beginClassOrMixinOrExtensionBody(DeclarationKind.Class, {)
+      endClassOrMixinOrExtensionBody(DeclarationKind.Class, 0, {, })
     endClassDeclaration(class, })
   endTopLevelDeclaration(class)
   beginMetadataStar(class)
   endMetadataStar(0)
-  beginClassOrNamedMixinApplicationPrelude(class)
+  beginClassOrMixinOrNamedMixinApplicationPrelude(class)
     handleRecoverableError(Message[BuiltInIdentifierInDeclaration, Can't use 'operator' as a name here., null, {lexeme: operator}], operator, operator)
     handleIdentifier(operator, classOrMixinDeclaration)
     handleNoTypeVariables({)
@@ -945,13 +945,13 @@
       handleClassNoWithClause()
       handleClassOrMixinImplements(null, 0)
       handleClassHeader(class, class, null)
-      beginClassOrMixinBody(DeclarationKind.Class, {)
-      endClassOrMixinBody(DeclarationKind.Class, 0, {, })
+      beginClassOrMixinOrExtensionBody(DeclarationKind.Class, {)
+      endClassOrMixinOrExtensionBody(DeclarationKind.Class, 0, {, })
     endClassDeclaration(class, })
   endTopLevelDeclaration(class)
   beginMetadataStar(class)
   endMetadataStar(0)
-  beginClassOrNamedMixinApplicationPrelude(class)
+  beginClassOrMixinOrNamedMixinApplicationPrelude(class)
     handleIdentifier(out, classOrMixinDeclaration)
     handleNoTypeVariables({)
     beginClassDeclaration(class, null, out)
@@ -960,13 +960,13 @@
       handleClassNoWithClause()
       handleClassOrMixinImplements(null, 0)
       handleClassHeader(class, class, null)
-      beginClassOrMixinBody(DeclarationKind.Class, {)
-      endClassOrMixinBody(DeclarationKind.Class, 0, {, })
+      beginClassOrMixinOrExtensionBody(DeclarationKind.Class, {)
+      endClassOrMixinOrExtensionBody(DeclarationKind.Class, 0, {, })
     endClassDeclaration(class, })
   endTopLevelDeclaration(class)
   beginMetadataStar(class)
   endMetadataStar(0)
-  beginClassOrNamedMixinApplicationPrelude(class)
+  beginClassOrMixinOrNamedMixinApplicationPrelude(class)
     handleRecoverableError(Message[BuiltInIdentifierInDeclaration, Can't use 'part' as a name here., null, {lexeme: part}], part, part)
     handleIdentifier(part, classOrMixinDeclaration)
     handleNoTypeVariables({)
@@ -976,13 +976,13 @@
       handleClassNoWithClause()
       handleClassOrMixinImplements(null, 0)
       handleClassHeader(class, class, null)
-      beginClassOrMixinBody(DeclarationKind.Class, {)
-      endClassOrMixinBody(DeclarationKind.Class, 0, {, })
+      beginClassOrMixinOrExtensionBody(DeclarationKind.Class, {)
+      endClassOrMixinOrExtensionBody(DeclarationKind.Class, 0, {, })
     endClassDeclaration(class, })
   endTopLevelDeclaration(class)
   beginMetadataStar(class)
   endMetadataStar(0)
-  beginClassOrNamedMixinApplicationPrelude(class)
+  beginClassOrMixinOrNamedMixinApplicationPrelude(class)
     handleIdentifier(patch, classOrMixinDeclaration)
     handleNoTypeVariables({)
     beginClassDeclaration(class, null, patch)
@@ -991,13 +991,13 @@
       handleClassNoWithClause()
       handleClassOrMixinImplements(null, 0)
       handleClassHeader(class, class, null)
-      beginClassOrMixinBody(DeclarationKind.Class, {)
-      endClassOrMixinBody(DeclarationKind.Class, 0, {, })
+      beginClassOrMixinOrExtensionBody(DeclarationKind.Class, {)
+      endClassOrMixinOrExtensionBody(DeclarationKind.Class, 0, {, })
     endClassDeclaration(class, })
   endTopLevelDeclaration(class)
   beginMetadataStar(class)
   endMetadataStar(0)
-  beginClassOrNamedMixinApplicationPrelude(class)
+  beginClassOrMixinOrNamedMixinApplicationPrelude(class)
     handleRecoverableError(Message[BuiltInIdentifierInDeclaration, Can't use 'required' as a name here., null, {lexeme: required}], required, required)
     handleIdentifier(required, classOrMixinDeclaration)
     handleNoTypeVariables({)
@@ -1007,13 +1007,13 @@
       handleClassNoWithClause()
       handleClassOrMixinImplements(null, 0)
       handleClassHeader(class, class, null)
-      beginClassOrMixinBody(DeclarationKind.Class, {)
-      endClassOrMixinBody(DeclarationKind.Class, 0, {, })
+      beginClassOrMixinOrExtensionBody(DeclarationKind.Class, {)
+      endClassOrMixinOrExtensionBody(DeclarationKind.Class, 0, {, })
     endClassDeclaration(class, })
   endTopLevelDeclaration(class)
   beginMetadataStar(class)
   endMetadataStar(0)
-  beginClassOrNamedMixinApplicationPrelude(class)
+  beginClassOrMixinOrNamedMixinApplicationPrelude(class)
     handleRecoverableError(Message[ExpectedIdentifierButGotKeyword, 'rethrow' can't be used as an identifier because it's a keyword., Try renaming this to be an identifier that isn't a keyword., {lexeme: rethrow}], rethrow, rethrow)
     handleIdentifier(rethrow, classOrMixinDeclaration)
     handleNoTypeVariables({)
@@ -1023,13 +1023,13 @@
       handleClassNoWithClause()
       handleClassOrMixinImplements(null, 0)
       handleClassHeader(class, class, null)
-      beginClassOrMixinBody(DeclarationKind.Class, {)
-      endClassOrMixinBody(DeclarationKind.Class, 0, {, })
+      beginClassOrMixinOrExtensionBody(DeclarationKind.Class, {)
+      endClassOrMixinOrExtensionBody(DeclarationKind.Class, 0, {, })
     endClassDeclaration(class, })
   endTopLevelDeclaration(class)
   beginMetadataStar(class)
   endMetadataStar(0)
-  beginClassOrNamedMixinApplicationPrelude(class)
+  beginClassOrMixinOrNamedMixinApplicationPrelude(class)
     handleRecoverableError(Message[ExpectedIdentifierButGotKeyword, 'return' can't be used as an identifier because it's a keyword., Try renaming this to be an identifier that isn't a keyword., {lexeme: return}], return, return)
     handleIdentifier(return, classOrMixinDeclaration)
     handleNoTypeVariables({)
@@ -1039,13 +1039,13 @@
       handleClassNoWithClause()
       handleClassOrMixinImplements(null, 0)
       handleClassHeader(class, class, null)
-      beginClassOrMixinBody(DeclarationKind.Class, {)
-      endClassOrMixinBody(DeclarationKind.Class, 0, {, })
+      beginClassOrMixinOrExtensionBody(DeclarationKind.Class, {)
+      endClassOrMixinOrExtensionBody(DeclarationKind.Class, 0, {, })
     endClassDeclaration(class, })
   endTopLevelDeclaration(class)
   beginMetadataStar(class)
   endMetadataStar(0)
-  beginClassOrNamedMixinApplicationPrelude(class)
+  beginClassOrMixinOrNamedMixinApplicationPrelude(class)
     handleRecoverableError(Message[BuiltInIdentifierInDeclaration, Can't use 'set' as a name here., null, {lexeme: set}], set, set)
     handleIdentifier(set, classOrMixinDeclaration)
     handleNoTypeVariables({)
@@ -1055,13 +1055,13 @@
       handleClassNoWithClause()
       handleClassOrMixinImplements(null, 0)
       handleClassHeader(class, class, null)
-      beginClassOrMixinBody(DeclarationKind.Class, {)
-      endClassOrMixinBody(DeclarationKind.Class, 0, {, })
+      beginClassOrMixinOrExtensionBody(DeclarationKind.Class, {)
+      endClassOrMixinOrExtensionBody(DeclarationKind.Class, 0, {, })
     endClassDeclaration(class, })
   endTopLevelDeclaration(class)
   beginMetadataStar(class)
   endMetadataStar(0)
-  beginClassOrNamedMixinApplicationPrelude(class)
+  beginClassOrMixinOrNamedMixinApplicationPrelude(class)
     handleIdentifier(show, classOrMixinDeclaration)
     handleNoTypeVariables({)
     beginClassDeclaration(class, null, show)
@@ -1070,13 +1070,13 @@
       handleClassNoWithClause()
       handleClassOrMixinImplements(null, 0)
       handleClassHeader(class, class, null)
-      beginClassOrMixinBody(DeclarationKind.Class, {)
-      endClassOrMixinBody(DeclarationKind.Class, 0, {, })
+      beginClassOrMixinOrExtensionBody(DeclarationKind.Class, {)
+      endClassOrMixinOrExtensionBody(DeclarationKind.Class, 0, {, })
     endClassDeclaration(class, })
   endTopLevelDeclaration(class)
   beginMetadataStar(class)
   endMetadataStar(0)
-  beginClassOrNamedMixinApplicationPrelude(class)
+  beginClassOrMixinOrNamedMixinApplicationPrelude(class)
     handleIdentifier(source, classOrMixinDeclaration)
     handleNoTypeVariables({)
     beginClassDeclaration(class, null, source)
@@ -1085,13 +1085,13 @@
       handleClassNoWithClause()
       handleClassOrMixinImplements(null, 0)
       handleClassHeader(class, class, null)
-      beginClassOrMixinBody(DeclarationKind.Class, {)
-      endClassOrMixinBody(DeclarationKind.Class, 0, {, })
+      beginClassOrMixinOrExtensionBody(DeclarationKind.Class, {)
+      endClassOrMixinOrExtensionBody(DeclarationKind.Class, 0, {, })
     endClassDeclaration(class, })
   endTopLevelDeclaration(class)
   beginMetadataStar(class)
   endMetadataStar(0)
-  beginClassOrNamedMixinApplicationPrelude(class)
+  beginClassOrMixinOrNamedMixinApplicationPrelude(class)
     handleRecoverableError(Message[BuiltInIdentifierInDeclaration, Can't use 'static' as a name here., null, {lexeme: static}], static, static)
     handleIdentifier(static, classOrMixinDeclaration)
     handleNoTypeVariables({)
@@ -1101,13 +1101,13 @@
       handleClassNoWithClause()
       handleClassOrMixinImplements(null, 0)
       handleClassHeader(class, class, null)
-      beginClassOrMixinBody(DeclarationKind.Class, {)
-      endClassOrMixinBody(DeclarationKind.Class, 0, {, })
+      beginClassOrMixinOrExtensionBody(DeclarationKind.Class, {)
+      endClassOrMixinOrExtensionBody(DeclarationKind.Class, 0, {, })
     endClassDeclaration(class, })
   endTopLevelDeclaration(class)
   beginMetadataStar(class)
   endMetadataStar(0)
-  beginClassOrNamedMixinApplicationPrelude(class)
+  beginClassOrMixinOrNamedMixinApplicationPrelude(class)
     handleRecoverableError(Message[ExpectedIdentifierButGotKeyword, 'super' can't be used as an identifier because it's a keyword., Try renaming this to be an identifier that isn't a keyword., {lexeme: super}], super, super)
     handleIdentifier(super, classOrMixinDeclaration)
     handleNoTypeVariables({)
@@ -1117,13 +1117,13 @@
       handleClassNoWithClause()
       handleClassOrMixinImplements(null, 0)
       handleClassHeader(class, class, null)
-      beginClassOrMixinBody(DeclarationKind.Class, {)
-      endClassOrMixinBody(DeclarationKind.Class, 0, {, })
+      beginClassOrMixinOrExtensionBody(DeclarationKind.Class, {)
+      endClassOrMixinOrExtensionBody(DeclarationKind.Class, 0, {, })
     endClassDeclaration(class, })
   endTopLevelDeclaration(class)
   beginMetadataStar(class)
   endMetadataStar(0)
-  beginClassOrNamedMixinApplicationPrelude(class)
+  beginClassOrMixinOrNamedMixinApplicationPrelude(class)
     handleRecoverableError(Message[ExpectedIdentifierButGotKeyword, 'switch' can't be used as an identifier because it's a keyword., Try renaming this to be an identifier that isn't a keyword., {lexeme: switch}], switch, switch)
     handleIdentifier(switch, classOrMixinDeclaration)
     handleNoTypeVariables({)
@@ -1133,13 +1133,13 @@
       handleClassNoWithClause()
       handleClassOrMixinImplements(null, 0)
       handleClassHeader(class, class, null)
-      beginClassOrMixinBody(DeclarationKind.Class, {)
-      endClassOrMixinBody(DeclarationKind.Class, 0, {, })
+      beginClassOrMixinOrExtensionBody(DeclarationKind.Class, {)
+      endClassOrMixinOrExtensionBody(DeclarationKind.Class, 0, {, })
     endClassDeclaration(class, })
   endTopLevelDeclaration(class)
   beginMetadataStar(class)
   endMetadataStar(0)
-  beginClassOrNamedMixinApplicationPrelude(class)
+  beginClassOrMixinOrNamedMixinApplicationPrelude(class)
     handleIdentifier(sync, classOrMixinDeclaration)
     handleNoTypeVariables({)
     beginClassDeclaration(class, null, sync)
@@ -1148,13 +1148,13 @@
       handleClassNoWithClause()
       handleClassOrMixinImplements(null, 0)
       handleClassHeader(class, class, null)
-      beginClassOrMixinBody(DeclarationKind.Class, {)
-      endClassOrMixinBody(DeclarationKind.Class, 0, {, })
+      beginClassOrMixinOrExtensionBody(DeclarationKind.Class, {)
+      endClassOrMixinOrExtensionBody(DeclarationKind.Class, 0, {, })
     endClassDeclaration(class, })
   endTopLevelDeclaration(class)
   beginMetadataStar(class)
   endMetadataStar(0)
-  beginClassOrNamedMixinApplicationPrelude(class)
+  beginClassOrMixinOrNamedMixinApplicationPrelude(class)
     handleRecoverableError(Message[ExpectedIdentifierButGotKeyword, 'this' can't be used as an identifier because it's a keyword., Try renaming this to be an identifier that isn't a keyword., {lexeme: this}], this, this)
     handleIdentifier(this, classOrMixinDeclaration)
     handleNoTypeVariables({)
@@ -1164,13 +1164,13 @@
       handleClassNoWithClause()
       handleClassOrMixinImplements(null, 0)
       handleClassHeader(class, class, null)
-      beginClassOrMixinBody(DeclarationKind.Class, {)
-      endClassOrMixinBody(DeclarationKind.Class, 0, {, })
+      beginClassOrMixinOrExtensionBody(DeclarationKind.Class, {)
+      endClassOrMixinOrExtensionBody(DeclarationKind.Class, 0, {, })
     endClassDeclaration(class, })
   endTopLevelDeclaration(class)
   beginMetadataStar(class)
   endMetadataStar(0)
-  beginClassOrNamedMixinApplicationPrelude(class)
+  beginClassOrMixinOrNamedMixinApplicationPrelude(class)
     handleRecoverableError(Message[ExpectedIdentifierButGotKeyword, 'throw' can't be used as an identifier because it's a keyword., Try renaming this to be an identifier that isn't a keyword., {lexeme: throw}], throw, throw)
     handleIdentifier(throw, classOrMixinDeclaration)
     handleNoTypeVariables({)
@@ -1180,13 +1180,13 @@
       handleClassNoWithClause()
       handleClassOrMixinImplements(null, 0)
       handleClassHeader(class, class, null)
-      beginClassOrMixinBody(DeclarationKind.Class, {)
-      endClassOrMixinBody(DeclarationKind.Class, 0, {, })
+      beginClassOrMixinOrExtensionBody(DeclarationKind.Class, {)
+      endClassOrMixinOrExtensionBody(DeclarationKind.Class, 0, {, })
     endClassDeclaration(class, })
   endTopLevelDeclaration(class)
   beginMetadataStar(class)
   endMetadataStar(0)
-  beginClassOrNamedMixinApplicationPrelude(class)
+  beginClassOrMixinOrNamedMixinApplicationPrelude(class)
     handleRecoverableError(Message[ExpectedIdentifierButGotKeyword, 'true' can't be used as an identifier because it's a keyword., Try renaming this to be an identifier that isn't a keyword., {lexeme: true}], true, true)
     handleIdentifier(true, classOrMixinDeclaration)
     handleNoTypeVariables({)
@@ -1196,13 +1196,13 @@
       handleClassNoWithClause()
       handleClassOrMixinImplements(null, 0)
       handleClassHeader(class, class, null)
-      beginClassOrMixinBody(DeclarationKind.Class, {)
-      endClassOrMixinBody(DeclarationKind.Class, 0, {, })
+      beginClassOrMixinOrExtensionBody(DeclarationKind.Class, {)
+      endClassOrMixinOrExtensionBody(DeclarationKind.Class, 0, {, })
     endClassDeclaration(class, })
   endTopLevelDeclaration(class)
   beginMetadataStar(class)
   endMetadataStar(0)
-  beginClassOrNamedMixinApplicationPrelude(class)
+  beginClassOrMixinOrNamedMixinApplicationPrelude(class)
     handleRecoverableError(Message[ExpectedIdentifierButGotKeyword, 'try' can't be used as an identifier because it's a keyword., Try renaming this to be an identifier that isn't a keyword., {lexeme: try}], try, try)
     handleIdentifier(try, classOrMixinDeclaration)
     handleNoTypeVariables({)
@@ -1212,13 +1212,13 @@
       handleClassNoWithClause()
       handleClassOrMixinImplements(null, 0)
       handleClassHeader(class, class, null)
-      beginClassOrMixinBody(DeclarationKind.Class, {)
-      endClassOrMixinBody(DeclarationKind.Class, 0, {, })
+      beginClassOrMixinOrExtensionBody(DeclarationKind.Class, {)
+      endClassOrMixinOrExtensionBody(DeclarationKind.Class, 0, {, })
     endClassDeclaration(class, })
   endTopLevelDeclaration(class)
   beginMetadataStar(class)
   endMetadataStar(0)
-  beginClassOrNamedMixinApplicationPrelude(class)
+  beginClassOrMixinOrNamedMixinApplicationPrelude(class)
     handleRecoverableError(Message[BuiltInIdentifierInDeclaration, Can't use 'typedef' as a name here., null, {lexeme: typedef}], typedef, typedef)
     handleIdentifier(typedef, classOrMixinDeclaration)
     handleNoTypeVariables({)
@@ -1228,13 +1228,13 @@
       handleClassNoWithClause()
       handleClassOrMixinImplements(null, 0)
       handleClassHeader(class, class, null)
-      beginClassOrMixinBody(DeclarationKind.Class, {)
-      endClassOrMixinBody(DeclarationKind.Class, 0, {, })
+      beginClassOrMixinOrExtensionBody(DeclarationKind.Class, {)
+      endClassOrMixinOrExtensionBody(DeclarationKind.Class, 0, {, })
     endClassDeclaration(class, })
   endTopLevelDeclaration(class)
   beginMetadataStar(class)
   endMetadataStar(0)
-  beginClassOrNamedMixinApplicationPrelude(class)
+  beginClassOrMixinOrNamedMixinApplicationPrelude(class)
     handleRecoverableError(Message[ExpectedIdentifierButGotKeyword, 'var' can't be used as an identifier because it's a keyword., Try renaming this to be an identifier that isn't a keyword., {lexeme: var}], var, var)
     handleIdentifier(var, classOrMixinDeclaration)
     handleNoTypeVariables({)
@@ -1244,13 +1244,13 @@
       handleClassNoWithClause()
       handleClassOrMixinImplements(null, 0)
       handleClassHeader(class, class, null)
-      beginClassOrMixinBody(DeclarationKind.Class, {)
-      endClassOrMixinBody(DeclarationKind.Class, 0, {, })
+      beginClassOrMixinOrExtensionBody(DeclarationKind.Class, {)
+      endClassOrMixinOrExtensionBody(DeclarationKind.Class, 0, {, })
     endClassDeclaration(class, })
   endTopLevelDeclaration(class)
   beginMetadataStar(class)
   endMetadataStar(0)
-  beginClassOrNamedMixinApplicationPrelude(class)
+  beginClassOrMixinOrNamedMixinApplicationPrelude(class)
     handleRecoverableError(Message[ExpectedIdentifierButGotKeyword, 'void' can't be used as an identifier because it's a keyword., Try renaming this to be an identifier that isn't a keyword., {lexeme: void}], void, void)
     handleIdentifier(void, classOrMixinDeclaration)
     handleNoTypeVariables({)
@@ -1260,13 +1260,13 @@
       handleClassNoWithClause()
       handleClassOrMixinImplements(null, 0)
       handleClassHeader(class, class, null)
-      beginClassOrMixinBody(DeclarationKind.Class, {)
-      endClassOrMixinBody(DeclarationKind.Class, 0, {, })
+      beginClassOrMixinOrExtensionBody(DeclarationKind.Class, {)
+      endClassOrMixinOrExtensionBody(DeclarationKind.Class, 0, {, })
     endClassDeclaration(class, })
   endTopLevelDeclaration(class)
   beginMetadataStar(class)
   endMetadataStar(0)
-  beginClassOrNamedMixinApplicationPrelude(class)
+  beginClassOrMixinOrNamedMixinApplicationPrelude(class)
     handleRecoverableError(Message[ExpectedIdentifierButGotKeyword, 'while' can't be used as an identifier because it's a keyword., Try renaming this to be an identifier that isn't a keyword., {lexeme: while}], while, while)
     handleIdentifier(while, classOrMixinDeclaration)
     handleNoTypeVariables({)
@@ -1276,13 +1276,13 @@
       handleClassNoWithClause()
       handleClassOrMixinImplements(null, 0)
       handleClassHeader(class, class, null)
-      beginClassOrMixinBody(DeclarationKind.Class, {)
-      endClassOrMixinBody(DeclarationKind.Class, 0, {, })
+      beginClassOrMixinOrExtensionBody(DeclarationKind.Class, {)
+      endClassOrMixinOrExtensionBody(DeclarationKind.Class, 0, {, })
     endClassDeclaration(class, })
   endTopLevelDeclaration(class)
   beginMetadataStar(class)
   endMetadataStar(0)
-  beginClassOrNamedMixinApplicationPrelude(class)
+  beginClassOrMixinOrNamedMixinApplicationPrelude(class)
     handleRecoverableError(Message[ExpectedIdentifierButGotKeyword, 'with' can't be used as an identifier because it's a keyword., Try renaming this to be an identifier that isn't a keyword., {lexeme: with}], with, with)
     handleIdentifier(with, classOrMixinDeclaration)
     handleNoTypeVariables({)
@@ -1292,13 +1292,13 @@
       handleClassNoWithClause()
       handleClassOrMixinImplements(null, 0)
       handleClassHeader(class, class, null)
-      beginClassOrMixinBody(DeclarationKind.Class, {)
-      endClassOrMixinBody(DeclarationKind.Class, 0, {, })
+      beginClassOrMixinOrExtensionBody(DeclarationKind.Class, {)
+      endClassOrMixinOrExtensionBody(DeclarationKind.Class, 0, {, })
     endClassDeclaration(class, })
   endTopLevelDeclaration(class)
   beginMetadataStar(class)
   endMetadataStar(0)
-  beginClassOrNamedMixinApplicationPrelude(class)
+  beginClassOrMixinOrNamedMixinApplicationPrelude(class)
     handleIdentifier(yield, classOrMixinDeclaration)
     handleNoTypeVariables({)
     beginClassDeclaration(class, null, yield)
@@ -1307,8 +1307,8 @@
       handleClassNoWithClause()
       handleClassOrMixinImplements(null, 0)
       handleClassHeader(class, class, null)
-      beginClassOrMixinBody(DeclarationKind.Class, {)
-      endClassOrMixinBody(DeclarationKind.Class, 0, {, })
+      beginClassOrMixinOrExtensionBody(DeclarationKind.Class, {)
+      endClassOrMixinOrExtensionBody(DeclarationKind.Class, 0, {, })
     endClassDeclaration(class, })
   endTopLevelDeclaration()
 endCompilationUnit(69, )
diff --git a/pkg/front_end/parser_testcases/error_recovery/issue_46346.dart.intertwined.expect b/pkg/front_end/parser_testcases/error_recovery/issue_46346.dart.intertwined.expect
index 350e22e..395b3c1 100644
--- a/pkg/front_end/parser_testcases/error_recovery/issue_46346.dart.intertwined.expect
+++ b/pkg/front_end/parser_testcases/error_recovery/issue_46346.dart.intertwined.expect
@@ -9,7 +9,7 @@
     parseTopLevelKeywordDeclaration(, class, Instance of 'DirectiveContext')
       parseClassDeclarationModifiers(, class)
       parseClassOrNamedMixinApplication(null, class)
-        listener: beginClassOrNamedMixinApplicationPrelude(class)
+        listener: beginClassOrMixinOrNamedMixinApplicationPrelude(class)
         ensureIdentifier(class, classOrMixinDeclaration)
           reportRecoverableErrorWithToken(abstract, Instance of 'Template<(Token) => Message>')
             listener: handleRecoverableError(Message[BuiltInIdentifierInDeclaration, Can't use 'abstract' as a name here., null, {lexeme: abstract}], abstract, abstract)
@@ -27,9 +27,9 @@
               listener: handleClassOrMixinImplements(null, 0)
             listener: handleClassHeader(class, class, null)
           parseClassOrMixinOrExtensionBody(abstract, DeclarationKind.Class, abstract)
-            listener: beginClassOrMixinBody(DeclarationKind.Class, {)
+            listener: beginClassOrMixinOrExtensionBody(DeclarationKind.Class, {)
             notEofOrValue(}, })
-            listener: endClassOrMixinBody(DeclarationKind.Class, 0, {, })
+            listener: endClassOrMixinOrExtensionBody(DeclarationKind.Class, 0, {, })
           listener: endClassDeclaration(class, })
   listener: endTopLevelDeclaration(class)
   parseTopLevelDeclarationImpl(}, Instance of 'DirectiveContext')
@@ -39,7 +39,7 @@
     parseTopLevelKeywordDeclaration(}, class, Instance of 'DirectiveContext')
       parseClassDeclarationModifiers(}, class)
       parseClassOrNamedMixinApplication(null, class)
-        listener: beginClassOrNamedMixinApplicationPrelude(class)
+        listener: beginClassOrMixinOrNamedMixinApplicationPrelude(class)
         ensureIdentifier(class, classOrMixinDeclaration)
           reportRecoverableErrorWithToken(as, Instance of 'Template<(Token) => Message>')
             listener: handleRecoverableError(Message[BuiltInIdentifierInDeclaration, Can't use 'as' as a name here., null, {lexeme: as}], as, as)
@@ -57,9 +57,9 @@
               listener: handleClassOrMixinImplements(null, 0)
             listener: handleClassHeader(class, class, null)
           parseClassOrMixinOrExtensionBody(as, DeclarationKind.Class, as)
-            listener: beginClassOrMixinBody(DeclarationKind.Class, {)
+            listener: beginClassOrMixinOrExtensionBody(DeclarationKind.Class, {)
             notEofOrValue(}, })
-            listener: endClassOrMixinBody(DeclarationKind.Class, 0, {, })
+            listener: endClassOrMixinOrExtensionBody(DeclarationKind.Class, 0, {, })
           listener: endClassDeclaration(class, })
   listener: endTopLevelDeclaration(class)
   parseTopLevelDeclarationImpl(}, Instance of 'DirectiveContext')
@@ -69,7 +69,7 @@
     parseTopLevelKeywordDeclaration(}, class, Instance of 'DirectiveContext')
       parseClassDeclarationModifiers(}, class)
       parseClassOrNamedMixinApplication(null, class)
-        listener: beginClassOrNamedMixinApplicationPrelude(class)
+        listener: beginClassOrMixinOrNamedMixinApplicationPrelude(class)
         ensureIdentifier(class, classOrMixinDeclaration)
           reportRecoverableErrorWithToken(assert, Instance of 'Template<(Token) => Message>')
             listener: handleRecoverableError(Message[ExpectedIdentifierButGotKeyword, 'assert' can't be used as an identifier because it's a keyword., Try renaming this to be an identifier that isn't a keyword., {lexeme: assert}], assert, assert)
@@ -87,9 +87,9 @@
               listener: handleClassOrMixinImplements(null, 0)
             listener: handleClassHeader(class, class, null)
           parseClassOrMixinOrExtensionBody(assert, DeclarationKind.Class, assert)
-            listener: beginClassOrMixinBody(DeclarationKind.Class, {)
+            listener: beginClassOrMixinOrExtensionBody(DeclarationKind.Class, {)
             notEofOrValue(}, })
-            listener: endClassOrMixinBody(DeclarationKind.Class, 0, {, })
+            listener: endClassOrMixinOrExtensionBody(DeclarationKind.Class, 0, {, })
           listener: endClassDeclaration(class, })
   listener: endTopLevelDeclaration(class)
   parseTopLevelDeclarationImpl(}, Instance of 'DirectiveContext')
@@ -99,7 +99,7 @@
     parseTopLevelKeywordDeclaration(}, class, Instance of 'DirectiveContext')
       parseClassDeclarationModifiers(}, class)
       parseClassOrNamedMixinApplication(null, class)
-        listener: beginClassOrNamedMixinApplicationPrelude(class)
+        listener: beginClassOrMixinOrNamedMixinApplicationPrelude(class)
         ensureIdentifier(class, classOrMixinDeclaration)
           listener: handleIdentifier(async, classOrMixinDeclaration)
         listener: handleNoTypeVariables({)
@@ -115,9 +115,9 @@
               listener: handleClassOrMixinImplements(null, 0)
             listener: handleClassHeader(class, class, null)
           parseClassOrMixinOrExtensionBody(async, DeclarationKind.Class, async)
-            listener: beginClassOrMixinBody(DeclarationKind.Class, {)
+            listener: beginClassOrMixinOrExtensionBody(DeclarationKind.Class, {)
             notEofOrValue(}, })
-            listener: endClassOrMixinBody(DeclarationKind.Class, 0, {, })
+            listener: endClassOrMixinOrExtensionBody(DeclarationKind.Class, 0, {, })
           listener: endClassDeclaration(class, })
   listener: endTopLevelDeclaration(class)
   parseTopLevelDeclarationImpl(}, Instance of 'DirectiveContext')
@@ -127,7 +127,7 @@
     parseTopLevelKeywordDeclaration(}, class, Instance of 'DirectiveContext')
       parseClassDeclarationModifiers(}, class)
       parseClassOrNamedMixinApplication(null, class)
-        listener: beginClassOrNamedMixinApplicationPrelude(class)
+        listener: beginClassOrMixinOrNamedMixinApplicationPrelude(class)
         ensureIdentifier(class, classOrMixinDeclaration)
           listener: handleIdentifier(await, classOrMixinDeclaration)
         listener: handleNoTypeVariables({)
@@ -143,9 +143,9 @@
               listener: handleClassOrMixinImplements(null, 0)
             listener: handleClassHeader(class, class, null)
           parseClassOrMixinOrExtensionBody(await, DeclarationKind.Class, await)
-            listener: beginClassOrMixinBody(DeclarationKind.Class, {)
+            listener: beginClassOrMixinOrExtensionBody(DeclarationKind.Class, {)
             notEofOrValue(}, })
-            listener: endClassOrMixinBody(DeclarationKind.Class, 0, {, })
+            listener: endClassOrMixinOrExtensionBody(DeclarationKind.Class, 0, {, })
           listener: endClassDeclaration(class, })
   listener: endTopLevelDeclaration(class)
   parseTopLevelDeclarationImpl(}, Instance of 'DirectiveContext')
@@ -155,7 +155,7 @@
     parseTopLevelKeywordDeclaration(}, class, Instance of 'DirectiveContext')
       parseClassDeclarationModifiers(}, class)
       parseClassOrNamedMixinApplication(null, class)
-        listener: beginClassOrNamedMixinApplicationPrelude(class)
+        listener: beginClassOrMixinOrNamedMixinApplicationPrelude(class)
         ensureIdentifier(class, classOrMixinDeclaration)
           reportRecoverableErrorWithToken(break, Instance of 'Template<(Token) => Message>')
             listener: handleRecoverableError(Message[ExpectedIdentifierButGotKeyword, 'break' can't be used as an identifier because it's a keyword., Try renaming this to be an identifier that isn't a keyword., {lexeme: break}], break, break)
@@ -173,9 +173,9 @@
               listener: handleClassOrMixinImplements(null, 0)
             listener: handleClassHeader(class, class, null)
           parseClassOrMixinOrExtensionBody(break, DeclarationKind.Class, break)
-            listener: beginClassOrMixinBody(DeclarationKind.Class, {)
+            listener: beginClassOrMixinOrExtensionBody(DeclarationKind.Class, {)
             notEofOrValue(}, })
-            listener: endClassOrMixinBody(DeclarationKind.Class, 0, {, })
+            listener: endClassOrMixinOrExtensionBody(DeclarationKind.Class, 0, {, })
           listener: endClassDeclaration(class, })
   listener: endTopLevelDeclaration(class)
   parseTopLevelDeclarationImpl(}, Instance of 'DirectiveContext')
@@ -185,7 +185,7 @@
     parseTopLevelKeywordDeclaration(}, class, Instance of 'DirectiveContext')
       parseClassDeclarationModifiers(}, class)
       parseClassOrNamedMixinApplication(null, class)
-        listener: beginClassOrNamedMixinApplicationPrelude(class)
+        listener: beginClassOrMixinOrNamedMixinApplicationPrelude(class)
         ensureIdentifier(class, classOrMixinDeclaration)
           reportRecoverableErrorWithToken(case, Instance of 'Template<(Token) => Message>')
             listener: handleRecoverableError(Message[ExpectedIdentifierButGotKeyword, 'case' can't be used as an identifier because it's a keyword., Try renaming this to be an identifier that isn't a keyword., {lexeme: case}], case, case)
@@ -203,9 +203,9 @@
               listener: handleClassOrMixinImplements(null, 0)
             listener: handleClassHeader(class, class, null)
           parseClassOrMixinOrExtensionBody(case, DeclarationKind.Class, case)
-            listener: beginClassOrMixinBody(DeclarationKind.Class, {)
+            listener: beginClassOrMixinOrExtensionBody(DeclarationKind.Class, {)
             notEofOrValue(}, })
-            listener: endClassOrMixinBody(DeclarationKind.Class, 0, {, })
+            listener: endClassOrMixinOrExtensionBody(DeclarationKind.Class, 0, {, })
           listener: endClassDeclaration(class, })
   listener: endTopLevelDeclaration(class)
   parseTopLevelDeclarationImpl(}, Instance of 'DirectiveContext')
@@ -215,7 +215,7 @@
     parseTopLevelKeywordDeclaration(}, class, Instance of 'DirectiveContext')
       parseClassDeclarationModifiers(}, class)
       parseClassOrNamedMixinApplication(null, class)
-        listener: beginClassOrNamedMixinApplicationPrelude(class)
+        listener: beginClassOrMixinOrNamedMixinApplicationPrelude(class)
         ensureIdentifier(class, classOrMixinDeclaration)
           reportRecoverableErrorWithToken(catch, Instance of 'Template<(Token) => Message>')
             listener: handleRecoverableError(Message[ExpectedIdentifierButGotKeyword, 'catch' can't be used as an identifier because it's a keyword., Try renaming this to be an identifier that isn't a keyword., {lexeme: catch}], catch, catch)
@@ -233,9 +233,9 @@
               listener: handleClassOrMixinImplements(null, 0)
             listener: handleClassHeader(class, class, null)
           parseClassOrMixinOrExtensionBody(catch, DeclarationKind.Class, catch)
-            listener: beginClassOrMixinBody(DeclarationKind.Class, {)
+            listener: beginClassOrMixinOrExtensionBody(DeclarationKind.Class, {)
             notEofOrValue(}, })
-            listener: endClassOrMixinBody(DeclarationKind.Class, 0, {, })
+            listener: endClassOrMixinOrExtensionBody(DeclarationKind.Class, 0, {, })
           listener: endClassDeclaration(class, })
   listener: endTopLevelDeclaration(class)
   parseTopLevelDeclarationImpl(}, Instance of 'DirectiveContext')
@@ -245,7 +245,7 @@
     parseTopLevelKeywordDeclaration(}, class, Instance of 'DirectiveContext')
       parseClassDeclarationModifiers(}, class)
       parseClassOrNamedMixinApplication(null, class)
-        listener: beginClassOrNamedMixinApplicationPrelude(class)
+        listener: beginClassOrMixinOrNamedMixinApplicationPrelude(class)
         ensureIdentifier(class, classOrMixinDeclaration)
           reportRecoverableErrorWithToken(class, Instance of 'Template<(Token) => Message>')
             listener: handleRecoverableError(Message[ExpectedIdentifierButGotKeyword, 'class' can't be used as an identifier because it's a keyword., Try renaming this to be an identifier that isn't a keyword., {lexeme: class}], class, class)
@@ -263,9 +263,9 @@
               listener: handleClassOrMixinImplements(null, 0)
             listener: handleClassHeader(class, class, null)
           parseClassOrMixinOrExtensionBody(class, DeclarationKind.Class, class)
-            listener: beginClassOrMixinBody(DeclarationKind.Class, {)
+            listener: beginClassOrMixinOrExtensionBody(DeclarationKind.Class, {)
             notEofOrValue(}, })
-            listener: endClassOrMixinBody(DeclarationKind.Class, 0, {, })
+            listener: endClassOrMixinOrExtensionBody(DeclarationKind.Class, 0, {, })
           listener: endClassDeclaration(class, })
   listener: endTopLevelDeclaration(class)
   parseTopLevelDeclarationImpl(}, Instance of 'DirectiveContext')
@@ -275,7 +275,7 @@
     parseTopLevelKeywordDeclaration(}, class, Instance of 'DirectiveContext')
       parseClassDeclarationModifiers(}, class)
       parseClassOrNamedMixinApplication(null, class)
-        listener: beginClassOrNamedMixinApplicationPrelude(class)
+        listener: beginClassOrMixinOrNamedMixinApplicationPrelude(class)
         ensureIdentifier(class, classOrMixinDeclaration)
           reportRecoverableErrorWithToken(const, Instance of 'Template<(Token) => Message>')
             listener: handleRecoverableError(Message[ExpectedIdentifierButGotKeyword, 'const' can't be used as an identifier because it's a keyword., Try renaming this to be an identifier that isn't a keyword., {lexeme: const}], const, const)
@@ -293,9 +293,9 @@
               listener: handleClassOrMixinImplements(null, 0)
             listener: handleClassHeader(class, class, null)
           parseClassOrMixinOrExtensionBody(const, DeclarationKind.Class, const)
-            listener: beginClassOrMixinBody(DeclarationKind.Class, {)
+            listener: beginClassOrMixinOrExtensionBody(DeclarationKind.Class, {)
             notEofOrValue(}, })
-            listener: endClassOrMixinBody(DeclarationKind.Class, 0, {, })
+            listener: endClassOrMixinOrExtensionBody(DeclarationKind.Class, 0, {, })
           listener: endClassDeclaration(class, })
   listener: endTopLevelDeclaration(class)
   parseTopLevelDeclarationImpl(}, Instance of 'DirectiveContext')
@@ -305,7 +305,7 @@
     parseTopLevelKeywordDeclaration(}, class, Instance of 'DirectiveContext')
       parseClassDeclarationModifiers(}, class)
       parseClassOrNamedMixinApplication(null, class)
-        listener: beginClassOrNamedMixinApplicationPrelude(class)
+        listener: beginClassOrMixinOrNamedMixinApplicationPrelude(class)
         ensureIdentifier(class, classOrMixinDeclaration)
           reportRecoverableErrorWithToken(continue, Instance of 'Template<(Token) => Message>')
             listener: handleRecoverableError(Message[ExpectedIdentifierButGotKeyword, 'continue' can't be used as an identifier because it's a keyword., Try renaming this to be an identifier that isn't a keyword., {lexeme: continue}], continue, continue)
@@ -323,9 +323,9 @@
               listener: handleClassOrMixinImplements(null, 0)
             listener: handleClassHeader(class, class, null)
           parseClassOrMixinOrExtensionBody(continue, DeclarationKind.Class, continue)
-            listener: beginClassOrMixinBody(DeclarationKind.Class, {)
+            listener: beginClassOrMixinOrExtensionBody(DeclarationKind.Class, {)
             notEofOrValue(}, })
-            listener: endClassOrMixinBody(DeclarationKind.Class, 0, {, })
+            listener: endClassOrMixinOrExtensionBody(DeclarationKind.Class, 0, {, })
           listener: endClassDeclaration(class, })
   listener: endTopLevelDeclaration(class)
   parseTopLevelDeclarationImpl(}, Instance of 'DirectiveContext')
@@ -335,7 +335,7 @@
     parseTopLevelKeywordDeclaration(}, class, Instance of 'DirectiveContext')
       parseClassDeclarationModifiers(}, class)
       parseClassOrNamedMixinApplication(null, class)
-        listener: beginClassOrNamedMixinApplicationPrelude(class)
+        listener: beginClassOrMixinOrNamedMixinApplicationPrelude(class)
         ensureIdentifier(class, classOrMixinDeclaration)
           reportRecoverableErrorWithToken(covariant, Instance of 'Template<(Token) => Message>')
             listener: handleRecoverableError(Message[BuiltInIdentifierInDeclaration, Can't use 'covariant' as a name here., null, {lexeme: covariant}], covariant, covariant)
@@ -353,9 +353,9 @@
               listener: handleClassOrMixinImplements(null, 0)
             listener: handleClassHeader(class, class, null)
           parseClassOrMixinOrExtensionBody(covariant, DeclarationKind.Class, covariant)
-            listener: beginClassOrMixinBody(DeclarationKind.Class, {)
+            listener: beginClassOrMixinOrExtensionBody(DeclarationKind.Class, {)
             notEofOrValue(}, })
-            listener: endClassOrMixinBody(DeclarationKind.Class, 0, {, })
+            listener: endClassOrMixinOrExtensionBody(DeclarationKind.Class, 0, {, })
           listener: endClassDeclaration(class, })
   listener: endTopLevelDeclaration(class)
   parseTopLevelDeclarationImpl(}, Instance of 'DirectiveContext')
@@ -365,7 +365,7 @@
     parseTopLevelKeywordDeclaration(}, class, Instance of 'DirectiveContext')
       parseClassDeclarationModifiers(}, class)
       parseClassOrNamedMixinApplication(null, class)
-        listener: beginClassOrNamedMixinApplicationPrelude(class)
+        listener: beginClassOrMixinOrNamedMixinApplicationPrelude(class)
         ensureIdentifier(class, classOrMixinDeclaration)
           reportRecoverableErrorWithToken(default, Instance of 'Template<(Token) => Message>')
             listener: handleRecoverableError(Message[ExpectedIdentifierButGotKeyword, 'default' can't be used as an identifier because it's a keyword., Try renaming this to be an identifier that isn't a keyword., {lexeme: default}], default, default)
@@ -383,9 +383,9 @@
               listener: handleClassOrMixinImplements(null, 0)
             listener: handleClassHeader(class, class, null)
           parseClassOrMixinOrExtensionBody(default, DeclarationKind.Class, default)
-            listener: beginClassOrMixinBody(DeclarationKind.Class, {)
+            listener: beginClassOrMixinOrExtensionBody(DeclarationKind.Class, {)
             notEofOrValue(}, })
-            listener: endClassOrMixinBody(DeclarationKind.Class, 0, {, })
+            listener: endClassOrMixinOrExtensionBody(DeclarationKind.Class, 0, {, })
           listener: endClassDeclaration(class, })
   listener: endTopLevelDeclaration(class)
   parseTopLevelDeclarationImpl(}, Instance of 'DirectiveContext')
@@ -395,7 +395,7 @@
     parseTopLevelKeywordDeclaration(}, class, Instance of 'DirectiveContext')
       parseClassDeclarationModifiers(}, class)
       parseClassOrNamedMixinApplication(null, class)
-        listener: beginClassOrNamedMixinApplicationPrelude(class)
+        listener: beginClassOrMixinOrNamedMixinApplicationPrelude(class)
         ensureIdentifier(class, classOrMixinDeclaration)
           reportRecoverableErrorWithToken(deferred, Instance of 'Template<(Token) => Message>')
             listener: handleRecoverableError(Message[BuiltInIdentifierInDeclaration, Can't use 'deferred' as a name here., null, {lexeme: deferred}], deferred, deferred)
@@ -413,9 +413,9 @@
               listener: handleClassOrMixinImplements(null, 0)
             listener: handleClassHeader(class, class, null)
           parseClassOrMixinOrExtensionBody(deferred, DeclarationKind.Class, deferred)
-            listener: beginClassOrMixinBody(DeclarationKind.Class, {)
+            listener: beginClassOrMixinOrExtensionBody(DeclarationKind.Class, {)
             notEofOrValue(}, })
-            listener: endClassOrMixinBody(DeclarationKind.Class, 0, {, })
+            listener: endClassOrMixinOrExtensionBody(DeclarationKind.Class, 0, {, })
           listener: endClassDeclaration(class, })
   listener: endTopLevelDeclaration(class)
   parseTopLevelDeclarationImpl(}, Instance of 'DirectiveContext')
@@ -425,7 +425,7 @@
     parseTopLevelKeywordDeclaration(}, class, Instance of 'DirectiveContext')
       parseClassDeclarationModifiers(}, class)
       parseClassOrNamedMixinApplication(null, class)
-        listener: beginClassOrNamedMixinApplicationPrelude(class)
+        listener: beginClassOrMixinOrNamedMixinApplicationPrelude(class)
         ensureIdentifier(class, classOrMixinDeclaration)
           reportRecoverableErrorWithToken(do, Instance of 'Template<(Token) => Message>')
             listener: handleRecoverableError(Message[ExpectedIdentifierButGotKeyword, 'do' can't be used as an identifier because it's a keyword., Try renaming this to be an identifier that isn't a keyword., {lexeme: do}], do, do)
@@ -443,9 +443,9 @@
               listener: handleClassOrMixinImplements(null, 0)
             listener: handleClassHeader(class, class, null)
           parseClassOrMixinOrExtensionBody(do, DeclarationKind.Class, do)
-            listener: beginClassOrMixinBody(DeclarationKind.Class, {)
+            listener: beginClassOrMixinOrExtensionBody(DeclarationKind.Class, {)
             notEofOrValue(}, })
-            listener: endClassOrMixinBody(DeclarationKind.Class, 0, {, })
+            listener: endClassOrMixinOrExtensionBody(DeclarationKind.Class, 0, {, })
           listener: endClassDeclaration(class, })
   listener: endTopLevelDeclaration(class)
   parseTopLevelDeclarationImpl(}, Instance of 'DirectiveContext')
@@ -455,7 +455,7 @@
     parseTopLevelKeywordDeclaration(}, class, Instance of 'DirectiveContext')
       parseClassDeclarationModifiers(}, class)
       parseClassOrNamedMixinApplication(null, class)
-        listener: beginClassOrNamedMixinApplicationPrelude(class)
+        listener: beginClassOrMixinOrNamedMixinApplicationPrelude(class)
         ensureIdentifier(class, classOrMixinDeclaration)
           reportRecoverableErrorWithToken(dynamic, Instance of 'Template<(Token) => Message>')
             listener: handleRecoverableError(Message[BuiltInIdentifierInDeclaration, Can't use 'dynamic' as a name here., null, {lexeme: dynamic}], dynamic, dynamic)
@@ -473,9 +473,9 @@
               listener: handleClassOrMixinImplements(null, 0)
             listener: handleClassHeader(class, class, null)
           parseClassOrMixinOrExtensionBody(dynamic, DeclarationKind.Class, dynamic)
-            listener: beginClassOrMixinBody(DeclarationKind.Class, {)
+            listener: beginClassOrMixinOrExtensionBody(DeclarationKind.Class, {)
             notEofOrValue(}, })
-            listener: endClassOrMixinBody(DeclarationKind.Class, 0, {, })
+            listener: endClassOrMixinOrExtensionBody(DeclarationKind.Class, 0, {, })
           listener: endClassDeclaration(class, })
   listener: endTopLevelDeclaration(class)
   parseTopLevelDeclarationImpl(}, Instance of 'DirectiveContext')
@@ -485,7 +485,7 @@
     parseTopLevelKeywordDeclaration(}, class, Instance of 'DirectiveContext')
       parseClassDeclarationModifiers(}, class)
       parseClassOrNamedMixinApplication(null, class)
-        listener: beginClassOrNamedMixinApplicationPrelude(class)
+        listener: beginClassOrMixinOrNamedMixinApplicationPrelude(class)
         ensureIdentifier(class, classOrMixinDeclaration)
           reportRecoverableErrorWithToken(else, Instance of 'Template<(Token) => Message>')
             listener: handleRecoverableError(Message[ExpectedIdentifierButGotKeyword, 'else' can't be used as an identifier because it's a keyword., Try renaming this to be an identifier that isn't a keyword., {lexeme: else}], else, else)
@@ -503,9 +503,9 @@
               listener: handleClassOrMixinImplements(null, 0)
             listener: handleClassHeader(class, class, null)
           parseClassOrMixinOrExtensionBody(else, DeclarationKind.Class, else)
-            listener: beginClassOrMixinBody(DeclarationKind.Class, {)
+            listener: beginClassOrMixinOrExtensionBody(DeclarationKind.Class, {)
             notEofOrValue(}, })
-            listener: endClassOrMixinBody(DeclarationKind.Class, 0, {, })
+            listener: endClassOrMixinOrExtensionBody(DeclarationKind.Class, 0, {, })
           listener: endClassDeclaration(class, })
   listener: endTopLevelDeclaration(class)
   parseTopLevelDeclarationImpl(}, Instance of 'DirectiveContext')
@@ -515,7 +515,7 @@
     parseTopLevelKeywordDeclaration(}, class, Instance of 'DirectiveContext')
       parseClassDeclarationModifiers(}, class)
       parseClassOrNamedMixinApplication(null, class)
-        listener: beginClassOrNamedMixinApplicationPrelude(class)
+        listener: beginClassOrMixinOrNamedMixinApplicationPrelude(class)
         ensureIdentifier(class, classOrMixinDeclaration)
           reportRecoverableErrorWithToken(enum, Instance of 'Template<(Token) => Message>')
             listener: handleRecoverableError(Message[ExpectedIdentifierButGotKeyword, 'enum' can't be used as an identifier because it's a keyword., Try renaming this to be an identifier that isn't a keyword., {lexeme: enum}], enum, enum)
@@ -533,9 +533,9 @@
               listener: handleClassOrMixinImplements(null, 0)
             listener: handleClassHeader(class, class, null)
           parseClassOrMixinOrExtensionBody(enum, DeclarationKind.Class, enum)
-            listener: beginClassOrMixinBody(DeclarationKind.Class, {)
+            listener: beginClassOrMixinOrExtensionBody(DeclarationKind.Class, {)
             notEofOrValue(}, })
-            listener: endClassOrMixinBody(DeclarationKind.Class, 0, {, })
+            listener: endClassOrMixinOrExtensionBody(DeclarationKind.Class, 0, {, })
           listener: endClassDeclaration(class, })
   listener: endTopLevelDeclaration(class)
   parseTopLevelDeclarationImpl(}, Instance of 'DirectiveContext')
@@ -545,7 +545,7 @@
     parseTopLevelKeywordDeclaration(}, class, Instance of 'DirectiveContext')
       parseClassDeclarationModifiers(}, class)
       parseClassOrNamedMixinApplication(null, class)
-        listener: beginClassOrNamedMixinApplicationPrelude(class)
+        listener: beginClassOrMixinOrNamedMixinApplicationPrelude(class)
         ensureIdentifier(class, classOrMixinDeclaration)
           reportRecoverableErrorWithToken(export, Instance of 'Template<(Token) => Message>')
             listener: handleRecoverableError(Message[BuiltInIdentifierInDeclaration, Can't use 'export' as a name here., null, {lexeme: export}], export, export)
@@ -563,9 +563,9 @@
               listener: handleClassOrMixinImplements(null, 0)
             listener: handleClassHeader(class, class, null)
           parseClassOrMixinOrExtensionBody(export, DeclarationKind.Class, export)
-            listener: beginClassOrMixinBody(DeclarationKind.Class, {)
+            listener: beginClassOrMixinOrExtensionBody(DeclarationKind.Class, {)
             notEofOrValue(}, })
-            listener: endClassOrMixinBody(DeclarationKind.Class, 0, {, })
+            listener: endClassOrMixinOrExtensionBody(DeclarationKind.Class, 0, {, })
           listener: endClassDeclaration(class, })
   listener: endTopLevelDeclaration(class)
   parseTopLevelDeclarationImpl(}, Instance of 'DirectiveContext')
@@ -575,7 +575,7 @@
     parseTopLevelKeywordDeclaration(}, class, Instance of 'DirectiveContext')
       parseClassDeclarationModifiers(}, class)
       parseClassOrNamedMixinApplication(null, class)
-        listener: beginClassOrNamedMixinApplicationPrelude(class)
+        listener: beginClassOrMixinOrNamedMixinApplicationPrelude(class)
         ensureIdentifier(class, classOrMixinDeclaration)
           reportRecoverableErrorWithToken(extends, Instance of 'Template<(Token) => Message>')
             listener: handleRecoverableError(Message[ExpectedIdentifierButGotKeyword, 'extends' can't be used as an identifier because it's a keyword., Try renaming this to be an identifier that isn't a keyword., {lexeme: extends}], extends, extends)
@@ -593,9 +593,9 @@
               listener: handleClassOrMixinImplements(null, 0)
             listener: handleClassHeader(class, class, null)
           parseClassOrMixinOrExtensionBody(extends, DeclarationKind.Class, extends)
-            listener: beginClassOrMixinBody(DeclarationKind.Class, {)
+            listener: beginClassOrMixinOrExtensionBody(DeclarationKind.Class, {)
             notEofOrValue(}, })
-            listener: endClassOrMixinBody(DeclarationKind.Class, 0, {, })
+            listener: endClassOrMixinOrExtensionBody(DeclarationKind.Class, 0, {, })
           listener: endClassDeclaration(class, })
   listener: endTopLevelDeclaration(class)
   parseTopLevelDeclarationImpl(}, Instance of 'DirectiveContext')
@@ -605,7 +605,7 @@
     parseTopLevelKeywordDeclaration(}, class, Instance of 'DirectiveContext')
       parseClassDeclarationModifiers(}, class)
       parseClassOrNamedMixinApplication(null, class)
-        listener: beginClassOrNamedMixinApplicationPrelude(class)
+        listener: beginClassOrMixinOrNamedMixinApplicationPrelude(class)
         ensureIdentifier(class, classOrMixinDeclaration)
           reportRecoverableErrorWithToken(extension, Instance of 'Template<(Token) => Message>')
             listener: handleRecoverableError(Message[BuiltInIdentifierInDeclaration, Can't use 'extension' as a name here., null, {lexeme: extension}], extension, extension)
@@ -623,9 +623,9 @@
               listener: handleClassOrMixinImplements(null, 0)
             listener: handleClassHeader(class, class, null)
           parseClassOrMixinOrExtensionBody(extension, DeclarationKind.Class, extension)
-            listener: beginClassOrMixinBody(DeclarationKind.Class, {)
+            listener: beginClassOrMixinOrExtensionBody(DeclarationKind.Class, {)
             notEofOrValue(}, })
-            listener: endClassOrMixinBody(DeclarationKind.Class, 0, {, })
+            listener: endClassOrMixinOrExtensionBody(DeclarationKind.Class, 0, {, })
           listener: endClassDeclaration(class, })
   listener: endTopLevelDeclaration(class)
   parseTopLevelDeclarationImpl(}, Instance of 'DirectiveContext')
@@ -635,7 +635,7 @@
     parseTopLevelKeywordDeclaration(}, class, Instance of 'DirectiveContext')
       parseClassDeclarationModifiers(}, class)
       parseClassOrNamedMixinApplication(null, class)
-        listener: beginClassOrNamedMixinApplicationPrelude(class)
+        listener: beginClassOrMixinOrNamedMixinApplicationPrelude(class)
         ensureIdentifier(class, classOrMixinDeclaration)
           reportRecoverableErrorWithToken(external, Instance of 'Template<(Token) => Message>')
             listener: handleRecoverableError(Message[BuiltInIdentifierInDeclaration, Can't use 'external' as a name here., null, {lexeme: external}], external, external)
@@ -653,9 +653,9 @@
               listener: handleClassOrMixinImplements(null, 0)
             listener: handleClassHeader(class, class, null)
           parseClassOrMixinOrExtensionBody(external, DeclarationKind.Class, external)
-            listener: beginClassOrMixinBody(DeclarationKind.Class, {)
+            listener: beginClassOrMixinOrExtensionBody(DeclarationKind.Class, {)
             notEofOrValue(}, })
-            listener: endClassOrMixinBody(DeclarationKind.Class, 0, {, })
+            listener: endClassOrMixinOrExtensionBody(DeclarationKind.Class, 0, {, })
           listener: endClassDeclaration(class, })
   listener: endTopLevelDeclaration(class)
   parseTopLevelDeclarationImpl(}, Instance of 'DirectiveContext')
@@ -665,7 +665,7 @@
     parseTopLevelKeywordDeclaration(}, class, Instance of 'DirectiveContext')
       parseClassDeclarationModifiers(}, class)
       parseClassOrNamedMixinApplication(null, class)
-        listener: beginClassOrNamedMixinApplicationPrelude(class)
+        listener: beginClassOrMixinOrNamedMixinApplicationPrelude(class)
         ensureIdentifier(class, classOrMixinDeclaration)
           reportRecoverableErrorWithToken(factory, Instance of 'Template<(Token) => Message>')
             listener: handleRecoverableError(Message[BuiltInIdentifierInDeclaration, Can't use 'factory' as a name here., null, {lexeme: factory}], factory, factory)
@@ -683,9 +683,9 @@
               listener: handleClassOrMixinImplements(null, 0)
             listener: handleClassHeader(class, class, null)
           parseClassOrMixinOrExtensionBody(factory, DeclarationKind.Class, factory)
-            listener: beginClassOrMixinBody(DeclarationKind.Class, {)
+            listener: beginClassOrMixinOrExtensionBody(DeclarationKind.Class, {)
             notEofOrValue(}, })
-            listener: endClassOrMixinBody(DeclarationKind.Class, 0, {, })
+            listener: endClassOrMixinOrExtensionBody(DeclarationKind.Class, 0, {, })
           listener: endClassDeclaration(class, })
   listener: endTopLevelDeclaration(class)
   parseTopLevelDeclarationImpl(}, Instance of 'DirectiveContext')
@@ -695,7 +695,7 @@
     parseTopLevelKeywordDeclaration(}, class, Instance of 'DirectiveContext')
       parseClassDeclarationModifiers(}, class)
       parseClassOrNamedMixinApplication(null, class)
-        listener: beginClassOrNamedMixinApplicationPrelude(class)
+        listener: beginClassOrMixinOrNamedMixinApplicationPrelude(class)
         ensureIdentifier(class, classOrMixinDeclaration)
           reportRecoverableErrorWithToken(false, Instance of 'Template<(Token) => Message>')
             listener: handleRecoverableError(Message[ExpectedIdentifierButGotKeyword, 'false' can't be used as an identifier because it's a keyword., Try renaming this to be an identifier that isn't a keyword., {lexeme: false}], false, false)
@@ -713,9 +713,9 @@
               listener: handleClassOrMixinImplements(null, 0)
             listener: handleClassHeader(class, class, null)
           parseClassOrMixinOrExtensionBody(false, DeclarationKind.Class, false)
-            listener: beginClassOrMixinBody(DeclarationKind.Class, {)
+            listener: beginClassOrMixinOrExtensionBody(DeclarationKind.Class, {)
             notEofOrValue(}, })
-            listener: endClassOrMixinBody(DeclarationKind.Class, 0, {, })
+            listener: endClassOrMixinOrExtensionBody(DeclarationKind.Class, 0, {, })
           listener: endClassDeclaration(class, })
   listener: endTopLevelDeclaration(class)
   parseTopLevelDeclarationImpl(}, Instance of 'DirectiveContext')
@@ -725,7 +725,7 @@
     parseTopLevelKeywordDeclaration(}, class, Instance of 'DirectiveContext')
       parseClassDeclarationModifiers(}, class)
       parseClassOrNamedMixinApplication(null, class)
-        listener: beginClassOrNamedMixinApplicationPrelude(class)
+        listener: beginClassOrMixinOrNamedMixinApplicationPrelude(class)
         ensureIdentifier(class, classOrMixinDeclaration)
           reportRecoverableErrorWithToken(final, Instance of 'Template<(Token) => Message>')
             listener: handleRecoverableError(Message[ExpectedIdentifierButGotKeyword, 'final' can't be used as an identifier because it's a keyword., Try renaming this to be an identifier that isn't a keyword., {lexeme: final}], final, final)
@@ -743,9 +743,9 @@
               listener: handleClassOrMixinImplements(null, 0)
             listener: handleClassHeader(class, class, null)
           parseClassOrMixinOrExtensionBody(final, DeclarationKind.Class, final)
-            listener: beginClassOrMixinBody(DeclarationKind.Class, {)
+            listener: beginClassOrMixinOrExtensionBody(DeclarationKind.Class, {)
             notEofOrValue(}, })
-            listener: endClassOrMixinBody(DeclarationKind.Class, 0, {, })
+            listener: endClassOrMixinOrExtensionBody(DeclarationKind.Class, 0, {, })
           listener: endClassDeclaration(class, })
   listener: endTopLevelDeclaration(class)
   parseTopLevelDeclarationImpl(}, Instance of 'DirectiveContext')
@@ -755,7 +755,7 @@
     parseTopLevelKeywordDeclaration(}, class, Instance of 'DirectiveContext')
       parseClassDeclarationModifiers(}, class)
       parseClassOrNamedMixinApplication(null, class)
-        listener: beginClassOrNamedMixinApplicationPrelude(class)
+        listener: beginClassOrMixinOrNamedMixinApplicationPrelude(class)
         ensureIdentifier(class, classOrMixinDeclaration)
           reportRecoverableErrorWithToken(finally, Instance of 'Template<(Token) => Message>')
             listener: handleRecoverableError(Message[ExpectedIdentifierButGotKeyword, 'finally' can't be used as an identifier because it's a keyword., Try renaming this to be an identifier that isn't a keyword., {lexeme: finally}], finally, finally)
@@ -773,9 +773,9 @@
               listener: handleClassOrMixinImplements(null, 0)
             listener: handleClassHeader(class, class, null)
           parseClassOrMixinOrExtensionBody(finally, DeclarationKind.Class, finally)
-            listener: beginClassOrMixinBody(DeclarationKind.Class, {)
+            listener: beginClassOrMixinOrExtensionBody(DeclarationKind.Class, {)
             notEofOrValue(}, })
-            listener: endClassOrMixinBody(DeclarationKind.Class, 0, {, })
+            listener: endClassOrMixinOrExtensionBody(DeclarationKind.Class, 0, {, })
           listener: endClassDeclaration(class, })
   listener: endTopLevelDeclaration(class)
   parseTopLevelDeclarationImpl(}, Instance of 'DirectiveContext')
@@ -785,7 +785,7 @@
     parseTopLevelKeywordDeclaration(}, class, Instance of 'DirectiveContext')
       parseClassDeclarationModifiers(}, class)
       parseClassOrNamedMixinApplication(null, class)
-        listener: beginClassOrNamedMixinApplicationPrelude(class)
+        listener: beginClassOrMixinOrNamedMixinApplicationPrelude(class)
         ensureIdentifier(class, classOrMixinDeclaration)
           reportRecoverableErrorWithToken(for, Instance of 'Template<(Token) => Message>')
             listener: handleRecoverableError(Message[ExpectedIdentifierButGotKeyword, 'for' can't be used as an identifier because it's a keyword., Try renaming this to be an identifier that isn't a keyword., {lexeme: for}], for, for)
@@ -803,9 +803,9 @@
               listener: handleClassOrMixinImplements(null, 0)
             listener: handleClassHeader(class, class, null)
           parseClassOrMixinOrExtensionBody(for, DeclarationKind.Class, for)
-            listener: beginClassOrMixinBody(DeclarationKind.Class, {)
+            listener: beginClassOrMixinOrExtensionBody(DeclarationKind.Class, {)
             notEofOrValue(}, })
-            listener: endClassOrMixinBody(DeclarationKind.Class, 0, {, })
+            listener: endClassOrMixinOrExtensionBody(DeclarationKind.Class, 0, {, })
           listener: endClassDeclaration(class, })
   listener: endTopLevelDeclaration(class)
   parseTopLevelDeclarationImpl(}, Instance of 'DirectiveContext')
@@ -815,7 +815,7 @@
     parseTopLevelKeywordDeclaration(}, class, Instance of 'DirectiveContext')
       parseClassDeclarationModifiers(}, class)
       parseClassOrNamedMixinApplication(null, class)
-        listener: beginClassOrNamedMixinApplicationPrelude(class)
+        listener: beginClassOrMixinOrNamedMixinApplicationPrelude(class)
         ensureIdentifier(class, classOrMixinDeclaration)
           listener: handleIdentifier(Function, classOrMixinDeclaration)
         listener: handleNoTypeVariables({)
@@ -831,9 +831,9 @@
               listener: handleClassOrMixinImplements(null, 0)
             listener: handleClassHeader(class, class, null)
           parseClassOrMixinOrExtensionBody(Function, DeclarationKind.Class, Function)
-            listener: beginClassOrMixinBody(DeclarationKind.Class, {)
+            listener: beginClassOrMixinOrExtensionBody(DeclarationKind.Class, {)
             notEofOrValue(}, })
-            listener: endClassOrMixinBody(DeclarationKind.Class, 0, {, })
+            listener: endClassOrMixinOrExtensionBody(DeclarationKind.Class, 0, {, })
           listener: endClassDeclaration(class, })
   listener: endTopLevelDeclaration(class)
   parseTopLevelDeclarationImpl(}, Instance of 'DirectiveContext')
@@ -843,7 +843,7 @@
     parseTopLevelKeywordDeclaration(}, class, Instance of 'DirectiveContext')
       parseClassDeclarationModifiers(}, class)
       parseClassOrNamedMixinApplication(null, class)
-        listener: beginClassOrNamedMixinApplicationPrelude(class)
+        listener: beginClassOrMixinOrNamedMixinApplicationPrelude(class)
         ensureIdentifier(class, classOrMixinDeclaration)
           reportRecoverableErrorWithToken(get, Instance of 'Template<(Token) => Message>')
             listener: handleRecoverableError(Message[BuiltInIdentifierInDeclaration, Can't use 'get' as a name here., null, {lexeme: get}], get, get)
@@ -861,9 +861,9 @@
               listener: handleClassOrMixinImplements(null, 0)
             listener: handleClassHeader(class, class, null)
           parseClassOrMixinOrExtensionBody(get, DeclarationKind.Class, get)
-            listener: beginClassOrMixinBody(DeclarationKind.Class, {)
+            listener: beginClassOrMixinOrExtensionBody(DeclarationKind.Class, {)
             notEofOrValue(}, })
-            listener: endClassOrMixinBody(DeclarationKind.Class, 0, {, })
+            listener: endClassOrMixinOrExtensionBody(DeclarationKind.Class, 0, {, })
           listener: endClassDeclaration(class, })
   listener: endTopLevelDeclaration(class)
   parseTopLevelDeclarationImpl(}, Instance of 'DirectiveContext')
@@ -873,7 +873,7 @@
     parseTopLevelKeywordDeclaration(}, class, Instance of 'DirectiveContext')
       parseClassDeclarationModifiers(}, class)
       parseClassOrNamedMixinApplication(null, class)
-        listener: beginClassOrNamedMixinApplicationPrelude(class)
+        listener: beginClassOrMixinOrNamedMixinApplicationPrelude(class)
         ensureIdentifier(class, classOrMixinDeclaration)
           listener: handleIdentifier(hide, classOrMixinDeclaration)
         listener: handleNoTypeVariables({)
@@ -889,9 +889,9 @@
               listener: handleClassOrMixinImplements(null, 0)
             listener: handleClassHeader(class, class, null)
           parseClassOrMixinOrExtensionBody(hide, DeclarationKind.Class, hide)
-            listener: beginClassOrMixinBody(DeclarationKind.Class, {)
+            listener: beginClassOrMixinOrExtensionBody(DeclarationKind.Class, {)
             notEofOrValue(}, })
-            listener: endClassOrMixinBody(DeclarationKind.Class, 0, {, })
+            listener: endClassOrMixinOrExtensionBody(DeclarationKind.Class, 0, {, })
           listener: endClassDeclaration(class, })
   listener: endTopLevelDeclaration(class)
   parseTopLevelDeclarationImpl(}, Instance of 'DirectiveContext')
@@ -901,7 +901,7 @@
     parseTopLevelKeywordDeclaration(}, class, Instance of 'DirectiveContext')
       parseClassDeclarationModifiers(}, class)
       parseClassOrNamedMixinApplication(null, class)
-        listener: beginClassOrNamedMixinApplicationPrelude(class)
+        listener: beginClassOrMixinOrNamedMixinApplicationPrelude(class)
         ensureIdentifier(class, classOrMixinDeclaration)
           reportRecoverableErrorWithToken(if, Instance of 'Template<(Token) => Message>')
             listener: handleRecoverableError(Message[ExpectedIdentifierButGotKeyword, 'if' can't be used as an identifier because it's a keyword., Try renaming this to be an identifier that isn't a keyword., {lexeme: if}], if, if)
@@ -919,9 +919,9 @@
               listener: handleClassOrMixinImplements(null, 0)
             listener: handleClassHeader(class, class, null)
           parseClassOrMixinOrExtensionBody(if, DeclarationKind.Class, if)
-            listener: beginClassOrMixinBody(DeclarationKind.Class, {)
+            listener: beginClassOrMixinOrExtensionBody(DeclarationKind.Class, {)
             notEofOrValue(}, })
-            listener: endClassOrMixinBody(DeclarationKind.Class, 0, {, })
+            listener: endClassOrMixinOrExtensionBody(DeclarationKind.Class, 0, {, })
           listener: endClassDeclaration(class, })
   listener: endTopLevelDeclaration(class)
   parseTopLevelDeclarationImpl(}, Instance of 'DirectiveContext')
@@ -931,7 +931,7 @@
     parseTopLevelKeywordDeclaration(}, class, Instance of 'DirectiveContext')
       parseClassDeclarationModifiers(}, class)
       parseClassOrNamedMixinApplication(null, class)
-        listener: beginClassOrNamedMixinApplicationPrelude(class)
+        listener: beginClassOrMixinOrNamedMixinApplicationPrelude(class)
         ensureIdentifier(class, classOrMixinDeclaration)
           reportRecoverableErrorWithToken(implements, Instance of 'Template<(Token) => Message>')
             listener: handleRecoverableError(Message[BuiltInIdentifierInDeclaration, Can't use 'implements' as a name here., null, {lexeme: implements}], implements, implements)
@@ -949,9 +949,9 @@
               listener: handleClassOrMixinImplements(null, 0)
             listener: handleClassHeader(class, class, null)
           parseClassOrMixinOrExtensionBody(implements, DeclarationKind.Class, implements)
-            listener: beginClassOrMixinBody(DeclarationKind.Class, {)
+            listener: beginClassOrMixinOrExtensionBody(DeclarationKind.Class, {)
             notEofOrValue(}, })
-            listener: endClassOrMixinBody(DeclarationKind.Class, 0, {, })
+            listener: endClassOrMixinOrExtensionBody(DeclarationKind.Class, 0, {, })
           listener: endClassDeclaration(class, })
   listener: endTopLevelDeclaration(class)
   parseTopLevelDeclarationImpl(}, Instance of 'DirectiveContext')
@@ -961,7 +961,7 @@
     parseTopLevelKeywordDeclaration(}, class, Instance of 'DirectiveContext')
       parseClassDeclarationModifiers(}, class)
       parseClassOrNamedMixinApplication(null, class)
-        listener: beginClassOrNamedMixinApplicationPrelude(class)
+        listener: beginClassOrMixinOrNamedMixinApplicationPrelude(class)
         ensureIdentifier(class, classOrMixinDeclaration)
           reportRecoverableErrorWithToken(import, Instance of 'Template<(Token) => Message>')
             listener: handleRecoverableError(Message[BuiltInIdentifierInDeclaration, Can't use 'import' as a name here., null, {lexeme: import}], import, import)
@@ -979,9 +979,9 @@
               listener: handleClassOrMixinImplements(null, 0)
             listener: handleClassHeader(class, class, null)
           parseClassOrMixinOrExtensionBody(import, DeclarationKind.Class, import)
-            listener: beginClassOrMixinBody(DeclarationKind.Class, {)
+            listener: beginClassOrMixinOrExtensionBody(DeclarationKind.Class, {)
             notEofOrValue(}, })
-            listener: endClassOrMixinBody(DeclarationKind.Class, 0, {, })
+            listener: endClassOrMixinOrExtensionBody(DeclarationKind.Class, 0, {, })
           listener: endClassDeclaration(class, })
   listener: endTopLevelDeclaration(class)
   parseTopLevelDeclarationImpl(}, Instance of 'DirectiveContext')
@@ -991,7 +991,7 @@
     parseTopLevelKeywordDeclaration(}, class, Instance of 'DirectiveContext')
       parseClassDeclarationModifiers(}, class)
       parseClassOrNamedMixinApplication(null, class)
-        listener: beginClassOrNamedMixinApplicationPrelude(class)
+        listener: beginClassOrMixinOrNamedMixinApplicationPrelude(class)
         ensureIdentifier(class, classOrMixinDeclaration)
           reportRecoverableErrorWithToken(in, Instance of 'Template<(Token) => Message>')
             listener: handleRecoverableError(Message[ExpectedIdentifierButGotKeyword, 'in' can't be used as an identifier because it's a keyword., Try renaming this to be an identifier that isn't a keyword., {lexeme: in}], in, in)
@@ -1009,9 +1009,9 @@
               listener: handleClassOrMixinImplements(null, 0)
             listener: handleClassHeader(class, class, null)
           parseClassOrMixinOrExtensionBody(in, DeclarationKind.Class, in)
-            listener: beginClassOrMixinBody(DeclarationKind.Class, {)
+            listener: beginClassOrMixinOrExtensionBody(DeclarationKind.Class, {)
             notEofOrValue(}, })
-            listener: endClassOrMixinBody(DeclarationKind.Class, 0, {, })
+            listener: endClassOrMixinOrExtensionBody(DeclarationKind.Class, 0, {, })
           listener: endClassDeclaration(class, })
   listener: endTopLevelDeclaration(class)
   parseTopLevelDeclarationImpl(}, Instance of 'DirectiveContext')
@@ -1021,7 +1021,7 @@
     parseTopLevelKeywordDeclaration(}, class, Instance of 'DirectiveContext')
       parseClassDeclarationModifiers(}, class)
       parseClassOrNamedMixinApplication(null, class)
-        listener: beginClassOrNamedMixinApplicationPrelude(class)
+        listener: beginClassOrMixinOrNamedMixinApplicationPrelude(class)
         ensureIdentifier(class, classOrMixinDeclaration)
           listener: handleIdentifier(inout, classOrMixinDeclaration)
         listener: handleNoTypeVariables({)
@@ -1037,9 +1037,9 @@
               listener: handleClassOrMixinImplements(null, 0)
             listener: handleClassHeader(class, class, null)
           parseClassOrMixinOrExtensionBody(inout, DeclarationKind.Class, inout)
-            listener: beginClassOrMixinBody(DeclarationKind.Class, {)
+            listener: beginClassOrMixinOrExtensionBody(DeclarationKind.Class, {)
             notEofOrValue(}, })
-            listener: endClassOrMixinBody(DeclarationKind.Class, 0, {, })
+            listener: endClassOrMixinOrExtensionBody(DeclarationKind.Class, 0, {, })
           listener: endClassDeclaration(class, })
   listener: endTopLevelDeclaration(class)
   parseTopLevelDeclarationImpl(}, Instance of 'DirectiveContext')
@@ -1049,7 +1049,7 @@
     parseTopLevelKeywordDeclaration(}, class, Instance of 'DirectiveContext')
       parseClassDeclarationModifiers(}, class)
       parseClassOrNamedMixinApplication(null, class)
-        listener: beginClassOrNamedMixinApplicationPrelude(class)
+        listener: beginClassOrMixinOrNamedMixinApplicationPrelude(class)
         ensureIdentifier(class, classOrMixinDeclaration)
           reportRecoverableErrorWithToken(interface, Instance of 'Template<(Token) => Message>')
             listener: handleRecoverableError(Message[BuiltInIdentifierInDeclaration, Can't use 'interface' as a name here., null, {lexeme: interface}], interface, interface)
@@ -1067,9 +1067,9 @@
               listener: handleClassOrMixinImplements(null, 0)
             listener: handleClassHeader(class, class, null)
           parseClassOrMixinOrExtensionBody(interface, DeclarationKind.Class, interface)
-            listener: beginClassOrMixinBody(DeclarationKind.Class, {)
+            listener: beginClassOrMixinOrExtensionBody(DeclarationKind.Class, {)
             notEofOrValue(}, })
-            listener: endClassOrMixinBody(DeclarationKind.Class, 0, {, })
+            listener: endClassOrMixinOrExtensionBody(DeclarationKind.Class, 0, {, })
           listener: endClassDeclaration(class, })
   listener: endTopLevelDeclaration(class)
   parseTopLevelDeclarationImpl(}, Instance of 'DirectiveContext')
@@ -1079,7 +1079,7 @@
     parseTopLevelKeywordDeclaration(}, class, Instance of 'DirectiveContext')
       parseClassDeclarationModifiers(}, class)
       parseClassOrNamedMixinApplication(null, class)
-        listener: beginClassOrNamedMixinApplicationPrelude(class)
+        listener: beginClassOrMixinOrNamedMixinApplicationPrelude(class)
         ensureIdentifier(class, classOrMixinDeclaration)
           reportRecoverableErrorWithToken(is, Instance of 'Template<(Token) => Message>')
             listener: handleRecoverableError(Message[ExpectedIdentifierButGotKeyword, 'is' can't be used as an identifier because it's a keyword., Try renaming this to be an identifier that isn't a keyword., {lexeme: is}], is, is)
@@ -1097,9 +1097,9 @@
               listener: handleClassOrMixinImplements(null, 0)
             listener: handleClassHeader(class, class, null)
           parseClassOrMixinOrExtensionBody(is, DeclarationKind.Class, is)
-            listener: beginClassOrMixinBody(DeclarationKind.Class, {)
+            listener: beginClassOrMixinOrExtensionBody(DeclarationKind.Class, {)
             notEofOrValue(}, })
-            listener: endClassOrMixinBody(DeclarationKind.Class, 0, {, })
+            listener: endClassOrMixinOrExtensionBody(DeclarationKind.Class, 0, {, })
           listener: endClassDeclaration(class, })
   listener: endTopLevelDeclaration(class)
   parseTopLevelDeclarationImpl(}, Instance of 'DirectiveContext')
@@ -1109,7 +1109,7 @@
     parseTopLevelKeywordDeclaration(}, class, Instance of 'DirectiveContext')
       parseClassDeclarationModifiers(}, class)
       parseClassOrNamedMixinApplication(null, class)
-        listener: beginClassOrNamedMixinApplicationPrelude(class)
+        listener: beginClassOrMixinOrNamedMixinApplicationPrelude(class)
         ensureIdentifier(class, classOrMixinDeclaration)
           reportRecoverableErrorWithToken(late, Instance of 'Template<(Token) => Message>')
             listener: handleRecoverableError(Message[BuiltInIdentifierInDeclaration, Can't use 'late' as a name here., null, {lexeme: late}], late, late)
@@ -1127,9 +1127,9 @@
               listener: handleClassOrMixinImplements(null, 0)
             listener: handleClassHeader(class, class, null)
           parseClassOrMixinOrExtensionBody(late, DeclarationKind.Class, late)
-            listener: beginClassOrMixinBody(DeclarationKind.Class, {)
+            listener: beginClassOrMixinOrExtensionBody(DeclarationKind.Class, {)
             notEofOrValue(}, })
-            listener: endClassOrMixinBody(DeclarationKind.Class, 0, {, })
+            listener: endClassOrMixinOrExtensionBody(DeclarationKind.Class, 0, {, })
           listener: endClassDeclaration(class, })
   listener: endTopLevelDeclaration(class)
   parseTopLevelDeclarationImpl(}, Instance of 'DirectiveContext')
@@ -1139,7 +1139,7 @@
     parseTopLevelKeywordDeclaration(}, class, Instance of 'DirectiveContext')
       parseClassDeclarationModifiers(}, class)
       parseClassOrNamedMixinApplication(null, class)
-        listener: beginClassOrNamedMixinApplicationPrelude(class)
+        listener: beginClassOrMixinOrNamedMixinApplicationPrelude(class)
         ensureIdentifier(class, classOrMixinDeclaration)
           reportRecoverableErrorWithToken(library, Instance of 'Template<(Token) => Message>')
             listener: handleRecoverableError(Message[BuiltInIdentifierInDeclaration, Can't use 'library' as a name here., null, {lexeme: library}], library, library)
@@ -1157,9 +1157,9 @@
               listener: handleClassOrMixinImplements(null, 0)
             listener: handleClassHeader(class, class, null)
           parseClassOrMixinOrExtensionBody(library, DeclarationKind.Class, library)
-            listener: beginClassOrMixinBody(DeclarationKind.Class, {)
+            listener: beginClassOrMixinOrExtensionBody(DeclarationKind.Class, {)
             notEofOrValue(}, })
-            listener: endClassOrMixinBody(DeclarationKind.Class, 0, {, })
+            listener: endClassOrMixinOrExtensionBody(DeclarationKind.Class, 0, {, })
           listener: endClassDeclaration(class, })
   listener: endTopLevelDeclaration(class)
   parseTopLevelDeclarationImpl(}, Instance of 'DirectiveContext')
@@ -1169,7 +1169,7 @@
     parseTopLevelKeywordDeclaration(}, class, Instance of 'DirectiveContext')
       parseClassDeclarationModifiers(}, class)
       parseClassOrNamedMixinApplication(null, class)
-        listener: beginClassOrNamedMixinApplicationPrelude(class)
+        listener: beginClassOrMixinOrNamedMixinApplicationPrelude(class)
         ensureIdentifier(class, classOrMixinDeclaration)
           reportRecoverableErrorWithToken(mixin, Instance of 'Template<(Token) => Message>')
             listener: handleRecoverableError(Message[BuiltInIdentifierInDeclaration, Can't use 'mixin' as a name here., null, {lexeme: mixin}], mixin, mixin)
@@ -1187,9 +1187,9 @@
               listener: handleClassOrMixinImplements(null, 0)
             listener: handleClassHeader(class, class, null)
           parseClassOrMixinOrExtensionBody(mixin, DeclarationKind.Class, mixin)
-            listener: beginClassOrMixinBody(DeclarationKind.Class, {)
+            listener: beginClassOrMixinOrExtensionBody(DeclarationKind.Class, {)
             notEofOrValue(}, })
-            listener: endClassOrMixinBody(DeclarationKind.Class, 0, {, })
+            listener: endClassOrMixinOrExtensionBody(DeclarationKind.Class, 0, {, })
           listener: endClassDeclaration(class, })
   listener: endTopLevelDeclaration(class)
   parseTopLevelDeclarationImpl(}, Instance of 'DirectiveContext')
@@ -1199,7 +1199,7 @@
     parseTopLevelKeywordDeclaration(}, class, Instance of 'DirectiveContext')
       parseClassDeclarationModifiers(}, class)
       parseClassOrNamedMixinApplication(null, class)
-        listener: beginClassOrNamedMixinApplicationPrelude(class)
+        listener: beginClassOrMixinOrNamedMixinApplicationPrelude(class)
         ensureIdentifier(class, classOrMixinDeclaration)
           listener: handleIdentifier(native, classOrMixinDeclaration)
         listener: handleNoTypeVariables({)
@@ -1215,9 +1215,9 @@
               listener: handleClassOrMixinImplements(null, 0)
             listener: handleClassHeader(class, class, null)
           parseClassOrMixinOrExtensionBody(native, DeclarationKind.Class, native)
-            listener: beginClassOrMixinBody(DeclarationKind.Class, {)
+            listener: beginClassOrMixinOrExtensionBody(DeclarationKind.Class, {)
             notEofOrValue(}, })
-            listener: endClassOrMixinBody(DeclarationKind.Class, 0, {, })
+            listener: endClassOrMixinOrExtensionBody(DeclarationKind.Class, 0, {, })
           listener: endClassDeclaration(class, })
   listener: endTopLevelDeclaration(class)
   parseTopLevelDeclarationImpl(}, Instance of 'DirectiveContext')
@@ -1227,7 +1227,7 @@
     parseTopLevelKeywordDeclaration(}, class, Instance of 'DirectiveContext')
       parseClassDeclarationModifiers(}, class)
       parseClassOrNamedMixinApplication(null, class)
-        listener: beginClassOrNamedMixinApplicationPrelude(class)
+        listener: beginClassOrMixinOrNamedMixinApplicationPrelude(class)
         ensureIdentifier(class, classOrMixinDeclaration)
           reportRecoverableErrorWithToken(new, Instance of 'Template<(Token) => Message>')
             listener: handleRecoverableError(Message[ExpectedIdentifierButGotKeyword, 'new' can't be used as an identifier because it's a keyword., Try renaming this to be an identifier that isn't a keyword., {lexeme: new}], new, new)
@@ -1245,9 +1245,9 @@
               listener: handleClassOrMixinImplements(null, 0)
             listener: handleClassHeader(class, class, null)
           parseClassOrMixinOrExtensionBody(new, DeclarationKind.Class, new)
-            listener: beginClassOrMixinBody(DeclarationKind.Class, {)
+            listener: beginClassOrMixinOrExtensionBody(DeclarationKind.Class, {)
             notEofOrValue(}, })
-            listener: endClassOrMixinBody(DeclarationKind.Class, 0, {, })
+            listener: endClassOrMixinOrExtensionBody(DeclarationKind.Class, 0, {, })
           listener: endClassDeclaration(class, })
   listener: endTopLevelDeclaration(class)
   parseTopLevelDeclarationImpl(}, Instance of 'DirectiveContext')
@@ -1257,7 +1257,7 @@
     parseTopLevelKeywordDeclaration(}, class, Instance of 'DirectiveContext')
       parseClassDeclarationModifiers(}, class)
       parseClassOrNamedMixinApplication(null, class)
-        listener: beginClassOrNamedMixinApplicationPrelude(class)
+        listener: beginClassOrMixinOrNamedMixinApplicationPrelude(class)
         ensureIdentifier(class, classOrMixinDeclaration)
           reportRecoverableErrorWithToken(null, Instance of 'Template<(Token) => Message>')
             listener: handleRecoverableError(Message[ExpectedIdentifierButGotKeyword, 'null' can't be used as an identifier because it's a keyword., Try renaming this to be an identifier that isn't a keyword., {lexeme: null}], null, null)
@@ -1275,9 +1275,9 @@
               listener: handleClassOrMixinImplements(null, 0)
             listener: handleClassHeader(class, class, null)
           parseClassOrMixinOrExtensionBody(null, DeclarationKind.Class, null)
-            listener: beginClassOrMixinBody(DeclarationKind.Class, {)
+            listener: beginClassOrMixinOrExtensionBody(DeclarationKind.Class, {)
             notEofOrValue(}, })
-            listener: endClassOrMixinBody(DeclarationKind.Class, 0, {, })
+            listener: endClassOrMixinOrExtensionBody(DeclarationKind.Class, 0, {, })
           listener: endClassDeclaration(class, })
   listener: endTopLevelDeclaration(class)
   parseTopLevelDeclarationImpl(}, Instance of 'DirectiveContext')
@@ -1287,7 +1287,7 @@
     parseTopLevelKeywordDeclaration(}, class, Instance of 'DirectiveContext')
       parseClassDeclarationModifiers(}, class)
       parseClassOrNamedMixinApplication(null, class)
-        listener: beginClassOrNamedMixinApplicationPrelude(class)
+        listener: beginClassOrMixinOrNamedMixinApplicationPrelude(class)
         ensureIdentifier(class, classOrMixinDeclaration)
           listener: handleIdentifier(of, classOrMixinDeclaration)
         listener: handleNoTypeVariables({)
@@ -1303,9 +1303,9 @@
               listener: handleClassOrMixinImplements(null, 0)
             listener: handleClassHeader(class, class, null)
           parseClassOrMixinOrExtensionBody(of, DeclarationKind.Class, of)
-            listener: beginClassOrMixinBody(DeclarationKind.Class, {)
+            listener: beginClassOrMixinOrExtensionBody(DeclarationKind.Class, {)
             notEofOrValue(}, })
-            listener: endClassOrMixinBody(DeclarationKind.Class, 0, {, })
+            listener: endClassOrMixinOrExtensionBody(DeclarationKind.Class, 0, {, })
           listener: endClassDeclaration(class, })
   listener: endTopLevelDeclaration(class)
   parseTopLevelDeclarationImpl(}, Instance of 'DirectiveContext')
@@ -1315,7 +1315,7 @@
     parseTopLevelKeywordDeclaration(}, class, Instance of 'DirectiveContext')
       parseClassDeclarationModifiers(}, class)
       parseClassOrNamedMixinApplication(null, class)
-        listener: beginClassOrNamedMixinApplicationPrelude(class)
+        listener: beginClassOrMixinOrNamedMixinApplicationPrelude(class)
         ensureIdentifier(class, classOrMixinDeclaration)
           listener: handleIdentifier(on, classOrMixinDeclaration)
         listener: handleNoTypeVariables({)
@@ -1331,9 +1331,9 @@
               listener: handleClassOrMixinImplements(null, 0)
             listener: handleClassHeader(class, class, null)
           parseClassOrMixinOrExtensionBody(on, DeclarationKind.Class, on)
-            listener: beginClassOrMixinBody(DeclarationKind.Class, {)
+            listener: beginClassOrMixinOrExtensionBody(DeclarationKind.Class, {)
             notEofOrValue(}, })
-            listener: endClassOrMixinBody(DeclarationKind.Class, 0, {, })
+            listener: endClassOrMixinOrExtensionBody(DeclarationKind.Class, 0, {, })
           listener: endClassDeclaration(class, })
   listener: endTopLevelDeclaration(class)
   parseTopLevelDeclarationImpl(}, Instance of 'DirectiveContext')
@@ -1343,7 +1343,7 @@
     parseTopLevelKeywordDeclaration(}, class, Instance of 'DirectiveContext')
       parseClassDeclarationModifiers(}, class)
       parseClassOrNamedMixinApplication(null, class)
-        listener: beginClassOrNamedMixinApplicationPrelude(class)
+        listener: beginClassOrMixinOrNamedMixinApplicationPrelude(class)
         ensureIdentifier(class, classOrMixinDeclaration)
           reportRecoverableErrorWithToken(operator, Instance of 'Template<(Token) => Message>')
             listener: handleRecoverableError(Message[BuiltInIdentifierInDeclaration, Can't use 'operator' as a name here., null, {lexeme: operator}], operator, operator)
@@ -1361,9 +1361,9 @@
               listener: handleClassOrMixinImplements(null, 0)
             listener: handleClassHeader(class, class, null)
           parseClassOrMixinOrExtensionBody(operator, DeclarationKind.Class, operator)
-            listener: beginClassOrMixinBody(DeclarationKind.Class, {)
+            listener: beginClassOrMixinOrExtensionBody(DeclarationKind.Class, {)
             notEofOrValue(}, })
-            listener: endClassOrMixinBody(DeclarationKind.Class, 0, {, })
+            listener: endClassOrMixinOrExtensionBody(DeclarationKind.Class, 0, {, })
           listener: endClassDeclaration(class, })
   listener: endTopLevelDeclaration(class)
   parseTopLevelDeclarationImpl(}, Instance of 'DirectiveContext')
@@ -1373,7 +1373,7 @@
     parseTopLevelKeywordDeclaration(}, class, Instance of 'DirectiveContext')
       parseClassDeclarationModifiers(}, class)
       parseClassOrNamedMixinApplication(null, class)
-        listener: beginClassOrNamedMixinApplicationPrelude(class)
+        listener: beginClassOrMixinOrNamedMixinApplicationPrelude(class)
         ensureIdentifier(class, classOrMixinDeclaration)
           listener: handleIdentifier(out, classOrMixinDeclaration)
         listener: handleNoTypeVariables({)
@@ -1389,9 +1389,9 @@
               listener: handleClassOrMixinImplements(null, 0)
             listener: handleClassHeader(class, class, null)
           parseClassOrMixinOrExtensionBody(out, DeclarationKind.Class, out)
-            listener: beginClassOrMixinBody(DeclarationKind.Class, {)
+            listener: beginClassOrMixinOrExtensionBody(DeclarationKind.Class, {)
             notEofOrValue(}, })
-            listener: endClassOrMixinBody(DeclarationKind.Class, 0, {, })
+            listener: endClassOrMixinOrExtensionBody(DeclarationKind.Class, 0, {, })
           listener: endClassDeclaration(class, })
   listener: endTopLevelDeclaration(class)
   parseTopLevelDeclarationImpl(}, Instance of 'DirectiveContext')
@@ -1401,7 +1401,7 @@
     parseTopLevelKeywordDeclaration(}, class, Instance of 'DirectiveContext')
       parseClassDeclarationModifiers(}, class)
       parseClassOrNamedMixinApplication(null, class)
-        listener: beginClassOrNamedMixinApplicationPrelude(class)
+        listener: beginClassOrMixinOrNamedMixinApplicationPrelude(class)
         ensureIdentifier(class, classOrMixinDeclaration)
           reportRecoverableErrorWithToken(part, Instance of 'Template<(Token) => Message>')
             listener: handleRecoverableError(Message[BuiltInIdentifierInDeclaration, Can't use 'part' as a name here., null, {lexeme: part}], part, part)
@@ -1419,9 +1419,9 @@
               listener: handleClassOrMixinImplements(null, 0)
             listener: handleClassHeader(class, class, null)
           parseClassOrMixinOrExtensionBody(part, DeclarationKind.Class, part)
-            listener: beginClassOrMixinBody(DeclarationKind.Class, {)
+            listener: beginClassOrMixinOrExtensionBody(DeclarationKind.Class, {)
             notEofOrValue(}, })
-            listener: endClassOrMixinBody(DeclarationKind.Class, 0, {, })
+            listener: endClassOrMixinOrExtensionBody(DeclarationKind.Class, 0, {, })
           listener: endClassDeclaration(class, })
   listener: endTopLevelDeclaration(class)
   parseTopLevelDeclarationImpl(}, Instance of 'DirectiveContext')
@@ -1431,7 +1431,7 @@
     parseTopLevelKeywordDeclaration(}, class, Instance of 'DirectiveContext')
       parseClassDeclarationModifiers(}, class)
       parseClassOrNamedMixinApplication(null, class)
-        listener: beginClassOrNamedMixinApplicationPrelude(class)
+        listener: beginClassOrMixinOrNamedMixinApplicationPrelude(class)
         ensureIdentifier(class, classOrMixinDeclaration)
           listener: handleIdentifier(patch, classOrMixinDeclaration)
         listener: handleNoTypeVariables({)
@@ -1447,9 +1447,9 @@
               listener: handleClassOrMixinImplements(null, 0)
             listener: handleClassHeader(class, class, null)
           parseClassOrMixinOrExtensionBody(patch, DeclarationKind.Class, patch)
-            listener: beginClassOrMixinBody(DeclarationKind.Class, {)
+            listener: beginClassOrMixinOrExtensionBody(DeclarationKind.Class, {)
             notEofOrValue(}, })
-            listener: endClassOrMixinBody(DeclarationKind.Class, 0, {, })
+            listener: endClassOrMixinOrExtensionBody(DeclarationKind.Class, 0, {, })
           listener: endClassDeclaration(class, })
   listener: endTopLevelDeclaration(class)
   parseTopLevelDeclarationImpl(}, Instance of 'DirectiveContext')
@@ -1459,7 +1459,7 @@
     parseTopLevelKeywordDeclaration(}, class, Instance of 'DirectiveContext')
       parseClassDeclarationModifiers(}, class)
       parseClassOrNamedMixinApplication(null, class)
-        listener: beginClassOrNamedMixinApplicationPrelude(class)
+        listener: beginClassOrMixinOrNamedMixinApplicationPrelude(class)
         ensureIdentifier(class, classOrMixinDeclaration)
           reportRecoverableErrorWithToken(required, Instance of 'Template<(Token) => Message>')
             listener: handleRecoverableError(Message[BuiltInIdentifierInDeclaration, Can't use 'required' as a name here., null, {lexeme: required}], required, required)
@@ -1477,9 +1477,9 @@
               listener: handleClassOrMixinImplements(null, 0)
             listener: handleClassHeader(class, class, null)
           parseClassOrMixinOrExtensionBody(required, DeclarationKind.Class, required)
-            listener: beginClassOrMixinBody(DeclarationKind.Class, {)
+            listener: beginClassOrMixinOrExtensionBody(DeclarationKind.Class, {)
             notEofOrValue(}, })
-            listener: endClassOrMixinBody(DeclarationKind.Class, 0, {, })
+            listener: endClassOrMixinOrExtensionBody(DeclarationKind.Class, 0, {, })
           listener: endClassDeclaration(class, })
   listener: endTopLevelDeclaration(class)
   parseTopLevelDeclarationImpl(}, Instance of 'DirectiveContext')
@@ -1489,7 +1489,7 @@
     parseTopLevelKeywordDeclaration(}, class, Instance of 'DirectiveContext')
       parseClassDeclarationModifiers(}, class)
       parseClassOrNamedMixinApplication(null, class)
-        listener: beginClassOrNamedMixinApplicationPrelude(class)
+        listener: beginClassOrMixinOrNamedMixinApplicationPrelude(class)
         ensureIdentifier(class, classOrMixinDeclaration)
           reportRecoverableErrorWithToken(rethrow, Instance of 'Template<(Token) => Message>')
             listener: handleRecoverableError(Message[ExpectedIdentifierButGotKeyword, 'rethrow' can't be used as an identifier because it's a keyword., Try renaming this to be an identifier that isn't a keyword., {lexeme: rethrow}], rethrow, rethrow)
@@ -1507,9 +1507,9 @@
               listener: handleClassOrMixinImplements(null, 0)
             listener: handleClassHeader(class, class, null)
           parseClassOrMixinOrExtensionBody(rethrow, DeclarationKind.Class, rethrow)
-            listener: beginClassOrMixinBody(DeclarationKind.Class, {)
+            listener: beginClassOrMixinOrExtensionBody(DeclarationKind.Class, {)
             notEofOrValue(}, })
-            listener: endClassOrMixinBody(DeclarationKind.Class, 0, {, })
+            listener: endClassOrMixinOrExtensionBody(DeclarationKind.Class, 0, {, })
           listener: endClassDeclaration(class, })
   listener: endTopLevelDeclaration(class)
   parseTopLevelDeclarationImpl(}, Instance of 'DirectiveContext')
@@ -1519,7 +1519,7 @@
     parseTopLevelKeywordDeclaration(}, class, Instance of 'DirectiveContext')
       parseClassDeclarationModifiers(}, class)
       parseClassOrNamedMixinApplication(null, class)
-        listener: beginClassOrNamedMixinApplicationPrelude(class)
+        listener: beginClassOrMixinOrNamedMixinApplicationPrelude(class)
         ensureIdentifier(class, classOrMixinDeclaration)
           reportRecoverableErrorWithToken(return, Instance of 'Template<(Token) => Message>')
             listener: handleRecoverableError(Message[ExpectedIdentifierButGotKeyword, 'return' can't be used as an identifier because it's a keyword., Try renaming this to be an identifier that isn't a keyword., {lexeme: return}], return, return)
@@ -1537,9 +1537,9 @@
               listener: handleClassOrMixinImplements(null, 0)
             listener: handleClassHeader(class, class, null)
           parseClassOrMixinOrExtensionBody(return, DeclarationKind.Class, return)
-            listener: beginClassOrMixinBody(DeclarationKind.Class, {)
+            listener: beginClassOrMixinOrExtensionBody(DeclarationKind.Class, {)
             notEofOrValue(}, })
-            listener: endClassOrMixinBody(DeclarationKind.Class, 0, {, })
+            listener: endClassOrMixinOrExtensionBody(DeclarationKind.Class, 0, {, })
           listener: endClassDeclaration(class, })
   listener: endTopLevelDeclaration(class)
   parseTopLevelDeclarationImpl(}, Instance of 'DirectiveContext')
@@ -1549,7 +1549,7 @@
     parseTopLevelKeywordDeclaration(}, class, Instance of 'DirectiveContext')
       parseClassDeclarationModifiers(}, class)
       parseClassOrNamedMixinApplication(null, class)
-        listener: beginClassOrNamedMixinApplicationPrelude(class)
+        listener: beginClassOrMixinOrNamedMixinApplicationPrelude(class)
         ensureIdentifier(class, classOrMixinDeclaration)
           reportRecoverableErrorWithToken(set, Instance of 'Template<(Token) => Message>')
             listener: handleRecoverableError(Message[BuiltInIdentifierInDeclaration, Can't use 'set' as a name here., null, {lexeme: set}], set, set)
@@ -1567,9 +1567,9 @@
               listener: handleClassOrMixinImplements(null, 0)
             listener: handleClassHeader(class, class, null)
           parseClassOrMixinOrExtensionBody(set, DeclarationKind.Class, set)
-            listener: beginClassOrMixinBody(DeclarationKind.Class, {)
+            listener: beginClassOrMixinOrExtensionBody(DeclarationKind.Class, {)
             notEofOrValue(}, })
-            listener: endClassOrMixinBody(DeclarationKind.Class, 0, {, })
+            listener: endClassOrMixinOrExtensionBody(DeclarationKind.Class, 0, {, })
           listener: endClassDeclaration(class, })
   listener: endTopLevelDeclaration(class)
   parseTopLevelDeclarationImpl(}, Instance of 'DirectiveContext')
@@ -1579,7 +1579,7 @@
     parseTopLevelKeywordDeclaration(}, class, Instance of 'DirectiveContext')
       parseClassDeclarationModifiers(}, class)
       parseClassOrNamedMixinApplication(null, class)
-        listener: beginClassOrNamedMixinApplicationPrelude(class)
+        listener: beginClassOrMixinOrNamedMixinApplicationPrelude(class)
         ensureIdentifier(class, classOrMixinDeclaration)
           listener: handleIdentifier(show, classOrMixinDeclaration)
         listener: handleNoTypeVariables({)
@@ -1595,9 +1595,9 @@
               listener: handleClassOrMixinImplements(null, 0)
             listener: handleClassHeader(class, class, null)
           parseClassOrMixinOrExtensionBody(show, DeclarationKind.Class, show)
-            listener: beginClassOrMixinBody(DeclarationKind.Class, {)
+            listener: beginClassOrMixinOrExtensionBody(DeclarationKind.Class, {)
             notEofOrValue(}, })
-            listener: endClassOrMixinBody(DeclarationKind.Class, 0, {, })
+            listener: endClassOrMixinOrExtensionBody(DeclarationKind.Class, 0, {, })
           listener: endClassDeclaration(class, })
   listener: endTopLevelDeclaration(class)
   parseTopLevelDeclarationImpl(}, Instance of 'DirectiveContext')
@@ -1607,7 +1607,7 @@
     parseTopLevelKeywordDeclaration(}, class, Instance of 'DirectiveContext')
       parseClassDeclarationModifiers(}, class)
       parseClassOrNamedMixinApplication(null, class)
-        listener: beginClassOrNamedMixinApplicationPrelude(class)
+        listener: beginClassOrMixinOrNamedMixinApplicationPrelude(class)
         ensureIdentifier(class, classOrMixinDeclaration)
           listener: handleIdentifier(source, classOrMixinDeclaration)
         listener: handleNoTypeVariables({)
@@ -1623,9 +1623,9 @@
               listener: handleClassOrMixinImplements(null, 0)
             listener: handleClassHeader(class, class, null)
           parseClassOrMixinOrExtensionBody(source, DeclarationKind.Class, source)
-            listener: beginClassOrMixinBody(DeclarationKind.Class, {)
+            listener: beginClassOrMixinOrExtensionBody(DeclarationKind.Class, {)
             notEofOrValue(}, })
-            listener: endClassOrMixinBody(DeclarationKind.Class, 0, {, })
+            listener: endClassOrMixinOrExtensionBody(DeclarationKind.Class, 0, {, })
           listener: endClassDeclaration(class, })
   listener: endTopLevelDeclaration(class)
   parseTopLevelDeclarationImpl(}, Instance of 'DirectiveContext')
@@ -1635,7 +1635,7 @@
     parseTopLevelKeywordDeclaration(}, class, Instance of 'DirectiveContext')
       parseClassDeclarationModifiers(}, class)
       parseClassOrNamedMixinApplication(null, class)
-        listener: beginClassOrNamedMixinApplicationPrelude(class)
+        listener: beginClassOrMixinOrNamedMixinApplicationPrelude(class)
         ensureIdentifier(class, classOrMixinDeclaration)
           reportRecoverableErrorWithToken(static, Instance of 'Template<(Token) => Message>')
             listener: handleRecoverableError(Message[BuiltInIdentifierInDeclaration, Can't use 'static' as a name here., null, {lexeme: static}], static, static)
@@ -1653,9 +1653,9 @@
               listener: handleClassOrMixinImplements(null, 0)
             listener: handleClassHeader(class, class, null)
           parseClassOrMixinOrExtensionBody(static, DeclarationKind.Class, static)
-            listener: beginClassOrMixinBody(DeclarationKind.Class, {)
+            listener: beginClassOrMixinOrExtensionBody(DeclarationKind.Class, {)
             notEofOrValue(}, })
-            listener: endClassOrMixinBody(DeclarationKind.Class, 0, {, })
+            listener: endClassOrMixinOrExtensionBody(DeclarationKind.Class, 0, {, })
           listener: endClassDeclaration(class, })
   listener: endTopLevelDeclaration(class)
   parseTopLevelDeclarationImpl(}, Instance of 'DirectiveContext')
@@ -1665,7 +1665,7 @@
     parseTopLevelKeywordDeclaration(}, class, Instance of 'DirectiveContext')
       parseClassDeclarationModifiers(}, class)
       parseClassOrNamedMixinApplication(null, class)
-        listener: beginClassOrNamedMixinApplicationPrelude(class)
+        listener: beginClassOrMixinOrNamedMixinApplicationPrelude(class)
         ensureIdentifier(class, classOrMixinDeclaration)
           reportRecoverableErrorWithToken(super, Instance of 'Template<(Token) => Message>')
             listener: handleRecoverableError(Message[ExpectedIdentifierButGotKeyword, 'super' can't be used as an identifier because it's a keyword., Try renaming this to be an identifier that isn't a keyword., {lexeme: super}], super, super)
@@ -1683,9 +1683,9 @@
               listener: handleClassOrMixinImplements(null, 0)
             listener: handleClassHeader(class, class, null)
           parseClassOrMixinOrExtensionBody(super, DeclarationKind.Class, super)
-            listener: beginClassOrMixinBody(DeclarationKind.Class, {)
+            listener: beginClassOrMixinOrExtensionBody(DeclarationKind.Class, {)
             notEofOrValue(}, })
-            listener: endClassOrMixinBody(DeclarationKind.Class, 0, {, })
+            listener: endClassOrMixinOrExtensionBody(DeclarationKind.Class, 0, {, })
           listener: endClassDeclaration(class, })
   listener: endTopLevelDeclaration(class)
   parseTopLevelDeclarationImpl(}, Instance of 'DirectiveContext')
@@ -1695,7 +1695,7 @@
     parseTopLevelKeywordDeclaration(}, class, Instance of 'DirectiveContext')
       parseClassDeclarationModifiers(}, class)
       parseClassOrNamedMixinApplication(null, class)
-        listener: beginClassOrNamedMixinApplicationPrelude(class)
+        listener: beginClassOrMixinOrNamedMixinApplicationPrelude(class)
         ensureIdentifier(class, classOrMixinDeclaration)
           reportRecoverableErrorWithToken(switch, Instance of 'Template<(Token) => Message>')
             listener: handleRecoverableError(Message[ExpectedIdentifierButGotKeyword, 'switch' can't be used as an identifier because it's a keyword., Try renaming this to be an identifier that isn't a keyword., {lexeme: switch}], switch, switch)
@@ -1713,9 +1713,9 @@
               listener: handleClassOrMixinImplements(null, 0)
             listener: handleClassHeader(class, class, null)
           parseClassOrMixinOrExtensionBody(switch, DeclarationKind.Class, switch)
-            listener: beginClassOrMixinBody(DeclarationKind.Class, {)
+            listener: beginClassOrMixinOrExtensionBody(DeclarationKind.Class, {)
             notEofOrValue(}, })
-            listener: endClassOrMixinBody(DeclarationKind.Class, 0, {, })
+            listener: endClassOrMixinOrExtensionBody(DeclarationKind.Class, 0, {, })
           listener: endClassDeclaration(class, })
   listener: endTopLevelDeclaration(class)
   parseTopLevelDeclarationImpl(}, Instance of 'DirectiveContext')
@@ -1725,7 +1725,7 @@
     parseTopLevelKeywordDeclaration(}, class, Instance of 'DirectiveContext')
       parseClassDeclarationModifiers(}, class)
       parseClassOrNamedMixinApplication(null, class)
-        listener: beginClassOrNamedMixinApplicationPrelude(class)
+        listener: beginClassOrMixinOrNamedMixinApplicationPrelude(class)
         ensureIdentifier(class, classOrMixinDeclaration)
           listener: handleIdentifier(sync, classOrMixinDeclaration)
         listener: handleNoTypeVariables({)
@@ -1741,9 +1741,9 @@
               listener: handleClassOrMixinImplements(null, 0)
             listener: handleClassHeader(class, class, null)
           parseClassOrMixinOrExtensionBody(sync, DeclarationKind.Class, sync)
-            listener: beginClassOrMixinBody(DeclarationKind.Class, {)
+            listener: beginClassOrMixinOrExtensionBody(DeclarationKind.Class, {)
             notEofOrValue(}, })
-            listener: endClassOrMixinBody(DeclarationKind.Class, 0, {, })
+            listener: endClassOrMixinOrExtensionBody(DeclarationKind.Class, 0, {, })
           listener: endClassDeclaration(class, })
   listener: endTopLevelDeclaration(class)
   parseTopLevelDeclarationImpl(}, Instance of 'DirectiveContext')
@@ -1753,7 +1753,7 @@
     parseTopLevelKeywordDeclaration(}, class, Instance of 'DirectiveContext')
       parseClassDeclarationModifiers(}, class)
       parseClassOrNamedMixinApplication(null, class)
-        listener: beginClassOrNamedMixinApplicationPrelude(class)
+        listener: beginClassOrMixinOrNamedMixinApplicationPrelude(class)
         ensureIdentifier(class, classOrMixinDeclaration)
           reportRecoverableErrorWithToken(this, Instance of 'Template<(Token) => Message>')
             listener: handleRecoverableError(Message[ExpectedIdentifierButGotKeyword, 'this' can't be used as an identifier because it's a keyword., Try renaming this to be an identifier that isn't a keyword., {lexeme: this}], this, this)
@@ -1771,9 +1771,9 @@
               listener: handleClassOrMixinImplements(null, 0)
             listener: handleClassHeader(class, class, null)
           parseClassOrMixinOrExtensionBody(this, DeclarationKind.Class, this)
-            listener: beginClassOrMixinBody(DeclarationKind.Class, {)
+            listener: beginClassOrMixinOrExtensionBody(DeclarationKind.Class, {)
             notEofOrValue(}, })
-            listener: endClassOrMixinBody(DeclarationKind.Class, 0, {, })
+            listener: endClassOrMixinOrExtensionBody(DeclarationKind.Class, 0, {, })
           listener: endClassDeclaration(class, })
   listener: endTopLevelDeclaration(class)
   parseTopLevelDeclarationImpl(}, Instance of 'DirectiveContext')
@@ -1783,7 +1783,7 @@
     parseTopLevelKeywordDeclaration(}, class, Instance of 'DirectiveContext')
       parseClassDeclarationModifiers(}, class)
       parseClassOrNamedMixinApplication(null, class)
-        listener: beginClassOrNamedMixinApplicationPrelude(class)
+        listener: beginClassOrMixinOrNamedMixinApplicationPrelude(class)
         ensureIdentifier(class, classOrMixinDeclaration)
           reportRecoverableErrorWithToken(throw, Instance of 'Template<(Token) => Message>')
             listener: handleRecoverableError(Message[ExpectedIdentifierButGotKeyword, 'throw' can't be used as an identifier because it's a keyword., Try renaming this to be an identifier that isn't a keyword., {lexeme: throw}], throw, throw)
@@ -1801,9 +1801,9 @@
               listener: handleClassOrMixinImplements(null, 0)
             listener: handleClassHeader(class, class, null)
           parseClassOrMixinOrExtensionBody(throw, DeclarationKind.Class, throw)
-            listener: beginClassOrMixinBody(DeclarationKind.Class, {)
+            listener: beginClassOrMixinOrExtensionBody(DeclarationKind.Class, {)
             notEofOrValue(}, })
-            listener: endClassOrMixinBody(DeclarationKind.Class, 0, {, })
+            listener: endClassOrMixinOrExtensionBody(DeclarationKind.Class, 0, {, })
           listener: endClassDeclaration(class, })
   listener: endTopLevelDeclaration(class)
   parseTopLevelDeclarationImpl(}, Instance of 'DirectiveContext')
@@ -1813,7 +1813,7 @@
     parseTopLevelKeywordDeclaration(}, class, Instance of 'DirectiveContext')
       parseClassDeclarationModifiers(}, class)
       parseClassOrNamedMixinApplication(null, class)
-        listener: beginClassOrNamedMixinApplicationPrelude(class)
+        listener: beginClassOrMixinOrNamedMixinApplicationPrelude(class)
         ensureIdentifier(class, classOrMixinDeclaration)
           reportRecoverableErrorWithToken(true, Instance of 'Template<(Token) => Message>')
             listener: handleRecoverableError(Message[ExpectedIdentifierButGotKeyword, 'true' can't be used as an identifier because it's a keyword., Try renaming this to be an identifier that isn't a keyword., {lexeme: true}], true, true)
@@ -1831,9 +1831,9 @@
               listener: handleClassOrMixinImplements(null, 0)
             listener: handleClassHeader(class, class, null)
           parseClassOrMixinOrExtensionBody(true, DeclarationKind.Class, true)
-            listener: beginClassOrMixinBody(DeclarationKind.Class, {)
+            listener: beginClassOrMixinOrExtensionBody(DeclarationKind.Class, {)
             notEofOrValue(}, })
-            listener: endClassOrMixinBody(DeclarationKind.Class, 0, {, })
+            listener: endClassOrMixinOrExtensionBody(DeclarationKind.Class, 0, {, })
           listener: endClassDeclaration(class, })
   listener: endTopLevelDeclaration(class)
   parseTopLevelDeclarationImpl(}, Instance of 'DirectiveContext')
@@ -1843,7 +1843,7 @@
     parseTopLevelKeywordDeclaration(}, class, Instance of 'DirectiveContext')
       parseClassDeclarationModifiers(}, class)
       parseClassOrNamedMixinApplication(null, class)
-        listener: beginClassOrNamedMixinApplicationPrelude(class)
+        listener: beginClassOrMixinOrNamedMixinApplicationPrelude(class)
         ensureIdentifier(class, classOrMixinDeclaration)
           reportRecoverableErrorWithToken(try, Instance of 'Template<(Token) => Message>')
             listener: handleRecoverableError(Message[ExpectedIdentifierButGotKeyword, 'try' can't be used as an identifier because it's a keyword., Try renaming this to be an identifier that isn't a keyword., {lexeme: try}], try, try)
@@ -1861,9 +1861,9 @@
               listener: handleClassOrMixinImplements(null, 0)
             listener: handleClassHeader(class, class, null)
           parseClassOrMixinOrExtensionBody(try, DeclarationKind.Class, try)
-            listener: beginClassOrMixinBody(DeclarationKind.Class, {)
+            listener: beginClassOrMixinOrExtensionBody(DeclarationKind.Class, {)
             notEofOrValue(}, })
-            listener: endClassOrMixinBody(DeclarationKind.Class, 0, {, })
+            listener: endClassOrMixinOrExtensionBody(DeclarationKind.Class, 0, {, })
           listener: endClassDeclaration(class, })
   listener: endTopLevelDeclaration(class)
   parseTopLevelDeclarationImpl(}, Instance of 'DirectiveContext')
@@ -1873,7 +1873,7 @@
     parseTopLevelKeywordDeclaration(}, class, Instance of 'DirectiveContext')
       parseClassDeclarationModifiers(}, class)
       parseClassOrNamedMixinApplication(null, class)
-        listener: beginClassOrNamedMixinApplicationPrelude(class)
+        listener: beginClassOrMixinOrNamedMixinApplicationPrelude(class)
         ensureIdentifier(class, classOrMixinDeclaration)
           reportRecoverableErrorWithToken(typedef, Instance of 'Template<(Token) => Message>')
             listener: handleRecoverableError(Message[BuiltInIdentifierInDeclaration, Can't use 'typedef' as a name here., null, {lexeme: typedef}], typedef, typedef)
@@ -1891,9 +1891,9 @@
               listener: handleClassOrMixinImplements(null, 0)
             listener: handleClassHeader(class, class, null)
           parseClassOrMixinOrExtensionBody(typedef, DeclarationKind.Class, typedef)
-            listener: beginClassOrMixinBody(DeclarationKind.Class, {)
+            listener: beginClassOrMixinOrExtensionBody(DeclarationKind.Class, {)
             notEofOrValue(}, })
-            listener: endClassOrMixinBody(DeclarationKind.Class, 0, {, })
+            listener: endClassOrMixinOrExtensionBody(DeclarationKind.Class, 0, {, })
           listener: endClassDeclaration(class, })
   listener: endTopLevelDeclaration(class)
   parseTopLevelDeclarationImpl(}, Instance of 'DirectiveContext')
@@ -1903,7 +1903,7 @@
     parseTopLevelKeywordDeclaration(}, class, Instance of 'DirectiveContext')
       parseClassDeclarationModifiers(}, class)
       parseClassOrNamedMixinApplication(null, class)
-        listener: beginClassOrNamedMixinApplicationPrelude(class)
+        listener: beginClassOrMixinOrNamedMixinApplicationPrelude(class)
         ensureIdentifier(class, classOrMixinDeclaration)
           reportRecoverableErrorWithToken(var, Instance of 'Template<(Token) => Message>')
             listener: handleRecoverableError(Message[ExpectedIdentifierButGotKeyword, 'var' can't be used as an identifier because it's a keyword., Try renaming this to be an identifier that isn't a keyword., {lexeme: var}], var, var)
@@ -1921,9 +1921,9 @@
               listener: handleClassOrMixinImplements(null, 0)
             listener: handleClassHeader(class, class, null)
           parseClassOrMixinOrExtensionBody(var, DeclarationKind.Class, var)
-            listener: beginClassOrMixinBody(DeclarationKind.Class, {)
+            listener: beginClassOrMixinOrExtensionBody(DeclarationKind.Class, {)
             notEofOrValue(}, })
-            listener: endClassOrMixinBody(DeclarationKind.Class, 0, {, })
+            listener: endClassOrMixinOrExtensionBody(DeclarationKind.Class, 0, {, })
           listener: endClassDeclaration(class, })
   listener: endTopLevelDeclaration(class)
   parseTopLevelDeclarationImpl(}, Instance of 'DirectiveContext')
@@ -1933,7 +1933,7 @@
     parseTopLevelKeywordDeclaration(}, class, Instance of 'DirectiveContext')
       parseClassDeclarationModifiers(}, class)
       parseClassOrNamedMixinApplication(null, class)
-        listener: beginClassOrNamedMixinApplicationPrelude(class)
+        listener: beginClassOrMixinOrNamedMixinApplicationPrelude(class)
         ensureIdentifier(class, classOrMixinDeclaration)
           reportRecoverableErrorWithToken(void, Instance of 'Template<(Token) => Message>')
             listener: handleRecoverableError(Message[ExpectedIdentifierButGotKeyword, 'void' can't be used as an identifier because it's a keyword., Try renaming this to be an identifier that isn't a keyword., {lexeme: void}], void, void)
@@ -1951,9 +1951,9 @@
               listener: handleClassOrMixinImplements(null, 0)
             listener: handleClassHeader(class, class, null)
           parseClassOrMixinOrExtensionBody(void, DeclarationKind.Class, void)
-            listener: beginClassOrMixinBody(DeclarationKind.Class, {)
+            listener: beginClassOrMixinOrExtensionBody(DeclarationKind.Class, {)
             notEofOrValue(}, })
-            listener: endClassOrMixinBody(DeclarationKind.Class, 0, {, })
+            listener: endClassOrMixinOrExtensionBody(DeclarationKind.Class, 0, {, })
           listener: endClassDeclaration(class, })
   listener: endTopLevelDeclaration(class)
   parseTopLevelDeclarationImpl(}, Instance of 'DirectiveContext')
@@ -1963,7 +1963,7 @@
     parseTopLevelKeywordDeclaration(}, class, Instance of 'DirectiveContext')
       parseClassDeclarationModifiers(}, class)
       parseClassOrNamedMixinApplication(null, class)
-        listener: beginClassOrNamedMixinApplicationPrelude(class)
+        listener: beginClassOrMixinOrNamedMixinApplicationPrelude(class)
         ensureIdentifier(class, classOrMixinDeclaration)
           reportRecoverableErrorWithToken(while, Instance of 'Template<(Token) => Message>')
             listener: handleRecoverableError(Message[ExpectedIdentifierButGotKeyword, 'while' can't be used as an identifier because it's a keyword., Try renaming this to be an identifier that isn't a keyword., {lexeme: while}], while, while)
@@ -1981,9 +1981,9 @@
               listener: handleClassOrMixinImplements(null, 0)
             listener: handleClassHeader(class, class, null)
           parseClassOrMixinOrExtensionBody(while, DeclarationKind.Class, while)
-            listener: beginClassOrMixinBody(DeclarationKind.Class, {)
+            listener: beginClassOrMixinOrExtensionBody(DeclarationKind.Class, {)
             notEofOrValue(}, })
-            listener: endClassOrMixinBody(DeclarationKind.Class, 0, {, })
+            listener: endClassOrMixinOrExtensionBody(DeclarationKind.Class, 0, {, })
           listener: endClassDeclaration(class, })
   listener: endTopLevelDeclaration(class)
   parseTopLevelDeclarationImpl(}, Instance of 'DirectiveContext')
@@ -1993,7 +1993,7 @@
     parseTopLevelKeywordDeclaration(}, class, Instance of 'DirectiveContext')
       parseClassDeclarationModifiers(}, class)
       parseClassOrNamedMixinApplication(null, class)
-        listener: beginClassOrNamedMixinApplicationPrelude(class)
+        listener: beginClassOrMixinOrNamedMixinApplicationPrelude(class)
         ensureIdentifier(class, classOrMixinDeclaration)
           reportRecoverableErrorWithToken(with, Instance of 'Template<(Token) => Message>')
             listener: handleRecoverableError(Message[ExpectedIdentifierButGotKeyword, 'with' can't be used as an identifier because it's a keyword., Try renaming this to be an identifier that isn't a keyword., {lexeme: with}], with, with)
@@ -2011,9 +2011,9 @@
               listener: handleClassOrMixinImplements(null, 0)
             listener: handleClassHeader(class, class, null)
           parseClassOrMixinOrExtensionBody(with, DeclarationKind.Class, with)
-            listener: beginClassOrMixinBody(DeclarationKind.Class, {)
+            listener: beginClassOrMixinOrExtensionBody(DeclarationKind.Class, {)
             notEofOrValue(}, })
-            listener: endClassOrMixinBody(DeclarationKind.Class, 0, {, })
+            listener: endClassOrMixinOrExtensionBody(DeclarationKind.Class, 0, {, })
           listener: endClassDeclaration(class, })
   listener: endTopLevelDeclaration(class)
   parseTopLevelDeclarationImpl(}, Instance of 'DirectiveContext')
@@ -2023,7 +2023,7 @@
     parseTopLevelKeywordDeclaration(}, class, Instance of 'DirectiveContext')
       parseClassDeclarationModifiers(}, class)
       parseClassOrNamedMixinApplication(null, class)
-        listener: beginClassOrNamedMixinApplicationPrelude(class)
+        listener: beginClassOrMixinOrNamedMixinApplicationPrelude(class)
         ensureIdentifier(class, classOrMixinDeclaration)
           listener: handleIdentifier(yield, classOrMixinDeclaration)
         listener: handleNoTypeVariables({)
@@ -2039,9 +2039,9 @@
               listener: handleClassOrMixinImplements(null, 0)
             listener: handleClassHeader(class, class, null)
           parseClassOrMixinOrExtensionBody(yield, DeclarationKind.Class, yield)
-            listener: beginClassOrMixinBody(DeclarationKind.Class, {)
+            listener: beginClassOrMixinOrExtensionBody(DeclarationKind.Class, {)
             notEofOrValue(}, })
-            listener: endClassOrMixinBody(DeclarationKind.Class, 0, {, })
+            listener: endClassOrMixinOrExtensionBody(DeclarationKind.Class, 0, {, })
           listener: endClassDeclaration(class, })
   listener: endTopLevelDeclaration()
   reportAllErrorTokens(class)
diff --git a/pkg/front_end/parser_testcases/error_recovery/issue_46346_prime_1.dart.expect b/pkg/front_end/parser_testcases/error_recovery/issue_46346_prime_1.dart.expect
index caa8b1a..ddf5505 100644
--- a/pkg/front_end/parser_testcases/error_recovery/issue_46346_prime_1.dart.expect
+++ b/pkg/front_end/parser_testcases/error_recovery/issue_46346_prime_1.dart.expect
@@ -223,7 +223,7 @@
 beginCompilationUnit(class)
   beginMetadataStar(class)
   endMetadataStar(0)
-  beginClassOrNamedMixinApplicationPrelude(class)
+  beginClassOrMixinOrNamedMixinApplicationPrelude(class)
     handleRecoverableError(Message[BuiltInIdentifierInDeclaration, Can't use 'abstract' as a name here., null, {lexeme: abstract}], abstract, abstract)
     handleIdentifier(abstract, classOrMixinDeclaration)
     handleNoTypeVariables(=)
@@ -241,7 +241,7 @@
   endTopLevelDeclaration(class)
   beginMetadataStar(class)
   endMetadataStar(0)
-  beginClassOrNamedMixinApplicationPrelude(class)
+  beginClassOrMixinOrNamedMixinApplicationPrelude(class)
     handleRecoverableError(Message[BuiltInIdentifierInDeclaration, Can't use 'as' as a name here., null, {lexeme: as}], as, as)
     handleIdentifier(as, classOrMixinDeclaration)
     handleNoTypeVariables(=)
@@ -259,7 +259,7 @@
   endTopLevelDeclaration(class)
   beginMetadataStar(class)
   endMetadataStar(0)
-  beginClassOrNamedMixinApplicationPrelude(class)
+  beginClassOrMixinOrNamedMixinApplicationPrelude(class)
     handleRecoverableError(Message[ExpectedIdentifierButGotKeyword, 'assert' can't be used as an identifier because it's a keyword., Try renaming this to be an identifier that isn't a keyword., {lexeme: assert}], assert, assert)
     handleIdentifier(assert, classOrMixinDeclaration)
     handleNoTypeVariables(=)
@@ -277,7 +277,7 @@
   endTopLevelDeclaration(class)
   beginMetadataStar(class)
   endMetadataStar(0)
-  beginClassOrNamedMixinApplicationPrelude(class)
+  beginClassOrMixinOrNamedMixinApplicationPrelude(class)
     handleIdentifier(async, classOrMixinDeclaration)
     handleNoTypeVariables(=)
     beginNamedMixinApplication(class, null, async)
@@ -294,7 +294,7 @@
   endTopLevelDeclaration(class)
   beginMetadataStar(class)
   endMetadataStar(0)
-  beginClassOrNamedMixinApplicationPrelude(class)
+  beginClassOrMixinOrNamedMixinApplicationPrelude(class)
     handleIdentifier(await, classOrMixinDeclaration)
     handleNoTypeVariables(=)
     beginNamedMixinApplication(class, null, await)
@@ -311,7 +311,7 @@
   endTopLevelDeclaration(class)
   beginMetadataStar(class)
   endMetadataStar(0)
-  beginClassOrNamedMixinApplicationPrelude(class)
+  beginClassOrMixinOrNamedMixinApplicationPrelude(class)
     handleRecoverableError(Message[ExpectedIdentifierButGotKeyword, 'break' can't be used as an identifier because it's a keyword., Try renaming this to be an identifier that isn't a keyword., {lexeme: break}], break, break)
     handleIdentifier(break, classOrMixinDeclaration)
     handleNoTypeVariables(=)
@@ -329,7 +329,7 @@
   endTopLevelDeclaration(class)
   beginMetadataStar(class)
   endMetadataStar(0)
-  beginClassOrNamedMixinApplicationPrelude(class)
+  beginClassOrMixinOrNamedMixinApplicationPrelude(class)
     handleRecoverableError(Message[ExpectedIdentifierButGotKeyword, 'case' can't be used as an identifier because it's a keyword., Try renaming this to be an identifier that isn't a keyword., {lexeme: case}], case, case)
     handleIdentifier(case, classOrMixinDeclaration)
     handleNoTypeVariables(=)
@@ -347,7 +347,7 @@
   endTopLevelDeclaration(class)
   beginMetadataStar(class)
   endMetadataStar(0)
-  beginClassOrNamedMixinApplicationPrelude(class)
+  beginClassOrMixinOrNamedMixinApplicationPrelude(class)
     handleRecoverableError(Message[ExpectedIdentifierButGotKeyword, 'catch' can't be used as an identifier because it's a keyword., Try renaming this to be an identifier that isn't a keyword., {lexeme: catch}], catch, catch)
     handleIdentifier(catch, classOrMixinDeclaration)
     handleNoTypeVariables(=)
@@ -365,7 +365,7 @@
   endTopLevelDeclaration(class)
   beginMetadataStar(class)
   endMetadataStar(0)
-  beginClassOrNamedMixinApplicationPrelude(class)
+  beginClassOrMixinOrNamedMixinApplicationPrelude(class)
     handleRecoverableError(Message[ExpectedIdentifierButGotKeyword, 'class' can't be used as an identifier because it's a keyword., Try renaming this to be an identifier that isn't a keyword., {lexeme: class}], class, class)
     handleIdentifier(class, classOrMixinDeclaration)
     handleNoTypeVariables(=)
@@ -383,7 +383,7 @@
   endTopLevelDeclaration(class)
   beginMetadataStar(class)
   endMetadataStar(0)
-  beginClassOrNamedMixinApplicationPrelude(class)
+  beginClassOrMixinOrNamedMixinApplicationPrelude(class)
     handleRecoverableError(Message[ExpectedIdentifierButGotKeyword, 'const' can't be used as an identifier because it's a keyword., Try renaming this to be an identifier that isn't a keyword., {lexeme: const}], const, const)
     handleIdentifier(const, classOrMixinDeclaration)
     handleNoTypeVariables(=)
@@ -401,7 +401,7 @@
   endTopLevelDeclaration(class)
   beginMetadataStar(class)
   endMetadataStar(0)
-  beginClassOrNamedMixinApplicationPrelude(class)
+  beginClassOrMixinOrNamedMixinApplicationPrelude(class)
     handleRecoverableError(Message[ExpectedIdentifierButGotKeyword, 'continue' can't be used as an identifier because it's a keyword., Try renaming this to be an identifier that isn't a keyword., {lexeme: continue}], continue, continue)
     handleIdentifier(continue, classOrMixinDeclaration)
     handleNoTypeVariables(=)
@@ -419,7 +419,7 @@
   endTopLevelDeclaration(class)
   beginMetadataStar(class)
   endMetadataStar(0)
-  beginClassOrNamedMixinApplicationPrelude(class)
+  beginClassOrMixinOrNamedMixinApplicationPrelude(class)
     handleRecoverableError(Message[BuiltInIdentifierInDeclaration, Can't use 'covariant' as a name here., null, {lexeme: covariant}], covariant, covariant)
     handleIdentifier(covariant, classOrMixinDeclaration)
     handleNoTypeVariables(=)
@@ -437,7 +437,7 @@
   endTopLevelDeclaration(class)
   beginMetadataStar(class)
   endMetadataStar(0)
-  beginClassOrNamedMixinApplicationPrelude(class)
+  beginClassOrMixinOrNamedMixinApplicationPrelude(class)
     handleRecoverableError(Message[ExpectedIdentifierButGotKeyword, 'default' can't be used as an identifier because it's a keyword., Try renaming this to be an identifier that isn't a keyword., {lexeme: default}], default, default)
     handleIdentifier(default, classOrMixinDeclaration)
     handleNoTypeVariables(=)
@@ -455,7 +455,7 @@
   endTopLevelDeclaration(class)
   beginMetadataStar(class)
   endMetadataStar(0)
-  beginClassOrNamedMixinApplicationPrelude(class)
+  beginClassOrMixinOrNamedMixinApplicationPrelude(class)
     handleRecoverableError(Message[BuiltInIdentifierInDeclaration, Can't use 'deferred' as a name here., null, {lexeme: deferred}], deferred, deferred)
     handleIdentifier(deferred, classOrMixinDeclaration)
     handleNoTypeVariables(=)
@@ -473,7 +473,7 @@
   endTopLevelDeclaration(class)
   beginMetadataStar(class)
   endMetadataStar(0)
-  beginClassOrNamedMixinApplicationPrelude(class)
+  beginClassOrMixinOrNamedMixinApplicationPrelude(class)
     handleRecoverableError(Message[ExpectedIdentifierButGotKeyword, 'do' can't be used as an identifier because it's a keyword., Try renaming this to be an identifier that isn't a keyword., {lexeme: do}], do, do)
     handleIdentifier(do, classOrMixinDeclaration)
     handleNoTypeVariables(=)
@@ -491,7 +491,7 @@
   endTopLevelDeclaration(class)
   beginMetadataStar(class)
   endMetadataStar(0)
-  beginClassOrNamedMixinApplicationPrelude(class)
+  beginClassOrMixinOrNamedMixinApplicationPrelude(class)
     handleRecoverableError(Message[BuiltInIdentifierInDeclaration, Can't use 'dynamic' as a name here., null, {lexeme: dynamic}], dynamic, dynamic)
     handleIdentifier(dynamic, classOrMixinDeclaration)
     handleNoTypeVariables(=)
@@ -509,7 +509,7 @@
   endTopLevelDeclaration(class)
   beginMetadataStar(class)
   endMetadataStar(0)
-  beginClassOrNamedMixinApplicationPrelude(class)
+  beginClassOrMixinOrNamedMixinApplicationPrelude(class)
     handleRecoverableError(Message[ExpectedIdentifierButGotKeyword, 'else' can't be used as an identifier because it's a keyword., Try renaming this to be an identifier that isn't a keyword., {lexeme: else}], else, else)
     handleIdentifier(else, classOrMixinDeclaration)
     handleNoTypeVariables(=)
@@ -527,7 +527,7 @@
   endTopLevelDeclaration(class)
   beginMetadataStar(class)
   endMetadataStar(0)
-  beginClassOrNamedMixinApplicationPrelude(class)
+  beginClassOrMixinOrNamedMixinApplicationPrelude(class)
     handleRecoverableError(Message[ExpectedIdentifierButGotKeyword, 'enum' can't be used as an identifier because it's a keyword., Try renaming this to be an identifier that isn't a keyword., {lexeme: enum}], enum, enum)
     handleIdentifier(enum, classOrMixinDeclaration)
     handleNoTypeVariables(=)
@@ -545,7 +545,7 @@
   endTopLevelDeclaration(class)
   beginMetadataStar(class)
   endMetadataStar(0)
-  beginClassOrNamedMixinApplicationPrelude(class)
+  beginClassOrMixinOrNamedMixinApplicationPrelude(class)
     handleRecoverableError(Message[BuiltInIdentifierInDeclaration, Can't use 'export' as a name here., null, {lexeme: export}], export, export)
     handleIdentifier(export, classOrMixinDeclaration)
     handleNoTypeVariables(=)
@@ -563,7 +563,7 @@
   endTopLevelDeclaration(class)
   beginMetadataStar(class)
   endMetadataStar(0)
-  beginClassOrNamedMixinApplicationPrelude(class)
+  beginClassOrMixinOrNamedMixinApplicationPrelude(class)
     handleRecoverableError(Message[ExpectedIdentifierButGotKeyword, 'extends' can't be used as an identifier because it's a keyword., Try renaming this to be an identifier that isn't a keyword., {lexeme: extends}], extends, extends)
     handleIdentifier(extends, classOrMixinDeclaration)
     handleNoTypeVariables(=)
@@ -581,7 +581,7 @@
   endTopLevelDeclaration(class)
   beginMetadataStar(class)
   endMetadataStar(0)
-  beginClassOrNamedMixinApplicationPrelude(class)
+  beginClassOrMixinOrNamedMixinApplicationPrelude(class)
     handleRecoverableError(Message[BuiltInIdentifierInDeclaration, Can't use 'extension' as a name here., null, {lexeme: extension}], extension, extension)
     handleIdentifier(extension, classOrMixinDeclaration)
     handleNoTypeVariables(=)
@@ -599,7 +599,7 @@
   endTopLevelDeclaration(class)
   beginMetadataStar(class)
   endMetadataStar(0)
-  beginClassOrNamedMixinApplicationPrelude(class)
+  beginClassOrMixinOrNamedMixinApplicationPrelude(class)
     handleRecoverableError(Message[BuiltInIdentifierInDeclaration, Can't use 'external' as a name here., null, {lexeme: external}], external, external)
     handleIdentifier(external, classOrMixinDeclaration)
     handleNoTypeVariables(=)
@@ -617,7 +617,7 @@
   endTopLevelDeclaration(class)
   beginMetadataStar(class)
   endMetadataStar(0)
-  beginClassOrNamedMixinApplicationPrelude(class)
+  beginClassOrMixinOrNamedMixinApplicationPrelude(class)
     handleRecoverableError(Message[BuiltInIdentifierInDeclaration, Can't use 'factory' as a name here., null, {lexeme: factory}], factory, factory)
     handleIdentifier(factory, classOrMixinDeclaration)
     handleNoTypeVariables(=)
@@ -635,7 +635,7 @@
   endTopLevelDeclaration(class)
   beginMetadataStar(class)
   endMetadataStar(0)
-  beginClassOrNamedMixinApplicationPrelude(class)
+  beginClassOrMixinOrNamedMixinApplicationPrelude(class)
     handleRecoverableError(Message[ExpectedIdentifierButGotKeyword, 'false' can't be used as an identifier because it's a keyword., Try renaming this to be an identifier that isn't a keyword., {lexeme: false}], false, false)
     handleIdentifier(false, classOrMixinDeclaration)
     handleNoTypeVariables(=)
@@ -653,7 +653,7 @@
   endTopLevelDeclaration(class)
   beginMetadataStar(class)
   endMetadataStar(0)
-  beginClassOrNamedMixinApplicationPrelude(class)
+  beginClassOrMixinOrNamedMixinApplicationPrelude(class)
     handleRecoverableError(Message[ExpectedIdentifierButGotKeyword, 'final' can't be used as an identifier because it's a keyword., Try renaming this to be an identifier that isn't a keyword., {lexeme: final}], final, final)
     handleIdentifier(final, classOrMixinDeclaration)
     handleNoTypeVariables(=)
@@ -671,7 +671,7 @@
   endTopLevelDeclaration(class)
   beginMetadataStar(class)
   endMetadataStar(0)
-  beginClassOrNamedMixinApplicationPrelude(class)
+  beginClassOrMixinOrNamedMixinApplicationPrelude(class)
     handleRecoverableError(Message[ExpectedIdentifierButGotKeyword, 'finally' can't be used as an identifier because it's a keyword., Try renaming this to be an identifier that isn't a keyword., {lexeme: finally}], finally, finally)
     handleIdentifier(finally, classOrMixinDeclaration)
     handleNoTypeVariables(=)
@@ -689,7 +689,7 @@
   endTopLevelDeclaration(class)
   beginMetadataStar(class)
   endMetadataStar(0)
-  beginClassOrNamedMixinApplicationPrelude(class)
+  beginClassOrMixinOrNamedMixinApplicationPrelude(class)
     handleRecoverableError(Message[ExpectedIdentifierButGotKeyword, 'for' can't be used as an identifier because it's a keyword., Try renaming this to be an identifier that isn't a keyword., {lexeme: for}], for, for)
     handleIdentifier(for, classOrMixinDeclaration)
     handleNoTypeVariables(=)
@@ -707,7 +707,7 @@
   endTopLevelDeclaration(class)
   beginMetadataStar(class)
   endMetadataStar(0)
-  beginClassOrNamedMixinApplicationPrelude(class)
+  beginClassOrMixinOrNamedMixinApplicationPrelude(class)
     handleIdentifier(Function, classOrMixinDeclaration)
     handleNoTypeVariables(=)
     beginNamedMixinApplication(class, null, Function)
@@ -724,7 +724,7 @@
   endTopLevelDeclaration(class)
   beginMetadataStar(class)
   endMetadataStar(0)
-  beginClassOrNamedMixinApplicationPrelude(class)
+  beginClassOrMixinOrNamedMixinApplicationPrelude(class)
     handleRecoverableError(Message[BuiltInIdentifierInDeclaration, Can't use 'get' as a name here., null, {lexeme: get}], get, get)
     handleIdentifier(get, classOrMixinDeclaration)
     handleNoTypeVariables(=)
@@ -742,7 +742,7 @@
   endTopLevelDeclaration(class)
   beginMetadataStar(class)
   endMetadataStar(0)
-  beginClassOrNamedMixinApplicationPrelude(class)
+  beginClassOrMixinOrNamedMixinApplicationPrelude(class)
     handleIdentifier(hide, classOrMixinDeclaration)
     handleNoTypeVariables(=)
     beginNamedMixinApplication(class, null, hide)
@@ -759,7 +759,7 @@
   endTopLevelDeclaration(class)
   beginMetadataStar(class)
   endMetadataStar(0)
-  beginClassOrNamedMixinApplicationPrelude(class)
+  beginClassOrMixinOrNamedMixinApplicationPrelude(class)
     handleRecoverableError(Message[ExpectedIdentifierButGotKeyword, 'if' can't be used as an identifier because it's a keyword., Try renaming this to be an identifier that isn't a keyword., {lexeme: if}], if, if)
     handleIdentifier(if, classOrMixinDeclaration)
     handleNoTypeVariables(=)
@@ -777,7 +777,7 @@
   endTopLevelDeclaration(class)
   beginMetadataStar(class)
   endMetadataStar(0)
-  beginClassOrNamedMixinApplicationPrelude(class)
+  beginClassOrMixinOrNamedMixinApplicationPrelude(class)
     handleRecoverableError(Message[BuiltInIdentifierInDeclaration, Can't use 'implements' as a name here., null, {lexeme: implements}], implements, implements)
     handleIdentifier(implements, classOrMixinDeclaration)
     handleNoTypeVariables(=)
@@ -795,7 +795,7 @@
   endTopLevelDeclaration(class)
   beginMetadataStar(class)
   endMetadataStar(0)
-  beginClassOrNamedMixinApplicationPrelude(class)
+  beginClassOrMixinOrNamedMixinApplicationPrelude(class)
     handleRecoverableError(Message[BuiltInIdentifierInDeclaration, Can't use 'import' as a name here., null, {lexeme: import}], import, import)
     handleIdentifier(import, classOrMixinDeclaration)
     handleNoTypeVariables(=)
@@ -813,7 +813,7 @@
   endTopLevelDeclaration(class)
   beginMetadataStar(class)
   endMetadataStar(0)
-  beginClassOrNamedMixinApplicationPrelude(class)
+  beginClassOrMixinOrNamedMixinApplicationPrelude(class)
     handleRecoverableError(Message[ExpectedIdentifierButGotKeyword, 'in' can't be used as an identifier because it's a keyword., Try renaming this to be an identifier that isn't a keyword., {lexeme: in}], in, in)
     handleIdentifier(in, classOrMixinDeclaration)
     handleNoTypeVariables(=)
@@ -831,7 +831,7 @@
   endTopLevelDeclaration(class)
   beginMetadataStar(class)
   endMetadataStar(0)
-  beginClassOrNamedMixinApplicationPrelude(class)
+  beginClassOrMixinOrNamedMixinApplicationPrelude(class)
     handleIdentifier(inout, classOrMixinDeclaration)
     handleNoTypeVariables(=)
     beginNamedMixinApplication(class, null, inout)
@@ -848,7 +848,7 @@
   endTopLevelDeclaration(class)
   beginMetadataStar(class)
   endMetadataStar(0)
-  beginClassOrNamedMixinApplicationPrelude(class)
+  beginClassOrMixinOrNamedMixinApplicationPrelude(class)
     handleRecoverableError(Message[BuiltInIdentifierInDeclaration, Can't use 'interface' as a name here., null, {lexeme: interface}], interface, interface)
     handleIdentifier(interface, classOrMixinDeclaration)
     handleNoTypeVariables(=)
@@ -866,7 +866,7 @@
   endTopLevelDeclaration(class)
   beginMetadataStar(class)
   endMetadataStar(0)
-  beginClassOrNamedMixinApplicationPrelude(class)
+  beginClassOrMixinOrNamedMixinApplicationPrelude(class)
     handleRecoverableError(Message[ExpectedIdentifierButGotKeyword, 'is' can't be used as an identifier because it's a keyword., Try renaming this to be an identifier that isn't a keyword., {lexeme: is}], is, is)
     handleIdentifier(is, classOrMixinDeclaration)
     handleNoTypeVariables(=)
@@ -884,7 +884,7 @@
   endTopLevelDeclaration(class)
   beginMetadataStar(class)
   endMetadataStar(0)
-  beginClassOrNamedMixinApplicationPrelude(class)
+  beginClassOrMixinOrNamedMixinApplicationPrelude(class)
     handleRecoverableError(Message[BuiltInIdentifierInDeclaration, Can't use 'late' as a name here., null, {lexeme: late}], late, late)
     handleIdentifier(late, classOrMixinDeclaration)
     handleNoTypeVariables(=)
@@ -902,7 +902,7 @@
   endTopLevelDeclaration(class)
   beginMetadataStar(class)
   endMetadataStar(0)
-  beginClassOrNamedMixinApplicationPrelude(class)
+  beginClassOrMixinOrNamedMixinApplicationPrelude(class)
     handleRecoverableError(Message[BuiltInIdentifierInDeclaration, Can't use 'library' as a name here., null, {lexeme: library}], library, library)
     handleIdentifier(library, classOrMixinDeclaration)
     handleNoTypeVariables(=)
@@ -920,7 +920,7 @@
   endTopLevelDeclaration(class)
   beginMetadataStar(class)
   endMetadataStar(0)
-  beginClassOrNamedMixinApplicationPrelude(class)
+  beginClassOrMixinOrNamedMixinApplicationPrelude(class)
     handleRecoverableError(Message[BuiltInIdentifierInDeclaration, Can't use 'mixin' as a name here., null, {lexeme: mixin}], mixin, mixin)
     handleIdentifier(mixin, classOrMixinDeclaration)
     handleNoTypeVariables(=)
@@ -938,7 +938,7 @@
   endTopLevelDeclaration(class)
   beginMetadataStar(class)
   endMetadataStar(0)
-  beginClassOrNamedMixinApplicationPrelude(class)
+  beginClassOrMixinOrNamedMixinApplicationPrelude(class)
     handleIdentifier(native, classOrMixinDeclaration)
     handleNoTypeVariables(=)
     beginNamedMixinApplication(class, null, native)
@@ -955,7 +955,7 @@
   endTopLevelDeclaration(class)
   beginMetadataStar(class)
   endMetadataStar(0)
-  beginClassOrNamedMixinApplicationPrelude(class)
+  beginClassOrMixinOrNamedMixinApplicationPrelude(class)
     handleRecoverableError(Message[ExpectedIdentifierButGotKeyword, 'new' can't be used as an identifier because it's a keyword., Try renaming this to be an identifier that isn't a keyword., {lexeme: new}], new, new)
     handleIdentifier(new, classOrMixinDeclaration)
     handleNoTypeVariables(=)
@@ -973,7 +973,7 @@
   endTopLevelDeclaration(class)
   beginMetadataStar(class)
   endMetadataStar(0)
-  beginClassOrNamedMixinApplicationPrelude(class)
+  beginClassOrMixinOrNamedMixinApplicationPrelude(class)
     handleRecoverableError(Message[ExpectedIdentifierButGotKeyword, 'null' can't be used as an identifier because it's a keyword., Try renaming this to be an identifier that isn't a keyword., {lexeme: null}], null, null)
     handleIdentifier(null, classOrMixinDeclaration)
     handleNoTypeVariables(=)
@@ -991,7 +991,7 @@
   endTopLevelDeclaration(class)
   beginMetadataStar(class)
   endMetadataStar(0)
-  beginClassOrNamedMixinApplicationPrelude(class)
+  beginClassOrMixinOrNamedMixinApplicationPrelude(class)
     handleIdentifier(of, classOrMixinDeclaration)
     handleNoTypeVariables(=)
     beginNamedMixinApplication(class, null, of)
@@ -1008,7 +1008,7 @@
   endTopLevelDeclaration(class)
   beginMetadataStar(class)
   endMetadataStar(0)
-  beginClassOrNamedMixinApplicationPrelude(class)
+  beginClassOrMixinOrNamedMixinApplicationPrelude(class)
     handleIdentifier(on, classOrMixinDeclaration)
     handleNoTypeVariables(=)
     beginNamedMixinApplication(class, null, on)
@@ -1025,7 +1025,7 @@
   endTopLevelDeclaration(class)
   beginMetadataStar(class)
   endMetadataStar(0)
-  beginClassOrNamedMixinApplicationPrelude(class)
+  beginClassOrMixinOrNamedMixinApplicationPrelude(class)
     handleRecoverableError(Message[BuiltInIdentifierInDeclaration, Can't use 'operator' as a name here., null, {lexeme: operator}], operator, operator)
     handleIdentifier(operator, classOrMixinDeclaration)
     handleNoTypeVariables(=)
@@ -1043,7 +1043,7 @@
   endTopLevelDeclaration(class)
   beginMetadataStar(class)
   endMetadataStar(0)
-  beginClassOrNamedMixinApplicationPrelude(class)
+  beginClassOrMixinOrNamedMixinApplicationPrelude(class)
     handleIdentifier(out, classOrMixinDeclaration)
     handleNoTypeVariables(=)
     beginNamedMixinApplication(class, null, out)
@@ -1060,7 +1060,7 @@
   endTopLevelDeclaration(class)
   beginMetadataStar(class)
   endMetadataStar(0)
-  beginClassOrNamedMixinApplicationPrelude(class)
+  beginClassOrMixinOrNamedMixinApplicationPrelude(class)
     handleRecoverableError(Message[BuiltInIdentifierInDeclaration, Can't use 'part' as a name here., null, {lexeme: part}], part, part)
     handleIdentifier(part, classOrMixinDeclaration)
     handleNoTypeVariables(=)
@@ -1078,7 +1078,7 @@
   endTopLevelDeclaration(class)
   beginMetadataStar(class)
   endMetadataStar(0)
-  beginClassOrNamedMixinApplicationPrelude(class)
+  beginClassOrMixinOrNamedMixinApplicationPrelude(class)
     handleIdentifier(patch, classOrMixinDeclaration)
     handleNoTypeVariables(=)
     beginNamedMixinApplication(class, null, patch)
@@ -1095,7 +1095,7 @@
   endTopLevelDeclaration(class)
   beginMetadataStar(class)
   endMetadataStar(0)
-  beginClassOrNamedMixinApplicationPrelude(class)
+  beginClassOrMixinOrNamedMixinApplicationPrelude(class)
     handleRecoverableError(Message[BuiltInIdentifierInDeclaration, Can't use 'required' as a name here., null, {lexeme: required}], required, required)
     handleIdentifier(required, classOrMixinDeclaration)
     handleNoTypeVariables(=)
@@ -1113,7 +1113,7 @@
   endTopLevelDeclaration(class)
   beginMetadataStar(class)
   endMetadataStar(0)
-  beginClassOrNamedMixinApplicationPrelude(class)
+  beginClassOrMixinOrNamedMixinApplicationPrelude(class)
     handleRecoverableError(Message[ExpectedIdentifierButGotKeyword, 'rethrow' can't be used as an identifier because it's a keyword., Try renaming this to be an identifier that isn't a keyword., {lexeme: rethrow}], rethrow, rethrow)
     handleIdentifier(rethrow, classOrMixinDeclaration)
     handleNoTypeVariables(=)
@@ -1131,7 +1131,7 @@
   endTopLevelDeclaration(class)
   beginMetadataStar(class)
   endMetadataStar(0)
-  beginClassOrNamedMixinApplicationPrelude(class)
+  beginClassOrMixinOrNamedMixinApplicationPrelude(class)
     handleRecoverableError(Message[ExpectedIdentifierButGotKeyword, 'return' can't be used as an identifier because it's a keyword., Try renaming this to be an identifier that isn't a keyword., {lexeme: return}], return, return)
     handleIdentifier(return, classOrMixinDeclaration)
     handleNoTypeVariables(=)
@@ -1149,7 +1149,7 @@
   endTopLevelDeclaration(class)
   beginMetadataStar(class)
   endMetadataStar(0)
-  beginClassOrNamedMixinApplicationPrelude(class)
+  beginClassOrMixinOrNamedMixinApplicationPrelude(class)
     handleRecoverableError(Message[BuiltInIdentifierInDeclaration, Can't use 'set' as a name here., null, {lexeme: set}], set, set)
     handleIdentifier(set, classOrMixinDeclaration)
     handleNoTypeVariables(=)
@@ -1167,7 +1167,7 @@
   endTopLevelDeclaration(class)
   beginMetadataStar(class)
   endMetadataStar(0)
-  beginClassOrNamedMixinApplicationPrelude(class)
+  beginClassOrMixinOrNamedMixinApplicationPrelude(class)
     handleIdentifier(show, classOrMixinDeclaration)
     handleNoTypeVariables(=)
     beginNamedMixinApplication(class, null, show)
@@ -1184,7 +1184,7 @@
   endTopLevelDeclaration(class)
   beginMetadataStar(class)
   endMetadataStar(0)
-  beginClassOrNamedMixinApplicationPrelude(class)
+  beginClassOrMixinOrNamedMixinApplicationPrelude(class)
     handleIdentifier(source, classOrMixinDeclaration)
     handleNoTypeVariables(=)
     beginNamedMixinApplication(class, null, source)
@@ -1201,7 +1201,7 @@
   endTopLevelDeclaration(class)
   beginMetadataStar(class)
   endMetadataStar(0)
-  beginClassOrNamedMixinApplicationPrelude(class)
+  beginClassOrMixinOrNamedMixinApplicationPrelude(class)
     handleRecoverableError(Message[BuiltInIdentifierInDeclaration, Can't use 'static' as a name here., null, {lexeme: static}], static, static)
     handleIdentifier(static, classOrMixinDeclaration)
     handleNoTypeVariables(=)
@@ -1219,7 +1219,7 @@
   endTopLevelDeclaration(class)
   beginMetadataStar(class)
   endMetadataStar(0)
-  beginClassOrNamedMixinApplicationPrelude(class)
+  beginClassOrMixinOrNamedMixinApplicationPrelude(class)
     handleRecoverableError(Message[ExpectedIdentifierButGotKeyword, 'super' can't be used as an identifier because it's a keyword., Try renaming this to be an identifier that isn't a keyword., {lexeme: super}], super, super)
     handleIdentifier(super, classOrMixinDeclaration)
     handleNoTypeVariables(=)
@@ -1237,7 +1237,7 @@
   endTopLevelDeclaration(class)
   beginMetadataStar(class)
   endMetadataStar(0)
-  beginClassOrNamedMixinApplicationPrelude(class)
+  beginClassOrMixinOrNamedMixinApplicationPrelude(class)
     handleRecoverableError(Message[ExpectedIdentifierButGotKeyword, 'switch' can't be used as an identifier because it's a keyword., Try renaming this to be an identifier that isn't a keyword., {lexeme: switch}], switch, switch)
     handleIdentifier(switch, classOrMixinDeclaration)
     handleNoTypeVariables(=)
@@ -1255,7 +1255,7 @@
   endTopLevelDeclaration(class)
   beginMetadataStar(class)
   endMetadataStar(0)
-  beginClassOrNamedMixinApplicationPrelude(class)
+  beginClassOrMixinOrNamedMixinApplicationPrelude(class)
     handleIdentifier(sync, classOrMixinDeclaration)
     handleNoTypeVariables(=)
     beginNamedMixinApplication(class, null, sync)
@@ -1272,7 +1272,7 @@
   endTopLevelDeclaration(class)
   beginMetadataStar(class)
   endMetadataStar(0)
-  beginClassOrNamedMixinApplicationPrelude(class)
+  beginClassOrMixinOrNamedMixinApplicationPrelude(class)
     handleRecoverableError(Message[ExpectedIdentifierButGotKeyword, 'this' can't be used as an identifier because it's a keyword., Try renaming this to be an identifier that isn't a keyword., {lexeme: this}], this, this)
     handleIdentifier(this, classOrMixinDeclaration)
     handleNoTypeVariables(=)
@@ -1290,7 +1290,7 @@
   endTopLevelDeclaration(class)
   beginMetadataStar(class)
   endMetadataStar(0)
-  beginClassOrNamedMixinApplicationPrelude(class)
+  beginClassOrMixinOrNamedMixinApplicationPrelude(class)
     handleRecoverableError(Message[ExpectedIdentifierButGotKeyword, 'throw' can't be used as an identifier because it's a keyword., Try renaming this to be an identifier that isn't a keyword., {lexeme: throw}], throw, throw)
     handleIdentifier(throw, classOrMixinDeclaration)
     handleNoTypeVariables(=)
@@ -1308,7 +1308,7 @@
   endTopLevelDeclaration(class)
   beginMetadataStar(class)
   endMetadataStar(0)
-  beginClassOrNamedMixinApplicationPrelude(class)
+  beginClassOrMixinOrNamedMixinApplicationPrelude(class)
     handleRecoverableError(Message[ExpectedIdentifierButGotKeyword, 'true' can't be used as an identifier because it's a keyword., Try renaming this to be an identifier that isn't a keyword., {lexeme: true}], true, true)
     handleIdentifier(true, classOrMixinDeclaration)
     handleNoTypeVariables(=)
@@ -1326,7 +1326,7 @@
   endTopLevelDeclaration(class)
   beginMetadataStar(class)
   endMetadataStar(0)
-  beginClassOrNamedMixinApplicationPrelude(class)
+  beginClassOrMixinOrNamedMixinApplicationPrelude(class)
     handleRecoverableError(Message[ExpectedIdentifierButGotKeyword, 'try' can't be used as an identifier because it's a keyword., Try renaming this to be an identifier that isn't a keyword., {lexeme: try}], try, try)
     handleIdentifier(try, classOrMixinDeclaration)
     handleNoTypeVariables(=)
@@ -1344,7 +1344,7 @@
   endTopLevelDeclaration(class)
   beginMetadataStar(class)
   endMetadataStar(0)
-  beginClassOrNamedMixinApplicationPrelude(class)
+  beginClassOrMixinOrNamedMixinApplicationPrelude(class)
     handleRecoverableError(Message[BuiltInIdentifierInDeclaration, Can't use 'typedef' as a name here., null, {lexeme: typedef}], typedef, typedef)
     handleIdentifier(typedef, classOrMixinDeclaration)
     handleNoTypeVariables(=)
@@ -1362,7 +1362,7 @@
   endTopLevelDeclaration(class)
   beginMetadataStar(class)
   endMetadataStar(0)
-  beginClassOrNamedMixinApplicationPrelude(class)
+  beginClassOrMixinOrNamedMixinApplicationPrelude(class)
     handleRecoverableError(Message[ExpectedIdentifierButGotKeyword, 'var' can't be used as an identifier because it's a keyword., Try renaming this to be an identifier that isn't a keyword., {lexeme: var}], var, var)
     handleIdentifier(var, classOrMixinDeclaration)
     handleNoTypeVariables(=)
@@ -1380,7 +1380,7 @@
   endTopLevelDeclaration(class)
   beginMetadataStar(class)
   endMetadataStar(0)
-  beginClassOrNamedMixinApplicationPrelude(class)
+  beginClassOrMixinOrNamedMixinApplicationPrelude(class)
     handleRecoverableError(Message[ExpectedIdentifierButGotKeyword, 'void' can't be used as an identifier because it's a keyword., Try renaming this to be an identifier that isn't a keyword., {lexeme: void}], void, void)
     handleIdentifier(void, classOrMixinDeclaration)
     handleNoTypeVariables(=)
@@ -1398,7 +1398,7 @@
   endTopLevelDeclaration(class)
   beginMetadataStar(class)
   endMetadataStar(0)
-  beginClassOrNamedMixinApplicationPrelude(class)
+  beginClassOrMixinOrNamedMixinApplicationPrelude(class)
     handleRecoverableError(Message[ExpectedIdentifierButGotKeyword, 'while' can't be used as an identifier because it's a keyword., Try renaming this to be an identifier that isn't a keyword., {lexeme: while}], while, while)
     handleIdentifier(while, classOrMixinDeclaration)
     handleNoTypeVariables(=)
@@ -1416,7 +1416,7 @@
   endTopLevelDeclaration(class)
   beginMetadataStar(class)
   endMetadataStar(0)
-  beginClassOrNamedMixinApplicationPrelude(class)
+  beginClassOrMixinOrNamedMixinApplicationPrelude(class)
     handleRecoverableError(Message[ExpectedIdentifierButGotKeyword, 'with' can't be used as an identifier because it's a keyword., Try renaming this to be an identifier that isn't a keyword., {lexeme: with}], with, with)
     handleIdentifier(with, classOrMixinDeclaration)
     handleNoTypeVariables(=)
@@ -1434,7 +1434,7 @@
   endTopLevelDeclaration(class)
   beginMetadataStar(class)
   endMetadataStar(0)
-  beginClassOrNamedMixinApplicationPrelude(class)
+  beginClassOrMixinOrNamedMixinApplicationPrelude(class)
     handleIdentifier(yield, classOrMixinDeclaration)
     handleNoTypeVariables(=)
     beginNamedMixinApplication(class, null, yield)
diff --git a/pkg/front_end/parser_testcases/error_recovery/issue_46346_prime_1.dart.intertwined.expect b/pkg/front_end/parser_testcases/error_recovery/issue_46346_prime_1.dart.intertwined.expect
index d0f33a6..5e0bb61 100644
--- a/pkg/front_end/parser_testcases/error_recovery/issue_46346_prime_1.dart.intertwined.expect
+++ b/pkg/front_end/parser_testcases/error_recovery/issue_46346_prime_1.dart.intertwined.expect
@@ -9,7 +9,7 @@
     parseTopLevelKeywordDeclaration(, class, Instance of 'DirectiveContext')
       parseClassDeclarationModifiers(, class)
       parseClassOrNamedMixinApplication(null, class)
-        listener: beginClassOrNamedMixinApplicationPrelude(class)
+        listener: beginClassOrMixinOrNamedMixinApplicationPrelude(class)
         ensureIdentifier(class, classOrMixinDeclaration)
           reportRecoverableErrorWithToken(abstract, Instance of 'Template<(Token) => Message>')
             listener: handleRecoverableError(Message[BuiltInIdentifierInDeclaration, Can't use 'abstract' as a name here., null, {lexeme: abstract}], abstract, abstract)
@@ -38,7 +38,7 @@
     parseTopLevelKeywordDeclaration(;, class, Instance of 'DirectiveContext')
       parseClassDeclarationModifiers(;, class)
       parseClassOrNamedMixinApplication(null, class)
-        listener: beginClassOrNamedMixinApplicationPrelude(class)
+        listener: beginClassOrMixinOrNamedMixinApplicationPrelude(class)
         ensureIdentifier(class, classOrMixinDeclaration)
           reportRecoverableErrorWithToken(as, Instance of 'Template<(Token) => Message>')
             listener: handleRecoverableError(Message[BuiltInIdentifierInDeclaration, Can't use 'as' as a name here., null, {lexeme: as}], as, as)
@@ -67,7 +67,7 @@
     parseTopLevelKeywordDeclaration(;, class, Instance of 'DirectiveContext')
       parseClassDeclarationModifiers(;, class)
       parseClassOrNamedMixinApplication(null, class)
-        listener: beginClassOrNamedMixinApplicationPrelude(class)
+        listener: beginClassOrMixinOrNamedMixinApplicationPrelude(class)
         ensureIdentifier(class, classOrMixinDeclaration)
           reportRecoverableErrorWithToken(assert, Instance of 'Template<(Token) => Message>')
             listener: handleRecoverableError(Message[ExpectedIdentifierButGotKeyword, 'assert' can't be used as an identifier because it's a keyword., Try renaming this to be an identifier that isn't a keyword., {lexeme: assert}], assert, assert)
@@ -96,7 +96,7 @@
     parseTopLevelKeywordDeclaration(;, class, Instance of 'DirectiveContext')
       parseClassDeclarationModifiers(;, class)
       parseClassOrNamedMixinApplication(null, class)
-        listener: beginClassOrNamedMixinApplicationPrelude(class)
+        listener: beginClassOrMixinOrNamedMixinApplicationPrelude(class)
         ensureIdentifier(class, classOrMixinDeclaration)
           listener: handleIdentifier(async, classOrMixinDeclaration)
         listener: handleNoTypeVariables(=)
@@ -123,7 +123,7 @@
     parseTopLevelKeywordDeclaration(;, class, Instance of 'DirectiveContext')
       parseClassDeclarationModifiers(;, class)
       parseClassOrNamedMixinApplication(null, class)
-        listener: beginClassOrNamedMixinApplicationPrelude(class)
+        listener: beginClassOrMixinOrNamedMixinApplicationPrelude(class)
         ensureIdentifier(class, classOrMixinDeclaration)
           listener: handleIdentifier(await, classOrMixinDeclaration)
         listener: handleNoTypeVariables(=)
@@ -150,7 +150,7 @@
     parseTopLevelKeywordDeclaration(;, class, Instance of 'DirectiveContext')
       parseClassDeclarationModifiers(;, class)
       parseClassOrNamedMixinApplication(null, class)
-        listener: beginClassOrNamedMixinApplicationPrelude(class)
+        listener: beginClassOrMixinOrNamedMixinApplicationPrelude(class)
         ensureIdentifier(class, classOrMixinDeclaration)
           reportRecoverableErrorWithToken(break, Instance of 'Template<(Token) => Message>')
             listener: handleRecoverableError(Message[ExpectedIdentifierButGotKeyword, 'break' can't be used as an identifier because it's a keyword., Try renaming this to be an identifier that isn't a keyword., {lexeme: break}], break, break)
@@ -179,7 +179,7 @@
     parseTopLevelKeywordDeclaration(;, class, Instance of 'DirectiveContext')
       parseClassDeclarationModifiers(;, class)
       parseClassOrNamedMixinApplication(null, class)
-        listener: beginClassOrNamedMixinApplicationPrelude(class)
+        listener: beginClassOrMixinOrNamedMixinApplicationPrelude(class)
         ensureIdentifier(class, classOrMixinDeclaration)
           reportRecoverableErrorWithToken(case, Instance of 'Template<(Token) => Message>')
             listener: handleRecoverableError(Message[ExpectedIdentifierButGotKeyword, 'case' can't be used as an identifier because it's a keyword., Try renaming this to be an identifier that isn't a keyword., {lexeme: case}], case, case)
@@ -208,7 +208,7 @@
     parseTopLevelKeywordDeclaration(;, class, Instance of 'DirectiveContext')
       parseClassDeclarationModifiers(;, class)
       parseClassOrNamedMixinApplication(null, class)
-        listener: beginClassOrNamedMixinApplicationPrelude(class)
+        listener: beginClassOrMixinOrNamedMixinApplicationPrelude(class)
         ensureIdentifier(class, classOrMixinDeclaration)
           reportRecoverableErrorWithToken(catch, Instance of 'Template<(Token) => Message>')
             listener: handleRecoverableError(Message[ExpectedIdentifierButGotKeyword, 'catch' can't be used as an identifier because it's a keyword., Try renaming this to be an identifier that isn't a keyword., {lexeme: catch}], catch, catch)
@@ -237,7 +237,7 @@
     parseTopLevelKeywordDeclaration(;, class, Instance of 'DirectiveContext')
       parseClassDeclarationModifiers(;, class)
       parseClassOrNamedMixinApplication(null, class)
-        listener: beginClassOrNamedMixinApplicationPrelude(class)
+        listener: beginClassOrMixinOrNamedMixinApplicationPrelude(class)
         ensureIdentifier(class, classOrMixinDeclaration)
           reportRecoverableErrorWithToken(class, Instance of 'Template<(Token) => Message>')
             listener: handleRecoverableError(Message[ExpectedIdentifierButGotKeyword, 'class' can't be used as an identifier because it's a keyword., Try renaming this to be an identifier that isn't a keyword., {lexeme: class}], class, class)
@@ -266,7 +266,7 @@
     parseTopLevelKeywordDeclaration(;, class, Instance of 'DirectiveContext')
       parseClassDeclarationModifiers(;, class)
       parseClassOrNamedMixinApplication(null, class)
-        listener: beginClassOrNamedMixinApplicationPrelude(class)
+        listener: beginClassOrMixinOrNamedMixinApplicationPrelude(class)
         ensureIdentifier(class, classOrMixinDeclaration)
           reportRecoverableErrorWithToken(const, Instance of 'Template<(Token) => Message>')
             listener: handleRecoverableError(Message[ExpectedIdentifierButGotKeyword, 'const' can't be used as an identifier because it's a keyword., Try renaming this to be an identifier that isn't a keyword., {lexeme: const}], const, const)
@@ -295,7 +295,7 @@
     parseTopLevelKeywordDeclaration(;, class, Instance of 'DirectiveContext')
       parseClassDeclarationModifiers(;, class)
       parseClassOrNamedMixinApplication(null, class)
-        listener: beginClassOrNamedMixinApplicationPrelude(class)
+        listener: beginClassOrMixinOrNamedMixinApplicationPrelude(class)
         ensureIdentifier(class, classOrMixinDeclaration)
           reportRecoverableErrorWithToken(continue, Instance of 'Template<(Token) => Message>')
             listener: handleRecoverableError(Message[ExpectedIdentifierButGotKeyword, 'continue' can't be used as an identifier because it's a keyword., Try renaming this to be an identifier that isn't a keyword., {lexeme: continue}], continue, continue)
@@ -324,7 +324,7 @@
     parseTopLevelKeywordDeclaration(;, class, Instance of 'DirectiveContext')
       parseClassDeclarationModifiers(;, class)
       parseClassOrNamedMixinApplication(null, class)
-        listener: beginClassOrNamedMixinApplicationPrelude(class)
+        listener: beginClassOrMixinOrNamedMixinApplicationPrelude(class)
         ensureIdentifier(class, classOrMixinDeclaration)
           reportRecoverableErrorWithToken(covariant, Instance of 'Template<(Token) => Message>')
             listener: handleRecoverableError(Message[BuiltInIdentifierInDeclaration, Can't use 'covariant' as a name here., null, {lexeme: covariant}], covariant, covariant)
@@ -353,7 +353,7 @@
     parseTopLevelKeywordDeclaration(;, class, Instance of 'DirectiveContext')
       parseClassDeclarationModifiers(;, class)
       parseClassOrNamedMixinApplication(null, class)
-        listener: beginClassOrNamedMixinApplicationPrelude(class)
+        listener: beginClassOrMixinOrNamedMixinApplicationPrelude(class)
         ensureIdentifier(class, classOrMixinDeclaration)
           reportRecoverableErrorWithToken(default, Instance of 'Template<(Token) => Message>')
             listener: handleRecoverableError(Message[ExpectedIdentifierButGotKeyword, 'default' can't be used as an identifier because it's a keyword., Try renaming this to be an identifier that isn't a keyword., {lexeme: default}], default, default)
@@ -382,7 +382,7 @@
     parseTopLevelKeywordDeclaration(;, class, Instance of 'DirectiveContext')
       parseClassDeclarationModifiers(;, class)
       parseClassOrNamedMixinApplication(null, class)
-        listener: beginClassOrNamedMixinApplicationPrelude(class)
+        listener: beginClassOrMixinOrNamedMixinApplicationPrelude(class)
         ensureIdentifier(class, classOrMixinDeclaration)
           reportRecoverableErrorWithToken(deferred, Instance of 'Template<(Token) => Message>')
             listener: handleRecoverableError(Message[BuiltInIdentifierInDeclaration, Can't use 'deferred' as a name here., null, {lexeme: deferred}], deferred, deferred)
@@ -411,7 +411,7 @@
     parseTopLevelKeywordDeclaration(;, class, Instance of 'DirectiveContext')
       parseClassDeclarationModifiers(;, class)
       parseClassOrNamedMixinApplication(null, class)
-        listener: beginClassOrNamedMixinApplicationPrelude(class)
+        listener: beginClassOrMixinOrNamedMixinApplicationPrelude(class)
         ensureIdentifier(class, classOrMixinDeclaration)
           reportRecoverableErrorWithToken(do, Instance of 'Template<(Token) => Message>')
             listener: handleRecoverableError(Message[ExpectedIdentifierButGotKeyword, 'do' can't be used as an identifier because it's a keyword., Try renaming this to be an identifier that isn't a keyword., {lexeme: do}], do, do)
@@ -440,7 +440,7 @@
     parseTopLevelKeywordDeclaration(;, class, Instance of 'DirectiveContext')
       parseClassDeclarationModifiers(;, class)
       parseClassOrNamedMixinApplication(null, class)
-        listener: beginClassOrNamedMixinApplicationPrelude(class)
+        listener: beginClassOrMixinOrNamedMixinApplicationPrelude(class)
         ensureIdentifier(class, classOrMixinDeclaration)
           reportRecoverableErrorWithToken(dynamic, Instance of 'Template<(Token) => Message>')
             listener: handleRecoverableError(Message[BuiltInIdentifierInDeclaration, Can't use 'dynamic' as a name here., null, {lexeme: dynamic}], dynamic, dynamic)
@@ -469,7 +469,7 @@
     parseTopLevelKeywordDeclaration(;, class, Instance of 'DirectiveContext')
       parseClassDeclarationModifiers(;, class)
       parseClassOrNamedMixinApplication(null, class)
-        listener: beginClassOrNamedMixinApplicationPrelude(class)
+        listener: beginClassOrMixinOrNamedMixinApplicationPrelude(class)
         ensureIdentifier(class, classOrMixinDeclaration)
           reportRecoverableErrorWithToken(else, Instance of 'Template<(Token) => Message>')
             listener: handleRecoverableError(Message[ExpectedIdentifierButGotKeyword, 'else' can't be used as an identifier because it's a keyword., Try renaming this to be an identifier that isn't a keyword., {lexeme: else}], else, else)
@@ -498,7 +498,7 @@
     parseTopLevelKeywordDeclaration(;, class, Instance of 'DirectiveContext')
       parseClassDeclarationModifiers(;, class)
       parseClassOrNamedMixinApplication(null, class)
-        listener: beginClassOrNamedMixinApplicationPrelude(class)
+        listener: beginClassOrMixinOrNamedMixinApplicationPrelude(class)
         ensureIdentifier(class, classOrMixinDeclaration)
           reportRecoverableErrorWithToken(enum, Instance of 'Template<(Token) => Message>')
             listener: handleRecoverableError(Message[ExpectedIdentifierButGotKeyword, 'enum' can't be used as an identifier because it's a keyword., Try renaming this to be an identifier that isn't a keyword., {lexeme: enum}], enum, enum)
@@ -527,7 +527,7 @@
     parseTopLevelKeywordDeclaration(;, class, Instance of 'DirectiveContext')
       parseClassDeclarationModifiers(;, class)
       parseClassOrNamedMixinApplication(null, class)
-        listener: beginClassOrNamedMixinApplicationPrelude(class)
+        listener: beginClassOrMixinOrNamedMixinApplicationPrelude(class)
         ensureIdentifier(class, classOrMixinDeclaration)
           reportRecoverableErrorWithToken(export, Instance of 'Template<(Token) => Message>')
             listener: handleRecoverableError(Message[BuiltInIdentifierInDeclaration, Can't use 'export' as a name here., null, {lexeme: export}], export, export)
@@ -556,7 +556,7 @@
     parseTopLevelKeywordDeclaration(;, class, Instance of 'DirectiveContext')
       parseClassDeclarationModifiers(;, class)
       parseClassOrNamedMixinApplication(null, class)
-        listener: beginClassOrNamedMixinApplicationPrelude(class)
+        listener: beginClassOrMixinOrNamedMixinApplicationPrelude(class)
         ensureIdentifier(class, classOrMixinDeclaration)
           reportRecoverableErrorWithToken(extends, Instance of 'Template<(Token) => Message>')
             listener: handleRecoverableError(Message[ExpectedIdentifierButGotKeyword, 'extends' can't be used as an identifier because it's a keyword., Try renaming this to be an identifier that isn't a keyword., {lexeme: extends}], extends, extends)
@@ -585,7 +585,7 @@
     parseTopLevelKeywordDeclaration(;, class, Instance of 'DirectiveContext')
       parseClassDeclarationModifiers(;, class)
       parseClassOrNamedMixinApplication(null, class)
-        listener: beginClassOrNamedMixinApplicationPrelude(class)
+        listener: beginClassOrMixinOrNamedMixinApplicationPrelude(class)
         ensureIdentifier(class, classOrMixinDeclaration)
           reportRecoverableErrorWithToken(extension, Instance of 'Template<(Token) => Message>')
             listener: handleRecoverableError(Message[BuiltInIdentifierInDeclaration, Can't use 'extension' as a name here., null, {lexeme: extension}], extension, extension)
@@ -614,7 +614,7 @@
     parseTopLevelKeywordDeclaration(;, class, Instance of 'DirectiveContext')
       parseClassDeclarationModifiers(;, class)
       parseClassOrNamedMixinApplication(null, class)
-        listener: beginClassOrNamedMixinApplicationPrelude(class)
+        listener: beginClassOrMixinOrNamedMixinApplicationPrelude(class)
         ensureIdentifier(class, classOrMixinDeclaration)
           reportRecoverableErrorWithToken(external, Instance of 'Template<(Token) => Message>')
             listener: handleRecoverableError(Message[BuiltInIdentifierInDeclaration, Can't use 'external' as a name here., null, {lexeme: external}], external, external)
@@ -643,7 +643,7 @@
     parseTopLevelKeywordDeclaration(;, class, Instance of 'DirectiveContext')
       parseClassDeclarationModifiers(;, class)
       parseClassOrNamedMixinApplication(null, class)
-        listener: beginClassOrNamedMixinApplicationPrelude(class)
+        listener: beginClassOrMixinOrNamedMixinApplicationPrelude(class)
         ensureIdentifier(class, classOrMixinDeclaration)
           reportRecoverableErrorWithToken(factory, Instance of 'Template<(Token) => Message>')
             listener: handleRecoverableError(Message[BuiltInIdentifierInDeclaration, Can't use 'factory' as a name here., null, {lexeme: factory}], factory, factory)
@@ -672,7 +672,7 @@
     parseTopLevelKeywordDeclaration(;, class, Instance of 'DirectiveContext')
       parseClassDeclarationModifiers(;, class)
       parseClassOrNamedMixinApplication(null, class)
-        listener: beginClassOrNamedMixinApplicationPrelude(class)
+        listener: beginClassOrMixinOrNamedMixinApplicationPrelude(class)
         ensureIdentifier(class, classOrMixinDeclaration)
           reportRecoverableErrorWithToken(false, Instance of 'Template<(Token) => Message>')
             listener: handleRecoverableError(Message[ExpectedIdentifierButGotKeyword, 'false' can't be used as an identifier because it's a keyword., Try renaming this to be an identifier that isn't a keyword., {lexeme: false}], false, false)
@@ -701,7 +701,7 @@
     parseTopLevelKeywordDeclaration(;, class, Instance of 'DirectiveContext')
       parseClassDeclarationModifiers(;, class)
       parseClassOrNamedMixinApplication(null, class)
-        listener: beginClassOrNamedMixinApplicationPrelude(class)
+        listener: beginClassOrMixinOrNamedMixinApplicationPrelude(class)
         ensureIdentifier(class, classOrMixinDeclaration)
           reportRecoverableErrorWithToken(final, Instance of 'Template<(Token) => Message>')
             listener: handleRecoverableError(Message[ExpectedIdentifierButGotKeyword, 'final' can't be used as an identifier because it's a keyword., Try renaming this to be an identifier that isn't a keyword., {lexeme: final}], final, final)
@@ -730,7 +730,7 @@
     parseTopLevelKeywordDeclaration(;, class, Instance of 'DirectiveContext')
       parseClassDeclarationModifiers(;, class)
       parseClassOrNamedMixinApplication(null, class)
-        listener: beginClassOrNamedMixinApplicationPrelude(class)
+        listener: beginClassOrMixinOrNamedMixinApplicationPrelude(class)
         ensureIdentifier(class, classOrMixinDeclaration)
           reportRecoverableErrorWithToken(finally, Instance of 'Template<(Token) => Message>')
             listener: handleRecoverableError(Message[ExpectedIdentifierButGotKeyword, 'finally' can't be used as an identifier because it's a keyword., Try renaming this to be an identifier that isn't a keyword., {lexeme: finally}], finally, finally)
@@ -759,7 +759,7 @@
     parseTopLevelKeywordDeclaration(;, class, Instance of 'DirectiveContext')
       parseClassDeclarationModifiers(;, class)
       parseClassOrNamedMixinApplication(null, class)
-        listener: beginClassOrNamedMixinApplicationPrelude(class)
+        listener: beginClassOrMixinOrNamedMixinApplicationPrelude(class)
         ensureIdentifier(class, classOrMixinDeclaration)
           reportRecoverableErrorWithToken(for, Instance of 'Template<(Token) => Message>')
             listener: handleRecoverableError(Message[ExpectedIdentifierButGotKeyword, 'for' can't be used as an identifier because it's a keyword., Try renaming this to be an identifier that isn't a keyword., {lexeme: for}], for, for)
@@ -788,7 +788,7 @@
     parseTopLevelKeywordDeclaration(;, class, Instance of 'DirectiveContext')
       parseClassDeclarationModifiers(;, class)
       parseClassOrNamedMixinApplication(null, class)
-        listener: beginClassOrNamedMixinApplicationPrelude(class)
+        listener: beginClassOrMixinOrNamedMixinApplicationPrelude(class)
         ensureIdentifier(class, classOrMixinDeclaration)
           listener: handleIdentifier(Function, classOrMixinDeclaration)
         listener: handleNoTypeVariables(=)
@@ -815,7 +815,7 @@
     parseTopLevelKeywordDeclaration(;, class, Instance of 'DirectiveContext')
       parseClassDeclarationModifiers(;, class)
       parseClassOrNamedMixinApplication(null, class)
-        listener: beginClassOrNamedMixinApplicationPrelude(class)
+        listener: beginClassOrMixinOrNamedMixinApplicationPrelude(class)
         ensureIdentifier(class, classOrMixinDeclaration)
           reportRecoverableErrorWithToken(get, Instance of 'Template<(Token) => Message>')
             listener: handleRecoverableError(Message[BuiltInIdentifierInDeclaration, Can't use 'get' as a name here., null, {lexeme: get}], get, get)
@@ -844,7 +844,7 @@
     parseTopLevelKeywordDeclaration(;, class, Instance of 'DirectiveContext')
       parseClassDeclarationModifiers(;, class)
       parseClassOrNamedMixinApplication(null, class)
-        listener: beginClassOrNamedMixinApplicationPrelude(class)
+        listener: beginClassOrMixinOrNamedMixinApplicationPrelude(class)
         ensureIdentifier(class, classOrMixinDeclaration)
           listener: handleIdentifier(hide, classOrMixinDeclaration)
         listener: handleNoTypeVariables(=)
@@ -871,7 +871,7 @@
     parseTopLevelKeywordDeclaration(;, class, Instance of 'DirectiveContext')
       parseClassDeclarationModifiers(;, class)
       parseClassOrNamedMixinApplication(null, class)
-        listener: beginClassOrNamedMixinApplicationPrelude(class)
+        listener: beginClassOrMixinOrNamedMixinApplicationPrelude(class)
         ensureIdentifier(class, classOrMixinDeclaration)
           reportRecoverableErrorWithToken(if, Instance of 'Template<(Token) => Message>')
             listener: handleRecoverableError(Message[ExpectedIdentifierButGotKeyword, 'if' can't be used as an identifier because it's a keyword., Try renaming this to be an identifier that isn't a keyword., {lexeme: if}], if, if)
@@ -900,7 +900,7 @@
     parseTopLevelKeywordDeclaration(;, class, Instance of 'DirectiveContext')
       parseClassDeclarationModifiers(;, class)
       parseClassOrNamedMixinApplication(null, class)
-        listener: beginClassOrNamedMixinApplicationPrelude(class)
+        listener: beginClassOrMixinOrNamedMixinApplicationPrelude(class)
         ensureIdentifier(class, classOrMixinDeclaration)
           reportRecoverableErrorWithToken(implements, Instance of 'Template<(Token) => Message>')
             listener: handleRecoverableError(Message[BuiltInIdentifierInDeclaration, Can't use 'implements' as a name here., null, {lexeme: implements}], implements, implements)
@@ -929,7 +929,7 @@
     parseTopLevelKeywordDeclaration(;, class, Instance of 'DirectiveContext')
       parseClassDeclarationModifiers(;, class)
       parseClassOrNamedMixinApplication(null, class)
-        listener: beginClassOrNamedMixinApplicationPrelude(class)
+        listener: beginClassOrMixinOrNamedMixinApplicationPrelude(class)
         ensureIdentifier(class, classOrMixinDeclaration)
           reportRecoverableErrorWithToken(import, Instance of 'Template<(Token) => Message>')
             listener: handleRecoverableError(Message[BuiltInIdentifierInDeclaration, Can't use 'import' as a name here., null, {lexeme: import}], import, import)
@@ -958,7 +958,7 @@
     parseTopLevelKeywordDeclaration(;, class, Instance of 'DirectiveContext')
       parseClassDeclarationModifiers(;, class)
       parseClassOrNamedMixinApplication(null, class)
-        listener: beginClassOrNamedMixinApplicationPrelude(class)
+        listener: beginClassOrMixinOrNamedMixinApplicationPrelude(class)
         ensureIdentifier(class, classOrMixinDeclaration)
           reportRecoverableErrorWithToken(in, Instance of 'Template<(Token) => Message>')
             listener: handleRecoverableError(Message[ExpectedIdentifierButGotKeyword, 'in' can't be used as an identifier because it's a keyword., Try renaming this to be an identifier that isn't a keyword., {lexeme: in}], in, in)
@@ -987,7 +987,7 @@
     parseTopLevelKeywordDeclaration(;, class, Instance of 'DirectiveContext')
       parseClassDeclarationModifiers(;, class)
       parseClassOrNamedMixinApplication(null, class)
-        listener: beginClassOrNamedMixinApplicationPrelude(class)
+        listener: beginClassOrMixinOrNamedMixinApplicationPrelude(class)
         ensureIdentifier(class, classOrMixinDeclaration)
           listener: handleIdentifier(inout, classOrMixinDeclaration)
         listener: handleNoTypeVariables(=)
@@ -1014,7 +1014,7 @@
     parseTopLevelKeywordDeclaration(;, class, Instance of 'DirectiveContext')
       parseClassDeclarationModifiers(;, class)
       parseClassOrNamedMixinApplication(null, class)
-        listener: beginClassOrNamedMixinApplicationPrelude(class)
+        listener: beginClassOrMixinOrNamedMixinApplicationPrelude(class)
         ensureIdentifier(class, classOrMixinDeclaration)
           reportRecoverableErrorWithToken(interface, Instance of 'Template<(Token) => Message>')
             listener: handleRecoverableError(Message[BuiltInIdentifierInDeclaration, Can't use 'interface' as a name here., null, {lexeme: interface}], interface, interface)
@@ -1043,7 +1043,7 @@
     parseTopLevelKeywordDeclaration(;, class, Instance of 'DirectiveContext')
       parseClassDeclarationModifiers(;, class)
       parseClassOrNamedMixinApplication(null, class)
-        listener: beginClassOrNamedMixinApplicationPrelude(class)
+        listener: beginClassOrMixinOrNamedMixinApplicationPrelude(class)
         ensureIdentifier(class, classOrMixinDeclaration)
           reportRecoverableErrorWithToken(is, Instance of 'Template<(Token) => Message>')
             listener: handleRecoverableError(Message[ExpectedIdentifierButGotKeyword, 'is' can't be used as an identifier because it's a keyword., Try renaming this to be an identifier that isn't a keyword., {lexeme: is}], is, is)
@@ -1072,7 +1072,7 @@
     parseTopLevelKeywordDeclaration(;, class, Instance of 'DirectiveContext')
       parseClassDeclarationModifiers(;, class)
       parseClassOrNamedMixinApplication(null, class)
-        listener: beginClassOrNamedMixinApplicationPrelude(class)
+        listener: beginClassOrMixinOrNamedMixinApplicationPrelude(class)
         ensureIdentifier(class, classOrMixinDeclaration)
           reportRecoverableErrorWithToken(late, Instance of 'Template<(Token) => Message>')
             listener: handleRecoverableError(Message[BuiltInIdentifierInDeclaration, Can't use 'late' as a name here., null, {lexeme: late}], late, late)
@@ -1101,7 +1101,7 @@
     parseTopLevelKeywordDeclaration(;, class, Instance of 'DirectiveContext')
       parseClassDeclarationModifiers(;, class)
       parseClassOrNamedMixinApplication(null, class)
-        listener: beginClassOrNamedMixinApplicationPrelude(class)
+        listener: beginClassOrMixinOrNamedMixinApplicationPrelude(class)
         ensureIdentifier(class, classOrMixinDeclaration)
           reportRecoverableErrorWithToken(library, Instance of 'Template<(Token) => Message>')
             listener: handleRecoverableError(Message[BuiltInIdentifierInDeclaration, Can't use 'library' as a name here., null, {lexeme: library}], library, library)
@@ -1130,7 +1130,7 @@
     parseTopLevelKeywordDeclaration(;, class, Instance of 'DirectiveContext')
       parseClassDeclarationModifiers(;, class)
       parseClassOrNamedMixinApplication(null, class)
-        listener: beginClassOrNamedMixinApplicationPrelude(class)
+        listener: beginClassOrMixinOrNamedMixinApplicationPrelude(class)
         ensureIdentifier(class, classOrMixinDeclaration)
           reportRecoverableErrorWithToken(mixin, Instance of 'Template<(Token) => Message>')
             listener: handleRecoverableError(Message[BuiltInIdentifierInDeclaration, Can't use 'mixin' as a name here., null, {lexeme: mixin}], mixin, mixin)
@@ -1159,7 +1159,7 @@
     parseTopLevelKeywordDeclaration(;, class, Instance of 'DirectiveContext')
       parseClassDeclarationModifiers(;, class)
       parseClassOrNamedMixinApplication(null, class)
-        listener: beginClassOrNamedMixinApplicationPrelude(class)
+        listener: beginClassOrMixinOrNamedMixinApplicationPrelude(class)
         ensureIdentifier(class, classOrMixinDeclaration)
           listener: handleIdentifier(native, classOrMixinDeclaration)
         listener: handleNoTypeVariables(=)
@@ -1186,7 +1186,7 @@
     parseTopLevelKeywordDeclaration(;, class, Instance of 'DirectiveContext')
       parseClassDeclarationModifiers(;, class)
       parseClassOrNamedMixinApplication(null, class)
-        listener: beginClassOrNamedMixinApplicationPrelude(class)
+        listener: beginClassOrMixinOrNamedMixinApplicationPrelude(class)
         ensureIdentifier(class, classOrMixinDeclaration)
           reportRecoverableErrorWithToken(new, Instance of 'Template<(Token) => Message>')
             listener: handleRecoverableError(Message[ExpectedIdentifierButGotKeyword, 'new' can't be used as an identifier because it's a keyword., Try renaming this to be an identifier that isn't a keyword., {lexeme: new}], new, new)
@@ -1215,7 +1215,7 @@
     parseTopLevelKeywordDeclaration(;, class, Instance of 'DirectiveContext')
       parseClassDeclarationModifiers(;, class)
       parseClassOrNamedMixinApplication(null, class)
-        listener: beginClassOrNamedMixinApplicationPrelude(class)
+        listener: beginClassOrMixinOrNamedMixinApplicationPrelude(class)
         ensureIdentifier(class, classOrMixinDeclaration)
           reportRecoverableErrorWithToken(null, Instance of 'Template<(Token) => Message>')
             listener: handleRecoverableError(Message[ExpectedIdentifierButGotKeyword, 'null' can't be used as an identifier because it's a keyword., Try renaming this to be an identifier that isn't a keyword., {lexeme: null}], null, null)
@@ -1244,7 +1244,7 @@
     parseTopLevelKeywordDeclaration(;, class, Instance of 'DirectiveContext')
       parseClassDeclarationModifiers(;, class)
       parseClassOrNamedMixinApplication(null, class)
-        listener: beginClassOrNamedMixinApplicationPrelude(class)
+        listener: beginClassOrMixinOrNamedMixinApplicationPrelude(class)
         ensureIdentifier(class, classOrMixinDeclaration)
           listener: handleIdentifier(of, classOrMixinDeclaration)
         listener: handleNoTypeVariables(=)
@@ -1271,7 +1271,7 @@
     parseTopLevelKeywordDeclaration(;, class, Instance of 'DirectiveContext')
       parseClassDeclarationModifiers(;, class)
       parseClassOrNamedMixinApplication(null, class)
-        listener: beginClassOrNamedMixinApplicationPrelude(class)
+        listener: beginClassOrMixinOrNamedMixinApplicationPrelude(class)
         ensureIdentifier(class, classOrMixinDeclaration)
           listener: handleIdentifier(on, classOrMixinDeclaration)
         listener: handleNoTypeVariables(=)
@@ -1298,7 +1298,7 @@
     parseTopLevelKeywordDeclaration(;, class, Instance of 'DirectiveContext')
       parseClassDeclarationModifiers(;, class)
       parseClassOrNamedMixinApplication(null, class)
-        listener: beginClassOrNamedMixinApplicationPrelude(class)
+        listener: beginClassOrMixinOrNamedMixinApplicationPrelude(class)
         ensureIdentifier(class, classOrMixinDeclaration)
           reportRecoverableErrorWithToken(operator, Instance of 'Template<(Token) => Message>')
             listener: handleRecoverableError(Message[BuiltInIdentifierInDeclaration, Can't use 'operator' as a name here., null, {lexeme: operator}], operator, operator)
@@ -1327,7 +1327,7 @@
     parseTopLevelKeywordDeclaration(;, class, Instance of 'DirectiveContext')
       parseClassDeclarationModifiers(;, class)
       parseClassOrNamedMixinApplication(null, class)
-        listener: beginClassOrNamedMixinApplicationPrelude(class)
+        listener: beginClassOrMixinOrNamedMixinApplicationPrelude(class)
         ensureIdentifier(class, classOrMixinDeclaration)
           listener: handleIdentifier(out, classOrMixinDeclaration)
         listener: handleNoTypeVariables(=)
@@ -1354,7 +1354,7 @@
     parseTopLevelKeywordDeclaration(;, class, Instance of 'DirectiveContext')
       parseClassDeclarationModifiers(;, class)
       parseClassOrNamedMixinApplication(null, class)
-        listener: beginClassOrNamedMixinApplicationPrelude(class)
+        listener: beginClassOrMixinOrNamedMixinApplicationPrelude(class)
         ensureIdentifier(class, classOrMixinDeclaration)
           reportRecoverableErrorWithToken(part, Instance of 'Template<(Token) => Message>')
             listener: handleRecoverableError(Message[BuiltInIdentifierInDeclaration, Can't use 'part' as a name here., null, {lexeme: part}], part, part)
@@ -1383,7 +1383,7 @@
     parseTopLevelKeywordDeclaration(;, class, Instance of 'DirectiveContext')
       parseClassDeclarationModifiers(;, class)
       parseClassOrNamedMixinApplication(null, class)
-        listener: beginClassOrNamedMixinApplicationPrelude(class)
+        listener: beginClassOrMixinOrNamedMixinApplicationPrelude(class)
         ensureIdentifier(class, classOrMixinDeclaration)
           listener: handleIdentifier(patch, classOrMixinDeclaration)
         listener: handleNoTypeVariables(=)
@@ -1410,7 +1410,7 @@
     parseTopLevelKeywordDeclaration(;, class, Instance of 'DirectiveContext')
       parseClassDeclarationModifiers(;, class)
       parseClassOrNamedMixinApplication(null, class)
-        listener: beginClassOrNamedMixinApplicationPrelude(class)
+        listener: beginClassOrMixinOrNamedMixinApplicationPrelude(class)
         ensureIdentifier(class, classOrMixinDeclaration)
           reportRecoverableErrorWithToken(required, Instance of 'Template<(Token) => Message>')
             listener: handleRecoverableError(Message[BuiltInIdentifierInDeclaration, Can't use 'required' as a name here., null, {lexeme: required}], required, required)
@@ -1439,7 +1439,7 @@
     parseTopLevelKeywordDeclaration(;, class, Instance of 'DirectiveContext')
       parseClassDeclarationModifiers(;, class)
       parseClassOrNamedMixinApplication(null, class)
-        listener: beginClassOrNamedMixinApplicationPrelude(class)
+        listener: beginClassOrMixinOrNamedMixinApplicationPrelude(class)
         ensureIdentifier(class, classOrMixinDeclaration)
           reportRecoverableErrorWithToken(rethrow, Instance of 'Template<(Token) => Message>')
             listener: handleRecoverableError(Message[ExpectedIdentifierButGotKeyword, 'rethrow' can't be used as an identifier because it's a keyword., Try renaming this to be an identifier that isn't a keyword., {lexeme: rethrow}], rethrow, rethrow)
@@ -1468,7 +1468,7 @@
     parseTopLevelKeywordDeclaration(;, class, Instance of 'DirectiveContext')
       parseClassDeclarationModifiers(;, class)
       parseClassOrNamedMixinApplication(null, class)
-        listener: beginClassOrNamedMixinApplicationPrelude(class)
+        listener: beginClassOrMixinOrNamedMixinApplicationPrelude(class)
         ensureIdentifier(class, classOrMixinDeclaration)
           reportRecoverableErrorWithToken(return, Instance of 'Template<(Token) => Message>')
             listener: handleRecoverableError(Message[ExpectedIdentifierButGotKeyword, 'return' can't be used as an identifier because it's a keyword., Try renaming this to be an identifier that isn't a keyword., {lexeme: return}], return, return)
@@ -1497,7 +1497,7 @@
     parseTopLevelKeywordDeclaration(;, class, Instance of 'DirectiveContext')
       parseClassDeclarationModifiers(;, class)
       parseClassOrNamedMixinApplication(null, class)
-        listener: beginClassOrNamedMixinApplicationPrelude(class)
+        listener: beginClassOrMixinOrNamedMixinApplicationPrelude(class)
         ensureIdentifier(class, classOrMixinDeclaration)
           reportRecoverableErrorWithToken(set, Instance of 'Template<(Token) => Message>')
             listener: handleRecoverableError(Message[BuiltInIdentifierInDeclaration, Can't use 'set' as a name here., null, {lexeme: set}], set, set)
@@ -1526,7 +1526,7 @@
     parseTopLevelKeywordDeclaration(;, class, Instance of 'DirectiveContext')
       parseClassDeclarationModifiers(;, class)
       parseClassOrNamedMixinApplication(null, class)
-        listener: beginClassOrNamedMixinApplicationPrelude(class)
+        listener: beginClassOrMixinOrNamedMixinApplicationPrelude(class)
         ensureIdentifier(class, classOrMixinDeclaration)
           listener: handleIdentifier(show, classOrMixinDeclaration)
         listener: handleNoTypeVariables(=)
@@ -1553,7 +1553,7 @@
     parseTopLevelKeywordDeclaration(;, class, Instance of 'DirectiveContext')
       parseClassDeclarationModifiers(;, class)
       parseClassOrNamedMixinApplication(null, class)
-        listener: beginClassOrNamedMixinApplicationPrelude(class)
+        listener: beginClassOrMixinOrNamedMixinApplicationPrelude(class)
         ensureIdentifier(class, classOrMixinDeclaration)
           listener: handleIdentifier(source, classOrMixinDeclaration)
         listener: handleNoTypeVariables(=)
@@ -1580,7 +1580,7 @@
     parseTopLevelKeywordDeclaration(;, class, Instance of 'DirectiveContext')
       parseClassDeclarationModifiers(;, class)
       parseClassOrNamedMixinApplication(null, class)
-        listener: beginClassOrNamedMixinApplicationPrelude(class)
+        listener: beginClassOrMixinOrNamedMixinApplicationPrelude(class)
         ensureIdentifier(class, classOrMixinDeclaration)
           reportRecoverableErrorWithToken(static, Instance of 'Template<(Token) => Message>')
             listener: handleRecoverableError(Message[BuiltInIdentifierInDeclaration, Can't use 'static' as a name here., null, {lexeme: static}], static, static)
@@ -1609,7 +1609,7 @@
     parseTopLevelKeywordDeclaration(;, class, Instance of 'DirectiveContext')
       parseClassDeclarationModifiers(;, class)
       parseClassOrNamedMixinApplication(null, class)
-        listener: beginClassOrNamedMixinApplicationPrelude(class)
+        listener: beginClassOrMixinOrNamedMixinApplicationPrelude(class)
         ensureIdentifier(class, classOrMixinDeclaration)
           reportRecoverableErrorWithToken(super, Instance of 'Template<(Token) => Message>')
             listener: handleRecoverableError(Message[ExpectedIdentifierButGotKeyword, 'super' can't be used as an identifier because it's a keyword., Try renaming this to be an identifier that isn't a keyword., {lexeme: super}], super, super)
@@ -1638,7 +1638,7 @@
     parseTopLevelKeywordDeclaration(;, class, Instance of 'DirectiveContext')
       parseClassDeclarationModifiers(;, class)
       parseClassOrNamedMixinApplication(null, class)
-        listener: beginClassOrNamedMixinApplicationPrelude(class)
+        listener: beginClassOrMixinOrNamedMixinApplicationPrelude(class)
         ensureIdentifier(class, classOrMixinDeclaration)
           reportRecoverableErrorWithToken(switch, Instance of 'Template<(Token) => Message>')
             listener: handleRecoverableError(Message[ExpectedIdentifierButGotKeyword, 'switch' can't be used as an identifier because it's a keyword., Try renaming this to be an identifier that isn't a keyword., {lexeme: switch}], switch, switch)
@@ -1667,7 +1667,7 @@
     parseTopLevelKeywordDeclaration(;, class, Instance of 'DirectiveContext')
       parseClassDeclarationModifiers(;, class)
       parseClassOrNamedMixinApplication(null, class)
-        listener: beginClassOrNamedMixinApplicationPrelude(class)
+        listener: beginClassOrMixinOrNamedMixinApplicationPrelude(class)
         ensureIdentifier(class, classOrMixinDeclaration)
           listener: handleIdentifier(sync, classOrMixinDeclaration)
         listener: handleNoTypeVariables(=)
@@ -1694,7 +1694,7 @@
     parseTopLevelKeywordDeclaration(;, class, Instance of 'DirectiveContext')
       parseClassDeclarationModifiers(;, class)
       parseClassOrNamedMixinApplication(null, class)
-        listener: beginClassOrNamedMixinApplicationPrelude(class)
+        listener: beginClassOrMixinOrNamedMixinApplicationPrelude(class)
         ensureIdentifier(class, classOrMixinDeclaration)
           reportRecoverableErrorWithToken(this, Instance of 'Template<(Token) => Message>')
             listener: handleRecoverableError(Message[ExpectedIdentifierButGotKeyword, 'this' can't be used as an identifier because it's a keyword., Try renaming this to be an identifier that isn't a keyword., {lexeme: this}], this, this)
@@ -1723,7 +1723,7 @@
     parseTopLevelKeywordDeclaration(;, class, Instance of 'DirectiveContext')
       parseClassDeclarationModifiers(;, class)
       parseClassOrNamedMixinApplication(null, class)
-        listener: beginClassOrNamedMixinApplicationPrelude(class)
+        listener: beginClassOrMixinOrNamedMixinApplicationPrelude(class)
         ensureIdentifier(class, classOrMixinDeclaration)
           reportRecoverableErrorWithToken(throw, Instance of 'Template<(Token) => Message>')
             listener: handleRecoverableError(Message[ExpectedIdentifierButGotKeyword, 'throw' can't be used as an identifier because it's a keyword., Try renaming this to be an identifier that isn't a keyword., {lexeme: throw}], throw, throw)
@@ -1752,7 +1752,7 @@
     parseTopLevelKeywordDeclaration(;, class, Instance of 'DirectiveContext')
       parseClassDeclarationModifiers(;, class)
       parseClassOrNamedMixinApplication(null, class)
-        listener: beginClassOrNamedMixinApplicationPrelude(class)
+        listener: beginClassOrMixinOrNamedMixinApplicationPrelude(class)
         ensureIdentifier(class, classOrMixinDeclaration)
           reportRecoverableErrorWithToken(true, Instance of 'Template<(Token) => Message>')
             listener: handleRecoverableError(Message[ExpectedIdentifierButGotKeyword, 'true' can't be used as an identifier because it's a keyword., Try renaming this to be an identifier that isn't a keyword., {lexeme: true}], true, true)
@@ -1781,7 +1781,7 @@
     parseTopLevelKeywordDeclaration(;, class, Instance of 'DirectiveContext')
       parseClassDeclarationModifiers(;, class)
       parseClassOrNamedMixinApplication(null, class)
-        listener: beginClassOrNamedMixinApplicationPrelude(class)
+        listener: beginClassOrMixinOrNamedMixinApplicationPrelude(class)
         ensureIdentifier(class, classOrMixinDeclaration)
           reportRecoverableErrorWithToken(try, Instance of 'Template<(Token) => Message>')
             listener: handleRecoverableError(Message[ExpectedIdentifierButGotKeyword, 'try' can't be used as an identifier because it's a keyword., Try renaming this to be an identifier that isn't a keyword., {lexeme: try}], try, try)
@@ -1810,7 +1810,7 @@
     parseTopLevelKeywordDeclaration(;, class, Instance of 'DirectiveContext')
       parseClassDeclarationModifiers(;, class)
       parseClassOrNamedMixinApplication(null, class)
-        listener: beginClassOrNamedMixinApplicationPrelude(class)
+        listener: beginClassOrMixinOrNamedMixinApplicationPrelude(class)
         ensureIdentifier(class, classOrMixinDeclaration)
           reportRecoverableErrorWithToken(typedef, Instance of 'Template<(Token) => Message>')
             listener: handleRecoverableError(Message[BuiltInIdentifierInDeclaration, Can't use 'typedef' as a name here., null, {lexeme: typedef}], typedef, typedef)
@@ -1839,7 +1839,7 @@
     parseTopLevelKeywordDeclaration(;, class, Instance of 'DirectiveContext')
       parseClassDeclarationModifiers(;, class)
       parseClassOrNamedMixinApplication(null, class)
-        listener: beginClassOrNamedMixinApplicationPrelude(class)
+        listener: beginClassOrMixinOrNamedMixinApplicationPrelude(class)
         ensureIdentifier(class, classOrMixinDeclaration)
           reportRecoverableErrorWithToken(var, Instance of 'Template<(Token) => Message>')
             listener: handleRecoverableError(Message[ExpectedIdentifierButGotKeyword, 'var' can't be used as an identifier because it's a keyword., Try renaming this to be an identifier that isn't a keyword., {lexeme: var}], var, var)
@@ -1868,7 +1868,7 @@
     parseTopLevelKeywordDeclaration(;, class, Instance of 'DirectiveContext')
       parseClassDeclarationModifiers(;, class)
       parseClassOrNamedMixinApplication(null, class)
-        listener: beginClassOrNamedMixinApplicationPrelude(class)
+        listener: beginClassOrMixinOrNamedMixinApplicationPrelude(class)
         ensureIdentifier(class, classOrMixinDeclaration)
           reportRecoverableErrorWithToken(void, Instance of 'Template<(Token) => Message>')
             listener: handleRecoverableError(Message[ExpectedIdentifierButGotKeyword, 'void' can't be used as an identifier because it's a keyword., Try renaming this to be an identifier that isn't a keyword., {lexeme: void}], void, void)
@@ -1897,7 +1897,7 @@
     parseTopLevelKeywordDeclaration(;, class, Instance of 'DirectiveContext')
       parseClassDeclarationModifiers(;, class)
       parseClassOrNamedMixinApplication(null, class)
-        listener: beginClassOrNamedMixinApplicationPrelude(class)
+        listener: beginClassOrMixinOrNamedMixinApplicationPrelude(class)
         ensureIdentifier(class, classOrMixinDeclaration)
           reportRecoverableErrorWithToken(while, Instance of 'Template<(Token) => Message>')
             listener: handleRecoverableError(Message[ExpectedIdentifierButGotKeyword, 'while' can't be used as an identifier because it's a keyword., Try renaming this to be an identifier that isn't a keyword., {lexeme: while}], while, while)
@@ -1926,7 +1926,7 @@
     parseTopLevelKeywordDeclaration(;, class, Instance of 'DirectiveContext')
       parseClassDeclarationModifiers(;, class)
       parseClassOrNamedMixinApplication(null, class)
-        listener: beginClassOrNamedMixinApplicationPrelude(class)
+        listener: beginClassOrMixinOrNamedMixinApplicationPrelude(class)
         ensureIdentifier(class, classOrMixinDeclaration)
           reportRecoverableErrorWithToken(with, Instance of 'Template<(Token) => Message>')
             listener: handleRecoverableError(Message[ExpectedIdentifierButGotKeyword, 'with' can't be used as an identifier because it's a keyword., Try renaming this to be an identifier that isn't a keyword., {lexeme: with}], with, with)
@@ -1955,7 +1955,7 @@
     parseTopLevelKeywordDeclaration(;, class, Instance of 'DirectiveContext')
       parseClassDeclarationModifiers(;, class)
       parseClassOrNamedMixinApplication(null, class)
-        listener: beginClassOrNamedMixinApplicationPrelude(class)
+        listener: beginClassOrMixinOrNamedMixinApplicationPrelude(class)
         ensureIdentifier(class, classOrMixinDeclaration)
           listener: handleIdentifier(yield, classOrMixinDeclaration)
         listener: handleNoTypeVariables(=)
diff --git a/pkg/front_end/parser_testcases/error_recovery/issue_46346_prime_2.dart.expect b/pkg/front_end/parser_testcases/error_recovery/issue_46346_prime_2.dart.expect
index 86afa58..de863a7 100644
--- a/pkg/front_end/parser_testcases/error_recovery/issue_46346_prime_2.dart.expect
+++ b/pkg/front_end/parser_testcases/error_recovery/issue_46346_prime_2.dart.expect
@@ -15,7 +15,7 @@
 beginCompilationUnit(class)
   beginMetadataStar(class)
   endMetadataStar(0)
-  beginClassOrNamedMixinApplicationPrelude(class)
+  beginClassOrMixinOrNamedMixinApplicationPrelude(class)
     handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got ''., Try inserting an identifier before ''., {lexeme: }], , )
     // WARNING: Reporting at eof for .
     handleIdentifier(, classOrMixinDeclaration)
@@ -33,8 +33,8 @@
       handleRecoverClassHeader()
       handleRecoverableError(Message[ExpectedClassOrMixinBody, A class declaration must have a body, even if it is empty., Try adding an empty body., {string: class declaration}], , )
       // WARNING: Reporting at eof for .
-      beginClassOrMixinBody(DeclarationKind.Class, {)
-      endClassOrMixinBody(DeclarationKind.Class, 0, {, })
+      beginClassOrMixinOrExtensionBody(DeclarationKind.Class, {)
+      endClassOrMixinOrExtensionBody(DeclarationKind.Class, 0, {, })
     endClassDeclaration(class, })
   endTopLevelDeclaration()
 endCompilationUnit(1, )
diff --git a/pkg/front_end/parser_testcases/error_recovery/issue_46346_prime_2.dart.intertwined.expect b/pkg/front_end/parser_testcases/error_recovery/issue_46346_prime_2.dart.intertwined.expect
index 766bdc3..6dbf406 100644
--- a/pkg/front_end/parser_testcases/error_recovery/issue_46346_prime_2.dart.intertwined.expect
+++ b/pkg/front_end/parser_testcases/error_recovery/issue_46346_prime_2.dart.intertwined.expect
@@ -9,7 +9,7 @@
     parseTopLevelKeywordDeclaration(, class, Instance of 'DirectiveContext')
       parseClassDeclarationModifiers(, class)
       parseClassOrNamedMixinApplication(null, class)
-        listener: beginClassOrNamedMixinApplicationPrelude(class)
+        listener: beginClassOrMixinOrNamedMixinApplicationPrelude(class)
         ensureIdentifier(class, classOrMixinDeclaration)
           insertSyntheticIdentifier(class, classOrMixinDeclaration, message: Message[ExpectedIdentifier, Expected an identifier, but got ''., Try inserting an identifier before ''., {lexeme: }], messageOnToken: null)
             reportRecoverableError(, Message[ExpectedIdentifier, Expected an identifier, but got ''., Try inserting an identifier before ''., {lexeme: }])
@@ -51,9 +51,9 @@
               rewriter()
               rewriter()
           parseClassOrMixinOrExtensionBody(, DeclarationKind.Class, )
-            listener: beginClassOrMixinBody(DeclarationKind.Class, {)
+            listener: beginClassOrMixinOrExtensionBody(DeclarationKind.Class, {)
             notEofOrValue(}, })
-            listener: endClassOrMixinBody(DeclarationKind.Class, 0, {, })
+            listener: endClassOrMixinOrExtensionBody(DeclarationKind.Class, 0, {, })
           listener: endClassDeclaration(class, })
   listener: endTopLevelDeclaration()
   reportAllErrorTokens(class)
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 7467b87..2735118 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
@@ -27,7 +27,7 @@
 beginCompilationUnit(class)
   beginMetadataStar(class)
   endMetadataStar(0)
-  beginClassOrNamedMixinApplicationPrelude(class)
+  beginClassOrMixinOrNamedMixinApplicationPrelude(class)
     handleIdentifier(A, classOrMixinDeclaration)
     handleNoTypeVariables({)
     beginClassDeclaration(class, null, A)
@@ -36,11 +36,11 @@
       handleClassNoWithClause()
       handleClassOrMixinImplements(null, 0)
       handleClassHeader(class, class, null)
-      beginClassOrMixinBody(DeclarationKind.Class, {)
+      beginClassOrMixinOrExtensionBody(DeclarationKind.Class, {)
         beginMetadataStar(Stream)
         endMetadataStar(0)
         beginMember()
-          beginFields({)
+          beginFields(DeclarationKind.Class, null, null, null, null, null, null, {)
             handleIdentifier(Stream, typeReference)
             beginTypeArguments(<)
               handleIdentifier(List, typeReference)
@@ -59,12 +59,12 @@
             handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], >, >)
           endClassFields(null, null, null, null, null, null, 1, Stream, ;)
         endMember()
-      endClassOrMixinBody(DeclarationKind.Class, 1, {, })
+      endClassOrMixinOrExtensionBody(DeclarationKind.Class, 1, {, })
     endClassDeclaration(class, })
   endTopLevelDeclaration(class)
   beginMetadataStar(class)
   endMetadataStar(0)
-  beginClassOrNamedMixinApplicationPrelude(class)
+  beginClassOrMixinOrNamedMixinApplicationPrelude(class)
     handleIdentifier(B, classOrMixinDeclaration)
     handleNoTypeVariables({)
     beginClassDeclaration(class, null, B)
@@ -73,11 +73,11 @@
       handleClassNoWithClause()
       handleClassOrMixinImplements(null, 0)
       handleClassHeader(class, class, null)
-      beginClassOrMixinBody(DeclarationKind.Class, {)
+      beginClassOrMixinOrExtensionBody(DeclarationKind.Class, {)
         beginMetadataStar(List)
         endMetadataStar(0)
         beginMember()
-          beginFields({)
+          beginFields(DeclarationKind.Class, null, null, null, null, null, null, {)
             handleIdentifier(List, typeReference)
             beginTypeArguments(<)
               handleRecoverableError(Message[ExpectedType, Expected a type, but got '>'., null, {lexeme: >}], >, >)
@@ -92,7 +92,7 @@
             handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], >, >)
           endClassFields(null, null, null, null, null, null, 1, List, ;)
         endMember()
-      endClassOrMixinBody(DeclarationKind.Class, 1, {, })
+      endClassOrMixinOrExtensionBody(DeclarationKind.Class, 1, {, })
     endClassDeclaration(class, })
   endTopLevelDeclaration()
 endCompilationUnit(2, )
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 1354d2a..fec64a0 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
@@ -9,7 +9,7 @@
     parseTopLevelKeywordDeclaration(, class, Instance of 'DirectiveContext')
       parseClassDeclarationModifiers(, class)
       parseClassOrNamedMixinApplication(null, class)
-        listener: beginClassOrNamedMixinApplicationPrelude(class)
+        listener: beginClassOrMixinOrNamedMixinApplicationPrelude(class)
         ensureIdentifier(class, classOrMixinDeclaration)
           listener: handleIdentifier(A, classOrMixinDeclaration)
         listener: handleNoTypeVariables({)
@@ -25,7 +25,7 @@
               listener: handleClassOrMixinImplements(null, 0)
             listener: handleClassHeader(class, class, null)
           parseClassOrMixinOrExtensionBody(A, DeclarationKind.Class, A)
-            listener: beginClassOrMixinBody(DeclarationKind.Class, {)
+            listener: beginClassOrMixinOrExtensionBody(DeclarationKind.Class, {)
             notEofOrValue(}, Stream)
             parseClassOrMixinOrExtensionMemberImpl({, DeclarationKind.Class, A)
               parseMetadataStar({)
@@ -34,7 +34,7 @@
               listener: beginMember()
               recoverFromInvalidMember(>, {, null, null, null, null, null, null, {, Instance of 'ComplexTypeInfo', null, DeclarationKind.Class, A)
                 parseFields({, null, null, null, null, null, null, {, Instance of 'ComplexTypeInfo', }, DeclarationKind.Class, A, false)
-                  listener: beginFields({)
+                  listener: beginFields(DeclarationKind.Class, null, null, null, null, null, null, {)
                   ensureIdentifier({, typeReference)
                     listener: handleIdentifier(Stream, typeReference)
                   listener: beginTypeArguments(<)
@@ -66,7 +66,7 @@
                   listener: endClassFields(null, null, null, null, null, null, 1, Stream, ;)
                 listener: endMember()
             notEofOrValue(}, })
-            listener: endClassOrMixinBody(DeclarationKind.Class, 1, {, })
+            listener: endClassOrMixinOrExtensionBody(DeclarationKind.Class, 1, {, })
           listener: endClassDeclaration(class, })
   listener: endTopLevelDeclaration(class)
   parseTopLevelDeclarationImpl(}, Instance of 'DirectiveContext')
@@ -76,7 +76,7 @@
     parseTopLevelKeywordDeclaration(}, class, Instance of 'DirectiveContext')
       parseClassDeclarationModifiers(}, class)
       parseClassOrNamedMixinApplication(null, class)
-        listener: beginClassOrNamedMixinApplicationPrelude(class)
+        listener: beginClassOrMixinOrNamedMixinApplicationPrelude(class)
         ensureIdentifier(class, classOrMixinDeclaration)
           listener: handleIdentifier(B, classOrMixinDeclaration)
         listener: handleNoTypeVariables({)
@@ -92,7 +92,7 @@
               listener: handleClassOrMixinImplements(null, 0)
             listener: handleClassHeader(class, class, null)
           parseClassOrMixinOrExtensionBody(B, DeclarationKind.Class, B)
-            listener: beginClassOrMixinBody(DeclarationKind.Class, {)
+            listener: beginClassOrMixinOrExtensionBody(DeclarationKind.Class, {)
             notEofOrValue(}, List)
             parseClassOrMixinOrExtensionMemberImpl({, DeclarationKind.Class, B)
               parseMetadataStar({)
@@ -101,7 +101,7 @@
               listener: beginMember()
               recoverFromInvalidMember(>, {, null, null, null, null, null, null, {, Instance of 'ComplexTypeInfo', null, DeclarationKind.Class, B)
                 parseFields({, null, null, null, null, null, null, {, Instance of 'ComplexTypeInfo', }, DeclarationKind.Class, B, false)
-                  listener: beginFields({)
+                  listener: beginFields(DeclarationKind.Class, null, null, null, null, null, null, {)
                   ensureIdentifier({, typeReference)
                     listener: handleIdentifier(List, typeReference)
                   listener: beginTypeArguments(<)
@@ -128,7 +128,7 @@
                   listener: endClassFields(null, null, null, null, null, null, 1, List, ;)
                 listener: endMember()
             notEofOrValue(}, })
-            listener: endClassOrMixinBody(DeclarationKind.Class, 1, {, })
+            listener: endClassOrMixinOrExtensionBody(DeclarationKind.Class, 1, {, })
           listener: endClassDeclaration(class, })
   listener: endTopLevelDeclaration()
   reportAllErrorTokens(class)
diff --git a/pkg/front_end/parser_testcases/error_recovery/issue_46505_prime_1.crash_dart.expect b/pkg/front_end/parser_testcases/error_recovery/issue_46505_prime_1.crash_dart.expect
index 553647a..5f9ce60 100644
--- a/pkg/front_end/parser_testcases/error_recovery/issue_46505_prime_1.crash_dart.expect
+++ b/pkg/front_end/parser_testcases/error_recovery/issue_46505_prime_1.crash_dart.expect
@@ -7,7 +7,7 @@
 beginCompilationUnit(class)
   beginMetadataStar(class)
   endMetadataStar(0)
-  beginClassOrNamedMixinApplicationPrelude(class)
+  beginClassOrMixinOrNamedMixinApplicationPrelude(class)
     handleIdentifier(A, classOrMixinDeclaration)
     handleNoTypeVariables({)
     beginClassDeclaration(class, null, A)
@@ -16,11 +16,11 @@
       handleClassNoWithClause()
       handleClassOrMixinImplements(null, 0)
       handleClassHeader(class, class, null)
-      beginClassOrMixinBody(DeclarationKind.Class, {)
+      beginClassOrMixinOrExtensionBody(DeclarationKind.Class, {)
         beginMetadataStar(Stream)
         endMetadataStar(0)
         beginMember()
-          beginMethod(null, null, null, null, null, x)
+          beginMethod(DeclarationKind.Class, null, null, null, null, null, x)
             handleIdentifier(Stream, typeReference)
             beginTypeArguments(<)
               handleIdentifier(List, typeReference)
@@ -43,7 +43,7 @@
             endBlockFunctionBody(0, {, })
           endClassMethod(null, Stream, (, null, })
         endMember()
-      endClassOrMixinBody(DeclarationKind.Class, 1, {, })
+      endClassOrMixinOrExtensionBody(DeclarationKind.Class, 1, {, })
     endClassDeclaration(class, })
   endTopLevelDeclaration()
 endCompilationUnit(1, )
diff --git a/pkg/front_end/parser_testcases/error_recovery/issue_46505_prime_1.crash_dart.intertwined.expect b/pkg/front_end/parser_testcases/error_recovery/issue_46505_prime_1.crash_dart.intertwined.expect
index 4d94337..e9142c6 100644
--- a/pkg/front_end/parser_testcases/error_recovery/issue_46505_prime_1.crash_dart.intertwined.expect
+++ b/pkg/front_end/parser_testcases/error_recovery/issue_46505_prime_1.crash_dart.intertwined.expect
@@ -9,7 +9,7 @@
     parseTopLevelKeywordDeclaration(, class, Instance of 'DirectiveContext')
       parseClassDeclarationModifiers(, class)
       parseClassOrNamedMixinApplication(null, class)
-        listener: beginClassOrNamedMixinApplicationPrelude(class)
+        listener: beginClassOrMixinOrNamedMixinApplicationPrelude(class)
         ensureIdentifier(class, classOrMixinDeclaration)
           listener: handleIdentifier(A, classOrMixinDeclaration)
         listener: handleNoTypeVariables({)
@@ -25,7 +25,7 @@
               listener: handleClassOrMixinImplements(null, 0)
             listener: handleClassHeader(class, class, null)
           parseClassOrMixinOrExtensionBody(A, DeclarationKind.Class, A)
-            listener: beginClassOrMixinBody(DeclarationKind.Class, {)
+            listener: beginClassOrMixinOrExtensionBody(DeclarationKind.Class, {)
             notEofOrValue(}, Stream)
             parseClassOrMixinOrExtensionMemberImpl({, DeclarationKind.Class, A)
               parseMetadataStar({)
@@ -33,7 +33,7 @@
                 listener: endMetadataStar(0)
               listener: beginMember()
               parseMethod({, null, null, null, null, null, null, {, Instance of 'ComplexTypeInfo', null, x, DeclarationKind.Class, A, false)
-                listener: beginMethod(null, null, null, null, null, x)
+                listener: beginMethod(DeclarationKind.Class, null, null, null, null, null, x)
                 ensureIdentifier({, typeReference)
                   listener: handleIdentifier(Stream, typeReference)
                 listener: beginTypeArguments(<)
@@ -73,7 +73,7 @@
                 listener: endClassMethod(null, Stream, (, null, })
               listener: endMember()
             notEofOrValue(}, })
-            listener: endClassOrMixinBody(DeclarationKind.Class, 1, {, })
+            listener: endClassOrMixinOrExtensionBody(DeclarationKind.Class, 1, {, })
           listener: endClassDeclaration(class, })
   listener: endTopLevelDeclaration()
   reportAllErrorTokens(class)
diff --git a/pkg/front_end/parser_testcases/error_recovery/issue_46505_prime_2.crash_dart.expect b/pkg/front_end/parser_testcases/error_recovery/issue_46505_prime_2.crash_dart.expect
index cea3731..bdef6b4 100644
--- a/pkg/front_end/parser_testcases/error_recovery/issue_46505_prime_2.crash_dart.expect
+++ b/pkg/front_end/parser_testcases/error_recovery/issue_46505_prime_2.crash_dart.expect
@@ -1,7 +1,7 @@
 beginCompilationUnit(class)
   beginMetadataStar(class)
   endMetadataStar(0)
-  beginClassOrNamedMixinApplicationPrelude(class)
+  beginClassOrMixinOrNamedMixinApplicationPrelude(class)
     handleIdentifier(A, classOrMixinDeclaration)
     handleNoTypeVariables({)
     beginClassDeclaration(class, null, A)
@@ -10,11 +10,11 @@
       handleClassNoWithClause()
       handleClassOrMixinImplements(null, 0)
       handleClassHeader(class, class, null)
-      beginClassOrMixinBody(DeclarationKind.Class, {)
+      beginClassOrMixinOrExtensionBody(DeclarationKind.Class, {)
         beginMetadataStar(Stream)
         endMetadataStar(0)
         beginMember()
-          beginMethod(null, null, null, null, null, x)
+          beginMethod(DeclarationKind.Class, null, null, null, null, null, x)
             handleIdentifier(Stream, typeReference)
             beginTypeArguments(<)
               handleIdentifier(List, typeReference)
@@ -36,7 +36,7 @@
             endBlockFunctionBody(0, {, })
           endClassMethod(null, Stream, (, null, })
         endMember()
-      endClassOrMixinBody(DeclarationKind.Class, 1, {, })
+      endClassOrMixinOrExtensionBody(DeclarationKind.Class, 1, {, })
     endClassDeclaration(class, })
   endTopLevelDeclaration()
 endCompilationUnit(1, )
diff --git a/pkg/front_end/parser_testcases/error_recovery/issue_46505_prime_2.crash_dart.intertwined.expect b/pkg/front_end/parser_testcases/error_recovery/issue_46505_prime_2.crash_dart.intertwined.expect
index c7c22cb..9b6493f 100644
--- a/pkg/front_end/parser_testcases/error_recovery/issue_46505_prime_2.crash_dart.intertwined.expect
+++ b/pkg/front_end/parser_testcases/error_recovery/issue_46505_prime_2.crash_dart.intertwined.expect
@@ -9,7 +9,7 @@
     parseTopLevelKeywordDeclaration(, class, Instance of 'DirectiveContext')
       parseClassDeclarationModifiers(, class)
       parseClassOrNamedMixinApplication(null, class)
-        listener: beginClassOrNamedMixinApplicationPrelude(class)
+        listener: beginClassOrMixinOrNamedMixinApplicationPrelude(class)
         ensureIdentifier(class, classOrMixinDeclaration)
           listener: handleIdentifier(A, classOrMixinDeclaration)
         listener: handleNoTypeVariables({)
@@ -25,7 +25,7 @@
               listener: handleClassOrMixinImplements(null, 0)
             listener: handleClassHeader(class, class, null)
           parseClassOrMixinOrExtensionBody(A, DeclarationKind.Class, A)
-            listener: beginClassOrMixinBody(DeclarationKind.Class, {)
+            listener: beginClassOrMixinOrExtensionBody(DeclarationKind.Class, {)
             notEofOrValue(}, Stream)
             parseClassOrMixinOrExtensionMemberImpl({, DeclarationKind.Class, A)
               parseMetadataStar({)
@@ -33,7 +33,7 @@
                 listener: endMetadataStar(0)
               listener: beginMember()
               parseMethod({, null, null, null, null, null, null, {, Instance of 'ComplexTypeInfo', null, x, DeclarationKind.Class, A, false)
-                listener: beginMethod(null, null, null, null, null, x)
+                listener: beginMethod(DeclarationKind.Class, null, null, null, null, null, x)
                 ensureIdentifier({, typeReference)
                   listener: handleIdentifier(Stream, typeReference)
                 listener: beginTypeArguments(<)
@@ -69,7 +69,7 @@
                 listener: endClassMethod(null, Stream, (, null, })
               listener: endMember()
             notEofOrValue(}, })
-            listener: endClassOrMixinBody(DeclarationKind.Class, 1, {, })
+            listener: endClassOrMixinOrExtensionBody(DeclarationKind.Class, 1, {, })
           listener: endClassDeclaration(class, })
   listener: endTopLevelDeclaration()
   reportAllErrorTokens(class)
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 df6d7fe..6e7b413 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
@@ -15,7 +15,7 @@
 beginCompilationUnit(class)
   beginMetadataStar(class)
   endMetadataStar(0)
-  beginClassOrNamedMixinApplicationPrelude(class)
+  beginClassOrMixinOrNamedMixinApplicationPrelude(class)
     handleIdentifier(A, classOrMixinDeclaration)
     handleNoTypeVariables({)
     beginClassDeclaration(class, null, A)
@@ -24,11 +24,11 @@
       handleClassNoWithClause()
       handleClassOrMixinImplements(null, 0)
       handleClassHeader(class, class, null)
-      beginClassOrMixinBody(DeclarationKind.Class, {)
+      beginClassOrMixinOrExtensionBody(DeclarationKind.Class, {)
         beginMetadataStar(Stream)
         endMetadataStar(0)
         beginMember()
-          beginFields({)
+          beginFields(DeclarationKind.Class, null, null, null, null, null, null, {)
             handleIdentifier(Stream, typeReference)
             beginTypeArguments(<)
               handleIdentifier(List, typeReference)
@@ -51,7 +51,7 @@
             handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], >, >)
           endClassFields(null, null, null, null, null, null, 1, Stream, ;)
         endMember()
-      endClassOrMixinBody(DeclarationKind.Class, 1, {, })
+      endClassOrMixinOrExtensionBody(DeclarationKind.Class, 1, {, })
     endClassDeclaration(class, })
   endTopLevelDeclaration()
 endCompilationUnit(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 c837519..aa7d85c 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
@@ -9,7 +9,7 @@
     parseTopLevelKeywordDeclaration(, class, Instance of 'DirectiveContext')
       parseClassDeclarationModifiers(, class)
       parseClassOrNamedMixinApplication(null, class)
-        listener: beginClassOrNamedMixinApplicationPrelude(class)
+        listener: beginClassOrMixinOrNamedMixinApplicationPrelude(class)
         ensureIdentifier(class, classOrMixinDeclaration)
           listener: handleIdentifier(A, classOrMixinDeclaration)
         listener: handleNoTypeVariables({)
@@ -25,7 +25,7 @@
               listener: handleClassOrMixinImplements(null, 0)
             listener: handleClassHeader(class, class, null)
           parseClassOrMixinOrExtensionBody(A, DeclarationKind.Class, A)
-            listener: beginClassOrMixinBody(DeclarationKind.Class, {)
+            listener: beginClassOrMixinOrExtensionBody(DeclarationKind.Class, {)
             notEofOrValue(}, Stream)
             parseClassOrMixinOrExtensionMemberImpl({, DeclarationKind.Class, A)
               parseMetadataStar({)
@@ -34,7 +34,7 @@
               listener: beginMember()
               recoverFromInvalidMember(>, {, null, null, null, null, null, null, {, Instance of 'ComplexTypeInfo', null, DeclarationKind.Class, A)
                 parseFields({, null, null, null, null, null, null, {, Instance of 'ComplexTypeInfo', }, DeclarationKind.Class, A, false)
-                  listener: beginFields({)
+                  listener: beginFields(DeclarationKind.Class, null, null, null, null, null, null, {)
                   ensureIdentifier({, typeReference)
                     listener: handleIdentifier(Stream, typeReference)
                   listener: beginTypeArguments(<)
@@ -71,7 +71,7 @@
                   listener: endClassFields(null, null, null, null, null, null, 1, Stream, ;)
                 listener: endMember()
             notEofOrValue(}, })
-            listener: endClassOrMixinBody(DeclarationKind.Class, 1, {, })
+            listener: endClassOrMixinOrExtensionBody(DeclarationKind.Class, 1, {, })
           listener: endClassDeclaration(class, })
   listener: endTopLevelDeclaration()
   reportAllErrorTokens(class)
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 1a032d2..1e76544 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
@@ -15,7 +15,7 @@
 beginCompilationUnit(class)
   beginMetadataStar(class)
   endMetadataStar(0)
-  beginClassOrNamedMixinApplicationPrelude(class)
+  beginClassOrMixinOrNamedMixinApplicationPrelude(class)
     handleIdentifier(A, classOrMixinDeclaration)
     handleNoTypeVariables({)
     beginClassDeclaration(class, null, A)
@@ -24,11 +24,11 @@
       handleClassNoWithClause()
       handleClassOrMixinImplements(null, 0)
       handleClassHeader(class, class, null)
-      beginClassOrMixinBody(DeclarationKind.Class, {)
+      beginClassOrMixinOrExtensionBody(DeclarationKind.Class, {)
         beginMetadataStar(Stream)
         endMetadataStar(0)
         beginMember()
-          beginFields({)
+          beginFields(DeclarationKind.Class, null, null, null, null, null, null, {)
             handleIdentifier(Stream, typeReference)
             beginTypeArguments(<)
               handleIdentifier(List, typeReference)
@@ -55,7 +55,7 @@
             handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], >, >)
           endClassFields(null, null, null, null, null, null, 1, Stream, ;)
         endMember()
-      endClassOrMixinBody(DeclarationKind.Class, 1, {, })
+      endClassOrMixinOrExtensionBody(DeclarationKind.Class, 1, {, })
     endClassDeclaration(class, })
   endTopLevelDeclaration()
 endCompilationUnit(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 0f85986..9e3219e 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
@@ -9,7 +9,7 @@
     parseTopLevelKeywordDeclaration(, class, Instance of 'DirectiveContext')
       parseClassDeclarationModifiers(, class)
       parseClassOrNamedMixinApplication(null, class)
-        listener: beginClassOrNamedMixinApplicationPrelude(class)
+        listener: beginClassOrMixinOrNamedMixinApplicationPrelude(class)
         ensureIdentifier(class, classOrMixinDeclaration)
           listener: handleIdentifier(A, classOrMixinDeclaration)
         listener: handleNoTypeVariables({)
@@ -25,7 +25,7 @@
               listener: handleClassOrMixinImplements(null, 0)
             listener: handleClassHeader(class, class, null)
           parseClassOrMixinOrExtensionBody(A, DeclarationKind.Class, A)
-            listener: beginClassOrMixinBody(DeclarationKind.Class, {)
+            listener: beginClassOrMixinOrExtensionBody(DeclarationKind.Class, {)
             notEofOrValue(}, Stream)
             parseClassOrMixinOrExtensionMemberImpl({, DeclarationKind.Class, A)
               parseMetadataStar({)
@@ -34,7 +34,7 @@
               listener: beginMember()
               recoverFromInvalidMember(>, {, null, null, null, null, null, null, {, Instance of 'ComplexTypeInfo', null, DeclarationKind.Class, A)
                 parseFields({, null, null, null, null, null, null, {, Instance of 'ComplexTypeInfo', }, DeclarationKind.Class, A, false)
-                  listener: beginFields({)
+                  listener: beginFields(DeclarationKind.Class, null, null, null, null, null, null, {)
                   ensureIdentifier({, typeReference)
                     listener: handleIdentifier(Stream, typeReference)
                   listener: beginTypeArguments(<)
@@ -76,7 +76,7 @@
                   listener: endClassFields(null, null, null, null, null, null, 1, Stream, ;)
                 listener: endMember()
             notEofOrValue(}, })
-            listener: endClassOrMixinBody(DeclarationKind.Class, 1, {, })
+            listener: endClassOrMixinOrExtensionBody(DeclarationKind.Class, 1, {, })
           listener: endClassDeclaration(class, })
   listener: endTopLevelDeclaration()
   reportAllErrorTokens(class)
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 1b7755f..385f68c 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
@@ -79,7 +79,7 @@
 beginCompilationUnit(class)
   beginMetadataStar(class)
   endMetadataStar(0)
-  beginClassOrNamedMixinApplicationPrelude(class)
+  beginClassOrMixinOrNamedMixinApplicationPrelude(class)
     handleIdentifier(A, classOrMixinDeclaration)
     handleNoTypeVariables({)
     beginClassDeclaration(class, null, A)
@@ -88,11 +88,11 @@
       handleClassNoWithClause()
       handleClassOrMixinImplements(null, 0)
       handleClassHeader(class, class, null)
-      beginClassOrMixinBody(DeclarationKind.Class, {)
+      beginClassOrMixinOrExtensionBody(DeclarationKind.Class, {)
         beginMetadataStar(Stream)
         endMetadataStar(0)
         beginMember()
-          beginFields({)
+          beginFields(DeclarationKind.Class, null, null, null, null, null, null, {)
             handleIdentifier(Stream, typeReference)
             beginTypeArguments(<)
               handleIdentifier(List, typeReference)
@@ -119,12 +119,12 @@
             handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], >, >)
           endClassFields(null, null, null, null, null, null, 1, Stream, ;)
         endMember()
-      endClassOrMixinBody(DeclarationKind.Class, 1, {, })
+      endClassOrMixinOrExtensionBody(DeclarationKind.Class, 1, {, })
     endClassDeclaration(class, })
   endTopLevelDeclaration(class)
   beginMetadataStar(class)
   endMetadataStar(0)
-  beginClassOrNamedMixinApplicationPrelude(class)
+  beginClassOrMixinOrNamedMixinApplicationPrelude(class)
     handleIdentifier(B, classOrMixinDeclaration)
     handleNoTypeVariables({)
     beginClassDeclaration(class, null, B)
@@ -133,11 +133,11 @@
       handleClassNoWithClause()
       handleClassOrMixinImplements(null, 0)
       handleClassHeader(class, class, null)
-      beginClassOrMixinBody(DeclarationKind.Class, {)
+      beginClassOrMixinOrExtensionBody(DeclarationKind.Class, {)
         beginMetadataStar(Stream)
         endMetadataStar(0)
         beginMember()
-          beginFields({)
+          beginFields(DeclarationKind.Class, null, null, null, null, null, null, {)
             handleIdentifier(Stream, typeReference)
             beginTypeArguments(<)
               handleIdentifier(List, typeReference)
@@ -164,7 +164,7 @@
         beginMetadataStar(Stream)
         endMetadataStar(0)
         beginMember()
-          beginFields(;)
+          beginFields(DeclarationKind.Class, null, null, null, null, null, null, ;)
             handleIdentifier(Stream, typeReference)
             beginTypeArguments(<)
               handleIdentifier(List, typeReference)
@@ -191,12 +191,12 @@
             handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], >, >)
           endClassFields(null, null, null, null, null, null, 1, Stream, ;)
         endMember()
-      endClassOrMixinBody(DeclarationKind.Class, 2, {, })
+      endClassOrMixinOrExtensionBody(DeclarationKind.Class, 2, {, })
     endClassDeclaration(class, })
   endTopLevelDeclaration(class)
   beginMetadataStar(class)
   endMetadataStar(0)
-  beginClassOrNamedMixinApplicationPrelude(class)
+  beginClassOrMixinOrNamedMixinApplicationPrelude(class)
     handleIdentifier(C, classOrMixinDeclaration)
     handleNoTypeVariables({)
     beginClassDeclaration(class, null, C)
@@ -205,11 +205,11 @@
       handleClassNoWithClause()
       handleClassOrMixinImplements(null, 0)
       handleClassHeader(class, class, null)
-      beginClassOrMixinBody(DeclarationKind.Class, {)
+      beginClassOrMixinOrExtensionBody(DeclarationKind.Class, {)
         beginMetadataStar(Stream)
         endMetadataStar(0)
         beginMember()
-          beginFields({)
+          beginFields(DeclarationKind.Class, null, null, null, null, null, null, {)
             handleIdentifier(Stream, typeReference)
             beginTypeArguments(<)
               handleIdentifier(List, typeReference)
@@ -236,7 +236,7 @@
         beginMetadataStar(Stream)
         endMetadataStar(0)
         beginMember()
-          beginMethod(null, null, null, null, null, Stream)
+          beginMethod(DeclarationKind.Class, null, null, null, null, null, Stream)
             handleIdentifier(Stream, typeReference)
             beginTypeArguments(<)
               handleIdentifier(List, typeReference)
@@ -280,14 +280,14 @@
         beginMetadataStar(baz)
         endMetadataStar(0)
         beginMember()
-          beginFields(})
+          beginFields(DeclarationKind.Class, null, null, null, null, null, null, })
             handleRecoverableError(MissingConstFinalVarOrType, baz, baz)
             handleNoType(})
             handleIdentifier(baz, fieldDeclaration)
             handleNoFieldInitializer(;)
           endClassFields(null, null, null, null, null, null, 1, baz, ;)
         endMember()
-      endClassOrMixinBody(DeclarationKind.Class, 3, {, })
+      endClassOrMixinOrExtensionBody(DeclarationKind.Class, 3, {, })
     endClassDeclaration(class, })
   endTopLevelDeclaration(Stream)
   beginMetadataStar(Stream)
@@ -336,7 +336,7 @@
   beginMetadataStar(baz)
   endMetadataStar(0)
   beginTopLevelMember(baz)
-    beginFields(})
+    beginFields(DeclarationKind.TopLevel, null, null, null, null, null, null, })
       handleRecoverableError(MissingConstFinalVarOrType, baz, baz)
       handleNoType(})
       handleIdentifier(baz, topLevelVariableDeclaration)
@@ -348,7 +348,7 @@
   beginTopLevelMember(Stream)
     handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got ''., Try inserting an identifier before ''., {lexeme: }], , )
     // WARNING: Reporting at eof for .
-    beginFields(;)
+    beginFields(DeclarationKind.TopLevel, null, null, null, null, null, null, ;)
       handleIdentifier(Stream, typeReference)
       beginTypeArguments(<)
         handleIdentifier(List, typeReference)
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 a5f5174..de9f8f5 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
@@ -9,7 +9,7 @@
     parseTopLevelKeywordDeclaration(, class, Instance of 'DirectiveContext')
       parseClassDeclarationModifiers(, class)
       parseClassOrNamedMixinApplication(null, class)
-        listener: beginClassOrNamedMixinApplicationPrelude(class)
+        listener: beginClassOrMixinOrNamedMixinApplicationPrelude(class)
         ensureIdentifier(class, classOrMixinDeclaration)
           listener: handleIdentifier(A, classOrMixinDeclaration)
         listener: handleNoTypeVariables({)
@@ -25,7 +25,7 @@
               listener: handleClassOrMixinImplements(null, 0)
             listener: handleClassHeader(class, class, null)
           parseClassOrMixinOrExtensionBody(A, DeclarationKind.Class, A)
-            listener: beginClassOrMixinBody(DeclarationKind.Class, {)
+            listener: beginClassOrMixinOrExtensionBody(DeclarationKind.Class, {)
             notEofOrValue(}, Stream)
             parseClassOrMixinOrExtensionMemberImpl({, DeclarationKind.Class, A)
               parseMetadataStar({)
@@ -34,7 +34,7 @@
               listener: beginMember()
               recoverFromInvalidMember(>, {, null, null, null, null, null, null, {, Instance of 'ComplexTypeInfo', null, DeclarationKind.Class, A)
                 parseFields({, null, null, null, null, null, null, {, Instance of 'ComplexTypeInfo', }, DeclarationKind.Class, A, false)
-                  listener: beginFields({)
+                  listener: beginFields(DeclarationKind.Class, null, null, null, null, null, null, {)
                   ensureIdentifier({, typeReference)
                     listener: handleIdentifier(Stream, typeReference)
                   listener: beginTypeArguments(<)
@@ -76,7 +76,7 @@
                   listener: endClassFields(null, null, null, null, null, null, 1, Stream, ;)
                 listener: endMember()
             notEofOrValue(}, })
-            listener: endClassOrMixinBody(DeclarationKind.Class, 1, {, })
+            listener: endClassOrMixinOrExtensionBody(DeclarationKind.Class, 1, {, })
           listener: endClassDeclaration(class, })
   listener: endTopLevelDeclaration(class)
   parseTopLevelDeclarationImpl(}, Instance of 'DirectiveContext')
@@ -86,7 +86,7 @@
     parseTopLevelKeywordDeclaration(}, class, Instance of 'DirectiveContext')
       parseClassDeclarationModifiers(}, class)
       parseClassOrNamedMixinApplication(null, class)
-        listener: beginClassOrNamedMixinApplicationPrelude(class)
+        listener: beginClassOrMixinOrNamedMixinApplicationPrelude(class)
         ensureIdentifier(class, classOrMixinDeclaration)
           listener: handleIdentifier(B, classOrMixinDeclaration)
         listener: handleNoTypeVariables({)
@@ -102,7 +102,7 @@
               listener: handleClassOrMixinImplements(null, 0)
             listener: handleClassHeader(class, class, null)
           parseClassOrMixinOrExtensionBody(B, DeclarationKind.Class, B)
-            listener: beginClassOrMixinBody(DeclarationKind.Class, {)
+            listener: beginClassOrMixinOrExtensionBody(DeclarationKind.Class, {)
             notEofOrValue(}, Stream)
             parseClassOrMixinOrExtensionMemberImpl({, DeclarationKind.Class, B)
               parseMetadataStar({)
@@ -110,7 +110,7 @@
                 listener: endMetadataStar(0)
               listener: beginMember()
               parseFields({, null, null, null, null, null, null, {, Instance of 'ComplexTypeInfo', foo, DeclarationKind.Class, B, false)
-                listener: beginFields({)
+                listener: beginFields(DeclarationKind.Class, null, null, null, null, null, null, {)
                 ensureIdentifier({, typeReference)
                   listener: handleIdentifier(Stream, typeReference)
                 listener: beginTypeArguments(<)
@@ -148,7 +148,7 @@
               listener: beginMember()
               recoverFromInvalidMember(>, ;, null, null, null, null, null, null, ;, Instance of 'ComplexTypeInfo', null, DeclarationKind.Class, B)
                 parseFields(;, null, null, null, null, null, null, ;, Instance of 'ComplexTypeInfo', }, DeclarationKind.Class, B, false)
-                  listener: beginFields(;)
+                  listener: beginFields(DeclarationKind.Class, null, null, null, null, null, null, ;)
                   ensureIdentifier(;, typeReference)
                     listener: handleIdentifier(Stream, typeReference)
                   listener: beginTypeArguments(<)
@@ -190,7 +190,7 @@
                   listener: endClassFields(null, null, null, null, null, null, 1, Stream, ;)
                 listener: endMember()
             notEofOrValue(}, })
-            listener: endClassOrMixinBody(DeclarationKind.Class, 2, {, })
+            listener: endClassOrMixinOrExtensionBody(DeclarationKind.Class, 2, {, })
           listener: endClassDeclaration(class, })
   listener: endTopLevelDeclaration(class)
   parseTopLevelDeclarationImpl(}, Instance of 'DirectiveContext')
@@ -200,7 +200,7 @@
     parseTopLevelKeywordDeclaration(}, class, Instance of 'DirectiveContext')
       parseClassDeclarationModifiers(}, class)
       parseClassOrNamedMixinApplication(null, class)
-        listener: beginClassOrNamedMixinApplicationPrelude(class)
+        listener: beginClassOrMixinOrNamedMixinApplicationPrelude(class)
         ensureIdentifier(class, classOrMixinDeclaration)
           listener: handleIdentifier(C, classOrMixinDeclaration)
         listener: handleNoTypeVariables({)
@@ -216,7 +216,7 @@
               listener: handleClassOrMixinImplements(null, 0)
             listener: handleClassHeader(class, class, null)
           parseClassOrMixinOrExtensionBody(C, DeclarationKind.Class, C)
-            listener: beginClassOrMixinBody(DeclarationKind.Class, {)
+            listener: beginClassOrMixinOrExtensionBody(DeclarationKind.Class, {)
             notEofOrValue(}, Stream)
             parseClassOrMixinOrExtensionMemberImpl({, DeclarationKind.Class, C)
               parseMetadataStar({)
@@ -224,7 +224,7 @@
                 listener: endMetadataStar(0)
               listener: beginMember()
               parseFields({, null, null, null, null, null, null, {, Instance of 'ComplexTypeInfo', foo, DeclarationKind.Class, C, false)
-                listener: beginFields({)
+                listener: beginFields(DeclarationKind.Class, null, null, null, null, null, null, {)
                 ensureIdentifier({, typeReference)
                   listener: handleIdentifier(Stream, typeReference)
                 listener: beginTypeArguments(<)
@@ -261,7 +261,7 @@
                 listener: endMetadataStar(0)
               listener: beginMember()
               parseMethod(;, null, null, null, null, null, null, ;, Instance of 'ComplexTypeInfo', null, Stream, DeclarationKind.Class, C, false)
-                listener: beginMethod(null, null, null, null, null, Stream)
+                listener: beginMethod(DeclarationKind.Class, null, null, null, null, null, Stream)
                 ensureIdentifier(;, typeReference)
                   listener: handleIdentifier(Stream, typeReference)
                 listener: beginTypeArguments(<)
@@ -345,7 +345,7 @@
               listener: beginMember()
               isReservedKeyword(;)
               parseFields(}, null, null, null, null, null, null, }, Instance of 'NoType', baz, DeclarationKind.Class, C, false)
-                listener: beginFields(})
+                listener: beginFields(DeclarationKind.Class, null, null, null, null, null, null, })
                 reportRecoverableError(baz, MissingConstFinalVarOrType)
                   listener: handleRecoverableError(MissingConstFinalVarOrType, baz, baz)
                 listener: handleNoType(})
@@ -356,7 +356,7 @@
                 listener: endClassFields(null, null, null, null, null, null, 1, baz, ;)
               listener: endMember()
             notEofOrValue(}, })
-            listener: endClassOrMixinBody(DeclarationKind.Class, 3, {, })
+            listener: endClassOrMixinOrExtensionBody(DeclarationKind.Class, 3, {, })
           listener: endClassDeclaration(class, })
   listener: endTopLevelDeclaration(Stream)
   parseTopLevelDeclarationImpl(}, Instance of 'DirectiveContext')
@@ -446,7 +446,7 @@
       listener: beginTopLevelMember(baz)
       isReservedKeyword(;)
       parseFields(}, null, null, null, null, null, null, }, Instance of 'NoType', baz, DeclarationKind.TopLevel, null, false)
-        listener: beginFields(})
+        listener: beginFields(DeclarationKind.TopLevel, null, null, null, null, null, null, })
         reportRecoverableError(baz, MissingConstFinalVarOrType)
           listener: handleRecoverableError(MissingConstFinalVarOrType, baz, baz)
         listener: handleNoType(})
@@ -468,7 +468,7 @@
           listener: // WARNING: Reporting at eof for .
         rewriter()
       parseFields(;, null, null, null, null, null, null, ;, Instance of 'ComplexTypeInfo', , DeclarationKind.TopLevel, null, false)
-        listener: beginFields(;)
+        listener: beginFields(DeclarationKind.TopLevel, null, null, null, null, null, null, ;)
         ensureIdentifier(;, typeReference)
           listener: handleIdentifier(Stream, typeReference)
         listener: beginTypeArguments(<)
diff --git a/pkg/front_end/parser_testcases/error_recovery/issue_46505_prime_6.crash_dart.expect b/pkg/front_end/parser_testcases/error_recovery/issue_46505_prime_6.crash_dart.expect
index 0c00214..eccab19 100644
--- a/pkg/front_end/parser_testcases/error_recovery/issue_46505_prime_6.crash_dart.expect
+++ b/pkg/front_end/parser_testcases/error_recovery/issue_46505_prime_6.crash_dart.expect
@@ -7,7 +7,7 @@
 beginCompilationUnit(class)
   beginMetadataStar(class)
   endMetadataStar(0)
-  beginClassOrNamedMixinApplicationPrelude(class)
+  beginClassOrMixinOrNamedMixinApplicationPrelude(class)
     handleIdentifier(A, classOrMixinDeclaration)
     handleNoTypeVariables({)
     beginClassDeclaration(class, null, A)
@@ -16,11 +16,11 @@
       handleClassNoWithClause()
       handleClassOrMixinImplements(null, 0)
       handleClassHeader(class, class, null)
-      beginClassOrMixinBody(DeclarationKind.Class, {)
+      beginClassOrMixinOrExtensionBody(DeclarationKind.Class, {)
         beginMetadataStar(stream)
         endMetadataStar(0)
         beginMember()
-          beginMethod(null, null, null, null, null, stream)
+          beginMethod(DeclarationKind.Class, null, null, null, null, null, stream)
             handleNoType({)
             handleIdentifier(stream, methodDeclaration)
             beginTypeVariables(<)
@@ -58,7 +58,7 @@
         beginMetadataStar(stream2)
         endMetadataStar(0)
         beginMember()
-          beginMethod(null, null, null, null, null, stream2)
+          beginMethod(DeclarationKind.Class, null, null, null, null, null, stream2)
             handleNoType(})
             handleIdentifier(stream2, methodDeclaration)
             beginTypeVariables(<)
@@ -97,7 +97,7 @@
         beginMetadataStar(stream3)
         endMetadataStar(0)
         beginMember()
-          beginMethod(null, null, null, null, null, stream3)
+          beginMethod(DeclarationKind.Class, null, null, null, null, null, stream3)
             handleNoType(})
             handleIdentifier(stream3, methodDeclaration)
             beginTypeVariables(<)
@@ -126,7 +126,7 @@
             endBlockFunctionBody(0, {, })
           endClassMethod(null, stream3, (, null, })
         endMember()
-      endClassOrMixinBody(DeclarationKind.Class, 3, {, })
+      endClassOrMixinOrExtensionBody(DeclarationKind.Class, 3, {, })
     endClassDeclaration(class, })
   endTopLevelDeclaration()
 endCompilationUnit(1, )
diff --git a/pkg/front_end/parser_testcases/error_recovery/issue_46505_prime_6.crash_dart.intertwined.expect b/pkg/front_end/parser_testcases/error_recovery/issue_46505_prime_6.crash_dart.intertwined.expect
index 01b18e1..d9371ae 100644
--- a/pkg/front_end/parser_testcases/error_recovery/issue_46505_prime_6.crash_dart.intertwined.expect
+++ b/pkg/front_end/parser_testcases/error_recovery/issue_46505_prime_6.crash_dart.intertwined.expect
@@ -9,7 +9,7 @@
     parseTopLevelKeywordDeclaration(, class, Instance of 'DirectiveContext')
       parseClassDeclarationModifiers(, class)
       parseClassOrNamedMixinApplication(null, class)
-        listener: beginClassOrNamedMixinApplicationPrelude(class)
+        listener: beginClassOrMixinOrNamedMixinApplicationPrelude(class)
         ensureIdentifier(class, classOrMixinDeclaration)
           listener: handleIdentifier(A, classOrMixinDeclaration)
         listener: handleNoTypeVariables({)
@@ -25,7 +25,7 @@
               listener: handleClassOrMixinImplements(null, 0)
             listener: handleClassHeader(class, class, null)
           parseClassOrMixinOrExtensionBody(A, DeclarationKind.Class, A)
-            listener: beginClassOrMixinBody(DeclarationKind.Class, {)
+            listener: beginClassOrMixinOrExtensionBody(DeclarationKind.Class, {)
             notEofOrValue(}, stream)
             parseClassOrMixinOrExtensionMemberImpl({, DeclarationKind.Class, A)
               parseMetadataStar({)
@@ -34,7 +34,7 @@
               listener: beginMember()
               isReservedKeyword(<)
               parseMethod({, null, null, null, null, null, null, {, Instance of 'NoType', null, stream, DeclarationKind.Class, A, false)
-                listener: beginMethod(null, null, null, null, null, stream)
+                listener: beginMethod(DeclarationKind.Class, null, null, null, null, null, stream)
                 listener: handleNoType({)
                 ensureIdentifierPotentiallyRecovered({, methodDeclaration, false)
                   listener: handleIdentifier(stream, methodDeclaration)
@@ -94,7 +94,7 @@
               listener: beginMember()
               isReservedKeyword(<)
               parseMethod(}, null, null, null, null, null, null, }, Instance of 'NoType', null, stream2, DeclarationKind.Class, A, false)
-                listener: beginMethod(null, null, null, null, null, stream2)
+                listener: beginMethod(DeclarationKind.Class, null, null, null, null, null, stream2)
                 listener: handleNoType(})
                 ensureIdentifierPotentiallyRecovered(}, methodDeclaration, false)
                   listener: handleIdentifier(stream2, methodDeclaration)
@@ -158,7 +158,7 @@
               listener: beginMember()
               isReservedKeyword(<)
               parseMethod(}, null, null, null, null, null, null, }, Instance of 'NoType', null, stream3, DeclarationKind.Class, A, false)
-                listener: beginMethod(null, null, null, null, null, stream3)
+                listener: beginMethod(DeclarationKind.Class, null, null, null, null, null, stream3)
                 listener: handleNoType(})
                 ensureIdentifierPotentiallyRecovered(}, methodDeclaration, false)
                   listener: handleIdentifier(stream3, methodDeclaration)
@@ -203,7 +203,7 @@
                 listener: endClassMethod(null, stream3, (, null, })
               listener: endMember()
             notEofOrValue(}, })
-            listener: endClassOrMixinBody(DeclarationKind.Class, 3, {, })
+            listener: endClassOrMixinOrExtensionBody(DeclarationKind.Class, 3, {, })
           listener: endClassDeclaration(class, })
   listener: endTopLevelDeclaration()
   reportAllErrorTokens(class)
diff --git a/pkg/front_end/parser_testcases/error_recovery/keyword_named_class_fields.dart.expect b/pkg/front_end/parser_testcases/error_recovery/keyword_named_class_fields.dart.expect
index 07ee768..40b2bb9 100644
--- a/pkg/front_end/parser_testcases/error_recovery/keyword_named_class_fields.dart.expect
+++ b/pkg/front_end/parser_testcases/error_recovery/keyword_named_class_fields.dart.expect
@@ -135,7 +135,7 @@
 beginCompilationUnit(class)
   beginMetadataStar(class)
   endMetadataStar(0)
-  beginClassOrNamedMixinApplicationPrelude(class)
+  beginClassOrMixinOrNamedMixinApplicationPrelude(class)
     handleIdentifier(WrapperClass, classOrMixinDeclaration)
     handleNoTypeVariables({)
     beginClassDeclaration(class, null, WrapperClass)
@@ -144,11 +144,11 @@
       handleClassNoWithClause()
       handleClassOrMixinImplements(null, 0)
       handleClassHeader(class, class, null)
-      beginClassOrMixinBody(DeclarationKind.Class, {)
+      beginClassOrMixinOrExtensionBody(DeclarationKind.Class, {)
         beginMetadataStar(int)
         endMetadataStar(0)
         beginMember()
-          beginFields({)
+          beginFields(DeclarationKind.Class, null, null, null, null, null, null, {)
             handleIdentifier(int, typeReference)
             handleNoTypeArguments(abstract)
             handleType(int, null)
@@ -161,7 +161,7 @@
         beginMetadataStar(int)
         endMetadataStar(0)
         beginMember()
-          beginFields(;)
+          beginFields(DeclarationKind.Class, null, null, null, null, null, null, ;)
             handleIdentifier(int, typeReference)
             handleNoTypeArguments(as)
             handleType(int, null)
@@ -174,7 +174,7 @@
         beginMetadataStar(int)
         endMetadataStar(0)
         beginMember()
-          beginFields(;)
+          beginFields(DeclarationKind.Class, null, null, null, null, null, null, ;)
             handleIdentifier(int, typeReference)
             handleNoTypeArguments(assert)
             handleType(int, null)
@@ -188,7 +188,7 @@
         beginMetadataStar(int)
         endMetadataStar(0)
         beginMember()
-          beginFields(;)
+          beginFields(DeclarationKind.Class, null, null, null, null, null, null, ;)
             handleIdentifier(int, typeReference)
             handleNoTypeArguments(async)
             handleType(int, null)
@@ -201,7 +201,7 @@
         beginMetadataStar(int)
         endMetadataStar(0)
         beginMember()
-          beginFields(;)
+          beginFields(DeclarationKind.Class, null, null, null, null, null, null, ;)
             handleIdentifier(int, typeReference)
             handleNoTypeArguments(await)
             handleType(int, null)
@@ -214,7 +214,7 @@
         beginMetadataStar(int)
         endMetadataStar(0)
         beginMember()
-          beginFields(;)
+          beginFields(DeclarationKind.Class, null, null, null, null, null, null, ;)
             handleIdentifier(int, typeReference)
             handleNoTypeArguments(break)
             handleType(int, null)
@@ -228,7 +228,7 @@
         beginMetadataStar(int)
         endMetadataStar(0)
         beginMember()
-          beginFields(;)
+          beginFields(DeclarationKind.Class, null, null, null, null, null, null, ;)
             handleIdentifier(int, typeReference)
             handleNoTypeArguments(case)
             handleType(int, null)
@@ -242,7 +242,7 @@
         beginMetadataStar(int)
         endMetadataStar(0)
         beginMember()
-          beginFields(;)
+          beginFields(DeclarationKind.Class, null, null, null, null, null, null, ;)
             handleIdentifier(int, typeReference)
             handleNoTypeArguments(catch)
             handleType(int, null)
@@ -256,7 +256,7 @@
         beginMetadataStar(int)
         endMetadataStar(0)
         beginMember()
-          beginFields(;)
+          beginFields(DeclarationKind.Class, null, null, null, null, null, null, ;)
             handleIdentifier(int, typeReference)
             handleNoTypeArguments(class)
             handleType(int, null)
@@ -270,7 +270,7 @@
         beginMetadataStar(int)
         endMetadataStar(0)
         beginMember()
-          beginFields(;)
+          beginFields(DeclarationKind.Class, null, null, null, null, null, null, ;)
             handleIdentifier(int, typeReference)
             handleNoTypeArguments(const)
             handleType(int, null)
@@ -284,7 +284,7 @@
         beginMetadataStar(int)
         endMetadataStar(0)
         beginMember()
-          beginFields(;)
+          beginFields(DeclarationKind.Class, null, null, null, null, null, null, ;)
             handleIdentifier(int, typeReference)
             handleNoTypeArguments(continue)
             handleType(int, null)
@@ -298,7 +298,7 @@
         beginMetadataStar(int)
         endMetadataStar(0)
         beginMember()
-          beginFields(;)
+          beginFields(DeclarationKind.Class, null, null, null, null, null, null, ;)
             handleIdentifier(int, typeReference)
             handleNoTypeArguments(covariant)
             handleType(int, null)
@@ -311,7 +311,7 @@
         beginMetadataStar(int)
         endMetadataStar(0)
         beginMember()
-          beginFields(;)
+          beginFields(DeclarationKind.Class, null, null, null, null, null, null, ;)
             handleIdentifier(int, typeReference)
             handleNoTypeArguments(default)
             handleType(int, null)
@@ -325,7 +325,7 @@
         beginMetadataStar(int)
         endMetadataStar(0)
         beginMember()
-          beginFields(;)
+          beginFields(DeclarationKind.Class, null, null, null, null, null, null, ;)
             handleIdentifier(int, typeReference)
             handleNoTypeArguments(deferred)
             handleType(int, null)
@@ -338,7 +338,7 @@
         beginMetadataStar(int)
         endMetadataStar(0)
         beginMember()
-          beginFields(;)
+          beginFields(DeclarationKind.Class, null, null, null, null, null, null, ;)
             handleIdentifier(int, typeReference)
             handleNoTypeArguments(do)
             handleType(int, null)
@@ -352,7 +352,7 @@
         beginMetadataStar(int)
         endMetadataStar(0)
         beginMember()
-          beginFields(;)
+          beginFields(DeclarationKind.Class, null, null, null, null, null, null, ;)
             handleIdentifier(int, typeReference)
             handleNoTypeArguments(dynamic)
             handleType(int, null)
@@ -365,7 +365,7 @@
         beginMetadataStar(int)
         endMetadataStar(0)
         beginMember()
-          beginFields(;)
+          beginFields(DeclarationKind.Class, null, null, null, null, null, null, ;)
             handleIdentifier(int, typeReference)
             handleNoTypeArguments(else)
             handleType(int, null)
@@ -379,7 +379,7 @@
         beginMetadataStar(int)
         endMetadataStar(0)
         beginMember()
-          beginFields(;)
+          beginFields(DeclarationKind.Class, null, null, null, null, null, null, ;)
             handleIdentifier(int, typeReference)
             handleNoTypeArguments(enum)
             handleType(int, null)
@@ -393,7 +393,7 @@
         beginMetadataStar(int)
         endMetadataStar(0)
         beginMember()
-          beginFields(;)
+          beginFields(DeclarationKind.Class, null, null, null, null, null, null, ;)
             handleIdentifier(int, typeReference)
             handleNoTypeArguments(export)
             handleType(int, null)
@@ -406,7 +406,7 @@
         beginMetadataStar(int)
         endMetadataStar(0)
         beginMember()
-          beginFields(;)
+          beginFields(DeclarationKind.Class, null, null, null, null, null, null, ;)
             handleIdentifier(int, typeReference)
             handleNoTypeArguments(extends)
             handleType(int, null)
@@ -420,7 +420,7 @@
         beginMetadataStar(int)
         endMetadataStar(0)
         beginMember()
-          beginFields(;)
+          beginFields(DeclarationKind.Class, null, null, null, null, null, null, ;)
             handleIdentifier(int, typeReference)
             handleNoTypeArguments(extension)
             handleType(int, null)
@@ -433,7 +433,7 @@
         beginMetadataStar(int)
         endMetadataStar(0)
         beginMember()
-          beginFields(;)
+          beginFields(DeclarationKind.Class, null, null, null, null, null, null, ;)
             handleIdentifier(int, typeReference)
             handleNoTypeArguments(external)
             handleType(int, null)
@@ -446,7 +446,7 @@
         beginMetadataStar(int)
         endMetadataStar(0)
         beginMember()
-          beginFields(;)
+          beginFields(DeclarationKind.Class, null, null, null, null, null, null, ;)
             handleIdentifier(int, typeReference)
             handleNoTypeArguments(factory)
             handleType(int, null)
@@ -459,7 +459,7 @@
         beginMetadataStar(int)
         endMetadataStar(0)
         beginMember()
-          beginFields(;)
+          beginFields(DeclarationKind.Class, null, null, null, null, null, null, ;)
             handleIdentifier(int, typeReference)
             handleNoTypeArguments(false)
             handleType(int, null)
@@ -473,7 +473,7 @@
         beginMetadataStar(int)
         endMetadataStar(0)
         beginMember()
-          beginFields(;)
+          beginFields(DeclarationKind.Class, null, null, null, null, null, null, ;)
             handleIdentifier(int, typeReference)
             handleNoTypeArguments(final)
             handleType(int, null)
@@ -487,7 +487,7 @@
         beginMetadataStar(int)
         endMetadataStar(0)
         beginMember()
-          beginFields(;)
+          beginFields(DeclarationKind.Class, null, null, null, null, null, null, ;)
             handleIdentifier(int, typeReference)
             handleNoTypeArguments(finally)
             handleType(int, null)
@@ -501,7 +501,7 @@
         beginMetadataStar(int)
         endMetadataStar(0)
         beginMember()
-          beginFields(;)
+          beginFields(DeclarationKind.Class, null, null, null, null, null, null, ;)
             handleIdentifier(int, typeReference)
             handleNoTypeArguments(for)
             handleType(int, null)
@@ -515,7 +515,7 @@
         beginMetadataStar(int)
         endMetadataStar(0)
         beginMember()
-          beginFields(;)
+          beginFields(DeclarationKind.Class, null, null, null, null, null, null, ;)
             handleIdentifier(int, typeReference)
             handleNoTypeArguments(Function)
             handleType(int, null)
@@ -528,7 +528,7 @@
         beginMetadataStar(int)
         endMetadataStar(0)
         beginMember()
-          beginFields(;)
+          beginFields(DeclarationKind.Class, null, null, null, null, null, null, ;)
             handleIdentifier(int, typeReference)
             handleNoTypeArguments(get)
             handleType(int, null)
@@ -541,7 +541,7 @@
         beginMetadataStar(int)
         endMetadataStar(0)
         beginMember()
-          beginFields(;)
+          beginFields(DeclarationKind.Class, null, null, null, null, null, null, ;)
             handleIdentifier(int, typeReference)
             handleNoTypeArguments(hide)
             handleType(int, null)
@@ -554,7 +554,7 @@
         beginMetadataStar(int)
         endMetadataStar(0)
         beginMember()
-          beginFields(;)
+          beginFields(DeclarationKind.Class, null, null, null, null, null, null, ;)
             handleIdentifier(int, typeReference)
             handleNoTypeArguments(if)
             handleType(int, null)
@@ -568,7 +568,7 @@
         beginMetadataStar(int)
         endMetadataStar(0)
         beginMember()
-          beginFields(;)
+          beginFields(DeclarationKind.Class, null, null, null, null, null, null, ;)
             handleIdentifier(int, typeReference)
             handleNoTypeArguments(implements)
             handleType(int, null)
@@ -581,7 +581,7 @@
         beginMetadataStar(int)
         endMetadataStar(0)
         beginMember()
-          beginFields(;)
+          beginFields(DeclarationKind.Class, null, null, null, null, null, null, ;)
             handleIdentifier(int, typeReference)
             handleNoTypeArguments(import)
             handleType(int, null)
@@ -594,7 +594,7 @@
         beginMetadataStar(int)
         endMetadataStar(0)
         beginMember()
-          beginFields(;)
+          beginFields(DeclarationKind.Class, null, null, null, null, null, null, ;)
             handleIdentifier(int, typeReference)
             handleNoTypeArguments(in)
             handleType(int, null)
@@ -608,7 +608,7 @@
         beginMetadataStar(int)
         endMetadataStar(0)
         beginMember()
-          beginFields(;)
+          beginFields(DeclarationKind.Class, null, null, null, null, null, null, ;)
             handleIdentifier(int, typeReference)
             handleNoTypeArguments(inout)
             handleType(int, null)
@@ -621,7 +621,7 @@
         beginMetadataStar(int)
         endMetadataStar(0)
         beginMember()
-          beginFields(;)
+          beginFields(DeclarationKind.Class, null, null, null, null, null, null, ;)
             handleIdentifier(int, typeReference)
             handleNoTypeArguments(interface)
             handleType(int, null)
@@ -634,7 +634,7 @@
         beginMetadataStar(int)
         endMetadataStar(0)
         beginMember()
-          beginFields(;)
+          beginFields(DeclarationKind.Class, null, null, null, null, null, null, ;)
             handleIdentifier(int, typeReference)
             handleNoTypeArguments(is)
             handleType(int, null)
@@ -648,7 +648,7 @@
         beginMetadataStar(int)
         endMetadataStar(0)
         beginMember()
-          beginFields(;)
+          beginFields(DeclarationKind.Class, null, null, null, null, null, null, ;)
             handleIdentifier(int, typeReference)
             handleNoTypeArguments(late)
             handleType(int, null)
@@ -661,7 +661,7 @@
         beginMetadataStar(int)
         endMetadataStar(0)
         beginMember()
-          beginFields(;)
+          beginFields(DeclarationKind.Class, null, null, null, null, null, null, ;)
             handleIdentifier(int, typeReference)
             handleNoTypeArguments(library)
             handleType(int, null)
@@ -674,7 +674,7 @@
         beginMetadataStar(int)
         endMetadataStar(0)
         beginMember()
-          beginFields(;)
+          beginFields(DeclarationKind.Class, null, null, null, null, null, null, ;)
             handleIdentifier(int, typeReference)
             handleNoTypeArguments(mixin)
             handleType(int, null)
@@ -687,7 +687,7 @@
         beginMetadataStar(int)
         endMetadataStar(0)
         beginMember()
-          beginFields(;)
+          beginFields(DeclarationKind.Class, null, null, null, null, null, null, ;)
             handleIdentifier(int, typeReference)
             handleNoTypeArguments(native)
             handleType(int, null)
@@ -700,7 +700,7 @@
         beginMetadataStar(int)
         endMetadataStar(0)
         beginMember()
-          beginFields(;)
+          beginFields(DeclarationKind.Class, null, null, null, null, null, null, ;)
             handleIdentifier(int, typeReference)
             handleNoTypeArguments(new)
             handleType(int, null)
@@ -714,7 +714,7 @@
         beginMetadataStar(int)
         endMetadataStar(0)
         beginMember()
-          beginFields(;)
+          beginFields(DeclarationKind.Class, null, null, null, null, null, null, ;)
             handleIdentifier(int, typeReference)
             handleNoTypeArguments(null)
             handleType(int, null)
@@ -728,7 +728,7 @@
         beginMetadataStar(int)
         endMetadataStar(0)
         beginMember()
-          beginFields(;)
+          beginFields(DeclarationKind.Class, null, null, null, null, null, null, ;)
             handleIdentifier(int, typeReference)
             handleNoTypeArguments(of)
             handleType(int, null)
@@ -741,7 +741,7 @@
         beginMetadataStar(int)
         endMetadataStar(0)
         beginMember()
-          beginFields(;)
+          beginFields(DeclarationKind.Class, null, null, null, null, null, null, ;)
             handleIdentifier(int, typeReference)
             handleNoTypeArguments(on)
             handleType(int, null)
@@ -754,7 +754,7 @@
         beginMetadataStar(int)
         endMetadataStar(0)
         beginMember()
-          beginFields(;)
+          beginFields(DeclarationKind.Class, null, null, null, null, null, null, ;)
             handleIdentifier(int, typeReference)
             handleNoTypeArguments(operator)
             handleType(int, null)
@@ -767,7 +767,7 @@
         beginMetadataStar(int)
         endMetadataStar(0)
         beginMember()
-          beginFields(;)
+          beginFields(DeclarationKind.Class, null, null, null, null, null, null, ;)
             handleIdentifier(int, typeReference)
             handleNoTypeArguments(out)
             handleType(int, null)
@@ -780,7 +780,7 @@
         beginMetadataStar(int)
         endMetadataStar(0)
         beginMember()
-          beginFields(;)
+          beginFields(DeclarationKind.Class, null, null, null, null, null, null, ;)
             handleIdentifier(int, typeReference)
             handleNoTypeArguments(part)
             handleType(int, null)
@@ -793,7 +793,7 @@
         beginMetadataStar(int)
         endMetadataStar(0)
         beginMember()
-          beginFields(;)
+          beginFields(DeclarationKind.Class, null, null, null, null, null, null, ;)
             handleIdentifier(int, typeReference)
             handleNoTypeArguments(patch)
             handleType(int, null)
@@ -806,7 +806,7 @@
         beginMetadataStar(int)
         endMetadataStar(0)
         beginMember()
-          beginFields(;)
+          beginFields(DeclarationKind.Class, null, null, null, null, null, null, ;)
             handleIdentifier(int, typeReference)
             handleNoTypeArguments(required)
             handleType(int, null)
@@ -819,7 +819,7 @@
         beginMetadataStar(int)
         endMetadataStar(0)
         beginMember()
-          beginFields(;)
+          beginFields(DeclarationKind.Class, null, null, null, null, null, null, ;)
             handleIdentifier(int, typeReference)
             handleNoTypeArguments(rethrow)
             handleType(int, null)
@@ -833,7 +833,7 @@
         beginMetadataStar(int)
         endMetadataStar(0)
         beginMember()
-          beginFields(;)
+          beginFields(DeclarationKind.Class, null, null, null, null, null, null, ;)
             handleIdentifier(int, typeReference)
             handleNoTypeArguments(return)
             handleType(int, null)
@@ -847,7 +847,7 @@
         beginMetadataStar(int)
         endMetadataStar(0)
         beginMember()
-          beginFields(;)
+          beginFields(DeclarationKind.Class, null, null, null, null, null, null, ;)
             handleIdentifier(int, typeReference)
             handleNoTypeArguments(set)
             handleType(int, null)
@@ -860,7 +860,7 @@
         beginMetadataStar(int)
         endMetadataStar(0)
         beginMember()
-          beginFields(;)
+          beginFields(DeclarationKind.Class, null, null, null, null, null, null, ;)
             handleIdentifier(int, typeReference)
             handleNoTypeArguments(show)
             handleType(int, null)
@@ -873,7 +873,7 @@
         beginMetadataStar(int)
         endMetadataStar(0)
         beginMember()
-          beginFields(;)
+          beginFields(DeclarationKind.Class, null, null, null, null, null, null, ;)
             handleIdentifier(int, typeReference)
             handleNoTypeArguments(source)
             handleType(int, null)
@@ -886,7 +886,7 @@
         beginMetadataStar(int)
         endMetadataStar(0)
         beginMember()
-          beginFields(;)
+          beginFields(DeclarationKind.Class, null, null, null, null, null, null, ;)
             handleIdentifier(int, typeReference)
             handleNoTypeArguments(static)
             handleType(int, null)
@@ -899,7 +899,7 @@
         beginMetadataStar(int)
         endMetadataStar(0)
         beginMember()
-          beginFields(;)
+          beginFields(DeclarationKind.Class, null, null, null, null, null, null, ;)
             handleIdentifier(int, typeReference)
             handleNoTypeArguments(super)
             handleType(int, null)
@@ -913,7 +913,7 @@
         beginMetadataStar(int)
         endMetadataStar(0)
         beginMember()
-          beginFields(;)
+          beginFields(DeclarationKind.Class, null, null, null, null, null, null, ;)
             handleIdentifier(int, typeReference)
             handleNoTypeArguments(switch)
             handleType(int, null)
@@ -927,7 +927,7 @@
         beginMetadataStar(int)
         endMetadataStar(0)
         beginMember()
-          beginFields(;)
+          beginFields(DeclarationKind.Class, null, null, null, null, null, null, ;)
             handleIdentifier(int, typeReference)
             handleNoTypeArguments(sync)
             handleType(int, null)
@@ -940,7 +940,7 @@
         beginMetadataStar(int)
         endMetadataStar(0)
         beginMember()
-          beginFields(;)
+          beginFields(DeclarationKind.Class, null, null, null, null, null, null, ;)
             handleIdentifier(int, typeReference)
             handleNoTypeArguments(this)
             handleType(int, null)
@@ -954,7 +954,7 @@
         beginMetadataStar(int)
         endMetadataStar(0)
         beginMember()
-          beginFields(;)
+          beginFields(DeclarationKind.Class, null, null, null, null, null, null, ;)
             handleIdentifier(int, typeReference)
             handleNoTypeArguments(throw)
             handleType(int, null)
@@ -968,7 +968,7 @@
         beginMetadataStar(int)
         endMetadataStar(0)
         beginMember()
-          beginFields(;)
+          beginFields(DeclarationKind.Class, null, null, null, null, null, null, ;)
             handleIdentifier(int, typeReference)
             handleNoTypeArguments(true)
             handleType(int, null)
@@ -982,7 +982,7 @@
         beginMetadataStar(int)
         endMetadataStar(0)
         beginMember()
-          beginFields(;)
+          beginFields(DeclarationKind.Class, null, null, null, null, null, null, ;)
             handleIdentifier(int, typeReference)
             handleNoTypeArguments(try)
             handleType(int, null)
@@ -996,7 +996,7 @@
         beginMetadataStar(int)
         endMetadataStar(0)
         beginMember()
-          beginFields(;)
+          beginFields(DeclarationKind.Class, null, null, null, null, null, null, ;)
             handleIdentifier(int, typeReference)
             handleNoTypeArguments(typedef)
             handleType(int, null)
@@ -1009,7 +1009,7 @@
         beginMetadataStar(int)
         endMetadataStar(0)
         beginMember()
-          beginFields(;)
+          beginFields(DeclarationKind.Class, null, null, null, null, null, null, ;)
             handleIdentifier(int, typeReference)
             handleNoTypeArguments(var)
             handleType(int, null)
@@ -1023,7 +1023,7 @@
         beginMetadataStar(int)
         endMetadataStar(0)
         beginMember()
-          beginFields(;)
+          beginFields(DeclarationKind.Class, null, null, null, null, null, null, ;)
             handleIdentifier(int, typeReference)
             handleNoTypeArguments(void)
             handleType(int, null)
@@ -1037,7 +1037,7 @@
         beginMetadataStar(int)
         endMetadataStar(0)
         beginMember()
-          beginFields(;)
+          beginFields(DeclarationKind.Class, null, null, null, null, null, null, ;)
             handleIdentifier(int, typeReference)
             handleNoTypeArguments(while)
             handleType(int, null)
@@ -1051,7 +1051,7 @@
         beginMetadataStar(int)
         endMetadataStar(0)
         beginMember()
-          beginFields(;)
+          beginFields(DeclarationKind.Class, null, null, null, null, null, null, ;)
             handleIdentifier(int, typeReference)
             handleNoTypeArguments(with)
             handleType(int, null)
@@ -1065,7 +1065,7 @@
         beginMetadataStar(int)
         endMetadataStar(0)
         beginMember()
-          beginFields(;)
+          beginFields(DeclarationKind.Class, null, null, null, null, null, null, ;)
             handleIdentifier(int, typeReference)
             handleNoTypeArguments(yield)
             handleType(int, null)
@@ -1075,7 +1075,7 @@
             endFieldInitializer(=, ;)
           endClassFields(null, null, null, null, null, null, 1, int, ;)
         endMember()
-      endClassOrMixinBody(DeclarationKind.Class, 69, {, })
+      endClassOrMixinOrExtensionBody(DeclarationKind.Class, 69, {, })
     endClassDeclaration(class, })
   endTopLevelDeclaration()
 endCompilationUnit(1, )
diff --git a/pkg/front_end/parser_testcases/error_recovery/keyword_named_class_fields.dart.intertwined.expect b/pkg/front_end/parser_testcases/error_recovery/keyword_named_class_fields.dart.intertwined.expect
index 6b24bf7..ccc4f23 100644
--- a/pkg/front_end/parser_testcases/error_recovery/keyword_named_class_fields.dart.intertwined.expect
+++ b/pkg/front_end/parser_testcases/error_recovery/keyword_named_class_fields.dart.intertwined.expect
@@ -9,7 +9,7 @@
     parseTopLevelKeywordDeclaration(, class, Instance of 'DirectiveContext')
       parseClassDeclarationModifiers(, class)
       parseClassOrNamedMixinApplication(null, class)
-        listener: beginClassOrNamedMixinApplicationPrelude(class)
+        listener: beginClassOrMixinOrNamedMixinApplicationPrelude(class)
         ensureIdentifier(class, classOrMixinDeclaration)
           listener: handleIdentifier(WrapperClass, classOrMixinDeclaration)
         listener: handleNoTypeVariables({)
@@ -25,7 +25,7 @@
               listener: handleClassOrMixinImplements(null, 0)
             listener: handleClassHeader(class, class, null)
           parseClassOrMixinOrExtensionBody(WrapperClass, DeclarationKind.Class, WrapperClass)
-            listener: beginClassOrMixinBody(DeclarationKind.Class, {)
+            listener: beginClassOrMixinOrExtensionBody(DeclarationKind.Class, {)
             notEofOrValue(}, int)
             parseClassOrMixinOrExtensionMemberImpl({, DeclarationKind.Class, WrapperClass)
               parseMetadataStar({)
@@ -33,7 +33,7 @@
                 listener: endMetadataStar(0)
               listener: beginMember()
               parseFields({, null, null, null, null, null, null, {, Instance of 'SimpleType', abstract, DeclarationKind.Class, WrapperClass, false)
-                listener: beginFields({)
+                listener: beginFields(DeclarationKind.Class, null, null, null, null, null, null, {)
                 listener: handleIdentifier(int, typeReference)
                 listener: handleNoTypeArguments(abstract)
                 listener: handleType(int, null)
@@ -57,7 +57,7 @@
                 listener: endMetadataStar(0)
               listener: beginMember()
               parseFields(;, null, null, null, null, null, null, ;, Instance of 'SimpleType', as, DeclarationKind.Class, WrapperClass, false)
-                listener: beginFields(;)
+                listener: beginFields(DeclarationKind.Class, null, null, null, null, null, null, ;)
                 listener: handleIdentifier(int, typeReference)
                 listener: handleNoTypeArguments(as)
                 listener: handleType(int, null)
@@ -83,7 +83,7 @@
               isReservedKeyword(assert)
               indicatesMethodOrField(=)
               parseFields(;, null, null, null, null, null, null, ;, Instance of 'SimpleType', assert, DeclarationKind.Class, WrapperClass, true)
-                listener: beginFields(;)
+                listener: beginFields(DeclarationKind.Class, null, null, null, null, null, null, ;)
                 listener: handleIdentifier(int, typeReference)
                 listener: handleNoTypeArguments(assert)
                 listener: handleType(int, null)
@@ -109,7 +109,7 @@
                 listener: endMetadataStar(0)
               listener: beginMember()
               parseFields(;, null, null, null, null, null, null, ;, Instance of 'SimpleType', async, DeclarationKind.Class, WrapperClass, false)
-                listener: beginFields(;)
+                listener: beginFields(DeclarationKind.Class, null, null, null, null, null, null, ;)
                 listener: handleIdentifier(int, typeReference)
                 listener: handleNoTypeArguments(async)
                 listener: handleType(int, null)
@@ -133,7 +133,7 @@
                 listener: endMetadataStar(0)
               listener: beginMember()
               parseFields(;, null, null, null, null, null, null, ;, Instance of 'SimpleType', await, DeclarationKind.Class, WrapperClass, false)
-                listener: beginFields(;)
+                listener: beginFields(DeclarationKind.Class, null, null, null, null, null, null, ;)
                 listener: handleIdentifier(int, typeReference)
                 listener: handleNoTypeArguments(await)
                 listener: handleType(int, null)
@@ -159,7 +159,7 @@
               isReservedKeyword(break)
               indicatesMethodOrField(=)
               parseFields(;, null, null, null, null, null, null, ;, Instance of 'SimpleType', break, DeclarationKind.Class, WrapperClass, true)
-                listener: beginFields(;)
+                listener: beginFields(DeclarationKind.Class, null, null, null, null, null, null, ;)
                 listener: handleIdentifier(int, typeReference)
                 listener: handleNoTypeArguments(break)
                 listener: handleType(int, null)
@@ -187,7 +187,7 @@
               isReservedKeyword(case)
               indicatesMethodOrField(=)
               parseFields(;, null, null, null, null, null, null, ;, Instance of 'SimpleType', case, DeclarationKind.Class, WrapperClass, true)
-                listener: beginFields(;)
+                listener: beginFields(DeclarationKind.Class, null, null, null, null, null, null, ;)
                 listener: handleIdentifier(int, typeReference)
                 listener: handleNoTypeArguments(case)
                 listener: handleType(int, null)
@@ -215,7 +215,7 @@
               isReservedKeyword(catch)
               indicatesMethodOrField(=)
               parseFields(;, null, null, null, null, null, null, ;, Instance of 'SimpleType', catch, DeclarationKind.Class, WrapperClass, true)
-                listener: beginFields(;)
+                listener: beginFields(DeclarationKind.Class, null, null, null, null, null, null, ;)
                 listener: handleIdentifier(int, typeReference)
                 listener: handleNoTypeArguments(catch)
                 listener: handleType(int, null)
@@ -243,7 +243,7 @@
               isReservedKeyword(class)
               indicatesMethodOrField(=)
               parseFields(;, null, null, null, null, null, null, ;, Instance of 'SimpleType', class, DeclarationKind.Class, WrapperClass, true)
-                listener: beginFields(;)
+                listener: beginFields(DeclarationKind.Class, null, null, null, null, null, null, ;)
                 listener: handleIdentifier(int, typeReference)
                 listener: handleNoTypeArguments(class)
                 listener: handleType(int, null)
@@ -271,7 +271,7 @@
               isReservedKeyword(const)
               indicatesMethodOrField(=)
               parseFields(;, null, null, null, null, null, null, ;, Instance of 'SimpleType', const, DeclarationKind.Class, WrapperClass, true)
-                listener: beginFields(;)
+                listener: beginFields(DeclarationKind.Class, null, null, null, null, null, null, ;)
                 listener: handleIdentifier(int, typeReference)
                 listener: handleNoTypeArguments(const)
                 listener: handleType(int, null)
@@ -299,7 +299,7 @@
               isReservedKeyword(continue)
               indicatesMethodOrField(=)
               parseFields(;, null, null, null, null, null, null, ;, Instance of 'SimpleType', continue, DeclarationKind.Class, WrapperClass, true)
-                listener: beginFields(;)
+                listener: beginFields(DeclarationKind.Class, null, null, null, null, null, null, ;)
                 listener: handleIdentifier(int, typeReference)
                 listener: handleNoTypeArguments(continue)
                 listener: handleType(int, null)
@@ -325,7 +325,7 @@
                 listener: endMetadataStar(0)
               listener: beginMember()
               parseFields(;, null, null, null, null, null, null, ;, Instance of 'SimpleType', covariant, DeclarationKind.Class, WrapperClass, false)
-                listener: beginFields(;)
+                listener: beginFields(DeclarationKind.Class, null, null, null, null, null, null, ;)
                 listener: handleIdentifier(int, typeReference)
                 listener: handleNoTypeArguments(covariant)
                 listener: handleType(int, null)
@@ -351,7 +351,7 @@
               isReservedKeyword(default)
               indicatesMethodOrField(=)
               parseFields(;, null, null, null, null, null, null, ;, Instance of 'SimpleType', default, DeclarationKind.Class, WrapperClass, true)
-                listener: beginFields(;)
+                listener: beginFields(DeclarationKind.Class, null, null, null, null, null, null, ;)
                 listener: handleIdentifier(int, typeReference)
                 listener: handleNoTypeArguments(default)
                 listener: handleType(int, null)
@@ -377,7 +377,7 @@
                 listener: endMetadataStar(0)
               listener: beginMember()
               parseFields(;, null, null, null, null, null, null, ;, Instance of 'SimpleType', deferred, DeclarationKind.Class, WrapperClass, false)
-                listener: beginFields(;)
+                listener: beginFields(DeclarationKind.Class, null, null, null, null, null, null, ;)
                 listener: handleIdentifier(int, typeReference)
                 listener: handleNoTypeArguments(deferred)
                 listener: handleType(int, null)
@@ -403,7 +403,7 @@
               isReservedKeyword(do)
               indicatesMethodOrField(=)
               parseFields(;, null, null, null, null, null, null, ;, Instance of 'SimpleType', do, DeclarationKind.Class, WrapperClass, true)
-                listener: beginFields(;)
+                listener: beginFields(DeclarationKind.Class, null, null, null, null, null, null, ;)
                 listener: handleIdentifier(int, typeReference)
                 listener: handleNoTypeArguments(do)
                 listener: handleType(int, null)
@@ -429,7 +429,7 @@
                 listener: endMetadataStar(0)
               listener: beginMember()
               parseFields(;, null, null, null, null, null, null, ;, Instance of 'SimpleType', dynamic, DeclarationKind.Class, WrapperClass, false)
-                listener: beginFields(;)
+                listener: beginFields(DeclarationKind.Class, null, null, null, null, null, null, ;)
                 listener: handleIdentifier(int, typeReference)
                 listener: handleNoTypeArguments(dynamic)
                 listener: handleType(int, null)
@@ -455,7 +455,7 @@
               isReservedKeyword(else)
               indicatesMethodOrField(=)
               parseFields(;, null, null, null, null, null, null, ;, Instance of 'SimpleType', else, DeclarationKind.Class, WrapperClass, true)
-                listener: beginFields(;)
+                listener: beginFields(DeclarationKind.Class, null, null, null, null, null, null, ;)
                 listener: handleIdentifier(int, typeReference)
                 listener: handleNoTypeArguments(else)
                 listener: handleType(int, null)
@@ -483,7 +483,7 @@
               isReservedKeyword(enum)
               indicatesMethodOrField(=)
               parseFields(;, null, null, null, null, null, null, ;, Instance of 'SimpleType', enum, DeclarationKind.Class, WrapperClass, true)
-                listener: beginFields(;)
+                listener: beginFields(DeclarationKind.Class, null, null, null, null, null, null, ;)
                 listener: handleIdentifier(int, typeReference)
                 listener: handleNoTypeArguments(enum)
                 listener: handleType(int, null)
@@ -509,7 +509,7 @@
                 listener: endMetadataStar(0)
               listener: beginMember()
               parseFields(;, null, null, null, null, null, null, ;, Instance of 'SimpleType', export, DeclarationKind.Class, WrapperClass, false)
-                listener: beginFields(;)
+                listener: beginFields(DeclarationKind.Class, null, null, null, null, null, null, ;)
                 listener: handleIdentifier(int, typeReference)
                 listener: handleNoTypeArguments(export)
                 listener: handleType(int, null)
@@ -535,7 +535,7 @@
               isReservedKeyword(extends)
               indicatesMethodOrField(=)
               parseFields(;, null, null, null, null, null, null, ;, Instance of 'SimpleType', extends, DeclarationKind.Class, WrapperClass, true)
-                listener: beginFields(;)
+                listener: beginFields(DeclarationKind.Class, null, null, null, null, null, null, ;)
                 listener: handleIdentifier(int, typeReference)
                 listener: handleNoTypeArguments(extends)
                 listener: handleType(int, null)
@@ -561,7 +561,7 @@
                 listener: endMetadataStar(0)
               listener: beginMember()
               parseFields(;, null, null, null, null, null, null, ;, Instance of 'SimpleType', extension, DeclarationKind.Class, WrapperClass, false)
-                listener: beginFields(;)
+                listener: beginFields(DeclarationKind.Class, null, null, null, null, null, null, ;)
                 listener: handleIdentifier(int, typeReference)
                 listener: handleNoTypeArguments(extension)
                 listener: handleType(int, null)
@@ -585,7 +585,7 @@
                 listener: endMetadataStar(0)
               listener: beginMember()
               parseFields(;, null, null, null, null, null, null, ;, Instance of 'SimpleType', external, DeclarationKind.Class, WrapperClass, false)
-                listener: beginFields(;)
+                listener: beginFields(DeclarationKind.Class, null, null, null, null, null, null, ;)
                 listener: handleIdentifier(int, typeReference)
                 listener: handleNoTypeArguments(external)
                 listener: handleType(int, null)
@@ -609,7 +609,7 @@
                 listener: endMetadataStar(0)
               listener: beginMember()
               parseFields(;, null, null, null, null, null, null, ;, Instance of 'SimpleType', factory, DeclarationKind.Class, WrapperClass, false)
-                listener: beginFields(;)
+                listener: beginFields(DeclarationKind.Class, null, null, null, null, null, null, ;)
                 listener: handleIdentifier(int, typeReference)
                 listener: handleNoTypeArguments(factory)
                 listener: handleType(int, null)
@@ -635,7 +635,7 @@
               isReservedKeyword(false)
               indicatesMethodOrField(=)
               parseFields(;, null, null, null, null, null, null, ;, Instance of 'SimpleType', false, DeclarationKind.Class, WrapperClass, true)
-                listener: beginFields(;)
+                listener: beginFields(DeclarationKind.Class, null, null, null, null, null, null, ;)
                 listener: handleIdentifier(int, typeReference)
                 listener: handleNoTypeArguments(false)
                 listener: handleType(int, null)
@@ -663,7 +663,7 @@
               isReservedKeyword(final)
               indicatesMethodOrField(=)
               parseFields(;, null, null, null, null, null, null, ;, Instance of 'SimpleType', final, DeclarationKind.Class, WrapperClass, true)
-                listener: beginFields(;)
+                listener: beginFields(DeclarationKind.Class, null, null, null, null, null, null, ;)
                 listener: handleIdentifier(int, typeReference)
                 listener: handleNoTypeArguments(final)
                 listener: handleType(int, null)
@@ -691,7 +691,7 @@
               isReservedKeyword(finally)
               indicatesMethodOrField(=)
               parseFields(;, null, null, null, null, null, null, ;, Instance of 'SimpleType', finally, DeclarationKind.Class, WrapperClass, true)
-                listener: beginFields(;)
+                listener: beginFields(DeclarationKind.Class, null, null, null, null, null, null, ;)
                 listener: handleIdentifier(int, typeReference)
                 listener: handleNoTypeArguments(finally)
                 listener: handleType(int, null)
@@ -719,7 +719,7 @@
               isReservedKeyword(for)
               indicatesMethodOrField(=)
               parseFields(;, null, null, null, null, null, null, ;, Instance of 'SimpleType', for, DeclarationKind.Class, WrapperClass, true)
-                listener: beginFields(;)
+                listener: beginFields(DeclarationKind.Class, null, null, null, null, null, null, ;)
                 listener: handleIdentifier(int, typeReference)
                 listener: handleNoTypeArguments(for)
                 listener: handleType(int, null)
@@ -745,7 +745,7 @@
                 listener: endMetadataStar(0)
               listener: beginMember()
               parseFields(;, null, null, null, null, null, null, ;, Instance of 'SimpleType', Function, DeclarationKind.Class, WrapperClass, false)
-                listener: beginFields(;)
+                listener: beginFields(DeclarationKind.Class, null, null, null, null, null, null, ;)
                 listener: handleIdentifier(int, typeReference)
                 listener: handleNoTypeArguments(Function)
                 listener: handleType(int, null)
@@ -770,7 +770,7 @@
               listener: beginMember()
               isReservedKeyword(=)
               parseFields(;, null, null, null, null, null, null, ;, Instance of 'SimpleType', get, DeclarationKind.Class, WrapperClass, false)
-                listener: beginFields(;)
+                listener: beginFields(DeclarationKind.Class, null, null, null, null, null, null, ;)
                 listener: handleIdentifier(int, typeReference)
                 listener: handleNoTypeArguments(get)
                 listener: handleType(int, null)
@@ -794,7 +794,7 @@
                 listener: endMetadataStar(0)
               listener: beginMember()
               parseFields(;, null, null, null, null, null, null, ;, Instance of 'SimpleType', hide, DeclarationKind.Class, WrapperClass, false)
-                listener: beginFields(;)
+                listener: beginFields(DeclarationKind.Class, null, null, null, null, null, null, ;)
                 listener: handleIdentifier(int, typeReference)
                 listener: handleNoTypeArguments(hide)
                 listener: handleType(int, null)
@@ -820,7 +820,7 @@
               isReservedKeyword(if)
               indicatesMethodOrField(=)
               parseFields(;, null, null, null, null, null, null, ;, Instance of 'SimpleType', if, DeclarationKind.Class, WrapperClass, true)
-                listener: beginFields(;)
+                listener: beginFields(DeclarationKind.Class, null, null, null, null, null, null, ;)
                 listener: handleIdentifier(int, typeReference)
                 listener: handleNoTypeArguments(if)
                 listener: handleType(int, null)
@@ -846,7 +846,7 @@
                 listener: endMetadataStar(0)
               listener: beginMember()
               parseFields(;, null, null, null, null, null, null, ;, Instance of 'SimpleType', implements, DeclarationKind.Class, WrapperClass, false)
-                listener: beginFields(;)
+                listener: beginFields(DeclarationKind.Class, null, null, null, null, null, null, ;)
                 listener: handleIdentifier(int, typeReference)
                 listener: handleNoTypeArguments(implements)
                 listener: handleType(int, null)
@@ -870,7 +870,7 @@
                 listener: endMetadataStar(0)
               listener: beginMember()
               parseFields(;, null, null, null, null, null, null, ;, Instance of 'SimpleType', import, DeclarationKind.Class, WrapperClass, false)
-                listener: beginFields(;)
+                listener: beginFields(DeclarationKind.Class, null, null, null, null, null, null, ;)
                 listener: handleIdentifier(int, typeReference)
                 listener: handleNoTypeArguments(import)
                 listener: handleType(int, null)
@@ -896,7 +896,7 @@
               isReservedKeyword(in)
               indicatesMethodOrField(=)
               parseFields(;, null, null, null, null, null, null, ;, Instance of 'SimpleType', in, DeclarationKind.Class, WrapperClass, true)
-                listener: beginFields(;)
+                listener: beginFields(DeclarationKind.Class, null, null, null, null, null, null, ;)
                 listener: handleIdentifier(int, typeReference)
                 listener: handleNoTypeArguments(in)
                 listener: handleType(int, null)
@@ -922,7 +922,7 @@
                 listener: endMetadataStar(0)
               listener: beginMember()
               parseFields(;, null, null, null, null, null, null, ;, Instance of 'SimpleType', inout, DeclarationKind.Class, WrapperClass, false)
-                listener: beginFields(;)
+                listener: beginFields(DeclarationKind.Class, null, null, null, null, null, null, ;)
                 listener: handleIdentifier(int, typeReference)
                 listener: handleNoTypeArguments(inout)
                 listener: handleType(int, null)
@@ -946,7 +946,7 @@
                 listener: endMetadataStar(0)
               listener: beginMember()
               parseFields(;, null, null, null, null, null, null, ;, Instance of 'SimpleType', interface, DeclarationKind.Class, WrapperClass, false)
-                listener: beginFields(;)
+                listener: beginFields(DeclarationKind.Class, null, null, null, null, null, null, ;)
                 listener: handleIdentifier(int, typeReference)
                 listener: handleNoTypeArguments(interface)
                 listener: handleType(int, null)
@@ -972,7 +972,7 @@
               isReservedKeyword(is)
               indicatesMethodOrField(=)
               parseFields(;, null, null, null, null, null, null, ;, Instance of 'SimpleType', is, DeclarationKind.Class, WrapperClass, true)
-                listener: beginFields(;)
+                listener: beginFields(DeclarationKind.Class, null, null, null, null, null, null, ;)
                 listener: handleIdentifier(int, typeReference)
                 listener: handleNoTypeArguments(is)
                 listener: handleType(int, null)
@@ -998,7 +998,7 @@
                 listener: endMetadataStar(0)
               listener: beginMember()
               parseFields(;, null, null, null, null, null, null, ;, Instance of 'SimpleType', late, DeclarationKind.Class, WrapperClass, false)
-                listener: beginFields(;)
+                listener: beginFields(DeclarationKind.Class, null, null, null, null, null, null, ;)
                 listener: handleIdentifier(int, typeReference)
                 listener: handleNoTypeArguments(late)
                 listener: handleType(int, null)
@@ -1022,7 +1022,7 @@
                 listener: endMetadataStar(0)
               listener: beginMember()
               parseFields(;, null, null, null, null, null, null, ;, Instance of 'SimpleType', library, DeclarationKind.Class, WrapperClass, false)
-                listener: beginFields(;)
+                listener: beginFields(DeclarationKind.Class, null, null, null, null, null, null, ;)
                 listener: handleIdentifier(int, typeReference)
                 listener: handleNoTypeArguments(library)
                 listener: handleType(int, null)
@@ -1046,7 +1046,7 @@
                 listener: endMetadataStar(0)
               listener: beginMember()
               parseFields(;, null, null, null, null, null, null, ;, Instance of 'SimpleType', mixin, DeclarationKind.Class, WrapperClass, false)
-                listener: beginFields(;)
+                listener: beginFields(DeclarationKind.Class, null, null, null, null, null, null, ;)
                 listener: handleIdentifier(int, typeReference)
                 listener: handleNoTypeArguments(mixin)
                 listener: handleType(int, null)
@@ -1070,7 +1070,7 @@
                 listener: endMetadataStar(0)
               listener: beginMember()
               parseFields(;, null, null, null, null, null, null, ;, Instance of 'SimpleType', native, DeclarationKind.Class, WrapperClass, false)
-                listener: beginFields(;)
+                listener: beginFields(DeclarationKind.Class, null, null, null, null, null, null, ;)
                 listener: handleIdentifier(int, typeReference)
                 listener: handleNoTypeArguments(native)
                 listener: handleType(int, null)
@@ -1096,7 +1096,7 @@
               isReservedKeyword(new)
               indicatesMethodOrField(=)
               parseFields(;, null, null, null, null, null, null, ;, Instance of 'SimpleType', new, DeclarationKind.Class, WrapperClass, true)
-                listener: beginFields(;)
+                listener: beginFields(DeclarationKind.Class, null, null, null, null, null, null, ;)
                 listener: handleIdentifier(int, typeReference)
                 listener: handleNoTypeArguments(new)
                 listener: handleType(int, null)
@@ -1124,7 +1124,7 @@
               isReservedKeyword(null)
               indicatesMethodOrField(=)
               parseFields(;, null, null, null, null, null, null, ;, Instance of 'SimpleType', null, DeclarationKind.Class, WrapperClass, true)
-                listener: beginFields(;)
+                listener: beginFields(DeclarationKind.Class, null, null, null, null, null, null, ;)
                 listener: handleIdentifier(int, typeReference)
                 listener: handleNoTypeArguments(null)
                 listener: handleType(int, null)
@@ -1150,7 +1150,7 @@
                 listener: endMetadataStar(0)
               listener: beginMember()
               parseFields(;, null, null, null, null, null, null, ;, Instance of 'SimpleType', of, DeclarationKind.Class, WrapperClass, false)
-                listener: beginFields(;)
+                listener: beginFields(DeclarationKind.Class, null, null, null, null, null, null, ;)
                 listener: handleIdentifier(int, typeReference)
                 listener: handleNoTypeArguments(of)
                 listener: handleType(int, null)
@@ -1174,7 +1174,7 @@
                 listener: endMetadataStar(0)
               listener: beginMember()
               parseFields(;, null, null, null, null, null, null, ;, Instance of 'SimpleType', on, DeclarationKind.Class, WrapperClass, false)
-                listener: beginFields(;)
+                listener: beginFields(DeclarationKind.Class, null, null, null, null, null, null, ;)
                 listener: handleIdentifier(int, typeReference)
                 listener: handleNoTypeArguments(on)
                 listener: handleType(int, null)
@@ -1199,7 +1199,7 @@
               listener: beginMember()
               isUnaryMinus(=)
               parseFields(;, null, null, null, null, null, null, ;, Instance of 'SimpleType', operator, DeclarationKind.Class, WrapperClass, false)
-                listener: beginFields(;)
+                listener: beginFields(DeclarationKind.Class, null, null, null, null, null, null, ;)
                 listener: handleIdentifier(int, typeReference)
                 listener: handleNoTypeArguments(operator)
                 listener: handleType(int, null)
@@ -1223,7 +1223,7 @@
                 listener: endMetadataStar(0)
               listener: beginMember()
               parseFields(;, null, null, null, null, null, null, ;, Instance of 'SimpleType', out, DeclarationKind.Class, WrapperClass, false)
-                listener: beginFields(;)
+                listener: beginFields(DeclarationKind.Class, null, null, null, null, null, null, ;)
                 listener: handleIdentifier(int, typeReference)
                 listener: handleNoTypeArguments(out)
                 listener: handleType(int, null)
@@ -1247,7 +1247,7 @@
                 listener: endMetadataStar(0)
               listener: beginMember()
               parseFields(;, null, null, null, null, null, null, ;, Instance of 'SimpleType', part, DeclarationKind.Class, WrapperClass, false)
-                listener: beginFields(;)
+                listener: beginFields(DeclarationKind.Class, null, null, null, null, null, null, ;)
                 listener: handleIdentifier(int, typeReference)
                 listener: handleNoTypeArguments(part)
                 listener: handleType(int, null)
@@ -1271,7 +1271,7 @@
                 listener: endMetadataStar(0)
               listener: beginMember()
               parseFields(;, null, null, null, null, null, null, ;, Instance of 'SimpleType', patch, DeclarationKind.Class, WrapperClass, false)
-                listener: beginFields(;)
+                listener: beginFields(DeclarationKind.Class, null, null, null, null, null, null, ;)
                 listener: handleIdentifier(int, typeReference)
                 listener: handleNoTypeArguments(patch)
                 listener: handleType(int, null)
@@ -1295,7 +1295,7 @@
                 listener: endMetadataStar(0)
               listener: beginMember()
               parseFields(;, null, null, null, null, null, null, ;, Instance of 'SimpleType', required, DeclarationKind.Class, WrapperClass, false)
-                listener: beginFields(;)
+                listener: beginFields(DeclarationKind.Class, null, null, null, null, null, null, ;)
                 listener: handleIdentifier(int, typeReference)
                 listener: handleNoTypeArguments(required)
                 listener: handleType(int, null)
@@ -1321,7 +1321,7 @@
               isReservedKeyword(rethrow)
               indicatesMethodOrField(=)
               parseFields(;, null, null, null, null, null, null, ;, Instance of 'SimpleType', rethrow, DeclarationKind.Class, WrapperClass, true)
-                listener: beginFields(;)
+                listener: beginFields(DeclarationKind.Class, null, null, null, null, null, null, ;)
                 listener: handleIdentifier(int, typeReference)
                 listener: handleNoTypeArguments(rethrow)
                 listener: handleType(int, null)
@@ -1349,7 +1349,7 @@
               isReservedKeyword(return)
               indicatesMethodOrField(=)
               parseFields(;, null, null, null, null, null, null, ;, Instance of 'SimpleType', return, DeclarationKind.Class, WrapperClass, true)
-                listener: beginFields(;)
+                listener: beginFields(DeclarationKind.Class, null, null, null, null, null, null, ;)
                 listener: handleIdentifier(int, typeReference)
                 listener: handleNoTypeArguments(return)
                 listener: handleType(int, null)
@@ -1376,7 +1376,7 @@
               listener: beginMember()
               isReservedKeyword(=)
               parseFields(;, null, null, null, null, null, null, ;, Instance of 'SimpleType', set, DeclarationKind.Class, WrapperClass, false)
-                listener: beginFields(;)
+                listener: beginFields(DeclarationKind.Class, null, null, null, null, null, null, ;)
                 listener: handleIdentifier(int, typeReference)
                 listener: handleNoTypeArguments(set)
                 listener: handleType(int, null)
@@ -1400,7 +1400,7 @@
                 listener: endMetadataStar(0)
               listener: beginMember()
               parseFields(;, null, null, null, null, null, null, ;, Instance of 'SimpleType', show, DeclarationKind.Class, WrapperClass, false)
-                listener: beginFields(;)
+                listener: beginFields(DeclarationKind.Class, null, null, null, null, null, null, ;)
                 listener: handleIdentifier(int, typeReference)
                 listener: handleNoTypeArguments(show)
                 listener: handleType(int, null)
@@ -1424,7 +1424,7 @@
                 listener: endMetadataStar(0)
               listener: beginMember()
               parseFields(;, null, null, null, null, null, null, ;, Instance of 'SimpleType', source, DeclarationKind.Class, WrapperClass, false)
-                listener: beginFields(;)
+                listener: beginFields(DeclarationKind.Class, null, null, null, null, null, null, ;)
                 listener: handleIdentifier(int, typeReference)
                 listener: handleNoTypeArguments(source)
                 listener: handleType(int, null)
@@ -1448,7 +1448,7 @@
                 listener: endMetadataStar(0)
               listener: beginMember()
               parseFields(;, null, null, null, null, null, null, ;, Instance of 'SimpleType', static, DeclarationKind.Class, WrapperClass, false)
-                listener: beginFields(;)
+                listener: beginFields(DeclarationKind.Class, null, null, null, null, null, null, ;)
                 listener: handleIdentifier(int, typeReference)
                 listener: handleNoTypeArguments(static)
                 listener: handleType(int, null)
@@ -1474,7 +1474,7 @@
               isReservedKeyword(super)
               indicatesMethodOrField(=)
               parseFields(;, null, null, null, null, null, null, ;, Instance of 'SimpleType', super, DeclarationKind.Class, WrapperClass, true)
-                listener: beginFields(;)
+                listener: beginFields(DeclarationKind.Class, null, null, null, null, null, null, ;)
                 listener: handleIdentifier(int, typeReference)
                 listener: handleNoTypeArguments(super)
                 listener: handleType(int, null)
@@ -1502,7 +1502,7 @@
               isReservedKeyword(switch)
               indicatesMethodOrField(=)
               parseFields(;, null, null, null, null, null, null, ;, Instance of 'SimpleType', switch, DeclarationKind.Class, WrapperClass, true)
-                listener: beginFields(;)
+                listener: beginFields(DeclarationKind.Class, null, null, null, null, null, null, ;)
                 listener: handleIdentifier(int, typeReference)
                 listener: handleNoTypeArguments(switch)
                 listener: handleType(int, null)
@@ -1528,7 +1528,7 @@
                 listener: endMetadataStar(0)
               listener: beginMember()
               parseFields(;, null, null, null, null, null, null, ;, Instance of 'SimpleType', sync, DeclarationKind.Class, WrapperClass, false)
-                listener: beginFields(;)
+                listener: beginFields(DeclarationKind.Class, null, null, null, null, null, null, ;)
                 listener: handleIdentifier(int, typeReference)
                 listener: handleNoTypeArguments(sync)
                 listener: handleType(int, null)
@@ -1553,7 +1553,7 @@
               listener: beginMember()
               recoverFromInvalidMember(int, ;, null, null, null, null, null, null, ;, Instance of 'SimpleType', null, DeclarationKind.Class, WrapperClass)
                 parseFields(;, null, null, null, null, null, null, ;, Instance of 'SimpleType', this, DeclarationKind.Class, WrapperClass, false)
-                  listener: beginFields(;)
+                  listener: beginFields(DeclarationKind.Class, null, null, null, null, null, null, ;)
                   listener: handleIdentifier(int, typeReference)
                   listener: handleNoTypeArguments(this)
                   listener: handleType(int, null)
@@ -1581,7 +1581,7 @@
               isReservedKeyword(throw)
               indicatesMethodOrField(=)
               parseFields(;, null, null, null, null, null, null, ;, Instance of 'SimpleType', throw, DeclarationKind.Class, WrapperClass, true)
-                listener: beginFields(;)
+                listener: beginFields(DeclarationKind.Class, null, null, null, null, null, null, ;)
                 listener: handleIdentifier(int, typeReference)
                 listener: handleNoTypeArguments(throw)
                 listener: handleType(int, null)
@@ -1609,7 +1609,7 @@
               isReservedKeyword(true)
               indicatesMethodOrField(=)
               parseFields(;, null, null, null, null, null, null, ;, Instance of 'SimpleType', true, DeclarationKind.Class, WrapperClass, true)
-                listener: beginFields(;)
+                listener: beginFields(DeclarationKind.Class, null, null, null, null, null, null, ;)
                 listener: handleIdentifier(int, typeReference)
                 listener: handleNoTypeArguments(true)
                 listener: handleType(int, null)
@@ -1637,7 +1637,7 @@
               isReservedKeyword(try)
               indicatesMethodOrField(=)
               parseFields(;, null, null, null, null, null, null, ;, Instance of 'SimpleType', try, DeclarationKind.Class, WrapperClass, true)
-                listener: beginFields(;)
+                listener: beginFields(DeclarationKind.Class, null, null, null, null, null, null, ;)
                 listener: handleIdentifier(int, typeReference)
                 listener: handleNoTypeArguments(try)
                 listener: handleType(int, null)
@@ -1663,7 +1663,7 @@
                 listener: endMetadataStar(0)
               listener: beginMember()
               parseFields(;, null, null, null, null, null, null, ;, Instance of 'SimpleType', typedef, DeclarationKind.Class, WrapperClass, false)
-                listener: beginFields(;)
+                listener: beginFields(DeclarationKind.Class, null, null, null, null, null, null, ;)
                 listener: handleIdentifier(int, typeReference)
                 listener: handleNoTypeArguments(typedef)
                 listener: handleType(int, null)
@@ -1689,7 +1689,7 @@
               isReservedKeyword(var)
               indicatesMethodOrField(=)
               parseFields(;, null, null, null, null, null, null, ;, Instance of 'SimpleType', var, DeclarationKind.Class, WrapperClass, true)
-                listener: beginFields(;)
+                listener: beginFields(DeclarationKind.Class, null, null, null, null, null, null, ;)
                 listener: handleIdentifier(int, typeReference)
                 listener: handleNoTypeArguments(var)
                 listener: handleType(int, null)
@@ -1717,7 +1717,7 @@
               isReservedKeyword(void)
               indicatesMethodOrField(=)
               parseFields(;, null, null, null, null, null, null, ;, Instance of 'SimpleType', void, DeclarationKind.Class, WrapperClass, true)
-                listener: beginFields(;)
+                listener: beginFields(DeclarationKind.Class, null, null, null, null, null, null, ;)
                 listener: handleIdentifier(int, typeReference)
                 listener: handleNoTypeArguments(void)
                 listener: handleType(int, null)
@@ -1745,7 +1745,7 @@
               isReservedKeyword(while)
               indicatesMethodOrField(=)
               parseFields(;, null, null, null, null, null, null, ;, Instance of 'SimpleType', while, DeclarationKind.Class, WrapperClass, true)
-                listener: beginFields(;)
+                listener: beginFields(DeclarationKind.Class, null, null, null, null, null, null, ;)
                 listener: handleIdentifier(int, typeReference)
                 listener: handleNoTypeArguments(while)
                 listener: handleType(int, null)
@@ -1773,7 +1773,7 @@
               isReservedKeyword(with)
               indicatesMethodOrField(=)
               parseFields(;, null, null, null, null, null, null, ;, Instance of 'SimpleType', with, DeclarationKind.Class, WrapperClass, true)
-                listener: beginFields(;)
+                listener: beginFields(DeclarationKind.Class, null, null, null, null, null, null, ;)
                 listener: handleIdentifier(int, typeReference)
                 listener: handleNoTypeArguments(with)
                 listener: handleType(int, null)
@@ -1799,7 +1799,7 @@
                 listener: endMetadataStar(0)
               listener: beginMember()
               parseFields(;, null, null, null, null, null, null, ;, Instance of 'SimpleType', yield, DeclarationKind.Class, WrapperClass, false)
-                listener: beginFields(;)
+                listener: beginFields(DeclarationKind.Class, null, null, null, null, null, null, ;)
                 listener: handleIdentifier(int, typeReference)
                 listener: handleNoTypeArguments(yield)
                 listener: handleType(int, null)
@@ -1817,7 +1817,7 @@
                 listener: endClassFields(null, null, null, null, null, null, 1, int, ;)
               listener: endMember()
             notEofOrValue(}, })
-            listener: endClassOrMixinBody(DeclarationKind.Class, 69, {, })
+            listener: endClassOrMixinOrExtensionBody(DeclarationKind.Class, 69, {, })
           listener: endClassDeclaration(class, })
   listener: endTopLevelDeclaration()
   reportAllErrorTokens(class)
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 502bede..d7a04ad 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
@@ -475,7 +475,7 @@
 beginCompilationUnit(class)
   beginMetadataStar(class)
   endMetadataStar(0)
-  beginClassOrNamedMixinApplicationPrelude(class)
+  beginClassOrMixinOrNamedMixinApplicationPrelude(class)
     handleIdentifier(WrapperClass, classOrMixinDeclaration)
     handleNoTypeVariables({)
     beginClassDeclaration(class, null, WrapperClass)
@@ -484,11 +484,11 @@
       handleClassNoWithClause()
       handleClassOrMixinImplements(null, 0)
       handleClassHeader(class, class, null)
-      beginClassOrMixinBody(DeclarationKind.Class, {)
+      beginClassOrMixinOrExtensionBody(DeclarationKind.Class, {)
         beginMetadataStar(int)
         endMetadataStar(0)
         beginMember()
-          beginMethod(null, null, null, null, null, abstract)
+          beginMethod(DeclarationKind.Class, null, null, null, null, null, abstract)
             handleIdentifier(int, typeReference)
             handleNoTypeArguments(abstract)
             handleType(int, null)
@@ -546,7 +546,7 @@
         beginMetadataStar(int)
         endMetadataStar(0)
         beginMember()
-          beginMethod(null, null, null, null, null, as)
+          beginMethod(DeclarationKind.Class, null, null, null, null, null, as)
             handleIdentifier(int, typeReference)
             handleNoTypeArguments(as)
             handleType(int, null)
@@ -604,7 +604,7 @@
         beginMetadataStar(int)
         endMetadataStar(0)
         beginMember()
-          beginMethod(null, null, null, null, null, assert)
+          beginMethod(DeclarationKind.Class, null, null, null, null, null, assert)
             handleIdentifier(int, typeReference)
             handleNoTypeArguments(assert)
             handleType(int, null)
@@ -661,7 +661,7 @@
         beginMetadataStar(int)
         endMetadataStar(0)
         beginMember()
-          beginMethod(null, null, null, null, null, async)
+          beginMethod(DeclarationKind.Class, null, null, null, null, null, async)
             handleIdentifier(int, typeReference)
             handleNoTypeArguments(async)
             handleType(int, null)
@@ -719,7 +719,7 @@
         beginMetadataStar(int)
         endMetadataStar(0)
         beginMember()
-          beginMethod(null, null, null, null, null, await)
+          beginMethod(DeclarationKind.Class, null, null, null, null, null, await)
             handleIdentifier(int, typeReference)
             handleNoTypeArguments(await)
             handleType(int, null)
@@ -777,7 +777,7 @@
         beginMetadataStar(int)
         endMetadataStar(0)
         beginMember()
-          beginMethod(null, null, null, null, null, break)
+          beginMethod(DeclarationKind.Class, null, null, null, null, null, break)
             handleIdentifier(int, typeReference)
             handleNoTypeArguments(break)
             handleType(int, null)
@@ -842,7 +842,7 @@
         beginMetadataStar(int)
         endMetadataStar(0)
         beginMember()
-          beginMethod(null, null, null, null, null, case)
+          beginMethod(DeclarationKind.Class, null, null, null, null, null, case)
             handleIdentifier(int, typeReference)
             handleNoTypeArguments(case)
             handleType(int, null)
@@ -902,7 +902,7 @@
         beginMetadataStar(int)
         endMetadataStar(0)
         beginMember()
-          beginMethod(null, null, null, null, null, catch)
+          beginMethod(DeclarationKind.Class, null, null, null, null, null, catch)
             handleIdentifier(int, typeReference)
             handleNoTypeArguments(catch)
             handleType(int, null)
@@ -962,7 +962,7 @@
         beginMetadataStar(int)
         endMetadataStar(0)
         beginMember()
-          beginMethod(null, null, null, null, null, class)
+          beginMethod(DeclarationKind.Class, null, null, null, null, null, class)
             handleIdentifier(int, typeReference)
             handleNoTypeArguments(class)
             handleType(int, null)
@@ -1022,7 +1022,7 @@
         beginMetadataStar(int)
         endMetadataStar(0)
         beginMember()
-          beginMethod(null, null, null, null, null, const)
+          beginMethod(DeclarationKind.Class, null, null, null, null, null, const)
             handleIdentifier(int, typeReference)
             handleNoTypeArguments(const)
             handleType(int, null)
@@ -1086,7 +1086,7 @@
         beginMetadataStar(int)
         endMetadataStar(0)
         beginMember()
-          beginMethod(null, null, null, null, null, continue)
+          beginMethod(DeclarationKind.Class, null, null, null, null, null, continue)
             handleIdentifier(int, typeReference)
             handleNoTypeArguments(continue)
             handleType(int, null)
@@ -1151,7 +1151,7 @@
         beginMetadataStar(int)
         endMetadataStar(0)
         beginMember()
-          beginMethod(null, null, null, null, null, covariant)
+          beginMethod(DeclarationKind.Class, null, null, null, null, null, covariant)
             handleIdentifier(int, typeReference)
             handleNoTypeArguments(covariant)
             handleType(int, null)
@@ -1209,7 +1209,7 @@
         beginMetadataStar(int)
         endMetadataStar(0)
         beginMember()
-          beginMethod(null, null, null, null, null, default)
+          beginMethod(DeclarationKind.Class, null, null, null, null, null, default)
             handleIdentifier(int, typeReference)
             handleNoTypeArguments(default)
             handleType(int, null)
@@ -1269,7 +1269,7 @@
         beginMetadataStar(int)
         endMetadataStar(0)
         beginMember()
-          beginMethod(null, null, null, null, null, deferred)
+          beginMethod(DeclarationKind.Class, null, null, null, null, null, deferred)
             handleIdentifier(int, typeReference)
             handleNoTypeArguments(deferred)
             handleType(int, null)
@@ -1327,7 +1327,7 @@
         beginMetadataStar(int)
         endMetadataStar(0)
         beginMember()
-          beginMethod(null, null, null, null, null, do)
+          beginMethod(DeclarationKind.Class, null, null, null, null, null, do)
             handleIdentifier(int, typeReference)
             handleNoTypeArguments(do)
             handleType(int, null)
@@ -1402,7 +1402,7 @@
         beginMetadataStar(int)
         endMetadataStar(0)
         beginMember()
-          beginMethod(null, null, null, null, null, dynamic)
+          beginMethod(DeclarationKind.Class, null, null, null, null, null, dynamic)
             handleIdentifier(int, typeReference)
             handleNoTypeArguments(dynamic)
             handleType(int, null)
@@ -1460,7 +1460,7 @@
         beginMetadataStar(int)
         endMetadataStar(0)
         beginMember()
-          beginMethod(null, null, null, null, null, else)
+          beginMethod(DeclarationKind.Class, null, null, null, null, null, else)
             handleIdentifier(int, typeReference)
             handleNoTypeArguments(else)
             handleType(int, null)
@@ -1530,7 +1530,7 @@
         beginMetadataStar(int)
         endMetadataStar(0)
         beginMember()
-          beginMethod(null, null, null, null, null, enum)
+          beginMethod(DeclarationKind.Class, null, null, null, null, null, enum)
             handleIdentifier(int, typeReference)
             handleNoTypeArguments(enum)
             handleType(int, null)
@@ -1590,7 +1590,7 @@
         beginMetadataStar(int)
         endMetadataStar(0)
         beginMember()
-          beginMethod(null, null, null, null, null, export)
+          beginMethod(DeclarationKind.Class, null, null, null, null, null, export)
             handleIdentifier(int, typeReference)
             handleNoTypeArguments(export)
             handleType(int, null)
@@ -1648,7 +1648,7 @@
         beginMetadataStar(int)
         endMetadataStar(0)
         beginMember()
-          beginMethod(null, null, null, null, null, extends)
+          beginMethod(DeclarationKind.Class, null, null, null, null, null, extends)
             handleIdentifier(int, typeReference)
             handleNoTypeArguments(extends)
             handleType(int, null)
@@ -1708,7 +1708,7 @@
         beginMetadataStar(int)
         endMetadataStar(0)
         beginMember()
-          beginMethod(null, null, null, null, null, extension)
+          beginMethod(DeclarationKind.Class, null, null, null, null, null, extension)
             handleIdentifier(int, typeReference)
             handleNoTypeArguments(extension)
             handleType(int, null)
@@ -1766,7 +1766,7 @@
         beginMetadataStar(int)
         endMetadataStar(0)
         beginMember()
-          beginMethod(null, null, null, null, null, external)
+          beginMethod(DeclarationKind.Class, null, null, null, null, null, external)
             handleIdentifier(int, typeReference)
             handleNoTypeArguments(external)
             handleType(int, null)
@@ -1824,7 +1824,7 @@
         beginMetadataStar(int)
         endMetadataStar(0)
         beginMember()
-          beginMethod(null, null, null, null, null, factory)
+          beginMethod(DeclarationKind.Class, null, null, null, null, null, factory)
             handleIdentifier(int, typeReference)
             handleNoTypeArguments(factory)
             handleType(int, null)
@@ -1882,7 +1882,7 @@
         beginMetadataStar(int)
         endMetadataStar(0)
         beginMember()
-          beginMethod(null, null, null, null, null, false)
+          beginMethod(DeclarationKind.Class, null, null, null, null, null, false)
             handleIdentifier(int, typeReference)
             handleNoTypeArguments(false)
             handleType(int, null)
@@ -1941,7 +1941,7 @@
         beginMetadataStar(int)
         endMetadataStar(0)
         beginMember()
-          beginMethod(null, null, null, null, null, final)
+          beginMethod(DeclarationKind.Class, null, null, null, null, null, final)
             handleIdentifier(int, typeReference)
             handleNoTypeArguments(final)
             handleType(int, null)
@@ -2028,7 +2028,7 @@
         beginMetadataStar(int)
         endMetadataStar(0)
         beginMember()
-          beginMethod(null, null, null, null, null, finally)
+          beginMethod(DeclarationKind.Class, null, null, null, null, null, finally)
             handleIdentifier(int, typeReference)
             handleNoTypeArguments(finally)
             handleType(int, null)
@@ -2088,7 +2088,7 @@
         beginMetadataStar(int)
         endMetadataStar(0)
         beginMember()
-          beginMethod(null, null, null, null, null, for)
+          beginMethod(DeclarationKind.Class, null, null, null, null, null, for)
             handleIdentifier(int, typeReference)
             handleNoTypeArguments(for)
             handleType(int, null)
@@ -2168,7 +2168,7 @@
         beginMetadataStar(int)
         endMetadataStar(0)
         beginMember()
-          beginMethod(null, null, null, null, null, Function)
+          beginMethod(DeclarationKind.Class, null, null, null, null, null, Function)
             handleIdentifier(int, typeReference)
             handleNoTypeArguments(Function)
             handleType(int, null)
@@ -2226,7 +2226,7 @@
         beginMetadataStar(int)
         endMetadataStar(0)
         beginMember()
-          beginMethod(null, null, null, null, null, get)
+          beginMethod(DeclarationKind.Class, null, null, null, null, null, get)
             handleIdentifier(int, typeReference)
             handleNoTypeArguments(get)
             handleType(int, null)
@@ -2284,7 +2284,7 @@
         beginMetadataStar(int)
         endMetadataStar(0)
         beginMember()
-          beginMethod(null, null, null, null, null, hide)
+          beginMethod(DeclarationKind.Class, null, null, null, null, null, hide)
             handleIdentifier(int, typeReference)
             handleNoTypeArguments(hide)
             handleType(int, null)
@@ -2342,7 +2342,7 @@
         beginMetadataStar(int)
         endMetadataStar(0)
         beginMember()
-          beginMethod(null, null, null, null, null, if)
+          beginMethod(DeclarationKind.Class, null, null, null, null, null, if)
             handleIdentifier(int, typeReference)
             handleNoTypeArguments(if)
             handleType(int, null)
@@ -2413,7 +2413,7 @@
         beginMetadataStar(int)
         endMetadataStar(0)
         beginMember()
-          beginMethod(null, null, null, null, null, implements)
+          beginMethod(DeclarationKind.Class, null, null, null, null, null, implements)
             handleIdentifier(int, typeReference)
             handleNoTypeArguments(implements)
             handleType(int, null)
@@ -2471,7 +2471,7 @@
         beginMetadataStar(int)
         endMetadataStar(0)
         beginMember()
-          beginMethod(null, null, null, null, null, import)
+          beginMethod(DeclarationKind.Class, null, null, null, null, null, import)
             handleIdentifier(int, typeReference)
             handleNoTypeArguments(import)
             handleType(int, null)
@@ -2529,7 +2529,7 @@
         beginMetadataStar(int)
         endMetadataStar(0)
         beginMember()
-          beginMethod(null, null, null, null, null, in)
+          beginMethod(DeclarationKind.Class, null, null, null, null, null, in)
             handleIdentifier(int, typeReference)
             handleNoTypeArguments(in)
             handleType(int, null)
@@ -2589,7 +2589,7 @@
         beginMetadataStar(int)
         endMetadataStar(0)
         beginMember()
-          beginMethod(null, null, null, null, null, inout)
+          beginMethod(DeclarationKind.Class, null, null, null, null, null, inout)
             handleIdentifier(int, typeReference)
             handleNoTypeArguments(inout)
             handleType(int, null)
@@ -2647,7 +2647,7 @@
         beginMetadataStar(int)
         endMetadataStar(0)
         beginMember()
-          beginMethod(null, null, null, null, null, interface)
+          beginMethod(DeclarationKind.Class, null, null, null, null, null, interface)
             handleIdentifier(int, typeReference)
             handleNoTypeArguments(interface)
             handleType(int, null)
@@ -2705,7 +2705,7 @@
         beginMetadataStar(int)
         endMetadataStar(0)
         beginMember()
-          beginMethod(null, null, null, null, null, is)
+          beginMethod(DeclarationKind.Class, null, null, null, null, null, is)
             handleIdentifier(int, typeReference)
             handleNoTypeArguments(is)
             handleType(int, null)
@@ -2774,7 +2774,7 @@
         beginMetadataStar(int)
         endMetadataStar(0)
         beginMember()
-          beginMethod(null, null, null, null, null, late)
+          beginMethod(DeclarationKind.Class, null, null, null, null, null, late)
             handleIdentifier(int, typeReference)
             handleNoTypeArguments(late)
             handleType(int, null)
@@ -2832,7 +2832,7 @@
         beginMetadataStar(int)
         endMetadataStar(0)
         beginMember()
-          beginMethod(null, null, null, null, null, library)
+          beginMethod(DeclarationKind.Class, null, null, null, null, null, library)
             handleIdentifier(int, typeReference)
             handleNoTypeArguments(library)
             handleType(int, null)
@@ -2890,7 +2890,7 @@
         beginMetadataStar(int)
         endMetadataStar(0)
         beginMember()
-          beginMethod(null, null, null, null, null, mixin)
+          beginMethod(DeclarationKind.Class, null, null, null, null, null, mixin)
             handleIdentifier(int, typeReference)
             handleNoTypeArguments(mixin)
             handleType(int, null)
@@ -2948,7 +2948,7 @@
         beginMetadataStar(int)
         endMetadataStar(0)
         beginMember()
-          beginMethod(null, null, null, null, null, native)
+          beginMethod(DeclarationKind.Class, null, null, null, null, null, native)
             handleIdentifier(int, typeReference)
             handleNoTypeArguments(native)
             handleType(int, null)
@@ -3006,7 +3006,7 @@
         beginMetadataStar(int)
         endMetadataStar(0)
         beginMember()
-          beginMethod(null, null, null, null, null, new)
+          beginMethod(DeclarationKind.Class, null, null, null, null, null, new)
             handleIdentifier(int, typeReference)
             handleNoTypeArguments(new)
             handleType(int, null)
@@ -3070,7 +3070,7 @@
         beginMetadataStar(int)
         endMetadataStar(0)
         beginMember()
-          beginMethod(null, null, null, null, null, null)
+          beginMethod(DeclarationKind.Class, null, null, null, null, null, null)
             handleIdentifier(int, typeReference)
             handleNoTypeArguments(null)
             handleType(int, null)
@@ -3129,7 +3129,7 @@
         beginMetadataStar(int)
         endMetadataStar(0)
         beginMember()
-          beginMethod(null, null, null, null, null, of)
+          beginMethod(DeclarationKind.Class, null, null, null, null, null, of)
             handleIdentifier(int, typeReference)
             handleNoTypeArguments(of)
             handleType(int, null)
@@ -3187,7 +3187,7 @@
         beginMetadataStar(int)
         endMetadataStar(0)
         beginMember()
-          beginMethod(null, null, null, null, null, on)
+          beginMethod(DeclarationKind.Class, null, null, null, null, null, on)
             handleIdentifier(int, typeReference)
             handleNoTypeArguments(on)
             handleType(int, null)
@@ -3245,7 +3245,7 @@
         beginMetadataStar(int)
         endMetadataStar(0)
         beginMember()
-          beginMethod(null, null, null, null, null, operator)
+          beginMethod(DeclarationKind.Class, null, null, null, null, null, operator)
             handleIdentifier(int, typeReference)
             handleNoTypeArguments(operator)
             handleType(int, null)
@@ -3303,7 +3303,7 @@
         beginMetadataStar(int)
         endMetadataStar(0)
         beginMember()
-          beginMethod(null, null, null, null, null, out)
+          beginMethod(DeclarationKind.Class, null, null, null, null, null, out)
             handleIdentifier(int, typeReference)
             handleNoTypeArguments(out)
             handleType(int, null)
@@ -3361,7 +3361,7 @@
         beginMetadataStar(int)
         endMetadataStar(0)
         beginMember()
-          beginMethod(null, null, null, null, null, part)
+          beginMethod(DeclarationKind.Class, null, null, null, null, null, part)
             handleIdentifier(int, typeReference)
             handleNoTypeArguments(part)
             handleType(int, null)
@@ -3419,7 +3419,7 @@
         beginMetadataStar(int)
         endMetadataStar(0)
         beginMember()
-          beginMethod(null, null, null, null, null, patch)
+          beginMethod(DeclarationKind.Class, null, null, null, null, null, patch)
             handleIdentifier(int, typeReference)
             handleNoTypeArguments(patch)
             handleType(int, null)
@@ -3477,7 +3477,7 @@
         beginMetadataStar(int)
         endMetadataStar(0)
         beginMember()
-          beginMethod(null, null, null, null, null, required)
+          beginMethod(DeclarationKind.Class, null, null, null, null, null, required)
             handleIdentifier(int, typeReference)
             handleNoTypeArguments(required)
             handleType(int, null)
@@ -3535,7 +3535,7 @@
         beginMetadataStar(int)
         endMetadataStar(0)
         beginMember()
-          beginMethod(null, null, null, null, null, rethrow)
+          beginMethod(DeclarationKind.Class, null, null, null, null, null, rethrow)
             handleIdentifier(int, typeReference)
             handleNoTypeArguments(rethrow)
             handleType(int, null)
@@ -3595,7 +3595,7 @@
         beginMetadataStar(int)
         endMetadataStar(0)
         beginMember()
-          beginMethod(null, null, null, null, null, return)
+          beginMethod(DeclarationKind.Class, null, null, null, null, null, return)
             handleIdentifier(int, typeReference)
             handleNoTypeArguments(return)
             handleType(int, null)
@@ -3651,7 +3651,7 @@
         beginMetadataStar(int)
         endMetadataStar(0)
         beginMember()
-          beginMethod(null, null, null, null, null, set)
+          beginMethod(DeclarationKind.Class, null, null, null, null, null, set)
             handleIdentifier(int, typeReference)
             handleNoTypeArguments(set)
             handleType(int, null)
@@ -3709,7 +3709,7 @@
         beginMetadataStar(int)
         endMetadataStar(0)
         beginMember()
-          beginMethod(null, null, null, null, null, show)
+          beginMethod(DeclarationKind.Class, null, null, null, null, null, show)
             handleIdentifier(int, typeReference)
             handleNoTypeArguments(show)
             handleType(int, null)
@@ -3767,7 +3767,7 @@
         beginMetadataStar(int)
         endMetadataStar(0)
         beginMember()
-          beginMethod(null, null, null, null, null, source)
+          beginMethod(DeclarationKind.Class, null, null, null, null, null, source)
             handleIdentifier(int, typeReference)
             handleNoTypeArguments(source)
             handleType(int, null)
@@ -3825,7 +3825,7 @@
         beginMetadataStar(int)
         endMetadataStar(0)
         beginMember()
-          beginMethod(null, null, null, null, null, static)
+          beginMethod(DeclarationKind.Class, null, null, null, null, null, static)
             handleIdentifier(int, typeReference)
             handleNoTypeArguments(static)
             handleType(int, null)
@@ -3883,7 +3883,7 @@
         beginMetadataStar(int)
         endMetadataStar(0)
         beginMember()
-          beginMethod(null, null, null, null, null, super)
+          beginMethod(DeclarationKind.Class, null, null, null, null, null, super)
             handleIdentifier(int, typeReference)
             handleNoTypeArguments(super)
             handleType(int, null)
@@ -3942,7 +3942,7 @@
         beginMetadataStar(int)
         endMetadataStar(0)
         beginMember()
-          beginMethod(null, null, null, null, null, switch)
+          beginMethod(DeclarationKind.Class, null, null, null, null, null, switch)
             handleIdentifier(int, typeReference)
             handleNoTypeArguments(switch)
             handleType(int, null)
@@ -4014,7 +4014,7 @@
         beginMetadataStar(int)
         endMetadataStar(0)
         beginMember()
-          beginMethod(null, null, null, null, null, sync)
+          beginMethod(DeclarationKind.Class, null, null, null, null, null, sync)
             handleIdentifier(int, typeReference)
             handleNoTypeArguments(sync)
             handleType(int, null)
@@ -4072,7 +4072,7 @@
         beginMetadataStar(int)
         endMetadataStar(0)
         beginMember()
-          beginFields(})
+          beginFields(DeclarationKind.Class, null, null, null, null, null, null, })
             handleIdentifier(int, typeReference)
             handleNoTypeArguments(this)
             handleType(int, null)
@@ -4085,7 +4085,7 @@
         beginMetadataStar(()
         endMetadataStar(0)
         beginMember()
-          beginMethod(null, null, null, null, null, ()
+          beginMethod(DeclarationKind.Class, null, null, null, null, null, ()
             handleNoType(;)
             handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got '('., Try inserting an identifier before '('., {lexeme: (}], (, ()
             handleIdentifier(, methodDeclaration)
@@ -4142,7 +4142,7 @@
         beginMetadataStar(int)
         endMetadataStar(0)
         beginMember()
-          beginMethod(null, null, null, null, null, throw)
+          beginMethod(DeclarationKind.Class, null, null, null, null, null, throw)
             handleIdentifier(int, typeReference)
             handleNoTypeArguments(throw)
             handleType(int, null)
@@ -4198,7 +4198,7 @@
         beginMetadataStar(int)
         endMetadataStar(0)
         beginMember()
-          beginMethod(null, null, null, null, null, true)
+          beginMethod(DeclarationKind.Class, null, null, null, null, null, true)
             handleIdentifier(int, typeReference)
             handleNoTypeArguments(true)
             handleType(int, null)
@@ -4257,7 +4257,7 @@
         beginMetadataStar(int)
         endMetadataStar(0)
         beginMember()
-          beginMethod(null, null, null, null, null, try)
+          beginMethod(DeclarationKind.Class, null, null, null, null, null, try)
             handleIdentifier(int, typeReference)
             handleNoTypeArguments(try)
             handleType(int, null)
@@ -4325,7 +4325,7 @@
         beginMetadataStar(int)
         endMetadataStar(0)
         beginMember()
-          beginMethod(null, null, null, null, null, typedef)
+          beginMethod(DeclarationKind.Class, null, null, null, null, null, typedef)
             handleIdentifier(int, typeReference)
             handleNoTypeArguments(typedef)
             handleType(int, null)
@@ -4383,7 +4383,7 @@
         beginMetadataStar(int)
         endMetadataStar(0)
         beginMember()
-          beginMethod(null, null, null, null, null, var)
+          beginMethod(DeclarationKind.Class, null, null, null, null, null, var)
             handleIdentifier(int, typeReference)
             handleNoTypeArguments(var)
             handleType(int, null)
@@ -4470,7 +4470,7 @@
         beginMetadataStar(int)
         endMetadataStar(0)
         beginMember()
-          beginMethod(null, null, null, null, null, void)
+          beginMethod(DeclarationKind.Class, null, null, null, null, null, void)
             handleIdentifier(int, typeReference)
             handleNoTypeArguments(void)
             handleType(int, null)
@@ -4557,7 +4557,7 @@
         beginMetadataStar(int)
         endMetadataStar(0)
         beginMember()
-          beginMethod(null, null, null, null, null, while)
+          beginMethod(DeclarationKind.Class, null, null, null, null, null, while)
             handleIdentifier(int, typeReference)
             handleNoTypeArguments(while)
             handleType(int, null)
@@ -4628,7 +4628,7 @@
         beginMetadataStar(int)
         endMetadataStar(0)
         beginMember()
-          beginMethod(null, null, null, null, null, with)
+          beginMethod(DeclarationKind.Class, null, null, null, null, null, with)
             handleIdentifier(int, typeReference)
             handleNoTypeArguments(with)
             handleType(int, null)
@@ -4688,7 +4688,7 @@
         beginMetadataStar(int)
         endMetadataStar(0)
         beginMember()
-          beginMethod(null, null, null, null, null, yield)
+          beginMethod(DeclarationKind.Class, null, null, null, null, null, yield)
             handleIdentifier(int, typeReference)
             handleNoTypeArguments(yield)
             handleType(int, null)
@@ -4743,7 +4743,7 @@
             endBlockFunctionBody(2, {, })
           endClassMethod(null, int, (, null, })
         endMember()
-      endClassOrMixinBody(DeclarationKind.Class, 70, {, })
+      endClassOrMixinOrExtensionBody(DeclarationKind.Class, 70, {, })
     endClassDeclaration(class, })
   endTopLevelDeclaration()
 endCompilationUnit(1, )
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 499b444..8276661 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
@@ -9,7 +9,7 @@
     parseTopLevelKeywordDeclaration(, class, Instance of 'DirectiveContext')
       parseClassDeclarationModifiers(, class)
       parseClassOrNamedMixinApplication(null, class)
-        listener: beginClassOrNamedMixinApplicationPrelude(class)
+        listener: beginClassOrMixinOrNamedMixinApplicationPrelude(class)
         ensureIdentifier(class, classOrMixinDeclaration)
           listener: handleIdentifier(WrapperClass, classOrMixinDeclaration)
         listener: handleNoTypeVariables({)
@@ -25,7 +25,7 @@
               listener: handleClassOrMixinImplements(null, 0)
             listener: handleClassHeader(class, class, null)
           parseClassOrMixinOrExtensionBody(WrapperClass, DeclarationKind.Class, WrapperClass)
-            listener: beginClassOrMixinBody(DeclarationKind.Class, {)
+            listener: beginClassOrMixinOrExtensionBody(DeclarationKind.Class, {)
             notEofOrValue(}, int)
             parseClassOrMixinOrExtensionMemberImpl({, DeclarationKind.Class, WrapperClass)
               parseMetadataStar({)
@@ -33,7 +33,7 @@
                 listener: endMetadataStar(0)
               listener: beginMember()
               parseMethod({, null, null, null, null, null, null, {, Instance of 'SimpleType', null, abstract, DeclarationKind.Class, WrapperClass, false)
-                listener: beginMethod(null, null, null, null, null, abstract)
+                listener: beginMethod(DeclarationKind.Class, null, null, null, null, null, abstract)
                 listener: handleIdentifier(int, typeReference)
                 listener: handleNoTypeArguments(abstract)
                 listener: handleType(int, null)
@@ -177,7 +177,7 @@
                 listener: endMetadataStar(0)
               listener: beginMember()
               parseMethod(}, null, null, null, null, null, null, }, Instance of 'SimpleType', null, as, DeclarationKind.Class, WrapperClass, false)
-                listener: beginMethod(null, null, null, null, null, as)
+                listener: beginMethod(DeclarationKind.Class, null, null, null, null, null, as)
                 listener: handleIdentifier(int, typeReference)
                 listener: handleNoTypeArguments(as)
                 listener: handleType(int, null)
@@ -323,7 +323,7 @@
               isReservedKeyword(assert)
               indicatesMethodOrField(()
               parseMethod(}, null, null, null, null, null, null, }, Instance of 'SimpleType', null, assert, DeclarationKind.Class, WrapperClass, true)
-                listener: beginMethod(null, null, null, null, null, assert)
+                listener: beginMethod(DeclarationKind.Class, null, null, null, null, null, assert)
                 listener: handleIdentifier(int, typeReference)
                 listener: handleNoTypeArguments(assert)
                 listener: handleType(int, null)
@@ -460,7 +460,7 @@
                 listener: endMetadataStar(0)
               listener: beginMember()
               parseMethod(}, null, null, null, null, null, null, }, Instance of 'SimpleType', null, async, DeclarationKind.Class, WrapperClass, false)
-                listener: beginMethod(null, null, null, null, null, async)
+                listener: beginMethod(DeclarationKind.Class, null, null, null, null, null, async)
                 listener: handleIdentifier(int, typeReference)
                 listener: handleNoTypeArguments(async)
                 listener: handleType(int, null)
@@ -604,7 +604,7 @@
                 listener: endMetadataStar(0)
               listener: beginMember()
               parseMethod(}, null, null, null, null, null, null, }, Instance of 'SimpleType', null, await, DeclarationKind.Class, WrapperClass, false)
-                listener: beginMethod(null, null, null, null, null, await)
+                listener: beginMethod(DeclarationKind.Class, null, null, null, null, null, await)
                 listener: handleIdentifier(int, typeReference)
                 listener: handleNoTypeArguments(await)
                 listener: handleType(int, null)
@@ -753,7 +753,7 @@
               isReservedKeyword(break)
               indicatesMethodOrField(()
               parseMethod(}, null, null, null, null, null, null, }, Instance of 'SimpleType', null, break, DeclarationKind.Class, WrapperClass, true)
-                listener: beginMethod(null, null, null, null, null, break)
+                listener: beginMethod(DeclarationKind.Class, null, null, null, null, null, break)
                 listener: handleIdentifier(int, typeReference)
                 listener: handleNoTypeArguments(break)
                 listener: handleType(int, null)
@@ -932,7 +932,7 @@
               isReservedKeyword(case)
               indicatesMethodOrField(()
               parseMethod(}, null, null, null, null, null, null, }, Instance of 'SimpleType', null, case, DeclarationKind.Class, WrapperClass, true)
-                listener: beginMethod(null, null, null, null, null, case)
+                listener: beginMethod(DeclarationKind.Class, null, null, null, null, null, case)
                 listener: handleIdentifier(int, typeReference)
                 listener: handleNoTypeArguments(case)
                 listener: handleType(int, null)
@@ -1079,7 +1079,7 @@
               isReservedKeyword(catch)
               indicatesMethodOrField(()
               parseMethod(}, null, null, null, null, null, null, }, Instance of 'SimpleType', null, catch, DeclarationKind.Class, WrapperClass, true)
-                listener: beginMethod(null, null, null, null, null, catch)
+                listener: beginMethod(DeclarationKind.Class, null, null, null, null, null, catch)
                 listener: handleIdentifier(int, typeReference)
                 listener: handleNoTypeArguments(catch)
                 listener: handleType(int, null)
@@ -1226,7 +1226,7 @@
               isReservedKeyword(class)
               indicatesMethodOrField(()
               parseMethod(}, null, null, null, null, null, null, }, Instance of 'SimpleType', null, class, DeclarationKind.Class, WrapperClass, true)
-                listener: beginMethod(null, null, null, null, null, class)
+                listener: beginMethod(DeclarationKind.Class, null, null, null, null, null, class)
                 listener: handleIdentifier(int, typeReference)
                 listener: handleNoTypeArguments(class)
                 listener: handleType(int, null)
@@ -1373,7 +1373,7 @@
               isReservedKeyword(const)
               indicatesMethodOrField(()
               parseMethod(}, null, null, null, null, null, null, }, Instance of 'SimpleType', null, const, DeclarationKind.Class, WrapperClass, true)
-                listener: beginMethod(null, null, null, null, null, const)
+                listener: beginMethod(DeclarationKind.Class, null, null, null, null, null, const)
                 listener: handleIdentifier(int, typeReference)
                 listener: handleNoTypeArguments(const)
                 listener: handleType(int, null)
@@ -1525,7 +1525,7 @@
               isReservedKeyword(continue)
               indicatesMethodOrField(()
               parseMethod(}, null, null, null, null, null, null, }, Instance of 'SimpleType', null, continue, DeclarationKind.Class, WrapperClass, true)
-                listener: beginMethod(null, null, null, null, null, continue)
+                listener: beginMethod(DeclarationKind.Class, null, null, null, null, null, continue)
                 listener: handleIdentifier(int, typeReference)
                 listener: handleNoTypeArguments(continue)
                 listener: handleType(int, null)
@@ -1702,7 +1702,7 @@
                 listener: endMetadataStar(0)
               listener: beginMember()
               parseMethod(}, null, null, null, null, null, null, }, Instance of 'SimpleType', null, covariant, DeclarationKind.Class, WrapperClass, false)
-                listener: beginMethod(null, null, null, null, null, covariant)
+                listener: beginMethod(DeclarationKind.Class, null, null, null, null, null, covariant)
                 listener: handleIdentifier(int, typeReference)
                 listener: handleNoTypeArguments(covariant)
                 listener: handleType(int, null)
@@ -1848,7 +1848,7 @@
               isReservedKeyword(default)
               indicatesMethodOrField(()
               parseMethod(}, null, null, null, null, null, null, }, Instance of 'SimpleType', null, default, DeclarationKind.Class, WrapperClass, true)
-                listener: beginMethod(null, null, null, null, null, default)
+                listener: beginMethod(DeclarationKind.Class, null, null, null, null, null, default)
                 listener: handleIdentifier(int, typeReference)
                 listener: handleNoTypeArguments(default)
                 listener: handleType(int, null)
@@ -1993,7 +1993,7 @@
                 listener: endMetadataStar(0)
               listener: beginMember()
               parseMethod(}, null, null, null, null, null, null, }, Instance of 'SimpleType', null, deferred, DeclarationKind.Class, WrapperClass, false)
-                listener: beginMethod(null, null, null, null, null, deferred)
+                listener: beginMethod(DeclarationKind.Class, null, null, null, null, null, deferred)
                 listener: handleIdentifier(int, typeReference)
                 listener: handleNoTypeArguments(deferred)
                 listener: handleType(int, null)
@@ -2139,7 +2139,7 @@
               isReservedKeyword(do)
               indicatesMethodOrField(()
               parseMethod(}, null, null, null, null, null, null, }, Instance of 'SimpleType', null, do, DeclarationKind.Class, WrapperClass, true)
-                listener: beginMethod(null, null, null, null, null, do)
+                listener: beginMethod(DeclarationKind.Class, null, null, null, null, null, do)
                 listener: handleIdentifier(int, typeReference)
                 listener: handleNoTypeArguments(do)
                 listener: handleType(int, null)
@@ -2340,7 +2340,7 @@
                 listener: endMetadataStar(0)
               listener: beginMember()
               parseMethod(}, null, null, null, null, null, null, }, Instance of 'SimpleType', null, dynamic, DeclarationKind.Class, WrapperClass, false)
-                listener: beginMethod(null, null, null, null, null, dynamic)
+                listener: beginMethod(DeclarationKind.Class, null, null, null, null, null, dynamic)
                 listener: handleIdentifier(int, typeReference)
                 listener: handleNoTypeArguments(dynamic)
                 listener: handleType(int, null)
@@ -2486,7 +2486,7 @@
               isReservedKeyword(else)
               indicatesMethodOrField(()
               parseMethod(}, null, null, null, null, null, null, }, Instance of 'SimpleType', null, else, DeclarationKind.Class, WrapperClass, true)
-                listener: beginMethod(null, null, null, null, null, else)
+                listener: beginMethod(DeclarationKind.Class, null, null, null, null, null, else)
                 listener: handleIdentifier(int, typeReference)
                 listener: handleNoTypeArguments(else)
                 listener: handleType(int, null)
@@ -2683,7 +2683,7 @@
               isReservedKeyword(enum)
               indicatesMethodOrField(()
               parseMethod(}, null, null, null, null, null, null, }, Instance of 'SimpleType', null, enum, DeclarationKind.Class, WrapperClass, true)
-                listener: beginMethod(null, null, null, null, null, enum)
+                listener: beginMethod(DeclarationKind.Class, null, null, null, null, null, enum)
                 listener: handleIdentifier(int, typeReference)
                 listener: handleNoTypeArguments(enum)
                 listener: handleType(int, null)
@@ -2828,7 +2828,7 @@
                 listener: endMetadataStar(0)
               listener: beginMember()
               parseMethod(}, null, null, null, null, null, null, }, Instance of 'SimpleType', null, export, DeclarationKind.Class, WrapperClass, false)
-                listener: beginMethod(null, null, null, null, null, export)
+                listener: beginMethod(DeclarationKind.Class, null, null, null, null, null, export)
                 listener: handleIdentifier(int, typeReference)
                 listener: handleNoTypeArguments(export)
                 listener: handleType(int, null)
@@ -2974,7 +2974,7 @@
               isReservedKeyword(extends)
               indicatesMethodOrField(()
               parseMethod(}, null, null, null, null, null, null, }, Instance of 'SimpleType', null, extends, DeclarationKind.Class, WrapperClass, true)
-                listener: beginMethod(null, null, null, null, null, extends)
+                listener: beginMethod(DeclarationKind.Class, null, null, null, null, null, extends)
                 listener: handleIdentifier(int, typeReference)
                 listener: handleNoTypeArguments(extends)
                 listener: handleType(int, null)
@@ -3119,7 +3119,7 @@
                 listener: endMetadataStar(0)
               listener: beginMember()
               parseMethod(}, null, null, null, null, null, null, }, Instance of 'SimpleType', null, extension, DeclarationKind.Class, WrapperClass, false)
-                listener: beginMethod(null, null, null, null, null, extension)
+                listener: beginMethod(DeclarationKind.Class, null, null, null, null, null, extension)
                 listener: handleIdentifier(int, typeReference)
                 listener: handleNoTypeArguments(extension)
                 listener: handleType(int, null)
@@ -3263,7 +3263,7 @@
                 listener: endMetadataStar(0)
               listener: beginMember()
               parseMethod(}, null, null, null, null, null, null, }, Instance of 'SimpleType', null, external, DeclarationKind.Class, WrapperClass, false)
-                listener: beginMethod(null, null, null, null, null, external)
+                listener: beginMethod(DeclarationKind.Class, null, null, null, null, null, external)
                 listener: handleIdentifier(int, typeReference)
                 listener: handleNoTypeArguments(external)
                 listener: handleType(int, null)
@@ -3407,7 +3407,7 @@
                 listener: endMetadataStar(0)
               listener: beginMember()
               parseMethod(}, null, null, null, null, null, null, }, Instance of 'SimpleType', null, factory, DeclarationKind.Class, WrapperClass, false)
-                listener: beginMethod(null, null, null, null, null, factory)
+                listener: beginMethod(DeclarationKind.Class, null, null, null, null, null, factory)
                 listener: handleIdentifier(int, typeReference)
                 listener: handleNoTypeArguments(factory)
                 listener: handleType(int, null)
@@ -3553,7 +3553,7 @@
               isReservedKeyword(false)
               indicatesMethodOrField(()
               parseMethod(}, null, null, null, null, null, null, }, Instance of 'SimpleType', null, false, DeclarationKind.Class, WrapperClass, true)
-                listener: beginMethod(null, null, null, null, null, false)
+                listener: beginMethod(DeclarationKind.Class, null, null, null, null, null, false)
                 listener: handleIdentifier(int, typeReference)
                 listener: handleNoTypeArguments(false)
                 listener: handleType(int, null)
@@ -3695,7 +3695,7 @@
               isReservedKeyword(final)
               indicatesMethodOrField(()
               parseMethod(}, null, null, null, null, null, null, }, Instance of 'SimpleType', null, final, DeclarationKind.Class, WrapperClass, true)
-                listener: beginMethod(null, null, null, null, null, final)
+                listener: beginMethod(DeclarationKind.Class, null, null, null, null, null, final)
                 listener: handleIdentifier(int, typeReference)
                 listener: handleNoTypeArguments(final)
                 listener: handleType(int, null)
@@ -3934,7 +3934,7 @@
               isReservedKeyword(finally)
               indicatesMethodOrField(()
               parseMethod(}, null, null, null, null, null, null, }, Instance of 'SimpleType', null, finally, DeclarationKind.Class, WrapperClass, true)
-                listener: beginMethod(null, null, null, null, null, finally)
+                listener: beginMethod(DeclarationKind.Class, null, null, null, null, null, finally)
                 listener: handleIdentifier(int, typeReference)
                 listener: handleNoTypeArguments(finally)
                 listener: handleType(int, null)
@@ -4081,7 +4081,7 @@
               isReservedKeyword(for)
               indicatesMethodOrField(()
               parseMethod(}, null, null, null, null, null, null, }, Instance of 'SimpleType', null, for, DeclarationKind.Class, WrapperClass, true)
-                listener: beginMethod(null, null, null, null, null, for)
+                listener: beginMethod(DeclarationKind.Class, null, null, null, null, null, for)
                 listener: handleIdentifier(int, typeReference)
                 listener: handleNoTypeArguments(for)
                 listener: handleType(int, null)
@@ -4293,7 +4293,7 @@
                 listener: endMetadataStar(0)
               listener: beginMember()
               parseMethod(}, null, null, null, null, null, null, }, Instance of 'SimpleType', null, Function, DeclarationKind.Class, WrapperClass, false)
-                listener: beginMethod(null, null, null, null, null, Function)
+                listener: beginMethod(DeclarationKind.Class, null, null, null, null, null, Function)
                 listener: handleIdentifier(int, typeReference)
                 listener: handleNoTypeArguments(Function)
                 listener: handleType(int, null)
@@ -4438,7 +4438,7 @@
               listener: beginMember()
               isReservedKeyword(()
               parseMethod(}, null, null, null, null, null, null, }, Instance of 'SimpleType', null, get, DeclarationKind.Class, WrapperClass, false)
-                listener: beginMethod(null, null, null, null, null, get)
+                listener: beginMethod(DeclarationKind.Class, null, null, null, null, null, get)
                 listener: handleIdentifier(int, typeReference)
                 listener: handleNoTypeArguments(get)
                 listener: handleType(int, null)
@@ -4582,7 +4582,7 @@
                 listener: endMetadataStar(0)
               listener: beginMember()
               parseMethod(}, null, null, null, null, null, null, }, Instance of 'SimpleType', null, hide, DeclarationKind.Class, WrapperClass, false)
-                listener: beginMethod(null, null, null, null, null, hide)
+                listener: beginMethod(DeclarationKind.Class, null, null, null, null, null, hide)
                 listener: handleIdentifier(int, typeReference)
                 listener: handleNoTypeArguments(hide)
                 listener: handleType(int, null)
@@ -4728,7 +4728,7 @@
               isReservedKeyword(if)
               indicatesMethodOrField(()
               parseMethod(}, null, null, null, null, null, null, }, Instance of 'SimpleType', null, if, DeclarationKind.Class, WrapperClass, true)
-                listener: beginMethod(null, null, null, null, null, if)
+                listener: beginMethod(DeclarationKind.Class, null, null, null, null, null, if)
                 listener: handleIdentifier(int, typeReference)
                 listener: handleNoTypeArguments(if)
                 listener: handleType(int, null)
@@ -4911,7 +4911,7 @@
                 listener: endMetadataStar(0)
               listener: beginMember()
               parseMethod(}, null, null, null, null, null, null, }, Instance of 'SimpleType', null, implements, DeclarationKind.Class, WrapperClass, false)
-                listener: beginMethod(null, null, null, null, null, implements)
+                listener: beginMethod(DeclarationKind.Class, null, null, null, null, null, implements)
                 listener: handleIdentifier(int, typeReference)
                 listener: handleNoTypeArguments(implements)
                 listener: handleType(int, null)
@@ -5055,7 +5055,7 @@
                 listener: endMetadataStar(0)
               listener: beginMember()
               parseMethod(}, null, null, null, null, null, null, }, Instance of 'SimpleType', null, import, DeclarationKind.Class, WrapperClass, false)
-                listener: beginMethod(null, null, null, null, null, import)
+                listener: beginMethod(DeclarationKind.Class, null, null, null, null, null, import)
                 listener: handleIdentifier(int, typeReference)
                 listener: handleNoTypeArguments(import)
                 listener: handleType(int, null)
@@ -5201,7 +5201,7 @@
               isReservedKeyword(in)
               indicatesMethodOrField(()
               parseMethod(}, null, null, null, null, null, null, }, Instance of 'SimpleType', null, in, DeclarationKind.Class, WrapperClass, true)
-                listener: beginMethod(null, null, null, null, null, in)
+                listener: beginMethod(DeclarationKind.Class, null, null, null, null, null, in)
                 listener: handleIdentifier(int, typeReference)
                 listener: handleNoTypeArguments(in)
                 listener: handleType(int, null)
@@ -5346,7 +5346,7 @@
                 listener: endMetadataStar(0)
               listener: beginMember()
               parseMethod(}, null, null, null, null, null, null, }, Instance of 'SimpleType', null, inout, DeclarationKind.Class, WrapperClass, false)
-                listener: beginMethod(null, null, null, null, null, inout)
+                listener: beginMethod(DeclarationKind.Class, null, null, null, null, null, inout)
                 listener: handleIdentifier(int, typeReference)
                 listener: handleNoTypeArguments(inout)
                 listener: handleType(int, null)
@@ -5490,7 +5490,7 @@
                 listener: endMetadataStar(0)
               listener: beginMember()
               parseMethod(}, null, null, null, null, null, null, }, Instance of 'SimpleType', null, interface, DeclarationKind.Class, WrapperClass, false)
-                listener: beginMethod(null, null, null, null, null, interface)
+                listener: beginMethod(DeclarationKind.Class, null, null, null, null, null, interface)
                 listener: handleIdentifier(int, typeReference)
                 listener: handleNoTypeArguments(interface)
                 listener: handleType(int, null)
@@ -5636,7 +5636,7 @@
               isReservedKeyword(is)
               indicatesMethodOrField(()
               parseMethod(}, null, null, null, null, null, null, }, Instance of 'SimpleType', null, is, DeclarationKind.Class, WrapperClass, true)
-                listener: beginMethod(null, null, null, null, null, is)
+                listener: beginMethod(DeclarationKind.Class, null, null, null, null, null, is)
                 listener: handleIdentifier(int, typeReference)
                 listener: handleNoTypeArguments(is)
                 listener: handleType(int, null)
@@ -5813,7 +5813,7 @@
                 listener: endMetadataStar(0)
               listener: beginMember()
               parseMethod(}, null, null, null, null, null, null, }, Instance of 'SimpleType', null, late, DeclarationKind.Class, WrapperClass, false)
-                listener: beginMethod(null, null, null, null, null, late)
+                listener: beginMethod(DeclarationKind.Class, null, null, null, null, null, late)
                 listener: handleIdentifier(int, typeReference)
                 listener: handleNoTypeArguments(late)
                 listener: handleType(int, null)
@@ -5957,7 +5957,7 @@
                 listener: endMetadataStar(0)
               listener: beginMember()
               parseMethod(}, null, null, null, null, null, null, }, Instance of 'SimpleType', null, library, DeclarationKind.Class, WrapperClass, false)
-                listener: beginMethod(null, null, null, null, null, library)
+                listener: beginMethod(DeclarationKind.Class, null, null, null, null, null, library)
                 listener: handleIdentifier(int, typeReference)
                 listener: handleNoTypeArguments(library)
                 listener: handleType(int, null)
@@ -6101,7 +6101,7 @@
                 listener: endMetadataStar(0)
               listener: beginMember()
               parseMethod(}, null, null, null, null, null, null, }, Instance of 'SimpleType', null, mixin, DeclarationKind.Class, WrapperClass, false)
-                listener: beginMethod(null, null, null, null, null, mixin)
+                listener: beginMethod(DeclarationKind.Class, null, null, null, null, null, mixin)
                 listener: handleIdentifier(int, typeReference)
                 listener: handleNoTypeArguments(mixin)
                 listener: handleType(int, null)
@@ -6245,7 +6245,7 @@
                 listener: endMetadataStar(0)
               listener: beginMember()
               parseMethod(}, null, null, null, null, null, null, }, Instance of 'SimpleType', null, native, DeclarationKind.Class, WrapperClass, false)
-                listener: beginMethod(null, null, null, null, null, native)
+                listener: beginMethod(DeclarationKind.Class, null, null, null, null, null, native)
                 listener: handleIdentifier(int, typeReference)
                 listener: handleNoTypeArguments(native)
                 listener: handleType(int, null)
@@ -6391,7 +6391,7 @@
               isReservedKeyword(new)
               indicatesMethodOrField(()
               parseMethod(}, null, null, null, null, null, null, }, Instance of 'SimpleType', null, new, DeclarationKind.Class, WrapperClass, true)
-                listener: beginMethod(null, null, null, null, null, new)
+                listener: beginMethod(DeclarationKind.Class, null, null, null, null, null, new)
                 listener: handleIdentifier(int, typeReference)
                 listener: handleNoTypeArguments(new)
                 listener: handleType(int, null)
@@ -6544,7 +6544,7 @@
               isReservedKeyword(null)
               indicatesMethodOrField(()
               parseMethod(}, null, null, null, null, null, null, }, Instance of 'SimpleType', null, null, DeclarationKind.Class, WrapperClass, true)
-                listener: beginMethod(null, null, null, null, null, null)
+                listener: beginMethod(DeclarationKind.Class, null, null, null, null, null, null)
                 listener: handleIdentifier(int, typeReference)
                 listener: handleNoTypeArguments(null)
                 listener: handleType(int, null)
@@ -6684,7 +6684,7 @@
                 listener: endMetadataStar(0)
               listener: beginMember()
               parseMethod(}, null, null, null, null, null, null, }, Instance of 'SimpleType', null, of, DeclarationKind.Class, WrapperClass, false)
-                listener: beginMethod(null, null, null, null, null, of)
+                listener: beginMethod(DeclarationKind.Class, null, null, null, null, null, of)
                 listener: handleIdentifier(int, typeReference)
                 listener: handleNoTypeArguments(of)
                 listener: handleType(int, null)
@@ -6828,7 +6828,7 @@
                 listener: endMetadataStar(0)
               listener: beginMember()
               parseMethod(}, null, null, null, null, null, null, }, Instance of 'SimpleType', null, on, DeclarationKind.Class, WrapperClass, false)
-                listener: beginMethod(null, null, null, null, null, on)
+                listener: beginMethod(DeclarationKind.Class, null, null, null, null, null, on)
                 listener: handleIdentifier(int, typeReference)
                 listener: handleNoTypeArguments(on)
                 listener: handleType(int, null)
@@ -6974,7 +6974,7 @@
               isUnaryMinus(()
               parseMethod(}, null, null, null, null, null, null, }, Instance of 'SimpleType', null, operator, DeclarationKind.Class, WrapperClass, false)
                 isUnaryMinus(()
-                listener: beginMethod(null, null, null, null, null, operator)
+                listener: beginMethod(DeclarationKind.Class, null, null, null, null, null, operator)
                 listener: handleIdentifier(int, typeReference)
                 listener: handleNoTypeArguments(operator)
                 listener: handleType(int, null)
@@ -7118,7 +7118,7 @@
                 listener: endMetadataStar(0)
               listener: beginMember()
               parseMethod(}, null, null, null, null, null, null, }, Instance of 'SimpleType', null, out, DeclarationKind.Class, WrapperClass, false)
-                listener: beginMethod(null, null, null, null, null, out)
+                listener: beginMethod(DeclarationKind.Class, null, null, null, null, null, out)
                 listener: handleIdentifier(int, typeReference)
                 listener: handleNoTypeArguments(out)
                 listener: handleType(int, null)
@@ -7262,7 +7262,7 @@
                 listener: endMetadataStar(0)
               listener: beginMember()
               parseMethod(}, null, null, null, null, null, null, }, Instance of 'SimpleType', null, part, DeclarationKind.Class, WrapperClass, false)
-                listener: beginMethod(null, null, null, null, null, part)
+                listener: beginMethod(DeclarationKind.Class, null, null, null, null, null, part)
                 listener: handleIdentifier(int, typeReference)
                 listener: handleNoTypeArguments(part)
                 listener: handleType(int, null)
@@ -7406,7 +7406,7 @@
                 listener: endMetadataStar(0)
               listener: beginMember()
               parseMethod(}, null, null, null, null, null, null, }, Instance of 'SimpleType', null, patch, DeclarationKind.Class, WrapperClass, false)
-                listener: beginMethod(null, null, null, null, null, patch)
+                listener: beginMethod(DeclarationKind.Class, null, null, null, null, null, patch)
                 listener: handleIdentifier(int, typeReference)
                 listener: handleNoTypeArguments(patch)
                 listener: handleType(int, null)
@@ -7550,7 +7550,7 @@
                 listener: endMetadataStar(0)
               listener: beginMember()
               parseMethod(}, null, null, null, null, null, null, }, Instance of 'SimpleType', null, required, DeclarationKind.Class, WrapperClass, false)
-                listener: beginMethod(null, null, null, null, null, required)
+                listener: beginMethod(DeclarationKind.Class, null, null, null, null, null, required)
                 listener: handleIdentifier(int, typeReference)
                 listener: handleNoTypeArguments(required)
                 listener: handleType(int, null)
@@ -7696,7 +7696,7 @@
               isReservedKeyword(rethrow)
               indicatesMethodOrField(()
               parseMethod(}, null, null, null, null, null, null, }, Instance of 'SimpleType', null, rethrow, DeclarationKind.Class, WrapperClass, true)
-                listener: beginMethod(null, null, null, null, null, rethrow)
+                listener: beginMethod(DeclarationKind.Class, null, null, null, null, null, rethrow)
                 listener: handleIdentifier(int, typeReference)
                 listener: handleNoTypeArguments(rethrow)
                 listener: handleType(int, null)
@@ -7843,7 +7843,7 @@
               isReservedKeyword(return)
               indicatesMethodOrField(()
               parseMethod(}, null, null, null, null, null, null, }, Instance of 'SimpleType', null, return, DeclarationKind.Class, WrapperClass, true)
-                listener: beginMethod(null, null, null, null, null, return)
+                listener: beginMethod(DeclarationKind.Class, null, null, null, null, null, return)
                 listener: handleIdentifier(int, typeReference)
                 listener: handleNoTypeArguments(return)
                 listener: handleType(int, null)
@@ -7985,7 +7985,7 @@
               listener: beginMember()
               isReservedKeyword(()
               parseMethod(}, null, null, null, null, null, null, }, Instance of 'SimpleType', null, set, DeclarationKind.Class, WrapperClass, false)
-                listener: beginMethod(null, null, null, null, null, set)
+                listener: beginMethod(DeclarationKind.Class, null, null, null, null, null, set)
                 listener: handleIdentifier(int, typeReference)
                 listener: handleNoTypeArguments(set)
                 listener: handleType(int, null)
@@ -8129,7 +8129,7 @@
                 listener: endMetadataStar(0)
               listener: beginMember()
               parseMethod(}, null, null, null, null, null, null, }, Instance of 'SimpleType', null, show, DeclarationKind.Class, WrapperClass, false)
-                listener: beginMethod(null, null, null, null, null, show)
+                listener: beginMethod(DeclarationKind.Class, null, null, null, null, null, show)
                 listener: handleIdentifier(int, typeReference)
                 listener: handleNoTypeArguments(show)
                 listener: handleType(int, null)
@@ -8273,7 +8273,7 @@
                 listener: endMetadataStar(0)
               listener: beginMember()
               parseMethod(}, null, null, null, null, null, null, }, Instance of 'SimpleType', null, source, DeclarationKind.Class, WrapperClass, false)
-                listener: beginMethod(null, null, null, null, null, source)
+                listener: beginMethod(DeclarationKind.Class, null, null, null, null, null, source)
                 listener: handleIdentifier(int, typeReference)
                 listener: handleNoTypeArguments(source)
                 listener: handleType(int, null)
@@ -8417,7 +8417,7 @@
                 listener: endMetadataStar(0)
               listener: beginMember()
               parseMethod(}, null, null, null, null, null, null, }, Instance of 'SimpleType', null, static, DeclarationKind.Class, WrapperClass, false)
-                listener: beginMethod(null, null, null, null, null, static)
+                listener: beginMethod(DeclarationKind.Class, null, null, null, null, null, static)
                 listener: handleIdentifier(int, typeReference)
                 listener: handleNoTypeArguments(static)
                 listener: handleType(int, null)
@@ -8563,7 +8563,7 @@
               isReservedKeyword(super)
               indicatesMethodOrField(()
               parseMethod(}, null, null, null, null, null, null, }, Instance of 'SimpleType', null, super, DeclarationKind.Class, WrapperClass, true)
-                listener: beginMethod(null, null, null, null, null, super)
+                listener: beginMethod(DeclarationKind.Class, null, null, null, null, null, super)
                 listener: handleIdentifier(int, typeReference)
                 listener: handleNoTypeArguments(super)
                 listener: handleType(int, null)
@@ -8704,7 +8704,7 @@
               isReservedKeyword(switch)
               indicatesMethodOrField(()
               parseMethod(}, null, null, null, null, null, null, }, Instance of 'SimpleType', null, switch, DeclarationKind.Class, WrapperClass, true)
-                listener: beginMethod(null, null, null, null, null, switch)
+                listener: beginMethod(DeclarationKind.Class, null, null, null, null, null, switch)
                 listener: handleIdentifier(int, typeReference)
                 listener: handleNoTypeArguments(switch)
                 listener: handleType(int, null)
@@ -8896,7 +8896,7 @@
                 listener: endMetadataStar(0)
               listener: beginMember()
               parseMethod(}, null, null, null, null, null, null, }, Instance of 'SimpleType', null, sync, DeclarationKind.Class, WrapperClass, false)
-                listener: beginMethod(null, null, null, null, null, sync)
+                listener: beginMethod(DeclarationKind.Class, null, null, null, null, null, sync)
                 listener: handleIdentifier(int, typeReference)
                 listener: handleNoTypeArguments(sync)
                 listener: handleType(int, null)
@@ -9041,7 +9041,7 @@
               listener: beginMember()
               recoverFromInvalidMember(int, }, null, null, null, null, null, null, }, Instance of 'SimpleType', null, DeclarationKind.Class, WrapperClass)
                 parseFields(}, null, null, null, null, null, null, }, Instance of 'SimpleType', this, DeclarationKind.Class, WrapperClass, false)
-                  listener: beginFields(})
+                  listener: beginFields(DeclarationKind.Class, null, null, null, null, null, null, })
                   listener: handleIdentifier(int, typeReference)
                   listener: handleNoTypeArguments(this)
                   listener: handleType(int, null)
@@ -9065,7 +9065,7 @@
               listener: beginMember()
               recoverFromInvalidMember(;, ;, null, null, null, null, null, null, ;, Instance of 'NoType', null, DeclarationKind.Class, WrapperClass)
                 parseMethod(;, null, null, null, null, null, null, ;, Instance of 'NoType', null, (, DeclarationKind.Class, WrapperClass, false)
-                  listener: beginMethod(null, null, null, null, null, ()
+                  listener: beginMethod(DeclarationKind.Class, null, null, null, null, null, ()
                   listener: handleNoType(;)
                   ensureIdentifierPotentiallyRecovered(;, methodDeclaration, false)
                     insertSyntheticIdentifier(;, methodDeclaration, message: null, messageOnToken: null)
@@ -9206,7 +9206,7 @@
               isReservedKeyword(throw)
               indicatesMethodOrField(()
               parseMethod(}, null, null, null, null, null, null, }, Instance of 'SimpleType', null, throw, DeclarationKind.Class, WrapperClass, true)
-                listener: beginMethod(null, null, null, null, null, throw)
+                listener: beginMethod(DeclarationKind.Class, null, null, null, null, null, throw)
                 listener: handleIdentifier(int, typeReference)
                 listener: handleNoTypeArguments(throw)
                 listener: handleType(int, null)
@@ -9348,7 +9348,7 @@
               isReservedKeyword(true)
               indicatesMethodOrField(()
               parseMethod(}, null, null, null, null, null, null, }, Instance of 'SimpleType', null, true, DeclarationKind.Class, WrapperClass, true)
-                listener: beginMethod(null, null, null, null, null, true)
+                listener: beginMethod(DeclarationKind.Class, null, null, null, null, null, true)
                 listener: handleIdentifier(int, typeReference)
                 listener: handleNoTypeArguments(true)
                 listener: handleType(int, null)
@@ -9490,7 +9490,7 @@
               isReservedKeyword(try)
               indicatesMethodOrField(()
               parseMethod(}, null, null, null, null, null, null, }, Instance of 'SimpleType', null, try, DeclarationKind.Class, WrapperClass, true)
-                listener: beginMethod(null, null, null, null, null, try)
+                listener: beginMethod(DeclarationKind.Class, null, null, null, null, null, try)
                 listener: handleIdentifier(int, typeReference)
                 listener: handleNoTypeArguments(try)
                 listener: handleType(int, null)
@@ -9673,7 +9673,7 @@
                 listener: endMetadataStar(0)
               listener: beginMember()
               parseMethod(}, null, null, null, null, null, null, }, Instance of 'SimpleType', null, typedef, DeclarationKind.Class, WrapperClass, false)
-                listener: beginMethod(null, null, null, null, null, typedef)
+                listener: beginMethod(DeclarationKind.Class, null, null, null, null, null, typedef)
                 listener: handleIdentifier(int, typeReference)
                 listener: handleNoTypeArguments(typedef)
                 listener: handleType(int, null)
@@ -9819,7 +9819,7 @@
               isReservedKeyword(var)
               indicatesMethodOrField(()
               parseMethod(}, null, null, null, null, null, null, }, Instance of 'SimpleType', null, var, DeclarationKind.Class, WrapperClass, true)
-                listener: beginMethod(null, null, null, null, null, var)
+                listener: beginMethod(DeclarationKind.Class, null, null, null, null, null, var)
                 listener: handleIdentifier(int, typeReference)
                 listener: handleNoTypeArguments(var)
                 listener: handleType(int, null)
@@ -10058,7 +10058,7 @@
               isReservedKeyword(void)
               indicatesMethodOrField(()
               parseMethod(}, null, null, null, null, null, null, }, Instance of 'SimpleType', null, void, DeclarationKind.Class, WrapperClass, true)
-                listener: beginMethod(null, null, null, null, null, void)
+                listener: beginMethod(DeclarationKind.Class, null, null, null, null, null, void)
                 listener: handleIdentifier(int, typeReference)
                 listener: handleNoTypeArguments(void)
                 listener: handleType(int, null)
@@ -10298,7 +10298,7 @@
               isReservedKeyword(while)
               indicatesMethodOrField(()
               parseMethod(}, null, null, null, null, null, null, }, Instance of 'SimpleType', null, while, DeclarationKind.Class, WrapperClass, true)
-                listener: beginMethod(null, null, null, null, null, while)
+                listener: beginMethod(DeclarationKind.Class, null, null, null, null, null, while)
                 listener: handleIdentifier(int, typeReference)
                 listener: handleNoTypeArguments(while)
                 listener: handleType(int, null)
@@ -10483,7 +10483,7 @@
               isReservedKeyword(with)
               indicatesMethodOrField(()
               parseMethod(}, null, null, null, null, null, null, }, Instance of 'SimpleType', null, with, DeclarationKind.Class, WrapperClass, true)
-                listener: beginMethod(null, null, null, null, null, with)
+                listener: beginMethod(DeclarationKind.Class, null, null, null, null, null, with)
                 listener: handleIdentifier(int, typeReference)
                 listener: handleNoTypeArguments(with)
                 listener: handleType(int, null)
@@ -10628,7 +10628,7 @@
                 listener: endMetadataStar(0)
               listener: beginMember()
               parseMethod(}, null, null, null, null, null, null, }, Instance of 'SimpleType', null, yield, DeclarationKind.Class, WrapperClass, false)
-                listener: beginMethod(null, null, null, null, null, yield)
+                listener: beginMethod(DeclarationKind.Class, null, null, null, null, null, yield)
                 listener: handleIdentifier(int, typeReference)
                 listener: handleNoTypeArguments(yield)
                 listener: handleType(int, null)
@@ -10766,7 +10766,7 @@
                 listener: endClassMethod(null, int, (, null, })
               listener: endMember()
             notEofOrValue(}, })
-            listener: endClassOrMixinBody(DeclarationKind.Class, 70, {, })
+            listener: endClassOrMixinOrExtensionBody(DeclarationKind.Class, 70, {, })
           listener: endClassDeclaration(class, })
   listener: endTopLevelDeclaration()
   reportAllErrorTokens(class)
diff --git a/pkg/front_end/parser_testcases/error_recovery/keyword_named_formal_parameter_start_of_next_top_level.dart.expect b/pkg/front_end/parser_testcases/error_recovery/keyword_named_formal_parameter_start_of_next_top_level.dart.expect
index ef7191f..05ab92b 100644
--- a/pkg/front_end/parser_testcases/error_recovery/keyword_named_formal_parameter_start_of_next_top_level.dart.expect
+++ b/pkg/front_end/parser_testcases/error_recovery/keyword_named_formal_parameter_start_of_next_top_level.dart.expect
@@ -32,7 +32,7 @@
   endTopLevelDeclaration(class)
   beginMetadataStar(class)
   endMetadataStar(0)
-  beginClassOrNamedMixinApplicationPrelude(class)
+  beginClassOrMixinOrNamedMixinApplicationPrelude(class)
     handleIdentifier(C, classOrMixinDeclaration)
     handleNoTypeVariables({)
     beginClassDeclaration(class, null, C)
@@ -41,8 +41,8 @@
       handleClassNoWithClause()
       handleClassOrMixinImplements(null, 0)
       handleClassHeader(class, class, null)
-      beginClassOrMixinBody(DeclarationKind.Class, {)
-      endClassOrMixinBody(DeclarationKind.Class, 0, {, })
+      beginClassOrMixinOrExtensionBody(DeclarationKind.Class, {)
+      endClassOrMixinOrExtensionBody(DeclarationKind.Class, 0, {, })
     endClassDeclaration(class, })
   endTopLevelDeclaration()
   handleErrorToken(UnmatchedToken(())
diff --git a/pkg/front_end/parser_testcases/error_recovery/keyword_named_formal_parameter_start_of_next_top_level.dart.intertwined.expect b/pkg/front_end/parser_testcases/error_recovery/keyword_named_formal_parameter_start_of_next_top_level.dart.intertwined.expect
index 044cefa..69db077 100644
--- a/pkg/front_end/parser_testcases/error_recovery/keyword_named_formal_parameter_start_of_next_top_level.dart.intertwined.expect
+++ b/pkg/front_end/parser_testcases/error_recovery/keyword_named_formal_parameter_start_of_next_top_level.dart.intertwined.expect
@@ -52,7 +52,7 @@
     parseTopLevelKeywordDeclaration(}, class, Instance of 'DirectiveContext')
       parseClassDeclarationModifiers(}, class)
       parseClassOrNamedMixinApplication(null, class)
-        listener: beginClassOrNamedMixinApplicationPrelude(class)
+        listener: beginClassOrMixinOrNamedMixinApplicationPrelude(class)
         ensureIdentifier(class, classOrMixinDeclaration)
           listener: handleIdentifier(C, classOrMixinDeclaration)
         listener: handleNoTypeVariables({)
@@ -68,9 +68,9 @@
               listener: handleClassOrMixinImplements(null, 0)
             listener: handleClassHeader(class, class, null)
           parseClassOrMixinOrExtensionBody(C, DeclarationKind.Class, C)
-            listener: beginClassOrMixinBody(DeclarationKind.Class, {)
+            listener: beginClassOrMixinOrExtensionBody(DeclarationKind.Class, {)
             notEofOrValue(}, })
-            listener: endClassOrMixinBody(DeclarationKind.Class, 0, {, })
+            listener: endClassOrMixinOrExtensionBody(DeclarationKind.Class, 0, {, })
           listener: endClassDeclaration(class, })
   listener: endTopLevelDeclaration()
   reportAllErrorTokens(UnmatchedToken(())
diff --git a/pkg/front_end/parser_testcases/error_recovery/keyword_named_top_level_fields.dart.expect b/pkg/front_end/parser_testcases/error_recovery/keyword_named_top_level_fields.dart.expect
index acdbaf9..8221f5c 100644
--- a/pkg/front_end/parser_testcases/error_recovery/keyword_named_top_level_fields.dart.expect
+++ b/pkg/front_end/parser_testcases/error_recovery/keyword_named_top_level_fields.dart.expect
@@ -136,7 +136,7 @@
   beginMetadataStar(int)
   endMetadataStar(0)
   beginTopLevelMember(int)
-    beginFields()
+    beginFields(DeclarationKind.TopLevel, null, null, null, null, null, null, )
       handleIdentifier(int, typeReference)
       handleNoTypeArguments(abstract)
       handleType(int, null)
@@ -149,7 +149,7 @@
   beginMetadataStar(int)
   endMetadataStar(0)
   beginTopLevelMember(int)
-    beginFields(;)
+    beginFields(DeclarationKind.TopLevel, null, null, null, null, null, null, ;)
       handleIdentifier(int, typeReference)
       handleNoTypeArguments(as)
       handleType(int, null)
@@ -162,7 +162,7 @@
   beginMetadataStar(int)
   endMetadataStar(0)
   beginTopLevelMember(int)
-    beginFields(;)
+    beginFields(DeclarationKind.TopLevel, null, null, null, null, null, null, ;)
       handleIdentifier(int, typeReference)
       handleNoTypeArguments(assert)
       handleType(int, null)
@@ -176,7 +176,7 @@
   beginMetadataStar(int)
   endMetadataStar(0)
   beginTopLevelMember(int)
-    beginFields(;)
+    beginFields(DeclarationKind.TopLevel, null, null, null, null, null, null, ;)
       handleIdentifier(int, typeReference)
       handleNoTypeArguments(async)
       handleType(int, null)
@@ -189,7 +189,7 @@
   beginMetadataStar(int)
   endMetadataStar(0)
   beginTopLevelMember(int)
-    beginFields(;)
+    beginFields(DeclarationKind.TopLevel, null, null, null, null, null, null, ;)
       handleIdentifier(int, typeReference)
       handleNoTypeArguments(await)
       handleType(int, null)
@@ -202,7 +202,7 @@
   beginMetadataStar(int)
   endMetadataStar(0)
   beginTopLevelMember(int)
-    beginFields(;)
+    beginFields(DeclarationKind.TopLevel, null, null, null, null, null, null, ;)
       handleIdentifier(int, typeReference)
       handleNoTypeArguments(break)
       handleType(int, null)
@@ -216,7 +216,7 @@
   beginMetadataStar(int)
   endMetadataStar(0)
   beginTopLevelMember(int)
-    beginFields(;)
+    beginFields(DeclarationKind.TopLevel, null, null, null, null, null, null, ;)
       handleIdentifier(int, typeReference)
       handleNoTypeArguments(case)
       handleType(int, null)
@@ -230,7 +230,7 @@
   beginMetadataStar(int)
   endMetadataStar(0)
   beginTopLevelMember(int)
-    beginFields(;)
+    beginFields(DeclarationKind.TopLevel, null, null, null, null, null, null, ;)
       handleIdentifier(int, typeReference)
       handleNoTypeArguments(catch)
       handleType(int, null)
@@ -244,7 +244,7 @@
   beginMetadataStar(int)
   endMetadataStar(0)
   beginTopLevelMember(int)
-    beginFields(;)
+    beginFields(DeclarationKind.TopLevel, null, null, null, null, null, null, ;)
       handleIdentifier(int, typeReference)
       handleNoTypeArguments(class)
       handleType(int, null)
@@ -258,7 +258,7 @@
   beginMetadataStar(int)
   endMetadataStar(0)
   beginTopLevelMember(int)
-    beginFields(;)
+    beginFields(DeclarationKind.TopLevel, null, null, null, null, null, null, ;)
       handleIdentifier(int, typeReference)
       handleNoTypeArguments(const)
       handleType(int, null)
@@ -272,7 +272,7 @@
   beginMetadataStar(int)
   endMetadataStar(0)
   beginTopLevelMember(int)
-    beginFields(;)
+    beginFields(DeclarationKind.TopLevel, null, null, null, null, null, null, ;)
       handleIdentifier(int, typeReference)
       handleNoTypeArguments(continue)
       handleType(int, null)
@@ -286,7 +286,7 @@
   beginMetadataStar(int)
   endMetadataStar(0)
   beginTopLevelMember(int)
-    beginFields(;)
+    beginFields(DeclarationKind.TopLevel, null, null, null, null, null, null, ;)
       handleIdentifier(int, typeReference)
       handleNoTypeArguments(covariant)
       handleType(int, null)
@@ -299,7 +299,7 @@
   beginMetadataStar(int)
   endMetadataStar(0)
   beginTopLevelMember(int)
-    beginFields(;)
+    beginFields(DeclarationKind.TopLevel, null, null, null, null, null, null, ;)
       handleIdentifier(int, typeReference)
       handleNoTypeArguments(default)
       handleType(int, null)
@@ -313,7 +313,7 @@
   beginMetadataStar(int)
   endMetadataStar(0)
   beginTopLevelMember(int)
-    beginFields(;)
+    beginFields(DeclarationKind.TopLevel, null, null, null, null, null, null, ;)
       handleIdentifier(int, typeReference)
       handleNoTypeArguments(deferred)
       handleType(int, null)
@@ -326,7 +326,7 @@
   beginMetadataStar(int)
   endMetadataStar(0)
   beginTopLevelMember(int)
-    beginFields(;)
+    beginFields(DeclarationKind.TopLevel, null, null, null, null, null, null, ;)
       handleIdentifier(int, typeReference)
       handleNoTypeArguments(do)
       handleType(int, null)
@@ -340,7 +340,7 @@
   beginMetadataStar(int)
   endMetadataStar(0)
   beginTopLevelMember(int)
-    beginFields(;)
+    beginFields(DeclarationKind.TopLevel, null, null, null, null, null, null, ;)
       handleIdentifier(int, typeReference)
       handleNoTypeArguments(dynamic)
       handleType(int, null)
@@ -353,7 +353,7 @@
   beginMetadataStar(int)
   endMetadataStar(0)
   beginTopLevelMember(int)
-    beginFields(;)
+    beginFields(DeclarationKind.TopLevel, null, null, null, null, null, null, ;)
       handleIdentifier(int, typeReference)
       handleNoTypeArguments(else)
       handleType(int, null)
@@ -367,7 +367,7 @@
   beginMetadataStar(int)
   endMetadataStar(0)
   beginTopLevelMember(int)
-    beginFields(;)
+    beginFields(DeclarationKind.TopLevel, null, null, null, null, null, null, ;)
       handleIdentifier(int, typeReference)
       handleNoTypeArguments(enum)
       handleType(int, null)
@@ -381,7 +381,7 @@
   beginMetadataStar(int)
   endMetadataStar(0)
   beginTopLevelMember(int)
-    beginFields(;)
+    beginFields(DeclarationKind.TopLevel, null, null, null, null, null, null, ;)
       handleIdentifier(int, typeReference)
       handleNoTypeArguments(export)
       handleType(int, null)
@@ -394,7 +394,7 @@
   beginMetadataStar(int)
   endMetadataStar(0)
   beginTopLevelMember(int)
-    beginFields(;)
+    beginFields(DeclarationKind.TopLevel, null, null, null, null, null, null, ;)
       handleIdentifier(int, typeReference)
       handleNoTypeArguments(extends)
       handleType(int, null)
@@ -408,7 +408,7 @@
   beginMetadataStar(int)
   endMetadataStar(0)
   beginTopLevelMember(int)
-    beginFields(;)
+    beginFields(DeclarationKind.TopLevel, null, null, null, null, null, null, ;)
       handleIdentifier(int, typeReference)
       handleNoTypeArguments(extension)
       handleType(int, null)
@@ -421,7 +421,7 @@
   beginMetadataStar(int)
   endMetadataStar(0)
   beginTopLevelMember(int)
-    beginFields(;)
+    beginFields(DeclarationKind.TopLevel, null, null, null, null, null, null, ;)
       handleIdentifier(int, typeReference)
       handleNoTypeArguments(external)
       handleType(int, null)
@@ -434,7 +434,7 @@
   beginMetadataStar(int)
   endMetadataStar(0)
   beginTopLevelMember(int)
-    beginFields(;)
+    beginFields(DeclarationKind.TopLevel, null, null, null, null, null, null, ;)
       handleIdentifier(int, typeReference)
       handleNoTypeArguments(factory)
       handleType(int, null)
@@ -447,7 +447,7 @@
   beginMetadataStar(int)
   endMetadataStar(0)
   beginTopLevelMember(int)
-    beginFields(;)
+    beginFields(DeclarationKind.TopLevel, null, null, null, null, null, null, ;)
       handleIdentifier(int, typeReference)
       handleNoTypeArguments(false)
       handleType(int, null)
@@ -461,7 +461,7 @@
   beginMetadataStar(int)
   endMetadataStar(0)
   beginTopLevelMember(int)
-    beginFields(;)
+    beginFields(DeclarationKind.TopLevel, null, null, null, null, null, null, ;)
       handleIdentifier(int, typeReference)
       handleNoTypeArguments(final)
       handleType(int, null)
@@ -475,7 +475,7 @@
   beginMetadataStar(int)
   endMetadataStar(0)
   beginTopLevelMember(int)
-    beginFields(;)
+    beginFields(DeclarationKind.TopLevel, null, null, null, null, null, null, ;)
       handleIdentifier(int, typeReference)
       handleNoTypeArguments(finally)
       handleType(int, null)
@@ -489,7 +489,7 @@
   beginMetadataStar(int)
   endMetadataStar(0)
   beginTopLevelMember(int)
-    beginFields(;)
+    beginFields(DeclarationKind.TopLevel, null, null, null, null, null, null, ;)
       handleIdentifier(int, typeReference)
       handleNoTypeArguments(for)
       handleType(int, null)
@@ -503,7 +503,7 @@
   beginMetadataStar(int)
   endMetadataStar(0)
   beginTopLevelMember(int)
-    beginFields(;)
+    beginFields(DeclarationKind.TopLevel, null, null, null, null, null, null, ;)
       handleIdentifier(int, typeReference)
       handleNoTypeArguments(Function)
       handleType(int, null)
@@ -516,7 +516,7 @@
   beginMetadataStar(int)
   endMetadataStar(0)
   beginTopLevelMember(int)
-    beginFields(;)
+    beginFields(DeclarationKind.TopLevel, null, null, null, null, null, null, ;)
       handleIdentifier(int, typeReference)
       handleNoTypeArguments(get)
       handleType(int, null)
@@ -529,7 +529,7 @@
   beginMetadataStar(int)
   endMetadataStar(0)
   beginTopLevelMember(int)
-    beginFields(;)
+    beginFields(DeclarationKind.TopLevel, null, null, null, null, null, null, ;)
       handleIdentifier(int, typeReference)
       handleNoTypeArguments(hide)
       handleType(int, null)
@@ -542,7 +542,7 @@
   beginMetadataStar(int)
   endMetadataStar(0)
   beginTopLevelMember(int)
-    beginFields(;)
+    beginFields(DeclarationKind.TopLevel, null, null, null, null, null, null, ;)
       handleIdentifier(int, typeReference)
       handleNoTypeArguments(if)
       handleType(int, null)
@@ -556,7 +556,7 @@
   beginMetadataStar(int)
   endMetadataStar(0)
   beginTopLevelMember(int)
-    beginFields(;)
+    beginFields(DeclarationKind.TopLevel, null, null, null, null, null, null, ;)
       handleIdentifier(int, typeReference)
       handleNoTypeArguments(implements)
       handleType(int, null)
@@ -569,7 +569,7 @@
   beginMetadataStar(int)
   endMetadataStar(0)
   beginTopLevelMember(int)
-    beginFields(;)
+    beginFields(DeclarationKind.TopLevel, null, null, null, null, null, null, ;)
       handleIdentifier(int, typeReference)
       handleNoTypeArguments(import)
       handleType(int, null)
@@ -582,7 +582,7 @@
   beginMetadataStar(int)
   endMetadataStar(0)
   beginTopLevelMember(int)
-    beginFields(;)
+    beginFields(DeclarationKind.TopLevel, null, null, null, null, null, null, ;)
       handleIdentifier(int, typeReference)
       handleNoTypeArguments(in)
       handleType(int, null)
@@ -596,7 +596,7 @@
   beginMetadataStar(int)
   endMetadataStar(0)
   beginTopLevelMember(int)
-    beginFields(;)
+    beginFields(DeclarationKind.TopLevel, null, null, null, null, null, null, ;)
       handleIdentifier(int, typeReference)
       handleNoTypeArguments(inout)
       handleType(int, null)
@@ -609,7 +609,7 @@
   beginMetadataStar(int)
   endMetadataStar(0)
   beginTopLevelMember(int)
-    beginFields(;)
+    beginFields(DeclarationKind.TopLevel, null, null, null, null, null, null, ;)
       handleIdentifier(int, typeReference)
       handleNoTypeArguments(interface)
       handleType(int, null)
@@ -622,7 +622,7 @@
   beginMetadataStar(int)
   endMetadataStar(0)
   beginTopLevelMember(int)
-    beginFields(;)
+    beginFields(DeclarationKind.TopLevel, null, null, null, null, null, null, ;)
       handleIdentifier(int, typeReference)
       handleNoTypeArguments(is)
       handleType(int, null)
@@ -636,7 +636,7 @@
   beginMetadataStar(int)
   endMetadataStar(0)
   beginTopLevelMember(int)
-    beginFields(;)
+    beginFields(DeclarationKind.TopLevel, null, null, null, null, null, null, ;)
       handleIdentifier(int, typeReference)
       handleNoTypeArguments(late)
       handleType(int, null)
@@ -649,7 +649,7 @@
   beginMetadataStar(int)
   endMetadataStar(0)
   beginTopLevelMember(int)
-    beginFields(;)
+    beginFields(DeclarationKind.TopLevel, null, null, null, null, null, null, ;)
       handleIdentifier(int, typeReference)
       handleNoTypeArguments(library)
       handleType(int, null)
@@ -662,7 +662,7 @@
   beginMetadataStar(int)
   endMetadataStar(0)
   beginTopLevelMember(int)
-    beginFields(;)
+    beginFields(DeclarationKind.TopLevel, null, null, null, null, null, null, ;)
       handleIdentifier(int, typeReference)
       handleNoTypeArguments(mixin)
       handleType(int, null)
@@ -675,7 +675,7 @@
   beginMetadataStar(int)
   endMetadataStar(0)
   beginTopLevelMember(int)
-    beginFields(;)
+    beginFields(DeclarationKind.TopLevel, null, null, null, null, null, null, ;)
       handleIdentifier(int, typeReference)
       handleNoTypeArguments(native)
       handleType(int, null)
@@ -688,7 +688,7 @@
   beginMetadataStar(int)
   endMetadataStar(0)
   beginTopLevelMember(int)
-    beginFields(;)
+    beginFields(DeclarationKind.TopLevel, null, null, null, null, null, null, ;)
       handleIdentifier(int, typeReference)
       handleNoTypeArguments(new)
       handleType(int, null)
@@ -702,7 +702,7 @@
   beginMetadataStar(int)
   endMetadataStar(0)
   beginTopLevelMember(int)
-    beginFields(;)
+    beginFields(DeclarationKind.TopLevel, null, null, null, null, null, null, ;)
       handleIdentifier(int, typeReference)
       handleNoTypeArguments(null)
       handleType(int, null)
@@ -716,7 +716,7 @@
   beginMetadataStar(int)
   endMetadataStar(0)
   beginTopLevelMember(int)
-    beginFields(;)
+    beginFields(DeclarationKind.TopLevel, null, null, null, null, null, null, ;)
       handleIdentifier(int, typeReference)
       handleNoTypeArguments(of)
       handleType(int, null)
@@ -729,7 +729,7 @@
   beginMetadataStar(int)
   endMetadataStar(0)
   beginTopLevelMember(int)
-    beginFields(;)
+    beginFields(DeclarationKind.TopLevel, null, null, null, null, null, null, ;)
       handleIdentifier(int, typeReference)
       handleNoTypeArguments(on)
       handleType(int, null)
@@ -742,7 +742,7 @@
   beginMetadataStar(int)
   endMetadataStar(0)
   beginTopLevelMember(int)
-    beginFields(;)
+    beginFields(DeclarationKind.TopLevel, null, null, null, null, null, null, ;)
       handleIdentifier(int, typeReference)
       handleNoTypeArguments(operator)
       handleType(int, null)
@@ -755,7 +755,7 @@
   beginMetadataStar(int)
   endMetadataStar(0)
   beginTopLevelMember(int)
-    beginFields(;)
+    beginFields(DeclarationKind.TopLevel, null, null, null, null, null, null, ;)
       handleIdentifier(int, typeReference)
       handleNoTypeArguments(out)
       handleType(int, null)
@@ -768,7 +768,7 @@
   beginMetadataStar(int)
   endMetadataStar(0)
   beginTopLevelMember(int)
-    beginFields(;)
+    beginFields(DeclarationKind.TopLevel, null, null, null, null, null, null, ;)
       handleIdentifier(int, typeReference)
       handleNoTypeArguments(part)
       handleType(int, null)
@@ -781,7 +781,7 @@
   beginMetadataStar(int)
   endMetadataStar(0)
   beginTopLevelMember(int)
-    beginFields(;)
+    beginFields(DeclarationKind.TopLevel, null, null, null, null, null, null, ;)
       handleIdentifier(int, typeReference)
       handleNoTypeArguments(patch)
       handleType(int, null)
@@ -794,7 +794,7 @@
   beginMetadataStar(int)
   endMetadataStar(0)
   beginTopLevelMember(int)
-    beginFields(;)
+    beginFields(DeclarationKind.TopLevel, null, null, null, null, null, null, ;)
       handleIdentifier(int, typeReference)
       handleNoTypeArguments(required)
       handleType(int, null)
@@ -807,7 +807,7 @@
   beginMetadataStar(int)
   endMetadataStar(0)
   beginTopLevelMember(int)
-    beginFields(;)
+    beginFields(DeclarationKind.TopLevel, null, null, null, null, null, null, ;)
       handleIdentifier(int, typeReference)
       handleNoTypeArguments(rethrow)
       handleType(int, null)
@@ -821,7 +821,7 @@
   beginMetadataStar(int)
   endMetadataStar(0)
   beginTopLevelMember(int)
-    beginFields(;)
+    beginFields(DeclarationKind.TopLevel, null, null, null, null, null, null, ;)
       handleIdentifier(int, typeReference)
       handleNoTypeArguments(return)
       handleType(int, null)
@@ -835,7 +835,7 @@
   beginMetadataStar(int)
   endMetadataStar(0)
   beginTopLevelMember(int)
-    beginFields(;)
+    beginFields(DeclarationKind.TopLevel, null, null, null, null, null, null, ;)
       handleIdentifier(int, typeReference)
       handleNoTypeArguments(set)
       handleType(int, null)
@@ -848,7 +848,7 @@
   beginMetadataStar(int)
   endMetadataStar(0)
   beginTopLevelMember(int)
-    beginFields(;)
+    beginFields(DeclarationKind.TopLevel, null, null, null, null, null, null, ;)
       handleIdentifier(int, typeReference)
       handleNoTypeArguments(show)
       handleType(int, null)
@@ -861,7 +861,7 @@
   beginMetadataStar(int)
   endMetadataStar(0)
   beginTopLevelMember(int)
-    beginFields(;)
+    beginFields(DeclarationKind.TopLevel, null, null, null, null, null, null, ;)
       handleIdentifier(int, typeReference)
       handleNoTypeArguments(source)
       handleType(int, null)
@@ -874,7 +874,7 @@
   beginMetadataStar(int)
   endMetadataStar(0)
   beginTopLevelMember(int)
-    beginFields(;)
+    beginFields(DeclarationKind.TopLevel, null, null, null, null, null, null, ;)
       handleIdentifier(int, typeReference)
       handleNoTypeArguments(static)
       handleType(int, null)
@@ -887,7 +887,7 @@
   beginMetadataStar(int)
   endMetadataStar(0)
   beginTopLevelMember(int)
-    beginFields(;)
+    beginFields(DeclarationKind.TopLevel, null, null, null, null, null, null, ;)
       handleIdentifier(int, typeReference)
       handleNoTypeArguments(super)
       handleType(int, null)
@@ -901,7 +901,7 @@
   beginMetadataStar(int)
   endMetadataStar(0)
   beginTopLevelMember(int)
-    beginFields(;)
+    beginFields(DeclarationKind.TopLevel, null, null, null, null, null, null, ;)
       handleIdentifier(int, typeReference)
       handleNoTypeArguments(switch)
       handleType(int, null)
@@ -915,7 +915,7 @@
   beginMetadataStar(int)
   endMetadataStar(0)
   beginTopLevelMember(int)
-    beginFields(;)
+    beginFields(DeclarationKind.TopLevel, null, null, null, null, null, null, ;)
       handleIdentifier(int, typeReference)
       handleNoTypeArguments(sync)
       handleType(int, null)
@@ -928,7 +928,7 @@
   beginMetadataStar(int)
   endMetadataStar(0)
   beginTopLevelMember(int)
-    beginFields(;)
+    beginFields(DeclarationKind.TopLevel, null, null, null, null, null, null, ;)
       handleIdentifier(int, typeReference)
       handleNoTypeArguments(this)
       handleType(int, null)
@@ -942,7 +942,7 @@
   beginMetadataStar(int)
   endMetadataStar(0)
   beginTopLevelMember(int)
-    beginFields(;)
+    beginFields(DeclarationKind.TopLevel, null, null, null, null, null, null, ;)
       handleIdentifier(int, typeReference)
       handleNoTypeArguments(throw)
       handleType(int, null)
@@ -956,7 +956,7 @@
   beginMetadataStar(int)
   endMetadataStar(0)
   beginTopLevelMember(int)
-    beginFields(;)
+    beginFields(DeclarationKind.TopLevel, null, null, null, null, null, null, ;)
       handleIdentifier(int, typeReference)
       handleNoTypeArguments(true)
       handleType(int, null)
@@ -970,7 +970,7 @@
   beginMetadataStar(int)
   endMetadataStar(0)
   beginTopLevelMember(int)
-    beginFields(;)
+    beginFields(DeclarationKind.TopLevel, null, null, null, null, null, null, ;)
       handleIdentifier(int, typeReference)
       handleNoTypeArguments(try)
       handleType(int, null)
@@ -984,7 +984,7 @@
   beginMetadataStar(int)
   endMetadataStar(0)
   beginTopLevelMember(int)
-    beginFields(;)
+    beginFields(DeclarationKind.TopLevel, null, null, null, null, null, null, ;)
       handleIdentifier(int, typeReference)
       handleNoTypeArguments(typedef)
       handleType(int, null)
@@ -997,7 +997,7 @@
   beginMetadataStar(int)
   endMetadataStar(0)
   beginTopLevelMember(int)
-    beginFields(;)
+    beginFields(DeclarationKind.TopLevel, null, null, null, null, null, null, ;)
       handleIdentifier(int, typeReference)
       handleNoTypeArguments(var)
       handleType(int, null)
@@ -1011,7 +1011,7 @@
   beginMetadataStar(int)
   endMetadataStar(0)
   beginTopLevelMember(int)
-    beginFields(;)
+    beginFields(DeclarationKind.TopLevel, null, null, null, null, null, null, ;)
       handleIdentifier(int, typeReference)
       handleNoTypeArguments(void)
       handleType(int, null)
@@ -1025,7 +1025,7 @@
   beginMetadataStar(int)
   endMetadataStar(0)
   beginTopLevelMember(int)
-    beginFields(;)
+    beginFields(DeclarationKind.TopLevel, null, null, null, null, null, null, ;)
       handleIdentifier(int, typeReference)
       handleNoTypeArguments(while)
       handleType(int, null)
@@ -1039,7 +1039,7 @@
   beginMetadataStar(int)
   endMetadataStar(0)
   beginTopLevelMember(int)
-    beginFields(;)
+    beginFields(DeclarationKind.TopLevel, null, null, null, null, null, null, ;)
       handleIdentifier(int, typeReference)
       handleNoTypeArguments(with)
       handleType(int, null)
@@ -1053,7 +1053,7 @@
   beginMetadataStar(int)
   endMetadataStar(0)
   beginTopLevelMember(int)
-    beginFields(;)
+    beginFields(DeclarationKind.TopLevel, null, null, null, null, null, null, ;)
       handleIdentifier(int, typeReference)
       handleNoTypeArguments(yield)
       handleType(int, null)
diff --git a/pkg/front_end/parser_testcases/error_recovery/keyword_named_top_level_fields.dart.intertwined.expect b/pkg/front_end/parser_testcases/error_recovery/keyword_named_top_level_fields.dart.intertwined.expect
index 3177f42..b2228b8 100644
--- a/pkg/front_end/parser_testcases/error_recovery/keyword_named_top_level_fields.dart.intertwined.expect
+++ b/pkg/front_end/parser_testcases/error_recovery/keyword_named_top_level_fields.dart.intertwined.expect
@@ -9,7 +9,7 @@
     parseTopLevelMemberImpl()
       listener: beginTopLevelMember(int)
       parseFields(, null, null, null, null, null, null, , Instance of 'SimpleType', abstract, DeclarationKind.TopLevel, null, false)
-        listener: beginFields()
+        listener: beginFields(DeclarationKind.TopLevel, null, null, null, null, null, null, )
         listener: handleIdentifier(int, typeReference)
         listener: handleNoTypeArguments(abstract)
         listener: handleType(int, null)
@@ -33,7 +33,7 @@
     parseTopLevelMemberImpl(;)
       listener: beginTopLevelMember(int)
       parseFields(;, null, null, null, null, null, null, ;, Instance of 'SimpleType', as, DeclarationKind.TopLevel, null, false)
-        listener: beginFields(;)
+        listener: beginFields(DeclarationKind.TopLevel, null, null, null, null, null, null, ;)
         listener: handleIdentifier(int, typeReference)
         listener: handleNoTypeArguments(as)
         listener: handleType(int, null)
@@ -59,7 +59,7 @@
       isReservedKeyword(assert)
       indicatesMethodOrField(=)
       parseFields(;, null, null, null, null, null, null, ;, Instance of 'SimpleType', assert, DeclarationKind.TopLevel, null, true)
-        listener: beginFields(;)
+        listener: beginFields(DeclarationKind.TopLevel, null, null, null, null, null, null, ;)
         listener: handleIdentifier(int, typeReference)
         listener: handleNoTypeArguments(assert)
         listener: handleType(int, null)
@@ -85,7 +85,7 @@
     parseTopLevelMemberImpl(;)
       listener: beginTopLevelMember(int)
       parseFields(;, null, null, null, null, null, null, ;, Instance of 'SimpleType', async, DeclarationKind.TopLevel, null, false)
-        listener: beginFields(;)
+        listener: beginFields(DeclarationKind.TopLevel, null, null, null, null, null, null, ;)
         listener: handleIdentifier(int, typeReference)
         listener: handleNoTypeArguments(async)
         listener: handleType(int, null)
@@ -109,7 +109,7 @@
     parseTopLevelMemberImpl(;)
       listener: beginTopLevelMember(int)
       parseFields(;, null, null, null, null, null, null, ;, Instance of 'SimpleType', await, DeclarationKind.TopLevel, null, false)
-        listener: beginFields(;)
+        listener: beginFields(DeclarationKind.TopLevel, null, null, null, null, null, null, ;)
         listener: handleIdentifier(int, typeReference)
         listener: handleNoTypeArguments(await)
         listener: handleType(int, null)
@@ -135,7 +135,7 @@
       isReservedKeyword(break)
       indicatesMethodOrField(=)
       parseFields(;, null, null, null, null, null, null, ;, Instance of 'SimpleType', break, DeclarationKind.TopLevel, null, true)
-        listener: beginFields(;)
+        listener: beginFields(DeclarationKind.TopLevel, null, null, null, null, null, null, ;)
         listener: handleIdentifier(int, typeReference)
         listener: handleNoTypeArguments(break)
         listener: handleType(int, null)
@@ -163,7 +163,7 @@
       isReservedKeyword(case)
       indicatesMethodOrField(=)
       parseFields(;, null, null, null, null, null, null, ;, Instance of 'SimpleType', case, DeclarationKind.TopLevel, null, true)
-        listener: beginFields(;)
+        listener: beginFields(DeclarationKind.TopLevel, null, null, null, null, null, null, ;)
         listener: handleIdentifier(int, typeReference)
         listener: handleNoTypeArguments(case)
         listener: handleType(int, null)
@@ -191,7 +191,7 @@
       isReservedKeyword(catch)
       indicatesMethodOrField(=)
       parseFields(;, null, null, null, null, null, null, ;, Instance of 'SimpleType', catch, DeclarationKind.TopLevel, null, true)
-        listener: beginFields(;)
+        listener: beginFields(DeclarationKind.TopLevel, null, null, null, null, null, null, ;)
         listener: handleIdentifier(int, typeReference)
         listener: handleNoTypeArguments(catch)
         listener: handleType(int, null)
@@ -219,7 +219,7 @@
       isReservedKeyword(class)
       indicatesMethodOrField(=)
       parseFields(;, null, null, null, null, null, null, ;, Instance of 'SimpleType', class, DeclarationKind.TopLevel, null, true)
-        listener: beginFields(;)
+        listener: beginFields(DeclarationKind.TopLevel, null, null, null, null, null, null, ;)
         listener: handleIdentifier(int, typeReference)
         listener: handleNoTypeArguments(class)
         listener: handleType(int, null)
@@ -247,7 +247,7 @@
       isReservedKeyword(const)
       indicatesMethodOrField(=)
       parseFields(;, null, null, null, null, null, null, ;, Instance of 'SimpleType', const, DeclarationKind.TopLevel, null, true)
-        listener: beginFields(;)
+        listener: beginFields(DeclarationKind.TopLevel, null, null, null, null, null, null, ;)
         listener: handleIdentifier(int, typeReference)
         listener: handleNoTypeArguments(const)
         listener: handleType(int, null)
@@ -275,7 +275,7 @@
       isReservedKeyword(continue)
       indicatesMethodOrField(=)
       parseFields(;, null, null, null, null, null, null, ;, Instance of 'SimpleType', continue, DeclarationKind.TopLevel, null, true)
-        listener: beginFields(;)
+        listener: beginFields(DeclarationKind.TopLevel, null, null, null, null, null, null, ;)
         listener: handleIdentifier(int, typeReference)
         listener: handleNoTypeArguments(continue)
         listener: handleType(int, null)
@@ -301,7 +301,7 @@
     parseTopLevelMemberImpl(;)
       listener: beginTopLevelMember(int)
       parseFields(;, null, null, null, null, null, null, ;, Instance of 'SimpleType', covariant, DeclarationKind.TopLevel, null, false)
-        listener: beginFields(;)
+        listener: beginFields(DeclarationKind.TopLevel, null, null, null, null, null, null, ;)
         listener: handleIdentifier(int, typeReference)
         listener: handleNoTypeArguments(covariant)
         listener: handleType(int, null)
@@ -327,7 +327,7 @@
       isReservedKeyword(default)
       indicatesMethodOrField(=)
       parseFields(;, null, null, null, null, null, null, ;, Instance of 'SimpleType', default, DeclarationKind.TopLevel, null, true)
-        listener: beginFields(;)
+        listener: beginFields(DeclarationKind.TopLevel, null, null, null, null, null, null, ;)
         listener: handleIdentifier(int, typeReference)
         listener: handleNoTypeArguments(default)
         listener: handleType(int, null)
@@ -353,7 +353,7 @@
     parseTopLevelMemberImpl(;)
       listener: beginTopLevelMember(int)
       parseFields(;, null, null, null, null, null, null, ;, Instance of 'SimpleType', deferred, DeclarationKind.TopLevel, null, false)
-        listener: beginFields(;)
+        listener: beginFields(DeclarationKind.TopLevel, null, null, null, null, null, null, ;)
         listener: handleIdentifier(int, typeReference)
         listener: handleNoTypeArguments(deferred)
         listener: handleType(int, null)
@@ -379,7 +379,7 @@
       isReservedKeyword(do)
       indicatesMethodOrField(=)
       parseFields(;, null, null, null, null, null, null, ;, Instance of 'SimpleType', do, DeclarationKind.TopLevel, null, true)
-        listener: beginFields(;)
+        listener: beginFields(DeclarationKind.TopLevel, null, null, null, null, null, null, ;)
         listener: handleIdentifier(int, typeReference)
         listener: handleNoTypeArguments(do)
         listener: handleType(int, null)
@@ -405,7 +405,7 @@
     parseTopLevelMemberImpl(;)
       listener: beginTopLevelMember(int)
       parseFields(;, null, null, null, null, null, null, ;, Instance of 'SimpleType', dynamic, DeclarationKind.TopLevel, null, false)
-        listener: beginFields(;)
+        listener: beginFields(DeclarationKind.TopLevel, null, null, null, null, null, null, ;)
         listener: handleIdentifier(int, typeReference)
         listener: handleNoTypeArguments(dynamic)
         listener: handleType(int, null)
@@ -431,7 +431,7 @@
       isReservedKeyword(else)
       indicatesMethodOrField(=)
       parseFields(;, null, null, null, null, null, null, ;, Instance of 'SimpleType', else, DeclarationKind.TopLevel, null, true)
-        listener: beginFields(;)
+        listener: beginFields(DeclarationKind.TopLevel, null, null, null, null, null, null, ;)
         listener: handleIdentifier(int, typeReference)
         listener: handleNoTypeArguments(else)
         listener: handleType(int, null)
@@ -459,7 +459,7 @@
       isReservedKeyword(enum)
       indicatesMethodOrField(=)
       parseFields(;, null, null, null, null, null, null, ;, Instance of 'SimpleType', enum, DeclarationKind.TopLevel, null, true)
-        listener: beginFields(;)
+        listener: beginFields(DeclarationKind.TopLevel, null, null, null, null, null, null, ;)
         listener: handleIdentifier(int, typeReference)
         listener: handleNoTypeArguments(enum)
         listener: handleType(int, null)
@@ -485,7 +485,7 @@
     parseTopLevelMemberImpl(;)
       listener: beginTopLevelMember(int)
       parseFields(;, null, null, null, null, null, null, ;, Instance of 'SimpleType', export, DeclarationKind.TopLevel, null, false)
-        listener: beginFields(;)
+        listener: beginFields(DeclarationKind.TopLevel, null, null, null, null, null, null, ;)
         listener: handleIdentifier(int, typeReference)
         listener: handleNoTypeArguments(export)
         listener: handleType(int, null)
@@ -511,7 +511,7 @@
       isReservedKeyword(extends)
       indicatesMethodOrField(=)
       parseFields(;, null, null, null, null, null, null, ;, Instance of 'SimpleType', extends, DeclarationKind.TopLevel, null, true)
-        listener: beginFields(;)
+        listener: beginFields(DeclarationKind.TopLevel, null, null, null, null, null, null, ;)
         listener: handleIdentifier(int, typeReference)
         listener: handleNoTypeArguments(extends)
         listener: handleType(int, null)
@@ -537,7 +537,7 @@
     parseTopLevelMemberImpl(;)
       listener: beginTopLevelMember(int)
       parseFields(;, null, null, null, null, null, null, ;, Instance of 'SimpleType', extension, DeclarationKind.TopLevel, null, false)
-        listener: beginFields(;)
+        listener: beginFields(DeclarationKind.TopLevel, null, null, null, null, null, null, ;)
         listener: handleIdentifier(int, typeReference)
         listener: handleNoTypeArguments(extension)
         listener: handleType(int, null)
@@ -561,7 +561,7 @@
     parseTopLevelMemberImpl(;)
       listener: beginTopLevelMember(int)
       parseFields(;, null, null, null, null, null, null, ;, Instance of 'SimpleType', external, DeclarationKind.TopLevel, null, false)
-        listener: beginFields(;)
+        listener: beginFields(DeclarationKind.TopLevel, null, null, null, null, null, null, ;)
         listener: handleIdentifier(int, typeReference)
         listener: handleNoTypeArguments(external)
         listener: handleType(int, null)
@@ -585,7 +585,7 @@
     parseTopLevelMemberImpl(;)
       listener: beginTopLevelMember(int)
       parseFields(;, null, null, null, null, null, null, ;, Instance of 'SimpleType', factory, DeclarationKind.TopLevel, null, false)
-        listener: beginFields(;)
+        listener: beginFields(DeclarationKind.TopLevel, null, null, null, null, null, null, ;)
         listener: handleIdentifier(int, typeReference)
         listener: handleNoTypeArguments(factory)
         listener: handleType(int, null)
@@ -611,7 +611,7 @@
       isReservedKeyword(false)
       indicatesMethodOrField(=)
       parseFields(;, null, null, null, null, null, null, ;, Instance of 'SimpleType', false, DeclarationKind.TopLevel, null, true)
-        listener: beginFields(;)
+        listener: beginFields(DeclarationKind.TopLevel, null, null, null, null, null, null, ;)
         listener: handleIdentifier(int, typeReference)
         listener: handleNoTypeArguments(false)
         listener: handleType(int, null)
@@ -639,7 +639,7 @@
       isReservedKeyword(final)
       indicatesMethodOrField(=)
       parseFields(;, null, null, null, null, null, null, ;, Instance of 'SimpleType', final, DeclarationKind.TopLevel, null, true)
-        listener: beginFields(;)
+        listener: beginFields(DeclarationKind.TopLevel, null, null, null, null, null, null, ;)
         listener: handleIdentifier(int, typeReference)
         listener: handleNoTypeArguments(final)
         listener: handleType(int, null)
@@ -667,7 +667,7 @@
       isReservedKeyword(finally)
       indicatesMethodOrField(=)
       parseFields(;, null, null, null, null, null, null, ;, Instance of 'SimpleType', finally, DeclarationKind.TopLevel, null, true)
-        listener: beginFields(;)
+        listener: beginFields(DeclarationKind.TopLevel, null, null, null, null, null, null, ;)
         listener: handleIdentifier(int, typeReference)
         listener: handleNoTypeArguments(finally)
         listener: handleType(int, null)
@@ -695,7 +695,7 @@
       isReservedKeyword(for)
       indicatesMethodOrField(=)
       parseFields(;, null, null, null, null, null, null, ;, Instance of 'SimpleType', for, DeclarationKind.TopLevel, null, true)
-        listener: beginFields(;)
+        listener: beginFields(DeclarationKind.TopLevel, null, null, null, null, null, null, ;)
         listener: handleIdentifier(int, typeReference)
         listener: handleNoTypeArguments(for)
         listener: handleType(int, null)
@@ -721,7 +721,7 @@
     parseTopLevelMemberImpl(;)
       listener: beginTopLevelMember(int)
       parseFields(;, null, null, null, null, null, null, ;, Instance of 'SimpleType', Function, DeclarationKind.TopLevel, null, false)
-        listener: beginFields(;)
+        listener: beginFields(DeclarationKind.TopLevel, null, null, null, null, null, null, ;)
         listener: handleIdentifier(int, typeReference)
         listener: handleNoTypeArguments(Function)
         listener: handleType(int, null)
@@ -745,7 +745,7 @@
     parseTopLevelMemberImpl(;)
       listener: beginTopLevelMember(int)
       parseFields(;, null, null, null, null, null, null, ;, Instance of 'SimpleType', get, DeclarationKind.TopLevel, null, false)
-        listener: beginFields(;)
+        listener: beginFields(DeclarationKind.TopLevel, null, null, null, null, null, null, ;)
         listener: handleIdentifier(int, typeReference)
         listener: handleNoTypeArguments(get)
         listener: handleType(int, null)
@@ -769,7 +769,7 @@
     parseTopLevelMemberImpl(;)
       listener: beginTopLevelMember(int)
       parseFields(;, null, null, null, null, null, null, ;, Instance of 'SimpleType', hide, DeclarationKind.TopLevel, null, false)
-        listener: beginFields(;)
+        listener: beginFields(DeclarationKind.TopLevel, null, null, null, null, null, null, ;)
         listener: handleIdentifier(int, typeReference)
         listener: handleNoTypeArguments(hide)
         listener: handleType(int, null)
@@ -795,7 +795,7 @@
       isReservedKeyword(if)
       indicatesMethodOrField(=)
       parseFields(;, null, null, null, null, null, null, ;, Instance of 'SimpleType', if, DeclarationKind.TopLevel, null, true)
-        listener: beginFields(;)
+        listener: beginFields(DeclarationKind.TopLevel, null, null, null, null, null, null, ;)
         listener: handleIdentifier(int, typeReference)
         listener: handleNoTypeArguments(if)
         listener: handleType(int, null)
@@ -821,7 +821,7 @@
     parseTopLevelMemberImpl(;)
       listener: beginTopLevelMember(int)
       parseFields(;, null, null, null, null, null, null, ;, Instance of 'SimpleType', implements, DeclarationKind.TopLevel, null, false)
-        listener: beginFields(;)
+        listener: beginFields(DeclarationKind.TopLevel, null, null, null, null, null, null, ;)
         listener: handleIdentifier(int, typeReference)
         listener: handleNoTypeArguments(implements)
         listener: handleType(int, null)
@@ -845,7 +845,7 @@
     parseTopLevelMemberImpl(;)
       listener: beginTopLevelMember(int)
       parseFields(;, null, null, null, null, null, null, ;, Instance of 'SimpleType', import, DeclarationKind.TopLevel, null, false)
-        listener: beginFields(;)
+        listener: beginFields(DeclarationKind.TopLevel, null, null, null, null, null, null, ;)
         listener: handleIdentifier(int, typeReference)
         listener: handleNoTypeArguments(import)
         listener: handleType(int, null)
@@ -871,7 +871,7 @@
       isReservedKeyword(in)
       indicatesMethodOrField(=)
       parseFields(;, null, null, null, null, null, null, ;, Instance of 'SimpleType', in, DeclarationKind.TopLevel, null, true)
-        listener: beginFields(;)
+        listener: beginFields(DeclarationKind.TopLevel, null, null, null, null, null, null, ;)
         listener: handleIdentifier(int, typeReference)
         listener: handleNoTypeArguments(in)
         listener: handleType(int, null)
@@ -897,7 +897,7 @@
     parseTopLevelMemberImpl(;)
       listener: beginTopLevelMember(int)
       parseFields(;, null, null, null, null, null, null, ;, Instance of 'SimpleType', inout, DeclarationKind.TopLevel, null, false)
-        listener: beginFields(;)
+        listener: beginFields(DeclarationKind.TopLevel, null, null, null, null, null, null, ;)
         listener: handleIdentifier(int, typeReference)
         listener: handleNoTypeArguments(inout)
         listener: handleType(int, null)
@@ -921,7 +921,7 @@
     parseTopLevelMemberImpl(;)
       listener: beginTopLevelMember(int)
       parseFields(;, null, null, null, null, null, null, ;, Instance of 'SimpleType', interface, DeclarationKind.TopLevel, null, false)
-        listener: beginFields(;)
+        listener: beginFields(DeclarationKind.TopLevel, null, null, null, null, null, null, ;)
         listener: handleIdentifier(int, typeReference)
         listener: handleNoTypeArguments(interface)
         listener: handleType(int, null)
@@ -947,7 +947,7 @@
       isReservedKeyword(is)
       indicatesMethodOrField(=)
       parseFields(;, null, null, null, null, null, null, ;, Instance of 'SimpleType', is, DeclarationKind.TopLevel, null, true)
-        listener: beginFields(;)
+        listener: beginFields(DeclarationKind.TopLevel, null, null, null, null, null, null, ;)
         listener: handleIdentifier(int, typeReference)
         listener: handleNoTypeArguments(is)
         listener: handleType(int, null)
@@ -973,7 +973,7 @@
     parseTopLevelMemberImpl(;)
       listener: beginTopLevelMember(int)
       parseFields(;, null, null, null, null, null, null, ;, Instance of 'SimpleType', late, DeclarationKind.TopLevel, null, false)
-        listener: beginFields(;)
+        listener: beginFields(DeclarationKind.TopLevel, null, null, null, null, null, null, ;)
         listener: handleIdentifier(int, typeReference)
         listener: handleNoTypeArguments(late)
         listener: handleType(int, null)
@@ -997,7 +997,7 @@
     parseTopLevelMemberImpl(;)
       listener: beginTopLevelMember(int)
       parseFields(;, null, null, null, null, null, null, ;, Instance of 'SimpleType', library, DeclarationKind.TopLevel, null, false)
-        listener: beginFields(;)
+        listener: beginFields(DeclarationKind.TopLevel, null, null, null, null, null, null, ;)
         listener: handleIdentifier(int, typeReference)
         listener: handleNoTypeArguments(library)
         listener: handleType(int, null)
@@ -1021,7 +1021,7 @@
     parseTopLevelMemberImpl(;)
       listener: beginTopLevelMember(int)
       parseFields(;, null, null, null, null, null, null, ;, Instance of 'SimpleType', mixin, DeclarationKind.TopLevel, null, false)
-        listener: beginFields(;)
+        listener: beginFields(DeclarationKind.TopLevel, null, null, null, null, null, null, ;)
         listener: handleIdentifier(int, typeReference)
         listener: handleNoTypeArguments(mixin)
         listener: handleType(int, null)
@@ -1045,7 +1045,7 @@
     parseTopLevelMemberImpl(;)
       listener: beginTopLevelMember(int)
       parseFields(;, null, null, null, null, null, null, ;, Instance of 'SimpleType', native, DeclarationKind.TopLevel, null, false)
-        listener: beginFields(;)
+        listener: beginFields(DeclarationKind.TopLevel, null, null, null, null, null, null, ;)
         listener: handleIdentifier(int, typeReference)
         listener: handleNoTypeArguments(native)
         listener: handleType(int, null)
@@ -1071,7 +1071,7 @@
       isReservedKeyword(new)
       indicatesMethodOrField(=)
       parseFields(;, null, null, null, null, null, null, ;, Instance of 'SimpleType', new, DeclarationKind.TopLevel, null, true)
-        listener: beginFields(;)
+        listener: beginFields(DeclarationKind.TopLevel, null, null, null, null, null, null, ;)
         listener: handleIdentifier(int, typeReference)
         listener: handleNoTypeArguments(new)
         listener: handleType(int, null)
@@ -1099,7 +1099,7 @@
       isReservedKeyword(null)
       indicatesMethodOrField(=)
       parseFields(;, null, null, null, null, null, null, ;, Instance of 'SimpleType', null, DeclarationKind.TopLevel, null, true)
-        listener: beginFields(;)
+        listener: beginFields(DeclarationKind.TopLevel, null, null, null, null, null, null, ;)
         listener: handleIdentifier(int, typeReference)
         listener: handleNoTypeArguments(null)
         listener: handleType(int, null)
@@ -1125,7 +1125,7 @@
     parseTopLevelMemberImpl(;)
       listener: beginTopLevelMember(int)
       parseFields(;, null, null, null, null, null, null, ;, Instance of 'SimpleType', of, DeclarationKind.TopLevel, null, false)
-        listener: beginFields(;)
+        listener: beginFields(DeclarationKind.TopLevel, null, null, null, null, null, null, ;)
         listener: handleIdentifier(int, typeReference)
         listener: handleNoTypeArguments(of)
         listener: handleType(int, null)
@@ -1149,7 +1149,7 @@
     parseTopLevelMemberImpl(;)
       listener: beginTopLevelMember(int)
       parseFields(;, null, null, null, null, null, null, ;, Instance of 'SimpleType', on, DeclarationKind.TopLevel, null, false)
-        listener: beginFields(;)
+        listener: beginFields(DeclarationKind.TopLevel, null, null, null, null, null, null, ;)
         listener: handleIdentifier(int, typeReference)
         listener: handleNoTypeArguments(on)
         listener: handleType(int, null)
@@ -1173,7 +1173,7 @@
     parseTopLevelMemberImpl(;)
       listener: beginTopLevelMember(int)
       parseFields(;, null, null, null, null, null, null, ;, Instance of 'SimpleType', operator, DeclarationKind.TopLevel, null, false)
-        listener: beginFields(;)
+        listener: beginFields(DeclarationKind.TopLevel, null, null, null, null, null, null, ;)
         listener: handleIdentifier(int, typeReference)
         listener: handleNoTypeArguments(operator)
         listener: handleType(int, null)
@@ -1197,7 +1197,7 @@
     parseTopLevelMemberImpl(;)
       listener: beginTopLevelMember(int)
       parseFields(;, null, null, null, null, null, null, ;, Instance of 'SimpleType', out, DeclarationKind.TopLevel, null, false)
-        listener: beginFields(;)
+        listener: beginFields(DeclarationKind.TopLevel, null, null, null, null, null, null, ;)
         listener: handleIdentifier(int, typeReference)
         listener: handleNoTypeArguments(out)
         listener: handleType(int, null)
@@ -1221,7 +1221,7 @@
     parseTopLevelMemberImpl(;)
       listener: beginTopLevelMember(int)
       parseFields(;, null, null, null, null, null, null, ;, Instance of 'SimpleType', part, DeclarationKind.TopLevel, null, false)
-        listener: beginFields(;)
+        listener: beginFields(DeclarationKind.TopLevel, null, null, null, null, null, null, ;)
         listener: handleIdentifier(int, typeReference)
         listener: handleNoTypeArguments(part)
         listener: handleType(int, null)
@@ -1245,7 +1245,7 @@
     parseTopLevelMemberImpl(;)
       listener: beginTopLevelMember(int)
       parseFields(;, null, null, null, null, null, null, ;, Instance of 'SimpleType', patch, DeclarationKind.TopLevel, null, false)
-        listener: beginFields(;)
+        listener: beginFields(DeclarationKind.TopLevel, null, null, null, null, null, null, ;)
         listener: handleIdentifier(int, typeReference)
         listener: handleNoTypeArguments(patch)
         listener: handleType(int, null)
@@ -1269,7 +1269,7 @@
     parseTopLevelMemberImpl(;)
       listener: beginTopLevelMember(int)
       parseFields(;, null, null, null, null, null, null, ;, Instance of 'SimpleType', required, DeclarationKind.TopLevel, null, false)
-        listener: beginFields(;)
+        listener: beginFields(DeclarationKind.TopLevel, null, null, null, null, null, null, ;)
         listener: handleIdentifier(int, typeReference)
         listener: handleNoTypeArguments(required)
         listener: handleType(int, null)
@@ -1295,7 +1295,7 @@
       isReservedKeyword(rethrow)
       indicatesMethodOrField(=)
       parseFields(;, null, null, null, null, null, null, ;, Instance of 'SimpleType', rethrow, DeclarationKind.TopLevel, null, true)
-        listener: beginFields(;)
+        listener: beginFields(DeclarationKind.TopLevel, null, null, null, null, null, null, ;)
         listener: handleIdentifier(int, typeReference)
         listener: handleNoTypeArguments(rethrow)
         listener: handleType(int, null)
@@ -1323,7 +1323,7 @@
       isReservedKeyword(return)
       indicatesMethodOrField(=)
       parseFields(;, null, null, null, null, null, null, ;, Instance of 'SimpleType', return, DeclarationKind.TopLevel, null, true)
-        listener: beginFields(;)
+        listener: beginFields(DeclarationKind.TopLevel, null, null, null, null, null, null, ;)
         listener: handleIdentifier(int, typeReference)
         listener: handleNoTypeArguments(return)
         listener: handleType(int, null)
@@ -1349,7 +1349,7 @@
     parseTopLevelMemberImpl(;)
       listener: beginTopLevelMember(int)
       parseFields(;, null, null, null, null, null, null, ;, Instance of 'SimpleType', set, DeclarationKind.TopLevel, null, false)
-        listener: beginFields(;)
+        listener: beginFields(DeclarationKind.TopLevel, null, null, null, null, null, null, ;)
         listener: handleIdentifier(int, typeReference)
         listener: handleNoTypeArguments(set)
         listener: handleType(int, null)
@@ -1373,7 +1373,7 @@
     parseTopLevelMemberImpl(;)
       listener: beginTopLevelMember(int)
       parseFields(;, null, null, null, null, null, null, ;, Instance of 'SimpleType', show, DeclarationKind.TopLevel, null, false)
-        listener: beginFields(;)
+        listener: beginFields(DeclarationKind.TopLevel, null, null, null, null, null, null, ;)
         listener: handleIdentifier(int, typeReference)
         listener: handleNoTypeArguments(show)
         listener: handleType(int, null)
@@ -1397,7 +1397,7 @@
     parseTopLevelMemberImpl(;)
       listener: beginTopLevelMember(int)
       parseFields(;, null, null, null, null, null, null, ;, Instance of 'SimpleType', source, DeclarationKind.TopLevel, null, false)
-        listener: beginFields(;)
+        listener: beginFields(DeclarationKind.TopLevel, null, null, null, null, null, null, ;)
         listener: handleIdentifier(int, typeReference)
         listener: handleNoTypeArguments(source)
         listener: handleType(int, null)
@@ -1421,7 +1421,7 @@
     parseTopLevelMemberImpl(;)
       listener: beginTopLevelMember(int)
       parseFields(;, null, null, null, null, null, null, ;, Instance of 'SimpleType', static, DeclarationKind.TopLevel, null, false)
-        listener: beginFields(;)
+        listener: beginFields(DeclarationKind.TopLevel, null, null, null, null, null, null, ;)
         listener: handleIdentifier(int, typeReference)
         listener: handleNoTypeArguments(static)
         listener: handleType(int, null)
@@ -1447,7 +1447,7 @@
       isReservedKeyword(super)
       indicatesMethodOrField(=)
       parseFields(;, null, null, null, null, null, null, ;, Instance of 'SimpleType', super, DeclarationKind.TopLevel, null, true)
-        listener: beginFields(;)
+        listener: beginFields(DeclarationKind.TopLevel, null, null, null, null, null, null, ;)
         listener: handleIdentifier(int, typeReference)
         listener: handleNoTypeArguments(super)
         listener: handleType(int, null)
@@ -1475,7 +1475,7 @@
       isReservedKeyword(switch)
       indicatesMethodOrField(=)
       parseFields(;, null, null, null, null, null, null, ;, Instance of 'SimpleType', switch, DeclarationKind.TopLevel, null, true)
-        listener: beginFields(;)
+        listener: beginFields(DeclarationKind.TopLevel, null, null, null, null, null, null, ;)
         listener: handleIdentifier(int, typeReference)
         listener: handleNoTypeArguments(switch)
         listener: handleType(int, null)
@@ -1501,7 +1501,7 @@
     parseTopLevelMemberImpl(;)
       listener: beginTopLevelMember(int)
       parseFields(;, null, null, null, null, null, null, ;, Instance of 'SimpleType', sync, DeclarationKind.TopLevel, null, false)
-        listener: beginFields(;)
+        listener: beginFields(DeclarationKind.TopLevel, null, null, null, null, null, null, ;)
         listener: handleIdentifier(int, typeReference)
         listener: handleNoTypeArguments(sync)
         listener: handleType(int, null)
@@ -1525,7 +1525,7 @@
     parseTopLevelMemberImpl(;)
       listener: beginTopLevelMember(int)
       parseFields(;, null, null, null, null, null, null, ;, Instance of 'SimpleType', this, DeclarationKind.TopLevel, null, false)
-        listener: beginFields(;)
+        listener: beginFields(DeclarationKind.TopLevel, null, null, null, null, null, null, ;)
         listener: handleIdentifier(int, typeReference)
         listener: handleNoTypeArguments(this)
         listener: handleType(int, null)
@@ -1553,7 +1553,7 @@
       isReservedKeyword(throw)
       indicatesMethodOrField(=)
       parseFields(;, null, null, null, null, null, null, ;, Instance of 'SimpleType', throw, DeclarationKind.TopLevel, null, true)
-        listener: beginFields(;)
+        listener: beginFields(DeclarationKind.TopLevel, null, null, null, null, null, null, ;)
         listener: handleIdentifier(int, typeReference)
         listener: handleNoTypeArguments(throw)
         listener: handleType(int, null)
@@ -1581,7 +1581,7 @@
       isReservedKeyword(true)
       indicatesMethodOrField(=)
       parseFields(;, null, null, null, null, null, null, ;, Instance of 'SimpleType', true, DeclarationKind.TopLevel, null, true)
-        listener: beginFields(;)
+        listener: beginFields(DeclarationKind.TopLevel, null, null, null, null, null, null, ;)
         listener: handleIdentifier(int, typeReference)
         listener: handleNoTypeArguments(true)
         listener: handleType(int, null)
@@ -1609,7 +1609,7 @@
       isReservedKeyword(try)
       indicatesMethodOrField(=)
       parseFields(;, null, null, null, null, null, null, ;, Instance of 'SimpleType', try, DeclarationKind.TopLevel, null, true)
-        listener: beginFields(;)
+        listener: beginFields(DeclarationKind.TopLevel, null, null, null, null, null, null, ;)
         listener: handleIdentifier(int, typeReference)
         listener: handleNoTypeArguments(try)
         listener: handleType(int, null)
@@ -1635,7 +1635,7 @@
     parseTopLevelMemberImpl(;)
       listener: beginTopLevelMember(int)
       parseFields(;, null, null, null, null, null, null, ;, Instance of 'SimpleType', typedef, DeclarationKind.TopLevel, null, false)
-        listener: beginFields(;)
+        listener: beginFields(DeclarationKind.TopLevel, null, null, null, null, null, null, ;)
         listener: handleIdentifier(int, typeReference)
         listener: handleNoTypeArguments(typedef)
         listener: handleType(int, null)
@@ -1661,7 +1661,7 @@
       isReservedKeyword(var)
       indicatesMethodOrField(=)
       parseFields(;, null, null, null, null, null, null, ;, Instance of 'SimpleType', var, DeclarationKind.TopLevel, null, true)
-        listener: beginFields(;)
+        listener: beginFields(DeclarationKind.TopLevel, null, null, null, null, null, null, ;)
         listener: handleIdentifier(int, typeReference)
         listener: handleNoTypeArguments(var)
         listener: handleType(int, null)
@@ -1689,7 +1689,7 @@
       isReservedKeyword(void)
       indicatesMethodOrField(=)
       parseFields(;, null, null, null, null, null, null, ;, Instance of 'SimpleType', void, DeclarationKind.TopLevel, null, true)
-        listener: beginFields(;)
+        listener: beginFields(DeclarationKind.TopLevel, null, null, null, null, null, null, ;)
         listener: handleIdentifier(int, typeReference)
         listener: handleNoTypeArguments(void)
         listener: handleType(int, null)
@@ -1717,7 +1717,7 @@
       isReservedKeyword(while)
       indicatesMethodOrField(=)
       parseFields(;, null, null, null, null, null, null, ;, Instance of 'SimpleType', while, DeclarationKind.TopLevel, null, true)
-        listener: beginFields(;)
+        listener: beginFields(DeclarationKind.TopLevel, null, null, null, null, null, null, ;)
         listener: handleIdentifier(int, typeReference)
         listener: handleNoTypeArguments(while)
         listener: handleType(int, null)
@@ -1745,7 +1745,7 @@
       isReservedKeyword(with)
       indicatesMethodOrField(=)
       parseFields(;, null, null, null, null, null, null, ;, Instance of 'SimpleType', with, DeclarationKind.TopLevel, null, true)
-        listener: beginFields(;)
+        listener: beginFields(DeclarationKind.TopLevel, null, null, null, null, null, null, ;)
         listener: handleIdentifier(int, typeReference)
         listener: handleNoTypeArguments(with)
         listener: handleType(int, null)
@@ -1771,7 +1771,7 @@
     parseTopLevelMemberImpl(;)
       listener: beginTopLevelMember(int)
       parseFields(;, null, null, null, null, null, null, ;, Instance of 'SimpleType', yield, DeclarationKind.TopLevel, null, false)
-        listener: beginFields(;)
+        listener: beginFields(DeclarationKind.TopLevel, null, null, null, null, null, null, ;)
         listener: handleIdentifier(int, typeReference)
         listener: handleNoTypeArguments(yield)
         listener: handleType(int, null)
diff --git a/pkg/front_end/parser_testcases/error_recovery/keyword_named_typedefs.dart.expect b/pkg/front_end/parser_testcases/error_recovery/keyword_named_typedefs.dart.expect
index d218353..1f1f6e6 100644
--- a/pkg/front_end/parser_testcases/error_recovery/keyword_named_typedefs.dart.expect
+++ b/pkg/front_end/parser_testcases/error_recovery/keyword_named_typedefs.dart.expect
@@ -468,19 +468,19 @@
   beginMetadataStar(typedef)
   endMetadataStar(0)
   beginUncategorizedTopLevelDeclaration(typedef)
-    beginFunctionTypeAlias(typedef)
+    beginTypedef(typedef)
       handleVoidKeyword(void)
       handleRecoverableError(Message[ExpectedIdentifierButGotKeyword, 'abstract' can't be used as an identifier because it's a keyword., Try renaming this to be an identifier that isn't a keyword., {lexeme: abstract}], abstract, abstract)
       handleIdentifier(abstract, typedefDeclaration)
       handleNoTypeVariables(()
       beginFormalParameters((, MemberKind.FunctionTypeAlias)
       endFormalParameters(0, (, ), MemberKind.FunctionTypeAlias)
-    endFunctionTypeAlias(typedef, null, ;)
+    endTypedef(typedef, null, ;)
   endTopLevelDeclaration(typedef)
   beginMetadataStar(typedef)
   endMetadataStar(0)
   beginUncategorizedTopLevelDeclaration(typedef)
-    beginFunctionTypeAlias(typedef)
+    beginTypedef(typedef)
       handleRecoverableError(Message[ExpectedIdentifierButGotKeyword, 'abstract' can't be used as an identifier because it's a keyword., Try renaming this to be an identifier that isn't a keyword., {lexeme: abstract}], abstract, abstract)
       handleIdentifier(abstract, typedefDeclaration)
       handleNoTypeVariables(=)
@@ -490,24 +490,24 @@
         beginFormalParameters((, MemberKind.GeneralizedFunctionType)
         endFormalParameters(0, (, ), MemberKind.GeneralizedFunctionType)
       endFunctionType(Function, null)
-    endFunctionTypeAlias(typedef, =, ;)
+    endTypedef(typedef, =, ;)
   endTopLevelDeclaration(typedef)
   beginMetadataStar(typedef)
   endMetadataStar(0)
   beginUncategorizedTopLevelDeclaration(typedef)
-    beginFunctionTypeAlias(typedef)
+    beginTypedef(typedef)
       handleVoidKeyword(void)
       handleRecoverableError(Message[ExpectedIdentifierButGotKeyword, 'as' can't be used as an identifier because it's a keyword., Try renaming this to be an identifier that isn't a keyword., {lexeme: as}], as, as)
       handleIdentifier(as, typedefDeclaration)
       handleNoTypeVariables(()
       beginFormalParameters((, MemberKind.FunctionTypeAlias)
       endFormalParameters(0, (, ), MemberKind.FunctionTypeAlias)
-    endFunctionTypeAlias(typedef, null, ;)
+    endTypedef(typedef, null, ;)
   endTopLevelDeclaration(typedef)
   beginMetadataStar(typedef)
   endMetadataStar(0)
   beginUncategorizedTopLevelDeclaration(typedef)
-    beginFunctionTypeAlias(typedef)
+    beginTypedef(typedef)
       handleRecoverableError(Message[ExpectedIdentifierButGotKeyword, 'as' can't be used as an identifier because it's a keyword., Try renaming this to be an identifier that isn't a keyword., {lexeme: as}], as, as)
       handleIdentifier(as, typedefDeclaration)
       handleNoTypeVariables(=)
@@ -517,24 +517,24 @@
         beginFormalParameters((, MemberKind.GeneralizedFunctionType)
         endFormalParameters(0, (, ), MemberKind.GeneralizedFunctionType)
       endFunctionType(Function, null)
-    endFunctionTypeAlias(typedef, =, ;)
+    endTypedef(typedef, =, ;)
   endTopLevelDeclaration(typedef)
   beginMetadataStar(typedef)
   endMetadataStar(0)
   beginUncategorizedTopLevelDeclaration(typedef)
-    beginFunctionTypeAlias(typedef)
+    beginTypedef(typedef)
       handleVoidKeyword(void)
       handleRecoverableError(Message[ExpectedIdentifierButGotKeyword, 'assert' can't be used as an identifier because it's a keyword., Try renaming this to be an identifier that isn't a keyword., {lexeme: assert}], assert, assert)
       handleIdentifier(assert, typedefDeclaration)
       handleNoTypeVariables(()
       beginFormalParameters((, MemberKind.FunctionTypeAlias)
       endFormalParameters(0, (, ), MemberKind.FunctionTypeAlias)
-    endFunctionTypeAlias(typedef, null, ;)
+    endTypedef(typedef, null, ;)
   endTopLevelDeclaration(typedef)
   beginMetadataStar(typedef)
   endMetadataStar(0)
   beginUncategorizedTopLevelDeclaration(typedef)
-    beginFunctionTypeAlias(typedef)
+    beginTypedef(typedef)
       handleRecoverableError(Message[ExpectedIdentifierButGotKeyword, 'assert' can't be used as an identifier because it's a keyword., Try renaming this to be an identifier that isn't a keyword., {lexeme: assert}], assert, assert)
       handleIdentifier(assert, typedefDeclaration)
       handleNoTypeVariables(=)
@@ -544,23 +544,23 @@
         beginFormalParameters((, MemberKind.GeneralizedFunctionType)
         endFormalParameters(0, (, ), MemberKind.GeneralizedFunctionType)
       endFunctionType(Function, null)
-    endFunctionTypeAlias(typedef, =, ;)
+    endTypedef(typedef, =, ;)
   endTopLevelDeclaration(typedef)
   beginMetadataStar(typedef)
   endMetadataStar(0)
   beginUncategorizedTopLevelDeclaration(typedef)
-    beginFunctionTypeAlias(typedef)
+    beginTypedef(typedef)
       handleVoidKeyword(void)
       handleIdentifier(async, typedefDeclaration)
       handleNoTypeVariables(()
       beginFormalParameters((, MemberKind.FunctionTypeAlias)
       endFormalParameters(0, (, ), MemberKind.FunctionTypeAlias)
-    endFunctionTypeAlias(typedef, null, ;)
+    endTypedef(typedef, null, ;)
   endTopLevelDeclaration(typedef)
   beginMetadataStar(typedef)
   endMetadataStar(0)
   beginUncategorizedTopLevelDeclaration(typedef)
-    beginFunctionTypeAlias(typedef)
+    beginTypedef(typedef)
       handleIdentifier(async, typedefDeclaration)
       handleNoTypeVariables(=)
       beginFunctionType(void)
@@ -569,23 +569,23 @@
         beginFormalParameters((, MemberKind.GeneralizedFunctionType)
         endFormalParameters(0, (, ), MemberKind.GeneralizedFunctionType)
       endFunctionType(Function, null)
-    endFunctionTypeAlias(typedef, =, ;)
+    endTypedef(typedef, =, ;)
   endTopLevelDeclaration(typedef)
   beginMetadataStar(typedef)
   endMetadataStar(0)
   beginUncategorizedTopLevelDeclaration(typedef)
-    beginFunctionTypeAlias(typedef)
+    beginTypedef(typedef)
       handleVoidKeyword(void)
       handleIdentifier(await, typedefDeclaration)
       handleNoTypeVariables(()
       beginFormalParameters((, MemberKind.FunctionTypeAlias)
       endFormalParameters(0, (, ), MemberKind.FunctionTypeAlias)
-    endFunctionTypeAlias(typedef, null, ;)
+    endTypedef(typedef, null, ;)
   endTopLevelDeclaration(typedef)
   beginMetadataStar(typedef)
   endMetadataStar(0)
   beginUncategorizedTopLevelDeclaration(typedef)
-    beginFunctionTypeAlias(typedef)
+    beginTypedef(typedef)
       handleIdentifier(await, typedefDeclaration)
       handleNoTypeVariables(=)
       beginFunctionType(void)
@@ -594,24 +594,24 @@
         beginFormalParameters((, MemberKind.GeneralizedFunctionType)
         endFormalParameters(0, (, ), MemberKind.GeneralizedFunctionType)
       endFunctionType(Function, null)
-    endFunctionTypeAlias(typedef, =, ;)
+    endTypedef(typedef, =, ;)
   endTopLevelDeclaration(typedef)
   beginMetadataStar(typedef)
   endMetadataStar(0)
   beginUncategorizedTopLevelDeclaration(typedef)
-    beginFunctionTypeAlias(typedef)
+    beginTypedef(typedef)
       handleVoidKeyword(void)
       handleRecoverableError(Message[ExpectedIdentifierButGotKeyword, 'break' can't be used as an identifier because it's a keyword., Try renaming this to be an identifier that isn't a keyword., {lexeme: break}], break, break)
       handleIdentifier(break, typedefDeclaration)
       handleNoTypeVariables(()
       beginFormalParameters((, MemberKind.FunctionTypeAlias)
       endFormalParameters(0, (, ), MemberKind.FunctionTypeAlias)
-    endFunctionTypeAlias(typedef, null, ;)
+    endTypedef(typedef, null, ;)
   endTopLevelDeclaration(typedef)
   beginMetadataStar(typedef)
   endMetadataStar(0)
   beginUncategorizedTopLevelDeclaration(typedef)
-    beginFunctionTypeAlias(typedef)
+    beginTypedef(typedef)
       handleRecoverableError(Message[ExpectedIdentifierButGotKeyword, 'break' can't be used as an identifier because it's a keyword., Try renaming this to be an identifier that isn't a keyword., {lexeme: break}], break, break)
       handleIdentifier(break, typedefDeclaration)
       handleNoTypeVariables(=)
@@ -621,24 +621,24 @@
         beginFormalParameters((, MemberKind.GeneralizedFunctionType)
         endFormalParameters(0, (, ), MemberKind.GeneralizedFunctionType)
       endFunctionType(Function, null)
-    endFunctionTypeAlias(typedef, =, ;)
+    endTypedef(typedef, =, ;)
   endTopLevelDeclaration(typedef)
   beginMetadataStar(typedef)
   endMetadataStar(0)
   beginUncategorizedTopLevelDeclaration(typedef)
-    beginFunctionTypeAlias(typedef)
+    beginTypedef(typedef)
       handleVoidKeyword(void)
       handleRecoverableError(Message[ExpectedIdentifierButGotKeyword, 'case' can't be used as an identifier because it's a keyword., Try renaming this to be an identifier that isn't a keyword., {lexeme: case}], case, case)
       handleIdentifier(case, typedefDeclaration)
       handleNoTypeVariables(()
       beginFormalParameters((, MemberKind.FunctionTypeAlias)
       endFormalParameters(0, (, ), MemberKind.FunctionTypeAlias)
-    endFunctionTypeAlias(typedef, null, ;)
+    endTypedef(typedef, null, ;)
   endTopLevelDeclaration(typedef)
   beginMetadataStar(typedef)
   endMetadataStar(0)
   beginUncategorizedTopLevelDeclaration(typedef)
-    beginFunctionTypeAlias(typedef)
+    beginTypedef(typedef)
       handleRecoverableError(Message[ExpectedIdentifierButGotKeyword, 'case' can't be used as an identifier because it's a keyword., Try renaming this to be an identifier that isn't a keyword., {lexeme: case}], case, case)
       handleIdentifier(case, typedefDeclaration)
       handleNoTypeVariables(=)
@@ -648,24 +648,24 @@
         beginFormalParameters((, MemberKind.GeneralizedFunctionType)
         endFormalParameters(0, (, ), MemberKind.GeneralizedFunctionType)
       endFunctionType(Function, null)
-    endFunctionTypeAlias(typedef, =, ;)
+    endTypedef(typedef, =, ;)
   endTopLevelDeclaration(typedef)
   beginMetadataStar(typedef)
   endMetadataStar(0)
   beginUncategorizedTopLevelDeclaration(typedef)
-    beginFunctionTypeAlias(typedef)
+    beginTypedef(typedef)
       handleVoidKeyword(void)
       handleRecoverableError(Message[ExpectedIdentifierButGotKeyword, 'catch' can't be used as an identifier because it's a keyword., Try renaming this to be an identifier that isn't a keyword., {lexeme: catch}], catch, catch)
       handleIdentifier(catch, typedefDeclaration)
       handleNoTypeVariables(()
       beginFormalParameters((, MemberKind.FunctionTypeAlias)
       endFormalParameters(0, (, ), MemberKind.FunctionTypeAlias)
-    endFunctionTypeAlias(typedef, null, ;)
+    endTypedef(typedef, null, ;)
   endTopLevelDeclaration(typedef)
   beginMetadataStar(typedef)
   endMetadataStar(0)
   beginUncategorizedTopLevelDeclaration(typedef)
-    beginFunctionTypeAlias(typedef)
+    beginTypedef(typedef)
       handleRecoverableError(Message[ExpectedIdentifierButGotKeyword, 'catch' can't be used as an identifier because it's a keyword., Try renaming this to be an identifier that isn't a keyword., {lexeme: catch}], catch, catch)
       handleIdentifier(catch, typedefDeclaration)
       handleNoTypeVariables(=)
@@ -675,24 +675,24 @@
         beginFormalParameters((, MemberKind.GeneralizedFunctionType)
         endFormalParameters(0, (, ), MemberKind.GeneralizedFunctionType)
       endFunctionType(Function, null)
-    endFunctionTypeAlias(typedef, =, ;)
+    endTypedef(typedef, =, ;)
   endTopLevelDeclaration(typedef)
   beginMetadataStar(typedef)
   endMetadataStar(0)
   beginUncategorizedTopLevelDeclaration(typedef)
-    beginFunctionTypeAlias(typedef)
+    beginTypedef(typedef)
       handleVoidKeyword(void)
       handleRecoverableError(Message[ExpectedIdentifierButGotKeyword, 'class' can't be used as an identifier because it's a keyword., Try renaming this to be an identifier that isn't a keyword., {lexeme: class}], class, class)
       handleIdentifier(class, typedefDeclaration)
       handleNoTypeVariables(()
       beginFormalParameters((, MemberKind.FunctionTypeAlias)
       endFormalParameters(0, (, ), MemberKind.FunctionTypeAlias)
-    endFunctionTypeAlias(typedef, null, ;)
+    endTypedef(typedef, null, ;)
   endTopLevelDeclaration(typedef)
   beginMetadataStar(typedef)
   endMetadataStar(0)
   beginUncategorizedTopLevelDeclaration(typedef)
-    beginFunctionTypeAlias(typedef)
+    beginTypedef(typedef)
       handleRecoverableError(Message[ExpectedIdentifierButGotKeyword, 'class' can't be used as an identifier because it's a keyword., Try renaming this to be an identifier that isn't a keyword., {lexeme: class}], class, class)
       handleIdentifier(class, typedefDeclaration)
       handleNoTypeVariables(=)
@@ -702,24 +702,24 @@
         beginFormalParameters((, MemberKind.GeneralizedFunctionType)
         endFormalParameters(0, (, ), MemberKind.GeneralizedFunctionType)
       endFunctionType(Function, null)
-    endFunctionTypeAlias(typedef, =, ;)
+    endTypedef(typedef, =, ;)
   endTopLevelDeclaration(typedef)
   beginMetadataStar(typedef)
   endMetadataStar(0)
   beginUncategorizedTopLevelDeclaration(typedef)
-    beginFunctionTypeAlias(typedef)
+    beginTypedef(typedef)
       handleVoidKeyword(void)
       handleRecoverableError(Message[ExpectedIdentifierButGotKeyword, 'const' can't be used as an identifier because it's a keyword., Try renaming this to be an identifier that isn't a keyword., {lexeme: const}], const, const)
       handleIdentifier(const, typedefDeclaration)
       handleNoTypeVariables(()
       beginFormalParameters((, MemberKind.FunctionTypeAlias)
       endFormalParameters(0, (, ), MemberKind.FunctionTypeAlias)
-    endFunctionTypeAlias(typedef, null, ;)
+    endTypedef(typedef, null, ;)
   endTopLevelDeclaration(typedef)
   beginMetadataStar(typedef)
   endMetadataStar(0)
   beginUncategorizedTopLevelDeclaration(typedef)
-    beginFunctionTypeAlias(typedef)
+    beginTypedef(typedef)
       handleRecoverableError(Message[ExpectedIdentifierButGotKeyword, 'const' can't be used as an identifier because it's a keyword., Try renaming this to be an identifier that isn't a keyword., {lexeme: const}], const, const)
       handleIdentifier(const, typedefDeclaration)
       handleNoTypeVariables(=)
@@ -729,24 +729,24 @@
         beginFormalParameters((, MemberKind.GeneralizedFunctionType)
         endFormalParameters(0, (, ), MemberKind.GeneralizedFunctionType)
       endFunctionType(Function, null)
-    endFunctionTypeAlias(typedef, =, ;)
+    endTypedef(typedef, =, ;)
   endTopLevelDeclaration(typedef)
   beginMetadataStar(typedef)
   endMetadataStar(0)
   beginUncategorizedTopLevelDeclaration(typedef)
-    beginFunctionTypeAlias(typedef)
+    beginTypedef(typedef)
       handleVoidKeyword(void)
       handleRecoverableError(Message[ExpectedIdentifierButGotKeyword, 'continue' can't be used as an identifier because it's a keyword., Try renaming this to be an identifier that isn't a keyword., {lexeme: continue}], continue, continue)
       handleIdentifier(continue, typedefDeclaration)
       handleNoTypeVariables(()
       beginFormalParameters((, MemberKind.FunctionTypeAlias)
       endFormalParameters(0, (, ), MemberKind.FunctionTypeAlias)
-    endFunctionTypeAlias(typedef, null, ;)
+    endTypedef(typedef, null, ;)
   endTopLevelDeclaration(typedef)
   beginMetadataStar(typedef)
   endMetadataStar(0)
   beginUncategorizedTopLevelDeclaration(typedef)
-    beginFunctionTypeAlias(typedef)
+    beginTypedef(typedef)
       handleRecoverableError(Message[ExpectedIdentifierButGotKeyword, 'continue' can't be used as an identifier because it's a keyword., Try renaming this to be an identifier that isn't a keyword., {lexeme: continue}], continue, continue)
       handleIdentifier(continue, typedefDeclaration)
       handleNoTypeVariables(=)
@@ -756,24 +756,24 @@
         beginFormalParameters((, MemberKind.GeneralizedFunctionType)
         endFormalParameters(0, (, ), MemberKind.GeneralizedFunctionType)
       endFunctionType(Function, null)
-    endFunctionTypeAlias(typedef, =, ;)
+    endTypedef(typedef, =, ;)
   endTopLevelDeclaration(typedef)
   beginMetadataStar(typedef)
   endMetadataStar(0)
   beginUncategorizedTopLevelDeclaration(typedef)
-    beginFunctionTypeAlias(typedef)
+    beginTypedef(typedef)
       handleVoidKeyword(void)
       handleRecoverableError(Message[ExpectedIdentifierButGotKeyword, 'covariant' can't be used as an identifier because it's a keyword., Try renaming this to be an identifier that isn't a keyword., {lexeme: covariant}], covariant, covariant)
       handleIdentifier(covariant, typedefDeclaration)
       handleNoTypeVariables(()
       beginFormalParameters((, MemberKind.FunctionTypeAlias)
       endFormalParameters(0, (, ), MemberKind.FunctionTypeAlias)
-    endFunctionTypeAlias(typedef, null, ;)
+    endTypedef(typedef, null, ;)
   endTopLevelDeclaration(typedef)
   beginMetadataStar(typedef)
   endMetadataStar(0)
   beginUncategorizedTopLevelDeclaration(typedef)
-    beginFunctionTypeAlias(typedef)
+    beginTypedef(typedef)
       handleRecoverableError(Message[ExpectedIdentifierButGotKeyword, 'covariant' can't be used as an identifier because it's a keyword., Try renaming this to be an identifier that isn't a keyword., {lexeme: covariant}], covariant, covariant)
       handleIdentifier(covariant, typedefDeclaration)
       handleNoTypeVariables(=)
@@ -783,24 +783,24 @@
         beginFormalParameters((, MemberKind.GeneralizedFunctionType)
         endFormalParameters(0, (, ), MemberKind.GeneralizedFunctionType)
       endFunctionType(Function, null)
-    endFunctionTypeAlias(typedef, =, ;)
+    endTypedef(typedef, =, ;)
   endTopLevelDeclaration(typedef)
   beginMetadataStar(typedef)
   endMetadataStar(0)
   beginUncategorizedTopLevelDeclaration(typedef)
-    beginFunctionTypeAlias(typedef)
+    beginTypedef(typedef)
       handleVoidKeyword(void)
       handleRecoverableError(Message[ExpectedIdentifierButGotKeyword, 'default' can't be used as an identifier because it's a keyword., Try renaming this to be an identifier that isn't a keyword., {lexeme: default}], default, default)
       handleIdentifier(default, typedefDeclaration)
       handleNoTypeVariables(()
       beginFormalParameters((, MemberKind.FunctionTypeAlias)
       endFormalParameters(0, (, ), MemberKind.FunctionTypeAlias)
-    endFunctionTypeAlias(typedef, null, ;)
+    endTypedef(typedef, null, ;)
   endTopLevelDeclaration(typedef)
   beginMetadataStar(typedef)
   endMetadataStar(0)
   beginUncategorizedTopLevelDeclaration(typedef)
-    beginFunctionTypeAlias(typedef)
+    beginTypedef(typedef)
       handleRecoverableError(Message[ExpectedIdentifierButGotKeyword, 'default' can't be used as an identifier because it's a keyword., Try renaming this to be an identifier that isn't a keyword., {lexeme: default}], default, default)
       handleIdentifier(default, typedefDeclaration)
       handleNoTypeVariables(=)
@@ -810,24 +810,24 @@
         beginFormalParameters((, MemberKind.GeneralizedFunctionType)
         endFormalParameters(0, (, ), MemberKind.GeneralizedFunctionType)
       endFunctionType(Function, null)
-    endFunctionTypeAlias(typedef, =, ;)
+    endTypedef(typedef, =, ;)
   endTopLevelDeclaration(typedef)
   beginMetadataStar(typedef)
   endMetadataStar(0)
   beginUncategorizedTopLevelDeclaration(typedef)
-    beginFunctionTypeAlias(typedef)
+    beginTypedef(typedef)
       handleVoidKeyword(void)
       handleRecoverableError(Message[ExpectedIdentifierButGotKeyword, 'deferred' can't be used as an identifier because it's a keyword., Try renaming this to be an identifier that isn't a keyword., {lexeme: deferred}], deferred, deferred)
       handleIdentifier(deferred, typedefDeclaration)
       handleNoTypeVariables(()
       beginFormalParameters((, MemberKind.FunctionTypeAlias)
       endFormalParameters(0, (, ), MemberKind.FunctionTypeAlias)
-    endFunctionTypeAlias(typedef, null, ;)
+    endTypedef(typedef, null, ;)
   endTopLevelDeclaration(typedef)
   beginMetadataStar(typedef)
   endMetadataStar(0)
   beginUncategorizedTopLevelDeclaration(typedef)
-    beginFunctionTypeAlias(typedef)
+    beginTypedef(typedef)
       handleRecoverableError(Message[ExpectedIdentifierButGotKeyword, 'deferred' can't be used as an identifier because it's a keyword., Try renaming this to be an identifier that isn't a keyword., {lexeme: deferred}], deferred, deferred)
       handleIdentifier(deferred, typedefDeclaration)
       handleNoTypeVariables(=)
@@ -837,24 +837,24 @@
         beginFormalParameters((, MemberKind.GeneralizedFunctionType)
         endFormalParameters(0, (, ), MemberKind.GeneralizedFunctionType)
       endFunctionType(Function, null)
-    endFunctionTypeAlias(typedef, =, ;)
+    endTypedef(typedef, =, ;)
   endTopLevelDeclaration(typedef)
   beginMetadataStar(typedef)
   endMetadataStar(0)
   beginUncategorizedTopLevelDeclaration(typedef)
-    beginFunctionTypeAlias(typedef)
+    beginTypedef(typedef)
       handleVoidKeyword(void)
       handleRecoverableError(Message[ExpectedIdentifierButGotKeyword, 'do' can't be used as an identifier because it's a keyword., Try renaming this to be an identifier that isn't a keyword., {lexeme: do}], do, do)
       handleIdentifier(do, typedefDeclaration)
       handleNoTypeVariables(()
       beginFormalParameters((, MemberKind.FunctionTypeAlias)
       endFormalParameters(0, (, ), MemberKind.FunctionTypeAlias)
-    endFunctionTypeAlias(typedef, null, ;)
+    endTypedef(typedef, null, ;)
   endTopLevelDeclaration(typedef)
   beginMetadataStar(typedef)
   endMetadataStar(0)
   beginUncategorizedTopLevelDeclaration(typedef)
-    beginFunctionTypeAlias(typedef)
+    beginTypedef(typedef)
       handleRecoverableError(Message[ExpectedIdentifierButGotKeyword, 'do' can't be used as an identifier because it's a keyword., Try renaming this to be an identifier that isn't a keyword., {lexeme: do}], do, do)
       handleIdentifier(do, typedefDeclaration)
       handleNoTypeVariables(=)
@@ -864,24 +864,24 @@
         beginFormalParameters((, MemberKind.GeneralizedFunctionType)
         endFormalParameters(0, (, ), MemberKind.GeneralizedFunctionType)
       endFunctionType(Function, null)
-    endFunctionTypeAlias(typedef, =, ;)
+    endTypedef(typedef, =, ;)
   endTopLevelDeclaration(typedef)
   beginMetadataStar(typedef)
   endMetadataStar(0)
   beginUncategorizedTopLevelDeclaration(typedef)
-    beginFunctionTypeAlias(typedef)
+    beginTypedef(typedef)
       handleVoidKeyword(void)
       handleRecoverableError(Message[ExpectedIdentifierButGotKeyword, 'dynamic' can't be used as an identifier because it's a keyword., Try renaming this to be an identifier that isn't a keyword., {lexeme: dynamic}], dynamic, dynamic)
       handleIdentifier(dynamic, typedefDeclaration)
       handleNoTypeVariables(()
       beginFormalParameters((, MemberKind.FunctionTypeAlias)
       endFormalParameters(0, (, ), MemberKind.FunctionTypeAlias)
-    endFunctionTypeAlias(typedef, null, ;)
+    endTypedef(typedef, null, ;)
   endTopLevelDeclaration(typedef)
   beginMetadataStar(typedef)
   endMetadataStar(0)
   beginUncategorizedTopLevelDeclaration(typedef)
-    beginFunctionTypeAlias(typedef)
+    beginTypedef(typedef)
       handleRecoverableError(Message[ExpectedIdentifierButGotKeyword, 'dynamic' can't be used as an identifier because it's a keyword., Try renaming this to be an identifier that isn't a keyword., {lexeme: dynamic}], dynamic, dynamic)
       handleIdentifier(dynamic, typedefDeclaration)
       handleNoTypeVariables(=)
@@ -891,24 +891,24 @@
         beginFormalParameters((, MemberKind.GeneralizedFunctionType)
         endFormalParameters(0, (, ), MemberKind.GeneralizedFunctionType)
       endFunctionType(Function, null)
-    endFunctionTypeAlias(typedef, =, ;)
+    endTypedef(typedef, =, ;)
   endTopLevelDeclaration(typedef)
   beginMetadataStar(typedef)
   endMetadataStar(0)
   beginUncategorizedTopLevelDeclaration(typedef)
-    beginFunctionTypeAlias(typedef)
+    beginTypedef(typedef)
       handleVoidKeyword(void)
       handleRecoverableError(Message[ExpectedIdentifierButGotKeyword, 'else' can't be used as an identifier because it's a keyword., Try renaming this to be an identifier that isn't a keyword., {lexeme: else}], else, else)
       handleIdentifier(else, typedefDeclaration)
       handleNoTypeVariables(()
       beginFormalParameters((, MemberKind.FunctionTypeAlias)
       endFormalParameters(0, (, ), MemberKind.FunctionTypeAlias)
-    endFunctionTypeAlias(typedef, null, ;)
+    endTypedef(typedef, null, ;)
   endTopLevelDeclaration(typedef)
   beginMetadataStar(typedef)
   endMetadataStar(0)
   beginUncategorizedTopLevelDeclaration(typedef)
-    beginFunctionTypeAlias(typedef)
+    beginTypedef(typedef)
       handleRecoverableError(Message[ExpectedIdentifierButGotKeyword, 'else' can't be used as an identifier because it's a keyword., Try renaming this to be an identifier that isn't a keyword., {lexeme: else}], else, else)
       handleIdentifier(else, typedefDeclaration)
       handleNoTypeVariables(=)
@@ -918,24 +918,24 @@
         beginFormalParameters((, MemberKind.GeneralizedFunctionType)
         endFormalParameters(0, (, ), MemberKind.GeneralizedFunctionType)
       endFunctionType(Function, null)
-    endFunctionTypeAlias(typedef, =, ;)
+    endTypedef(typedef, =, ;)
   endTopLevelDeclaration(typedef)
   beginMetadataStar(typedef)
   endMetadataStar(0)
   beginUncategorizedTopLevelDeclaration(typedef)
-    beginFunctionTypeAlias(typedef)
+    beginTypedef(typedef)
       handleVoidKeyword(void)
       handleRecoverableError(Message[ExpectedIdentifierButGotKeyword, 'enum' can't be used as an identifier because it's a keyword., Try renaming this to be an identifier that isn't a keyword., {lexeme: enum}], enum, enum)
       handleIdentifier(enum, typedefDeclaration)
       handleNoTypeVariables(()
       beginFormalParameters((, MemberKind.FunctionTypeAlias)
       endFormalParameters(0, (, ), MemberKind.FunctionTypeAlias)
-    endFunctionTypeAlias(typedef, null, ;)
+    endTypedef(typedef, null, ;)
   endTopLevelDeclaration(typedef)
   beginMetadataStar(typedef)
   endMetadataStar(0)
   beginUncategorizedTopLevelDeclaration(typedef)
-    beginFunctionTypeAlias(typedef)
+    beginTypedef(typedef)
       handleRecoverableError(Message[ExpectedIdentifierButGotKeyword, 'enum' can't be used as an identifier because it's a keyword., Try renaming this to be an identifier that isn't a keyword., {lexeme: enum}], enum, enum)
       handleIdentifier(enum, typedefDeclaration)
       handleNoTypeVariables(=)
@@ -945,24 +945,24 @@
         beginFormalParameters((, MemberKind.GeneralizedFunctionType)
         endFormalParameters(0, (, ), MemberKind.GeneralizedFunctionType)
       endFunctionType(Function, null)
-    endFunctionTypeAlias(typedef, =, ;)
+    endTypedef(typedef, =, ;)
   endTopLevelDeclaration(typedef)
   beginMetadataStar(typedef)
   endMetadataStar(0)
   beginUncategorizedTopLevelDeclaration(typedef)
-    beginFunctionTypeAlias(typedef)
+    beginTypedef(typedef)
       handleVoidKeyword(void)
       handleRecoverableError(Message[ExpectedIdentifierButGotKeyword, 'export' can't be used as an identifier because it's a keyword., Try renaming this to be an identifier that isn't a keyword., {lexeme: export}], export, export)
       handleIdentifier(export, typedefDeclaration)
       handleNoTypeVariables(()
       beginFormalParameters((, MemberKind.FunctionTypeAlias)
       endFormalParameters(0, (, ), MemberKind.FunctionTypeAlias)
-    endFunctionTypeAlias(typedef, null, ;)
+    endTypedef(typedef, null, ;)
   endTopLevelDeclaration(typedef)
   beginMetadataStar(typedef)
   endMetadataStar(0)
   beginUncategorizedTopLevelDeclaration(typedef)
-    beginFunctionTypeAlias(typedef)
+    beginTypedef(typedef)
       handleRecoverableError(Message[ExpectedIdentifierButGotKeyword, 'export' can't be used as an identifier because it's a keyword., Try renaming this to be an identifier that isn't a keyword., {lexeme: export}], export, export)
       handleIdentifier(export, typedefDeclaration)
       handleNoTypeVariables(=)
@@ -972,24 +972,24 @@
         beginFormalParameters((, MemberKind.GeneralizedFunctionType)
         endFormalParameters(0, (, ), MemberKind.GeneralizedFunctionType)
       endFunctionType(Function, null)
-    endFunctionTypeAlias(typedef, =, ;)
+    endTypedef(typedef, =, ;)
   endTopLevelDeclaration(typedef)
   beginMetadataStar(typedef)
   endMetadataStar(0)
   beginUncategorizedTopLevelDeclaration(typedef)
-    beginFunctionTypeAlias(typedef)
+    beginTypedef(typedef)
       handleVoidKeyword(void)
       handleRecoverableError(Message[ExpectedIdentifierButGotKeyword, 'extends' can't be used as an identifier because it's a keyword., Try renaming this to be an identifier that isn't a keyword., {lexeme: extends}], extends, extends)
       handleIdentifier(extends, typedefDeclaration)
       handleNoTypeVariables(()
       beginFormalParameters((, MemberKind.FunctionTypeAlias)
       endFormalParameters(0, (, ), MemberKind.FunctionTypeAlias)
-    endFunctionTypeAlias(typedef, null, ;)
+    endTypedef(typedef, null, ;)
   endTopLevelDeclaration(typedef)
   beginMetadataStar(typedef)
   endMetadataStar(0)
   beginUncategorizedTopLevelDeclaration(typedef)
-    beginFunctionTypeAlias(typedef)
+    beginTypedef(typedef)
       handleRecoverableError(Message[ExpectedIdentifierButGotKeyword, 'extends' can't be used as an identifier because it's a keyword., Try renaming this to be an identifier that isn't a keyword., {lexeme: extends}], extends, extends)
       handleIdentifier(extends, typedefDeclaration)
       handleNoTypeVariables(=)
@@ -999,24 +999,24 @@
         beginFormalParameters((, MemberKind.GeneralizedFunctionType)
         endFormalParameters(0, (, ), MemberKind.GeneralizedFunctionType)
       endFunctionType(Function, null)
-    endFunctionTypeAlias(typedef, =, ;)
+    endTypedef(typedef, =, ;)
   endTopLevelDeclaration(typedef)
   beginMetadataStar(typedef)
   endMetadataStar(0)
   beginUncategorizedTopLevelDeclaration(typedef)
-    beginFunctionTypeAlias(typedef)
+    beginTypedef(typedef)
       handleVoidKeyword(void)
       handleRecoverableError(Message[ExpectedIdentifierButGotKeyword, 'extension' can't be used as an identifier because it's a keyword., Try renaming this to be an identifier that isn't a keyword., {lexeme: extension}], extension, extension)
       handleIdentifier(extension, typedefDeclaration)
       handleNoTypeVariables(()
       beginFormalParameters((, MemberKind.FunctionTypeAlias)
       endFormalParameters(0, (, ), MemberKind.FunctionTypeAlias)
-    endFunctionTypeAlias(typedef, null, ;)
+    endTypedef(typedef, null, ;)
   endTopLevelDeclaration(typedef)
   beginMetadataStar(typedef)
   endMetadataStar(0)
   beginUncategorizedTopLevelDeclaration(typedef)
-    beginFunctionTypeAlias(typedef)
+    beginTypedef(typedef)
       handleRecoverableError(Message[ExpectedIdentifierButGotKeyword, 'extension' can't be used as an identifier because it's a keyword., Try renaming this to be an identifier that isn't a keyword., {lexeme: extension}], extension, extension)
       handleIdentifier(extension, typedefDeclaration)
       handleNoTypeVariables(=)
@@ -1026,24 +1026,24 @@
         beginFormalParameters((, MemberKind.GeneralizedFunctionType)
         endFormalParameters(0, (, ), MemberKind.GeneralizedFunctionType)
       endFunctionType(Function, null)
-    endFunctionTypeAlias(typedef, =, ;)
+    endTypedef(typedef, =, ;)
   endTopLevelDeclaration(typedef)
   beginMetadataStar(typedef)
   endMetadataStar(0)
   beginUncategorizedTopLevelDeclaration(typedef)
-    beginFunctionTypeAlias(typedef)
+    beginTypedef(typedef)
       handleVoidKeyword(void)
       handleRecoverableError(Message[ExpectedIdentifierButGotKeyword, 'external' can't be used as an identifier because it's a keyword., Try renaming this to be an identifier that isn't a keyword., {lexeme: external}], external, external)
       handleIdentifier(external, typedefDeclaration)
       handleNoTypeVariables(()
       beginFormalParameters((, MemberKind.FunctionTypeAlias)
       endFormalParameters(0, (, ), MemberKind.FunctionTypeAlias)
-    endFunctionTypeAlias(typedef, null, ;)
+    endTypedef(typedef, null, ;)
   endTopLevelDeclaration(typedef)
   beginMetadataStar(typedef)
   endMetadataStar(0)
   beginUncategorizedTopLevelDeclaration(typedef)
-    beginFunctionTypeAlias(typedef)
+    beginTypedef(typedef)
       handleRecoverableError(Message[ExpectedIdentifierButGotKeyword, 'external' can't be used as an identifier because it's a keyword., Try renaming this to be an identifier that isn't a keyword., {lexeme: external}], external, external)
       handleIdentifier(external, typedefDeclaration)
       handleNoTypeVariables(=)
@@ -1053,24 +1053,24 @@
         beginFormalParameters((, MemberKind.GeneralizedFunctionType)
         endFormalParameters(0, (, ), MemberKind.GeneralizedFunctionType)
       endFunctionType(Function, null)
-    endFunctionTypeAlias(typedef, =, ;)
+    endTypedef(typedef, =, ;)
   endTopLevelDeclaration(typedef)
   beginMetadataStar(typedef)
   endMetadataStar(0)
   beginUncategorizedTopLevelDeclaration(typedef)
-    beginFunctionTypeAlias(typedef)
+    beginTypedef(typedef)
       handleVoidKeyword(void)
       handleRecoverableError(Message[ExpectedIdentifierButGotKeyword, 'factory' can't be used as an identifier because it's a keyword., Try renaming this to be an identifier that isn't a keyword., {lexeme: factory}], factory, factory)
       handleIdentifier(factory, typedefDeclaration)
       handleNoTypeVariables(()
       beginFormalParameters((, MemberKind.FunctionTypeAlias)
       endFormalParameters(0, (, ), MemberKind.FunctionTypeAlias)
-    endFunctionTypeAlias(typedef, null, ;)
+    endTypedef(typedef, null, ;)
   endTopLevelDeclaration(typedef)
   beginMetadataStar(typedef)
   endMetadataStar(0)
   beginUncategorizedTopLevelDeclaration(typedef)
-    beginFunctionTypeAlias(typedef)
+    beginTypedef(typedef)
       handleRecoverableError(Message[ExpectedIdentifierButGotKeyword, 'factory' can't be used as an identifier because it's a keyword., Try renaming this to be an identifier that isn't a keyword., {lexeme: factory}], factory, factory)
       handleIdentifier(factory, typedefDeclaration)
       handleNoTypeVariables(=)
@@ -1080,24 +1080,24 @@
         beginFormalParameters((, MemberKind.GeneralizedFunctionType)
         endFormalParameters(0, (, ), MemberKind.GeneralizedFunctionType)
       endFunctionType(Function, null)
-    endFunctionTypeAlias(typedef, =, ;)
+    endTypedef(typedef, =, ;)
   endTopLevelDeclaration(typedef)
   beginMetadataStar(typedef)
   endMetadataStar(0)
   beginUncategorizedTopLevelDeclaration(typedef)
-    beginFunctionTypeAlias(typedef)
+    beginTypedef(typedef)
       handleVoidKeyword(void)
       handleRecoverableError(Message[ExpectedIdentifierButGotKeyword, 'false' can't be used as an identifier because it's a keyword., Try renaming this to be an identifier that isn't a keyword., {lexeme: false}], false, false)
       handleIdentifier(false, typedefDeclaration)
       handleNoTypeVariables(()
       beginFormalParameters((, MemberKind.FunctionTypeAlias)
       endFormalParameters(0, (, ), MemberKind.FunctionTypeAlias)
-    endFunctionTypeAlias(typedef, null, ;)
+    endTypedef(typedef, null, ;)
   endTopLevelDeclaration(typedef)
   beginMetadataStar(typedef)
   endMetadataStar(0)
   beginUncategorizedTopLevelDeclaration(typedef)
-    beginFunctionTypeAlias(typedef)
+    beginTypedef(typedef)
       handleRecoverableError(Message[ExpectedIdentifierButGotKeyword, 'false' can't be used as an identifier because it's a keyword., Try renaming this to be an identifier that isn't a keyword., {lexeme: false}], false, false)
       handleIdentifier(false, typedefDeclaration)
       handleNoTypeVariables(=)
@@ -1107,24 +1107,24 @@
         beginFormalParameters((, MemberKind.GeneralizedFunctionType)
         endFormalParameters(0, (, ), MemberKind.GeneralizedFunctionType)
       endFunctionType(Function, null)
-    endFunctionTypeAlias(typedef, =, ;)
+    endTypedef(typedef, =, ;)
   endTopLevelDeclaration(typedef)
   beginMetadataStar(typedef)
   endMetadataStar(0)
   beginUncategorizedTopLevelDeclaration(typedef)
-    beginFunctionTypeAlias(typedef)
+    beginTypedef(typedef)
       handleVoidKeyword(void)
       handleRecoverableError(Message[ExpectedIdentifierButGotKeyword, 'final' can't be used as an identifier because it's a keyword., Try renaming this to be an identifier that isn't a keyword., {lexeme: final}], final, final)
       handleIdentifier(final, typedefDeclaration)
       handleNoTypeVariables(()
       beginFormalParameters((, MemberKind.FunctionTypeAlias)
       endFormalParameters(0, (, ), MemberKind.FunctionTypeAlias)
-    endFunctionTypeAlias(typedef, null, ;)
+    endTypedef(typedef, null, ;)
   endTopLevelDeclaration(typedef)
   beginMetadataStar(typedef)
   endMetadataStar(0)
   beginUncategorizedTopLevelDeclaration(typedef)
-    beginFunctionTypeAlias(typedef)
+    beginTypedef(typedef)
       handleRecoverableError(Message[ExpectedIdentifierButGotKeyword, 'final' can't be used as an identifier because it's a keyword., Try renaming this to be an identifier that isn't a keyword., {lexeme: final}], final, final)
       handleIdentifier(final, typedefDeclaration)
       handleNoTypeVariables(=)
@@ -1134,24 +1134,24 @@
         beginFormalParameters((, MemberKind.GeneralizedFunctionType)
         endFormalParameters(0, (, ), MemberKind.GeneralizedFunctionType)
       endFunctionType(Function, null)
-    endFunctionTypeAlias(typedef, =, ;)
+    endTypedef(typedef, =, ;)
   endTopLevelDeclaration(typedef)
   beginMetadataStar(typedef)
   endMetadataStar(0)
   beginUncategorizedTopLevelDeclaration(typedef)
-    beginFunctionTypeAlias(typedef)
+    beginTypedef(typedef)
       handleVoidKeyword(void)
       handleRecoverableError(Message[ExpectedIdentifierButGotKeyword, 'finally' can't be used as an identifier because it's a keyword., Try renaming this to be an identifier that isn't a keyword., {lexeme: finally}], finally, finally)
       handleIdentifier(finally, typedefDeclaration)
       handleNoTypeVariables(()
       beginFormalParameters((, MemberKind.FunctionTypeAlias)
       endFormalParameters(0, (, ), MemberKind.FunctionTypeAlias)
-    endFunctionTypeAlias(typedef, null, ;)
+    endTypedef(typedef, null, ;)
   endTopLevelDeclaration(typedef)
   beginMetadataStar(typedef)
   endMetadataStar(0)
   beginUncategorizedTopLevelDeclaration(typedef)
-    beginFunctionTypeAlias(typedef)
+    beginTypedef(typedef)
       handleRecoverableError(Message[ExpectedIdentifierButGotKeyword, 'finally' can't be used as an identifier because it's a keyword., Try renaming this to be an identifier that isn't a keyword., {lexeme: finally}], finally, finally)
       handleIdentifier(finally, typedefDeclaration)
       handleNoTypeVariables(=)
@@ -1161,24 +1161,24 @@
         beginFormalParameters((, MemberKind.GeneralizedFunctionType)
         endFormalParameters(0, (, ), MemberKind.GeneralizedFunctionType)
       endFunctionType(Function, null)
-    endFunctionTypeAlias(typedef, =, ;)
+    endTypedef(typedef, =, ;)
   endTopLevelDeclaration(typedef)
   beginMetadataStar(typedef)
   endMetadataStar(0)
   beginUncategorizedTopLevelDeclaration(typedef)
-    beginFunctionTypeAlias(typedef)
+    beginTypedef(typedef)
       handleVoidKeyword(void)
       handleRecoverableError(Message[ExpectedIdentifierButGotKeyword, 'for' can't be used as an identifier because it's a keyword., Try renaming this to be an identifier that isn't a keyword., {lexeme: for}], for, for)
       handleIdentifier(for, typedefDeclaration)
       handleNoTypeVariables(()
       beginFormalParameters((, MemberKind.FunctionTypeAlias)
       endFormalParameters(0, (, ), MemberKind.FunctionTypeAlias)
-    endFunctionTypeAlias(typedef, null, ;)
+    endTypedef(typedef, null, ;)
   endTopLevelDeclaration(typedef)
   beginMetadataStar(typedef)
   endMetadataStar(0)
   beginUncategorizedTopLevelDeclaration(typedef)
-    beginFunctionTypeAlias(typedef)
+    beginTypedef(typedef)
       handleRecoverableError(Message[ExpectedIdentifierButGotKeyword, 'for' can't be used as an identifier because it's a keyword., Try renaming this to be an identifier that isn't a keyword., {lexeme: for}], for, for)
       handleIdentifier(for, typedefDeclaration)
       handleNoTypeVariables(=)
@@ -1188,24 +1188,24 @@
         beginFormalParameters((, MemberKind.GeneralizedFunctionType)
         endFormalParameters(0, (, ), MemberKind.GeneralizedFunctionType)
       endFunctionType(Function, null)
-    endFunctionTypeAlias(typedef, =, ;)
+    endTypedef(typedef, =, ;)
   endTopLevelDeclaration(typedef)
   beginMetadataStar(typedef)
   endMetadataStar(0)
   beginUncategorizedTopLevelDeclaration(typedef)
-    beginFunctionTypeAlias(typedef)
+    beginTypedef(typedef)
       handleVoidKeyword(void)
       handleRecoverableError(Message[ExpectedIdentifierButGotKeyword, 'Function' can't be used as an identifier because it's a keyword., Try renaming this to be an identifier that isn't a keyword., {lexeme: Function}], Function, Function)
       handleIdentifier(Function, typedefDeclaration)
       handleNoTypeVariables(()
       beginFormalParameters((, MemberKind.FunctionTypeAlias)
       endFormalParameters(0, (, ), MemberKind.FunctionTypeAlias)
-    endFunctionTypeAlias(typedef, null, ;)
+    endTypedef(typedef, null, ;)
   endTopLevelDeclaration(typedef)
   beginMetadataStar(typedef)
   endMetadataStar(0)
   beginUncategorizedTopLevelDeclaration(typedef)
-    beginFunctionTypeAlias(typedef)
+    beginTypedef(typedef)
       handleRecoverableError(Message[ExpectedIdentifierButGotKeyword, 'Function' can't be used as an identifier because it's a keyword., Try renaming this to be an identifier that isn't a keyword., {lexeme: Function}], Function, Function)
       handleIdentifier(Function, typedefDeclaration)
       handleNoTypeVariables(=)
@@ -1215,24 +1215,24 @@
         beginFormalParameters((, MemberKind.GeneralizedFunctionType)
         endFormalParameters(0, (, ), MemberKind.GeneralizedFunctionType)
       endFunctionType(Function, null)
-    endFunctionTypeAlias(typedef, =, ;)
+    endTypedef(typedef, =, ;)
   endTopLevelDeclaration(typedef)
   beginMetadataStar(typedef)
   endMetadataStar(0)
   beginUncategorizedTopLevelDeclaration(typedef)
-    beginFunctionTypeAlias(typedef)
+    beginTypedef(typedef)
       handleVoidKeyword(void)
       handleRecoverableError(Message[ExpectedIdentifierButGotKeyword, 'get' can't be used as an identifier because it's a keyword., Try renaming this to be an identifier that isn't a keyword., {lexeme: get}], get, get)
       handleIdentifier(get, typedefDeclaration)
       handleNoTypeVariables(()
       beginFormalParameters((, MemberKind.FunctionTypeAlias)
       endFormalParameters(0, (, ), MemberKind.FunctionTypeAlias)
-    endFunctionTypeAlias(typedef, null, ;)
+    endTypedef(typedef, null, ;)
   endTopLevelDeclaration(typedef)
   beginMetadataStar(typedef)
   endMetadataStar(0)
   beginUncategorizedTopLevelDeclaration(typedef)
-    beginFunctionTypeAlias(typedef)
+    beginTypedef(typedef)
       handleRecoverableError(Message[ExpectedIdentifierButGotKeyword, 'get' can't be used as an identifier because it's a keyword., Try renaming this to be an identifier that isn't a keyword., {lexeme: get}], get, get)
       handleIdentifier(get, typedefDeclaration)
       handleNoTypeVariables(=)
@@ -1242,23 +1242,23 @@
         beginFormalParameters((, MemberKind.GeneralizedFunctionType)
         endFormalParameters(0, (, ), MemberKind.GeneralizedFunctionType)
       endFunctionType(Function, null)
-    endFunctionTypeAlias(typedef, =, ;)
+    endTypedef(typedef, =, ;)
   endTopLevelDeclaration(typedef)
   beginMetadataStar(typedef)
   endMetadataStar(0)
   beginUncategorizedTopLevelDeclaration(typedef)
-    beginFunctionTypeAlias(typedef)
+    beginTypedef(typedef)
       handleVoidKeyword(void)
       handleIdentifier(hide, typedefDeclaration)
       handleNoTypeVariables(()
       beginFormalParameters((, MemberKind.FunctionTypeAlias)
       endFormalParameters(0, (, ), MemberKind.FunctionTypeAlias)
-    endFunctionTypeAlias(typedef, null, ;)
+    endTypedef(typedef, null, ;)
   endTopLevelDeclaration(typedef)
   beginMetadataStar(typedef)
   endMetadataStar(0)
   beginUncategorizedTopLevelDeclaration(typedef)
-    beginFunctionTypeAlias(typedef)
+    beginTypedef(typedef)
       handleIdentifier(hide, typedefDeclaration)
       handleNoTypeVariables(=)
       beginFunctionType(void)
@@ -1267,24 +1267,24 @@
         beginFormalParameters((, MemberKind.GeneralizedFunctionType)
         endFormalParameters(0, (, ), MemberKind.GeneralizedFunctionType)
       endFunctionType(Function, null)
-    endFunctionTypeAlias(typedef, =, ;)
+    endTypedef(typedef, =, ;)
   endTopLevelDeclaration(typedef)
   beginMetadataStar(typedef)
   endMetadataStar(0)
   beginUncategorizedTopLevelDeclaration(typedef)
-    beginFunctionTypeAlias(typedef)
+    beginTypedef(typedef)
       handleVoidKeyword(void)
       handleRecoverableError(Message[ExpectedIdentifierButGotKeyword, 'if' can't be used as an identifier because it's a keyword., Try renaming this to be an identifier that isn't a keyword., {lexeme: if}], if, if)
       handleIdentifier(if, typedefDeclaration)
       handleNoTypeVariables(()
       beginFormalParameters((, MemberKind.FunctionTypeAlias)
       endFormalParameters(0, (, ), MemberKind.FunctionTypeAlias)
-    endFunctionTypeAlias(typedef, null, ;)
+    endTypedef(typedef, null, ;)
   endTopLevelDeclaration(typedef)
   beginMetadataStar(typedef)
   endMetadataStar(0)
   beginUncategorizedTopLevelDeclaration(typedef)
-    beginFunctionTypeAlias(typedef)
+    beginTypedef(typedef)
       handleRecoverableError(Message[ExpectedIdentifierButGotKeyword, 'if' can't be used as an identifier because it's a keyword., Try renaming this to be an identifier that isn't a keyword., {lexeme: if}], if, if)
       handleIdentifier(if, typedefDeclaration)
       handleNoTypeVariables(=)
@@ -1294,24 +1294,24 @@
         beginFormalParameters((, MemberKind.GeneralizedFunctionType)
         endFormalParameters(0, (, ), MemberKind.GeneralizedFunctionType)
       endFunctionType(Function, null)
-    endFunctionTypeAlias(typedef, =, ;)
+    endTypedef(typedef, =, ;)
   endTopLevelDeclaration(typedef)
   beginMetadataStar(typedef)
   endMetadataStar(0)
   beginUncategorizedTopLevelDeclaration(typedef)
-    beginFunctionTypeAlias(typedef)
+    beginTypedef(typedef)
       handleVoidKeyword(void)
       handleRecoverableError(Message[ExpectedIdentifierButGotKeyword, 'implements' can't be used as an identifier because it's a keyword., Try renaming this to be an identifier that isn't a keyword., {lexeme: implements}], implements, implements)
       handleIdentifier(implements, typedefDeclaration)
       handleNoTypeVariables(()
       beginFormalParameters((, MemberKind.FunctionTypeAlias)
       endFormalParameters(0, (, ), MemberKind.FunctionTypeAlias)
-    endFunctionTypeAlias(typedef, null, ;)
+    endTypedef(typedef, null, ;)
   endTopLevelDeclaration(typedef)
   beginMetadataStar(typedef)
   endMetadataStar(0)
   beginUncategorizedTopLevelDeclaration(typedef)
-    beginFunctionTypeAlias(typedef)
+    beginTypedef(typedef)
       handleRecoverableError(Message[ExpectedIdentifierButGotKeyword, 'implements' can't be used as an identifier because it's a keyword., Try renaming this to be an identifier that isn't a keyword., {lexeme: implements}], implements, implements)
       handleIdentifier(implements, typedefDeclaration)
       handleNoTypeVariables(=)
@@ -1321,24 +1321,24 @@
         beginFormalParameters((, MemberKind.GeneralizedFunctionType)
         endFormalParameters(0, (, ), MemberKind.GeneralizedFunctionType)
       endFunctionType(Function, null)
-    endFunctionTypeAlias(typedef, =, ;)
+    endTypedef(typedef, =, ;)
   endTopLevelDeclaration(typedef)
   beginMetadataStar(typedef)
   endMetadataStar(0)
   beginUncategorizedTopLevelDeclaration(typedef)
-    beginFunctionTypeAlias(typedef)
+    beginTypedef(typedef)
       handleVoidKeyword(void)
       handleRecoverableError(Message[ExpectedIdentifierButGotKeyword, 'import' can't be used as an identifier because it's a keyword., Try renaming this to be an identifier that isn't a keyword., {lexeme: import}], import, import)
       handleIdentifier(import, typedefDeclaration)
       handleNoTypeVariables(()
       beginFormalParameters((, MemberKind.FunctionTypeAlias)
       endFormalParameters(0, (, ), MemberKind.FunctionTypeAlias)
-    endFunctionTypeAlias(typedef, null, ;)
+    endTypedef(typedef, null, ;)
   endTopLevelDeclaration(typedef)
   beginMetadataStar(typedef)
   endMetadataStar(0)
   beginUncategorizedTopLevelDeclaration(typedef)
-    beginFunctionTypeAlias(typedef)
+    beginTypedef(typedef)
       handleRecoverableError(Message[ExpectedIdentifierButGotKeyword, 'import' can't be used as an identifier because it's a keyword., Try renaming this to be an identifier that isn't a keyword., {lexeme: import}], import, import)
       handleIdentifier(import, typedefDeclaration)
       handleNoTypeVariables(=)
@@ -1348,24 +1348,24 @@
         beginFormalParameters((, MemberKind.GeneralizedFunctionType)
         endFormalParameters(0, (, ), MemberKind.GeneralizedFunctionType)
       endFunctionType(Function, null)
-    endFunctionTypeAlias(typedef, =, ;)
+    endTypedef(typedef, =, ;)
   endTopLevelDeclaration(typedef)
   beginMetadataStar(typedef)
   endMetadataStar(0)
   beginUncategorizedTopLevelDeclaration(typedef)
-    beginFunctionTypeAlias(typedef)
+    beginTypedef(typedef)
       handleVoidKeyword(void)
       handleRecoverableError(Message[ExpectedIdentifierButGotKeyword, 'in' can't be used as an identifier because it's a keyword., Try renaming this to be an identifier that isn't a keyword., {lexeme: in}], in, in)
       handleIdentifier(in, typedefDeclaration)
       handleNoTypeVariables(()
       beginFormalParameters((, MemberKind.FunctionTypeAlias)
       endFormalParameters(0, (, ), MemberKind.FunctionTypeAlias)
-    endFunctionTypeAlias(typedef, null, ;)
+    endTypedef(typedef, null, ;)
   endTopLevelDeclaration(typedef)
   beginMetadataStar(typedef)
   endMetadataStar(0)
   beginUncategorizedTopLevelDeclaration(typedef)
-    beginFunctionTypeAlias(typedef)
+    beginTypedef(typedef)
       handleRecoverableError(Message[ExpectedIdentifierButGotKeyword, 'in' can't be used as an identifier because it's a keyword., Try renaming this to be an identifier that isn't a keyword., {lexeme: in}], in, in)
       handleIdentifier(in, typedefDeclaration)
       handleNoTypeVariables(=)
@@ -1375,23 +1375,23 @@
         beginFormalParameters((, MemberKind.GeneralizedFunctionType)
         endFormalParameters(0, (, ), MemberKind.GeneralizedFunctionType)
       endFunctionType(Function, null)
-    endFunctionTypeAlias(typedef, =, ;)
+    endTypedef(typedef, =, ;)
   endTopLevelDeclaration(typedef)
   beginMetadataStar(typedef)
   endMetadataStar(0)
   beginUncategorizedTopLevelDeclaration(typedef)
-    beginFunctionTypeAlias(typedef)
+    beginTypedef(typedef)
       handleVoidKeyword(void)
       handleIdentifier(inout, typedefDeclaration)
       handleNoTypeVariables(()
       beginFormalParameters((, MemberKind.FunctionTypeAlias)
       endFormalParameters(0, (, ), MemberKind.FunctionTypeAlias)
-    endFunctionTypeAlias(typedef, null, ;)
+    endTypedef(typedef, null, ;)
   endTopLevelDeclaration(typedef)
   beginMetadataStar(typedef)
   endMetadataStar(0)
   beginUncategorizedTopLevelDeclaration(typedef)
-    beginFunctionTypeAlias(typedef)
+    beginTypedef(typedef)
       handleIdentifier(inout, typedefDeclaration)
       handleNoTypeVariables(=)
       beginFunctionType(void)
@@ -1400,24 +1400,24 @@
         beginFormalParameters((, MemberKind.GeneralizedFunctionType)
         endFormalParameters(0, (, ), MemberKind.GeneralizedFunctionType)
       endFunctionType(Function, null)
-    endFunctionTypeAlias(typedef, =, ;)
+    endTypedef(typedef, =, ;)
   endTopLevelDeclaration(typedef)
   beginMetadataStar(typedef)
   endMetadataStar(0)
   beginUncategorizedTopLevelDeclaration(typedef)
-    beginFunctionTypeAlias(typedef)
+    beginTypedef(typedef)
       handleVoidKeyword(void)
       handleRecoverableError(Message[ExpectedIdentifierButGotKeyword, 'interface' can't be used as an identifier because it's a keyword., Try renaming this to be an identifier that isn't a keyword., {lexeme: interface}], interface, interface)
       handleIdentifier(interface, typedefDeclaration)
       handleNoTypeVariables(()
       beginFormalParameters((, MemberKind.FunctionTypeAlias)
       endFormalParameters(0, (, ), MemberKind.FunctionTypeAlias)
-    endFunctionTypeAlias(typedef, null, ;)
+    endTypedef(typedef, null, ;)
   endTopLevelDeclaration(typedef)
   beginMetadataStar(typedef)
   endMetadataStar(0)
   beginUncategorizedTopLevelDeclaration(typedef)
-    beginFunctionTypeAlias(typedef)
+    beginTypedef(typedef)
       handleRecoverableError(Message[ExpectedIdentifierButGotKeyword, 'interface' can't be used as an identifier because it's a keyword., Try renaming this to be an identifier that isn't a keyword., {lexeme: interface}], interface, interface)
       handleIdentifier(interface, typedefDeclaration)
       handleNoTypeVariables(=)
@@ -1427,24 +1427,24 @@
         beginFormalParameters((, MemberKind.GeneralizedFunctionType)
         endFormalParameters(0, (, ), MemberKind.GeneralizedFunctionType)
       endFunctionType(Function, null)
-    endFunctionTypeAlias(typedef, =, ;)
+    endTypedef(typedef, =, ;)
   endTopLevelDeclaration(typedef)
   beginMetadataStar(typedef)
   endMetadataStar(0)
   beginUncategorizedTopLevelDeclaration(typedef)
-    beginFunctionTypeAlias(typedef)
+    beginTypedef(typedef)
       handleVoidKeyword(void)
       handleRecoverableError(Message[ExpectedIdentifierButGotKeyword, 'is' can't be used as an identifier because it's a keyword., Try renaming this to be an identifier that isn't a keyword., {lexeme: is}], is, is)
       handleIdentifier(is, typedefDeclaration)
       handleNoTypeVariables(()
       beginFormalParameters((, MemberKind.FunctionTypeAlias)
       endFormalParameters(0, (, ), MemberKind.FunctionTypeAlias)
-    endFunctionTypeAlias(typedef, null, ;)
+    endTypedef(typedef, null, ;)
   endTopLevelDeclaration(typedef)
   beginMetadataStar(typedef)
   endMetadataStar(0)
   beginUncategorizedTopLevelDeclaration(typedef)
-    beginFunctionTypeAlias(typedef)
+    beginTypedef(typedef)
       handleRecoverableError(Message[ExpectedIdentifierButGotKeyword, 'is' can't be used as an identifier because it's a keyword., Try renaming this to be an identifier that isn't a keyword., {lexeme: is}], is, is)
       handleIdentifier(is, typedefDeclaration)
       handleNoTypeVariables(=)
@@ -1454,24 +1454,24 @@
         beginFormalParameters((, MemberKind.GeneralizedFunctionType)
         endFormalParameters(0, (, ), MemberKind.GeneralizedFunctionType)
       endFunctionType(Function, null)
-    endFunctionTypeAlias(typedef, =, ;)
+    endTypedef(typedef, =, ;)
   endTopLevelDeclaration(typedef)
   beginMetadataStar(typedef)
   endMetadataStar(0)
   beginUncategorizedTopLevelDeclaration(typedef)
-    beginFunctionTypeAlias(typedef)
+    beginTypedef(typedef)
       handleVoidKeyword(void)
       handleRecoverableError(Message[ExpectedIdentifierButGotKeyword, 'late' can't be used as an identifier because it's a keyword., Try renaming this to be an identifier that isn't a keyword., {lexeme: late}], late, late)
       handleIdentifier(late, typedefDeclaration)
       handleNoTypeVariables(()
       beginFormalParameters((, MemberKind.FunctionTypeAlias)
       endFormalParameters(0, (, ), MemberKind.FunctionTypeAlias)
-    endFunctionTypeAlias(typedef, null, ;)
+    endTypedef(typedef, null, ;)
   endTopLevelDeclaration(typedef)
   beginMetadataStar(typedef)
   endMetadataStar(0)
   beginUncategorizedTopLevelDeclaration(typedef)
-    beginFunctionTypeAlias(typedef)
+    beginTypedef(typedef)
       handleRecoverableError(Message[ExpectedIdentifierButGotKeyword, 'late' can't be used as an identifier because it's a keyword., Try renaming this to be an identifier that isn't a keyword., {lexeme: late}], late, late)
       handleIdentifier(late, typedefDeclaration)
       handleNoTypeVariables(=)
@@ -1481,24 +1481,24 @@
         beginFormalParameters((, MemberKind.GeneralizedFunctionType)
         endFormalParameters(0, (, ), MemberKind.GeneralizedFunctionType)
       endFunctionType(Function, null)
-    endFunctionTypeAlias(typedef, =, ;)
+    endTypedef(typedef, =, ;)
   endTopLevelDeclaration(typedef)
   beginMetadataStar(typedef)
   endMetadataStar(0)
   beginUncategorizedTopLevelDeclaration(typedef)
-    beginFunctionTypeAlias(typedef)
+    beginTypedef(typedef)
       handleVoidKeyword(void)
       handleRecoverableError(Message[ExpectedIdentifierButGotKeyword, 'library' can't be used as an identifier because it's a keyword., Try renaming this to be an identifier that isn't a keyword., {lexeme: library}], library, library)
       handleIdentifier(library, typedefDeclaration)
       handleNoTypeVariables(()
       beginFormalParameters((, MemberKind.FunctionTypeAlias)
       endFormalParameters(0, (, ), MemberKind.FunctionTypeAlias)
-    endFunctionTypeAlias(typedef, null, ;)
+    endTypedef(typedef, null, ;)
   endTopLevelDeclaration(typedef)
   beginMetadataStar(typedef)
   endMetadataStar(0)
   beginUncategorizedTopLevelDeclaration(typedef)
-    beginFunctionTypeAlias(typedef)
+    beginTypedef(typedef)
       handleRecoverableError(Message[ExpectedIdentifierButGotKeyword, 'library' can't be used as an identifier because it's a keyword., Try renaming this to be an identifier that isn't a keyword., {lexeme: library}], library, library)
       handleIdentifier(library, typedefDeclaration)
       handleNoTypeVariables(=)
@@ -1508,24 +1508,24 @@
         beginFormalParameters((, MemberKind.GeneralizedFunctionType)
         endFormalParameters(0, (, ), MemberKind.GeneralizedFunctionType)
       endFunctionType(Function, null)
-    endFunctionTypeAlias(typedef, =, ;)
+    endTypedef(typedef, =, ;)
   endTopLevelDeclaration(typedef)
   beginMetadataStar(typedef)
   endMetadataStar(0)
   beginUncategorizedTopLevelDeclaration(typedef)
-    beginFunctionTypeAlias(typedef)
+    beginTypedef(typedef)
       handleVoidKeyword(void)
       handleRecoverableError(Message[ExpectedIdentifierButGotKeyword, 'mixin' can't be used as an identifier because it's a keyword., Try renaming this to be an identifier that isn't a keyword., {lexeme: mixin}], mixin, mixin)
       handleIdentifier(mixin, typedefDeclaration)
       handleNoTypeVariables(()
       beginFormalParameters((, MemberKind.FunctionTypeAlias)
       endFormalParameters(0, (, ), MemberKind.FunctionTypeAlias)
-    endFunctionTypeAlias(typedef, null, ;)
+    endTypedef(typedef, null, ;)
   endTopLevelDeclaration(typedef)
   beginMetadataStar(typedef)
   endMetadataStar(0)
   beginUncategorizedTopLevelDeclaration(typedef)
-    beginFunctionTypeAlias(typedef)
+    beginTypedef(typedef)
       handleRecoverableError(Message[ExpectedIdentifierButGotKeyword, 'mixin' can't be used as an identifier because it's a keyword., Try renaming this to be an identifier that isn't a keyword., {lexeme: mixin}], mixin, mixin)
       handleIdentifier(mixin, typedefDeclaration)
       handleNoTypeVariables(=)
@@ -1535,23 +1535,23 @@
         beginFormalParameters((, MemberKind.GeneralizedFunctionType)
         endFormalParameters(0, (, ), MemberKind.GeneralizedFunctionType)
       endFunctionType(Function, null)
-    endFunctionTypeAlias(typedef, =, ;)
+    endTypedef(typedef, =, ;)
   endTopLevelDeclaration(typedef)
   beginMetadataStar(typedef)
   endMetadataStar(0)
   beginUncategorizedTopLevelDeclaration(typedef)
-    beginFunctionTypeAlias(typedef)
+    beginTypedef(typedef)
       handleVoidKeyword(void)
       handleIdentifier(native, typedefDeclaration)
       handleNoTypeVariables(()
       beginFormalParameters((, MemberKind.FunctionTypeAlias)
       endFormalParameters(0, (, ), MemberKind.FunctionTypeAlias)
-    endFunctionTypeAlias(typedef, null, ;)
+    endTypedef(typedef, null, ;)
   endTopLevelDeclaration(typedef)
   beginMetadataStar(typedef)
   endMetadataStar(0)
   beginUncategorizedTopLevelDeclaration(typedef)
-    beginFunctionTypeAlias(typedef)
+    beginTypedef(typedef)
       handleIdentifier(native, typedefDeclaration)
       handleNoTypeVariables(=)
       beginFunctionType(void)
@@ -1560,24 +1560,24 @@
         beginFormalParameters((, MemberKind.GeneralizedFunctionType)
         endFormalParameters(0, (, ), MemberKind.GeneralizedFunctionType)
       endFunctionType(Function, null)
-    endFunctionTypeAlias(typedef, =, ;)
+    endTypedef(typedef, =, ;)
   endTopLevelDeclaration(typedef)
   beginMetadataStar(typedef)
   endMetadataStar(0)
   beginUncategorizedTopLevelDeclaration(typedef)
-    beginFunctionTypeAlias(typedef)
+    beginTypedef(typedef)
       handleVoidKeyword(void)
       handleRecoverableError(Message[ExpectedIdentifierButGotKeyword, 'new' can't be used as an identifier because it's a keyword., Try renaming this to be an identifier that isn't a keyword., {lexeme: new}], new, new)
       handleIdentifier(new, typedefDeclaration)
       handleNoTypeVariables(()
       beginFormalParameters((, MemberKind.FunctionTypeAlias)
       endFormalParameters(0, (, ), MemberKind.FunctionTypeAlias)
-    endFunctionTypeAlias(typedef, null, ;)
+    endTypedef(typedef, null, ;)
   endTopLevelDeclaration(typedef)
   beginMetadataStar(typedef)
   endMetadataStar(0)
   beginUncategorizedTopLevelDeclaration(typedef)
-    beginFunctionTypeAlias(typedef)
+    beginTypedef(typedef)
       handleRecoverableError(Message[ExpectedIdentifierButGotKeyword, 'new' can't be used as an identifier because it's a keyword., Try renaming this to be an identifier that isn't a keyword., {lexeme: new}], new, new)
       handleIdentifier(new, typedefDeclaration)
       handleNoTypeVariables(=)
@@ -1587,24 +1587,24 @@
         beginFormalParameters((, MemberKind.GeneralizedFunctionType)
         endFormalParameters(0, (, ), MemberKind.GeneralizedFunctionType)
       endFunctionType(Function, null)
-    endFunctionTypeAlias(typedef, =, ;)
+    endTypedef(typedef, =, ;)
   endTopLevelDeclaration(typedef)
   beginMetadataStar(typedef)
   endMetadataStar(0)
   beginUncategorizedTopLevelDeclaration(typedef)
-    beginFunctionTypeAlias(typedef)
+    beginTypedef(typedef)
       handleVoidKeyword(void)
       handleRecoverableError(Message[ExpectedIdentifierButGotKeyword, 'null' can't be used as an identifier because it's a keyword., Try renaming this to be an identifier that isn't a keyword., {lexeme: null}], null, null)
       handleIdentifier(null, typedefDeclaration)
       handleNoTypeVariables(()
       beginFormalParameters((, MemberKind.FunctionTypeAlias)
       endFormalParameters(0, (, ), MemberKind.FunctionTypeAlias)
-    endFunctionTypeAlias(typedef, null, ;)
+    endTypedef(typedef, null, ;)
   endTopLevelDeclaration(typedef)
   beginMetadataStar(typedef)
   endMetadataStar(0)
   beginUncategorizedTopLevelDeclaration(typedef)
-    beginFunctionTypeAlias(typedef)
+    beginTypedef(typedef)
       handleRecoverableError(Message[ExpectedIdentifierButGotKeyword, 'null' can't be used as an identifier because it's a keyword., Try renaming this to be an identifier that isn't a keyword., {lexeme: null}], null, null)
       handleIdentifier(null, typedefDeclaration)
       handleNoTypeVariables(=)
@@ -1614,23 +1614,23 @@
         beginFormalParameters((, MemberKind.GeneralizedFunctionType)
         endFormalParameters(0, (, ), MemberKind.GeneralizedFunctionType)
       endFunctionType(Function, null)
-    endFunctionTypeAlias(typedef, =, ;)
+    endTypedef(typedef, =, ;)
   endTopLevelDeclaration(typedef)
   beginMetadataStar(typedef)
   endMetadataStar(0)
   beginUncategorizedTopLevelDeclaration(typedef)
-    beginFunctionTypeAlias(typedef)
+    beginTypedef(typedef)
       handleVoidKeyword(void)
       handleIdentifier(of, typedefDeclaration)
       handleNoTypeVariables(()
       beginFormalParameters((, MemberKind.FunctionTypeAlias)
       endFormalParameters(0, (, ), MemberKind.FunctionTypeAlias)
-    endFunctionTypeAlias(typedef, null, ;)
+    endTypedef(typedef, null, ;)
   endTopLevelDeclaration(typedef)
   beginMetadataStar(typedef)
   endMetadataStar(0)
   beginUncategorizedTopLevelDeclaration(typedef)
-    beginFunctionTypeAlias(typedef)
+    beginTypedef(typedef)
       handleIdentifier(of, typedefDeclaration)
       handleNoTypeVariables(=)
       beginFunctionType(void)
@@ -1639,23 +1639,23 @@
         beginFormalParameters((, MemberKind.GeneralizedFunctionType)
         endFormalParameters(0, (, ), MemberKind.GeneralizedFunctionType)
       endFunctionType(Function, null)
-    endFunctionTypeAlias(typedef, =, ;)
+    endTypedef(typedef, =, ;)
   endTopLevelDeclaration(typedef)
   beginMetadataStar(typedef)
   endMetadataStar(0)
   beginUncategorizedTopLevelDeclaration(typedef)
-    beginFunctionTypeAlias(typedef)
+    beginTypedef(typedef)
       handleVoidKeyword(void)
       handleIdentifier(on, typedefDeclaration)
       handleNoTypeVariables(()
       beginFormalParameters((, MemberKind.FunctionTypeAlias)
       endFormalParameters(0, (, ), MemberKind.FunctionTypeAlias)
-    endFunctionTypeAlias(typedef, null, ;)
+    endTypedef(typedef, null, ;)
   endTopLevelDeclaration(typedef)
   beginMetadataStar(typedef)
   endMetadataStar(0)
   beginUncategorizedTopLevelDeclaration(typedef)
-    beginFunctionTypeAlias(typedef)
+    beginTypedef(typedef)
       handleIdentifier(on, typedefDeclaration)
       handleNoTypeVariables(=)
       beginFunctionType(void)
@@ -1664,24 +1664,24 @@
         beginFormalParameters((, MemberKind.GeneralizedFunctionType)
         endFormalParameters(0, (, ), MemberKind.GeneralizedFunctionType)
       endFunctionType(Function, null)
-    endFunctionTypeAlias(typedef, =, ;)
+    endTypedef(typedef, =, ;)
   endTopLevelDeclaration(typedef)
   beginMetadataStar(typedef)
   endMetadataStar(0)
   beginUncategorizedTopLevelDeclaration(typedef)
-    beginFunctionTypeAlias(typedef)
+    beginTypedef(typedef)
       handleVoidKeyword(void)
       handleRecoverableError(Message[ExpectedIdentifierButGotKeyword, 'operator' can't be used as an identifier because it's a keyword., Try renaming this to be an identifier that isn't a keyword., {lexeme: operator}], operator, operator)
       handleIdentifier(operator, typedefDeclaration)
       handleNoTypeVariables(()
       beginFormalParameters((, MemberKind.FunctionTypeAlias)
       endFormalParameters(0, (, ), MemberKind.FunctionTypeAlias)
-    endFunctionTypeAlias(typedef, null, ;)
+    endTypedef(typedef, null, ;)
   endTopLevelDeclaration(typedef)
   beginMetadataStar(typedef)
   endMetadataStar(0)
   beginUncategorizedTopLevelDeclaration(typedef)
-    beginFunctionTypeAlias(typedef)
+    beginTypedef(typedef)
       handleRecoverableError(Message[ExpectedIdentifierButGotKeyword, 'operator' can't be used as an identifier because it's a keyword., Try renaming this to be an identifier that isn't a keyword., {lexeme: operator}], operator, operator)
       handleIdentifier(operator, typedefDeclaration)
       handleNoTypeVariables(=)
@@ -1691,23 +1691,23 @@
         beginFormalParameters((, MemberKind.GeneralizedFunctionType)
         endFormalParameters(0, (, ), MemberKind.GeneralizedFunctionType)
       endFunctionType(Function, null)
-    endFunctionTypeAlias(typedef, =, ;)
+    endTypedef(typedef, =, ;)
   endTopLevelDeclaration(typedef)
   beginMetadataStar(typedef)
   endMetadataStar(0)
   beginUncategorizedTopLevelDeclaration(typedef)
-    beginFunctionTypeAlias(typedef)
+    beginTypedef(typedef)
       handleVoidKeyword(void)
       handleIdentifier(out, typedefDeclaration)
       handleNoTypeVariables(()
       beginFormalParameters((, MemberKind.FunctionTypeAlias)
       endFormalParameters(0, (, ), MemberKind.FunctionTypeAlias)
-    endFunctionTypeAlias(typedef, null, ;)
+    endTypedef(typedef, null, ;)
   endTopLevelDeclaration(typedef)
   beginMetadataStar(typedef)
   endMetadataStar(0)
   beginUncategorizedTopLevelDeclaration(typedef)
-    beginFunctionTypeAlias(typedef)
+    beginTypedef(typedef)
       handleIdentifier(out, typedefDeclaration)
       handleNoTypeVariables(=)
       beginFunctionType(void)
@@ -1716,24 +1716,24 @@
         beginFormalParameters((, MemberKind.GeneralizedFunctionType)
         endFormalParameters(0, (, ), MemberKind.GeneralizedFunctionType)
       endFunctionType(Function, null)
-    endFunctionTypeAlias(typedef, =, ;)
+    endTypedef(typedef, =, ;)
   endTopLevelDeclaration(typedef)
   beginMetadataStar(typedef)
   endMetadataStar(0)
   beginUncategorizedTopLevelDeclaration(typedef)
-    beginFunctionTypeAlias(typedef)
+    beginTypedef(typedef)
       handleVoidKeyword(void)
       handleRecoverableError(Message[ExpectedIdentifierButGotKeyword, 'part' can't be used as an identifier because it's a keyword., Try renaming this to be an identifier that isn't a keyword., {lexeme: part}], part, part)
       handleIdentifier(part, typedefDeclaration)
       handleNoTypeVariables(()
       beginFormalParameters((, MemberKind.FunctionTypeAlias)
       endFormalParameters(0, (, ), MemberKind.FunctionTypeAlias)
-    endFunctionTypeAlias(typedef, null, ;)
+    endTypedef(typedef, null, ;)
   endTopLevelDeclaration(typedef)
   beginMetadataStar(typedef)
   endMetadataStar(0)
   beginUncategorizedTopLevelDeclaration(typedef)
-    beginFunctionTypeAlias(typedef)
+    beginTypedef(typedef)
       handleRecoverableError(Message[ExpectedIdentifierButGotKeyword, 'part' can't be used as an identifier because it's a keyword., Try renaming this to be an identifier that isn't a keyword., {lexeme: part}], part, part)
       handleIdentifier(part, typedefDeclaration)
       handleNoTypeVariables(=)
@@ -1743,23 +1743,23 @@
         beginFormalParameters((, MemberKind.GeneralizedFunctionType)
         endFormalParameters(0, (, ), MemberKind.GeneralizedFunctionType)
       endFunctionType(Function, null)
-    endFunctionTypeAlias(typedef, =, ;)
+    endTypedef(typedef, =, ;)
   endTopLevelDeclaration(typedef)
   beginMetadataStar(typedef)
   endMetadataStar(0)
   beginUncategorizedTopLevelDeclaration(typedef)
-    beginFunctionTypeAlias(typedef)
+    beginTypedef(typedef)
       handleVoidKeyword(void)
       handleIdentifier(patch, typedefDeclaration)
       handleNoTypeVariables(()
       beginFormalParameters((, MemberKind.FunctionTypeAlias)
       endFormalParameters(0, (, ), MemberKind.FunctionTypeAlias)
-    endFunctionTypeAlias(typedef, null, ;)
+    endTypedef(typedef, null, ;)
   endTopLevelDeclaration(typedef)
   beginMetadataStar(typedef)
   endMetadataStar(0)
   beginUncategorizedTopLevelDeclaration(typedef)
-    beginFunctionTypeAlias(typedef)
+    beginTypedef(typedef)
       handleIdentifier(patch, typedefDeclaration)
       handleNoTypeVariables(=)
       beginFunctionType(void)
@@ -1768,24 +1768,24 @@
         beginFormalParameters((, MemberKind.GeneralizedFunctionType)
         endFormalParameters(0, (, ), MemberKind.GeneralizedFunctionType)
       endFunctionType(Function, null)
-    endFunctionTypeAlias(typedef, =, ;)
+    endTypedef(typedef, =, ;)
   endTopLevelDeclaration(typedef)
   beginMetadataStar(typedef)
   endMetadataStar(0)
   beginUncategorizedTopLevelDeclaration(typedef)
-    beginFunctionTypeAlias(typedef)
+    beginTypedef(typedef)
       handleVoidKeyword(void)
       handleRecoverableError(Message[ExpectedIdentifierButGotKeyword, 'required' can't be used as an identifier because it's a keyword., Try renaming this to be an identifier that isn't a keyword., {lexeme: required}], required, required)
       handleIdentifier(required, typedefDeclaration)
       handleNoTypeVariables(()
       beginFormalParameters((, MemberKind.FunctionTypeAlias)
       endFormalParameters(0, (, ), MemberKind.FunctionTypeAlias)
-    endFunctionTypeAlias(typedef, null, ;)
+    endTypedef(typedef, null, ;)
   endTopLevelDeclaration(typedef)
   beginMetadataStar(typedef)
   endMetadataStar(0)
   beginUncategorizedTopLevelDeclaration(typedef)
-    beginFunctionTypeAlias(typedef)
+    beginTypedef(typedef)
       handleRecoverableError(Message[ExpectedIdentifierButGotKeyword, 'required' can't be used as an identifier because it's a keyword., Try renaming this to be an identifier that isn't a keyword., {lexeme: required}], required, required)
       handleIdentifier(required, typedefDeclaration)
       handleNoTypeVariables(=)
@@ -1795,24 +1795,24 @@
         beginFormalParameters((, MemberKind.GeneralizedFunctionType)
         endFormalParameters(0, (, ), MemberKind.GeneralizedFunctionType)
       endFunctionType(Function, null)
-    endFunctionTypeAlias(typedef, =, ;)
+    endTypedef(typedef, =, ;)
   endTopLevelDeclaration(typedef)
   beginMetadataStar(typedef)
   endMetadataStar(0)
   beginUncategorizedTopLevelDeclaration(typedef)
-    beginFunctionTypeAlias(typedef)
+    beginTypedef(typedef)
       handleVoidKeyword(void)
       handleRecoverableError(Message[ExpectedIdentifierButGotKeyword, 'rethrow' can't be used as an identifier because it's a keyword., Try renaming this to be an identifier that isn't a keyword., {lexeme: rethrow}], rethrow, rethrow)
       handleIdentifier(rethrow, typedefDeclaration)
       handleNoTypeVariables(()
       beginFormalParameters((, MemberKind.FunctionTypeAlias)
       endFormalParameters(0, (, ), MemberKind.FunctionTypeAlias)
-    endFunctionTypeAlias(typedef, null, ;)
+    endTypedef(typedef, null, ;)
   endTopLevelDeclaration(typedef)
   beginMetadataStar(typedef)
   endMetadataStar(0)
   beginUncategorizedTopLevelDeclaration(typedef)
-    beginFunctionTypeAlias(typedef)
+    beginTypedef(typedef)
       handleRecoverableError(Message[ExpectedIdentifierButGotKeyword, 'rethrow' can't be used as an identifier because it's a keyword., Try renaming this to be an identifier that isn't a keyword., {lexeme: rethrow}], rethrow, rethrow)
       handleIdentifier(rethrow, typedefDeclaration)
       handleNoTypeVariables(=)
@@ -1822,24 +1822,24 @@
         beginFormalParameters((, MemberKind.GeneralizedFunctionType)
         endFormalParameters(0, (, ), MemberKind.GeneralizedFunctionType)
       endFunctionType(Function, null)
-    endFunctionTypeAlias(typedef, =, ;)
+    endTypedef(typedef, =, ;)
   endTopLevelDeclaration(typedef)
   beginMetadataStar(typedef)
   endMetadataStar(0)
   beginUncategorizedTopLevelDeclaration(typedef)
-    beginFunctionTypeAlias(typedef)
+    beginTypedef(typedef)
       handleVoidKeyword(void)
       handleRecoverableError(Message[ExpectedIdentifierButGotKeyword, 'return' can't be used as an identifier because it's a keyword., Try renaming this to be an identifier that isn't a keyword., {lexeme: return}], return, return)
       handleIdentifier(return, typedefDeclaration)
       handleNoTypeVariables(()
       beginFormalParameters((, MemberKind.FunctionTypeAlias)
       endFormalParameters(0, (, ), MemberKind.FunctionTypeAlias)
-    endFunctionTypeAlias(typedef, null, ;)
+    endTypedef(typedef, null, ;)
   endTopLevelDeclaration(typedef)
   beginMetadataStar(typedef)
   endMetadataStar(0)
   beginUncategorizedTopLevelDeclaration(typedef)
-    beginFunctionTypeAlias(typedef)
+    beginTypedef(typedef)
       handleRecoverableError(Message[ExpectedIdentifierButGotKeyword, 'return' can't be used as an identifier because it's a keyword., Try renaming this to be an identifier that isn't a keyword., {lexeme: return}], return, return)
       handleIdentifier(return, typedefDeclaration)
       handleNoTypeVariables(=)
@@ -1849,24 +1849,24 @@
         beginFormalParameters((, MemberKind.GeneralizedFunctionType)
         endFormalParameters(0, (, ), MemberKind.GeneralizedFunctionType)
       endFunctionType(Function, null)
-    endFunctionTypeAlias(typedef, =, ;)
+    endTypedef(typedef, =, ;)
   endTopLevelDeclaration(typedef)
   beginMetadataStar(typedef)
   endMetadataStar(0)
   beginUncategorizedTopLevelDeclaration(typedef)
-    beginFunctionTypeAlias(typedef)
+    beginTypedef(typedef)
       handleVoidKeyword(void)
       handleRecoverableError(Message[ExpectedIdentifierButGotKeyword, 'set' can't be used as an identifier because it's a keyword., Try renaming this to be an identifier that isn't a keyword., {lexeme: set}], set, set)
       handleIdentifier(set, typedefDeclaration)
       handleNoTypeVariables(()
       beginFormalParameters((, MemberKind.FunctionTypeAlias)
       endFormalParameters(0, (, ), MemberKind.FunctionTypeAlias)
-    endFunctionTypeAlias(typedef, null, ;)
+    endTypedef(typedef, null, ;)
   endTopLevelDeclaration(typedef)
   beginMetadataStar(typedef)
   endMetadataStar(0)
   beginUncategorizedTopLevelDeclaration(typedef)
-    beginFunctionTypeAlias(typedef)
+    beginTypedef(typedef)
       handleRecoverableError(Message[ExpectedIdentifierButGotKeyword, 'set' can't be used as an identifier because it's a keyword., Try renaming this to be an identifier that isn't a keyword., {lexeme: set}], set, set)
       handleIdentifier(set, typedefDeclaration)
       handleNoTypeVariables(=)
@@ -1876,23 +1876,23 @@
         beginFormalParameters((, MemberKind.GeneralizedFunctionType)
         endFormalParameters(0, (, ), MemberKind.GeneralizedFunctionType)
       endFunctionType(Function, null)
-    endFunctionTypeAlias(typedef, =, ;)
+    endTypedef(typedef, =, ;)
   endTopLevelDeclaration(typedef)
   beginMetadataStar(typedef)
   endMetadataStar(0)
   beginUncategorizedTopLevelDeclaration(typedef)
-    beginFunctionTypeAlias(typedef)
+    beginTypedef(typedef)
       handleVoidKeyword(void)
       handleIdentifier(show, typedefDeclaration)
       handleNoTypeVariables(()
       beginFormalParameters((, MemberKind.FunctionTypeAlias)
       endFormalParameters(0, (, ), MemberKind.FunctionTypeAlias)
-    endFunctionTypeAlias(typedef, null, ;)
+    endTypedef(typedef, null, ;)
   endTopLevelDeclaration(typedef)
   beginMetadataStar(typedef)
   endMetadataStar(0)
   beginUncategorizedTopLevelDeclaration(typedef)
-    beginFunctionTypeAlias(typedef)
+    beginTypedef(typedef)
       handleIdentifier(show, typedefDeclaration)
       handleNoTypeVariables(=)
       beginFunctionType(void)
@@ -1901,23 +1901,23 @@
         beginFormalParameters((, MemberKind.GeneralizedFunctionType)
         endFormalParameters(0, (, ), MemberKind.GeneralizedFunctionType)
       endFunctionType(Function, null)
-    endFunctionTypeAlias(typedef, =, ;)
+    endTypedef(typedef, =, ;)
   endTopLevelDeclaration(typedef)
   beginMetadataStar(typedef)
   endMetadataStar(0)
   beginUncategorizedTopLevelDeclaration(typedef)
-    beginFunctionTypeAlias(typedef)
+    beginTypedef(typedef)
       handleVoidKeyword(void)
       handleIdentifier(source, typedefDeclaration)
       handleNoTypeVariables(()
       beginFormalParameters((, MemberKind.FunctionTypeAlias)
       endFormalParameters(0, (, ), MemberKind.FunctionTypeAlias)
-    endFunctionTypeAlias(typedef, null, ;)
+    endTypedef(typedef, null, ;)
   endTopLevelDeclaration(typedef)
   beginMetadataStar(typedef)
   endMetadataStar(0)
   beginUncategorizedTopLevelDeclaration(typedef)
-    beginFunctionTypeAlias(typedef)
+    beginTypedef(typedef)
       handleIdentifier(source, typedefDeclaration)
       handleNoTypeVariables(=)
       beginFunctionType(void)
@@ -1926,24 +1926,24 @@
         beginFormalParameters((, MemberKind.GeneralizedFunctionType)
         endFormalParameters(0, (, ), MemberKind.GeneralizedFunctionType)
       endFunctionType(Function, null)
-    endFunctionTypeAlias(typedef, =, ;)
+    endTypedef(typedef, =, ;)
   endTopLevelDeclaration(typedef)
   beginMetadataStar(typedef)
   endMetadataStar(0)
   beginUncategorizedTopLevelDeclaration(typedef)
-    beginFunctionTypeAlias(typedef)
+    beginTypedef(typedef)
       handleVoidKeyword(void)
       handleRecoverableError(Message[ExpectedIdentifierButGotKeyword, 'static' can't be used as an identifier because it's a keyword., Try renaming this to be an identifier that isn't a keyword., {lexeme: static}], static, static)
       handleIdentifier(static, typedefDeclaration)
       handleNoTypeVariables(()
       beginFormalParameters((, MemberKind.FunctionTypeAlias)
       endFormalParameters(0, (, ), MemberKind.FunctionTypeAlias)
-    endFunctionTypeAlias(typedef, null, ;)
+    endTypedef(typedef, null, ;)
   endTopLevelDeclaration(typedef)
   beginMetadataStar(typedef)
   endMetadataStar(0)
   beginUncategorizedTopLevelDeclaration(typedef)
-    beginFunctionTypeAlias(typedef)
+    beginTypedef(typedef)
       handleRecoverableError(Message[ExpectedIdentifierButGotKeyword, 'static' can't be used as an identifier because it's a keyword., Try renaming this to be an identifier that isn't a keyword., {lexeme: static}], static, static)
       handleIdentifier(static, typedefDeclaration)
       handleNoTypeVariables(=)
@@ -1953,24 +1953,24 @@
         beginFormalParameters((, MemberKind.GeneralizedFunctionType)
         endFormalParameters(0, (, ), MemberKind.GeneralizedFunctionType)
       endFunctionType(Function, null)
-    endFunctionTypeAlias(typedef, =, ;)
+    endTypedef(typedef, =, ;)
   endTopLevelDeclaration(typedef)
   beginMetadataStar(typedef)
   endMetadataStar(0)
   beginUncategorizedTopLevelDeclaration(typedef)
-    beginFunctionTypeAlias(typedef)
+    beginTypedef(typedef)
       handleVoidKeyword(void)
       handleRecoverableError(Message[ExpectedIdentifierButGotKeyword, 'super' can't be used as an identifier because it's a keyword., Try renaming this to be an identifier that isn't a keyword., {lexeme: super}], super, super)
       handleIdentifier(super, typedefDeclaration)
       handleNoTypeVariables(()
       beginFormalParameters((, MemberKind.FunctionTypeAlias)
       endFormalParameters(0, (, ), MemberKind.FunctionTypeAlias)
-    endFunctionTypeAlias(typedef, null, ;)
+    endTypedef(typedef, null, ;)
   endTopLevelDeclaration(typedef)
   beginMetadataStar(typedef)
   endMetadataStar(0)
   beginUncategorizedTopLevelDeclaration(typedef)
-    beginFunctionTypeAlias(typedef)
+    beginTypedef(typedef)
       handleRecoverableError(Message[ExpectedIdentifierButGotKeyword, 'super' can't be used as an identifier because it's a keyword., Try renaming this to be an identifier that isn't a keyword., {lexeme: super}], super, super)
       handleIdentifier(super, typedefDeclaration)
       handleNoTypeVariables(=)
@@ -1980,24 +1980,24 @@
         beginFormalParameters((, MemberKind.GeneralizedFunctionType)
         endFormalParameters(0, (, ), MemberKind.GeneralizedFunctionType)
       endFunctionType(Function, null)
-    endFunctionTypeAlias(typedef, =, ;)
+    endTypedef(typedef, =, ;)
   endTopLevelDeclaration(typedef)
   beginMetadataStar(typedef)
   endMetadataStar(0)
   beginUncategorizedTopLevelDeclaration(typedef)
-    beginFunctionTypeAlias(typedef)
+    beginTypedef(typedef)
       handleVoidKeyword(void)
       handleRecoverableError(Message[ExpectedIdentifierButGotKeyword, 'switch' can't be used as an identifier because it's a keyword., Try renaming this to be an identifier that isn't a keyword., {lexeme: switch}], switch, switch)
       handleIdentifier(switch, typedefDeclaration)
       handleNoTypeVariables(()
       beginFormalParameters((, MemberKind.FunctionTypeAlias)
       endFormalParameters(0, (, ), MemberKind.FunctionTypeAlias)
-    endFunctionTypeAlias(typedef, null, ;)
+    endTypedef(typedef, null, ;)
   endTopLevelDeclaration(typedef)
   beginMetadataStar(typedef)
   endMetadataStar(0)
   beginUncategorizedTopLevelDeclaration(typedef)
-    beginFunctionTypeAlias(typedef)
+    beginTypedef(typedef)
       handleRecoverableError(Message[ExpectedIdentifierButGotKeyword, 'switch' can't be used as an identifier because it's a keyword., Try renaming this to be an identifier that isn't a keyword., {lexeme: switch}], switch, switch)
       handleIdentifier(switch, typedefDeclaration)
       handleNoTypeVariables(=)
@@ -2007,23 +2007,23 @@
         beginFormalParameters((, MemberKind.GeneralizedFunctionType)
         endFormalParameters(0, (, ), MemberKind.GeneralizedFunctionType)
       endFunctionType(Function, null)
-    endFunctionTypeAlias(typedef, =, ;)
+    endTypedef(typedef, =, ;)
   endTopLevelDeclaration(typedef)
   beginMetadataStar(typedef)
   endMetadataStar(0)
   beginUncategorizedTopLevelDeclaration(typedef)
-    beginFunctionTypeAlias(typedef)
+    beginTypedef(typedef)
       handleVoidKeyword(void)
       handleIdentifier(sync, typedefDeclaration)
       handleNoTypeVariables(()
       beginFormalParameters((, MemberKind.FunctionTypeAlias)
       endFormalParameters(0, (, ), MemberKind.FunctionTypeAlias)
-    endFunctionTypeAlias(typedef, null, ;)
+    endTypedef(typedef, null, ;)
   endTopLevelDeclaration(typedef)
   beginMetadataStar(typedef)
   endMetadataStar(0)
   beginUncategorizedTopLevelDeclaration(typedef)
-    beginFunctionTypeAlias(typedef)
+    beginTypedef(typedef)
       handleIdentifier(sync, typedefDeclaration)
       handleNoTypeVariables(=)
       beginFunctionType(void)
@@ -2032,24 +2032,24 @@
         beginFormalParameters((, MemberKind.GeneralizedFunctionType)
         endFormalParameters(0, (, ), MemberKind.GeneralizedFunctionType)
       endFunctionType(Function, null)
-    endFunctionTypeAlias(typedef, =, ;)
+    endTypedef(typedef, =, ;)
   endTopLevelDeclaration(typedef)
   beginMetadataStar(typedef)
   endMetadataStar(0)
   beginUncategorizedTopLevelDeclaration(typedef)
-    beginFunctionTypeAlias(typedef)
+    beginTypedef(typedef)
       handleVoidKeyword(void)
       handleRecoverableError(Message[ExpectedIdentifierButGotKeyword, 'this' can't be used as an identifier because it's a keyword., Try renaming this to be an identifier that isn't a keyword., {lexeme: this}], this, this)
       handleIdentifier(this, typedefDeclaration)
       handleNoTypeVariables(()
       beginFormalParameters((, MemberKind.FunctionTypeAlias)
       endFormalParameters(0, (, ), MemberKind.FunctionTypeAlias)
-    endFunctionTypeAlias(typedef, null, ;)
+    endTypedef(typedef, null, ;)
   endTopLevelDeclaration(typedef)
   beginMetadataStar(typedef)
   endMetadataStar(0)
   beginUncategorizedTopLevelDeclaration(typedef)
-    beginFunctionTypeAlias(typedef)
+    beginTypedef(typedef)
       handleRecoverableError(Message[ExpectedIdentifierButGotKeyword, 'this' can't be used as an identifier because it's a keyword., Try renaming this to be an identifier that isn't a keyword., {lexeme: this}], this, this)
       handleIdentifier(this, typedefDeclaration)
       handleNoTypeVariables(=)
@@ -2059,24 +2059,24 @@
         beginFormalParameters((, MemberKind.GeneralizedFunctionType)
         endFormalParameters(0, (, ), MemberKind.GeneralizedFunctionType)
       endFunctionType(Function, null)
-    endFunctionTypeAlias(typedef, =, ;)
+    endTypedef(typedef, =, ;)
   endTopLevelDeclaration(typedef)
   beginMetadataStar(typedef)
   endMetadataStar(0)
   beginUncategorizedTopLevelDeclaration(typedef)
-    beginFunctionTypeAlias(typedef)
+    beginTypedef(typedef)
       handleVoidKeyword(void)
       handleRecoverableError(Message[ExpectedIdentifierButGotKeyword, 'throw' can't be used as an identifier because it's a keyword., Try renaming this to be an identifier that isn't a keyword., {lexeme: throw}], throw, throw)
       handleIdentifier(throw, typedefDeclaration)
       handleNoTypeVariables(()
       beginFormalParameters((, MemberKind.FunctionTypeAlias)
       endFormalParameters(0, (, ), MemberKind.FunctionTypeAlias)
-    endFunctionTypeAlias(typedef, null, ;)
+    endTypedef(typedef, null, ;)
   endTopLevelDeclaration(typedef)
   beginMetadataStar(typedef)
   endMetadataStar(0)
   beginUncategorizedTopLevelDeclaration(typedef)
-    beginFunctionTypeAlias(typedef)
+    beginTypedef(typedef)
       handleRecoverableError(Message[ExpectedIdentifierButGotKeyword, 'throw' can't be used as an identifier because it's a keyword., Try renaming this to be an identifier that isn't a keyword., {lexeme: throw}], throw, throw)
       handleIdentifier(throw, typedefDeclaration)
       handleNoTypeVariables(=)
@@ -2086,24 +2086,24 @@
         beginFormalParameters((, MemberKind.GeneralizedFunctionType)
         endFormalParameters(0, (, ), MemberKind.GeneralizedFunctionType)
       endFunctionType(Function, null)
-    endFunctionTypeAlias(typedef, =, ;)
+    endTypedef(typedef, =, ;)
   endTopLevelDeclaration(typedef)
   beginMetadataStar(typedef)
   endMetadataStar(0)
   beginUncategorizedTopLevelDeclaration(typedef)
-    beginFunctionTypeAlias(typedef)
+    beginTypedef(typedef)
       handleVoidKeyword(void)
       handleRecoverableError(Message[ExpectedIdentifierButGotKeyword, 'true' can't be used as an identifier because it's a keyword., Try renaming this to be an identifier that isn't a keyword., {lexeme: true}], true, true)
       handleIdentifier(true, typedefDeclaration)
       handleNoTypeVariables(()
       beginFormalParameters((, MemberKind.FunctionTypeAlias)
       endFormalParameters(0, (, ), MemberKind.FunctionTypeAlias)
-    endFunctionTypeAlias(typedef, null, ;)
+    endTypedef(typedef, null, ;)
   endTopLevelDeclaration(typedef)
   beginMetadataStar(typedef)
   endMetadataStar(0)
   beginUncategorizedTopLevelDeclaration(typedef)
-    beginFunctionTypeAlias(typedef)
+    beginTypedef(typedef)
       handleRecoverableError(Message[ExpectedIdentifierButGotKeyword, 'true' can't be used as an identifier because it's a keyword., Try renaming this to be an identifier that isn't a keyword., {lexeme: true}], true, true)
       handleIdentifier(true, typedefDeclaration)
       handleNoTypeVariables(=)
@@ -2113,24 +2113,24 @@
         beginFormalParameters((, MemberKind.GeneralizedFunctionType)
         endFormalParameters(0, (, ), MemberKind.GeneralizedFunctionType)
       endFunctionType(Function, null)
-    endFunctionTypeAlias(typedef, =, ;)
+    endTypedef(typedef, =, ;)
   endTopLevelDeclaration(typedef)
   beginMetadataStar(typedef)
   endMetadataStar(0)
   beginUncategorizedTopLevelDeclaration(typedef)
-    beginFunctionTypeAlias(typedef)
+    beginTypedef(typedef)
       handleVoidKeyword(void)
       handleRecoverableError(Message[ExpectedIdentifierButGotKeyword, 'try' can't be used as an identifier because it's a keyword., Try renaming this to be an identifier that isn't a keyword., {lexeme: try}], try, try)
       handleIdentifier(try, typedefDeclaration)
       handleNoTypeVariables(()
       beginFormalParameters((, MemberKind.FunctionTypeAlias)
       endFormalParameters(0, (, ), MemberKind.FunctionTypeAlias)
-    endFunctionTypeAlias(typedef, null, ;)
+    endTypedef(typedef, null, ;)
   endTopLevelDeclaration(typedef)
   beginMetadataStar(typedef)
   endMetadataStar(0)
   beginUncategorizedTopLevelDeclaration(typedef)
-    beginFunctionTypeAlias(typedef)
+    beginTypedef(typedef)
       handleRecoverableError(Message[ExpectedIdentifierButGotKeyword, 'try' can't be used as an identifier because it's a keyword., Try renaming this to be an identifier that isn't a keyword., {lexeme: try}], try, try)
       handleIdentifier(try, typedefDeclaration)
       handleNoTypeVariables(=)
@@ -2140,24 +2140,24 @@
         beginFormalParameters((, MemberKind.GeneralizedFunctionType)
         endFormalParameters(0, (, ), MemberKind.GeneralizedFunctionType)
       endFunctionType(Function, null)
-    endFunctionTypeAlias(typedef, =, ;)
+    endTypedef(typedef, =, ;)
   endTopLevelDeclaration(typedef)
   beginMetadataStar(typedef)
   endMetadataStar(0)
   beginUncategorizedTopLevelDeclaration(typedef)
-    beginFunctionTypeAlias(typedef)
+    beginTypedef(typedef)
       handleVoidKeyword(void)
       handleRecoverableError(Message[ExpectedIdentifierButGotKeyword, 'typedef' can't be used as an identifier because it's a keyword., Try renaming this to be an identifier that isn't a keyword., {lexeme: typedef}], typedef, typedef)
       handleIdentifier(typedef, typedefDeclaration)
       handleNoTypeVariables(()
       beginFormalParameters((, MemberKind.FunctionTypeAlias)
       endFormalParameters(0, (, ), MemberKind.FunctionTypeAlias)
-    endFunctionTypeAlias(typedef, null, ;)
+    endTypedef(typedef, null, ;)
   endTopLevelDeclaration(typedef)
   beginMetadataStar(typedef)
   endMetadataStar(0)
   beginUncategorizedTopLevelDeclaration(typedef)
-    beginFunctionTypeAlias(typedef)
+    beginTypedef(typedef)
       handleRecoverableError(Message[ExpectedIdentifierButGotKeyword, 'typedef' can't be used as an identifier because it's a keyword., Try renaming this to be an identifier that isn't a keyword., {lexeme: typedef}], typedef, typedef)
       handleIdentifier(typedef, typedefDeclaration)
       handleNoTypeVariables(=)
@@ -2167,24 +2167,24 @@
         beginFormalParameters((, MemberKind.GeneralizedFunctionType)
         endFormalParameters(0, (, ), MemberKind.GeneralizedFunctionType)
       endFunctionType(Function, null)
-    endFunctionTypeAlias(typedef, =, ;)
+    endTypedef(typedef, =, ;)
   endTopLevelDeclaration(typedef)
   beginMetadataStar(typedef)
   endMetadataStar(0)
   beginUncategorizedTopLevelDeclaration(typedef)
-    beginFunctionTypeAlias(typedef)
+    beginTypedef(typedef)
       handleVoidKeyword(void)
       handleRecoverableError(Message[ExpectedIdentifierButGotKeyword, 'var' can't be used as an identifier because it's a keyword., Try renaming this to be an identifier that isn't a keyword., {lexeme: var}], var, var)
       handleIdentifier(var, typedefDeclaration)
       handleNoTypeVariables(()
       beginFormalParameters((, MemberKind.FunctionTypeAlias)
       endFormalParameters(0, (, ), MemberKind.FunctionTypeAlias)
-    endFunctionTypeAlias(typedef, null, ;)
+    endTypedef(typedef, null, ;)
   endTopLevelDeclaration(typedef)
   beginMetadataStar(typedef)
   endMetadataStar(0)
   beginUncategorizedTopLevelDeclaration(typedef)
-    beginFunctionTypeAlias(typedef)
+    beginTypedef(typedef)
       handleRecoverableError(Message[ExpectedIdentifierButGotKeyword, 'var' can't be used as an identifier because it's a keyword., Try renaming this to be an identifier that isn't a keyword., {lexeme: var}], var, var)
       handleIdentifier(var, typedefDeclaration)
       handleNoTypeVariables(=)
@@ -2194,24 +2194,24 @@
         beginFormalParameters((, MemberKind.GeneralizedFunctionType)
         endFormalParameters(0, (, ), MemberKind.GeneralizedFunctionType)
       endFunctionType(Function, null)
-    endFunctionTypeAlias(typedef, =, ;)
+    endTypedef(typedef, =, ;)
   endTopLevelDeclaration(typedef)
   beginMetadataStar(typedef)
   endMetadataStar(0)
   beginUncategorizedTopLevelDeclaration(typedef)
-    beginFunctionTypeAlias(typedef)
+    beginTypedef(typedef)
       handleVoidKeyword(void)
       handleRecoverableError(Message[ExpectedIdentifierButGotKeyword, 'void' can't be used as an identifier because it's a keyword., Try renaming this to be an identifier that isn't a keyword., {lexeme: void}], void, void)
       handleIdentifier(void, typedefDeclaration)
       handleNoTypeVariables(()
       beginFormalParameters((, MemberKind.FunctionTypeAlias)
       endFormalParameters(0, (, ), MemberKind.FunctionTypeAlias)
-    endFunctionTypeAlias(typedef, null, ;)
+    endTypedef(typedef, null, ;)
   endTopLevelDeclaration(typedef)
   beginMetadataStar(typedef)
   endMetadataStar(0)
   beginUncategorizedTopLevelDeclaration(typedef)
-    beginFunctionTypeAlias(typedef)
+    beginTypedef(typedef)
       handleVoidKeyword(void)
       handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got '='., Try inserting an identifier before '='., {lexeme: =}], =, =)
       handleIdentifier(, typedefDeclaration)
@@ -2220,7 +2220,7 @@
       beginFormalParameters((, MemberKind.FunctionTypeAlias)
       endFormalParameters(0, (, ), MemberKind.FunctionTypeAlias)
       handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], =, =)
-    endFunctionTypeAlias(typedef, null, ;)
+    endTypedef(typedef, null, ;)
   endTopLevelDeclaration(=)
   beginMetadataStar(=)
   endMetadataStar(0)
@@ -2245,19 +2245,19 @@
   beginMetadataStar(typedef)
   endMetadataStar(0)
   beginUncategorizedTopLevelDeclaration(typedef)
-    beginFunctionTypeAlias(typedef)
+    beginTypedef(typedef)
       handleVoidKeyword(void)
       handleRecoverableError(Message[ExpectedIdentifierButGotKeyword, 'while' can't be used as an identifier because it's a keyword., Try renaming this to be an identifier that isn't a keyword., {lexeme: while}], while, while)
       handleIdentifier(while, typedefDeclaration)
       handleNoTypeVariables(()
       beginFormalParameters((, MemberKind.FunctionTypeAlias)
       endFormalParameters(0, (, ), MemberKind.FunctionTypeAlias)
-    endFunctionTypeAlias(typedef, null, ;)
+    endTypedef(typedef, null, ;)
   endTopLevelDeclaration(typedef)
   beginMetadataStar(typedef)
   endMetadataStar(0)
   beginUncategorizedTopLevelDeclaration(typedef)
-    beginFunctionTypeAlias(typedef)
+    beginTypedef(typedef)
       handleRecoverableError(Message[ExpectedIdentifierButGotKeyword, 'while' can't be used as an identifier because it's a keyword., Try renaming this to be an identifier that isn't a keyword., {lexeme: while}], while, while)
       handleIdentifier(while, typedefDeclaration)
       handleNoTypeVariables(=)
@@ -2267,24 +2267,24 @@
         beginFormalParameters((, MemberKind.GeneralizedFunctionType)
         endFormalParameters(0, (, ), MemberKind.GeneralizedFunctionType)
       endFunctionType(Function, null)
-    endFunctionTypeAlias(typedef, =, ;)
+    endTypedef(typedef, =, ;)
   endTopLevelDeclaration(typedef)
   beginMetadataStar(typedef)
   endMetadataStar(0)
   beginUncategorizedTopLevelDeclaration(typedef)
-    beginFunctionTypeAlias(typedef)
+    beginTypedef(typedef)
       handleVoidKeyword(void)
       handleRecoverableError(Message[ExpectedIdentifierButGotKeyword, 'with' can't be used as an identifier because it's a keyword., Try renaming this to be an identifier that isn't a keyword., {lexeme: with}], with, with)
       handleIdentifier(with, typedefDeclaration)
       handleNoTypeVariables(()
       beginFormalParameters((, MemberKind.FunctionTypeAlias)
       endFormalParameters(0, (, ), MemberKind.FunctionTypeAlias)
-    endFunctionTypeAlias(typedef, null, ;)
+    endTypedef(typedef, null, ;)
   endTopLevelDeclaration(typedef)
   beginMetadataStar(typedef)
   endMetadataStar(0)
   beginUncategorizedTopLevelDeclaration(typedef)
-    beginFunctionTypeAlias(typedef)
+    beginTypedef(typedef)
       handleRecoverableError(Message[ExpectedIdentifierButGotKeyword, 'with' can't be used as an identifier because it's a keyword., Try renaming this to be an identifier that isn't a keyword., {lexeme: with}], with, with)
       handleIdentifier(with, typedefDeclaration)
       handleNoTypeVariables(=)
@@ -2294,23 +2294,23 @@
         beginFormalParameters((, MemberKind.GeneralizedFunctionType)
         endFormalParameters(0, (, ), MemberKind.GeneralizedFunctionType)
       endFunctionType(Function, null)
-    endFunctionTypeAlias(typedef, =, ;)
+    endTypedef(typedef, =, ;)
   endTopLevelDeclaration(typedef)
   beginMetadataStar(typedef)
   endMetadataStar(0)
   beginUncategorizedTopLevelDeclaration(typedef)
-    beginFunctionTypeAlias(typedef)
+    beginTypedef(typedef)
       handleVoidKeyword(void)
       handleIdentifier(yield, typedefDeclaration)
       handleNoTypeVariables(()
       beginFormalParameters((, MemberKind.FunctionTypeAlias)
       endFormalParameters(0, (, ), MemberKind.FunctionTypeAlias)
-    endFunctionTypeAlias(typedef, null, ;)
+    endTypedef(typedef, null, ;)
   endTopLevelDeclaration(typedef)
   beginMetadataStar(typedef)
   endMetadataStar(0)
   beginUncategorizedTopLevelDeclaration(typedef)
-    beginFunctionTypeAlias(typedef)
+    beginTypedef(typedef)
       handleIdentifier(yield, typedefDeclaration)
       handleNoTypeVariables(=)
       beginFunctionType(void)
@@ -2319,6 +2319,6 @@
         beginFormalParameters((, MemberKind.GeneralizedFunctionType)
         endFormalParameters(0, (, ), MemberKind.GeneralizedFunctionType)
       endFunctionType(Function, null)
-    endFunctionTypeAlias(typedef, =, ;)
+    endTypedef(typedef, =, ;)
   endTopLevelDeclaration()
 endCompilationUnit(140, )
diff --git a/pkg/front_end/parser_testcases/error_recovery/keyword_named_typedefs.dart.intertwined.expect b/pkg/front_end/parser_testcases/error_recovery/keyword_named_typedefs.dart.intertwined.expect
index 45f76b0..77d7a90 100644
--- a/pkg/front_end/parser_testcases/error_recovery/keyword_named_typedefs.dart.intertwined.expect
+++ b/pkg/front_end/parser_testcases/error_recovery/keyword_named_typedefs.dart.intertwined.expect
@@ -10,7 +10,7 @@
       parseTopLevelKeywordModifiers(, typedef)
       parseTypedef(typedef)
         listener: beginUncategorizedTopLevelDeclaration(typedef)
-        listener: beginFunctionTypeAlias(typedef)
+        listener: beginTypedef(typedef)
         listener: handleVoidKeyword(void)
         ensureIdentifierPotentiallyRecovered(void, typedefDeclaration, true)
           reportRecoverableErrorWithToken(abstract, Instance of 'Template<(Token) => Message>')
@@ -22,7 +22,7 @@
             listener: beginFormalParameters((, MemberKind.FunctionTypeAlias)
             listener: endFormalParameters(0, (, ), MemberKind.FunctionTypeAlias)
         ensureSemicolon())
-        listener: endFunctionTypeAlias(typedef, null, ;)
+        listener: endTypedef(typedef, null, ;)
   listener: endTopLevelDeclaration(typedef)
   parseTopLevelDeclarationImpl(;, Instance of 'DirectiveContext')
     parseMetadataStar(;)
@@ -32,7 +32,7 @@
       parseTopLevelKeywordModifiers(;, typedef)
       parseTypedef(typedef)
         listener: beginUncategorizedTopLevelDeclaration(typedef)
-        listener: beginFunctionTypeAlias(typedef)
+        listener: beginTypedef(typedef)
         ensureIdentifierPotentiallyRecovered(typedef, typedefDeclaration, true)
           reportRecoverableErrorWithToken(abstract, Instance of 'Template<(Token) => Message>')
             listener: handleRecoverableError(Message[ExpectedIdentifierButGotKeyword, 'abstract' can't be used as an identifier because it's a keyword., Try renaming this to be an identifier that isn't a keyword., {lexeme: abstract}], abstract, abstract)
@@ -47,7 +47,7 @@
             listener: endFormalParameters(0, (, ), MemberKind.GeneralizedFunctionType)
         listener: endFunctionType(Function, null)
         ensureSemicolon())
-        listener: endFunctionTypeAlias(typedef, =, ;)
+        listener: endTypedef(typedef, =, ;)
   listener: endTopLevelDeclaration(typedef)
   parseTopLevelDeclarationImpl(;, Instance of 'DirectiveContext')
     parseMetadataStar(;)
@@ -57,7 +57,7 @@
       parseTopLevelKeywordModifiers(;, typedef)
       parseTypedef(typedef)
         listener: beginUncategorizedTopLevelDeclaration(typedef)
-        listener: beginFunctionTypeAlias(typedef)
+        listener: beginTypedef(typedef)
         listener: handleVoidKeyword(void)
         ensureIdentifierPotentiallyRecovered(void, typedefDeclaration, true)
           reportRecoverableErrorWithToken(as, Instance of 'Template<(Token) => Message>')
@@ -69,7 +69,7 @@
             listener: beginFormalParameters((, MemberKind.FunctionTypeAlias)
             listener: endFormalParameters(0, (, ), MemberKind.FunctionTypeAlias)
         ensureSemicolon())
-        listener: endFunctionTypeAlias(typedef, null, ;)
+        listener: endTypedef(typedef, null, ;)
   listener: endTopLevelDeclaration(typedef)
   parseTopLevelDeclarationImpl(;, Instance of 'DirectiveContext')
     parseMetadataStar(;)
@@ -79,7 +79,7 @@
       parseTopLevelKeywordModifiers(;, typedef)
       parseTypedef(typedef)
         listener: beginUncategorizedTopLevelDeclaration(typedef)
-        listener: beginFunctionTypeAlias(typedef)
+        listener: beginTypedef(typedef)
         ensureIdentifierPotentiallyRecovered(typedef, typedefDeclaration, true)
           reportRecoverableErrorWithToken(as, Instance of 'Template<(Token) => Message>')
             listener: handleRecoverableError(Message[ExpectedIdentifierButGotKeyword, 'as' can't be used as an identifier because it's a keyword., Try renaming this to be an identifier that isn't a keyword., {lexeme: as}], as, as)
@@ -94,7 +94,7 @@
             listener: endFormalParameters(0, (, ), MemberKind.GeneralizedFunctionType)
         listener: endFunctionType(Function, null)
         ensureSemicolon())
-        listener: endFunctionTypeAlias(typedef, =, ;)
+        listener: endTypedef(typedef, =, ;)
   listener: endTopLevelDeclaration(typedef)
   parseTopLevelDeclarationImpl(;, Instance of 'DirectiveContext')
     parseMetadataStar(;)
@@ -104,7 +104,7 @@
       parseTopLevelKeywordModifiers(;, typedef)
       parseTypedef(typedef)
         listener: beginUncategorizedTopLevelDeclaration(typedef)
-        listener: beginFunctionTypeAlias(typedef)
+        listener: beginTypedef(typedef)
         listener: handleVoidKeyword(void)
         ensureIdentifierPotentiallyRecovered(void, typedefDeclaration, true)
           reportRecoverableErrorWithToken(assert, Instance of 'Template<(Token) => Message>')
@@ -116,7 +116,7 @@
             listener: beginFormalParameters((, MemberKind.FunctionTypeAlias)
             listener: endFormalParameters(0, (, ), MemberKind.FunctionTypeAlias)
         ensureSemicolon())
-        listener: endFunctionTypeAlias(typedef, null, ;)
+        listener: endTypedef(typedef, null, ;)
   listener: endTopLevelDeclaration(typedef)
   parseTopLevelDeclarationImpl(;, Instance of 'DirectiveContext')
     parseMetadataStar(;)
@@ -126,7 +126,7 @@
       parseTopLevelKeywordModifiers(;, typedef)
       parseTypedef(typedef)
         listener: beginUncategorizedTopLevelDeclaration(typedef)
-        listener: beginFunctionTypeAlias(typedef)
+        listener: beginTypedef(typedef)
         ensureIdentifierPotentiallyRecovered(typedef, typedefDeclaration, true)
           reportRecoverableErrorWithToken(assert, Instance of 'Template<(Token) => Message>')
             listener: handleRecoverableError(Message[ExpectedIdentifierButGotKeyword, 'assert' can't be used as an identifier because it's a keyword., Try renaming this to be an identifier that isn't a keyword., {lexeme: assert}], assert, assert)
@@ -141,7 +141,7 @@
             listener: endFormalParameters(0, (, ), MemberKind.GeneralizedFunctionType)
         listener: endFunctionType(Function, null)
         ensureSemicolon())
-        listener: endFunctionTypeAlias(typedef, =, ;)
+        listener: endTypedef(typedef, =, ;)
   listener: endTopLevelDeclaration(typedef)
   parseTopLevelDeclarationImpl(;, Instance of 'DirectiveContext')
     parseMetadataStar(;)
@@ -151,7 +151,7 @@
       parseTopLevelKeywordModifiers(;, typedef)
       parseTypedef(typedef)
         listener: beginUncategorizedTopLevelDeclaration(typedef)
-        listener: beginFunctionTypeAlias(typedef)
+        listener: beginTypedef(typedef)
         listener: handleVoidKeyword(void)
         ensureIdentifierPotentiallyRecovered(void, typedefDeclaration, true)
           listener: handleIdentifier(async, typedefDeclaration)
@@ -161,7 +161,7 @@
             listener: beginFormalParameters((, MemberKind.FunctionTypeAlias)
             listener: endFormalParameters(0, (, ), MemberKind.FunctionTypeAlias)
         ensureSemicolon())
-        listener: endFunctionTypeAlias(typedef, null, ;)
+        listener: endTypedef(typedef, null, ;)
   listener: endTopLevelDeclaration(typedef)
   parseTopLevelDeclarationImpl(;, Instance of 'DirectiveContext')
     parseMetadataStar(;)
@@ -171,7 +171,7 @@
       parseTopLevelKeywordModifiers(;, typedef)
       parseTypedef(typedef)
         listener: beginUncategorizedTopLevelDeclaration(typedef)
-        listener: beginFunctionTypeAlias(typedef)
+        listener: beginTypedef(typedef)
         ensureIdentifierPotentiallyRecovered(typedef, typedefDeclaration, true)
           listener: handleIdentifier(async, typedefDeclaration)
         listener: handleNoTypeVariables(=)
@@ -184,7 +184,7 @@
             listener: endFormalParameters(0, (, ), MemberKind.GeneralizedFunctionType)
         listener: endFunctionType(Function, null)
         ensureSemicolon())
-        listener: endFunctionTypeAlias(typedef, =, ;)
+        listener: endTypedef(typedef, =, ;)
   listener: endTopLevelDeclaration(typedef)
   parseTopLevelDeclarationImpl(;, Instance of 'DirectiveContext')
     parseMetadataStar(;)
@@ -194,7 +194,7 @@
       parseTopLevelKeywordModifiers(;, typedef)
       parseTypedef(typedef)
         listener: beginUncategorizedTopLevelDeclaration(typedef)
-        listener: beginFunctionTypeAlias(typedef)
+        listener: beginTypedef(typedef)
         listener: handleVoidKeyword(void)
         ensureIdentifierPotentiallyRecovered(void, typedefDeclaration, true)
           listener: handleIdentifier(await, typedefDeclaration)
@@ -204,7 +204,7 @@
             listener: beginFormalParameters((, MemberKind.FunctionTypeAlias)
             listener: endFormalParameters(0, (, ), MemberKind.FunctionTypeAlias)
         ensureSemicolon())
-        listener: endFunctionTypeAlias(typedef, null, ;)
+        listener: endTypedef(typedef, null, ;)
   listener: endTopLevelDeclaration(typedef)
   parseTopLevelDeclarationImpl(;, Instance of 'DirectiveContext')
     parseMetadataStar(;)
@@ -214,7 +214,7 @@
       parseTopLevelKeywordModifiers(;, typedef)
       parseTypedef(typedef)
         listener: beginUncategorizedTopLevelDeclaration(typedef)
-        listener: beginFunctionTypeAlias(typedef)
+        listener: beginTypedef(typedef)
         ensureIdentifierPotentiallyRecovered(typedef, typedefDeclaration, true)
           listener: handleIdentifier(await, typedefDeclaration)
         listener: handleNoTypeVariables(=)
@@ -227,7 +227,7 @@
             listener: endFormalParameters(0, (, ), MemberKind.GeneralizedFunctionType)
         listener: endFunctionType(Function, null)
         ensureSemicolon())
-        listener: endFunctionTypeAlias(typedef, =, ;)
+        listener: endTypedef(typedef, =, ;)
   listener: endTopLevelDeclaration(typedef)
   parseTopLevelDeclarationImpl(;, Instance of 'DirectiveContext')
     parseMetadataStar(;)
@@ -237,7 +237,7 @@
       parseTopLevelKeywordModifiers(;, typedef)
       parseTypedef(typedef)
         listener: beginUncategorizedTopLevelDeclaration(typedef)
-        listener: beginFunctionTypeAlias(typedef)
+        listener: beginTypedef(typedef)
         listener: handleVoidKeyword(void)
         ensureIdentifierPotentiallyRecovered(void, typedefDeclaration, true)
           reportRecoverableErrorWithToken(break, Instance of 'Template<(Token) => Message>')
@@ -249,7 +249,7 @@
             listener: beginFormalParameters((, MemberKind.FunctionTypeAlias)
             listener: endFormalParameters(0, (, ), MemberKind.FunctionTypeAlias)
         ensureSemicolon())
-        listener: endFunctionTypeAlias(typedef, null, ;)
+        listener: endTypedef(typedef, null, ;)
   listener: endTopLevelDeclaration(typedef)
   parseTopLevelDeclarationImpl(;, Instance of 'DirectiveContext')
     parseMetadataStar(;)
@@ -259,7 +259,7 @@
       parseTopLevelKeywordModifiers(;, typedef)
       parseTypedef(typedef)
         listener: beginUncategorizedTopLevelDeclaration(typedef)
-        listener: beginFunctionTypeAlias(typedef)
+        listener: beginTypedef(typedef)
         ensureIdentifierPotentiallyRecovered(typedef, typedefDeclaration, true)
           reportRecoverableErrorWithToken(break, Instance of 'Template<(Token) => Message>')
             listener: handleRecoverableError(Message[ExpectedIdentifierButGotKeyword, 'break' can't be used as an identifier because it's a keyword., Try renaming this to be an identifier that isn't a keyword., {lexeme: break}], break, break)
@@ -274,7 +274,7 @@
             listener: endFormalParameters(0, (, ), MemberKind.GeneralizedFunctionType)
         listener: endFunctionType(Function, null)
         ensureSemicolon())
-        listener: endFunctionTypeAlias(typedef, =, ;)
+        listener: endTypedef(typedef, =, ;)
   listener: endTopLevelDeclaration(typedef)
   parseTopLevelDeclarationImpl(;, Instance of 'DirectiveContext')
     parseMetadataStar(;)
@@ -284,7 +284,7 @@
       parseTopLevelKeywordModifiers(;, typedef)
       parseTypedef(typedef)
         listener: beginUncategorizedTopLevelDeclaration(typedef)
-        listener: beginFunctionTypeAlias(typedef)
+        listener: beginTypedef(typedef)
         listener: handleVoidKeyword(void)
         ensureIdentifierPotentiallyRecovered(void, typedefDeclaration, true)
           reportRecoverableErrorWithToken(case, Instance of 'Template<(Token) => Message>')
@@ -296,7 +296,7 @@
             listener: beginFormalParameters((, MemberKind.FunctionTypeAlias)
             listener: endFormalParameters(0, (, ), MemberKind.FunctionTypeAlias)
         ensureSemicolon())
-        listener: endFunctionTypeAlias(typedef, null, ;)
+        listener: endTypedef(typedef, null, ;)
   listener: endTopLevelDeclaration(typedef)
   parseTopLevelDeclarationImpl(;, Instance of 'DirectiveContext')
     parseMetadataStar(;)
@@ -306,7 +306,7 @@
       parseTopLevelKeywordModifiers(;, typedef)
       parseTypedef(typedef)
         listener: beginUncategorizedTopLevelDeclaration(typedef)
-        listener: beginFunctionTypeAlias(typedef)
+        listener: beginTypedef(typedef)
         ensureIdentifierPotentiallyRecovered(typedef, typedefDeclaration, true)
           reportRecoverableErrorWithToken(case, Instance of 'Template<(Token) => Message>')
             listener: handleRecoverableError(Message[ExpectedIdentifierButGotKeyword, 'case' can't be used as an identifier because it's a keyword., Try renaming this to be an identifier that isn't a keyword., {lexeme: case}], case, case)
@@ -321,7 +321,7 @@
             listener: endFormalParameters(0, (, ), MemberKind.GeneralizedFunctionType)
         listener: endFunctionType(Function, null)
         ensureSemicolon())
-        listener: endFunctionTypeAlias(typedef, =, ;)
+        listener: endTypedef(typedef, =, ;)
   listener: endTopLevelDeclaration(typedef)
   parseTopLevelDeclarationImpl(;, Instance of 'DirectiveContext')
     parseMetadataStar(;)
@@ -331,7 +331,7 @@
       parseTopLevelKeywordModifiers(;, typedef)
       parseTypedef(typedef)
         listener: beginUncategorizedTopLevelDeclaration(typedef)
-        listener: beginFunctionTypeAlias(typedef)
+        listener: beginTypedef(typedef)
         listener: handleVoidKeyword(void)
         ensureIdentifierPotentiallyRecovered(void, typedefDeclaration, true)
           reportRecoverableErrorWithToken(catch, Instance of 'Template<(Token) => Message>')
@@ -343,7 +343,7 @@
             listener: beginFormalParameters((, MemberKind.FunctionTypeAlias)
             listener: endFormalParameters(0, (, ), MemberKind.FunctionTypeAlias)
         ensureSemicolon())
-        listener: endFunctionTypeAlias(typedef, null, ;)
+        listener: endTypedef(typedef, null, ;)
   listener: endTopLevelDeclaration(typedef)
   parseTopLevelDeclarationImpl(;, Instance of 'DirectiveContext')
     parseMetadataStar(;)
@@ -353,7 +353,7 @@
       parseTopLevelKeywordModifiers(;, typedef)
       parseTypedef(typedef)
         listener: beginUncategorizedTopLevelDeclaration(typedef)
-        listener: beginFunctionTypeAlias(typedef)
+        listener: beginTypedef(typedef)
         ensureIdentifierPotentiallyRecovered(typedef, typedefDeclaration, true)
           reportRecoverableErrorWithToken(catch, Instance of 'Template<(Token) => Message>')
             listener: handleRecoverableError(Message[ExpectedIdentifierButGotKeyword, 'catch' can't be used as an identifier because it's a keyword., Try renaming this to be an identifier that isn't a keyword., {lexeme: catch}], catch, catch)
@@ -368,7 +368,7 @@
             listener: endFormalParameters(0, (, ), MemberKind.GeneralizedFunctionType)
         listener: endFunctionType(Function, null)
         ensureSemicolon())
-        listener: endFunctionTypeAlias(typedef, =, ;)
+        listener: endTypedef(typedef, =, ;)
   listener: endTopLevelDeclaration(typedef)
   parseTopLevelDeclarationImpl(;, Instance of 'DirectiveContext')
     parseMetadataStar(;)
@@ -378,7 +378,7 @@
       parseTopLevelKeywordModifiers(;, typedef)
       parseTypedef(typedef)
         listener: beginUncategorizedTopLevelDeclaration(typedef)
-        listener: beginFunctionTypeAlias(typedef)
+        listener: beginTypedef(typedef)
         listener: handleVoidKeyword(void)
         ensureIdentifierPotentiallyRecovered(void, typedefDeclaration, true)
           reportRecoverableErrorWithToken(class, Instance of 'Template<(Token) => Message>')
@@ -390,7 +390,7 @@
             listener: beginFormalParameters((, MemberKind.FunctionTypeAlias)
             listener: endFormalParameters(0, (, ), MemberKind.FunctionTypeAlias)
         ensureSemicolon())
-        listener: endFunctionTypeAlias(typedef, null, ;)
+        listener: endTypedef(typedef, null, ;)
   listener: endTopLevelDeclaration(typedef)
   parseTopLevelDeclarationImpl(;, Instance of 'DirectiveContext')
     parseMetadataStar(;)
@@ -400,7 +400,7 @@
       parseTopLevelKeywordModifiers(;, typedef)
       parseTypedef(typedef)
         listener: beginUncategorizedTopLevelDeclaration(typedef)
-        listener: beginFunctionTypeAlias(typedef)
+        listener: beginTypedef(typedef)
         ensureIdentifierPotentiallyRecovered(typedef, typedefDeclaration, true)
           reportRecoverableErrorWithToken(class, Instance of 'Template<(Token) => Message>')
             listener: handleRecoverableError(Message[ExpectedIdentifierButGotKeyword, 'class' can't be used as an identifier because it's a keyword., Try renaming this to be an identifier that isn't a keyword., {lexeme: class}], class, class)
@@ -415,7 +415,7 @@
             listener: endFormalParameters(0, (, ), MemberKind.GeneralizedFunctionType)
         listener: endFunctionType(Function, null)
         ensureSemicolon())
-        listener: endFunctionTypeAlias(typedef, =, ;)
+        listener: endTypedef(typedef, =, ;)
   listener: endTopLevelDeclaration(typedef)
   parseTopLevelDeclarationImpl(;, Instance of 'DirectiveContext')
     parseMetadataStar(;)
@@ -425,7 +425,7 @@
       parseTopLevelKeywordModifiers(;, typedef)
       parseTypedef(typedef)
         listener: beginUncategorizedTopLevelDeclaration(typedef)
-        listener: beginFunctionTypeAlias(typedef)
+        listener: beginTypedef(typedef)
         listener: handleVoidKeyword(void)
         ensureIdentifierPotentiallyRecovered(void, typedefDeclaration, true)
           reportRecoverableErrorWithToken(const, Instance of 'Template<(Token) => Message>')
@@ -437,7 +437,7 @@
             listener: beginFormalParameters((, MemberKind.FunctionTypeAlias)
             listener: endFormalParameters(0, (, ), MemberKind.FunctionTypeAlias)
         ensureSemicolon())
-        listener: endFunctionTypeAlias(typedef, null, ;)
+        listener: endTypedef(typedef, null, ;)
   listener: endTopLevelDeclaration(typedef)
   parseTopLevelDeclarationImpl(;, Instance of 'DirectiveContext')
     parseMetadataStar(;)
@@ -447,7 +447,7 @@
       parseTopLevelKeywordModifiers(;, typedef)
       parseTypedef(typedef)
         listener: beginUncategorizedTopLevelDeclaration(typedef)
-        listener: beginFunctionTypeAlias(typedef)
+        listener: beginTypedef(typedef)
         ensureIdentifierPotentiallyRecovered(typedef, typedefDeclaration, true)
           reportRecoverableErrorWithToken(const, Instance of 'Template<(Token) => Message>')
             listener: handleRecoverableError(Message[ExpectedIdentifierButGotKeyword, 'const' can't be used as an identifier because it's a keyword., Try renaming this to be an identifier that isn't a keyword., {lexeme: const}], const, const)
@@ -462,7 +462,7 @@
             listener: endFormalParameters(0, (, ), MemberKind.GeneralizedFunctionType)
         listener: endFunctionType(Function, null)
         ensureSemicolon())
-        listener: endFunctionTypeAlias(typedef, =, ;)
+        listener: endTypedef(typedef, =, ;)
   listener: endTopLevelDeclaration(typedef)
   parseTopLevelDeclarationImpl(;, Instance of 'DirectiveContext')
     parseMetadataStar(;)
@@ -472,7 +472,7 @@
       parseTopLevelKeywordModifiers(;, typedef)
       parseTypedef(typedef)
         listener: beginUncategorizedTopLevelDeclaration(typedef)
-        listener: beginFunctionTypeAlias(typedef)
+        listener: beginTypedef(typedef)
         listener: handleVoidKeyword(void)
         ensureIdentifierPotentiallyRecovered(void, typedefDeclaration, true)
           reportRecoverableErrorWithToken(continue, Instance of 'Template<(Token) => Message>')
@@ -484,7 +484,7 @@
             listener: beginFormalParameters((, MemberKind.FunctionTypeAlias)
             listener: endFormalParameters(0, (, ), MemberKind.FunctionTypeAlias)
         ensureSemicolon())
-        listener: endFunctionTypeAlias(typedef, null, ;)
+        listener: endTypedef(typedef, null, ;)
   listener: endTopLevelDeclaration(typedef)
   parseTopLevelDeclarationImpl(;, Instance of 'DirectiveContext')
     parseMetadataStar(;)
@@ -494,7 +494,7 @@
       parseTopLevelKeywordModifiers(;, typedef)
       parseTypedef(typedef)
         listener: beginUncategorizedTopLevelDeclaration(typedef)
-        listener: beginFunctionTypeAlias(typedef)
+        listener: beginTypedef(typedef)
         ensureIdentifierPotentiallyRecovered(typedef, typedefDeclaration, true)
           reportRecoverableErrorWithToken(continue, Instance of 'Template<(Token) => Message>')
             listener: handleRecoverableError(Message[ExpectedIdentifierButGotKeyword, 'continue' can't be used as an identifier because it's a keyword., Try renaming this to be an identifier that isn't a keyword., {lexeme: continue}], continue, continue)
@@ -509,7 +509,7 @@
             listener: endFormalParameters(0, (, ), MemberKind.GeneralizedFunctionType)
         listener: endFunctionType(Function, null)
         ensureSemicolon())
-        listener: endFunctionTypeAlias(typedef, =, ;)
+        listener: endTypedef(typedef, =, ;)
   listener: endTopLevelDeclaration(typedef)
   parseTopLevelDeclarationImpl(;, Instance of 'DirectiveContext')
     parseMetadataStar(;)
@@ -519,7 +519,7 @@
       parseTopLevelKeywordModifiers(;, typedef)
       parseTypedef(typedef)
         listener: beginUncategorizedTopLevelDeclaration(typedef)
-        listener: beginFunctionTypeAlias(typedef)
+        listener: beginTypedef(typedef)
         listener: handleVoidKeyword(void)
         ensureIdentifierPotentiallyRecovered(void, typedefDeclaration, true)
           reportRecoverableErrorWithToken(covariant, Instance of 'Template<(Token) => Message>')
@@ -531,7 +531,7 @@
             listener: beginFormalParameters((, MemberKind.FunctionTypeAlias)
             listener: endFormalParameters(0, (, ), MemberKind.FunctionTypeAlias)
         ensureSemicolon())
-        listener: endFunctionTypeAlias(typedef, null, ;)
+        listener: endTypedef(typedef, null, ;)
   listener: endTopLevelDeclaration(typedef)
   parseTopLevelDeclarationImpl(;, Instance of 'DirectiveContext')
     parseMetadataStar(;)
@@ -541,7 +541,7 @@
       parseTopLevelKeywordModifiers(;, typedef)
       parseTypedef(typedef)
         listener: beginUncategorizedTopLevelDeclaration(typedef)
-        listener: beginFunctionTypeAlias(typedef)
+        listener: beginTypedef(typedef)
         ensureIdentifierPotentiallyRecovered(typedef, typedefDeclaration, true)
           reportRecoverableErrorWithToken(covariant, Instance of 'Template<(Token) => Message>')
             listener: handleRecoverableError(Message[ExpectedIdentifierButGotKeyword, 'covariant' can't be used as an identifier because it's a keyword., Try renaming this to be an identifier that isn't a keyword., {lexeme: covariant}], covariant, covariant)
@@ -556,7 +556,7 @@
             listener: endFormalParameters(0, (, ), MemberKind.GeneralizedFunctionType)
         listener: endFunctionType(Function, null)
         ensureSemicolon())
-        listener: endFunctionTypeAlias(typedef, =, ;)
+        listener: endTypedef(typedef, =, ;)
   listener: endTopLevelDeclaration(typedef)
   parseTopLevelDeclarationImpl(;, Instance of 'DirectiveContext')
     parseMetadataStar(;)
@@ -566,7 +566,7 @@
       parseTopLevelKeywordModifiers(;, typedef)
       parseTypedef(typedef)
         listener: beginUncategorizedTopLevelDeclaration(typedef)
-        listener: beginFunctionTypeAlias(typedef)
+        listener: beginTypedef(typedef)
         listener: handleVoidKeyword(void)
         ensureIdentifierPotentiallyRecovered(void, typedefDeclaration, true)
           reportRecoverableErrorWithToken(default, Instance of 'Template<(Token) => Message>')
@@ -578,7 +578,7 @@
             listener: beginFormalParameters((, MemberKind.FunctionTypeAlias)
             listener: endFormalParameters(0, (, ), MemberKind.FunctionTypeAlias)
         ensureSemicolon())
-        listener: endFunctionTypeAlias(typedef, null, ;)
+        listener: endTypedef(typedef, null, ;)
   listener: endTopLevelDeclaration(typedef)
   parseTopLevelDeclarationImpl(;, Instance of 'DirectiveContext')
     parseMetadataStar(;)
@@ -588,7 +588,7 @@
       parseTopLevelKeywordModifiers(;, typedef)
       parseTypedef(typedef)
         listener: beginUncategorizedTopLevelDeclaration(typedef)
-        listener: beginFunctionTypeAlias(typedef)
+        listener: beginTypedef(typedef)
         ensureIdentifierPotentiallyRecovered(typedef, typedefDeclaration, true)
           reportRecoverableErrorWithToken(default, Instance of 'Template<(Token) => Message>')
             listener: handleRecoverableError(Message[ExpectedIdentifierButGotKeyword, 'default' can't be used as an identifier because it's a keyword., Try renaming this to be an identifier that isn't a keyword., {lexeme: default}], default, default)
@@ -603,7 +603,7 @@
             listener: endFormalParameters(0, (, ), MemberKind.GeneralizedFunctionType)
         listener: endFunctionType(Function, null)
         ensureSemicolon())
-        listener: endFunctionTypeAlias(typedef, =, ;)
+        listener: endTypedef(typedef, =, ;)
   listener: endTopLevelDeclaration(typedef)
   parseTopLevelDeclarationImpl(;, Instance of 'DirectiveContext')
     parseMetadataStar(;)
@@ -613,7 +613,7 @@
       parseTopLevelKeywordModifiers(;, typedef)
       parseTypedef(typedef)
         listener: beginUncategorizedTopLevelDeclaration(typedef)
-        listener: beginFunctionTypeAlias(typedef)
+        listener: beginTypedef(typedef)
         listener: handleVoidKeyword(void)
         ensureIdentifierPotentiallyRecovered(void, typedefDeclaration, true)
           reportRecoverableErrorWithToken(deferred, Instance of 'Template<(Token) => Message>')
@@ -625,7 +625,7 @@
             listener: beginFormalParameters((, MemberKind.FunctionTypeAlias)
             listener: endFormalParameters(0, (, ), MemberKind.FunctionTypeAlias)
         ensureSemicolon())
-        listener: endFunctionTypeAlias(typedef, null, ;)
+        listener: endTypedef(typedef, null, ;)
   listener: endTopLevelDeclaration(typedef)
   parseTopLevelDeclarationImpl(;, Instance of 'DirectiveContext')
     parseMetadataStar(;)
@@ -635,7 +635,7 @@
       parseTopLevelKeywordModifiers(;, typedef)
       parseTypedef(typedef)
         listener: beginUncategorizedTopLevelDeclaration(typedef)
-        listener: beginFunctionTypeAlias(typedef)
+        listener: beginTypedef(typedef)
         ensureIdentifierPotentiallyRecovered(typedef, typedefDeclaration, true)
           reportRecoverableErrorWithToken(deferred, Instance of 'Template<(Token) => Message>')
             listener: handleRecoverableError(Message[ExpectedIdentifierButGotKeyword, 'deferred' can't be used as an identifier because it's a keyword., Try renaming this to be an identifier that isn't a keyword., {lexeme: deferred}], deferred, deferred)
@@ -650,7 +650,7 @@
             listener: endFormalParameters(0, (, ), MemberKind.GeneralizedFunctionType)
         listener: endFunctionType(Function, null)
         ensureSemicolon())
-        listener: endFunctionTypeAlias(typedef, =, ;)
+        listener: endTypedef(typedef, =, ;)
   listener: endTopLevelDeclaration(typedef)
   parseTopLevelDeclarationImpl(;, Instance of 'DirectiveContext')
     parseMetadataStar(;)
@@ -660,7 +660,7 @@
       parseTopLevelKeywordModifiers(;, typedef)
       parseTypedef(typedef)
         listener: beginUncategorizedTopLevelDeclaration(typedef)
-        listener: beginFunctionTypeAlias(typedef)
+        listener: beginTypedef(typedef)
         listener: handleVoidKeyword(void)
         ensureIdentifierPotentiallyRecovered(void, typedefDeclaration, true)
           reportRecoverableErrorWithToken(do, Instance of 'Template<(Token) => Message>')
@@ -672,7 +672,7 @@
             listener: beginFormalParameters((, MemberKind.FunctionTypeAlias)
             listener: endFormalParameters(0, (, ), MemberKind.FunctionTypeAlias)
         ensureSemicolon())
-        listener: endFunctionTypeAlias(typedef, null, ;)
+        listener: endTypedef(typedef, null, ;)
   listener: endTopLevelDeclaration(typedef)
   parseTopLevelDeclarationImpl(;, Instance of 'DirectiveContext')
     parseMetadataStar(;)
@@ -682,7 +682,7 @@
       parseTopLevelKeywordModifiers(;, typedef)
       parseTypedef(typedef)
         listener: beginUncategorizedTopLevelDeclaration(typedef)
-        listener: beginFunctionTypeAlias(typedef)
+        listener: beginTypedef(typedef)
         ensureIdentifierPotentiallyRecovered(typedef, typedefDeclaration, true)
           reportRecoverableErrorWithToken(do, Instance of 'Template<(Token) => Message>')
             listener: handleRecoverableError(Message[ExpectedIdentifierButGotKeyword, 'do' can't be used as an identifier because it's a keyword., Try renaming this to be an identifier that isn't a keyword., {lexeme: do}], do, do)
@@ -697,7 +697,7 @@
             listener: endFormalParameters(0, (, ), MemberKind.GeneralizedFunctionType)
         listener: endFunctionType(Function, null)
         ensureSemicolon())
-        listener: endFunctionTypeAlias(typedef, =, ;)
+        listener: endTypedef(typedef, =, ;)
   listener: endTopLevelDeclaration(typedef)
   parseTopLevelDeclarationImpl(;, Instance of 'DirectiveContext')
     parseMetadataStar(;)
@@ -707,7 +707,7 @@
       parseTopLevelKeywordModifiers(;, typedef)
       parseTypedef(typedef)
         listener: beginUncategorizedTopLevelDeclaration(typedef)
-        listener: beginFunctionTypeAlias(typedef)
+        listener: beginTypedef(typedef)
         listener: handleVoidKeyword(void)
         ensureIdentifierPotentiallyRecovered(void, typedefDeclaration, true)
           reportRecoverableErrorWithToken(dynamic, Instance of 'Template<(Token) => Message>')
@@ -719,7 +719,7 @@
             listener: beginFormalParameters((, MemberKind.FunctionTypeAlias)
             listener: endFormalParameters(0, (, ), MemberKind.FunctionTypeAlias)
         ensureSemicolon())
-        listener: endFunctionTypeAlias(typedef, null, ;)
+        listener: endTypedef(typedef, null, ;)
   listener: endTopLevelDeclaration(typedef)
   parseTopLevelDeclarationImpl(;, Instance of 'DirectiveContext')
     parseMetadataStar(;)
@@ -729,7 +729,7 @@
       parseTopLevelKeywordModifiers(;, typedef)
       parseTypedef(typedef)
         listener: beginUncategorizedTopLevelDeclaration(typedef)
-        listener: beginFunctionTypeAlias(typedef)
+        listener: beginTypedef(typedef)
         ensureIdentifierPotentiallyRecovered(typedef, typedefDeclaration, true)
           reportRecoverableErrorWithToken(dynamic, Instance of 'Template<(Token) => Message>')
             listener: handleRecoverableError(Message[ExpectedIdentifierButGotKeyword, 'dynamic' can't be used as an identifier because it's a keyword., Try renaming this to be an identifier that isn't a keyword., {lexeme: dynamic}], dynamic, dynamic)
@@ -744,7 +744,7 @@
             listener: endFormalParameters(0, (, ), MemberKind.GeneralizedFunctionType)
         listener: endFunctionType(Function, null)
         ensureSemicolon())
-        listener: endFunctionTypeAlias(typedef, =, ;)
+        listener: endTypedef(typedef, =, ;)
   listener: endTopLevelDeclaration(typedef)
   parseTopLevelDeclarationImpl(;, Instance of 'DirectiveContext')
     parseMetadataStar(;)
@@ -754,7 +754,7 @@
       parseTopLevelKeywordModifiers(;, typedef)
       parseTypedef(typedef)
         listener: beginUncategorizedTopLevelDeclaration(typedef)
-        listener: beginFunctionTypeAlias(typedef)
+        listener: beginTypedef(typedef)
         listener: handleVoidKeyword(void)
         ensureIdentifierPotentiallyRecovered(void, typedefDeclaration, true)
           reportRecoverableErrorWithToken(else, Instance of 'Template<(Token) => Message>')
@@ -766,7 +766,7 @@
             listener: beginFormalParameters((, MemberKind.FunctionTypeAlias)
             listener: endFormalParameters(0, (, ), MemberKind.FunctionTypeAlias)
         ensureSemicolon())
-        listener: endFunctionTypeAlias(typedef, null, ;)
+        listener: endTypedef(typedef, null, ;)
   listener: endTopLevelDeclaration(typedef)
   parseTopLevelDeclarationImpl(;, Instance of 'DirectiveContext')
     parseMetadataStar(;)
@@ -776,7 +776,7 @@
       parseTopLevelKeywordModifiers(;, typedef)
       parseTypedef(typedef)
         listener: beginUncategorizedTopLevelDeclaration(typedef)
-        listener: beginFunctionTypeAlias(typedef)
+        listener: beginTypedef(typedef)
         ensureIdentifierPotentiallyRecovered(typedef, typedefDeclaration, true)
           reportRecoverableErrorWithToken(else, Instance of 'Template<(Token) => Message>')
             listener: handleRecoverableError(Message[ExpectedIdentifierButGotKeyword, 'else' can't be used as an identifier because it's a keyword., Try renaming this to be an identifier that isn't a keyword., {lexeme: else}], else, else)
@@ -791,7 +791,7 @@
             listener: endFormalParameters(0, (, ), MemberKind.GeneralizedFunctionType)
         listener: endFunctionType(Function, null)
         ensureSemicolon())
-        listener: endFunctionTypeAlias(typedef, =, ;)
+        listener: endTypedef(typedef, =, ;)
   listener: endTopLevelDeclaration(typedef)
   parseTopLevelDeclarationImpl(;, Instance of 'DirectiveContext')
     parseMetadataStar(;)
@@ -801,7 +801,7 @@
       parseTopLevelKeywordModifiers(;, typedef)
       parseTypedef(typedef)
         listener: beginUncategorizedTopLevelDeclaration(typedef)
-        listener: beginFunctionTypeAlias(typedef)
+        listener: beginTypedef(typedef)
         listener: handleVoidKeyword(void)
         ensureIdentifierPotentiallyRecovered(void, typedefDeclaration, true)
           reportRecoverableErrorWithToken(enum, Instance of 'Template<(Token) => Message>')
@@ -813,7 +813,7 @@
             listener: beginFormalParameters((, MemberKind.FunctionTypeAlias)
             listener: endFormalParameters(0, (, ), MemberKind.FunctionTypeAlias)
         ensureSemicolon())
-        listener: endFunctionTypeAlias(typedef, null, ;)
+        listener: endTypedef(typedef, null, ;)
   listener: endTopLevelDeclaration(typedef)
   parseTopLevelDeclarationImpl(;, Instance of 'DirectiveContext')
     parseMetadataStar(;)
@@ -823,7 +823,7 @@
       parseTopLevelKeywordModifiers(;, typedef)
       parseTypedef(typedef)
         listener: beginUncategorizedTopLevelDeclaration(typedef)
-        listener: beginFunctionTypeAlias(typedef)
+        listener: beginTypedef(typedef)
         ensureIdentifierPotentiallyRecovered(typedef, typedefDeclaration, true)
           reportRecoverableErrorWithToken(enum, Instance of 'Template<(Token) => Message>')
             listener: handleRecoverableError(Message[ExpectedIdentifierButGotKeyword, 'enum' can't be used as an identifier because it's a keyword., Try renaming this to be an identifier that isn't a keyword., {lexeme: enum}], enum, enum)
@@ -838,7 +838,7 @@
             listener: endFormalParameters(0, (, ), MemberKind.GeneralizedFunctionType)
         listener: endFunctionType(Function, null)
         ensureSemicolon())
-        listener: endFunctionTypeAlias(typedef, =, ;)
+        listener: endTypedef(typedef, =, ;)
   listener: endTopLevelDeclaration(typedef)
   parseTopLevelDeclarationImpl(;, Instance of 'DirectiveContext')
     parseMetadataStar(;)
@@ -848,7 +848,7 @@
       parseTopLevelKeywordModifiers(;, typedef)
       parseTypedef(typedef)
         listener: beginUncategorizedTopLevelDeclaration(typedef)
-        listener: beginFunctionTypeAlias(typedef)
+        listener: beginTypedef(typedef)
         listener: handleVoidKeyword(void)
         ensureIdentifierPotentiallyRecovered(void, typedefDeclaration, true)
           reportRecoverableErrorWithToken(export, Instance of 'Template<(Token) => Message>')
@@ -860,7 +860,7 @@
             listener: beginFormalParameters((, MemberKind.FunctionTypeAlias)
             listener: endFormalParameters(0, (, ), MemberKind.FunctionTypeAlias)
         ensureSemicolon())
-        listener: endFunctionTypeAlias(typedef, null, ;)
+        listener: endTypedef(typedef, null, ;)
   listener: endTopLevelDeclaration(typedef)
   parseTopLevelDeclarationImpl(;, Instance of 'DirectiveContext')
     parseMetadataStar(;)
@@ -870,7 +870,7 @@
       parseTopLevelKeywordModifiers(;, typedef)
       parseTypedef(typedef)
         listener: beginUncategorizedTopLevelDeclaration(typedef)
-        listener: beginFunctionTypeAlias(typedef)
+        listener: beginTypedef(typedef)
         ensureIdentifierPotentiallyRecovered(typedef, typedefDeclaration, true)
           reportRecoverableErrorWithToken(export, Instance of 'Template<(Token) => Message>')
             listener: handleRecoverableError(Message[ExpectedIdentifierButGotKeyword, 'export' can't be used as an identifier because it's a keyword., Try renaming this to be an identifier that isn't a keyword., {lexeme: export}], export, export)
@@ -885,7 +885,7 @@
             listener: endFormalParameters(0, (, ), MemberKind.GeneralizedFunctionType)
         listener: endFunctionType(Function, null)
         ensureSemicolon())
-        listener: endFunctionTypeAlias(typedef, =, ;)
+        listener: endTypedef(typedef, =, ;)
   listener: endTopLevelDeclaration(typedef)
   parseTopLevelDeclarationImpl(;, Instance of 'DirectiveContext')
     parseMetadataStar(;)
@@ -895,7 +895,7 @@
       parseTopLevelKeywordModifiers(;, typedef)
       parseTypedef(typedef)
         listener: beginUncategorizedTopLevelDeclaration(typedef)
-        listener: beginFunctionTypeAlias(typedef)
+        listener: beginTypedef(typedef)
         listener: handleVoidKeyword(void)
         ensureIdentifierPotentiallyRecovered(void, typedefDeclaration, true)
           reportRecoverableErrorWithToken(extends, Instance of 'Template<(Token) => Message>')
@@ -907,7 +907,7 @@
             listener: beginFormalParameters((, MemberKind.FunctionTypeAlias)
             listener: endFormalParameters(0, (, ), MemberKind.FunctionTypeAlias)
         ensureSemicolon())
-        listener: endFunctionTypeAlias(typedef, null, ;)
+        listener: endTypedef(typedef, null, ;)
   listener: endTopLevelDeclaration(typedef)
   parseTopLevelDeclarationImpl(;, Instance of 'DirectiveContext')
     parseMetadataStar(;)
@@ -917,7 +917,7 @@
       parseTopLevelKeywordModifiers(;, typedef)
       parseTypedef(typedef)
         listener: beginUncategorizedTopLevelDeclaration(typedef)
-        listener: beginFunctionTypeAlias(typedef)
+        listener: beginTypedef(typedef)
         ensureIdentifierPotentiallyRecovered(typedef, typedefDeclaration, true)
           reportRecoverableErrorWithToken(extends, Instance of 'Template<(Token) => Message>')
             listener: handleRecoverableError(Message[ExpectedIdentifierButGotKeyword, 'extends' can't be used as an identifier because it's a keyword., Try renaming this to be an identifier that isn't a keyword., {lexeme: extends}], extends, extends)
@@ -932,7 +932,7 @@
             listener: endFormalParameters(0, (, ), MemberKind.GeneralizedFunctionType)
         listener: endFunctionType(Function, null)
         ensureSemicolon())
-        listener: endFunctionTypeAlias(typedef, =, ;)
+        listener: endTypedef(typedef, =, ;)
   listener: endTopLevelDeclaration(typedef)
   parseTopLevelDeclarationImpl(;, Instance of 'DirectiveContext')
     parseMetadataStar(;)
@@ -942,7 +942,7 @@
       parseTopLevelKeywordModifiers(;, typedef)
       parseTypedef(typedef)
         listener: beginUncategorizedTopLevelDeclaration(typedef)
-        listener: beginFunctionTypeAlias(typedef)
+        listener: beginTypedef(typedef)
         listener: handleVoidKeyword(void)
         ensureIdentifierPotentiallyRecovered(void, typedefDeclaration, true)
           reportRecoverableErrorWithToken(extension, Instance of 'Template<(Token) => Message>')
@@ -954,7 +954,7 @@
             listener: beginFormalParameters((, MemberKind.FunctionTypeAlias)
             listener: endFormalParameters(0, (, ), MemberKind.FunctionTypeAlias)
         ensureSemicolon())
-        listener: endFunctionTypeAlias(typedef, null, ;)
+        listener: endTypedef(typedef, null, ;)
   listener: endTopLevelDeclaration(typedef)
   parseTopLevelDeclarationImpl(;, Instance of 'DirectiveContext')
     parseMetadataStar(;)
@@ -964,7 +964,7 @@
       parseTopLevelKeywordModifiers(;, typedef)
       parseTypedef(typedef)
         listener: beginUncategorizedTopLevelDeclaration(typedef)
-        listener: beginFunctionTypeAlias(typedef)
+        listener: beginTypedef(typedef)
         ensureIdentifierPotentiallyRecovered(typedef, typedefDeclaration, true)
           reportRecoverableErrorWithToken(extension, Instance of 'Template<(Token) => Message>')
             listener: handleRecoverableError(Message[ExpectedIdentifierButGotKeyword, 'extension' can't be used as an identifier because it's a keyword., Try renaming this to be an identifier that isn't a keyword., {lexeme: extension}], extension, extension)
@@ -979,7 +979,7 @@
             listener: endFormalParameters(0, (, ), MemberKind.GeneralizedFunctionType)
         listener: endFunctionType(Function, null)
         ensureSemicolon())
-        listener: endFunctionTypeAlias(typedef, =, ;)
+        listener: endTypedef(typedef, =, ;)
   listener: endTopLevelDeclaration(typedef)
   parseTopLevelDeclarationImpl(;, Instance of 'DirectiveContext')
     parseMetadataStar(;)
@@ -989,7 +989,7 @@
       parseTopLevelKeywordModifiers(;, typedef)
       parseTypedef(typedef)
         listener: beginUncategorizedTopLevelDeclaration(typedef)
-        listener: beginFunctionTypeAlias(typedef)
+        listener: beginTypedef(typedef)
         listener: handleVoidKeyword(void)
         ensureIdentifierPotentiallyRecovered(void, typedefDeclaration, true)
           reportRecoverableErrorWithToken(external, Instance of 'Template<(Token) => Message>')
@@ -1001,7 +1001,7 @@
             listener: beginFormalParameters((, MemberKind.FunctionTypeAlias)
             listener: endFormalParameters(0, (, ), MemberKind.FunctionTypeAlias)
         ensureSemicolon())
-        listener: endFunctionTypeAlias(typedef, null, ;)
+        listener: endTypedef(typedef, null, ;)
   listener: endTopLevelDeclaration(typedef)
   parseTopLevelDeclarationImpl(;, Instance of 'DirectiveContext')
     parseMetadataStar(;)
@@ -1011,7 +1011,7 @@
       parseTopLevelKeywordModifiers(;, typedef)
       parseTypedef(typedef)
         listener: beginUncategorizedTopLevelDeclaration(typedef)
-        listener: beginFunctionTypeAlias(typedef)
+        listener: beginTypedef(typedef)
         ensureIdentifierPotentiallyRecovered(typedef, typedefDeclaration, true)
           reportRecoverableErrorWithToken(external, Instance of 'Template<(Token) => Message>')
             listener: handleRecoverableError(Message[ExpectedIdentifierButGotKeyword, 'external' can't be used as an identifier because it's a keyword., Try renaming this to be an identifier that isn't a keyword., {lexeme: external}], external, external)
@@ -1026,7 +1026,7 @@
             listener: endFormalParameters(0, (, ), MemberKind.GeneralizedFunctionType)
         listener: endFunctionType(Function, null)
         ensureSemicolon())
-        listener: endFunctionTypeAlias(typedef, =, ;)
+        listener: endTypedef(typedef, =, ;)
   listener: endTopLevelDeclaration(typedef)
   parseTopLevelDeclarationImpl(;, Instance of 'DirectiveContext')
     parseMetadataStar(;)
@@ -1036,7 +1036,7 @@
       parseTopLevelKeywordModifiers(;, typedef)
       parseTypedef(typedef)
         listener: beginUncategorizedTopLevelDeclaration(typedef)
-        listener: beginFunctionTypeAlias(typedef)
+        listener: beginTypedef(typedef)
         listener: handleVoidKeyword(void)
         ensureIdentifierPotentiallyRecovered(void, typedefDeclaration, true)
           reportRecoverableErrorWithToken(factory, Instance of 'Template<(Token) => Message>')
@@ -1048,7 +1048,7 @@
             listener: beginFormalParameters((, MemberKind.FunctionTypeAlias)
             listener: endFormalParameters(0, (, ), MemberKind.FunctionTypeAlias)
         ensureSemicolon())
-        listener: endFunctionTypeAlias(typedef, null, ;)
+        listener: endTypedef(typedef, null, ;)
   listener: endTopLevelDeclaration(typedef)
   parseTopLevelDeclarationImpl(;, Instance of 'DirectiveContext')
     parseMetadataStar(;)
@@ -1058,7 +1058,7 @@
       parseTopLevelKeywordModifiers(;, typedef)
       parseTypedef(typedef)
         listener: beginUncategorizedTopLevelDeclaration(typedef)
-        listener: beginFunctionTypeAlias(typedef)
+        listener: beginTypedef(typedef)
         ensureIdentifierPotentiallyRecovered(typedef, typedefDeclaration, true)
           reportRecoverableErrorWithToken(factory, Instance of 'Template<(Token) => Message>')
             listener: handleRecoverableError(Message[ExpectedIdentifierButGotKeyword, 'factory' can't be used as an identifier because it's a keyword., Try renaming this to be an identifier that isn't a keyword., {lexeme: factory}], factory, factory)
@@ -1073,7 +1073,7 @@
             listener: endFormalParameters(0, (, ), MemberKind.GeneralizedFunctionType)
         listener: endFunctionType(Function, null)
         ensureSemicolon())
-        listener: endFunctionTypeAlias(typedef, =, ;)
+        listener: endTypedef(typedef, =, ;)
   listener: endTopLevelDeclaration(typedef)
   parseTopLevelDeclarationImpl(;, Instance of 'DirectiveContext')
     parseMetadataStar(;)
@@ -1083,7 +1083,7 @@
       parseTopLevelKeywordModifiers(;, typedef)
       parseTypedef(typedef)
         listener: beginUncategorizedTopLevelDeclaration(typedef)
-        listener: beginFunctionTypeAlias(typedef)
+        listener: beginTypedef(typedef)
         listener: handleVoidKeyword(void)
         ensureIdentifierPotentiallyRecovered(void, typedefDeclaration, true)
           reportRecoverableErrorWithToken(false, Instance of 'Template<(Token) => Message>')
@@ -1095,7 +1095,7 @@
             listener: beginFormalParameters((, MemberKind.FunctionTypeAlias)
             listener: endFormalParameters(0, (, ), MemberKind.FunctionTypeAlias)
         ensureSemicolon())
-        listener: endFunctionTypeAlias(typedef, null, ;)
+        listener: endTypedef(typedef, null, ;)
   listener: endTopLevelDeclaration(typedef)
   parseTopLevelDeclarationImpl(;, Instance of 'DirectiveContext')
     parseMetadataStar(;)
@@ -1105,7 +1105,7 @@
       parseTopLevelKeywordModifiers(;, typedef)
       parseTypedef(typedef)
         listener: beginUncategorizedTopLevelDeclaration(typedef)
-        listener: beginFunctionTypeAlias(typedef)
+        listener: beginTypedef(typedef)
         ensureIdentifierPotentiallyRecovered(typedef, typedefDeclaration, true)
           reportRecoverableErrorWithToken(false, Instance of 'Template<(Token) => Message>')
             listener: handleRecoverableError(Message[ExpectedIdentifierButGotKeyword, 'false' can't be used as an identifier because it's a keyword., Try renaming this to be an identifier that isn't a keyword., {lexeme: false}], false, false)
@@ -1120,7 +1120,7 @@
             listener: endFormalParameters(0, (, ), MemberKind.GeneralizedFunctionType)
         listener: endFunctionType(Function, null)
         ensureSemicolon())
-        listener: endFunctionTypeAlias(typedef, =, ;)
+        listener: endTypedef(typedef, =, ;)
   listener: endTopLevelDeclaration(typedef)
   parseTopLevelDeclarationImpl(;, Instance of 'DirectiveContext')
     parseMetadataStar(;)
@@ -1130,7 +1130,7 @@
       parseTopLevelKeywordModifiers(;, typedef)
       parseTypedef(typedef)
         listener: beginUncategorizedTopLevelDeclaration(typedef)
-        listener: beginFunctionTypeAlias(typedef)
+        listener: beginTypedef(typedef)
         listener: handleVoidKeyword(void)
         ensureIdentifierPotentiallyRecovered(void, typedefDeclaration, true)
           reportRecoverableErrorWithToken(final, Instance of 'Template<(Token) => Message>')
@@ -1142,7 +1142,7 @@
             listener: beginFormalParameters((, MemberKind.FunctionTypeAlias)
             listener: endFormalParameters(0, (, ), MemberKind.FunctionTypeAlias)
         ensureSemicolon())
-        listener: endFunctionTypeAlias(typedef, null, ;)
+        listener: endTypedef(typedef, null, ;)
   listener: endTopLevelDeclaration(typedef)
   parseTopLevelDeclarationImpl(;, Instance of 'DirectiveContext')
     parseMetadataStar(;)
@@ -1152,7 +1152,7 @@
       parseTopLevelKeywordModifiers(;, typedef)
       parseTypedef(typedef)
         listener: beginUncategorizedTopLevelDeclaration(typedef)
-        listener: beginFunctionTypeAlias(typedef)
+        listener: beginTypedef(typedef)
         ensureIdentifierPotentiallyRecovered(typedef, typedefDeclaration, true)
           reportRecoverableErrorWithToken(final, Instance of 'Template<(Token) => Message>')
             listener: handleRecoverableError(Message[ExpectedIdentifierButGotKeyword, 'final' can't be used as an identifier because it's a keyword., Try renaming this to be an identifier that isn't a keyword., {lexeme: final}], final, final)
@@ -1167,7 +1167,7 @@
             listener: endFormalParameters(0, (, ), MemberKind.GeneralizedFunctionType)
         listener: endFunctionType(Function, null)
         ensureSemicolon())
-        listener: endFunctionTypeAlias(typedef, =, ;)
+        listener: endTypedef(typedef, =, ;)
   listener: endTopLevelDeclaration(typedef)
   parseTopLevelDeclarationImpl(;, Instance of 'DirectiveContext')
     parseMetadataStar(;)
@@ -1177,7 +1177,7 @@
       parseTopLevelKeywordModifiers(;, typedef)
       parseTypedef(typedef)
         listener: beginUncategorizedTopLevelDeclaration(typedef)
-        listener: beginFunctionTypeAlias(typedef)
+        listener: beginTypedef(typedef)
         listener: handleVoidKeyword(void)
         ensureIdentifierPotentiallyRecovered(void, typedefDeclaration, true)
           reportRecoverableErrorWithToken(finally, Instance of 'Template<(Token) => Message>')
@@ -1189,7 +1189,7 @@
             listener: beginFormalParameters((, MemberKind.FunctionTypeAlias)
             listener: endFormalParameters(0, (, ), MemberKind.FunctionTypeAlias)
         ensureSemicolon())
-        listener: endFunctionTypeAlias(typedef, null, ;)
+        listener: endTypedef(typedef, null, ;)
   listener: endTopLevelDeclaration(typedef)
   parseTopLevelDeclarationImpl(;, Instance of 'DirectiveContext')
     parseMetadataStar(;)
@@ -1199,7 +1199,7 @@
       parseTopLevelKeywordModifiers(;, typedef)
       parseTypedef(typedef)
         listener: beginUncategorizedTopLevelDeclaration(typedef)
-        listener: beginFunctionTypeAlias(typedef)
+        listener: beginTypedef(typedef)
         ensureIdentifierPotentiallyRecovered(typedef, typedefDeclaration, true)
           reportRecoverableErrorWithToken(finally, Instance of 'Template<(Token) => Message>')
             listener: handleRecoverableError(Message[ExpectedIdentifierButGotKeyword, 'finally' can't be used as an identifier because it's a keyword., Try renaming this to be an identifier that isn't a keyword., {lexeme: finally}], finally, finally)
@@ -1214,7 +1214,7 @@
             listener: endFormalParameters(0, (, ), MemberKind.GeneralizedFunctionType)
         listener: endFunctionType(Function, null)
         ensureSemicolon())
-        listener: endFunctionTypeAlias(typedef, =, ;)
+        listener: endTypedef(typedef, =, ;)
   listener: endTopLevelDeclaration(typedef)
   parseTopLevelDeclarationImpl(;, Instance of 'DirectiveContext')
     parseMetadataStar(;)
@@ -1224,7 +1224,7 @@
       parseTopLevelKeywordModifiers(;, typedef)
       parseTypedef(typedef)
         listener: beginUncategorizedTopLevelDeclaration(typedef)
-        listener: beginFunctionTypeAlias(typedef)
+        listener: beginTypedef(typedef)
         listener: handleVoidKeyword(void)
         ensureIdentifierPotentiallyRecovered(void, typedefDeclaration, true)
           reportRecoverableErrorWithToken(for, Instance of 'Template<(Token) => Message>')
@@ -1236,7 +1236,7 @@
             listener: beginFormalParameters((, MemberKind.FunctionTypeAlias)
             listener: endFormalParameters(0, (, ), MemberKind.FunctionTypeAlias)
         ensureSemicolon())
-        listener: endFunctionTypeAlias(typedef, null, ;)
+        listener: endTypedef(typedef, null, ;)
   listener: endTopLevelDeclaration(typedef)
   parseTopLevelDeclarationImpl(;, Instance of 'DirectiveContext')
     parseMetadataStar(;)
@@ -1246,7 +1246,7 @@
       parseTopLevelKeywordModifiers(;, typedef)
       parseTypedef(typedef)
         listener: beginUncategorizedTopLevelDeclaration(typedef)
-        listener: beginFunctionTypeAlias(typedef)
+        listener: beginTypedef(typedef)
         ensureIdentifierPotentiallyRecovered(typedef, typedefDeclaration, true)
           reportRecoverableErrorWithToken(for, Instance of 'Template<(Token) => Message>')
             listener: handleRecoverableError(Message[ExpectedIdentifierButGotKeyword, 'for' can't be used as an identifier because it's a keyword., Try renaming this to be an identifier that isn't a keyword., {lexeme: for}], for, for)
@@ -1261,7 +1261,7 @@
             listener: endFormalParameters(0, (, ), MemberKind.GeneralizedFunctionType)
         listener: endFunctionType(Function, null)
         ensureSemicolon())
-        listener: endFunctionTypeAlias(typedef, =, ;)
+        listener: endTypedef(typedef, =, ;)
   listener: endTopLevelDeclaration(typedef)
   parseTopLevelDeclarationImpl(;, Instance of 'DirectiveContext')
     parseMetadataStar(;)
@@ -1271,7 +1271,7 @@
       parseTopLevelKeywordModifiers(;, typedef)
       parseTypedef(typedef)
         listener: beginUncategorizedTopLevelDeclaration(typedef)
-        listener: beginFunctionTypeAlias(typedef)
+        listener: beginTypedef(typedef)
         listener: handleVoidKeyword(void)
         ensureIdentifierPotentiallyRecovered(void, typedefDeclaration, true)
           reportRecoverableErrorWithToken(Function, Instance of 'Template<(Token) => Message>')
@@ -1283,7 +1283,7 @@
             listener: beginFormalParameters((, MemberKind.FunctionTypeAlias)
             listener: endFormalParameters(0, (, ), MemberKind.FunctionTypeAlias)
         ensureSemicolon())
-        listener: endFunctionTypeAlias(typedef, null, ;)
+        listener: endTypedef(typedef, null, ;)
   listener: endTopLevelDeclaration(typedef)
   parseTopLevelDeclarationImpl(;, Instance of 'DirectiveContext')
     parseMetadataStar(;)
@@ -1293,7 +1293,7 @@
       parseTopLevelKeywordModifiers(;, typedef)
       parseTypedef(typedef)
         listener: beginUncategorizedTopLevelDeclaration(typedef)
-        listener: beginFunctionTypeAlias(typedef)
+        listener: beginTypedef(typedef)
         ensureIdentifierPotentiallyRecovered(typedef, typedefDeclaration, true)
           reportRecoverableErrorWithToken(Function, Instance of 'Template<(Token) => Message>')
             listener: handleRecoverableError(Message[ExpectedIdentifierButGotKeyword, 'Function' can't be used as an identifier because it's a keyword., Try renaming this to be an identifier that isn't a keyword., {lexeme: Function}], Function, Function)
@@ -1308,7 +1308,7 @@
             listener: endFormalParameters(0, (, ), MemberKind.GeneralizedFunctionType)
         listener: endFunctionType(Function, null)
         ensureSemicolon())
-        listener: endFunctionTypeAlias(typedef, =, ;)
+        listener: endTypedef(typedef, =, ;)
   listener: endTopLevelDeclaration(typedef)
   parseTopLevelDeclarationImpl(;, Instance of 'DirectiveContext')
     parseMetadataStar(;)
@@ -1318,7 +1318,7 @@
       parseTopLevelKeywordModifiers(;, typedef)
       parseTypedef(typedef)
         listener: beginUncategorizedTopLevelDeclaration(typedef)
-        listener: beginFunctionTypeAlias(typedef)
+        listener: beginTypedef(typedef)
         listener: handleVoidKeyword(void)
         ensureIdentifierPotentiallyRecovered(void, typedefDeclaration, true)
           reportRecoverableErrorWithToken(get, Instance of 'Template<(Token) => Message>')
@@ -1330,7 +1330,7 @@
             listener: beginFormalParameters((, MemberKind.FunctionTypeAlias)
             listener: endFormalParameters(0, (, ), MemberKind.FunctionTypeAlias)
         ensureSemicolon())
-        listener: endFunctionTypeAlias(typedef, null, ;)
+        listener: endTypedef(typedef, null, ;)
   listener: endTopLevelDeclaration(typedef)
   parseTopLevelDeclarationImpl(;, Instance of 'DirectiveContext')
     parseMetadataStar(;)
@@ -1340,7 +1340,7 @@
       parseTopLevelKeywordModifiers(;, typedef)
       parseTypedef(typedef)
         listener: beginUncategorizedTopLevelDeclaration(typedef)
-        listener: beginFunctionTypeAlias(typedef)
+        listener: beginTypedef(typedef)
         ensureIdentifierPotentiallyRecovered(typedef, typedefDeclaration, true)
           reportRecoverableErrorWithToken(get, Instance of 'Template<(Token) => Message>')
             listener: handleRecoverableError(Message[ExpectedIdentifierButGotKeyword, 'get' can't be used as an identifier because it's a keyword., Try renaming this to be an identifier that isn't a keyword., {lexeme: get}], get, get)
@@ -1355,7 +1355,7 @@
             listener: endFormalParameters(0, (, ), MemberKind.GeneralizedFunctionType)
         listener: endFunctionType(Function, null)
         ensureSemicolon())
-        listener: endFunctionTypeAlias(typedef, =, ;)
+        listener: endTypedef(typedef, =, ;)
   listener: endTopLevelDeclaration(typedef)
   parseTopLevelDeclarationImpl(;, Instance of 'DirectiveContext')
     parseMetadataStar(;)
@@ -1365,7 +1365,7 @@
       parseTopLevelKeywordModifiers(;, typedef)
       parseTypedef(typedef)
         listener: beginUncategorizedTopLevelDeclaration(typedef)
-        listener: beginFunctionTypeAlias(typedef)
+        listener: beginTypedef(typedef)
         listener: handleVoidKeyword(void)
         ensureIdentifierPotentiallyRecovered(void, typedefDeclaration, true)
           listener: handleIdentifier(hide, typedefDeclaration)
@@ -1375,7 +1375,7 @@
             listener: beginFormalParameters((, MemberKind.FunctionTypeAlias)
             listener: endFormalParameters(0, (, ), MemberKind.FunctionTypeAlias)
         ensureSemicolon())
-        listener: endFunctionTypeAlias(typedef, null, ;)
+        listener: endTypedef(typedef, null, ;)
   listener: endTopLevelDeclaration(typedef)
   parseTopLevelDeclarationImpl(;, Instance of 'DirectiveContext')
     parseMetadataStar(;)
@@ -1385,7 +1385,7 @@
       parseTopLevelKeywordModifiers(;, typedef)
       parseTypedef(typedef)
         listener: beginUncategorizedTopLevelDeclaration(typedef)
-        listener: beginFunctionTypeAlias(typedef)
+        listener: beginTypedef(typedef)
         ensureIdentifierPotentiallyRecovered(typedef, typedefDeclaration, true)
           listener: handleIdentifier(hide, typedefDeclaration)
         listener: handleNoTypeVariables(=)
@@ -1398,7 +1398,7 @@
             listener: endFormalParameters(0, (, ), MemberKind.GeneralizedFunctionType)
         listener: endFunctionType(Function, null)
         ensureSemicolon())
-        listener: endFunctionTypeAlias(typedef, =, ;)
+        listener: endTypedef(typedef, =, ;)
   listener: endTopLevelDeclaration(typedef)
   parseTopLevelDeclarationImpl(;, Instance of 'DirectiveContext')
     parseMetadataStar(;)
@@ -1408,7 +1408,7 @@
       parseTopLevelKeywordModifiers(;, typedef)
       parseTypedef(typedef)
         listener: beginUncategorizedTopLevelDeclaration(typedef)
-        listener: beginFunctionTypeAlias(typedef)
+        listener: beginTypedef(typedef)
         listener: handleVoidKeyword(void)
         ensureIdentifierPotentiallyRecovered(void, typedefDeclaration, true)
           reportRecoverableErrorWithToken(if, Instance of 'Template<(Token) => Message>')
@@ -1420,7 +1420,7 @@
             listener: beginFormalParameters((, MemberKind.FunctionTypeAlias)
             listener: endFormalParameters(0, (, ), MemberKind.FunctionTypeAlias)
         ensureSemicolon())
-        listener: endFunctionTypeAlias(typedef, null, ;)
+        listener: endTypedef(typedef, null, ;)
   listener: endTopLevelDeclaration(typedef)
   parseTopLevelDeclarationImpl(;, Instance of 'DirectiveContext')
     parseMetadataStar(;)
@@ -1430,7 +1430,7 @@
       parseTopLevelKeywordModifiers(;, typedef)
       parseTypedef(typedef)
         listener: beginUncategorizedTopLevelDeclaration(typedef)
-        listener: beginFunctionTypeAlias(typedef)
+        listener: beginTypedef(typedef)
         ensureIdentifierPotentiallyRecovered(typedef, typedefDeclaration, true)
           reportRecoverableErrorWithToken(if, Instance of 'Template<(Token) => Message>')
             listener: handleRecoverableError(Message[ExpectedIdentifierButGotKeyword, 'if' can't be used as an identifier because it's a keyword., Try renaming this to be an identifier that isn't a keyword., {lexeme: if}], if, if)
@@ -1445,7 +1445,7 @@
             listener: endFormalParameters(0, (, ), MemberKind.GeneralizedFunctionType)
         listener: endFunctionType(Function, null)
         ensureSemicolon())
-        listener: endFunctionTypeAlias(typedef, =, ;)
+        listener: endTypedef(typedef, =, ;)
   listener: endTopLevelDeclaration(typedef)
   parseTopLevelDeclarationImpl(;, Instance of 'DirectiveContext')
     parseMetadataStar(;)
@@ -1455,7 +1455,7 @@
       parseTopLevelKeywordModifiers(;, typedef)
       parseTypedef(typedef)
         listener: beginUncategorizedTopLevelDeclaration(typedef)
-        listener: beginFunctionTypeAlias(typedef)
+        listener: beginTypedef(typedef)
         listener: handleVoidKeyword(void)
         ensureIdentifierPotentiallyRecovered(void, typedefDeclaration, true)
           reportRecoverableErrorWithToken(implements, Instance of 'Template<(Token) => Message>')
@@ -1467,7 +1467,7 @@
             listener: beginFormalParameters((, MemberKind.FunctionTypeAlias)
             listener: endFormalParameters(0, (, ), MemberKind.FunctionTypeAlias)
         ensureSemicolon())
-        listener: endFunctionTypeAlias(typedef, null, ;)
+        listener: endTypedef(typedef, null, ;)
   listener: endTopLevelDeclaration(typedef)
   parseTopLevelDeclarationImpl(;, Instance of 'DirectiveContext')
     parseMetadataStar(;)
@@ -1477,7 +1477,7 @@
       parseTopLevelKeywordModifiers(;, typedef)
       parseTypedef(typedef)
         listener: beginUncategorizedTopLevelDeclaration(typedef)
-        listener: beginFunctionTypeAlias(typedef)
+        listener: beginTypedef(typedef)
         ensureIdentifierPotentiallyRecovered(typedef, typedefDeclaration, true)
           reportRecoverableErrorWithToken(implements, Instance of 'Template<(Token) => Message>')
             listener: handleRecoverableError(Message[ExpectedIdentifierButGotKeyword, 'implements' can't be used as an identifier because it's a keyword., Try renaming this to be an identifier that isn't a keyword., {lexeme: implements}], implements, implements)
@@ -1492,7 +1492,7 @@
             listener: endFormalParameters(0, (, ), MemberKind.GeneralizedFunctionType)
         listener: endFunctionType(Function, null)
         ensureSemicolon())
-        listener: endFunctionTypeAlias(typedef, =, ;)
+        listener: endTypedef(typedef, =, ;)
   listener: endTopLevelDeclaration(typedef)
   parseTopLevelDeclarationImpl(;, Instance of 'DirectiveContext')
     parseMetadataStar(;)
@@ -1502,7 +1502,7 @@
       parseTopLevelKeywordModifiers(;, typedef)
       parseTypedef(typedef)
         listener: beginUncategorizedTopLevelDeclaration(typedef)
-        listener: beginFunctionTypeAlias(typedef)
+        listener: beginTypedef(typedef)
         listener: handleVoidKeyword(void)
         ensureIdentifierPotentiallyRecovered(void, typedefDeclaration, true)
           reportRecoverableErrorWithToken(import, Instance of 'Template<(Token) => Message>')
@@ -1514,7 +1514,7 @@
             listener: beginFormalParameters((, MemberKind.FunctionTypeAlias)
             listener: endFormalParameters(0, (, ), MemberKind.FunctionTypeAlias)
         ensureSemicolon())
-        listener: endFunctionTypeAlias(typedef, null, ;)
+        listener: endTypedef(typedef, null, ;)
   listener: endTopLevelDeclaration(typedef)
   parseTopLevelDeclarationImpl(;, Instance of 'DirectiveContext')
     parseMetadataStar(;)
@@ -1524,7 +1524,7 @@
       parseTopLevelKeywordModifiers(;, typedef)
       parseTypedef(typedef)
         listener: beginUncategorizedTopLevelDeclaration(typedef)
-        listener: beginFunctionTypeAlias(typedef)
+        listener: beginTypedef(typedef)
         ensureIdentifierPotentiallyRecovered(typedef, typedefDeclaration, true)
           reportRecoverableErrorWithToken(import, Instance of 'Template<(Token) => Message>')
             listener: handleRecoverableError(Message[ExpectedIdentifierButGotKeyword, 'import' can't be used as an identifier because it's a keyword., Try renaming this to be an identifier that isn't a keyword., {lexeme: import}], import, import)
@@ -1539,7 +1539,7 @@
             listener: endFormalParameters(0, (, ), MemberKind.GeneralizedFunctionType)
         listener: endFunctionType(Function, null)
         ensureSemicolon())
-        listener: endFunctionTypeAlias(typedef, =, ;)
+        listener: endTypedef(typedef, =, ;)
   listener: endTopLevelDeclaration(typedef)
   parseTopLevelDeclarationImpl(;, Instance of 'DirectiveContext')
     parseMetadataStar(;)
@@ -1549,7 +1549,7 @@
       parseTopLevelKeywordModifiers(;, typedef)
       parseTypedef(typedef)
         listener: beginUncategorizedTopLevelDeclaration(typedef)
-        listener: beginFunctionTypeAlias(typedef)
+        listener: beginTypedef(typedef)
         listener: handleVoidKeyword(void)
         ensureIdentifierPotentiallyRecovered(void, typedefDeclaration, true)
           reportRecoverableErrorWithToken(in, Instance of 'Template<(Token) => Message>')
@@ -1561,7 +1561,7 @@
             listener: beginFormalParameters((, MemberKind.FunctionTypeAlias)
             listener: endFormalParameters(0, (, ), MemberKind.FunctionTypeAlias)
         ensureSemicolon())
-        listener: endFunctionTypeAlias(typedef, null, ;)
+        listener: endTypedef(typedef, null, ;)
   listener: endTopLevelDeclaration(typedef)
   parseTopLevelDeclarationImpl(;, Instance of 'DirectiveContext')
     parseMetadataStar(;)
@@ -1571,7 +1571,7 @@
       parseTopLevelKeywordModifiers(;, typedef)
       parseTypedef(typedef)
         listener: beginUncategorizedTopLevelDeclaration(typedef)
-        listener: beginFunctionTypeAlias(typedef)
+        listener: beginTypedef(typedef)
         ensureIdentifierPotentiallyRecovered(typedef, typedefDeclaration, true)
           reportRecoverableErrorWithToken(in, Instance of 'Template<(Token) => Message>')
             listener: handleRecoverableError(Message[ExpectedIdentifierButGotKeyword, 'in' can't be used as an identifier because it's a keyword., Try renaming this to be an identifier that isn't a keyword., {lexeme: in}], in, in)
@@ -1586,7 +1586,7 @@
             listener: endFormalParameters(0, (, ), MemberKind.GeneralizedFunctionType)
         listener: endFunctionType(Function, null)
         ensureSemicolon())
-        listener: endFunctionTypeAlias(typedef, =, ;)
+        listener: endTypedef(typedef, =, ;)
   listener: endTopLevelDeclaration(typedef)
   parseTopLevelDeclarationImpl(;, Instance of 'DirectiveContext')
     parseMetadataStar(;)
@@ -1596,7 +1596,7 @@
       parseTopLevelKeywordModifiers(;, typedef)
       parseTypedef(typedef)
         listener: beginUncategorizedTopLevelDeclaration(typedef)
-        listener: beginFunctionTypeAlias(typedef)
+        listener: beginTypedef(typedef)
         listener: handleVoidKeyword(void)
         ensureIdentifierPotentiallyRecovered(void, typedefDeclaration, true)
           listener: handleIdentifier(inout, typedefDeclaration)
@@ -1606,7 +1606,7 @@
             listener: beginFormalParameters((, MemberKind.FunctionTypeAlias)
             listener: endFormalParameters(0, (, ), MemberKind.FunctionTypeAlias)
         ensureSemicolon())
-        listener: endFunctionTypeAlias(typedef, null, ;)
+        listener: endTypedef(typedef, null, ;)
   listener: endTopLevelDeclaration(typedef)
   parseTopLevelDeclarationImpl(;, Instance of 'DirectiveContext')
     parseMetadataStar(;)
@@ -1616,7 +1616,7 @@
       parseTopLevelKeywordModifiers(;, typedef)
       parseTypedef(typedef)
         listener: beginUncategorizedTopLevelDeclaration(typedef)
-        listener: beginFunctionTypeAlias(typedef)
+        listener: beginTypedef(typedef)
         ensureIdentifierPotentiallyRecovered(typedef, typedefDeclaration, true)
           listener: handleIdentifier(inout, typedefDeclaration)
         listener: handleNoTypeVariables(=)
@@ -1629,7 +1629,7 @@
             listener: endFormalParameters(0, (, ), MemberKind.GeneralizedFunctionType)
         listener: endFunctionType(Function, null)
         ensureSemicolon())
-        listener: endFunctionTypeAlias(typedef, =, ;)
+        listener: endTypedef(typedef, =, ;)
   listener: endTopLevelDeclaration(typedef)
   parseTopLevelDeclarationImpl(;, Instance of 'DirectiveContext')
     parseMetadataStar(;)
@@ -1639,7 +1639,7 @@
       parseTopLevelKeywordModifiers(;, typedef)
       parseTypedef(typedef)
         listener: beginUncategorizedTopLevelDeclaration(typedef)
-        listener: beginFunctionTypeAlias(typedef)
+        listener: beginTypedef(typedef)
         listener: handleVoidKeyword(void)
         ensureIdentifierPotentiallyRecovered(void, typedefDeclaration, true)
           reportRecoverableErrorWithToken(interface, Instance of 'Template<(Token) => Message>')
@@ -1651,7 +1651,7 @@
             listener: beginFormalParameters((, MemberKind.FunctionTypeAlias)
             listener: endFormalParameters(0, (, ), MemberKind.FunctionTypeAlias)
         ensureSemicolon())
-        listener: endFunctionTypeAlias(typedef, null, ;)
+        listener: endTypedef(typedef, null, ;)
   listener: endTopLevelDeclaration(typedef)
   parseTopLevelDeclarationImpl(;, Instance of 'DirectiveContext')
     parseMetadataStar(;)
@@ -1661,7 +1661,7 @@
       parseTopLevelKeywordModifiers(;, typedef)
       parseTypedef(typedef)
         listener: beginUncategorizedTopLevelDeclaration(typedef)
-        listener: beginFunctionTypeAlias(typedef)
+        listener: beginTypedef(typedef)
         ensureIdentifierPotentiallyRecovered(typedef, typedefDeclaration, true)
           reportRecoverableErrorWithToken(interface, Instance of 'Template<(Token) => Message>')
             listener: handleRecoverableError(Message[ExpectedIdentifierButGotKeyword, 'interface' can't be used as an identifier because it's a keyword., Try renaming this to be an identifier that isn't a keyword., {lexeme: interface}], interface, interface)
@@ -1676,7 +1676,7 @@
             listener: endFormalParameters(0, (, ), MemberKind.GeneralizedFunctionType)
         listener: endFunctionType(Function, null)
         ensureSemicolon())
-        listener: endFunctionTypeAlias(typedef, =, ;)
+        listener: endTypedef(typedef, =, ;)
   listener: endTopLevelDeclaration(typedef)
   parseTopLevelDeclarationImpl(;, Instance of 'DirectiveContext')
     parseMetadataStar(;)
@@ -1686,7 +1686,7 @@
       parseTopLevelKeywordModifiers(;, typedef)
       parseTypedef(typedef)
         listener: beginUncategorizedTopLevelDeclaration(typedef)
-        listener: beginFunctionTypeAlias(typedef)
+        listener: beginTypedef(typedef)
         listener: handleVoidKeyword(void)
         ensureIdentifierPotentiallyRecovered(void, typedefDeclaration, true)
           reportRecoverableErrorWithToken(is, Instance of 'Template<(Token) => Message>')
@@ -1698,7 +1698,7 @@
             listener: beginFormalParameters((, MemberKind.FunctionTypeAlias)
             listener: endFormalParameters(0, (, ), MemberKind.FunctionTypeAlias)
         ensureSemicolon())
-        listener: endFunctionTypeAlias(typedef, null, ;)
+        listener: endTypedef(typedef, null, ;)
   listener: endTopLevelDeclaration(typedef)
   parseTopLevelDeclarationImpl(;, Instance of 'DirectiveContext')
     parseMetadataStar(;)
@@ -1708,7 +1708,7 @@
       parseTopLevelKeywordModifiers(;, typedef)
       parseTypedef(typedef)
         listener: beginUncategorizedTopLevelDeclaration(typedef)
-        listener: beginFunctionTypeAlias(typedef)
+        listener: beginTypedef(typedef)
         ensureIdentifierPotentiallyRecovered(typedef, typedefDeclaration, true)
           reportRecoverableErrorWithToken(is, Instance of 'Template<(Token) => Message>')
             listener: handleRecoverableError(Message[ExpectedIdentifierButGotKeyword, 'is' can't be used as an identifier because it's a keyword., Try renaming this to be an identifier that isn't a keyword., {lexeme: is}], is, is)
@@ -1723,7 +1723,7 @@
             listener: endFormalParameters(0, (, ), MemberKind.GeneralizedFunctionType)
         listener: endFunctionType(Function, null)
         ensureSemicolon())
-        listener: endFunctionTypeAlias(typedef, =, ;)
+        listener: endTypedef(typedef, =, ;)
   listener: endTopLevelDeclaration(typedef)
   parseTopLevelDeclarationImpl(;, Instance of 'DirectiveContext')
     parseMetadataStar(;)
@@ -1733,7 +1733,7 @@
       parseTopLevelKeywordModifiers(;, typedef)
       parseTypedef(typedef)
         listener: beginUncategorizedTopLevelDeclaration(typedef)
-        listener: beginFunctionTypeAlias(typedef)
+        listener: beginTypedef(typedef)
         listener: handleVoidKeyword(void)
         ensureIdentifierPotentiallyRecovered(void, typedefDeclaration, true)
           reportRecoverableErrorWithToken(late, Instance of 'Template<(Token) => Message>')
@@ -1745,7 +1745,7 @@
             listener: beginFormalParameters((, MemberKind.FunctionTypeAlias)
             listener: endFormalParameters(0, (, ), MemberKind.FunctionTypeAlias)
         ensureSemicolon())
-        listener: endFunctionTypeAlias(typedef, null, ;)
+        listener: endTypedef(typedef, null, ;)
   listener: endTopLevelDeclaration(typedef)
   parseTopLevelDeclarationImpl(;, Instance of 'DirectiveContext')
     parseMetadataStar(;)
@@ -1755,7 +1755,7 @@
       parseTopLevelKeywordModifiers(;, typedef)
       parseTypedef(typedef)
         listener: beginUncategorizedTopLevelDeclaration(typedef)
-        listener: beginFunctionTypeAlias(typedef)
+        listener: beginTypedef(typedef)
         ensureIdentifierPotentiallyRecovered(typedef, typedefDeclaration, true)
           reportRecoverableErrorWithToken(late, Instance of 'Template<(Token) => Message>')
             listener: handleRecoverableError(Message[ExpectedIdentifierButGotKeyword, 'late' can't be used as an identifier because it's a keyword., Try renaming this to be an identifier that isn't a keyword., {lexeme: late}], late, late)
@@ -1770,7 +1770,7 @@
             listener: endFormalParameters(0, (, ), MemberKind.GeneralizedFunctionType)
         listener: endFunctionType(Function, null)
         ensureSemicolon())
-        listener: endFunctionTypeAlias(typedef, =, ;)
+        listener: endTypedef(typedef, =, ;)
   listener: endTopLevelDeclaration(typedef)
   parseTopLevelDeclarationImpl(;, Instance of 'DirectiveContext')
     parseMetadataStar(;)
@@ -1780,7 +1780,7 @@
       parseTopLevelKeywordModifiers(;, typedef)
       parseTypedef(typedef)
         listener: beginUncategorizedTopLevelDeclaration(typedef)
-        listener: beginFunctionTypeAlias(typedef)
+        listener: beginTypedef(typedef)
         listener: handleVoidKeyword(void)
         ensureIdentifierPotentiallyRecovered(void, typedefDeclaration, true)
           reportRecoverableErrorWithToken(library, Instance of 'Template<(Token) => Message>')
@@ -1792,7 +1792,7 @@
             listener: beginFormalParameters((, MemberKind.FunctionTypeAlias)
             listener: endFormalParameters(0, (, ), MemberKind.FunctionTypeAlias)
         ensureSemicolon())
-        listener: endFunctionTypeAlias(typedef, null, ;)
+        listener: endTypedef(typedef, null, ;)
   listener: endTopLevelDeclaration(typedef)
   parseTopLevelDeclarationImpl(;, Instance of 'DirectiveContext')
     parseMetadataStar(;)
@@ -1802,7 +1802,7 @@
       parseTopLevelKeywordModifiers(;, typedef)
       parseTypedef(typedef)
         listener: beginUncategorizedTopLevelDeclaration(typedef)
-        listener: beginFunctionTypeAlias(typedef)
+        listener: beginTypedef(typedef)
         ensureIdentifierPotentiallyRecovered(typedef, typedefDeclaration, true)
           reportRecoverableErrorWithToken(library, Instance of 'Template<(Token) => Message>')
             listener: handleRecoverableError(Message[ExpectedIdentifierButGotKeyword, 'library' can't be used as an identifier because it's a keyword., Try renaming this to be an identifier that isn't a keyword., {lexeme: library}], library, library)
@@ -1817,7 +1817,7 @@
             listener: endFormalParameters(0, (, ), MemberKind.GeneralizedFunctionType)
         listener: endFunctionType(Function, null)
         ensureSemicolon())
-        listener: endFunctionTypeAlias(typedef, =, ;)
+        listener: endTypedef(typedef, =, ;)
   listener: endTopLevelDeclaration(typedef)
   parseTopLevelDeclarationImpl(;, Instance of 'DirectiveContext')
     parseMetadataStar(;)
@@ -1827,7 +1827,7 @@
       parseTopLevelKeywordModifiers(;, typedef)
       parseTypedef(typedef)
         listener: beginUncategorizedTopLevelDeclaration(typedef)
-        listener: beginFunctionTypeAlias(typedef)
+        listener: beginTypedef(typedef)
         listener: handleVoidKeyword(void)
         ensureIdentifierPotentiallyRecovered(void, typedefDeclaration, true)
           reportRecoverableErrorWithToken(mixin, Instance of 'Template<(Token) => Message>')
@@ -1839,7 +1839,7 @@
             listener: beginFormalParameters((, MemberKind.FunctionTypeAlias)
             listener: endFormalParameters(0, (, ), MemberKind.FunctionTypeAlias)
         ensureSemicolon())
-        listener: endFunctionTypeAlias(typedef, null, ;)
+        listener: endTypedef(typedef, null, ;)
   listener: endTopLevelDeclaration(typedef)
   parseTopLevelDeclarationImpl(;, Instance of 'DirectiveContext')
     parseMetadataStar(;)
@@ -1849,7 +1849,7 @@
       parseTopLevelKeywordModifiers(;, typedef)
       parseTypedef(typedef)
         listener: beginUncategorizedTopLevelDeclaration(typedef)
-        listener: beginFunctionTypeAlias(typedef)
+        listener: beginTypedef(typedef)
         ensureIdentifierPotentiallyRecovered(typedef, typedefDeclaration, true)
           reportRecoverableErrorWithToken(mixin, Instance of 'Template<(Token) => Message>')
             listener: handleRecoverableError(Message[ExpectedIdentifierButGotKeyword, 'mixin' can't be used as an identifier because it's a keyword., Try renaming this to be an identifier that isn't a keyword., {lexeme: mixin}], mixin, mixin)
@@ -1864,7 +1864,7 @@
             listener: endFormalParameters(0, (, ), MemberKind.GeneralizedFunctionType)
         listener: endFunctionType(Function, null)
         ensureSemicolon())
-        listener: endFunctionTypeAlias(typedef, =, ;)
+        listener: endTypedef(typedef, =, ;)
   listener: endTopLevelDeclaration(typedef)
   parseTopLevelDeclarationImpl(;, Instance of 'DirectiveContext')
     parseMetadataStar(;)
@@ -1874,7 +1874,7 @@
       parseTopLevelKeywordModifiers(;, typedef)
       parseTypedef(typedef)
         listener: beginUncategorizedTopLevelDeclaration(typedef)
-        listener: beginFunctionTypeAlias(typedef)
+        listener: beginTypedef(typedef)
         listener: handleVoidKeyword(void)
         ensureIdentifierPotentiallyRecovered(void, typedefDeclaration, true)
           listener: handleIdentifier(native, typedefDeclaration)
@@ -1884,7 +1884,7 @@
             listener: beginFormalParameters((, MemberKind.FunctionTypeAlias)
             listener: endFormalParameters(0, (, ), MemberKind.FunctionTypeAlias)
         ensureSemicolon())
-        listener: endFunctionTypeAlias(typedef, null, ;)
+        listener: endTypedef(typedef, null, ;)
   listener: endTopLevelDeclaration(typedef)
   parseTopLevelDeclarationImpl(;, Instance of 'DirectiveContext')
     parseMetadataStar(;)
@@ -1894,7 +1894,7 @@
       parseTopLevelKeywordModifiers(;, typedef)
       parseTypedef(typedef)
         listener: beginUncategorizedTopLevelDeclaration(typedef)
-        listener: beginFunctionTypeAlias(typedef)
+        listener: beginTypedef(typedef)
         ensureIdentifierPotentiallyRecovered(typedef, typedefDeclaration, true)
           listener: handleIdentifier(native, typedefDeclaration)
         listener: handleNoTypeVariables(=)
@@ -1907,7 +1907,7 @@
             listener: endFormalParameters(0, (, ), MemberKind.GeneralizedFunctionType)
         listener: endFunctionType(Function, null)
         ensureSemicolon())
-        listener: endFunctionTypeAlias(typedef, =, ;)
+        listener: endTypedef(typedef, =, ;)
   listener: endTopLevelDeclaration(typedef)
   parseTopLevelDeclarationImpl(;, Instance of 'DirectiveContext')
     parseMetadataStar(;)
@@ -1917,7 +1917,7 @@
       parseTopLevelKeywordModifiers(;, typedef)
       parseTypedef(typedef)
         listener: beginUncategorizedTopLevelDeclaration(typedef)
-        listener: beginFunctionTypeAlias(typedef)
+        listener: beginTypedef(typedef)
         listener: handleVoidKeyword(void)
         ensureIdentifierPotentiallyRecovered(void, typedefDeclaration, true)
           reportRecoverableErrorWithToken(new, Instance of 'Template<(Token) => Message>')
@@ -1929,7 +1929,7 @@
             listener: beginFormalParameters((, MemberKind.FunctionTypeAlias)
             listener: endFormalParameters(0, (, ), MemberKind.FunctionTypeAlias)
         ensureSemicolon())
-        listener: endFunctionTypeAlias(typedef, null, ;)
+        listener: endTypedef(typedef, null, ;)
   listener: endTopLevelDeclaration(typedef)
   parseTopLevelDeclarationImpl(;, Instance of 'DirectiveContext')
     parseMetadataStar(;)
@@ -1939,7 +1939,7 @@
       parseTopLevelKeywordModifiers(;, typedef)
       parseTypedef(typedef)
         listener: beginUncategorizedTopLevelDeclaration(typedef)
-        listener: beginFunctionTypeAlias(typedef)
+        listener: beginTypedef(typedef)
         ensureIdentifierPotentiallyRecovered(typedef, typedefDeclaration, true)
           reportRecoverableErrorWithToken(new, Instance of 'Template<(Token) => Message>')
             listener: handleRecoverableError(Message[ExpectedIdentifierButGotKeyword, 'new' can't be used as an identifier because it's a keyword., Try renaming this to be an identifier that isn't a keyword., {lexeme: new}], new, new)
@@ -1954,7 +1954,7 @@
             listener: endFormalParameters(0, (, ), MemberKind.GeneralizedFunctionType)
         listener: endFunctionType(Function, null)
         ensureSemicolon())
-        listener: endFunctionTypeAlias(typedef, =, ;)
+        listener: endTypedef(typedef, =, ;)
   listener: endTopLevelDeclaration(typedef)
   parseTopLevelDeclarationImpl(;, Instance of 'DirectiveContext')
     parseMetadataStar(;)
@@ -1964,7 +1964,7 @@
       parseTopLevelKeywordModifiers(;, typedef)
       parseTypedef(typedef)
         listener: beginUncategorizedTopLevelDeclaration(typedef)
-        listener: beginFunctionTypeAlias(typedef)
+        listener: beginTypedef(typedef)
         listener: handleVoidKeyword(void)
         ensureIdentifierPotentiallyRecovered(void, typedefDeclaration, true)
           reportRecoverableErrorWithToken(null, Instance of 'Template<(Token) => Message>')
@@ -1976,7 +1976,7 @@
             listener: beginFormalParameters((, MemberKind.FunctionTypeAlias)
             listener: endFormalParameters(0, (, ), MemberKind.FunctionTypeAlias)
         ensureSemicolon())
-        listener: endFunctionTypeAlias(typedef, null, ;)
+        listener: endTypedef(typedef, null, ;)
   listener: endTopLevelDeclaration(typedef)
   parseTopLevelDeclarationImpl(;, Instance of 'DirectiveContext')
     parseMetadataStar(;)
@@ -1986,7 +1986,7 @@
       parseTopLevelKeywordModifiers(;, typedef)
       parseTypedef(typedef)
         listener: beginUncategorizedTopLevelDeclaration(typedef)
-        listener: beginFunctionTypeAlias(typedef)
+        listener: beginTypedef(typedef)
         ensureIdentifierPotentiallyRecovered(typedef, typedefDeclaration, true)
           reportRecoverableErrorWithToken(null, Instance of 'Template<(Token) => Message>')
             listener: handleRecoverableError(Message[ExpectedIdentifierButGotKeyword, 'null' can't be used as an identifier because it's a keyword., Try renaming this to be an identifier that isn't a keyword., {lexeme: null}], null, null)
@@ -2001,7 +2001,7 @@
             listener: endFormalParameters(0, (, ), MemberKind.GeneralizedFunctionType)
         listener: endFunctionType(Function, null)
         ensureSemicolon())
-        listener: endFunctionTypeAlias(typedef, =, ;)
+        listener: endTypedef(typedef, =, ;)
   listener: endTopLevelDeclaration(typedef)
   parseTopLevelDeclarationImpl(;, Instance of 'DirectiveContext')
     parseMetadataStar(;)
@@ -2011,7 +2011,7 @@
       parseTopLevelKeywordModifiers(;, typedef)
       parseTypedef(typedef)
         listener: beginUncategorizedTopLevelDeclaration(typedef)
-        listener: beginFunctionTypeAlias(typedef)
+        listener: beginTypedef(typedef)
         listener: handleVoidKeyword(void)
         ensureIdentifierPotentiallyRecovered(void, typedefDeclaration, true)
           listener: handleIdentifier(of, typedefDeclaration)
@@ -2021,7 +2021,7 @@
             listener: beginFormalParameters((, MemberKind.FunctionTypeAlias)
             listener: endFormalParameters(0, (, ), MemberKind.FunctionTypeAlias)
         ensureSemicolon())
-        listener: endFunctionTypeAlias(typedef, null, ;)
+        listener: endTypedef(typedef, null, ;)
   listener: endTopLevelDeclaration(typedef)
   parseTopLevelDeclarationImpl(;, Instance of 'DirectiveContext')
     parseMetadataStar(;)
@@ -2031,7 +2031,7 @@
       parseTopLevelKeywordModifiers(;, typedef)
       parseTypedef(typedef)
         listener: beginUncategorizedTopLevelDeclaration(typedef)
-        listener: beginFunctionTypeAlias(typedef)
+        listener: beginTypedef(typedef)
         ensureIdentifierPotentiallyRecovered(typedef, typedefDeclaration, true)
           listener: handleIdentifier(of, typedefDeclaration)
         listener: handleNoTypeVariables(=)
@@ -2044,7 +2044,7 @@
             listener: endFormalParameters(0, (, ), MemberKind.GeneralizedFunctionType)
         listener: endFunctionType(Function, null)
         ensureSemicolon())
-        listener: endFunctionTypeAlias(typedef, =, ;)
+        listener: endTypedef(typedef, =, ;)
   listener: endTopLevelDeclaration(typedef)
   parseTopLevelDeclarationImpl(;, Instance of 'DirectiveContext')
     parseMetadataStar(;)
@@ -2054,7 +2054,7 @@
       parseTopLevelKeywordModifiers(;, typedef)
       parseTypedef(typedef)
         listener: beginUncategorizedTopLevelDeclaration(typedef)
-        listener: beginFunctionTypeAlias(typedef)
+        listener: beginTypedef(typedef)
         listener: handleVoidKeyword(void)
         ensureIdentifierPotentiallyRecovered(void, typedefDeclaration, true)
           listener: handleIdentifier(on, typedefDeclaration)
@@ -2064,7 +2064,7 @@
             listener: beginFormalParameters((, MemberKind.FunctionTypeAlias)
             listener: endFormalParameters(0, (, ), MemberKind.FunctionTypeAlias)
         ensureSemicolon())
-        listener: endFunctionTypeAlias(typedef, null, ;)
+        listener: endTypedef(typedef, null, ;)
   listener: endTopLevelDeclaration(typedef)
   parseTopLevelDeclarationImpl(;, Instance of 'DirectiveContext')
     parseMetadataStar(;)
@@ -2074,7 +2074,7 @@
       parseTopLevelKeywordModifiers(;, typedef)
       parseTypedef(typedef)
         listener: beginUncategorizedTopLevelDeclaration(typedef)
-        listener: beginFunctionTypeAlias(typedef)
+        listener: beginTypedef(typedef)
         ensureIdentifierPotentiallyRecovered(typedef, typedefDeclaration, true)
           listener: handleIdentifier(on, typedefDeclaration)
         listener: handleNoTypeVariables(=)
@@ -2087,7 +2087,7 @@
             listener: endFormalParameters(0, (, ), MemberKind.GeneralizedFunctionType)
         listener: endFunctionType(Function, null)
         ensureSemicolon())
-        listener: endFunctionTypeAlias(typedef, =, ;)
+        listener: endTypedef(typedef, =, ;)
   listener: endTopLevelDeclaration(typedef)
   parseTopLevelDeclarationImpl(;, Instance of 'DirectiveContext')
     parseMetadataStar(;)
@@ -2097,7 +2097,7 @@
       parseTopLevelKeywordModifiers(;, typedef)
       parseTypedef(typedef)
         listener: beginUncategorizedTopLevelDeclaration(typedef)
-        listener: beginFunctionTypeAlias(typedef)
+        listener: beginTypedef(typedef)
         listener: handleVoidKeyword(void)
         ensureIdentifierPotentiallyRecovered(void, typedefDeclaration, true)
           reportRecoverableErrorWithToken(operator, Instance of 'Template<(Token) => Message>')
@@ -2109,7 +2109,7 @@
             listener: beginFormalParameters((, MemberKind.FunctionTypeAlias)
             listener: endFormalParameters(0, (, ), MemberKind.FunctionTypeAlias)
         ensureSemicolon())
-        listener: endFunctionTypeAlias(typedef, null, ;)
+        listener: endTypedef(typedef, null, ;)
   listener: endTopLevelDeclaration(typedef)
   parseTopLevelDeclarationImpl(;, Instance of 'DirectiveContext')
     parseMetadataStar(;)
@@ -2119,7 +2119,7 @@
       parseTopLevelKeywordModifiers(;, typedef)
       parseTypedef(typedef)
         listener: beginUncategorizedTopLevelDeclaration(typedef)
-        listener: beginFunctionTypeAlias(typedef)
+        listener: beginTypedef(typedef)
         ensureIdentifierPotentiallyRecovered(typedef, typedefDeclaration, true)
           reportRecoverableErrorWithToken(operator, Instance of 'Template<(Token) => Message>')
             listener: handleRecoverableError(Message[ExpectedIdentifierButGotKeyword, 'operator' can't be used as an identifier because it's a keyword., Try renaming this to be an identifier that isn't a keyword., {lexeme: operator}], operator, operator)
@@ -2134,7 +2134,7 @@
             listener: endFormalParameters(0, (, ), MemberKind.GeneralizedFunctionType)
         listener: endFunctionType(Function, null)
         ensureSemicolon())
-        listener: endFunctionTypeAlias(typedef, =, ;)
+        listener: endTypedef(typedef, =, ;)
   listener: endTopLevelDeclaration(typedef)
   parseTopLevelDeclarationImpl(;, Instance of 'DirectiveContext')
     parseMetadataStar(;)
@@ -2144,7 +2144,7 @@
       parseTopLevelKeywordModifiers(;, typedef)
       parseTypedef(typedef)
         listener: beginUncategorizedTopLevelDeclaration(typedef)
-        listener: beginFunctionTypeAlias(typedef)
+        listener: beginTypedef(typedef)
         listener: handleVoidKeyword(void)
         ensureIdentifierPotentiallyRecovered(void, typedefDeclaration, true)
           listener: handleIdentifier(out, typedefDeclaration)
@@ -2154,7 +2154,7 @@
             listener: beginFormalParameters((, MemberKind.FunctionTypeAlias)
             listener: endFormalParameters(0, (, ), MemberKind.FunctionTypeAlias)
         ensureSemicolon())
-        listener: endFunctionTypeAlias(typedef, null, ;)
+        listener: endTypedef(typedef, null, ;)
   listener: endTopLevelDeclaration(typedef)
   parseTopLevelDeclarationImpl(;, Instance of 'DirectiveContext')
     parseMetadataStar(;)
@@ -2164,7 +2164,7 @@
       parseTopLevelKeywordModifiers(;, typedef)
       parseTypedef(typedef)
         listener: beginUncategorizedTopLevelDeclaration(typedef)
-        listener: beginFunctionTypeAlias(typedef)
+        listener: beginTypedef(typedef)
         ensureIdentifierPotentiallyRecovered(typedef, typedefDeclaration, true)
           listener: handleIdentifier(out, typedefDeclaration)
         listener: handleNoTypeVariables(=)
@@ -2177,7 +2177,7 @@
             listener: endFormalParameters(0, (, ), MemberKind.GeneralizedFunctionType)
         listener: endFunctionType(Function, null)
         ensureSemicolon())
-        listener: endFunctionTypeAlias(typedef, =, ;)
+        listener: endTypedef(typedef, =, ;)
   listener: endTopLevelDeclaration(typedef)
   parseTopLevelDeclarationImpl(;, Instance of 'DirectiveContext')
     parseMetadataStar(;)
@@ -2187,7 +2187,7 @@
       parseTopLevelKeywordModifiers(;, typedef)
       parseTypedef(typedef)
         listener: beginUncategorizedTopLevelDeclaration(typedef)
-        listener: beginFunctionTypeAlias(typedef)
+        listener: beginTypedef(typedef)
         listener: handleVoidKeyword(void)
         ensureIdentifierPotentiallyRecovered(void, typedefDeclaration, true)
           reportRecoverableErrorWithToken(part, Instance of 'Template<(Token) => Message>')
@@ -2199,7 +2199,7 @@
             listener: beginFormalParameters((, MemberKind.FunctionTypeAlias)
             listener: endFormalParameters(0, (, ), MemberKind.FunctionTypeAlias)
         ensureSemicolon())
-        listener: endFunctionTypeAlias(typedef, null, ;)
+        listener: endTypedef(typedef, null, ;)
   listener: endTopLevelDeclaration(typedef)
   parseTopLevelDeclarationImpl(;, Instance of 'DirectiveContext')
     parseMetadataStar(;)
@@ -2209,7 +2209,7 @@
       parseTopLevelKeywordModifiers(;, typedef)
       parseTypedef(typedef)
         listener: beginUncategorizedTopLevelDeclaration(typedef)
-        listener: beginFunctionTypeAlias(typedef)
+        listener: beginTypedef(typedef)
         ensureIdentifierPotentiallyRecovered(typedef, typedefDeclaration, true)
           reportRecoverableErrorWithToken(part, Instance of 'Template<(Token) => Message>')
             listener: handleRecoverableError(Message[ExpectedIdentifierButGotKeyword, 'part' can't be used as an identifier because it's a keyword., Try renaming this to be an identifier that isn't a keyword., {lexeme: part}], part, part)
@@ -2224,7 +2224,7 @@
             listener: endFormalParameters(0, (, ), MemberKind.GeneralizedFunctionType)
         listener: endFunctionType(Function, null)
         ensureSemicolon())
-        listener: endFunctionTypeAlias(typedef, =, ;)
+        listener: endTypedef(typedef, =, ;)
   listener: endTopLevelDeclaration(typedef)
   parseTopLevelDeclarationImpl(;, Instance of 'DirectiveContext')
     parseMetadataStar(;)
@@ -2234,7 +2234,7 @@
       parseTopLevelKeywordModifiers(;, typedef)
       parseTypedef(typedef)
         listener: beginUncategorizedTopLevelDeclaration(typedef)
-        listener: beginFunctionTypeAlias(typedef)
+        listener: beginTypedef(typedef)
         listener: handleVoidKeyword(void)
         ensureIdentifierPotentiallyRecovered(void, typedefDeclaration, true)
           listener: handleIdentifier(patch, typedefDeclaration)
@@ -2244,7 +2244,7 @@
             listener: beginFormalParameters((, MemberKind.FunctionTypeAlias)
             listener: endFormalParameters(0, (, ), MemberKind.FunctionTypeAlias)
         ensureSemicolon())
-        listener: endFunctionTypeAlias(typedef, null, ;)
+        listener: endTypedef(typedef, null, ;)
   listener: endTopLevelDeclaration(typedef)
   parseTopLevelDeclarationImpl(;, Instance of 'DirectiveContext')
     parseMetadataStar(;)
@@ -2254,7 +2254,7 @@
       parseTopLevelKeywordModifiers(;, typedef)
       parseTypedef(typedef)
         listener: beginUncategorizedTopLevelDeclaration(typedef)
-        listener: beginFunctionTypeAlias(typedef)
+        listener: beginTypedef(typedef)
         ensureIdentifierPotentiallyRecovered(typedef, typedefDeclaration, true)
           listener: handleIdentifier(patch, typedefDeclaration)
         listener: handleNoTypeVariables(=)
@@ -2267,7 +2267,7 @@
             listener: endFormalParameters(0, (, ), MemberKind.GeneralizedFunctionType)
         listener: endFunctionType(Function, null)
         ensureSemicolon())
-        listener: endFunctionTypeAlias(typedef, =, ;)
+        listener: endTypedef(typedef, =, ;)
   listener: endTopLevelDeclaration(typedef)
   parseTopLevelDeclarationImpl(;, Instance of 'DirectiveContext')
     parseMetadataStar(;)
@@ -2277,7 +2277,7 @@
       parseTopLevelKeywordModifiers(;, typedef)
       parseTypedef(typedef)
         listener: beginUncategorizedTopLevelDeclaration(typedef)
-        listener: beginFunctionTypeAlias(typedef)
+        listener: beginTypedef(typedef)
         listener: handleVoidKeyword(void)
         ensureIdentifierPotentiallyRecovered(void, typedefDeclaration, true)
           reportRecoverableErrorWithToken(required, Instance of 'Template<(Token) => Message>')
@@ -2289,7 +2289,7 @@
             listener: beginFormalParameters((, MemberKind.FunctionTypeAlias)
             listener: endFormalParameters(0, (, ), MemberKind.FunctionTypeAlias)
         ensureSemicolon())
-        listener: endFunctionTypeAlias(typedef, null, ;)
+        listener: endTypedef(typedef, null, ;)
   listener: endTopLevelDeclaration(typedef)
   parseTopLevelDeclarationImpl(;, Instance of 'DirectiveContext')
     parseMetadataStar(;)
@@ -2299,7 +2299,7 @@
       parseTopLevelKeywordModifiers(;, typedef)
       parseTypedef(typedef)
         listener: beginUncategorizedTopLevelDeclaration(typedef)
-        listener: beginFunctionTypeAlias(typedef)
+        listener: beginTypedef(typedef)
         ensureIdentifierPotentiallyRecovered(typedef, typedefDeclaration, true)
           reportRecoverableErrorWithToken(required, Instance of 'Template<(Token) => Message>')
             listener: handleRecoverableError(Message[ExpectedIdentifierButGotKeyword, 'required' can't be used as an identifier because it's a keyword., Try renaming this to be an identifier that isn't a keyword., {lexeme: required}], required, required)
@@ -2314,7 +2314,7 @@
             listener: endFormalParameters(0, (, ), MemberKind.GeneralizedFunctionType)
         listener: endFunctionType(Function, null)
         ensureSemicolon())
-        listener: endFunctionTypeAlias(typedef, =, ;)
+        listener: endTypedef(typedef, =, ;)
   listener: endTopLevelDeclaration(typedef)
   parseTopLevelDeclarationImpl(;, Instance of 'DirectiveContext')
     parseMetadataStar(;)
@@ -2324,7 +2324,7 @@
       parseTopLevelKeywordModifiers(;, typedef)
       parseTypedef(typedef)
         listener: beginUncategorizedTopLevelDeclaration(typedef)
-        listener: beginFunctionTypeAlias(typedef)
+        listener: beginTypedef(typedef)
         listener: handleVoidKeyword(void)
         ensureIdentifierPotentiallyRecovered(void, typedefDeclaration, true)
           reportRecoverableErrorWithToken(rethrow, Instance of 'Template<(Token) => Message>')
@@ -2336,7 +2336,7 @@
             listener: beginFormalParameters((, MemberKind.FunctionTypeAlias)
             listener: endFormalParameters(0, (, ), MemberKind.FunctionTypeAlias)
         ensureSemicolon())
-        listener: endFunctionTypeAlias(typedef, null, ;)
+        listener: endTypedef(typedef, null, ;)
   listener: endTopLevelDeclaration(typedef)
   parseTopLevelDeclarationImpl(;, Instance of 'DirectiveContext')
     parseMetadataStar(;)
@@ -2346,7 +2346,7 @@
       parseTopLevelKeywordModifiers(;, typedef)
       parseTypedef(typedef)
         listener: beginUncategorizedTopLevelDeclaration(typedef)
-        listener: beginFunctionTypeAlias(typedef)
+        listener: beginTypedef(typedef)
         ensureIdentifierPotentiallyRecovered(typedef, typedefDeclaration, true)
           reportRecoverableErrorWithToken(rethrow, Instance of 'Template<(Token) => Message>')
             listener: handleRecoverableError(Message[ExpectedIdentifierButGotKeyword, 'rethrow' can't be used as an identifier because it's a keyword., Try renaming this to be an identifier that isn't a keyword., {lexeme: rethrow}], rethrow, rethrow)
@@ -2361,7 +2361,7 @@
             listener: endFormalParameters(0, (, ), MemberKind.GeneralizedFunctionType)
         listener: endFunctionType(Function, null)
         ensureSemicolon())
-        listener: endFunctionTypeAlias(typedef, =, ;)
+        listener: endTypedef(typedef, =, ;)
   listener: endTopLevelDeclaration(typedef)
   parseTopLevelDeclarationImpl(;, Instance of 'DirectiveContext')
     parseMetadataStar(;)
@@ -2371,7 +2371,7 @@
       parseTopLevelKeywordModifiers(;, typedef)
       parseTypedef(typedef)
         listener: beginUncategorizedTopLevelDeclaration(typedef)
-        listener: beginFunctionTypeAlias(typedef)
+        listener: beginTypedef(typedef)
         listener: handleVoidKeyword(void)
         ensureIdentifierPotentiallyRecovered(void, typedefDeclaration, true)
           reportRecoverableErrorWithToken(return, Instance of 'Template<(Token) => Message>')
@@ -2383,7 +2383,7 @@
             listener: beginFormalParameters((, MemberKind.FunctionTypeAlias)
             listener: endFormalParameters(0, (, ), MemberKind.FunctionTypeAlias)
         ensureSemicolon())
-        listener: endFunctionTypeAlias(typedef, null, ;)
+        listener: endTypedef(typedef, null, ;)
   listener: endTopLevelDeclaration(typedef)
   parseTopLevelDeclarationImpl(;, Instance of 'DirectiveContext')
     parseMetadataStar(;)
@@ -2393,7 +2393,7 @@
       parseTopLevelKeywordModifiers(;, typedef)
       parseTypedef(typedef)
         listener: beginUncategorizedTopLevelDeclaration(typedef)
-        listener: beginFunctionTypeAlias(typedef)
+        listener: beginTypedef(typedef)
         ensureIdentifierPotentiallyRecovered(typedef, typedefDeclaration, true)
           reportRecoverableErrorWithToken(return, Instance of 'Template<(Token) => Message>')
             listener: handleRecoverableError(Message[ExpectedIdentifierButGotKeyword, 'return' can't be used as an identifier because it's a keyword., Try renaming this to be an identifier that isn't a keyword., {lexeme: return}], return, return)
@@ -2408,7 +2408,7 @@
             listener: endFormalParameters(0, (, ), MemberKind.GeneralizedFunctionType)
         listener: endFunctionType(Function, null)
         ensureSemicolon())
-        listener: endFunctionTypeAlias(typedef, =, ;)
+        listener: endTypedef(typedef, =, ;)
   listener: endTopLevelDeclaration(typedef)
   parseTopLevelDeclarationImpl(;, Instance of 'DirectiveContext')
     parseMetadataStar(;)
@@ -2418,7 +2418,7 @@
       parseTopLevelKeywordModifiers(;, typedef)
       parseTypedef(typedef)
         listener: beginUncategorizedTopLevelDeclaration(typedef)
-        listener: beginFunctionTypeAlias(typedef)
+        listener: beginTypedef(typedef)
         listener: handleVoidKeyword(void)
         ensureIdentifierPotentiallyRecovered(void, typedefDeclaration, true)
           reportRecoverableErrorWithToken(set, Instance of 'Template<(Token) => Message>')
@@ -2430,7 +2430,7 @@
             listener: beginFormalParameters((, MemberKind.FunctionTypeAlias)
             listener: endFormalParameters(0, (, ), MemberKind.FunctionTypeAlias)
         ensureSemicolon())
-        listener: endFunctionTypeAlias(typedef, null, ;)
+        listener: endTypedef(typedef, null, ;)
   listener: endTopLevelDeclaration(typedef)
   parseTopLevelDeclarationImpl(;, Instance of 'DirectiveContext')
     parseMetadataStar(;)
@@ -2440,7 +2440,7 @@
       parseTopLevelKeywordModifiers(;, typedef)
       parseTypedef(typedef)
         listener: beginUncategorizedTopLevelDeclaration(typedef)
-        listener: beginFunctionTypeAlias(typedef)
+        listener: beginTypedef(typedef)
         ensureIdentifierPotentiallyRecovered(typedef, typedefDeclaration, true)
           reportRecoverableErrorWithToken(set, Instance of 'Template<(Token) => Message>')
             listener: handleRecoverableError(Message[ExpectedIdentifierButGotKeyword, 'set' can't be used as an identifier because it's a keyword., Try renaming this to be an identifier that isn't a keyword., {lexeme: set}], set, set)
@@ -2455,7 +2455,7 @@
             listener: endFormalParameters(0, (, ), MemberKind.GeneralizedFunctionType)
         listener: endFunctionType(Function, null)
         ensureSemicolon())
-        listener: endFunctionTypeAlias(typedef, =, ;)
+        listener: endTypedef(typedef, =, ;)
   listener: endTopLevelDeclaration(typedef)
   parseTopLevelDeclarationImpl(;, Instance of 'DirectiveContext')
     parseMetadataStar(;)
@@ -2465,7 +2465,7 @@
       parseTopLevelKeywordModifiers(;, typedef)
       parseTypedef(typedef)
         listener: beginUncategorizedTopLevelDeclaration(typedef)
-        listener: beginFunctionTypeAlias(typedef)
+        listener: beginTypedef(typedef)
         listener: handleVoidKeyword(void)
         ensureIdentifierPotentiallyRecovered(void, typedefDeclaration, true)
           listener: handleIdentifier(show, typedefDeclaration)
@@ -2475,7 +2475,7 @@
             listener: beginFormalParameters((, MemberKind.FunctionTypeAlias)
             listener: endFormalParameters(0, (, ), MemberKind.FunctionTypeAlias)
         ensureSemicolon())
-        listener: endFunctionTypeAlias(typedef, null, ;)
+        listener: endTypedef(typedef, null, ;)
   listener: endTopLevelDeclaration(typedef)
   parseTopLevelDeclarationImpl(;, Instance of 'DirectiveContext')
     parseMetadataStar(;)
@@ -2485,7 +2485,7 @@
       parseTopLevelKeywordModifiers(;, typedef)
       parseTypedef(typedef)
         listener: beginUncategorizedTopLevelDeclaration(typedef)
-        listener: beginFunctionTypeAlias(typedef)
+        listener: beginTypedef(typedef)
         ensureIdentifierPotentiallyRecovered(typedef, typedefDeclaration, true)
           listener: handleIdentifier(show, typedefDeclaration)
         listener: handleNoTypeVariables(=)
@@ -2498,7 +2498,7 @@
             listener: endFormalParameters(0, (, ), MemberKind.GeneralizedFunctionType)
         listener: endFunctionType(Function, null)
         ensureSemicolon())
-        listener: endFunctionTypeAlias(typedef, =, ;)
+        listener: endTypedef(typedef, =, ;)
   listener: endTopLevelDeclaration(typedef)
   parseTopLevelDeclarationImpl(;, Instance of 'DirectiveContext')
     parseMetadataStar(;)
@@ -2508,7 +2508,7 @@
       parseTopLevelKeywordModifiers(;, typedef)
       parseTypedef(typedef)
         listener: beginUncategorizedTopLevelDeclaration(typedef)
-        listener: beginFunctionTypeAlias(typedef)
+        listener: beginTypedef(typedef)
         listener: handleVoidKeyword(void)
         ensureIdentifierPotentiallyRecovered(void, typedefDeclaration, true)
           listener: handleIdentifier(source, typedefDeclaration)
@@ -2518,7 +2518,7 @@
             listener: beginFormalParameters((, MemberKind.FunctionTypeAlias)
             listener: endFormalParameters(0, (, ), MemberKind.FunctionTypeAlias)
         ensureSemicolon())
-        listener: endFunctionTypeAlias(typedef, null, ;)
+        listener: endTypedef(typedef, null, ;)
   listener: endTopLevelDeclaration(typedef)
   parseTopLevelDeclarationImpl(;, Instance of 'DirectiveContext')
     parseMetadataStar(;)
@@ -2528,7 +2528,7 @@
       parseTopLevelKeywordModifiers(;, typedef)
       parseTypedef(typedef)
         listener: beginUncategorizedTopLevelDeclaration(typedef)
-        listener: beginFunctionTypeAlias(typedef)
+        listener: beginTypedef(typedef)
         ensureIdentifierPotentiallyRecovered(typedef, typedefDeclaration, true)
           listener: handleIdentifier(source, typedefDeclaration)
         listener: handleNoTypeVariables(=)
@@ -2541,7 +2541,7 @@
             listener: endFormalParameters(0, (, ), MemberKind.GeneralizedFunctionType)
         listener: endFunctionType(Function, null)
         ensureSemicolon())
-        listener: endFunctionTypeAlias(typedef, =, ;)
+        listener: endTypedef(typedef, =, ;)
   listener: endTopLevelDeclaration(typedef)
   parseTopLevelDeclarationImpl(;, Instance of 'DirectiveContext')
     parseMetadataStar(;)
@@ -2551,7 +2551,7 @@
       parseTopLevelKeywordModifiers(;, typedef)
       parseTypedef(typedef)
         listener: beginUncategorizedTopLevelDeclaration(typedef)
-        listener: beginFunctionTypeAlias(typedef)
+        listener: beginTypedef(typedef)
         listener: handleVoidKeyword(void)
         ensureIdentifierPotentiallyRecovered(void, typedefDeclaration, true)
           reportRecoverableErrorWithToken(static, Instance of 'Template<(Token) => Message>')
@@ -2563,7 +2563,7 @@
             listener: beginFormalParameters((, MemberKind.FunctionTypeAlias)
             listener: endFormalParameters(0, (, ), MemberKind.FunctionTypeAlias)
         ensureSemicolon())
-        listener: endFunctionTypeAlias(typedef, null, ;)
+        listener: endTypedef(typedef, null, ;)
   listener: endTopLevelDeclaration(typedef)
   parseTopLevelDeclarationImpl(;, Instance of 'DirectiveContext')
     parseMetadataStar(;)
@@ -2573,7 +2573,7 @@
       parseTopLevelKeywordModifiers(;, typedef)
       parseTypedef(typedef)
         listener: beginUncategorizedTopLevelDeclaration(typedef)
-        listener: beginFunctionTypeAlias(typedef)
+        listener: beginTypedef(typedef)
         ensureIdentifierPotentiallyRecovered(typedef, typedefDeclaration, true)
           reportRecoverableErrorWithToken(static, Instance of 'Template<(Token) => Message>')
             listener: handleRecoverableError(Message[ExpectedIdentifierButGotKeyword, 'static' can't be used as an identifier because it's a keyword., Try renaming this to be an identifier that isn't a keyword., {lexeme: static}], static, static)
@@ -2588,7 +2588,7 @@
             listener: endFormalParameters(0, (, ), MemberKind.GeneralizedFunctionType)
         listener: endFunctionType(Function, null)
         ensureSemicolon())
-        listener: endFunctionTypeAlias(typedef, =, ;)
+        listener: endTypedef(typedef, =, ;)
   listener: endTopLevelDeclaration(typedef)
   parseTopLevelDeclarationImpl(;, Instance of 'DirectiveContext')
     parseMetadataStar(;)
@@ -2598,7 +2598,7 @@
       parseTopLevelKeywordModifiers(;, typedef)
       parseTypedef(typedef)
         listener: beginUncategorizedTopLevelDeclaration(typedef)
-        listener: beginFunctionTypeAlias(typedef)
+        listener: beginTypedef(typedef)
         listener: handleVoidKeyword(void)
         ensureIdentifierPotentiallyRecovered(void, typedefDeclaration, true)
           reportRecoverableErrorWithToken(super, Instance of 'Template<(Token) => Message>')
@@ -2610,7 +2610,7 @@
             listener: beginFormalParameters((, MemberKind.FunctionTypeAlias)
             listener: endFormalParameters(0, (, ), MemberKind.FunctionTypeAlias)
         ensureSemicolon())
-        listener: endFunctionTypeAlias(typedef, null, ;)
+        listener: endTypedef(typedef, null, ;)
   listener: endTopLevelDeclaration(typedef)
   parseTopLevelDeclarationImpl(;, Instance of 'DirectiveContext')
     parseMetadataStar(;)
@@ -2620,7 +2620,7 @@
       parseTopLevelKeywordModifiers(;, typedef)
       parseTypedef(typedef)
         listener: beginUncategorizedTopLevelDeclaration(typedef)
-        listener: beginFunctionTypeAlias(typedef)
+        listener: beginTypedef(typedef)
         ensureIdentifierPotentiallyRecovered(typedef, typedefDeclaration, true)
           reportRecoverableErrorWithToken(super, Instance of 'Template<(Token) => Message>')
             listener: handleRecoverableError(Message[ExpectedIdentifierButGotKeyword, 'super' can't be used as an identifier because it's a keyword., Try renaming this to be an identifier that isn't a keyword., {lexeme: super}], super, super)
@@ -2635,7 +2635,7 @@
             listener: endFormalParameters(0, (, ), MemberKind.GeneralizedFunctionType)
         listener: endFunctionType(Function, null)
         ensureSemicolon())
-        listener: endFunctionTypeAlias(typedef, =, ;)
+        listener: endTypedef(typedef, =, ;)
   listener: endTopLevelDeclaration(typedef)
   parseTopLevelDeclarationImpl(;, Instance of 'DirectiveContext')
     parseMetadataStar(;)
@@ -2645,7 +2645,7 @@
       parseTopLevelKeywordModifiers(;, typedef)
       parseTypedef(typedef)
         listener: beginUncategorizedTopLevelDeclaration(typedef)
-        listener: beginFunctionTypeAlias(typedef)
+        listener: beginTypedef(typedef)
         listener: handleVoidKeyword(void)
         ensureIdentifierPotentiallyRecovered(void, typedefDeclaration, true)
           reportRecoverableErrorWithToken(switch, Instance of 'Template<(Token) => Message>')
@@ -2657,7 +2657,7 @@
             listener: beginFormalParameters((, MemberKind.FunctionTypeAlias)
             listener: endFormalParameters(0, (, ), MemberKind.FunctionTypeAlias)
         ensureSemicolon())
-        listener: endFunctionTypeAlias(typedef, null, ;)
+        listener: endTypedef(typedef, null, ;)
   listener: endTopLevelDeclaration(typedef)
   parseTopLevelDeclarationImpl(;, Instance of 'DirectiveContext')
     parseMetadataStar(;)
@@ -2667,7 +2667,7 @@
       parseTopLevelKeywordModifiers(;, typedef)
       parseTypedef(typedef)
         listener: beginUncategorizedTopLevelDeclaration(typedef)
-        listener: beginFunctionTypeAlias(typedef)
+        listener: beginTypedef(typedef)
         ensureIdentifierPotentiallyRecovered(typedef, typedefDeclaration, true)
           reportRecoverableErrorWithToken(switch, Instance of 'Template<(Token) => Message>')
             listener: handleRecoverableError(Message[ExpectedIdentifierButGotKeyword, 'switch' can't be used as an identifier because it's a keyword., Try renaming this to be an identifier that isn't a keyword., {lexeme: switch}], switch, switch)
@@ -2682,7 +2682,7 @@
             listener: endFormalParameters(0, (, ), MemberKind.GeneralizedFunctionType)
         listener: endFunctionType(Function, null)
         ensureSemicolon())
-        listener: endFunctionTypeAlias(typedef, =, ;)
+        listener: endTypedef(typedef, =, ;)
   listener: endTopLevelDeclaration(typedef)
   parseTopLevelDeclarationImpl(;, Instance of 'DirectiveContext')
     parseMetadataStar(;)
@@ -2692,7 +2692,7 @@
       parseTopLevelKeywordModifiers(;, typedef)
       parseTypedef(typedef)
         listener: beginUncategorizedTopLevelDeclaration(typedef)
-        listener: beginFunctionTypeAlias(typedef)
+        listener: beginTypedef(typedef)
         listener: handleVoidKeyword(void)
         ensureIdentifierPotentiallyRecovered(void, typedefDeclaration, true)
           listener: handleIdentifier(sync, typedefDeclaration)
@@ -2702,7 +2702,7 @@
             listener: beginFormalParameters((, MemberKind.FunctionTypeAlias)
             listener: endFormalParameters(0, (, ), MemberKind.FunctionTypeAlias)
         ensureSemicolon())
-        listener: endFunctionTypeAlias(typedef, null, ;)
+        listener: endTypedef(typedef, null, ;)
   listener: endTopLevelDeclaration(typedef)
   parseTopLevelDeclarationImpl(;, Instance of 'DirectiveContext')
     parseMetadataStar(;)
@@ -2712,7 +2712,7 @@
       parseTopLevelKeywordModifiers(;, typedef)
       parseTypedef(typedef)
         listener: beginUncategorizedTopLevelDeclaration(typedef)
-        listener: beginFunctionTypeAlias(typedef)
+        listener: beginTypedef(typedef)
         ensureIdentifierPotentiallyRecovered(typedef, typedefDeclaration, true)
           listener: handleIdentifier(sync, typedefDeclaration)
         listener: handleNoTypeVariables(=)
@@ -2725,7 +2725,7 @@
             listener: endFormalParameters(0, (, ), MemberKind.GeneralizedFunctionType)
         listener: endFunctionType(Function, null)
         ensureSemicolon())
-        listener: endFunctionTypeAlias(typedef, =, ;)
+        listener: endTypedef(typedef, =, ;)
   listener: endTopLevelDeclaration(typedef)
   parseTopLevelDeclarationImpl(;, Instance of 'DirectiveContext')
     parseMetadataStar(;)
@@ -2735,7 +2735,7 @@
       parseTopLevelKeywordModifiers(;, typedef)
       parseTypedef(typedef)
         listener: beginUncategorizedTopLevelDeclaration(typedef)
-        listener: beginFunctionTypeAlias(typedef)
+        listener: beginTypedef(typedef)
         listener: handleVoidKeyword(void)
         ensureIdentifierPotentiallyRecovered(void, typedefDeclaration, true)
           reportRecoverableErrorWithToken(this, Instance of 'Template<(Token) => Message>')
@@ -2747,7 +2747,7 @@
             listener: beginFormalParameters((, MemberKind.FunctionTypeAlias)
             listener: endFormalParameters(0, (, ), MemberKind.FunctionTypeAlias)
         ensureSemicolon())
-        listener: endFunctionTypeAlias(typedef, null, ;)
+        listener: endTypedef(typedef, null, ;)
   listener: endTopLevelDeclaration(typedef)
   parseTopLevelDeclarationImpl(;, Instance of 'DirectiveContext')
     parseMetadataStar(;)
@@ -2757,7 +2757,7 @@
       parseTopLevelKeywordModifiers(;, typedef)
       parseTypedef(typedef)
         listener: beginUncategorizedTopLevelDeclaration(typedef)
-        listener: beginFunctionTypeAlias(typedef)
+        listener: beginTypedef(typedef)
         ensureIdentifierPotentiallyRecovered(typedef, typedefDeclaration, true)
           reportRecoverableErrorWithToken(this, Instance of 'Template<(Token) => Message>')
             listener: handleRecoverableError(Message[ExpectedIdentifierButGotKeyword, 'this' can't be used as an identifier because it's a keyword., Try renaming this to be an identifier that isn't a keyword., {lexeme: this}], this, this)
@@ -2772,7 +2772,7 @@
             listener: endFormalParameters(0, (, ), MemberKind.GeneralizedFunctionType)
         listener: endFunctionType(Function, null)
         ensureSemicolon())
-        listener: endFunctionTypeAlias(typedef, =, ;)
+        listener: endTypedef(typedef, =, ;)
   listener: endTopLevelDeclaration(typedef)
   parseTopLevelDeclarationImpl(;, Instance of 'DirectiveContext')
     parseMetadataStar(;)
@@ -2782,7 +2782,7 @@
       parseTopLevelKeywordModifiers(;, typedef)
       parseTypedef(typedef)
         listener: beginUncategorizedTopLevelDeclaration(typedef)
-        listener: beginFunctionTypeAlias(typedef)
+        listener: beginTypedef(typedef)
         listener: handleVoidKeyword(void)
         ensureIdentifierPotentiallyRecovered(void, typedefDeclaration, true)
           reportRecoverableErrorWithToken(throw, Instance of 'Template<(Token) => Message>')
@@ -2794,7 +2794,7 @@
             listener: beginFormalParameters((, MemberKind.FunctionTypeAlias)
             listener: endFormalParameters(0, (, ), MemberKind.FunctionTypeAlias)
         ensureSemicolon())
-        listener: endFunctionTypeAlias(typedef, null, ;)
+        listener: endTypedef(typedef, null, ;)
   listener: endTopLevelDeclaration(typedef)
   parseTopLevelDeclarationImpl(;, Instance of 'DirectiveContext')
     parseMetadataStar(;)
@@ -2804,7 +2804,7 @@
       parseTopLevelKeywordModifiers(;, typedef)
       parseTypedef(typedef)
         listener: beginUncategorizedTopLevelDeclaration(typedef)
-        listener: beginFunctionTypeAlias(typedef)
+        listener: beginTypedef(typedef)
         ensureIdentifierPotentiallyRecovered(typedef, typedefDeclaration, true)
           reportRecoverableErrorWithToken(throw, Instance of 'Template<(Token) => Message>')
             listener: handleRecoverableError(Message[ExpectedIdentifierButGotKeyword, 'throw' can't be used as an identifier because it's a keyword., Try renaming this to be an identifier that isn't a keyword., {lexeme: throw}], throw, throw)
@@ -2819,7 +2819,7 @@
             listener: endFormalParameters(0, (, ), MemberKind.GeneralizedFunctionType)
         listener: endFunctionType(Function, null)
         ensureSemicolon())
-        listener: endFunctionTypeAlias(typedef, =, ;)
+        listener: endTypedef(typedef, =, ;)
   listener: endTopLevelDeclaration(typedef)
   parseTopLevelDeclarationImpl(;, Instance of 'DirectiveContext')
     parseMetadataStar(;)
@@ -2829,7 +2829,7 @@
       parseTopLevelKeywordModifiers(;, typedef)
       parseTypedef(typedef)
         listener: beginUncategorizedTopLevelDeclaration(typedef)
-        listener: beginFunctionTypeAlias(typedef)
+        listener: beginTypedef(typedef)
         listener: handleVoidKeyword(void)
         ensureIdentifierPotentiallyRecovered(void, typedefDeclaration, true)
           reportRecoverableErrorWithToken(true, Instance of 'Template<(Token) => Message>')
@@ -2841,7 +2841,7 @@
             listener: beginFormalParameters((, MemberKind.FunctionTypeAlias)
             listener: endFormalParameters(0, (, ), MemberKind.FunctionTypeAlias)
         ensureSemicolon())
-        listener: endFunctionTypeAlias(typedef, null, ;)
+        listener: endTypedef(typedef, null, ;)
   listener: endTopLevelDeclaration(typedef)
   parseTopLevelDeclarationImpl(;, Instance of 'DirectiveContext')
     parseMetadataStar(;)
@@ -2851,7 +2851,7 @@
       parseTopLevelKeywordModifiers(;, typedef)
       parseTypedef(typedef)
         listener: beginUncategorizedTopLevelDeclaration(typedef)
-        listener: beginFunctionTypeAlias(typedef)
+        listener: beginTypedef(typedef)
         ensureIdentifierPotentiallyRecovered(typedef, typedefDeclaration, true)
           reportRecoverableErrorWithToken(true, Instance of 'Template<(Token) => Message>')
             listener: handleRecoverableError(Message[ExpectedIdentifierButGotKeyword, 'true' can't be used as an identifier because it's a keyword., Try renaming this to be an identifier that isn't a keyword., {lexeme: true}], true, true)
@@ -2866,7 +2866,7 @@
             listener: endFormalParameters(0, (, ), MemberKind.GeneralizedFunctionType)
         listener: endFunctionType(Function, null)
         ensureSemicolon())
-        listener: endFunctionTypeAlias(typedef, =, ;)
+        listener: endTypedef(typedef, =, ;)
   listener: endTopLevelDeclaration(typedef)
   parseTopLevelDeclarationImpl(;, Instance of 'DirectiveContext')
     parseMetadataStar(;)
@@ -2876,7 +2876,7 @@
       parseTopLevelKeywordModifiers(;, typedef)
       parseTypedef(typedef)
         listener: beginUncategorizedTopLevelDeclaration(typedef)
-        listener: beginFunctionTypeAlias(typedef)
+        listener: beginTypedef(typedef)
         listener: handleVoidKeyword(void)
         ensureIdentifierPotentiallyRecovered(void, typedefDeclaration, true)
           reportRecoverableErrorWithToken(try, Instance of 'Template<(Token) => Message>')
@@ -2888,7 +2888,7 @@
             listener: beginFormalParameters((, MemberKind.FunctionTypeAlias)
             listener: endFormalParameters(0, (, ), MemberKind.FunctionTypeAlias)
         ensureSemicolon())
-        listener: endFunctionTypeAlias(typedef, null, ;)
+        listener: endTypedef(typedef, null, ;)
   listener: endTopLevelDeclaration(typedef)
   parseTopLevelDeclarationImpl(;, Instance of 'DirectiveContext')
     parseMetadataStar(;)
@@ -2898,7 +2898,7 @@
       parseTopLevelKeywordModifiers(;, typedef)
       parseTypedef(typedef)
         listener: beginUncategorizedTopLevelDeclaration(typedef)
-        listener: beginFunctionTypeAlias(typedef)
+        listener: beginTypedef(typedef)
         ensureIdentifierPotentiallyRecovered(typedef, typedefDeclaration, true)
           reportRecoverableErrorWithToken(try, Instance of 'Template<(Token) => Message>')
             listener: handleRecoverableError(Message[ExpectedIdentifierButGotKeyword, 'try' can't be used as an identifier because it's a keyword., Try renaming this to be an identifier that isn't a keyword., {lexeme: try}], try, try)
@@ -2913,7 +2913,7 @@
             listener: endFormalParameters(0, (, ), MemberKind.GeneralizedFunctionType)
         listener: endFunctionType(Function, null)
         ensureSemicolon())
-        listener: endFunctionTypeAlias(typedef, =, ;)
+        listener: endTypedef(typedef, =, ;)
   listener: endTopLevelDeclaration(typedef)
   parseTopLevelDeclarationImpl(;, Instance of 'DirectiveContext')
     parseMetadataStar(;)
@@ -2923,7 +2923,7 @@
       parseTopLevelKeywordModifiers(;, typedef)
       parseTypedef(typedef)
         listener: beginUncategorizedTopLevelDeclaration(typedef)
-        listener: beginFunctionTypeAlias(typedef)
+        listener: beginTypedef(typedef)
         listener: handleVoidKeyword(void)
         ensureIdentifierPotentiallyRecovered(void, typedefDeclaration, true)
           reportRecoverableErrorWithToken(typedef, Instance of 'Template<(Token) => Message>')
@@ -2935,7 +2935,7 @@
             listener: beginFormalParameters((, MemberKind.FunctionTypeAlias)
             listener: endFormalParameters(0, (, ), MemberKind.FunctionTypeAlias)
         ensureSemicolon())
-        listener: endFunctionTypeAlias(typedef, null, ;)
+        listener: endTypedef(typedef, null, ;)
   listener: endTopLevelDeclaration(typedef)
   parseTopLevelDeclarationImpl(;, Instance of 'DirectiveContext')
     parseMetadataStar(;)
@@ -2945,7 +2945,7 @@
       parseTopLevelKeywordModifiers(;, typedef)
       parseTypedef(typedef)
         listener: beginUncategorizedTopLevelDeclaration(typedef)
-        listener: beginFunctionTypeAlias(typedef)
+        listener: beginTypedef(typedef)
         ensureIdentifierPotentiallyRecovered(typedef, typedefDeclaration, true)
           reportRecoverableErrorWithToken(typedef, Instance of 'Template<(Token) => Message>')
             listener: handleRecoverableError(Message[ExpectedIdentifierButGotKeyword, 'typedef' can't be used as an identifier because it's a keyword., Try renaming this to be an identifier that isn't a keyword., {lexeme: typedef}], typedef, typedef)
@@ -2960,7 +2960,7 @@
             listener: endFormalParameters(0, (, ), MemberKind.GeneralizedFunctionType)
         listener: endFunctionType(Function, null)
         ensureSemicolon())
-        listener: endFunctionTypeAlias(typedef, =, ;)
+        listener: endTypedef(typedef, =, ;)
   listener: endTopLevelDeclaration(typedef)
   parseTopLevelDeclarationImpl(;, Instance of 'DirectiveContext')
     parseMetadataStar(;)
@@ -2970,7 +2970,7 @@
       parseTopLevelKeywordModifiers(;, typedef)
       parseTypedef(typedef)
         listener: beginUncategorizedTopLevelDeclaration(typedef)
-        listener: beginFunctionTypeAlias(typedef)
+        listener: beginTypedef(typedef)
         listener: handleVoidKeyword(void)
         ensureIdentifierPotentiallyRecovered(void, typedefDeclaration, true)
           reportRecoverableErrorWithToken(var, Instance of 'Template<(Token) => Message>')
@@ -2982,7 +2982,7 @@
             listener: beginFormalParameters((, MemberKind.FunctionTypeAlias)
             listener: endFormalParameters(0, (, ), MemberKind.FunctionTypeAlias)
         ensureSemicolon())
-        listener: endFunctionTypeAlias(typedef, null, ;)
+        listener: endTypedef(typedef, null, ;)
   listener: endTopLevelDeclaration(typedef)
   parseTopLevelDeclarationImpl(;, Instance of 'DirectiveContext')
     parseMetadataStar(;)
@@ -2992,7 +2992,7 @@
       parseTopLevelKeywordModifiers(;, typedef)
       parseTypedef(typedef)
         listener: beginUncategorizedTopLevelDeclaration(typedef)
-        listener: beginFunctionTypeAlias(typedef)
+        listener: beginTypedef(typedef)
         ensureIdentifierPotentiallyRecovered(typedef, typedefDeclaration, true)
           reportRecoverableErrorWithToken(var, Instance of 'Template<(Token) => Message>')
             listener: handleRecoverableError(Message[ExpectedIdentifierButGotKeyword, 'var' can't be used as an identifier because it's a keyword., Try renaming this to be an identifier that isn't a keyword., {lexeme: var}], var, var)
@@ -3007,7 +3007,7 @@
             listener: endFormalParameters(0, (, ), MemberKind.GeneralizedFunctionType)
         listener: endFunctionType(Function, null)
         ensureSemicolon())
-        listener: endFunctionTypeAlias(typedef, =, ;)
+        listener: endTypedef(typedef, =, ;)
   listener: endTopLevelDeclaration(typedef)
   parseTopLevelDeclarationImpl(;, Instance of 'DirectiveContext')
     parseMetadataStar(;)
@@ -3017,7 +3017,7 @@
       parseTopLevelKeywordModifiers(;, typedef)
       parseTypedef(typedef)
         listener: beginUncategorizedTopLevelDeclaration(typedef)
-        listener: beginFunctionTypeAlias(typedef)
+        listener: beginTypedef(typedef)
         listener: handleVoidKeyword(void)
         ensureIdentifierPotentiallyRecovered(void, typedefDeclaration, true)
           reportRecoverableErrorWithToken(void, Instance of 'Template<(Token) => Message>')
@@ -3029,7 +3029,7 @@
             listener: beginFormalParameters((, MemberKind.FunctionTypeAlias)
             listener: endFormalParameters(0, (, ), MemberKind.FunctionTypeAlias)
         ensureSemicolon())
-        listener: endFunctionTypeAlias(typedef, null, ;)
+        listener: endTypedef(typedef, null, ;)
   listener: endTopLevelDeclaration(typedef)
   parseTopLevelDeclarationImpl(;, Instance of 'DirectiveContext')
     parseMetadataStar(;)
@@ -3039,7 +3039,7 @@
       parseTopLevelKeywordModifiers(;, typedef)
       parseTypedef(typedef)
         listener: beginUncategorizedTopLevelDeclaration(typedef)
-        listener: beginFunctionTypeAlias(typedef)
+        listener: beginTypedef(typedef)
         listener: handleVoidKeyword(void)
         ensureIdentifierPotentiallyRecovered(void, typedefDeclaration, false)
           insertSyntheticIdentifier(void, typedefDeclaration, message: Message[ExpectedIdentifier, Expected an identifier, but got '='., Try inserting an identifier before '='., {lexeme: =}], messageOnToken: null)
@@ -3060,7 +3060,7 @@
           reportRecoverableError((, Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}])
             listener: handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], =, =)
           rewriter()
-        listener: endFunctionTypeAlias(typedef, null, ;)
+        listener: endTypedef(typedef, null, ;)
   listener: endTopLevelDeclaration(=)
   parseTopLevelDeclarationImpl(;, Instance of 'DirectiveContext')
     parseMetadataStar(;)
@@ -3107,7 +3107,7 @@
       parseTopLevelKeywordModifiers(;, typedef)
       parseTypedef(typedef)
         listener: beginUncategorizedTopLevelDeclaration(typedef)
-        listener: beginFunctionTypeAlias(typedef)
+        listener: beginTypedef(typedef)
         listener: handleVoidKeyword(void)
         ensureIdentifierPotentiallyRecovered(void, typedefDeclaration, true)
           reportRecoverableErrorWithToken(while, Instance of 'Template<(Token) => Message>')
@@ -3119,7 +3119,7 @@
             listener: beginFormalParameters((, MemberKind.FunctionTypeAlias)
             listener: endFormalParameters(0, (, ), MemberKind.FunctionTypeAlias)
         ensureSemicolon())
-        listener: endFunctionTypeAlias(typedef, null, ;)
+        listener: endTypedef(typedef, null, ;)
   listener: endTopLevelDeclaration(typedef)
   parseTopLevelDeclarationImpl(;, Instance of 'DirectiveContext')
     parseMetadataStar(;)
@@ -3129,7 +3129,7 @@
       parseTopLevelKeywordModifiers(;, typedef)
       parseTypedef(typedef)
         listener: beginUncategorizedTopLevelDeclaration(typedef)
-        listener: beginFunctionTypeAlias(typedef)
+        listener: beginTypedef(typedef)
         ensureIdentifierPotentiallyRecovered(typedef, typedefDeclaration, true)
           reportRecoverableErrorWithToken(while, Instance of 'Template<(Token) => Message>')
             listener: handleRecoverableError(Message[ExpectedIdentifierButGotKeyword, 'while' can't be used as an identifier because it's a keyword., Try renaming this to be an identifier that isn't a keyword., {lexeme: while}], while, while)
@@ -3144,7 +3144,7 @@
             listener: endFormalParameters(0, (, ), MemberKind.GeneralizedFunctionType)
         listener: endFunctionType(Function, null)
         ensureSemicolon())
-        listener: endFunctionTypeAlias(typedef, =, ;)
+        listener: endTypedef(typedef, =, ;)
   listener: endTopLevelDeclaration(typedef)
   parseTopLevelDeclarationImpl(;, Instance of 'DirectiveContext')
     parseMetadataStar(;)
@@ -3154,7 +3154,7 @@
       parseTopLevelKeywordModifiers(;, typedef)
       parseTypedef(typedef)
         listener: beginUncategorizedTopLevelDeclaration(typedef)
-        listener: beginFunctionTypeAlias(typedef)
+        listener: beginTypedef(typedef)
         listener: handleVoidKeyword(void)
         ensureIdentifierPotentiallyRecovered(void, typedefDeclaration, true)
           reportRecoverableErrorWithToken(with, Instance of 'Template<(Token) => Message>')
@@ -3166,7 +3166,7 @@
             listener: beginFormalParameters((, MemberKind.FunctionTypeAlias)
             listener: endFormalParameters(0, (, ), MemberKind.FunctionTypeAlias)
         ensureSemicolon())
-        listener: endFunctionTypeAlias(typedef, null, ;)
+        listener: endTypedef(typedef, null, ;)
   listener: endTopLevelDeclaration(typedef)
   parseTopLevelDeclarationImpl(;, Instance of 'DirectiveContext')
     parseMetadataStar(;)
@@ -3176,7 +3176,7 @@
       parseTopLevelKeywordModifiers(;, typedef)
       parseTypedef(typedef)
         listener: beginUncategorizedTopLevelDeclaration(typedef)
-        listener: beginFunctionTypeAlias(typedef)
+        listener: beginTypedef(typedef)
         ensureIdentifierPotentiallyRecovered(typedef, typedefDeclaration, true)
           reportRecoverableErrorWithToken(with, Instance of 'Template<(Token) => Message>')
             listener: handleRecoverableError(Message[ExpectedIdentifierButGotKeyword, 'with' can't be used as an identifier because it's a keyword., Try renaming this to be an identifier that isn't a keyword., {lexeme: with}], with, with)
@@ -3191,7 +3191,7 @@
             listener: endFormalParameters(0, (, ), MemberKind.GeneralizedFunctionType)
         listener: endFunctionType(Function, null)
         ensureSemicolon())
-        listener: endFunctionTypeAlias(typedef, =, ;)
+        listener: endTypedef(typedef, =, ;)
   listener: endTopLevelDeclaration(typedef)
   parseTopLevelDeclarationImpl(;, Instance of 'DirectiveContext')
     parseMetadataStar(;)
@@ -3201,7 +3201,7 @@
       parseTopLevelKeywordModifiers(;, typedef)
       parseTypedef(typedef)
         listener: beginUncategorizedTopLevelDeclaration(typedef)
-        listener: beginFunctionTypeAlias(typedef)
+        listener: beginTypedef(typedef)
         listener: handleVoidKeyword(void)
         ensureIdentifierPotentiallyRecovered(void, typedefDeclaration, true)
           listener: handleIdentifier(yield, typedefDeclaration)
@@ -3211,7 +3211,7 @@
             listener: beginFormalParameters((, MemberKind.FunctionTypeAlias)
             listener: endFormalParameters(0, (, ), MemberKind.FunctionTypeAlias)
         ensureSemicolon())
-        listener: endFunctionTypeAlias(typedef, null, ;)
+        listener: endTypedef(typedef, null, ;)
   listener: endTopLevelDeclaration(typedef)
   parseTopLevelDeclarationImpl(;, Instance of 'DirectiveContext')
     parseMetadataStar(;)
@@ -3221,7 +3221,7 @@
       parseTopLevelKeywordModifiers(;, typedef)
       parseTypedef(typedef)
         listener: beginUncategorizedTopLevelDeclaration(typedef)
-        listener: beginFunctionTypeAlias(typedef)
+        listener: beginTypedef(typedef)
         ensureIdentifierPotentiallyRecovered(typedef, typedefDeclaration, true)
           listener: handleIdentifier(yield, typedefDeclaration)
         listener: handleNoTypeVariables(=)
@@ -3234,7 +3234,7 @@
             listener: endFormalParameters(0, (, ), MemberKind.GeneralizedFunctionType)
         listener: endFunctionType(Function, null)
         ensureSemicolon())
-        listener: endFunctionTypeAlias(typedef, =, ;)
+        listener: endTypedef(typedef, =, ;)
   listener: endTopLevelDeclaration()
   reportAllErrorTokens(typedef)
   listener: endCompilationUnit(140, )
diff --git a/pkg/front_end/parser_testcases/error_recovery/method_called_with.dart.expect b/pkg/front_end/parser_testcases/error_recovery/method_called_with.dart.expect
index 486a686..b1c728f 100644
--- a/pkg/front_end/parser_testcases/error_recovery/method_called_with.dart.expect
+++ b/pkg/front_end/parser_testcases/error_recovery/method_called_with.dart.expect
@@ -27,7 +27,7 @@
 beginCompilationUnit(class)
   beginMetadataStar(class)
   endMetadataStar(0)
-  beginClassOrNamedMixinApplicationPrelude(class)
+  beginClassOrMixinOrNamedMixinApplicationPrelude(class)
     handleIdentifier(C, classOrMixinDeclaration)
     handleNoTypeVariables({)
     beginClassDeclaration(class, null, C)
@@ -36,11 +36,11 @@
       handleClassNoWithClause()
       handleClassOrMixinImplements(null, 0)
       handleClassHeader(class, class, null)
-      beginClassOrMixinBody(DeclarationKind.Class, {)
+      beginClassOrMixinOrExtensionBody(DeclarationKind.Class, {)
         beginMetadataStar(int)
         endMetadataStar(0)
         beginMember()
-          beginMethod(null, null, null, null, null, with)
+          beginMethod(DeclarationKind.Class, null, null, null, null, null, with)
             handleIdentifier(int, typeReference)
             handleNoTypeArguments(with)
             handleType(int, null)
@@ -58,7 +58,7 @@
         beginMetadataStar(int)
         endMetadataStar(0)
         beginMember()
-          beginFields(;)
+          beginFields(DeclarationKind.Class, null, null, null, null, null, null, ;)
             handleIdentifier(int, typeReference)
             handleNoTypeArguments(with)
             handleType(int, null)
@@ -72,7 +72,7 @@
         beginMetadataStar(int)
         endMetadataStar(0)
         beginMember()
-          beginMethod(null, null, null, null, get, with)
+          beginMethod(DeclarationKind.Class, null, null, null, null, get, with)
             handleIdentifier(int, typeReference)
             handleNoTypeArguments(get)
             handleType(int, null)
@@ -89,7 +89,7 @@
         beginMetadataStar(void)
         endMetadataStar(0)
         beginMember()
-          beginMethod(null, null, null, null, set, with)
+          beginMethod(DeclarationKind.Class, null, null, null, null, set, with)
             handleVoidKeyword(void)
             handleRecoverableError(Message[ExpectedIdentifierButGotKeyword, 'with' can't be used as an identifier because it's a keyword., Try renaming this to be an identifier that isn't a keyword., {lexeme: with}], with, with)
             handleIdentifier(with, methodDeclaration)
@@ -111,7 +111,7 @@
             endBlockFunctionBody(0, {, })
           endClassMethod(set, void, (, null, })
         endMember()
-      endClassOrMixinBody(DeclarationKind.Class, 4, {, })
+      endClassOrMixinOrExtensionBody(DeclarationKind.Class, 4, {, })
     endClassDeclaration(class, })
   endTopLevelDeclaration(int)
   beginMetadataStar(int)
@@ -134,7 +134,7 @@
   beginMetadataStar(int)
   endMetadataStar(0)
   beginTopLevelMember(int)
-    beginFields(;)
+    beginFields(DeclarationKind.TopLevel, null, null, null, null, null, null, ;)
       handleIdentifier(int, typeReference)
       handleNoTypeArguments(with)
       handleType(int, null)
diff --git a/pkg/front_end/parser_testcases/error_recovery/method_called_with.dart.intertwined.expect b/pkg/front_end/parser_testcases/error_recovery/method_called_with.dart.intertwined.expect
index 2b0370c..f836250 100644
--- a/pkg/front_end/parser_testcases/error_recovery/method_called_with.dart.intertwined.expect
+++ b/pkg/front_end/parser_testcases/error_recovery/method_called_with.dart.intertwined.expect
@@ -9,7 +9,7 @@
     parseTopLevelKeywordDeclaration(, class, Instance of 'DirectiveContext')
       parseClassDeclarationModifiers(, class)
       parseClassOrNamedMixinApplication(null, class)
-        listener: beginClassOrNamedMixinApplicationPrelude(class)
+        listener: beginClassOrMixinOrNamedMixinApplicationPrelude(class)
         ensureIdentifier(class, classOrMixinDeclaration)
           listener: handleIdentifier(C, classOrMixinDeclaration)
         listener: handleNoTypeVariables({)
@@ -25,7 +25,7 @@
               listener: handleClassOrMixinImplements(null, 0)
             listener: handleClassHeader(class, class, null)
           parseClassOrMixinOrExtensionBody(C, DeclarationKind.Class, C)
-            listener: beginClassOrMixinBody(DeclarationKind.Class, {)
+            listener: beginClassOrMixinOrExtensionBody(DeclarationKind.Class, {)
             notEofOrValue(}, int)
             parseClassOrMixinOrExtensionMemberImpl({, DeclarationKind.Class, C)
               parseMetadataStar({)
@@ -35,7 +35,7 @@
               isReservedKeyword(with)
               indicatesMethodOrField(()
               parseMethod({, null, null, null, null, null, null, {, Instance of 'SimpleType', null, with, DeclarationKind.Class, C, true)
-                listener: beginMethod(null, null, null, null, null, with)
+                listener: beginMethod(DeclarationKind.Class, null, null, null, null, null, with)
                 listener: handleIdentifier(int, typeReference)
                 listener: handleNoTypeArguments(with)
                 listener: handleType(int, null)
@@ -79,7 +79,7 @@
               isReservedKeyword(with)
               indicatesMethodOrField(=)
               parseFields(;, null, null, null, null, null, null, ;, Instance of 'SimpleType', with, DeclarationKind.Class, C, true)
-                listener: beginFields(;)
+                listener: beginFields(DeclarationKind.Class, null, null, null, null, null, null, ;)
                 listener: handleIdentifier(int, typeReference)
                 listener: handleNoTypeArguments(with)
                 listener: handleType(int, null)
@@ -107,7 +107,7 @@
               isReservedKeyword(with)
               indicatesMethodOrField(=>)
               parseMethod(;, null, null, null, null, null, null, ;, Instance of 'SimpleType', get, with, DeclarationKind.Class, C, true)
-                listener: beginMethod(null, null, null, null, get, with)
+                listener: beginMethod(DeclarationKind.Class, null, null, null, null, get, with)
                 listener: handleIdentifier(int, typeReference)
                 listener: handleNoTypeArguments(get)
                 listener: handleType(int, null)
@@ -148,7 +148,7 @@
               isReservedKeyword(with)
               indicatesMethodOrField(()
               parseMethod(;, null, null, null, null, null, null, ;, Instance of 'VoidType', set, with, DeclarationKind.Class, C, true)
-                listener: beginMethod(null, null, null, null, set, with)
+                listener: beginMethod(DeclarationKind.Class, null, null, null, null, set, with)
                 listener: handleVoidKeyword(void)
                 ensureIdentifierPotentiallyRecovered(set, methodDeclaration, true)
                   reportRecoverableErrorWithToken(with, Instance of 'Template<(Token) => Message>')
@@ -187,7 +187,7 @@
                 listener: endClassMethod(set, void, (, null, })
               listener: endMember()
             notEofOrValue(}, })
-            listener: endClassOrMixinBody(DeclarationKind.Class, 4, {, })
+            listener: endClassOrMixinOrExtensionBody(DeclarationKind.Class, 4, {, })
           listener: endClassDeclaration(class, })
   listener: endTopLevelDeclaration(int)
   parseTopLevelDeclarationImpl(}, Instance of 'DirectiveContext')
@@ -239,7 +239,7 @@
       isReservedKeyword(with)
       indicatesMethodOrField(=)
       parseFields(;, null, null, null, null, null, null, ;, Instance of 'SimpleType', with, DeclarationKind.TopLevel, null, true)
-        listener: beginFields(;)
+        listener: beginFields(DeclarationKind.TopLevel, null, null, null, null, null, null, ;)
         listener: handleIdentifier(int, typeReference)
         listener: handleNoTypeArguments(with)
         listener: handleType(int, null)
diff --git a/pkg/front_end/parser_testcases/error_recovery/method_called_with_prime.dart.expect b/pkg/front_end/parser_testcases/error_recovery/method_called_with_prime.dart.expect
index 305c185..db4e1b4 100644
--- a/pkg/front_end/parser_testcases/error_recovery/method_called_with_prime.dart.expect
+++ b/pkg/front_end/parser_testcases/error_recovery/method_called_with_prime.dart.expect
@@ -1,7 +1,7 @@
 beginCompilationUnit(class)
   beginMetadataStar(class)
   endMetadataStar(0)
-  beginClassOrNamedMixinApplicationPrelude(class)
+  beginClassOrMixinOrNamedMixinApplicationPrelude(class)
     handleIdentifier(C, classOrMixinDeclaration)
     handleNoTypeVariables({)
     beginClassDeclaration(class, null, C)
@@ -10,11 +10,11 @@
       handleClassNoWithClause()
       handleClassOrMixinImplements(null, 0)
       handleClassHeader(class, class, null)
-      beginClassOrMixinBody(DeclarationKind.Class, {)
+      beginClassOrMixinOrExtensionBody(DeclarationKind.Class, {)
         beginMetadataStar(int)
         endMetadataStar(0)
         beginMember()
-          beginMethod(null, null, null, null, null, With)
+          beginMethod(DeclarationKind.Class, null, null, null, null, null, With)
             handleIdentifier(int, typeReference)
             handleNoTypeArguments(With)
             handleType(int, null)
@@ -31,7 +31,7 @@
         beginMetadataStar(int)
         endMetadataStar(0)
         beginMember()
-          beginFields(;)
+          beginFields(DeclarationKind.Class, null, null, null, null, null, null, ;)
             handleIdentifier(int, typeReference)
             handleNoTypeArguments(With)
             handleType(int, null)
@@ -44,7 +44,7 @@
         beginMetadataStar(int)
         endMetadataStar(0)
         beginMember()
-          beginMethod(null, null, null, null, get, With)
+          beginMethod(DeclarationKind.Class, null, null, null, null, get, With)
             handleIdentifier(int, typeReference)
             handleNoTypeArguments(get)
             handleType(int, null)
@@ -60,7 +60,7 @@
         beginMetadataStar(void)
         endMetadataStar(0)
         beginMember()
-          beginMethod(null, null, null, null, set, With)
+          beginMethod(DeclarationKind.Class, null, null, null, null, set, With)
             handleVoidKeyword(void)
             handleIdentifier(With, methodDeclaration)
             handleNoTypeVariables(()
@@ -81,7 +81,7 @@
             endBlockFunctionBody(0, {, })
           endClassMethod(set, void, (, null, })
         endMember()
-      endClassOrMixinBody(DeclarationKind.Class, 4, {, })
+      endClassOrMixinOrExtensionBody(DeclarationKind.Class, 4, {, })
     endClassDeclaration(class, })
   endTopLevelDeclaration(int)
   beginMetadataStar(int)
@@ -103,7 +103,7 @@
   beginMetadataStar(int)
   endMetadataStar(0)
   beginTopLevelMember(int)
-    beginFields(;)
+    beginFields(DeclarationKind.TopLevel, null, null, null, null, null, null, ;)
       handleIdentifier(int, typeReference)
       handleNoTypeArguments(With)
       handleType(int, null)
diff --git a/pkg/front_end/parser_testcases/error_recovery/method_called_with_prime.dart.intertwined.expect b/pkg/front_end/parser_testcases/error_recovery/method_called_with_prime.dart.intertwined.expect
index d3b26af..e702d5a 100644
--- a/pkg/front_end/parser_testcases/error_recovery/method_called_with_prime.dart.intertwined.expect
+++ b/pkg/front_end/parser_testcases/error_recovery/method_called_with_prime.dart.intertwined.expect
@@ -9,7 +9,7 @@
     parseTopLevelKeywordDeclaration(, class, Instance of 'DirectiveContext')
       parseClassDeclarationModifiers(, class)
       parseClassOrNamedMixinApplication(null, class)
-        listener: beginClassOrNamedMixinApplicationPrelude(class)
+        listener: beginClassOrMixinOrNamedMixinApplicationPrelude(class)
         ensureIdentifier(class, classOrMixinDeclaration)
           listener: handleIdentifier(C, classOrMixinDeclaration)
         listener: handleNoTypeVariables({)
@@ -25,7 +25,7 @@
               listener: handleClassOrMixinImplements(null, 0)
             listener: handleClassHeader(class, class, null)
           parseClassOrMixinOrExtensionBody(C, DeclarationKind.Class, C)
-            listener: beginClassOrMixinBody(DeclarationKind.Class, {)
+            listener: beginClassOrMixinOrExtensionBody(DeclarationKind.Class, {)
             notEofOrValue(}, int)
             parseClassOrMixinOrExtensionMemberImpl({, DeclarationKind.Class, C)
               parseMetadataStar({)
@@ -33,7 +33,7 @@
                 listener: endMetadataStar(0)
               listener: beginMember()
               parseMethod({, null, null, null, null, null, null, {, Instance of 'SimpleType', null, With, DeclarationKind.Class, C, false)
-                listener: beginMethod(null, null, null, null, null, With)
+                listener: beginMethod(DeclarationKind.Class, null, null, null, null, null, With)
                 listener: handleIdentifier(int, typeReference)
                 listener: handleNoTypeArguments(With)
                 listener: handleType(int, null)
@@ -73,7 +73,7 @@
                 listener: endMetadataStar(0)
               listener: beginMember()
               parseFields(;, null, null, null, null, null, null, ;, Instance of 'SimpleType', With, DeclarationKind.Class, C, false)
-                listener: beginFields(;)
+                listener: beginFields(DeclarationKind.Class, null, null, null, null, null, null, ;)
                 listener: handleIdentifier(int, typeReference)
                 listener: handleNoTypeArguments(With)
                 listener: handleType(int, null)
@@ -97,7 +97,7 @@
                 listener: endMetadataStar(0)
               listener: beginMember()
               parseMethod(;, null, null, null, null, null, null, ;, Instance of 'SimpleType', get, With, DeclarationKind.Class, C, false)
-                listener: beginMethod(null, null, null, null, get, With)
+                listener: beginMethod(DeclarationKind.Class, null, null, null, null, get, With)
                 listener: handleIdentifier(int, typeReference)
                 listener: handleNoTypeArguments(get)
                 listener: handleType(int, null)
@@ -134,7 +134,7 @@
                 listener: endMetadataStar(0)
               listener: beginMember()
               parseMethod(;, null, null, null, null, null, null, ;, Instance of 'VoidType', set, With, DeclarationKind.Class, C, false)
-                listener: beginMethod(null, null, null, null, set, With)
+                listener: beginMethod(DeclarationKind.Class, null, null, null, null, set, With)
                 listener: handleVoidKeyword(void)
                 ensureIdentifierPotentiallyRecovered(set, methodDeclaration, false)
                   listener: handleIdentifier(With, methodDeclaration)
@@ -171,7 +171,7 @@
                 listener: endClassMethod(set, void, (, null, })
               listener: endMember()
             notEofOrValue(}, })
-            listener: endClassOrMixinBody(DeclarationKind.Class, 4, {, })
+            listener: endClassOrMixinOrExtensionBody(DeclarationKind.Class, 4, {, })
           listener: endClassDeclaration(class, })
   listener: endTopLevelDeclaration(int)
   parseTopLevelDeclarationImpl(}, Instance of 'DirectiveContext')
@@ -217,7 +217,7 @@
     parseTopLevelMemberImpl(;)
       listener: beginTopLevelMember(int)
       parseFields(;, null, null, null, null, null, null, ;, Instance of 'SimpleType', With, DeclarationKind.TopLevel, null, false)
-        listener: beginFields(;)
+        listener: beginFields(DeclarationKind.TopLevel, null, null, null, null, null, null, ;)
         listener: handleIdentifier(int, typeReference)
         listener: handleNoTypeArguments(With)
         listener: handleType(int, null)
diff --git a/pkg/front_end/parser_testcases/error_recovery/method_called_with_prime2.dart.expect b/pkg/front_end/parser_testcases/error_recovery/method_called_with_prime2.dart.expect
index 83a76f8..b16f9b0 100644
--- a/pkg/front_end/parser_testcases/error_recovery/method_called_with_prime2.dart.expect
+++ b/pkg/front_end/parser_testcases/error_recovery/method_called_with_prime2.dart.expect
@@ -23,7 +23,7 @@
 beginCompilationUnit(class)
   beginMetadataStar(class)
   endMetadataStar(0)
-  beginClassOrNamedMixinApplicationPrelude(class)
+  beginClassOrMixinOrNamedMixinApplicationPrelude(class)
     handleIdentifier(B, classOrMixinDeclaration)
     handleNoTypeVariables({)
     beginClassDeclaration(class, null, B)
@@ -32,14 +32,14 @@
       handleClassNoWithClause()
       handleClassOrMixinImplements(null, 0)
       handleClassHeader(class, class, null)
-      beginClassOrMixinBody(DeclarationKind.Class, {)
-      endClassOrMixinBody(DeclarationKind.Class, 0, {, })
+      beginClassOrMixinOrExtensionBody(DeclarationKind.Class, {)
+      endClassOrMixinOrExtensionBody(DeclarationKind.Class, 0, {, })
     endClassDeclaration(class, })
   endTopLevelDeclaration(foo)
   beginMetadataStar(foo)
   endMetadataStar(0)
   beginTopLevelMember(foo)
-    beginFields(})
+    beginFields(DeclarationKind.TopLevel, null, null, null, null, null, null, })
       handleRecoverableError(MissingConstFinalVarOrType, foo, foo)
       handleNoType(})
       handleIdentifier(foo, topLevelVariableDeclaration)
@@ -49,7 +49,7 @@
   endTopLevelDeclaration(class)
   beginMetadataStar(class)
   endMetadataStar(0)
-  beginClassOrNamedMixinApplicationPrelude(class)
+  beginClassOrMixinOrNamedMixinApplicationPrelude(class)
     handleIdentifier(M1, classOrMixinDeclaration)
     handleNoTypeVariables({)
     beginClassDeclaration(class, null, M1)
@@ -58,11 +58,11 @@
       handleClassNoWithClause()
       handleClassOrMixinImplements(null, 0)
       handleClassHeader(class, class, null)
-      beginClassOrMixinBody(DeclarationKind.Class, {)
+      beginClassOrMixinOrExtensionBody(DeclarationKind.Class, {)
         beginMetadataStar(foo)
         endMetadataStar(0)
         beginMember()
-          beginFields({)
+          beginFields(DeclarationKind.Class, null, null, null, null, null, null, {)
             handleRecoverableError(MissingConstFinalVarOrType, foo, foo)
             handleNoType({)
             handleIdentifier(foo, fieldDeclaration)
@@ -76,7 +76,7 @@
           handleRecoverableError(ClassInClass, class, class)
           handleInvalidMember(class)
         endMember()
-      endClassOrMixinBody(DeclarationKind.Class, 2, {, })
+      endClassOrMixinOrExtensionBody(DeclarationKind.Class, 2, {, })
     endClassDeclaration(class, })
   endTopLevelDeclaration()
 endCompilationUnit(3, )
diff --git a/pkg/front_end/parser_testcases/error_recovery/method_called_with_prime2.dart.intertwined.expect b/pkg/front_end/parser_testcases/error_recovery/method_called_with_prime2.dart.intertwined.expect
index 1696c43..56c4e3a 100644
--- a/pkg/front_end/parser_testcases/error_recovery/method_called_with_prime2.dart.intertwined.expect
+++ b/pkg/front_end/parser_testcases/error_recovery/method_called_with_prime2.dart.intertwined.expect
@@ -9,7 +9,7 @@
     parseTopLevelKeywordDeclaration(, class, Instance of 'DirectiveContext')
       parseClassDeclarationModifiers(, class)
       parseClassOrNamedMixinApplication(null, class)
-        listener: beginClassOrNamedMixinApplicationPrelude(class)
+        listener: beginClassOrMixinOrNamedMixinApplicationPrelude(class)
         ensureIdentifier(class, classOrMixinDeclaration)
           listener: handleIdentifier(B, classOrMixinDeclaration)
         listener: handleNoTypeVariables({)
@@ -25,9 +25,9 @@
               listener: handleClassOrMixinImplements(null, 0)
             listener: handleClassHeader(class, class, null)
           parseClassOrMixinOrExtensionBody(B, DeclarationKind.Class, B)
-            listener: beginClassOrMixinBody(DeclarationKind.Class, {)
+            listener: beginClassOrMixinOrExtensionBody(DeclarationKind.Class, {)
             notEofOrValue(}, })
-            listener: endClassOrMixinBody(DeclarationKind.Class, 0, {, })
+            listener: endClassOrMixinOrExtensionBody(DeclarationKind.Class, 0, {, })
           listener: endClassDeclaration(class, })
   listener: endTopLevelDeclaration(foo)
   parseTopLevelDeclarationImpl(}, Instance of 'DirectiveContext')
@@ -39,7 +39,7 @@
       isReservedKeyword(class)
       indicatesMethodOrField(M1)
       parseFields(}, null, null, null, null, null, null, }, Instance of 'NoType', foo, DeclarationKind.TopLevel, null, false)
-        listener: beginFields(})
+        listener: beginFields(DeclarationKind.TopLevel, null, null, null, null, null, null, })
         reportRecoverableError(foo, MissingConstFinalVarOrType)
           listener: handleRecoverableError(MissingConstFinalVarOrType, foo, foo)
         listener: handleNoType(})
@@ -60,7 +60,7 @@
     parseTopLevelKeywordDeclaration(;, class, Instance of 'DirectiveContext')
       parseClassDeclarationModifiers(;, class)
       parseClassOrNamedMixinApplication(null, class)
-        listener: beginClassOrNamedMixinApplicationPrelude(class)
+        listener: beginClassOrMixinOrNamedMixinApplicationPrelude(class)
         ensureIdentifier(class, classOrMixinDeclaration)
           listener: handleIdentifier(M1, classOrMixinDeclaration)
         listener: handleNoTypeVariables({)
@@ -76,7 +76,7 @@
               listener: handleClassOrMixinImplements(null, 0)
             listener: handleClassHeader(class, class, null)
           parseClassOrMixinOrExtensionBody(M1, DeclarationKind.Class, M1)
-            listener: beginClassOrMixinBody(DeclarationKind.Class, {)
+            listener: beginClassOrMixinOrExtensionBody(DeclarationKind.Class, {)
             notEofOrValue(}, foo)
             parseClassOrMixinOrExtensionMemberImpl({, DeclarationKind.Class, M1)
               parseMetadataStar({)
@@ -86,7 +86,7 @@
               isReservedKeyword(class)
               indicatesMethodOrField(M2)
               parseFields({, null, null, null, null, null, null, {, Instance of 'NoType', foo, DeclarationKind.Class, M1, false)
-                listener: beginFields({)
+                listener: beginFields(DeclarationKind.Class, null, null, null, null, null, null, {)
                 reportRecoverableError(foo, MissingConstFinalVarOrType)
                   listener: handleRecoverableError(MissingConstFinalVarOrType, foo, foo)
                 listener: handleNoType({)
@@ -113,7 +113,7 @@
                   listener: handleInvalidMember(class)
                   listener: endMember()
             notEofOrValue(}, })
-            listener: endClassOrMixinBody(DeclarationKind.Class, 2, {, })
+            listener: endClassOrMixinOrExtensionBody(DeclarationKind.Class, 2, {, })
           listener: endClassDeclaration(class, })
   listener: endTopLevelDeclaration()
   reportAllErrorTokens(class)
diff --git a/pkg/front_end/parser_testcases/error_recovery/utf_16_le_content.crash_dart.expect b/pkg/front_end/parser_testcases/error_recovery/utf_16_le_content.crash_dart.expect
index 4e6493f..3f3e286 100644
--- a/pkg/front_end/parser_testcases/error_recovery/utf_16_le_content.crash_dart.expect
+++ b/pkg/front_end/parser_testcases/error_recovery/utf_16_le_content.crash_dart.expect
Binary files differ
diff --git a/pkg/front_end/parser_testcases/error_recovery/utf_16_le_content.crash_dart.intertwined.expect b/pkg/front_end/parser_testcases/error_recovery/utf_16_le_content.crash_dart.intertwined.expect
index 00a2c8c..c6b78bca 100644
--- a/pkg/front_end/parser_testcases/error_recovery/utf_16_le_content.crash_dart.intertwined.expect
+++ b/pkg/front_end/parser_testcases/error_recovery/utf_16_le_content.crash_dart.intertwined.expect
@@ -29,7 +29,7 @@
     parseTopLevelMemberImpl(/)
       listener: beginTopLevelMember(C)
       parseFields(/, null, null, null, null, null, null, /, Instance of 'SimpleType', o, DeclarationKind.TopLevel, null, false)
-        listener: beginFields(/)
+        listener: beginFields(DeclarationKind.TopLevel, null, null, null, null, null, null, /)
         listener: handleIdentifier(C, typeReference)
         listener: handleNoTypeArguments(o)
         listener: handleType(C, null)
@@ -50,7 +50,7 @@
     parseTopLevelMemberImpl(;)
       listener: beginTopLevelMember(p)
       parseFields(;, null, null, null, null, null, null, ;, Instance of 'SimpleType', y, DeclarationKind.TopLevel, null, false)
-        listener: beginFields(;)
+        listener: beginFields(DeclarationKind.TopLevel, null, null, null, null, null, null, ;)
         listener: handleIdentifier(p, typeReference)
         listener: handleNoTypeArguments(y)
         listener: handleType(p, null)
@@ -71,7 +71,7 @@
     parseTopLevelMemberImpl(;)
       listener: beginTopLevelMember(r)
       parseFields(;, null, null, null, null, null, null, ;, Instance of 'SimpleType', i, DeclarationKind.TopLevel, null, false)
-        listener: beginFields(;)
+        listener: beginFields(DeclarationKind.TopLevel, null, null, null, null, null, null, ;)
         listener: handleIdentifier(r, typeReference)
         listener: handleNoTypeArguments(i)
         listener: handleType(r, null)
@@ -92,7 +92,7 @@
     parseTopLevelMemberImpl(;)
       listener: beginTopLevelMember(g)
       parseFields(;, null, null, null, null, null, null, ;, Instance of 'SimpleType', h, DeclarationKind.TopLevel, null, false)
-        listener: beginFields(;)
+        listener: beginFields(DeclarationKind.TopLevel, null, null, null, null, null, null, ;)
         listener: handleIdentifier(g, typeReference)
         listener: handleNoTypeArguments(h)
         listener: handleType(g, null)
@@ -205,7 +205,7 @@
     parseTopLevelMemberImpl(,)
       listener: beginTopLevelMember(t)
       parseFields(,, null, null, null, null, null, null, ,, Instance of 'SimpleType', h, DeclarationKind.TopLevel, null, false)
-        listener: beginFields(,)
+        listener: beginFields(DeclarationKind.TopLevel, null, null, null, null, null, null, ,)
         listener: handleIdentifier(t, typeReference)
         listener: handleNoTypeArguments(h)
         listener: handleType(t, null)
@@ -226,7 +226,7 @@
     parseTopLevelMemberImpl(;)
       listener: beginTopLevelMember(e)
       parseFields(;, null, null, null, null, null, null, ;, Instance of 'SimpleType', D, DeclarationKind.TopLevel, null, false)
-        listener: beginFields(;)
+        listener: beginFields(DeclarationKind.TopLevel, null, null, null, null, null, null, ;)
         listener: handleIdentifier(e, typeReference)
         listener: handleNoTypeArguments(D)
         listener: handleType(e, null)
@@ -247,7 +247,7 @@
     parseTopLevelMemberImpl(;)
       listener: beginTopLevelMember(a)
       parseFields(;, null, null, null, null, null, null, ;, Instance of 'SimpleType', r, DeclarationKind.TopLevel, null, false)
-        listener: beginFields(;)
+        listener: beginFields(DeclarationKind.TopLevel, null, null, null, null, null, null, ;)
         listener: handleIdentifier(a, typeReference)
         listener: handleNoTypeArguments(r)
         listener: handleType(a, null)
@@ -268,7 +268,7 @@
     parseTopLevelMemberImpl(;)
       listener: beginTopLevelMember(t)
       parseFields(;, null, null, null, null, null, null, ;, Instance of 'SimpleType', p, DeclarationKind.TopLevel, null, false)
-        listener: beginFields(;)
+        listener: beginFields(DeclarationKind.TopLevel, null, null, null, null, null, null, ;)
         listener: handleIdentifier(t, typeReference)
         listener: handleNoTypeArguments(p)
         listener: handleType(t, null)
@@ -289,7 +289,7 @@
     parseTopLevelMemberImpl(;)
       listener: beginTopLevelMember(r)
       parseFields(;, null, null, null, null, null, null, ;, Instance of 'SimpleType', o, DeclarationKind.TopLevel, null, false)
-        listener: beginFields(;)
+        listener: beginFields(DeclarationKind.TopLevel, null, null, null, null, null, null, ;)
         listener: handleIdentifier(r, typeReference)
         listener: handleNoTypeArguments(o)
         listener: handleType(r, null)
@@ -310,7 +310,7 @@
     parseTopLevelMemberImpl(;)
       listener: beginTopLevelMember(j)
       parseFields(;, null, null, null, null, null, null, ;, Instance of 'SimpleType', e, DeclarationKind.TopLevel, null, false)
-        listener: beginFields(;)
+        listener: beginFields(DeclarationKind.TopLevel, null, null, null, null, null, null, ;)
         listener: handleIdentifier(j, typeReference)
         listener: handleNoTypeArguments(e)
         listener: handleType(j, null)
@@ -331,7 +331,7 @@
     parseTopLevelMemberImpl(;)
       listener: beginTopLevelMember(c)
       parseFields(;, null, null, null, null, null, null, ;, Instance of 'SimpleType', t, DeclarationKind.TopLevel, null, false)
-        listener: beginFields(;)
+        listener: beginFields(DeclarationKind.TopLevel, null, null, null, null, null, null, ;)
         listener: handleIdentifier(c, typeReference)
         listener: handleNoTypeArguments(t)
         listener: handleType(c, null)
@@ -352,7 +352,7 @@
     parseTopLevelMemberImpl(;)
       listener: beginTopLevelMember(a)
       parseFields(;, null, null, null, null, null, null, ;, Instance of 'SimpleType', u, DeclarationKind.TopLevel, null, false)
-        listener: beginFields(;)
+        listener: beginFields(DeclarationKind.TopLevel, null, null, null, null, null, null, ;)
         listener: handleIdentifier(a, typeReference)
         listener: handleNoTypeArguments(u)
         listener: handleType(a, null)
@@ -373,7 +373,7 @@
     parseTopLevelMemberImpl(;)
       listener: beginTopLevelMember(t)
       parseFields(;, null, null, null, null, null, null, ;, Instance of 'SimpleType', h, DeclarationKind.TopLevel, null, false)
-        listener: beginFields(;)
+        listener: beginFields(DeclarationKind.TopLevel, null, null, null, null, null, null, ;)
         listener: handleIdentifier(t, typeReference)
         listener: handleNoTypeArguments(h)
         listener: handleType(t, null)
@@ -394,7 +394,7 @@
     parseTopLevelMemberImpl(;)
       listener: beginTopLevelMember(o)
       parseFields(;, null, null, null, null, null, null, ;, Instance of 'SimpleType', r, DeclarationKind.TopLevel, null, false)
-        listener: beginFields(;)
+        listener: beginFields(DeclarationKind.TopLevel, null, null, null, null, null, null, ;)
         listener: handleIdentifier(o, typeReference)
         listener: handleNoTypeArguments(r)
         listener: handleType(o, null)
@@ -415,7 +415,7 @@
     parseTopLevelMemberImpl(;)
       listener: beginTopLevelMember(s)
       parseFields(;, null, null, null, null, null, null, ;, Instance of 'PrefixedType', l, DeclarationKind.TopLevel, null, false)
-        listener: beginFields(;)
+        listener: beginFields(DeclarationKind.TopLevel, null, null, null, null, null, null, ;)
         listener: handleIdentifier(s, prefixedTypeReference)
         listener: handleIdentifier(P, typeReferenceContinuation)
         listener: handleQualified(.)
@@ -438,7 +438,7 @@
     parseTopLevelMemberImpl(;)
       listener: beginTopLevelMember(e)
       parseFields(;, null, null, null, null, null, null, ;, Instance of 'SimpleType', a, DeclarationKind.TopLevel, null, false)
-        listener: beginFields(;)
+        listener: beginFields(DeclarationKind.TopLevel, null, null, null, null, null, null, ;)
         listener: handleIdentifier(e, typeReference)
         listener: handleNoTypeArguments(a)
         listener: handleType(e, null)
@@ -459,7 +459,7 @@
     parseTopLevelMemberImpl(;)
       listener: beginTopLevelMember(s)
       parseFields(;, null, null, null, null, null, null, ;, Instance of 'SimpleType', e, DeclarationKind.TopLevel, null, false)
-        listener: beginFields(;)
+        listener: beginFields(DeclarationKind.TopLevel, null, null, null, null, null, null, ;)
         listener: handleIdentifier(s, typeReference)
         listener: handleNoTypeArguments(e)
         listener: handleType(s, null)
@@ -480,7 +480,7 @@
     parseTopLevelMemberImpl(;)
       listener: beginTopLevelMember(s)
       parseFields(;, null, null, null, null, null, null, ;, Instance of 'SimpleType', e, DeclarationKind.TopLevel, null, false)
-        listener: beginFields(;)
+        listener: beginFields(DeclarationKind.TopLevel, null, null, null, null, null, null, ;)
         listener: handleIdentifier(s, typeReference)
         listener: handleNoTypeArguments(e)
         listener: handleType(s, null)
@@ -501,7 +501,7 @@
     parseTopLevelMemberImpl(;)
       listener: beginTopLevelMember(e)
       parseFields(;, null, null, null, null, null, null, ;, Instance of 'SimpleType', t, DeclarationKind.TopLevel, null, false)
-        listener: beginFields(;)
+        listener: beginFields(DeclarationKind.TopLevel, null, null, null, null, null, null, ;)
         listener: handleIdentifier(e, typeReference)
         listener: handleNoTypeArguments(t)
         listener: handleType(e, null)
@@ -522,7 +522,7 @@
     parseTopLevelMemberImpl(;)
       listener: beginTopLevelMember(h)
       parseFields(;, null, null, null, null, null, null, ;, Instance of 'SimpleType', e, DeclarationKind.TopLevel, null, false)
-        listener: beginFields(;)
+        listener: beginFields(DeclarationKind.TopLevel, null, null, null, null, null, null, ;)
         listener: handleIdentifier(h, typeReference)
         listener: handleNoTypeArguments(e)
         listener: handleType(h, null)
@@ -543,7 +543,7 @@
     parseTopLevelMemberImpl(;)
       listener: beginTopLevelMember(A)
       parseFields(;, null, null, null, null, null, null, ;, Instance of 'SimpleType', U, DeclarationKind.TopLevel, null, false)
-        listener: beginFields(;)
+        listener: beginFields(DeclarationKind.TopLevel, null, null, null, null, null, null, ;)
         listener: handleIdentifier(A, typeReference)
         listener: handleNoTypeArguments(U)
         listener: handleType(A, null)
@@ -564,7 +564,7 @@
     parseTopLevelMemberImpl(;)
       listener: beginTopLevelMember(T)
       parseFields(;, null, null, null, null, null, null, ;, Instance of 'SimpleType', H, DeclarationKind.TopLevel, null, false)
-        listener: beginFields(;)
+        listener: beginFields(DeclarationKind.TopLevel, null, null, null, null, null, null, ;)
         listener: handleIdentifier(T, typeReference)
         listener: handleNoTypeArguments(H)
         listener: handleType(T, null)
@@ -585,7 +585,7 @@
     parseTopLevelMemberImpl(;)
       listener: beginTopLevelMember(O)
       parseFields(;, null, null, null, null, null, null, ;, Instance of 'SimpleType', R, DeclarationKind.TopLevel, null, false)
-        listener: beginFields(;)
+        listener: beginFields(DeclarationKind.TopLevel, null, null, null, null, null, null, ;)
         listener: handleIdentifier(O, typeReference)
         listener: handleNoTypeArguments(R)
         listener: handleType(O, null)
@@ -606,7 +606,7 @@
     parseTopLevelMemberImpl(;)
       listener: beginTopLevelMember(S)
       parseFields(;, null, null, null, null, null, null, ;, Instance of 'SimpleType', f, DeclarationKind.TopLevel, null, false)
-        listener: beginFields(;)
+        listener: beginFields(DeclarationKind.TopLevel, null, null, null, null, null, null, ;)
         listener: handleIdentifier(S, typeReference)
         listener: handleNoTypeArguments(f)
         listener: handleType(S, null)
@@ -627,7 +627,7 @@
     parseTopLevelMemberImpl(;)
       listener: beginTopLevelMember(i)
       parseFields(;, null, null, null, null, null, null, ;, Instance of 'SimpleType', l, DeclarationKind.TopLevel, null, false)
-        listener: beginFields(;)
+        listener: beginFields(DeclarationKind.TopLevel, null, null, null, null, null, null, ;)
         listener: handleIdentifier(i, typeReference)
         listener: handleNoTypeArguments(l)
         listener: handleType(i, null)
@@ -649,7 +649,7 @@
       listener: beginTopLevelMember(e)
       isReservedKeyword(/)
       parseFields(;, null, null, null, null, null, null, ;, Instance of 'NoType', e, DeclarationKind.TopLevel, null, false)
-        listener: beginFields(;)
+        listener: beginFields(DeclarationKind.TopLevel, null, null, null, null, null, null, ;)
         reportRecoverableError(e, MissingConstFinalVarOrType)
           listener: handleRecoverableError(MissingConstFinalVarOrType, e, e)
         listener: handleNoType(;)
@@ -690,7 +690,7 @@
     parseTopLevelMemberImpl(/)
       listener: beginTopLevelMember(f)
       parseFields(/, null, null, null, null, null, null, /, Instance of 'SimpleType', o, DeclarationKind.TopLevel, null, false)
-        listener: beginFields(/)
+        listener: beginFields(DeclarationKind.TopLevel, null, null, null, null, null, null, /)
         listener: handleIdentifier(f, typeReference)
         listener: handleNoTypeArguments(o)
         listener: handleType(f, null)
@@ -711,7 +711,7 @@
     parseTopLevelMemberImpl(;)
       listener: beginTopLevelMember(r)
       parseFields(;, null, null, null, null, null, null, ;, Instance of 'SimpleType', d, DeclarationKind.TopLevel, null, false)
-        listener: beginFields(;)
+        listener: beginFields(DeclarationKind.TopLevel, null, null, null, null, null, null, ;)
         listener: handleIdentifier(r, typeReference)
         listener: handleNoTypeArguments(d)
         listener: handleType(r, null)
@@ -732,7 +732,7 @@
     parseTopLevelMemberImpl(;)
       listener: beginTopLevelMember(e)
       parseFields(;, null, null, null, null, null, null, ;, Instance of 'SimpleType', t, DeclarationKind.TopLevel, null, false)
-        listener: beginFields(;)
+        listener: beginFields(DeclarationKind.TopLevel, null, null, null, null, null, null, ;)
         listener: handleIdentifier(e, typeReference)
         listener: handleNoTypeArguments(t)
         listener: handleType(e, null)
@@ -753,7 +753,7 @@
     parseTopLevelMemberImpl(;)
       listener: beginTopLevelMember(a)
       parseFields(;, null, null, null, null, null, null, ;, Instance of 'SimpleType', i, DeclarationKind.TopLevel, null, false)
-        listener: beginFields(;)
+        listener: beginFields(DeclarationKind.TopLevel, null, null, null, null, null, null, ;)
         listener: handleIdentifier(a, typeReference)
         listener: handleNoTypeArguments(i)
         listener: handleType(a, null)
@@ -820,7 +820,7 @@
     parseTopLevelMemberImpl(.)
       listener: beginTopLevelMember(A)
       parseFields(., null, null, null, null, null, null, ., Instance of 'SimpleType', l, DeclarationKind.TopLevel, null, false)
-        listener: beginFields(.)
+        listener: beginFields(DeclarationKind.TopLevel, null, null, null, null, null, null, .)
         listener: handleIdentifier(A, typeReference)
         listener: handleNoTypeArguments(l)
         listener: handleType(A, null)
@@ -841,7 +841,7 @@
     parseTopLevelMemberImpl(;)
       listener: beginTopLevelMember(l)
       parseFields(;, null, null, null, null, null, null, ;, Instance of 'SimpleType', r, DeclarationKind.TopLevel, null, false)
-        listener: beginFields(;)
+        listener: beginFields(DeclarationKind.TopLevel, null, null, null, null, null, null, ;)
         listener: handleIdentifier(l, typeReference)
         listener: handleNoTypeArguments(r)
         listener: handleType(l, null)
@@ -862,7 +862,7 @@
     parseTopLevelMemberImpl(;)
       listener: beginTopLevelMember(i)
       parseFields(;, null, null, null, null, null, null, ;, Instance of 'SimpleType', g, DeclarationKind.TopLevel, null, false)
-        listener: beginFields(;)
+        listener: beginFields(DeclarationKind.TopLevel, null, null, null, null, null, null, ;)
         listener: handleIdentifier(i, typeReference)
         listener: handleNoTypeArguments(g)
         listener: handleType(i, null)
@@ -883,7 +883,7 @@
     parseTopLevelMemberImpl(;)
       listener: beginTopLevelMember(h)
       parseFields(;, null, null, null, null, null, null, ;, Instance of 'SimpleType', t, DeclarationKind.TopLevel, null, false)
-        listener: beginFields(;)
+        listener: beginFields(DeclarationKind.TopLevel, null, null, null, null, null, null, ;)
         listener: handleIdentifier(h, typeReference)
         listener: handleNoTypeArguments(t)
         listener: handleType(h, null)
@@ -904,7 +904,7 @@
     parseTopLevelMemberImpl(;)
       listener: beginTopLevelMember(s)
       parseFields(;, null, null, null, null, null, null, ;, Instance of 'SimpleType', r, DeclarationKind.TopLevel, null, false)
-        listener: beginFields(;)
+        listener: beginFields(DeclarationKind.TopLevel, null, null, null, null, null, null, ;)
         listener: handleIdentifier(s, typeReference)
         listener: handleNoTypeArguments(r)
         listener: handleType(s, null)
@@ -925,7 +925,7 @@
     parseTopLevelMemberImpl(;)
       listener: beginTopLevelMember(e)
       parseFields(;, null, null, null, null, null, null, ;, Instance of 'SimpleType', s, DeclarationKind.TopLevel, null, false)
-        listener: beginFields(;)
+        listener: beginFields(DeclarationKind.TopLevel, null, null, null, null, null, null, ;)
         listener: handleIdentifier(e, typeReference)
         listener: handleNoTypeArguments(s)
         listener: handleType(e, null)
@@ -946,7 +946,7 @@
     parseTopLevelMemberImpl(;)
       listener: beginTopLevelMember(e)
       parseFields(;, null, null, null, null, null, null, ;, Instance of 'SimpleType', r, DeclarationKind.TopLevel, null, false)
-        listener: beginFields(;)
+        listener: beginFields(DeclarationKind.TopLevel, null, null, null, null, null, null, ;)
         listener: handleIdentifier(e, typeReference)
         listener: handleNoTypeArguments(r)
         listener: handleType(e, null)
@@ -967,7 +967,7 @@
     parseTopLevelMemberImpl(;)
       listener: beginTopLevelMember(v)
       parseFields(;, null, null, null, null, null, null, ;, Instance of 'SimpleType', e, DeclarationKind.TopLevel, null, false)
-        listener: beginFields(;)
+        listener: beginFields(DeclarationKind.TopLevel, null, null, null, null, null, null, ;)
         listener: handleIdentifier(v, typeReference)
         listener: handleNoTypeArguments(e)
         listener: handleType(v, null)
@@ -988,7 +988,7 @@
     parseTopLevelMemberImpl(;)
       listener: beginTopLevelMember(d)
       parseFields(;, null, null, null, null, null, null, ;, Instance of 'PrefixedType', s, DeclarationKind.TopLevel, null, false)
-        listener: beginFields(;)
+        listener: beginFields(DeclarationKind.TopLevel, null, null, null, null, null, null, ;)
         listener: handleIdentifier(d, prefixedTypeReference)
         listener: handleIdentifier(U, typeReferenceContinuation)
         listener: handleQualified(.)
@@ -1011,7 +1011,7 @@
     parseTopLevelMemberImpl(;)
       listener: beginTopLevelMember(e)
       parseFields(;, null, null, null, null, null, null, ;, Instance of 'SimpleType', o, DeclarationKind.TopLevel, null, false)
-        listener: beginFields(;)
+        listener: beginFields(DeclarationKind.TopLevel, null, null, null, null, null, null, ;)
         listener: handleIdentifier(e, typeReference)
         listener: handleNoTypeArguments(o)
         listener: handleType(e, null)
@@ -1032,7 +1032,7 @@
     parseTopLevelMemberImpl(;)
       listener: beginTopLevelMember(f)
       parseFields(;, null, null, null, null, null, null, ;, Instance of 'SimpleType', t, DeclarationKind.TopLevel, null, false)
-        listener: beginFields(;)
+        listener: beginFields(DeclarationKind.TopLevel, null, null, null, null, null, null, ;)
         listener: handleIdentifier(f, typeReference)
         listener: handleNoTypeArguments(t)
         listener: handleType(f, null)
@@ -1053,7 +1053,7 @@
     parseTopLevelMemberImpl(;)
       listener: beginTopLevelMember(h)
       parseFields(;, null, null, null, null, null, null, ;, Instance of 'SimpleType', i, DeclarationKind.TopLevel, null, false)
-        listener: beginFields(;)
+        listener: beginFields(DeclarationKind.TopLevel, null, null, null, null, null, null, ;)
         listener: handleIdentifier(h, typeReference)
         listener: handleNoTypeArguments(i)
         listener: handleType(h, null)
@@ -1074,7 +1074,7 @@
     parseTopLevelMemberImpl(;)
       listener: beginTopLevelMember(s)
       parseFields(;, null, null, null, null, null, null, ;, Instance of 'SimpleType', s, DeclarationKind.TopLevel, null, false)
-        listener: beginFields(;)
+        listener: beginFields(DeclarationKind.TopLevel, null, null, null, null, null, null, ;)
         listener: handleIdentifier(s, typeReference)
         listener: handleNoTypeArguments(s)
         listener: handleType(s, null)
@@ -1095,7 +1095,7 @@
     parseTopLevelMemberImpl(;)
       listener: beginTopLevelMember(o)
       parseFields(;, null, null, null, null, null, null, ;, Instance of 'SimpleType', u, DeclarationKind.TopLevel, null, false)
-        listener: beginFields(;)
+        listener: beginFields(DeclarationKind.TopLevel, null, null, null, null, null, null, ;)
         listener: handleIdentifier(o, typeReference)
         listener: handleNoTypeArguments(u)
         listener: handleType(o, null)
@@ -1116,7 +1116,7 @@
     parseTopLevelMemberImpl(;)
       listener: beginTopLevelMember(r)
       parseFields(;, null, null, null, null, null, null, ;, Instance of 'SimpleType', c, DeclarationKind.TopLevel, null, false)
-        listener: beginFields(;)
+        listener: beginFields(DeclarationKind.TopLevel, null, null, null, null, null, null, ;)
         listener: handleIdentifier(r, typeReference)
         listener: handleNoTypeArguments(c)
         listener: handleType(r, null)
@@ -1137,7 +1137,7 @@
     parseTopLevelMemberImpl(;)
       listener: beginTopLevelMember(e)
       parseFields(;, null, null, null, null, null, null, ;, Instance of 'SimpleType', c, DeclarationKind.TopLevel, null, false)
-        listener: beginFields(;)
+        listener: beginFields(DeclarationKind.TopLevel, null, null, null, null, null, null, ;)
         listener: handleIdentifier(e, typeReference)
         listener: handleNoTypeArguments(c)
         listener: handleType(e, null)
@@ -1158,7 +1158,7 @@
     parseTopLevelMemberImpl(;)
       listener: beginTopLevelMember(o)
       parseFields(;, null, null, null, null, null, null, ;, Instance of 'SimpleType', d, DeclarationKind.TopLevel, null, false)
-        listener: beginFields(;)
+        listener: beginFields(DeclarationKind.TopLevel, null, null, null, null, null, null, ;)
         listener: handleIdentifier(o, typeReference)
         listener: handleNoTypeArguments(d)
         listener: handleType(o, null)
@@ -1179,7 +1179,7 @@
     parseTopLevelMemberImpl(;)
       listener: beginTopLevelMember(e)
       parseFields(;, null, null, null, null, null, null, ;, Instance of 'SimpleType', i, DeclarationKind.TopLevel, null, false)
-        listener: beginFields(;)
+        listener: beginFields(DeclarationKind.TopLevel, null, null, null, null, null, null, ;)
         listener: handleIdentifier(e, typeReference)
         listener: handleNoTypeArguments(i)
         listener: handleType(e, null)
@@ -1200,7 +1200,7 @@
     parseTopLevelMemberImpl(;)
       listener: beginTopLevelMember(s)
       parseFields(;, null, null, null, null, null, null, ;, Instance of 'SimpleType', g, DeclarationKind.TopLevel, null, false)
-        listener: beginFields(;)
+        listener: beginFields(DeclarationKind.TopLevel, null, null, null, null, null, null, ;)
         listener: handleIdentifier(s, typeReference)
         listener: handleNoTypeArguments(g)
         listener: handleType(s, null)
@@ -1221,7 +1221,7 @@
     parseTopLevelMemberImpl(;)
       listener: beginTopLevelMember(o)
       parseFields(;, null, null, null, null, null, null, ;, Instance of 'SimpleType', v, DeclarationKind.TopLevel, null, false)
-        listener: beginFields(;)
+        listener: beginFields(DeclarationKind.TopLevel, null, null, null, null, null, null, ;)
         listener: handleIdentifier(o, typeReference)
         listener: handleNoTypeArguments(v)
         listener: handleType(o, null)
@@ -1242,7 +1242,7 @@
     parseTopLevelMemberImpl(;)
       listener: beginTopLevelMember(e)
       parseFields(;, null, null, null, null, null, null, ;, Instance of 'SimpleType', r, DeclarationKind.TopLevel, null, false)
-        listener: beginFields(;)
+        listener: beginFields(DeclarationKind.TopLevel, null, null, null, null, null, null, ;)
         listener: handleIdentifier(e, typeReference)
         listener: handleNoTypeArguments(r)
         listener: handleType(e, null)
@@ -1263,7 +1263,7 @@
     parseTopLevelMemberImpl(;)
       listener: beginTopLevelMember(n)
       parseFields(;, null, null, null, null, null, null, ;, Instance of 'SimpleType', e, DeclarationKind.TopLevel, null, false)
-        listener: beginFields(;)
+        listener: beginFields(DeclarationKind.TopLevel, null, null, null, null, null, null, ;)
         listener: handleIdentifier(n, typeReference)
         listener: handleNoTypeArguments(e)
         listener: handleType(n, null)
@@ -1284,7 +1284,7 @@
     parseTopLevelMemberImpl(;)
       listener: beginTopLevelMember(d)
       parseFields(;, null, null, null, null, null, null, ;, Instance of 'SimpleType', b, DeclarationKind.TopLevel, null, false)
-        listener: beginFields(;)
+        listener: beginFields(DeclarationKind.TopLevel, null, null, null, null, null, null, ;)
         listener: handleIdentifier(d, typeReference)
         listener: handleNoTypeArguments(b)
         listener: handleType(d, null)
@@ -1305,7 +1305,7 @@
     parseTopLevelMemberImpl(;)
       listener: beginTopLevelMember(y)
       parseFields(;, null, null, null, null, null, null, ;, Instance of 'SimpleType', a, DeclarationKind.TopLevel, null, false)
-        listener: beginFields(;)
+        listener: beginFields(DeclarationKind.TopLevel, null, null, null, null, null, null, ;)
         listener: handleIdentifier(y, typeReference)
         listener: handleNoTypeArguments(a)
         listener: handleType(y, null)
@@ -1346,7 +1346,7 @@
     parseTopLevelMemberImpl(/)
       listener: beginTopLevelMember(B)
       parseFields(/, null, null, null, null, null, null, /, Instance of 'SimpleType', S, DeclarationKind.TopLevel, null, false)
-        listener: beginFields(/)
+        listener: beginFields(DeclarationKind.TopLevel, null, null, null, null, null, null, /)
         listener: handleIdentifier(B, typeReference)
         listener: handleNoTypeArguments(S)
         listener: handleType(B, null)
@@ -1368,7 +1368,7 @@
       listener: beginTopLevelMember(D)
       isReservedKeyword(-)
       parseFields(;, null, null, null, null, null, null, ;, Instance of 'NoType', D, DeclarationKind.TopLevel, null, false)
-        listener: beginFields(;)
+        listener: beginFields(DeclarationKind.TopLevel, null, null, null, null, null, null, ;)
         reportRecoverableError(D, MissingConstFinalVarOrType)
           listener: handleRecoverableError(MissingConstFinalVarOrType, D, D)
         listener: handleNoType(;)
@@ -1399,7 +1399,7 @@
     parseTopLevelMemberImpl(-)
       listener: beginTopLevelMember(s)
       parseFields(-, null, null, null, null, null, null, -, Instance of 'SimpleType', t, DeclarationKind.TopLevel, null, false)
-        listener: beginFields(-)
+        listener: beginFields(DeclarationKind.TopLevel, null, null, null, null, null, null, -)
         listener: handleIdentifier(s, typeReference)
         listener: handleNoTypeArguments(t)
         listener: handleType(s, null)
@@ -1420,7 +1420,7 @@
     parseTopLevelMemberImpl(;)
       listener: beginTopLevelMember(y)
       parseFields(;, null, null, null, null, null, null, ;, Instance of 'SimpleType', l, DeclarationKind.TopLevel, null, false)
-        listener: beginFields(;)
+        listener: beginFields(DeclarationKind.TopLevel, null, null, null, null, null, null, ;)
         listener: handleIdentifier(y, typeReference)
         listener: handleNoTypeArguments(l)
         listener: handleType(y, null)
@@ -1441,7 +1441,7 @@
     parseTopLevelMemberImpl(;)
       listener: beginTopLevelMember(e)
       parseFields(;, null, null, null, null, null, null, ;, Instance of 'SimpleType', l, DeclarationKind.TopLevel, null, false)
-        listener: beginFields(;)
+        listener: beginFields(DeclarationKind.TopLevel, null, null, null, null, null, null, ;)
         listener: handleIdentifier(e, typeReference)
         listener: handleNoTypeArguments(l)
         listener: handleType(e, null)
@@ -1462,7 +1462,7 @@
     parseTopLevelMemberImpl(;)
       listener: beginTopLevelMember(i)
       parseFields(;, null, null, null, null, null, null, ;, Instance of 'SimpleType', c, DeclarationKind.TopLevel, null, false)
-        listener: beginFields(;)
+        listener: beginFields(DeclarationKind.TopLevel, null, null, null, null, null, null, ;)
         listener: handleIdentifier(i, typeReference)
         listener: handleNoTypeArguments(c)
         listener: handleType(i, null)
@@ -1483,7 +1483,7 @@
     parseTopLevelMemberImpl(;)
       listener: beginTopLevelMember(e)
       parseFields(;, null, null, null, null, null, null, ;, Instance of 'SimpleType', n, DeclarationKind.TopLevel, null, false)
-        listener: beginFields(;)
+        listener: beginFields(DeclarationKind.TopLevel, null, null, null, null, null, null, ;)
         listener: handleIdentifier(e, typeReference)
         listener: handleNoTypeArguments(n)
         listener: handleType(e, null)
@@ -1504,7 +1504,7 @@
     parseTopLevelMemberImpl(;)
       listener: beginTopLevelMember(s)
       parseFields(;, null, null, null, null, null, null, ;, Instance of 'SimpleType', e, DeclarationKind.TopLevel, null, false)
-        listener: beginFields(;)
+        listener: beginFields(DeclarationKind.TopLevel, null, null, null, null, null, null, ;)
         listener: handleIdentifier(s, typeReference)
         listener: handleNoTypeArguments(e)
         listener: handleType(s, null)
@@ -1525,7 +1525,7 @@
     parseTopLevelMemberImpl(;)
       listener: beginTopLevelMember(t)
       parseFields(;, null, null, null, null, null, null, ;, Instance of 'SimpleType', h, DeclarationKind.TopLevel, null, false)
-        listener: beginFields(;)
+        listener: beginFields(DeclarationKind.TopLevel, null, null, null, null, null, null, ;)
         listener: handleIdentifier(t, typeReference)
         listener: handleNoTypeArguments(h)
         listener: handleType(t, null)
@@ -1546,7 +1546,7 @@
     parseTopLevelMemberImpl(;)
       listener: beginTopLevelMember(a)
       parseFields(;, null, null, null, null, null, null, ;, Instance of 'SimpleType', t, DeclarationKind.TopLevel, null, false)
-        listener: beginFields(;)
+        listener: beginFields(DeclarationKind.TopLevel, null, null, null, null, null, null, ;)
         listener: handleIdentifier(a, typeReference)
         listener: handleNoTypeArguments(t)
         listener: handleType(a, null)
@@ -1567,7 +1567,7 @@
     parseTopLevelMemberImpl(;)
       listener: beginTopLevelMember(c)
       parseFields(;, null, null, null, null, null, null, ;, Instance of 'SimpleType', a, DeclarationKind.TopLevel, null, false)
-        listener: beginFields(;)
+        listener: beginFields(DeclarationKind.TopLevel, null, null, null, null, null, null, ;)
         listener: handleIdentifier(c, typeReference)
         listener: handleNoTypeArguments(a)
         listener: handleType(c, null)
@@ -1588,7 +1588,7 @@
     parseTopLevelMemberImpl(;)
       listener: beginTopLevelMember(n)
       parseFields(;, null, null, null, null, null, null, ;, Instance of 'SimpleType', b, DeclarationKind.TopLevel, null, false)
-        listener: beginFields(;)
+        listener: beginFields(DeclarationKind.TopLevel, null, null, null, null, null, null, ;)
         listener: handleIdentifier(n, typeReference)
         listener: handleNoTypeArguments(b)
         listener: handleType(n, null)
@@ -1609,7 +1609,7 @@
     parseTopLevelMemberImpl(;)
       listener: beginTopLevelMember(e)
       parseFields(;, null, null, null, null, null, null, ;, Instance of 'SimpleType', f, DeclarationKind.TopLevel, null, false)
-        listener: beginFields(;)
+        listener: beginFields(DeclarationKind.TopLevel, null, null, null, null, null, null, ;)
         listener: handleIdentifier(e, typeReference)
         listener: handleNoTypeArguments(f)
         listener: handleType(e, null)
@@ -1630,7 +1630,7 @@
     parseTopLevelMemberImpl(;)
       listener: beginTopLevelMember(o)
       parseFields(;, null, null, null, null, null, null, ;, Instance of 'SimpleType', u, DeclarationKind.TopLevel, null, false)
-        listener: beginFields(;)
+        listener: beginFields(DeclarationKind.TopLevel, null, null, null, null, null, null, ;)
         listener: handleIdentifier(o, typeReference)
         listener: handleNoTypeArguments(u)
         listener: handleType(o, null)
@@ -1651,7 +1651,7 @@
     parseTopLevelMemberImpl(;)
       listener: beginTopLevelMember(n)
       parseFields(;, null, null, null, null, null, null, ;, Instance of 'SimpleType', d, DeclarationKind.TopLevel, null, false)
-        listener: beginFields(;)
+        listener: beginFields(DeclarationKind.TopLevel, null, null, null, null, null, null, ;)
         listener: handleIdentifier(n, typeReference)
         listener: handleNoTypeArguments(d)
         listener: handleType(n, null)
@@ -1672,7 +1672,7 @@
     parseTopLevelMemberImpl(;)
       listener: beginTopLevelMember(i)
       parseFields(;, null, null, null, null, null, null, ;, Instance of 'SimpleType', n, DeclarationKind.TopLevel, null, false)
-        listener: beginFields(;)
+        listener: beginFields(DeclarationKind.TopLevel, null, null, null, null, null, null, ;)
         listener: handleIdentifier(i, typeReference)
         listener: handleNoTypeArguments(n)
         listener: handleType(i, null)
@@ -1693,7 +1693,7 @@
     parseTopLevelMemberImpl(;)
       listener: beginTopLevelMember(t)
       parseFields(;, null, null, null, null, null, null, ;, Instance of 'SimpleType', h, DeclarationKind.TopLevel, null, false)
-        listener: beginFields(;)
+        listener: beginFields(DeclarationKind.TopLevel, null, null, null, null, null, null, ;)
         listener: handleIdentifier(t, typeReference)
         listener: handleNoTypeArguments(h)
         listener: handleType(t, null)
@@ -1714,7 +1714,7 @@
     parseTopLevelMemberImpl(;)
       listener: beginTopLevelMember(e)
       parseFields(;, null, null, null, null, null, null, ;, Instance of 'SimpleType', L, DeclarationKind.TopLevel, null, false)
-        listener: beginFields(;)
+        listener: beginFields(DeclarationKind.TopLevel, null, null, null, null, null, null, ;)
         listener: handleIdentifier(e, typeReference)
         listener: handleNoTypeArguments(L)
         listener: handleType(e, null)
@@ -1735,7 +1735,7 @@
     parseTopLevelMemberImpl(;)
       listener: beginTopLevelMember(I)
       parseFields(;, null, null, null, null, null, null, ;, Instance of 'SimpleType', C, DeclarationKind.TopLevel, null, false)
-        listener: beginFields(;)
+        listener: beginFields(DeclarationKind.TopLevel, null, null, null, null, null, null, ;)
         listener: handleIdentifier(I, typeReference)
         listener: handleNoTypeArguments(C)
         listener: handleType(I, null)
@@ -1756,7 +1756,7 @@
     parseTopLevelMemberImpl(;)
       listener: beginTopLevelMember(E)
       parseFields(;, null, null, null, null, null, null, ;, Instance of 'SimpleType', N, DeclarationKind.TopLevel, null, false)
-        listener: beginFields(;)
+        listener: beginFields(DeclarationKind.TopLevel, null, null, null, null, null, null, ;)
         listener: handleIdentifier(E, typeReference)
         listener: handleNoTypeArguments(N)
         listener: handleType(E, null)
@@ -1823,7 +1823,7 @@
     parseTopLevelMemberImpl(.)
       listener: beginTopLevelMember(m)
       parseFields(., null, null, null, null, null, null, ., Instance of 'SimpleType', d, DeclarationKind.TopLevel, null, false)
-        listener: beginFields(.)
+        listener: beginFields(DeclarationKind.TopLevel, null, null, null, null, null, null, .)
         listener: handleIdentifier(m, typeReference)
         listener: handleNoTypeArguments(d)
         listener: handleType(m, null)
@@ -1844,7 +1844,7 @@
     parseTopLevelMemberImpl(;)
       listener: beginTopLevelMember(f)
       parseFields(;, null, null, null, null, null, null, ;, Instance of 'SimpleType', i, DeclarationKind.TopLevel, null, false)
-        listener: beginFields(;)
+        listener: beginFields(DeclarationKind.TopLevel, null, null, null, null, null, null, ;)
         listener: handleIdentifier(f, typeReference)
         listener: handleNoTypeArguments(i)
         listener: handleType(f, null)
@@ -1931,7 +1931,7 @@
     parseTopLevelMemberImpl(/)
       listener: beginTopLevelMember(T)
       parseFields(/, null, null, null, null, null, null, /, Instance of 'SimpleType', h, DeclarationKind.TopLevel, null, false)
-        listener: beginFields(/)
+        listener: beginFields(DeclarationKind.TopLevel, null, null, null, null, null, null, /)
         listener: handleIdentifier(T, typeReference)
         listener: handleNoTypeArguments(h)
         listener: handleType(T, null)
@@ -1952,7 +1952,7 @@
     parseTopLevelMemberImpl(;)
       listener: beginTopLevelMember(i)
       parseFields(;, null, null, null, null, null, null, ;, Instance of 'SimpleType', s, DeclarationKind.TopLevel, null, false)
-        listener: beginFields(;)
+        listener: beginFields(DeclarationKind.TopLevel, null, null, null, null, null, null, ;)
         listener: handleIdentifier(i, typeReference)
         listener: handleNoTypeArguments(s)
         listener: handleType(i, null)
@@ -1973,7 +1973,7 @@
     parseTopLevelMemberImpl(;)
       listener: beginTopLevelMember(f)
       parseFields(;, null, null, null, null, null, null, ;, Instance of 'SimpleType', i, DeclarationKind.TopLevel, null, false)
-        listener: beginFields(;)
+        listener: beginFields(DeclarationKind.TopLevel, null, null, null, null, null, null, ;)
         listener: handleIdentifier(f, typeReference)
         listener: handleNoTypeArguments(i)
         listener: handleType(f, null)
@@ -1994,7 +1994,7 @@
     parseTopLevelMemberImpl(;)
       listener: beginTopLevelMember(l)
       parseFields(;, null, null, null, null, null, null, ;, Instance of 'SimpleType', e, DeclarationKind.TopLevel, null, false)
-        listener: beginFields(;)
+        listener: beginFields(DeclarationKind.TopLevel, null, null, null, null, null, null, ;)
         listener: handleIdentifier(l, typeReference)
         listener: handleNoTypeArguments(e)
         listener: handleType(l, null)
@@ -2015,7 +2015,7 @@
     parseTopLevelMemberImpl(;)
       listener: beginTopLevelMember(i)
       parseFields(;, null, null, null, null, null, null, ;, Instance of 'SimpleType', s, DeclarationKind.TopLevel, null, false)
-        listener: beginFields(;)
+        listener: beginFields(DeclarationKind.TopLevel, null, null, null, null, null, null, ;)
         listener: handleIdentifier(i, typeReference)
         listener: handleNoTypeArguments(s)
         listener: handleType(i, null)
@@ -2036,7 +2036,7 @@
     parseTopLevelMemberImpl(;)
       listener: beginTopLevelMember(s)
       parseFields(;, null, null, null, null, null, null, ;, Instance of 'SimpleType', a, DeclarationKind.TopLevel, null, false)
-        listener: beginFields(;)
+        listener: beginFields(DeclarationKind.TopLevel, null, null, null, null, null, null, ;)
         listener: handleIdentifier(s, typeReference)
         listener: handleNoTypeArguments(a)
         listener: handleType(s, null)
@@ -2057,7 +2057,7 @@
     parseTopLevelMemberImpl(;)
       listener: beginTopLevelMember(v)
       parseFields(;, null, null, null, null, null, null, ;, Instance of 'SimpleType', e, DeclarationKind.TopLevel, null, false)
-        listener: beginFields(;)
+        listener: beginFields(DeclarationKind.TopLevel, null, null, null, null, null, null, ;)
         listener: handleIdentifier(v, typeReference)
         listener: handleNoTypeArguments(e)
         listener: handleType(v, null)
@@ -2078,7 +2078,7 @@
     parseTopLevelMemberImpl(;)
       listener: beginTopLevelMember(d)
       parseFields(;, null, null, null, null, null, null, ;, Instance of 'SimpleType', a, DeclarationKind.TopLevel, null, false)
-        listener: beginFields(;)
+        listener: beginFields(DeclarationKind.TopLevel, null, null, null, null, null, null, ;)
         listener: handleIdentifier(d, typeReference)
         listener: handleNoTypeArguments(a)
         listener: handleType(d, null)
@@ -2099,7 +2099,7 @@
     parseTopLevelMemberImpl(;)
       listener: beginTopLevelMember(s)
       parseFields(;, null, null, null, null, null, null, ;, Instance of 'SimpleType', U, DeclarationKind.TopLevel, null, false)
-        listener: beginFields(;)
+        listener: beginFields(DeclarationKind.TopLevel, null, null, null, null, null, null, ;)
         listener: handleIdentifier(s, typeReference)
         listener: handleNoTypeArguments(U)
         listener: handleType(s, null)
@@ -2120,7 +2120,7 @@
     parseTopLevelMemberImpl(;)
       listener: beginTopLevelMember(T)
       parseFields(;, null, null, null, null, null, null, ;, Instance of 'SimpleType', F, DeclarationKind.TopLevel, null, false)
-        listener: beginFields(;)
+        listener: beginFields(DeclarationKind.TopLevel, null, null, null, null, null, null, ;)
         listener: handleIdentifier(T, typeReference)
         listener: handleNoTypeArguments(F)
         listener: handleType(T, null)
@@ -2217,7 +2217,7 @@
     parseTopLevelMemberImpl(.)
       listener: beginTopLevelMember(m)
       parseFields(., null, null, null, null, null, null, ., Instance of 'SimpleType', a, DeclarationKind.TopLevel, null, false)
-        listener: beginFields(.)
+        listener: beginFields(DeclarationKind.TopLevel, null, null, null, null, null, null, .)
         listener: handleIdentifier(m, typeReference)
         listener: handleNoTypeArguments(a)
         listener: handleType(m, null)
diff --git a/pkg/front_end/parser_testcases/extension_named_type.dart.expect b/pkg/front_end/parser_testcases/extension_named_type.dart.expect
index 96b6956..f259fc6 100644
--- a/pkg/front_end/parser_testcases/extension_named_type.dart.expect
+++ b/pkg/front_end/parser_testcases/extension_named_type.dart.expect
@@ -1,7 +1,7 @@
 beginCompilationUnit(class)
   beginMetadataStar(class)
   endMetadataStar(0)
-  beginClassOrNamedMixinApplicationPrelude(class)
+  beginClassOrMixinOrNamedMixinApplicationPrelude(class)
     handleIdentifier(A, classOrMixinDeclaration)
     handleNoTypeVariables({)
     beginClassDeclaration(class, null, A)
@@ -10,8 +10,8 @@
       handleClassNoWithClause()
       handleClassOrMixinImplements(null, 0)
       handleClassHeader(class, class, null)
-      beginClassOrMixinBody(DeclarationKind.Class, {)
-      endClassOrMixinBody(DeclarationKind.Class, 0, {, })
+      beginClassOrMixinOrExtensionBody(DeclarationKind.Class, {)
+      endClassOrMixinOrExtensionBody(DeclarationKind.Class, 0, {, })
     endClassDeclaration(class, })
   endTopLevelDeclaration(extension)
   beginMetadataStar(extension)
@@ -23,11 +23,11 @@
       handleNoTypeArguments({)
       handleType(A, null)
       handleExtensionShowHide(null, 0, null, 0)
-      beginClassOrMixinBody(DeclarationKind.Extension, {)
+      beginClassOrMixinOrExtensionBody(DeclarationKind.Extension, {)
         beginMetadataStar(method)
         endMetadataStar(0)
         beginMember()
-          beginMethod(null, null, null, null, null, method)
+          beginMethod(DeclarationKind.Extension, null, null, null, null, null, method)
             handleNoType({)
             handleIdentifier(method, methodDeclaration)
             handleNoTypeVariables(()
@@ -39,7 +39,7 @@
             endBlockFunctionBody(0, {, })
           endExtensionMethod(null, method, (, null, })
         endMember()
-      endClassOrMixinBody(DeclarationKind.Extension, 1, {, })
+      endClassOrMixinOrExtensionBody(DeclarationKind.Extension, 1, {, })
     endExtensionDeclaration(extension, null, on, null, null, })
   endTopLevelDeclaration(test)
   beginMetadataStar(test)
diff --git a/pkg/front_end/parser_testcases/extension_named_type.dart.intertwined.expect b/pkg/front_end/parser_testcases/extension_named_type.dart.intertwined.expect
index c5f52cb..b13d6fc 100644
--- a/pkg/front_end/parser_testcases/extension_named_type.dart.intertwined.expect
+++ b/pkg/front_end/parser_testcases/extension_named_type.dart.intertwined.expect
@@ -9,7 +9,7 @@
     parseTopLevelKeywordDeclaration(, class, Instance of 'DirectiveContext')
       parseClassDeclarationModifiers(, class)
       parseClassOrNamedMixinApplication(null, class)
-        listener: beginClassOrNamedMixinApplicationPrelude(class)
+        listener: beginClassOrMixinOrNamedMixinApplicationPrelude(class)
         ensureIdentifier(class, classOrMixinDeclaration)
           listener: handleIdentifier(A, classOrMixinDeclaration)
         listener: handleNoTypeVariables({)
@@ -25,9 +25,9 @@
               listener: handleClassOrMixinImplements(null, 0)
             listener: handleClassHeader(class, class, null)
           parseClassOrMixinOrExtensionBody(A, DeclarationKind.Class, A)
-            listener: beginClassOrMixinBody(DeclarationKind.Class, {)
+            listener: beginClassOrMixinOrExtensionBody(DeclarationKind.Class, {)
             notEofOrValue(}, })
-            listener: endClassOrMixinBody(DeclarationKind.Class, 0, {, })
+            listener: endClassOrMixinOrExtensionBody(DeclarationKind.Class, 0, {, })
           listener: endClassDeclaration(class, })
   listener: endTopLevelDeclaration(extension)
   parseTopLevelDeclarationImpl(}, Instance of 'DirectiveContext')
@@ -45,7 +45,7 @@
         listener: handleType(A, null)
         listener: handleExtensionShowHide(null, 0, null, 0)
         parseClassOrMixinOrExtensionBody(A, DeclarationKind.Extension, type)
-          listener: beginClassOrMixinBody(DeclarationKind.Extension, {)
+          listener: beginClassOrMixinOrExtensionBody(DeclarationKind.Extension, {)
           notEofOrValue(}, method)
           parseClassOrMixinOrExtensionMemberImpl({, DeclarationKind.Extension, type)
             parseMetadataStar({)
@@ -54,7 +54,7 @@
             listener: beginMember()
             isReservedKeyword(()
             parseMethod({, null, null, null, null, null, null, {, Instance of 'NoType', null, method, DeclarationKind.Extension, type, false)
-              listener: beginMethod(null, null, null, null, null, method)
+              listener: beginMethod(DeclarationKind.Extension, null, null, null, null, null, method)
               listener: handleNoType({)
               ensureIdentifierPotentiallyRecovered({, methodDeclaration, false)
                 listener: handleIdentifier(method, methodDeclaration)
@@ -79,7 +79,7 @@
               listener: endExtensionMethod(null, method, (, null, })
             listener: endMember()
           notEofOrValue(}, })
-          listener: endClassOrMixinBody(DeclarationKind.Extension, 1, {, })
+          listener: endClassOrMixinOrExtensionBody(DeclarationKind.Extension, 1, {, })
         listener: endExtensionDeclaration(extension, null, on, null, null, })
   listener: endTopLevelDeclaration(test)
   parseTopLevelDeclarationImpl(}, Instance of 'DirectiveContext')
diff --git a/pkg/front_end/parser_testcases/extension_type.dart.expect b/pkg/front_end/parser_testcases/extension_type.dart.expect
index 1efa3c2..34b0e66 100644
--- a/pkg/front_end/parser_testcases/extension_type.dart.expect
+++ b/pkg/front_end/parser_testcases/extension_type.dart.expect
@@ -1,7 +1,7 @@
 beginCompilationUnit(class)
   beginMetadataStar(class)
   endMetadataStar(0)
-  beginClassOrNamedMixinApplicationPrelude(class)
+  beginClassOrMixinOrNamedMixinApplicationPrelude(class)
     handleIdentifier(A, classOrMixinDeclaration)
     handleNoTypeVariables({)
     beginClassDeclaration(class, null, A)
@@ -10,8 +10,8 @@
       handleClassNoWithClause()
       handleClassOrMixinImplements(null, 0)
       handleClassHeader(class, class, null)
-      beginClassOrMixinBody(DeclarationKind.Class, {)
-      endClassOrMixinBody(DeclarationKind.Class, 0, {, })
+      beginClassOrMixinOrExtensionBody(DeclarationKind.Class, {)
+      endClassOrMixinOrExtensionBody(DeclarationKind.Class, 0, {, })
     endClassDeclaration(class, })
   endTopLevelDeclaration(extension)
   beginMetadataStar(extension)
@@ -23,8 +23,8 @@
       handleNoTypeArguments({)
       handleType(A, null)
       handleExtensionShowHide(null, 0, null, 0)
-      beginClassOrMixinBody(DeclarationKind.Extension, {)
-      endClassOrMixinBody(DeclarationKind.Extension, 0, {, })
+      beginClassOrMixinOrExtensionBody(DeclarationKind.Extension, {)
+      endClassOrMixinOrExtensionBody(DeclarationKind.Extension, 0, {, })
     endExtensionDeclaration(extension, type, on, null, null, })
   endTopLevelDeclaration()
 endCompilationUnit(2, )
diff --git a/pkg/front_end/parser_testcases/extension_type.dart.intertwined.expect b/pkg/front_end/parser_testcases/extension_type.dart.intertwined.expect
index 2272376..eb48c9c 100644
--- a/pkg/front_end/parser_testcases/extension_type.dart.intertwined.expect
+++ b/pkg/front_end/parser_testcases/extension_type.dart.intertwined.expect
@@ -9,7 +9,7 @@
     parseTopLevelKeywordDeclaration(, class, Instance of 'DirectiveContext')
       parseClassDeclarationModifiers(, class)
       parseClassOrNamedMixinApplication(null, class)
-        listener: beginClassOrNamedMixinApplicationPrelude(class)
+        listener: beginClassOrMixinOrNamedMixinApplicationPrelude(class)
         ensureIdentifier(class, classOrMixinDeclaration)
           listener: handleIdentifier(A, classOrMixinDeclaration)
         listener: handleNoTypeVariables({)
@@ -25,9 +25,9 @@
               listener: handleClassOrMixinImplements(null, 0)
             listener: handleClassHeader(class, class, null)
           parseClassOrMixinOrExtensionBody(A, DeclarationKind.Class, A)
-            listener: beginClassOrMixinBody(DeclarationKind.Class, {)
+            listener: beginClassOrMixinOrExtensionBody(DeclarationKind.Class, {)
             notEofOrValue(}, })
-            listener: endClassOrMixinBody(DeclarationKind.Class, 0, {, })
+            listener: endClassOrMixinOrExtensionBody(DeclarationKind.Class, 0, {, })
           listener: endClassDeclaration(class, })
   listener: endTopLevelDeclaration(extension)
   parseTopLevelDeclarationImpl(}, Instance of 'DirectiveContext')
@@ -45,9 +45,9 @@
         listener: handleType(A, null)
         listener: handleExtensionShowHide(null, 0, null, 0)
         parseClassOrMixinOrExtensionBody(A, DeclarationKind.Extension, E)
-          listener: beginClassOrMixinBody(DeclarationKind.Extension, {)
+          listener: beginClassOrMixinOrExtensionBody(DeclarationKind.Extension, {)
           notEofOrValue(}, })
-          listener: endClassOrMixinBody(DeclarationKind.Extension, 0, {, })
+          listener: endClassOrMixinOrExtensionBody(DeclarationKind.Extension, 0, {, })
         listener: endExtensionDeclaration(extension, type, on, null, null, })
   listener: endTopLevelDeclaration()
   reportAllErrorTokens(class)
diff --git a/pkg/front_end/parser_testcases/extensions/covariant.dart.expect b/pkg/front_end/parser_testcases/extensions/covariant.dart.expect
index f6e44b8..8f6d478 100644
--- a/pkg/front_end/parser_testcases/extensions/covariant.dart.expect
+++ b/pkg/front_end/parser_testcases/extensions/covariant.dart.expect
@@ -7,7 +7,7 @@
 beginCompilationUnit(class)
   beginMetadataStar(class)
   endMetadataStar(0)
-  beginClassOrNamedMixinApplicationPrelude(class)
+  beginClassOrMixinOrNamedMixinApplicationPrelude(class)
     handleIdentifier(A, classOrMixinDeclaration)
     handleNoTypeVariables({)
     beginClassDeclaration(class, null, A)
@@ -16,13 +16,13 @@
       handleClassNoWithClause()
       handleClassOrMixinImplements(null, 0)
       handleClassHeader(class, class, null)
-      beginClassOrMixinBody(DeclarationKind.Class, {)
-      endClassOrMixinBody(DeclarationKind.Class, 0, {, })
+      beginClassOrMixinOrExtensionBody(DeclarationKind.Class, {)
+      endClassOrMixinOrExtensionBody(DeclarationKind.Class, 0, {, })
     endClassDeclaration(class, })
   endTopLevelDeclaration(class)
   beginMetadataStar(class)
   endMetadataStar(0)
-  beginClassOrNamedMixinApplicationPrelude(class)
+  beginClassOrMixinOrNamedMixinApplicationPrelude(class)
     handleIdentifier(C, classOrMixinDeclaration)
     handleNoTypeVariables(extends)
     beginClassDeclaration(class, null, C)
@@ -33,8 +33,8 @@
       handleClassNoWithClause()
       handleClassOrMixinImplements(null, 0)
       handleClassHeader(class, class, null)
-      beginClassOrMixinBody(DeclarationKind.Class, {)
-      endClassOrMixinBody(DeclarationKind.Class, 0, {, })
+      beginClassOrMixinOrExtensionBody(DeclarationKind.Class, {)
+      endClassOrMixinOrExtensionBody(DeclarationKind.Class, 0, {, })
     endClassDeclaration(class, })
   endTopLevelDeclaration(extension)
   beginMetadataStar(extension)
@@ -46,11 +46,11 @@
       handleNoTypeArguments({)
       handleType(C, null)
       handleExtensionShowHide(null, 0, null, 0)
-      beginClassOrMixinBody(DeclarationKind.Extension, {)
+      beginClassOrMixinOrExtensionBody(DeclarationKind.Extension, {)
         beginMetadataStar(addChild)
         endMetadataStar(0)
         beginMember()
-          beginMethod(null, null, null, null, null, addChild)
+          beginMethod(DeclarationKind.Extension, null, null, null, null, null, addChild)
             handleNoType({)
             handleIdentifier(addChild, methodDeclaration)
             handleNoTypeVariables(()
@@ -72,7 +72,7 @@
             endBlockFunctionBody(0, {, })
           endExtensionMethod(null, addChild, (, null, })
         endMember()
-      endClassOrMixinBody(DeclarationKind.Extension, 1, {, })
+      endClassOrMixinOrExtensionBody(DeclarationKind.Extension, 1, {, })
     endExtensionDeclaration(extension, null, on, null, null, })
   endTopLevelDeclaration()
 endCompilationUnit(3, )
diff --git a/pkg/front_end/parser_testcases/extensions/covariant.dart.intertwined.expect b/pkg/front_end/parser_testcases/extensions/covariant.dart.intertwined.expect
index f04b161..af843af 100644
--- a/pkg/front_end/parser_testcases/extensions/covariant.dart.intertwined.expect
+++ b/pkg/front_end/parser_testcases/extensions/covariant.dart.intertwined.expect
@@ -9,7 +9,7 @@
     parseTopLevelKeywordDeclaration(, class, Instance of 'DirectiveContext')
       parseClassDeclarationModifiers(, class)
       parseClassOrNamedMixinApplication(null, class)
-        listener: beginClassOrNamedMixinApplicationPrelude(class)
+        listener: beginClassOrMixinOrNamedMixinApplicationPrelude(class)
         ensureIdentifier(class, classOrMixinDeclaration)
           listener: handleIdentifier(A, classOrMixinDeclaration)
         listener: handleNoTypeVariables({)
@@ -25,9 +25,9 @@
               listener: handleClassOrMixinImplements(null, 0)
             listener: handleClassHeader(class, class, null)
           parseClassOrMixinOrExtensionBody(A, DeclarationKind.Class, A)
-            listener: beginClassOrMixinBody(DeclarationKind.Class, {)
+            listener: beginClassOrMixinOrExtensionBody(DeclarationKind.Class, {)
             notEofOrValue(}, })
-            listener: endClassOrMixinBody(DeclarationKind.Class, 0, {, })
+            listener: endClassOrMixinOrExtensionBody(DeclarationKind.Class, 0, {, })
           listener: endClassDeclaration(class, })
   listener: endTopLevelDeclaration(class)
   parseTopLevelDeclarationImpl(}, Instance of 'DirectiveContext')
@@ -37,7 +37,7 @@
     parseTopLevelKeywordDeclaration(}, class, Instance of 'DirectiveContext')
       parseClassDeclarationModifiers(}, class)
       parseClassOrNamedMixinApplication(null, class)
-        listener: beginClassOrNamedMixinApplicationPrelude(class)
+        listener: beginClassOrMixinOrNamedMixinApplicationPrelude(class)
         ensureIdentifier(class, classOrMixinDeclaration)
           listener: handleIdentifier(C, classOrMixinDeclaration)
         listener: handleNoTypeVariables(extends)
@@ -56,9 +56,9 @@
               listener: handleClassOrMixinImplements(null, 0)
             listener: handleClassHeader(class, class, null)
           parseClassOrMixinOrExtensionBody(A, DeclarationKind.Class, C)
-            listener: beginClassOrMixinBody(DeclarationKind.Class, {)
+            listener: beginClassOrMixinOrExtensionBody(DeclarationKind.Class, {)
             notEofOrValue(}, })
-            listener: endClassOrMixinBody(DeclarationKind.Class, 0, {, })
+            listener: endClassOrMixinOrExtensionBody(DeclarationKind.Class, 0, {, })
           listener: endClassDeclaration(class, })
   listener: endTopLevelDeclaration(extension)
   parseTopLevelDeclarationImpl(}, Instance of 'DirectiveContext')
@@ -76,7 +76,7 @@
         listener: handleType(C, null)
         listener: handleExtensionShowHide(null, 0, null, 0)
         parseClassOrMixinOrExtensionBody(C, DeclarationKind.Extension, null)
-          listener: beginClassOrMixinBody(DeclarationKind.Extension, {)
+          listener: beginClassOrMixinOrExtensionBody(DeclarationKind.Extension, {)
           notEofOrValue(}, addChild)
           parseClassOrMixinOrExtensionMemberImpl({, DeclarationKind.Extension, null)
             parseMetadataStar({)
@@ -85,7 +85,7 @@
             listener: beginMember()
             isReservedKeyword(()
             parseMethod({, null, null, null, null, null, null, {, Instance of 'NoType', null, addChild, DeclarationKind.Extension, null, false)
-              listener: beginMethod(null, null, null, null, null, addChild)
+              listener: beginMethod(DeclarationKind.Extension, null, null, null, null, null, addChild)
               listener: handleNoType({)
               ensureIdentifierPotentiallyRecovered({, methodDeclaration, false)
                 listener: handleIdentifier(addChild, methodDeclaration)
@@ -124,7 +124,7 @@
               listener: endExtensionMethod(null, addChild, (, null, })
             listener: endMember()
           notEofOrValue(}, })
-          listener: endClassOrMixinBody(DeclarationKind.Extension, 1, {, })
+          listener: endClassOrMixinOrExtensionBody(DeclarationKind.Extension, 1, {, })
         listener: endExtensionDeclaration(extension, null, on, null, null, })
   listener: endTopLevelDeclaration()
   reportAllErrorTokens(class)
diff --git a/pkg/front_end/parser_testcases/extensions/not_covariant.dart.expect b/pkg/front_end/parser_testcases/extensions/not_covariant.dart.expect
index 23440f4..e551ab3 100644
--- a/pkg/front_end/parser_testcases/extensions/not_covariant.dart.expect
+++ b/pkg/front_end/parser_testcases/extensions/not_covariant.dart.expect
@@ -1,7 +1,7 @@
 beginCompilationUnit(class)
   beginMetadataStar(class)
   endMetadataStar(0)
-  beginClassOrNamedMixinApplicationPrelude(class)
+  beginClassOrMixinOrNamedMixinApplicationPrelude(class)
     handleIdentifier(A, classOrMixinDeclaration)
     handleNoTypeVariables({)
     beginClassDeclaration(class, null, A)
@@ -10,13 +10,13 @@
       handleClassNoWithClause()
       handleClassOrMixinImplements(null, 0)
       handleClassHeader(class, class, null)
-      beginClassOrMixinBody(DeclarationKind.Class, {)
-      endClassOrMixinBody(DeclarationKind.Class, 0, {, })
+      beginClassOrMixinOrExtensionBody(DeclarationKind.Class, {)
+      endClassOrMixinOrExtensionBody(DeclarationKind.Class, 0, {, })
     endClassDeclaration(class, })
   endTopLevelDeclaration(class)
   beginMetadataStar(class)
   endMetadataStar(0)
-  beginClassOrNamedMixinApplicationPrelude(class)
+  beginClassOrMixinOrNamedMixinApplicationPrelude(class)
     handleIdentifier(C, classOrMixinDeclaration)
     handleNoTypeVariables(extends)
     beginClassDeclaration(class, null, C)
@@ -27,8 +27,8 @@
       handleClassNoWithClause()
       handleClassOrMixinImplements(null, 0)
       handleClassHeader(class, class, null)
-      beginClassOrMixinBody(DeclarationKind.Class, {)
-      endClassOrMixinBody(DeclarationKind.Class, 0, {, })
+      beginClassOrMixinOrExtensionBody(DeclarationKind.Class, {)
+      endClassOrMixinOrExtensionBody(DeclarationKind.Class, 0, {, })
     endClassDeclaration(class, })
   endTopLevelDeclaration(extension)
   beginMetadataStar(extension)
@@ -40,11 +40,11 @@
       handleNoTypeArguments({)
       handleType(C, null)
       handleExtensionShowHide(null, 0, null, 0)
-      beginClassOrMixinBody(DeclarationKind.Extension, {)
+      beginClassOrMixinOrExtensionBody(DeclarationKind.Extension, {)
         beginMetadataStar(addChild)
         endMetadataStar(0)
         beginMember()
-          beginMethod(null, null, null, null, null, addChild)
+          beginMethod(DeclarationKind.Extension, null, null, null, null, null, addChild)
             handleNoType({)
             handleIdentifier(addChild, methodDeclaration)
             handleNoTypeVariables(()
@@ -65,7 +65,7 @@
             endBlockFunctionBody(0, {, })
           endExtensionMethod(null, addChild, (, null, })
         endMember()
-      endClassOrMixinBody(DeclarationKind.Extension, 1, {, })
+      endClassOrMixinOrExtensionBody(DeclarationKind.Extension, 1, {, })
     endExtensionDeclaration(extension, null, on, null, null, })
   endTopLevelDeclaration()
 endCompilationUnit(3, )
diff --git a/pkg/front_end/parser_testcases/extensions/not_covariant.dart.intertwined.expect b/pkg/front_end/parser_testcases/extensions/not_covariant.dart.intertwined.expect
index 8735e12..fbe25b2 100644
--- a/pkg/front_end/parser_testcases/extensions/not_covariant.dart.intertwined.expect
+++ b/pkg/front_end/parser_testcases/extensions/not_covariant.dart.intertwined.expect
@@ -9,7 +9,7 @@
     parseTopLevelKeywordDeclaration(, class, Instance of 'DirectiveContext')
       parseClassDeclarationModifiers(, class)
       parseClassOrNamedMixinApplication(null, class)
-        listener: beginClassOrNamedMixinApplicationPrelude(class)
+        listener: beginClassOrMixinOrNamedMixinApplicationPrelude(class)
         ensureIdentifier(class, classOrMixinDeclaration)
           listener: handleIdentifier(A, classOrMixinDeclaration)
         listener: handleNoTypeVariables({)
@@ -25,9 +25,9 @@
               listener: handleClassOrMixinImplements(null, 0)
             listener: handleClassHeader(class, class, null)
           parseClassOrMixinOrExtensionBody(A, DeclarationKind.Class, A)
-            listener: beginClassOrMixinBody(DeclarationKind.Class, {)
+            listener: beginClassOrMixinOrExtensionBody(DeclarationKind.Class, {)
             notEofOrValue(}, })
-            listener: endClassOrMixinBody(DeclarationKind.Class, 0, {, })
+            listener: endClassOrMixinOrExtensionBody(DeclarationKind.Class, 0, {, })
           listener: endClassDeclaration(class, })
   listener: endTopLevelDeclaration(class)
   parseTopLevelDeclarationImpl(}, Instance of 'DirectiveContext')
@@ -37,7 +37,7 @@
     parseTopLevelKeywordDeclaration(}, class, Instance of 'DirectiveContext')
       parseClassDeclarationModifiers(}, class)
       parseClassOrNamedMixinApplication(null, class)
-        listener: beginClassOrNamedMixinApplicationPrelude(class)
+        listener: beginClassOrMixinOrNamedMixinApplicationPrelude(class)
         ensureIdentifier(class, classOrMixinDeclaration)
           listener: handleIdentifier(C, classOrMixinDeclaration)
         listener: handleNoTypeVariables(extends)
@@ -56,9 +56,9 @@
               listener: handleClassOrMixinImplements(null, 0)
             listener: handleClassHeader(class, class, null)
           parseClassOrMixinOrExtensionBody(A, DeclarationKind.Class, C)
-            listener: beginClassOrMixinBody(DeclarationKind.Class, {)
+            listener: beginClassOrMixinOrExtensionBody(DeclarationKind.Class, {)
             notEofOrValue(}, })
-            listener: endClassOrMixinBody(DeclarationKind.Class, 0, {, })
+            listener: endClassOrMixinOrExtensionBody(DeclarationKind.Class, 0, {, })
           listener: endClassDeclaration(class, })
   listener: endTopLevelDeclaration(extension)
   parseTopLevelDeclarationImpl(}, Instance of 'DirectiveContext')
@@ -76,7 +76,7 @@
         listener: handleType(C, null)
         listener: handleExtensionShowHide(null, 0, null, 0)
         parseClassOrMixinOrExtensionBody(C, DeclarationKind.Extension, null)
-          listener: beginClassOrMixinBody(DeclarationKind.Extension, {)
+          listener: beginClassOrMixinOrExtensionBody(DeclarationKind.Extension, {)
           notEofOrValue(}, addChild)
           parseClassOrMixinOrExtensionMemberImpl({, DeclarationKind.Extension, null)
             parseMetadataStar({)
@@ -85,7 +85,7 @@
             listener: beginMember()
             isReservedKeyword(()
             parseMethod({, null, null, null, null, null, null, {, Instance of 'NoType', null, addChild, DeclarationKind.Extension, null, false)
-              listener: beginMethod(null, null, null, null, null, addChild)
+              listener: beginMethod(DeclarationKind.Extension, null, null, null, null, null, addChild)
               listener: handleNoType({)
               ensureIdentifierPotentiallyRecovered({, methodDeclaration, false)
                 listener: handleIdentifier(addChild, methodDeclaration)
@@ -122,7 +122,7 @@
               listener: endExtensionMethod(null, addChild, (, null, })
             listener: endMember()
           notEofOrValue(}, })
-          listener: endClassOrMixinBody(DeclarationKind.Extension, 1, {, })
+          listener: endClassOrMixinOrExtensionBody(DeclarationKind.Extension, 1, {, })
         listener: endExtensionDeclaration(extension, null, on, null, null, })
   listener: endTopLevelDeclaration()
   reportAllErrorTokens(class)
diff --git a/pkg/front_end/parser_testcases/extensions/static.dart.expect b/pkg/front_end/parser_testcases/extensions/static.dart.expect
index 5147f20..10fc0d8 100644
--- a/pkg/front_end/parser_testcases/extensions/static.dart.expect
+++ b/pkg/front_end/parser_testcases/extensions/static.dart.expect
@@ -1,7 +1,7 @@
 beginCompilationUnit(class)
   beginMetadataStar(class)
   endMetadataStar(0)
-  beginClassOrNamedMixinApplicationPrelude(class)
+  beginClassOrMixinOrNamedMixinApplicationPrelude(class)
     handleIdentifier(A, classOrMixinDeclaration)
     handleNoTypeVariables({)
     beginClassDeclaration(class, null, A)
@@ -10,13 +10,13 @@
       handleClassNoWithClause()
       handleClassOrMixinImplements(null, 0)
       handleClassHeader(class, class, null)
-      beginClassOrMixinBody(DeclarationKind.Class, {)
-      endClassOrMixinBody(DeclarationKind.Class, 0, {, })
+      beginClassOrMixinOrExtensionBody(DeclarationKind.Class, {)
+      endClassOrMixinOrExtensionBody(DeclarationKind.Class, 0, {, })
     endClassDeclaration(class, })
   endTopLevelDeclaration(class)
   beginMetadataStar(class)
   endMetadataStar(0)
-  beginClassOrNamedMixinApplicationPrelude(class)
+  beginClassOrMixinOrNamedMixinApplicationPrelude(class)
     handleIdentifier(C, classOrMixinDeclaration)
     handleNoTypeVariables(extends)
     beginClassDeclaration(class, null, C)
@@ -27,8 +27,8 @@
       handleClassNoWithClause()
       handleClassOrMixinImplements(null, 0)
       handleClassHeader(class, class, null)
-      beginClassOrMixinBody(DeclarationKind.Class, {)
-      endClassOrMixinBody(DeclarationKind.Class, 0, {, })
+      beginClassOrMixinOrExtensionBody(DeclarationKind.Class, {)
+      endClassOrMixinOrExtensionBody(DeclarationKind.Class, 0, {, })
     endClassDeclaration(class, })
   endTopLevelDeclaration(extension)
   beginMetadataStar(extension)
@@ -40,11 +40,11 @@
       handleNoTypeArguments({)
       handleType(C, null)
       handleExtensionShowHide(null, 0, null, 0)
-      beginClassOrMixinBody(DeclarationKind.Extension, {)
+      beginClassOrMixinOrExtensionBody(DeclarationKind.Extension, {)
         beginMetadataStar(static)
         endMetadataStar(0)
         beginMember()
-          beginMethod(null, static, null, null, null, addChild)
+          beginMethod(DeclarationKind.Extension, null, static, null, null, null, addChild)
             handleNoType(static)
             handleIdentifier(addChild, methodDeclaration)
             handleNoTypeVariables(()
@@ -65,7 +65,7 @@
             endBlockFunctionBody(0, {, })
           endExtensionMethod(null, static, (, null, })
         endMember()
-      endClassOrMixinBody(DeclarationKind.Extension, 1, {, })
+      endClassOrMixinOrExtensionBody(DeclarationKind.Extension, 1, {, })
     endExtensionDeclaration(extension, null, on, null, null, })
   endTopLevelDeclaration()
 endCompilationUnit(3, )
diff --git a/pkg/front_end/parser_testcases/extensions/static.dart.intertwined.expect b/pkg/front_end/parser_testcases/extensions/static.dart.intertwined.expect
index 560c41b..815a5a1 100644
--- a/pkg/front_end/parser_testcases/extensions/static.dart.intertwined.expect
+++ b/pkg/front_end/parser_testcases/extensions/static.dart.intertwined.expect
@@ -9,7 +9,7 @@
     parseTopLevelKeywordDeclaration(, class, Instance of 'DirectiveContext')
       parseClassDeclarationModifiers(, class)
       parseClassOrNamedMixinApplication(null, class)
-        listener: beginClassOrNamedMixinApplicationPrelude(class)
+        listener: beginClassOrMixinOrNamedMixinApplicationPrelude(class)
         ensureIdentifier(class, classOrMixinDeclaration)
           listener: handleIdentifier(A, classOrMixinDeclaration)
         listener: handleNoTypeVariables({)
@@ -25,9 +25,9 @@
               listener: handleClassOrMixinImplements(null, 0)
             listener: handleClassHeader(class, class, null)
           parseClassOrMixinOrExtensionBody(A, DeclarationKind.Class, A)
-            listener: beginClassOrMixinBody(DeclarationKind.Class, {)
+            listener: beginClassOrMixinOrExtensionBody(DeclarationKind.Class, {)
             notEofOrValue(}, })
-            listener: endClassOrMixinBody(DeclarationKind.Class, 0, {, })
+            listener: endClassOrMixinOrExtensionBody(DeclarationKind.Class, 0, {, })
           listener: endClassDeclaration(class, })
   listener: endTopLevelDeclaration(class)
   parseTopLevelDeclarationImpl(}, Instance of 'DirectiveContext')
@@ -37,7 +37,7 @@
     parseTopLevelKeywordDeclaration(}, class, Instance of 'DirectiveContext')
       parseClassDeclarationModifiers(}, class)
       parseClassOrNamedMixinApplication(null, class)
-        listener: beginClassOrNamedMixinApplicationPrelude(class)
+        listener: beginClassOrMixinOrNamedMixinApplicationPrelude(class)
         ensureIdentifier(class, classOrMixinDeclaration)
           listener: handleIdentifier(C, classOrMixinDeclaration)
         listener: handleNoTypeVariables(extends)
@@ -56,9 +56,9 @@
               listener: handleClassOrMixinImplements(null, 0)
             listener: handleClassHeader(class, class, null)
           parseClassOrMixinOrExtensionBody(A, DeclarationKind.Class, C)
-            listener: beginClassOrMixinBody(DeclarationKind.Class, {)
+            listener: beginClassOrMixinOrExtensionBody(DeclarationKind.Class, {)
             notEofOrValue(}, })
-            listener: endClassOrMixinBody(DeclarationKind.Class, 0, {, })
+            listener: endClassOrMixinOrExtensionBody(DeclarationKind.Class, 0, {, })
           listener: endClassDeclaration(class, })
   listener: endTopLevelDeclaration(extension)
   parseTopLevelDeclarationImpl(}, Instance of 'DirectiveContext')
@@ -76,7 +76,7 @@
         listener: handleType(C, null)
         listener: handleExtensionShowHide(null, 0, null, 0)
         parseClassOrMixinOrExtensionBody(C, DeclarationKind.Extension, null)
-          listener: beginClassOrMixinBody(DeclarationKind.Extension, {)
+          listener: beginClassOrMixinOrExtensionBody(DeclarationKind.Extension, {)
           notEofOrValue(}, static)
           parseClassOrMixinOrExtensionMemberImpl({, DeclarationKind.Extension, null)
             parseMetadataStar({)
@@ -85,7 +85,7 @@
             listener: beginMember()
             isReservedKeyword(()
             parseMethod({, null, null, static, null, null, null, static, Instance of 'NoType', null, addChild, DeclarationKind.Extension, null, false)
-              listener: beginMethod(null, static, null, null, null, addChild)
+              listener: beginMethod(DeclarationKind.Extension, null, static, null, null, null, addChild)
               listener: handleNoType(static)
               ensureIdentifierPotentiallyRecovered(static, methodDeclaration, false)
                 listener: handleIdentifier(addChild, methodDeclaration)
@@ -121,7 +121,7 @@
               listener: endExtensionMethod(null, static, (, null, })
             listener: endMember()
           notEofOrValue(}, })
-          listener: endClassOrMixinBody(DeclarationKind.Extension, 1, {, })
+          listener: endClassOrMixinOrExtensionBody(DeclarationKind.Extension, 1, {, })
         listener: endExtensionDeclaration(extension, null, on, null, null, })
   listener: endTopLevelDeclaration()
   reportAllErrorTokens(class)
diff --git a/pkg/front_end/parser_testcases/extensions/static_covariant.dart.expect b/pkg/front_end/parser_testcases/extensions/static_covariant.dart.expect
index b4a4c33..b0745de 100644
--- a/pkg/front_end/parser_testcases/extensions/static_covariant.dart.expect
+++ b/pkg/front_end/parser_testcases/extensions/static_covariant.dart.expect
@@ -7,7 +7,7 @@
 beginCompilationUnit(class)
   beginMetadataStar(class)
   endMetadataStar(0)
-  beginClassOrNamedMixinApplicationPrelude(class)
+  beginClassOrMixinOrNamedMixinApplicationPrelude(class)
     handleIdentifier(A, classOrMixinDeclaration)
     handleNoTypeVariables({)
     beginClassDeclaration(class, null, A)
@@ -16,13 +16,13 @@
       handleClassNoWithClause()
       handleClassOrMixinImplements(null, 0)
       handleClassHeader(class, class, null)
-      beginClassOrMixinBody(DeclarationKind.Class, {)
-      endClassOrMixinBody(DeclarationKind.Class, 0, {, })
+      beginClassOrMixinOrExtensionBody(DeclarationKind.Class, {)
+      endClassOrMixinOrExtensionBody(DeclarationKind.Class, 0, {, })
     endClassDeclaration(class, })
   endTopLevelDeclaration(class)
   beginMetadataStar(class)
   endMetadataStar(0)
-  beginClassOrNamedMixinApplicationPrelude(class)
+  beginClassOrMixinOrNamedMixinApplicationPrelude(class)
     handleIdentifier(C, classOrMixinDeclaration)
     handleNoTypeVariables(extends)
     beginClassDeclaration(class, null, C)
@@ -33,8 +33,8 @@
       handleClassNoWithClause()
       handleClassOrMixinImplements(null, 0)
       handleClassHeader(class, class, null)
-      beginClassOrMixinBody(DeclarationKind.Class, {)
-      endClassOrMixinBody(DeclarationKind.Class, 0, {, })
+      beginClassOrMixinOrExtensionBody(DeclarationKind.Class, {)
+      endClassOrMixinOrExtensionBody(DeclarationKind.Class, 0, {, })
     endClassDeclaration(class, })
   endTopLevelDeclaration(extension)
   beginMetadataStar(extension)
@@ -46,11 +46,11 @@
       handleNoTypeArguments({)
       handleType(C, null)
       handleExtensionShowHide(null, 0, null, 0)
-      beginClassOrMixinBody(DeclarationKind.Extension, {)
+      beginClassOrMixinOrExtensionBody(DeclarationKind.Extension, {)
         beginMetadataStar(static)
         endMetadataStar(0)
         beginMember()
-          beginMethod(null, static, null, null, null, addChild)
+          beginMethod(DeclarationKind.Extension, null, static, null, null, null, addChild)
             handleNoType(static)
             handleIdentifier(addChild, methodDeclaration)
             handleNoTypeVariables(()
@@ -72,7 +72,7 @@
             endBlockFunctionBody(0, {, })
           endExtensionMethod(null, static, (, null, })
         endMember()
-      endClassOrMixinBody(DeclarationKind.Extension, 1, {, })
+      endClassOrMixinOrExtensionBody(DeclarationKind.Extension, 1, {, })
     endExtensionDeclaration(extension, null, on, null, null, })
   endTopLevelDeclaration()
 endCompilationUnit(3, )
diff --git a/pkg/front_end/parser_testcases/extensions/static_covariant.dart.intertwined.expect b/pkg/front_end/parser_testcases/extensions/static_covariant.dart.intertwined.expect
index 3e0aba8..a0f640c 100644
--- a/pkg/front_end/parser_testcases/extensions/static_covariant.dart.intertwined.expect
+++ b/pkg/front_end/parser_testcases/extensions/static_covariant.dart.intertwined.expect
@@ -9,7 +9,7 @@
     parseTopLevelKeywordDeclaration(, class, Instance of 'DirectiveContext')
       parseClassDeclarationModifiers(, class)
       parseClassOrNamedMixinApplication(null, class)
-        listener: beginClassOrNamedMixinApplicationPrelude(class)
+        listener: beginClassOrMixinOrNamedMixinApplicationPrelude(class)
         ensureIdentifier(class, classOrMixinDeclaration)
           listener: handleIdentifier(A, classOrMixinDeclaration)
         listener: handleNoTypeVariables({)
@@ -25,9 +25,9 @@
               listener: handleClassOrMixinImplements(null, 0)
             listener: handleClassHeader(class, class, null)
           parseClassOrMixinOrExtensionBody(A, DeclarationKind.Class, A)
-            listener: beginClassOrMixinBody(DeclarationKind.Class, {)
+            listener: beginClassOrMixinOrExtensionBody(DeclarationKind.Class, {)
             notEofOrValue(}, })
-            listener: endClassOrMixinBody(DeclarationKind.Class, 0, {, })
+            listener: endClassOrMixinOrExtensionBody(DeclarationKind.Class, 0, {, })
           listener: endClassDeclaration(class, })
   listener: endTopLevelDeclaration(class)
   parseTopLevelDeclarationImpl(}, Instance of 'DirectiveContext')
@@ -37,7 +37,7 @@
     parseTopLevelKeywordDeclaration(}, class, Instance of 'DirectiveContext')
       parseClassDeclarationModifiers(}, class)
       parseClassOrNamedMixinApplication(null, class)
-        listener: beginClassOrNamedMixinApplicationPrelude(class)
+        listener: beginClassOrMixinOrNamedMixinApplicationPrelude(class)
         ensureIdentifier(class, classOrMixinDeclaration)
           listener: handleIdentifier(C, classOrMixinDeclaration)
         listener: handleNoTypeVariables(extends)
@@ -56,9 +56,9 @@
               listener: handleClassOrMixinImplements(null, 0)
             listener: handleClassHeader(class, class, null)
           parseClassOrMixinOrExtensionBody(A, DeclarationKind.Class, C)
-            listener: beginClassOrMixinBody(DeclarationKind.Class, {)
+            listener: beginClassOrMixinOrExtensionBody(DeclarationKind.Class, {)
             notEofOrValue(}, })
-            listener: endClassOrMixinBody(DeclarationKind.Class, 0, {, })
+            listener: endClassOrMixinOrExtensionBody(DeclarationKind.Class, 0, {, })
           listener: endClassDeclaration(class, })
   listener: endTopLevelDeclaration(extension)
   parseTopLevelDeclarationImpl(}, Instance of 'DirectiveContext')
@@ -76,7 +76,7 @@
         listener: handleType(C, null)
         listener: handleExtensionShowHide(null, 0, null, 0)
         parseClassOrMixinOrExtensionBody(C, DeclarationKind.Extension, null)
-          listener: beginClassOrMixinBody(DeclarationKind.Extension, {)
+          listener: beginClassOrMixinOrExtensionBody(DeclarationKind.Extension, {)
           notEofOrValue(}, static)
           parseClassOrMixinOrExtensionMemberImpl({, DeclarationKind.Extension, null)
             parseMetadataStar({)
@@ -85,7 +85,7 @@
             listener: beginMember()
             isReservedKeyword(()
             parseMethod({, null, null, static, null, null, null, static, Instance of 'NoType', null, addChild, DeclarationKind.Extension, null, false)
-              listener: beginMethod(null, static, null, null, null, addChild)
+              listener: beginMethod(DeclarationKind.Extension, null, static, null, null, null, addChild)
               listener: handleNoType(static)
               ensureIdentifierPotentiallyRecovered(static, methodDeclaration, false)
                 listener: handleIdentifier(addChild, methodDeclaration)
@@ -123,7 +123,7 @@
               listener: endExtensionMethod(null, static, (, null, })
             listener: endMember()
           notEofOrValue(}, })
-          listener: endClassOrMixinBody(DeclarationKind.Extension, 1, {, })
+          listener: endClassOrMixinOrExtensionBody(DeclarationKind.Extension, 1, {, })
         listener: endExtensionDeclaration(extension, null, on, null, null, })
   listener: endTopLevelDeclaration()
   reportAllErrorTokens(class)
diff --git a/pkg/front_end/parser_testcases/general/ambiguous_builder_01.dart.expect b/pkg/front_end/parser_testcases/general/ambiguous_builder_01.dart.expect
index f96c13a..ad7134a 100644
--- a/pkg/front_end/parser_testcases/general/ambiguous_builder_01.dart.expect
+++ b/pkg/front_end/parser_testcases/general/ambiguous_builder_01.dart.expect
@@ -57,7 +57,7 @@
   beginMetadataStar(y)
   endMetadataStar(0)
   beginTopLevelMember(y)
-    beginFields(.)
+    beginFields(DeclarationKind.TopLevel, null, null, null, null, null, null, .)
       handleRecoverableError(MissingConstFinalVarOrType, y, y)
       handleNoType(.)
       handleIdentifier(y, topLevelVariableDeclaration)
@@ -90,7 +90,7 @@
   beginMetadataStar(z)
   endMetadataStar(0)
   beginTopLevelMember(z)
-    beginFields(.)
+    beginFields(DeclarationKind.TopLevel, null, null, null, null, null, null, .)
       handleRecoverableError(MissingConstFinalVarOrType, z, z)
       handleNoType(.)
       handleIdentifier(z, topLevelVariableDeclaration)
diff --git a/pkg/front_end/parser_testcases/general/ambiguous_builder_01.dart.intertwined.expect b/pkg/front_end/parser_testcases/general/ambiguous_builder_01.dart.intertwined.expect
index b75dd9a..029957f 100644
--- a/pkg/front_end/parser_testcases/general/ambiguous_builder_01.dart.intertwined.expect
+++ b/pkg/front_end/parser_testcases/general/ambiguous_builder_01.dart.intertwined.expect
@@ -55,7 +55,7 @@
       listener: beginTopLevelMember(y)
       isReservedKeyword(=)
       parseFields(., null, null, null, null, null, null, ., Instance of 'NoType', y, DeclarationKind.TopLevel, null, false)
-        listener: beginFields(.)
+        listener: beginFields(DeclarationKind.TopLevel, null, null, null, null, null, null, .)
         reportRecoverableError(y, MissingConstFinalVarOrType)
           listener: handleRecoverableError(MissingConstFinalVarOrType, y, y)
         listener: handleNoType(.)
@@ -125,7 +125,7 @@
       listener: beginTopLevelMember(z)
       isReservedKeyword(=)
       parseFields(., null, null, null, null, null, null, ., Instance of 'NoType', z, DeclarationKind.TopLevel, null, false)
-        listener: beginFields(.)
+        listener: beginFields(DeclarationKind.TopLevel, null, null, null, null, null, null, .)
         reportRecoverableError(z, MissingConstFinalVarOrType)
           listener: handleRecoverableError(MissingConstFinalVarOrType, z, z)
         listener: handleNoType(.)
diff --git a/pkg/front_end/parser_testcases/general/built_in_identifier_class_fields.dart.expect b/pkg/front_end/parser_testcases/general/built_in_identifier_class_fields.dart.expect
index 6dc22ff..eb5a5c5 100644
--- a/pkg/front_end/parser_testcases/general/built_in_identifier_class_fields.dart.expect
+++ b/pkg/front_end/parser_testcases/general/built_in_identifier_class_fields.dart.expect
@@ -1,7 +1,7 @@
 beginCompilationUnit(class)
   beginMetadataStar(class)
   endMetadataStar(0)
-  beginClassOrNamedMixinApplicationPrelude(class)
+  beginClassOrMixinOrNamedMixinApplicationPrelude(class)
     handleIdentifier(WrapperClass, classOrMixinDeclaration)
     handleNoTypeVariables({)
     beginClassDeclaration(class, null, WrapperClass)
@@ -10,11 +10,11 @@
       handleClassNoWithClause()
       handleClassOrMixinImplements(null, 0)
       handleClassHeader(class, class, null)
-      beginClassOrMixinBody(DeclarationKind.Class, {)
+      beginClassOrMixinOrExtensionBody(DeclarationKind.Class, {)
         beginMetadataStar(int)
         endMetadataStar(0)
         beginMember()
-          beginFields({)
+          beginFields(DeclarationKind.Class, null, null, null, null, null, null, {)
             handleIdentifier(int, typeReference)
             handleNoTypeArguments(abstract)
             handleType(int, null)
@@ -27,7 +27,7 @@
         beginMetadataStar(int)
         endMetadataStar(0)
         beginMember()
-          beginFields(;)
+          beginFields(DeclarationKind.Class, null, null, null, null, null, null, ;)
             handleIdentifier(int, typeReference)
             handleNoTypeArguments(as)
             handleType(int, null)
@@ -40,7 +40,7 @@
         beginMetadataStar(int)
         endMetadataStar(0)
         beginMember()
-          beginFields(;)
+          beginFields(DeclarationKind.Class, null, null, null, null, null, null, ;)
             handleIdentifier(int, typeReference)
             handleNoTypeArguments(covariant)
             handleType(int, null)
@@ -53,7 +53,7 @@
         beginMetadataStar(int)
         endMetadataStar(0)
         beginMember()
-          beginFields(;)
+          beginFields(DeclarationKind.Class, null, null, null, null, null, null, ;)
             handleIdentifier(int, typeReference)
             handleNoTypeArguments(deferred)
             handleType(int, null)
@@ -66,7 +66,7 @@
         beginMetadataStar(int)
         endMetadataStar(0)
         beginMember()
-          beginFields(;)
+          beginFields(DeclarationKind.Class, null, null, null, null, null, null, ;)
             handleIdentifier(int, typeReference)
             handleNoTypeArguments(dynamic)
             handleType(int, null)
@@ -79,7 +79,7 @@
         beginMetadataStar(int)
         endMetadataStar(0)
         beginMember()
-          beginFields(;)
+          beginFields(DeclarationKind.Class, null, null, null, null, null, null, ;)
             handleIdentifier(int, typeReference)
             handleNoTypeArguments(export)
             handleType(int, null)
@@ -92,7 +92,7 @@
         beginMetadataStar(int)
         endMetadataStar(0)
         beginMember()
-          beginFields(;)
+          beginFields(DeclarationKind.Class, null, null, null, null, null, null, ;)
             handleIdentifier(int, typeReference)
             handleNoTypeArguments(external)
             handleType(int, null)
@@ -105,7 +105,7 @@
         beginMetadataStar(int)
         endMetadataStar(0)
         beginMember()
-          beginFields(;)
+          beginFields(DeclarationKind.Class, null, null, null, null, null, null, ;)
             handleIdentifier(int, typeReference)
             handleNoTypeArguments(factory)
             handleType(int, null)
@@ -118,7 +118,7 @@
         beginMetadataStar(int)
         endMetadataStar(0)
         beginMember()
-          beginFields(;)
+          beginFields(DeclarationKind.Class, null, null, null, null, null, null, ;)
             handleIdentifier(int, typeReference)
             handleNoTypeArguments(Function)
             handleType(int, null)
@@ -131,7 +131,7 @@
         beginMetadataStar(int)
         endMetadataStar(0)
         beginMember()
-          beginFields(;)
+          beginFields(DeclarationKind.Class, null, null, null, null, null, null, ;)
             handleIdentifier(int, typeReference)
             handleNoTypeArguments(get)
             handleType(int, null)
@@ -144,7 +144,7 @@
         beginMetadataStar(int)
         endMetadataStar(0)
         beginMember()
-          beginFields(;)
+          beginFields(DeclarationKind.Class, null, null, null, null, null, null, ;)
             handleIdentifier(int, typeReference)
             handleNoTypeArguments(implements)
             handleType(int, null)
@@ -157,7 +157,7 @@
         beginMetadataStar(int)
         endMetadataStar(0)
         beginMember()
-          beginFields(;)
+          beginFields(DeclarationKind.Class, null, null, null, null, null, null, ;)
             handleIdentifier(int, typeReference)
             handleNoTypeArguments(import)
             handleType(int, null)
@@ -170,7 +170,7 @@
         beginMetadataStar(int)
         endMetadataStar(0)
         beginMember()
-          beginFields(;)
+          beginFields(DeclarationKind.Class, null, null, null, null, null, null, ;)
             handleIdentifier(int, typeReference)
             handleNoTypeArguments(interface)
             handleType(int, null)
@@ -183,7 +183,7 @@
         beginMetadataStar(int)
         endMetadataStar(0)
         beginMember()
-          beginFields(;)
+          beginFields(DeclarationKind.Class, null, null, null, null, null, null, ;)
             handleIdentifier(int, typeReference)
             handleNoTypeArguments(library)
             handleType(int, null)
@@ -196,7 +196,7 @@
         beginMetadataStar(int)
         endMetadataStar(0)
         beginMember()
-          beginFields(;)
+          beginFields(DeclarationKind.Class, null, null, null, null, null, null, ;)
             handleIdentifier(int, typeReference)
             handleNoTypeArguments(operator)
             handleType(int, null)
@@ -209,7 +209,7 @@
         beginMetadataStar(int)
         endMetadataStar(0)
         beginMember()
-          beginFields(;)
+          beginFields(DeclarationKind.Class, null, null, null, null, null, null, ;)
             handleIdentifier(int, typeReference)
             handleNoTypeArguments(mixin)
             handleType(int, null)
@@ -222,7 +222,7 @@
         beginMetadataStar(int)
         endMetadataStar(0)
         beginMember()
-          beginFields(;)
+          beginFields(DeclarationKind.Class, null, null, null, null, null, null, ;)
             handleIdentifier(int, typeReference)
             handleNoTypeArguments(part)
             handleType(int, null)
@@ -235,7 +235,7 @@
         beginMetadataStar(int)
         endMetadataStar(0)
         beginMember()
-          beginFields(;)
+          beginFields(DeclarationKind.Class, null, null, null, null, null, null, ;)
             handleIdentifier(int, typeReference)
             handleNoTypeArguments(set)
             handleType(int, null)
@@ -248,7 +248,7 @@
         beginMetadataStar(int)
         endMetadataStar(0)
         beginMember()
-          beginFields(;)
+          beginFields(DeclarationKind.Class, null, null, null, null, null, null, ;)
             handleIdentifier(int, typeReference)
             handleNoTypeArguments(static)
             handleType(int, null)
@@ -261,7 +261,7 @@
         beginMetadataStar(int)
         endMetadataStar(0)
         beginMember()
-          beginFields(;)
+          beginFields(DeclarationKind.Class, null, null, null, null, null, null, ;)
             handleIdentifier(int, typeReference)
             handleNoTypeArguments(typedef)
             handleType(int, null)
@@ -271,7 +271,7 @@
             endFieldInitializer(=, ;)
           endClassFields(null, null, null, null, null, null, 1, int, ;)
         endMember()
-      endClassOrMixinBody(DeclarationKind.Class, 20, {, })
+      endClassOrMixinOrExtensionBody(DeclarationKind.Class, 20, {, })
     endClassDeclaration(class, })
   endTopLevelDeclaration()
 endCompilationUnit(1, )
diff --git a/pkg/front_end/parser_testcases/general/built_in_identifier_class_fields.dart.intertwined.expect b/pkg/front_end/parser_testcases/general/built_in_identifier_class_fields.dart.intertwined.expect
index de178ad..1b1c156 100644
--- a/pkg/front_end/parser_testcases/general/built_in_identifier_class_fields.dart.intertwined.expect
+++ b/pkg/front_end/parser_testcases/general/built_in_identifier_class_fields.dart.intertwined.expect
@@ -9,7 +9,7 @@
     parseTopLevelKeywordDeclaration(, class, Instance of 'DirectiveContext')
       parseClassDeclarationModifiers(, class)
       parseClassOrNamedMixinApplication(null, class)
-        listener: beginClassOrNamedMixinApplicationPrelude(class)
+        listener: beginClassOrMixinOrNamedMixinApplicationPrelude(class)
         ensureIdentifier(class, classOrMixinDeclaration)
           listener: handleIdentifier(WrapperClass, classOrMixinDeclaration)
         listener: handleNoTypeVariables({)
@@ -25,7 +25,7 @@
               listener: handleClassOrMixinImplements(null, 0)
             listener: handleClassHeader(class, class, null)
           parseClassOrMixinOrExtensionBody(WrapperClass, DeclarationKind.Class, WrapperClass)
-            listener: beginClassOrMixinBody(DeclarationKind.Class, {)
+            listener: beginClassOrMixinOrExtensionBody(DeclarationKind.Class, {)
             notEofOrValue(}, int)
             parseClassOrMixinOrExtensionMemberImpl({, DeclarationKind.Class, WrapperClass)
               parseMetadataStar({)
@@ -33,7 +33,7 @@
                 listener: endMetadataStar(0)
               listener: beginMember()
               parseFields({, null, null, null, null, null, null, {, Instance of 'SimpleType', abstract, DeclarationKind.Class, WrapperClass, false)
-                listener: beginFields({)
+                listener: beginFields(DeclarationKind.Class, null, null, null, null, null, null, {)
                 listener: handleIdentifier(int, typeReference)
                 listener: handleNoTypeArguments(abstract)
                 listener: handleType(int, null)
@@ -57,7 +57,7 @@
                 listener: endMetadataStar(0)
               listener: beginMember()
               parseFields(;, null, null, null, null, null, null, ;, Instance of 'SimpleType', as, DeclarationKind.Class, WrapperClass, false)
-                listener: beginFields(;)
+                listener: beginFields(DeclarationKind.Class, null, null, null, null, null, null, ;)
                 listener: handleIdentifier(int, typeReference)
                 listener: handleNoTypeArguments(as)
                 listener: handleType(int, null)
@@ -81,7 +81,7 @@
                 listener: endMetadataStar(0)
               listener: beginMember()
               parseFields(;, null, null, null, null, null, null, ;, Instance of 'SimpleType', covariant, DeclarationKind.Class, WrapperClass, false)
-                listener: beginFields(;)
+                listener: beginFields(DeclarationKind.Class, null, null, null, null, null, null, ;)
                 listener: handleIdentifier(int, typeReference)
                 listener: handleNoTypeArguments(covariant)
                 listener: handleType(int, null)
@@ -105,7 +105,7 @@
                 listener: endMetadataStar(0)
               listener: beginMember()
               parseFields(;, null, null, null, null, null, null, ;, Instance of 'SimpleType', deferred, DeclarationKind.Class, WrapperClass, false)
-                listener: beginFields(;)
+                listener: beginFields(DeclarationKind.Class, null, null, null, null, null, null, ;)
                 listener: handleIdentifier(int, typeReference)
                 listener: handleNoTypeArguments(deferred)
                 listener: handleType(int, null)
@@ -129,7 +129,7 @@
                 listener: endMetadataStar(0)
               listener: beginMember()
               parseFields(;, null, null, null, null, null, null, ;, Instance of 'SimpleType', dynamic, DeclarationKind.Class, WrapperClass, false)
-                listener: beginFields(;)
+                listener: beginFields(DeclarationKind.Class, null, null, null, null, null, null, ;)
                 listener: handleIdentifier(int, typeReference)
                 listener: handleNoTypeArguments(dynamic)
                 listener: handleType(int, null)
@@ -153,7 +153,7 @@
                 listener: endMetadataStar(0)
               listener: beginMember()
               parseFields(;, null, null, null, null, null, null, ;, Instance of 'SimpleType', export, DeclarationKind.Class, WrapperClass, false)
-                listener: beginFields(;)
+                listener: beginFields(DeclarationKind.Class, null, null, null, null, null, null, ;)
                 listener: handleIdentifier(int, typeReference)
                 listener: handleNoTypeArguments(export)
                 listener: handleType(int, null)
@@ -177,7 +177,7 @@
                 listener: endMetadataStar(0)
               listener: beginMember()
               parseFields(;, null, null, null, null, null, null, ;, Instance of 'SimpleType', external, DeclarationKind.Class, WrapperClass, false)
-                listener: beginFields(;)
+                listener: beginFields(DeclarationKind.Class, null, null, null, null, null, null, ;)
                 listener: handleIdentifier(int, typeReference)
                 listener: handleNoTypeArguments(external)
                 listener: handleType(int, null)
@@ -201,7 +201,7 @@
                 listener: endMetadataStar(0)
               listener: beginMember()
               parseFields(;, null, null, null, null, null, null, ;, Instance of 'SimpleType', factory, DeclarationKind.Class, WrapperClass, false)
-                listener: beginFields(;)
+                listener: beginFields(DeclarationKind.Class, null, null, null, null, null, null, ;)
                 listener: handleIdentifier(int, typeReference)
                 listener: handleNoTypeArguments(factory)
                 listener: handleType(int, null)
@@ -225,7 +225,7 @@
                 listener: endMetadataStar(0)
               listener: beginMember()
               parseFields(;, null, null, null, null, null, null, ;, Instance of 'SimpleType', Function, DeclarationKind.Class, WrapperClass, false)
-                listener: beginFields(;)
+                listener: beginFields(DeclarationKind.Class, null, null, null, null, null, null, ;)
                 listener: handleIdentifier(int, typeReference)
                 listener: handleNoTypeArguments(Function)
                 listener: handleType(int, null)
@@ -250,7 +250,7 @@
               listener: beginMember()
               isReservedKeyword(=)
               parseFields(;, null, null, null, null, null, null, ;, Instance of 'SimpleType', get, DeclarationKind.Class, WrapperClass, false)
-                listener: beginFields(;)
+                listener: beginFields(DeclarationKind.Class, null, null, null, null, null, null, ;)
                 listener: handleIdentifier(int, typeReference)
                 listener: handleNoTypeArguments(get)
                 listener: handleType(int, null)
@@ -274,7 +274,7 @@
                 listener: endMetadataStar(0)
               listener: beginMember()
               parseFields(;, null, null, null, null, null, null, ;, Instance of 'SimpleType', implements, DeclarationKind.Class, WrapperClass, false)
-                listener: beginFields(;)
+                listener: beginFields(DeclarationKind.Class, null, null, null, null, null, null, ;)
                 listener: handleIdentifier(int, typeReference)
                 listener: handleNoTypeArguments(implements)
                 listener: handleType(int, null)
@@ -298,7 +298,7 @@
                 listener: endMetadataStar(0)
               listener: beginMember()
               parseFields(;, null, null, null, null, null, null, ;, Instance of 'SimpleType', import, DeclarationKind.Class, WrapperClass, false)
-                listener: beginFields(;)
+                listener: beginFields(DeclarationKind.Class, null, null, null, null, null, null, ;)
                 listener: handleIdentifier(int, typeReference)
                 listener: handleNoTypeArguments(import)
                 listener: handleType(int, null)
@@ -322,7 +322,7 @@
                 listener: endMetadataStar(0)
               listener: beginMember()
               parseFields(;, null, null, null, null, null, null, ;, Instance of 'SimpleType', interface, DeclarationKind.Class, WrapperClass, false)
-                listener: beginFields(;)
+                listener: beginFields(DeclarationKind.Class, null, null, null, null, null, null, ;)
                 listener: handleIdentifier(int, typeReference)
                 listener: handleNoTypeArguments(interface)
                 listener: handleType(int, null)
@@ -346,7 +346,7 @@
                 listener: endMetadataStar(0)
               listener: beginMember()
               parseFields(;, null, null, null, null, null, null, ;, Instance of 'SimpleType', library, DeclarationKind.Class, WrapperClass, false)
-                listener: beginFields(;)
+                listener: beginFields(DeclarationKind.Class, null, null, null, null, null, null, ;)
                 listener: handleIdentifier(int, typeReference)
                 listener: handleNoTypeArguments(library)
                 listener: handleType(int, null)
@@ -371,7 +371,7 @@
               listener: beginMember()
               isUnaryMinus(=)
               parseFields(;, null, null, null, null, null, null, ;, Instance of 'SimpleType', operator, DeclarationKind.Class, WrapperClass, false)
-                listener: beginFields(;)
+                listener: beginFields(DeclarationKind.Class, null, null, null, null, null, null, ;)
                 listener: handleIdentifier(int, typeReference)
                 listener: handleNoTypeArguments(operator)
                 listener: handleType(int, null)
@@ -395,7 +395,7 @@
                 listener: endMetadataStar(0)
               listener: beginMember()
               parseFields(;, null, null, null, null, null, null, ;, Instance of 'SimpleType', mixin, DeclarationKind.Class, WrapperClass, false)
-                listener: beginFields(;)
+                listener: beginFields(DeclarationKind.Class, null, null, null, null, null, null, ;)
                 listener: handleIdentifier(int, typeReference)
                 listener: handleNoTypeArguments(mixin)
                 listener: handleType(int, null)
@@ -419,7 +419,7 @@
                 listener: endMetadataStar(0)
               listener: beginMember()
               parseFields(;, null, null, null, null, null, null, ;, Instance of 'SimpleType', part, DeclarationKind.Class, WrapperClass, false)
-                listener: beginFields(;)
+                listener: beginFields(DeclarationKind.Class, null, null, null, null, null, null, ;)
                 listener: handleIdentifier(int, typeReference)
                 listener: handleNoTypeArguments(part)
                 listener: handleType(int, null)
@@ -444,7 +444,7 @@
               listener: beginMember()
               isReservedKeyword(=)
               parseFields(;, null, null, null, null, null, null, ;, Instance of 'SimpleType', set, DeclarationKind.Class, WrapperClass, false)
-                listener: beginFields(;)
+                listener: beginFields(DeclarationKind.Class, null, null, null, null, null, null, ;)
                 listener: handleIdentifier(int, typeReference)
                 listener: handleNoTypeArguments(set)
                 listener: handleType(int, null)
@@ -468,7 +468,7 @@
                 listener: endMetadataStar(0)
               listener: beginMember()
               parseFields(;, null, null, null, null, null, null, ;, Instance of 'SimpleType', static, DeclarationKind.Class, WrapperClass, false)
-                listener: beginFields(;)
+                listener: beginFields(DeclarationKind.Class, null, null, null, null, null, null, ;)
                 listener: handleIdentifier(int, typeReference)
                 listener: handleNoTypeArguments(static)
                 listener: handleType(int, null)
@@ -492,7 +492,7 @@
                 listener: endMetadataStar(0)
               listener: beginMember()
               parseFields(;, null, null, null, null, null, null, ;, Instance of 'SimpleType', typedef, DeclarationKind.Class, WrapperClass, false)
-                listener: beginFields(;)
+                listener: beginFields(DeclarationKind.Class, null, null, null, null, null, null, ;)
                 listener: handleIdentifier(int, typeReference)
                 listener: handleNoTypeArguments(typedef)
                 listener: handleType(int, null)
@@ -510,7 +510,7 @@
                 listener: endClassFields(null, null, null, null, null, null, 1, int, ;)
               listener: endMember()
             notEofOrValue(}, })
-            listener: endClassOrMixinBody(DeclarationKind.Class, 20, {, })
+            listener: endClassOrMixinOrExtensionBody(DeclarationKind.Class, 20, {, })
           listener: endClassDeclaration(class, })
   listener: endTopLevelDeclaration()
   reportAllErrorTokens(class)
diff --git a/pkg/front_end/parser_testcases/general/built_in_identifier_class_methods.dart.expect b/pkg/front_end/parser_testcases/general/built_in_identifier_class_methods.dart.expect
index 64f045a..d1604a9 100644
--- a/pkg/front_end/parser_testcases/general/built_in_identifier_class_methods.dart.expect
+++ b/pkg/front_end/parser_testcases/general/built_in_identifier_class_methods.dart.expect
@@ -1,7 +1,7 @@
 beginCompilationUnit(class)
   beginMetadataStar(class)
   endMetadataStar(0)
-  beginClassOrNamedMixinApplicationPrelude(class)
+  beginClassOrMixinOrNamedMixinApplicationPrelude(class)
     handleIdentifier(WrapperClass, classOrMixinDeclaration)
     handleNoTypeVariables({)
     beginClassDeclaration(class, null, WrapperClass)
@@ -10,11 +10,11 @@
       handleClassNoWithClause()
       handleClassOrMixinImplements(null, 0)
       handleClassHeader(class, class, null)
-      beginClassOrMixinBody(DeclarationKind.Class, {)
+      beginClassOrMixinOrExtensionBody(DeclarationKind.Class, {)
         beginMetadataStar(int)
         endMetadataStar(0)
         beginMember()
-          beginMethod(null, null, null, null, null, abstract)
+          beginMethod(DeclarationKind.Class, null, null, null, null, null, abstract)
             handleIdentifier(int, typeReference)
             handleNoTypeArguments(abstract)
             handleType(int, null)
@@ -69,7 +69,7 @@
         beginMetadataStar(int)
         endMetadataStar(0)
         beginMember()
-          beginMethod(null, null, null, null, null, as)
+          beginMethod(DeclarationKind.Class, null, null, null, null, null, as)
             handleIdentifier(int, typeReference)
             handleNoTypeArguments(as)
             handleType(int, null)
@@ -124,7 +124,7 @@
         beginMetadataStar(int)
         endMetadataStar(0)
         beginMember()
-          beginMethod(null, null, null, null, null, covariant)
+          beginMethod(DeclarationKind.Class, null, null, null, null, null, covariant)
             handleIdentifier(int, typeReference)
             handleNoTypeArguments(covariant)
             handleType(int, null)
@@ -179,7 +179,7 @@
         beginMetadataStar(int)
         endMetadataStar(0)
         beginMember()
-          beginMethod(null, null, null, null, null, deferred)
+          beginMethod(DeclarationKind.Class, null, null, null, null, null, deferred)
             handleIdentifier(int, typeReference)
             handleNoTypeArguments(deferred)
             handleType(int, null)
@@ -234,7 +234,7 @@
         beginMetadataStar(int)
         endMetadataStar(0)
         beginMember()
-          beginMethod(null, null, null, null, null, dynamic)
+          beginMethod(DeclarationKind.Class, null, null, null, null, null, dynamic)
             handleIdentifier(int, typeReference)
             handleNoTypeArguments(dynamic)
             handleType(int, null)
@@ -289,7 +289,7 @@
         beginMetadataStar(int)
         endMetadataStar(0)
         beginMember()
-          beginMethod(null, null, null, null, null, export)
+          beginMethod(DeclarationKind.Class, null, null, null, null, null, export)
             handleIdentifier(int, typeReference)
             handleNoTypeArguments(export)
             handleType(int, null)
@@ -344,7 +344,7 @@
         beginMetadataStar(int)
         endMetadataStar(0)
         beginMember()
-          beginMethod(null, null, null, null, null, external)
+          beginMethod(DeclarationKind.Class, null, null, null, null, null, external)
             handleIdentifier(int, typeReference)
             handleNoTypeArguments(external)
             handleType(int, null)
@@ -399,7 +399,7 @@
         beginMetadataStar(int)
         endMetadataStar(0)
         beginMember()
-          beginMethod(null, null, null, null, null, factory)
+          beginMethod(DeclarationKind.Class, null, null, null, null, null, factory)
             handleIdentifier(int, typeReference)
             handleNoTypeArguments(factory)
             handleType(int, null)
@@ -454,7 +454,7 @@
         beginMetadataStar(int)
         endMetadataStar(0)
         beginMember()
-          beginMethod(null, null, null, null, null, Function)
+          beginMethod(DeclarationKind.Class, null, null, null, null, null, Function)
             handleIdentifier(int, typeReference)
             handleNoTypeArguments(Function)
             handleType(int, null)
@@ -509,7 +509,7 @@
         beginMetadataStar(int)
         endMetadataStar(0)
         beginMember()
-          beginMethod(null, null, null, null, null, get)
+          beginMethod(DeclarationKind.Class, null, null, null, null, null, get)
             handleIdentifier(int, typeReference)
             handleNoTypeArguments(get)
             handleType(int, null)
@@ -564,7 +564,7 @@
         beginMetadataStar(int)
         endMetadataStar(0)
         beginMember()
-          beginMethod(null, null, null, null, null, implements)
+          beginMethod(DeclarationKind.Class, null, null, null, null, null, implements)
             handleIdentifier(int, typeReference)
             handleNoTypeArguments(implements)
             handleType(int, null)
@@ -619,7 +619,7 @@
         beginMetadataStar(int)
         endMetadataStar(0)
         beginMember()
-          beginMethod(null, null, null, null, null, import)
+          beginMethod(DeclarationKind.Class, null, null, null, null, null, import)
             handleIdentifier(int, typeReference)
             handleNoTypeArguments(import)
             handleType(int, null)
@@ -674,7 +674,7 @@
         beginMetadataStar(int)
         endMetadataStar(0)
         beginMember()
-          beginMethod(null, null, null, null, null, interface)
+          beginMethod(DeclarationKind.Class, null, null, null, null, null, interface)
             handleIdentifier(int, typeReference)
             handleNoTypeArguments(interface)
             handleType(int, null)
@@ -729,7 +729,7 @@
         beginMetadataStar(int)
         endMetadataStar(0)
         beginMember()
-          beginMethod(null, null, null, null, null, library)
+          beginMethod(DeclarationKind.Class, null, null, null, null, null, library)
             handleIdentifier(int, typeReference)
             handleNoTypeArguments(library)
             handleType(int, null)
@@ -784,7 +784,7 @@
         beginMetadataStar(int)
         endMetadataStar(0)
         beginMember()
-          beginMethod(null, null, null, null, null, operator)
+          beginMethod(DeclarationKind.Class, null, null, null, null, null, operator)
             handleIdentifier(int, typeReference)
             handleNoTypeArguments(operator)
             handleType(int, null)
@@ -839,7 +839,7 @@
         beginMetadataStar(int)
         endMetadataStar(0)
         beginMember()
-          beginMethod(null, null, null, null, null, mixin)
+          beginMethod(DeclarationKind.Class, null, null, null, null, null, mixin)
             handleIdentifier(int, typeReference)
             handleNoTypeArguments(mixin)
             handleType(int, null)
@@ -894,7 +894,7 @@
         beginMetadataStar(int)
         endMetadataStar(0)
         beginMember()
-          beginMethod(null, null, null, null, null, part)
+          beginMethod(DeclarationKind.Class, null, null, null, null, null, part)
             handleIdentifier(int, typeReference)
             handleNoTypeArguments(part)
             handleType(int, null)
@@ -949,7 +949,7 @@
         beginMetadataStar(int)
         endMetadataStar(0)
         beginMember()
-          beginMethod(null, null, null, null, null, set)
+          beginMethod(DeclarationKind.Class, null, null, null, null, null, set)
             handleIdentifier(int, typeReference)
             handleNoTypeArguments(set)
             handleType(int, null)
@@ -1004,7 +1004,7 @@
         beginMetadataStar(int)
         endMetadataStar(0)
         beginMember()
-          beginMethod(null, null, null, null, null, static)
+          beginMethod(DeclarationKind.Class, null, null, null, null, null, static)
             handleIdentifier(int, typeReference)
             handleNoTypeArguments(static)
             handleType(int, null)
@@ -1059,7 +1059,7 @@
         beginMetadataStar(int)
         endMetadataStar(0)
         beginMember()
-          beginMethod(null, null, null, null, null, typedef)
+          beginMethod(DeclarationKind.Class, null, null, null, null, null, typedef)
             handleIdentifier(int, typeReference)
             handleNoTypeArguments(typedef)
             handleType(int, null)
@@ -1111,7 +1111,7 @@
             endBlockFunctionBody(2, {, })
           endClassMethod(null, int, (, null, })
         endMember()
-      endClassOrMixinBody(DeclarationKind.Class, 20, {, })
+      endClassOrMixinOrExtensionBody(DeclarationKind.Class, 20, {, })
     endClassDeclaration(class, })
   endTopLevelDeclaration()
 endCompilationUnit(1, )
diff --git a/pkg/front_end/parser_testcases/general/built_in_identifier_class_methods.dart.intertwined.expect b/pkg/front_end/parser_testcases/general/built_in_identifier_class_methods.dart.intertwined.expect
index af42a23..04a06f3 100644
--- a/pkg/front_end/parser_testcases/general/built_in_identifier_class_methods.dart.intertwined.expect
+++ b/pkg/front_end/parser_testcases/general/built_in_identifier_class_methods.dart.intertwined.expect
@@ -9,7 +9,7 @@
     parseTopLevelKeywordDeclaration(, class, Instance of 'DirectiveContext')
       parseClassDeclarationModifiers(, class)
       parseClassOrNamedMixinApplication(null, class)
-        listener: beginClassOrNamedMixinApplicationPrelude(class)
+        listener: beginClassOrMixinOrNamedMixinApplicationPrelude(class)
         ensureIdentifier(class, classOrMixinDeclaration)
           listener: handleIdentifier(WrapperClass, classOrMixinDeclaration)
         listener: handleNoTypeVariables({)
@@ -25,7 +25,7 @@
               listener: handleClassOrMixinImplements(null, 0)
             listener: handleClassHeader(class, class, null)
           parseClassOrMixinOrExtensionBody(WrapperClass, DeclarationKind.Class, WrapperClass)
-            listener: beginClassOrMixinBody(DeclarationKind.Class, {)
+            listener: beginClassOrMixinOrExtensionBody(DeclarationKind.Class, {)
             notEofOrValue(}, int)
             parseClassOrMixinOrExtensionMemberImpl({, DeclarationKind.Class, WrapperClass)
               parseMetadataStar({)
@@ -33,7 +33,7 @@
                 listener: endMetadataStar(0)
               listener: beginMember()
               parseMethod({, null, null, null, null, null, null, {, Instance of 'SimpleType', null, abstract, DeclarationKind.Class, WrapperClass, false)
-                listener: beginMethod(null, null, null, null, null, abstract)
+                listener: beginMethod(DeclarationKind.Class, null, null, null, null, null, abstract)
                 listener: handleIdentifier(int, typeReference)
                 listener: handleNoTypeArguments(abstract)
                 listener: handleType(int, null)
@@ -170,7 +170,7 @@
                 listener: endMetadataStar(0)
               listener: beginMember()
               parseMethod(}, null, null, null, null, null, null, }, Instance of 'SimpleType', null, as, DeclarationKind.Class, WrapperClass, false)
-                listener: beginMethod(null, null, null, null, null, as)
+                listener: beginMethod(DeclarationKind.Class, null, null, null, null, null, as)
                 listener: handleIdentifier(int, typeReference)
                 listener: handleNoTypeArguments(as)
                 listener: handleType(int, null)
@@ -307,7 +307,7 @@
                 listener: endMetadataStar(0)
               listener: beginMember()
               parseMethod(}, null, null, null, null, null, null, }, Instance of 'SimpleType', null, covariant, DeclarationKind.Class, WrapperClass, false)
-                listener: beginMethod(null, null, null, null, null, covariant)
+                listener: beginMethod(DeclarationKind.Class, null, null, null, null, null, covariant)
                 listener: handleIdentifier(int, typeReference)
                 listener: handleNoTypeArguments(covariant)
                 listener: handleType(int, null)
@@ -444,7 +444,7 @@
                 listener: endMetadataStar(0)
               listener: beginMember()
               parseMethod(}, null, null, null, null, null, null, }, Instance of 'SimpleType', null, deferred, DeclarationKind.Class, WrapperClass, false)
-                listener: beginMethod(null, null, null, null, null, deferred)
+                listener: beginMethod(DeclarationKind.Class, null, null, null, null, null, deferred)
                 listener: handleIdentifier(int, typeReference)
                 listener: handleNoTypeArguments(deferred)
                 listener: handleType(int, null)
@@ -581,7 +581,7 @@
                 listener: endMetadataStar(0)
               listener: beginMember()
               parseMethod(}, null, null, null, null, null, null, }, Instance of 'SimpleType', null, dynamic, DeclarationKind.Class, WrapperClass, false)
-                listener: beginMethod(null, null, null, null, null, dynamic)
+                listener: beginMethod(DeclarationKind.Class, null, null, null, null, null, dynamic)
                 listener: handleIdentifier(int, typeReference)
                 listener: handleNoTypeArguments(dynamic)
                 listener: handleType(int, null)
@@ -718,7 +718,7 @@
                 listener: endMetadataStar(0)
               listener: beginMember()
               parseMethod(}, null, null, null, null, null, null, }, Instance of 'SimpleType', null, export, DeclarationKind.Class, WrapperClass, false)
-                listener: beginMethod(null, null, null, null, null, export)
+                listener: beginMethod(DeclarationKind.Class, null, null, null, null, null, export)
                 listener: handleIdentifier(int, typeReference)
                 listener: handleNoTypeArguments(export)
                 listener: handleType(int, null)
@@ -855,7 +855,7 @@
                 listener: endMetadataStar(0)
               listener: beginMember()
               parseMethod(}, null, null, null, null, null, null, }, Instance of 'SimpleType', null, external, DeclarationKind.Class, WrapperClass, false)
-                listener: beginMethod(null, null, null, null, null, external)
+                listener: beginMethod(DeclarationKind.Class, null, null, null, null, null, external)
                 listener: handleIdentifier(int, typeReference)
                 listener: handleNoTypeArguments(external)
                 listener: handleType(int, null)
@@ -992,7 +992,7 @@
                 listener: endMetadataStar(0)
               listener: beginMember()
               parseMethod(}, null, null, null, null, null, null, }, Instance of 'SimpleType', null, factory, DeclarationKind.Class, WrapperClass, false)
-                listener: beginMethod(null, null, null, null, null, factory)
+                listener: beginMethod(DeclarationKind.Class, null, null, null, null, null, factory)
                 listener: handleIdentifier(int, typeReference)
                 listener: handleNoTypeArguments(factory)
                 listener: handleType(int, null)
@@ -1129,7 +1129,7 @@
                 listener: endMetadataStar(0)
               listener: beginMember()
               parseMethod(}, null, null, null, null, null, null, }, Instance of 'SimpleType', null, Function, DeclarationKind.Class, WrapperClass, false)
-                listener: beginMethod(null, null, null, null, null, Function)
+                listener: beginMethod(DeclarationKind.Class, null, null, null, null, null, Function)
                 listener: handleIdentifier(int, typeReference)
                 listener: handleNoTypeArguments(Function)
                 listener: handleType(int, null)
@@ -1267,7 +1267,7 @@
               listener: beginMember()
               isReservedKeyword(()
               parseMethod(}, null, null, null, null, null, null, }, Instance of 'SimpleType', null, get, DeclarationKind.Class, WrapperClass, false)
-                listener: beginMethod(null, null, null, null, null, get)
+                listener: beginMethod(DeclarationKind.Class, null, null, null, null, null, get)
                 listener: handleIdentifier(int, typeReference)
                 listener: handleNoTypeArguments(get)
                 listener: handleType(int, null)
@@ -1404,7 +1404,7 @@
                 listener: endMetadataStar(0)
               listener: beginMember()
               parseMethod(}, null, null, null, null, null, null, }, Instance of 'SimpleType', null, implements, DeclarationKind.Class, WrapperClass, false)
-                listener: beginMethod(null, null, null, null, null, implements)
+                listener: beginMethod(DeclarationKind.Class, null, null, null, null, null, implements)
                 listener: handleIdentifier(int, typeReference)
                 listener: handleNoTypeArguments(implements)
                 listener: handleType(int, null)
@@ -1541,7 +1541,7 @@
                 listener: endMetadataStar(0)
               listener: beginMember()
               parseMethod(}, null, null, null, null, null, null, }, Instance of 'SimpleType', null, import, DeclarationKind.Class, WrapperClass, false)
-                listener: beginMethod(null, null, null, null, null, import)
+                listener: beginMethod(DeclarationKind.Class, null, null, null, null, null, import)
                 listener: handleIdentifier(int, typeReference)
                 listener: handleNoTypeArguments(import)
                 listener: handleType(int, null)
@@ -1678,7 +1678,7 @@
                 listener: endMetadataStar(0)
               listener: beginMember()
               parseMethod(}, null, null, null, null, null, null, }, Instance of 'SimpleType', null, interface, DeclarationKind.Class, WrapperClass, false)
-                listener: beginMethod(null, null, null, null, null, interface)
+                listener: beginMethod(DeclarationKind.Class, null, null, null, null, null, interface)
                 listener: handleIdentifier(int, typeReference)
                 listener: handleNoTypeArguments(interface)
                 listener: handleType(int, null)
@@ -1815,7 +1815,7 @@
                 listener: endMetadataStar(0)
               listener: beginMember()
               parseMethod(}, null, null, null, null, null, null, }, Instance of 'SimpleType', null, library, DeclarationKind.Class, WrapperClass, false)
-                listener: beginMethod(null, null, null, null, null, library)
+                listener: beginMethod(DeclarationKind.Class, null, null, null, null, null, library)
                 listener: handleIdentifier(int, typeReference)
                 listener: handleNoTypeArguments(library)
                 listener: handleType(int, null)
@@ -1954,7 +1954,7 @@
               isUnaryMinus(()
               parseMethod(}, null, null, null, null, null, null, }, Instance of 'SimpleType', null, operator, DeclarationKind.Class, WrapperClass, false)
                 isUnaryMinus(()
-                listener: beginMethod(null, null, null, null, null, operator)
+                listener: beginMethod(DeclarationKind.Class, null, null, null, null, null, operator)
                 listener: handleIdentifier(int, typeReference)
                 listener: handleNoTypeArguments(operator)
                 listener: handleType(int, null)
@@ -2091,7 +2091,7 @@
                 listener: endMetadataStar(0)
               listener: beginMember()
               parseMethod(}, null, null, null, null, null, null, }, Instance of 'SimpleType', null, mixin, DeclarationKind.Class, WrapperClass, false)
-                listener: beginMethod(null, null, null, null, null, mixin)
+                listener: beginMethod(DeclarationKind.Class, null, null, null, null, null, mixin)
                 listener: handleIdentifier(int, typeReference)
                 listener: handleNoTypeArguments(mixin)
                 listener: handleType(int, null)
@@ -2228,7 +2228,7 @@
                 listener: endMetadataStar(0)
               listener: beginMember()
               parseMethod(}, null, null, null, null, null, null, }, Instance of 'SimpleType', null, part, DeclarationKind.Class, WrapperClass, false)
-                listener: beginMethod(null, null, null, null, null, part)
+                listener: beginMethod(DeclarationKind.Class, null, null, null, null, null, part)
                 listener: handleIdentifier(int, typeReference)
                 listener: handleNoTypeArguments(part)
                 listener: handleType(int, null)
@@ -2366,7 +2366,7 @@
               listener: beginMember()
               isReservedKeyword(()
               parseMethod(}, null, null, null, null, null, null, }, Instance of 'SimpleType', null, set, DeclarationKind.Class, WrapperClass, false)
-                listener: beginMethod(null, null, null, null, null, set)
+                listener: beginMethod(DeclarationKind.Class, null, null, null, null, null, set)
                 listener: handleIdentifier(int, typeReference)
                 listener: handleNoTypeArguments(set)
                 listener: handleType(int, null)
@@ -2503,7 +2503,7 @@
                 listener: endMetadataStar(0)
               listener: beginMember()
               parseMethod(}, null, null, null, null, null, null, }, Instance of 'SimpleType', null, static, DeclarationKind.Class, WrapperClass, false)
-                listener: beginMethod(null, null, null, null, null, static)
+                listener: beginMethod(DeclarationKind.Class, null, null, null, null, null, static)
                 listener: handleIdentifier(int, typeReference)
                 listener: handleNoTypeArguments(static)
                 listener: handleType(int, null)
@@ -2640,7 +2640,7 @@
                 listener: endMetadataStar(0)
               listener: beginMember()
               parseMethod(}, null, null, null, null, null, null, }, Instance of 'SimpleType', null, typedef, DeclarationKind.Class, WrapperClass, false)
-                listener: beginMethod(null, null, null, null, null, typedef)
+                listener: beginMethod(DeclarationKind.Class, null, null, null, null, null, typedef)
                 listener: handleIdentifier(int, typeReference)
                 listener: handleNoTypeArguments(typedef)
                 listener: handleType(int, null)
@@ -2771,7 +2771,7 @@
                 listener: endClassMethod(null, int, (, null, })
               listener: endMember()
             notEofOrValue(}, })
-            listener: endClassOrMixinBody(DeclarationKind.Class, 20, {, })
+            listener: endClassOrMixinOrExtensionBody(DeclarationKind.Class, 20, {, })
           listener: endClassDeclaration(class, })
   listener: endTopLevelDeclaration()
   reportAllErrorTokens(class)
diff --git a/pkg/front_end/parser_testcases/general/built_in_identifier_top_level_fields.dart.expect b/pkg/front_end/parser_testcases/general/built_in_identifier_top_level_fields.dart.expect
index ede19ca..85e6adb 100644
--- a/pkg/front_end/parser_testcases/general/built_in_identifier_top_level_fields.dart.expect
+++ b/pkg/front_end/parser_testcases/general/built_in_identifier_top_level_fields.dart.expect
@@ -2,7 +2,7 @@
   beginMetadataStar(int)
   endMetadataStar(0)
   beginTopLevelMember(int)
-    beginFields()
+    beginFields(DeclarationKind.TopLevel, null, null, null, null, null, null, )
       handleIdentifier(int, typeReference)
       handleNoTypeArguments(abstract)
       handleType(int, null)
@@ -15,7 +15,7 @@
   beginMetadataStar(int)
   endMetadataStar(0)
   beginTopLevelMember(int)
-    beginFields(;)
+    beginFields(DeclarationKind.TopLevel, null, null, null, null, null, null, ;)
       handleIdentifier(int, typeReference)
       handleNoTypeArguments(as)
       handleType(int, null)
@@ -28,7 +28,7 @@
   beginMetadataStar(int)
   endMetadataStar(0)
   beginTopLevelMember(int)
-    beginFields(;)
+    beginFields(DeclarationKind.TopLevel, null, null, null, null, null, null, ;)
       handleIdentifier(int, typeReference)
       handleNoTypeArguments(covariant)
       handleType(int, null)
@@ -41,7 +41,7 @@
   beginMetadataStar(int)
   endMetadataStar(0)
   beginTopLevelMember(int)
-    beginFields(;)
+    beginFields(DeclarationKind.TopLevel, null, null, null, null, null, null, ;)
       handleIdentifier(int, typeReference)
       handleNoTypeArguments(deferred)
       handleType(int, null)
@@ -54,7 +54,7 @@
   beginMetadataStar(int)
   endMetadataStar(0)
   beginTopLevelMember(int)
-    beginFields(;)
+    beginFields(DeclarationKind.TopLevel, null, null, null, null, null, null, ;)
       handleIdentifier(int, typeReference)
       handleNoTypeArguments(dynamic)
       handleType(int, null)
@@ -67,7 +67,7 @@
   beginMetadataStar(int)
   endMetadataStar(0)
   beginTopLevelMember(int)
-    beginFields(;)
+    beginFields(DeclarationKind.TopLevel, null, null, null, null, null, null, ;)
       handleIdentifier(int, typeReference)
       handleNoTypeArguments(export)
       handleType(int, null)
@@ -80,7 +80,7 @@
   beginMetadataStar(int)
   endMetadataStar(0)
   beginTopLevelMember(int)
-    beginFields(;)
+    beginFields(DeclarationKind.TopLevel, null, null, null, null, null, null, ;)
       handleIdentifier(int, typeReference)
       handleNoTypeArguments(external)
       handleType(int, null)
@@ -93,7 +93,7 @@
   beginMetadataStar(int)
   endMetadataStar(0)
   beginTopLevelMember(int)
-    beginFields(;)
+    beginFields(DeclarationKind.TopLevel, null, null, null, null, null, null, ;)
       handleIdentifier(int, typeReference)
       handleNoTypeArguments(factory)
       handleType(int, null)
@@ -106,7 +106,7 @@
   beginMetadataStar(int)
   endMetadataStar(0)
   beginTopLevelMember(int)
-    beginFields(;)
+    beginFields(DeclarationKind.TopLevel, null, null, null, null, null, null, ;)
       handleIdentifier(int, typeReference)
       handleNoTypeArguments(Function)
       handleType(int, null)
@@ -119,7 +119,7 @@
   beginMetadataStar(int)
   endMetadataStar(0)
   beginTopLevelMember(int)
-    beginFields(;)
+    beginFields(DeclarationKind.TopLevel, null, null, null, null, null, null, ;)
       handleIdentifier(int, typeReference)
       handleNoTypeArguments(get)
       handleType(int, null)
@@ -132,7 +132,7 @@
   beginMetadataStar(int)
   endMetadataStar(0)
   beginTopLevelMember(int)
-    beginFields(;)
+    beginFields(DeclarationKind.TopLevel, null, null, null, null, null, null, ;)
       handleIdentifier(int, typeReference)
       handleNoTypeArguments(implements)
       handleType(int, null)
@@ -145,7 +145,7 @@
   beginMetadataStar(int)
   endMetadataStar(0)
   beginTopLevelMember(int)
-    beginFields(;)
+    beginFields(DeclarationKind.TopLevel, null, null, null, null, null, null, ;)
       handleIdentifier(int, typeReference)
       handleNoTypeArguments(import)
       handleType(int, null)
@@ -158,7 +158,7 @@
   beginMetadataStar(int)
   endMetadataStar(0)
   beginTopLevelMember(int)
-    beginFields(;)
+    beginFields(DeclarationKind.TopLevel, null, null, null, null, null, null, ;)
       handleIdentifier(int, typeReference)
       handleNoTypeArguments(interface)
       handleType(int, null)
@@ -171,7 +171,7 @@
   beginMetadataStar(int)
   endMetadataStar(0)
   beginTopLevelMember(int)
-    beginFields(;)
+    beginFields(DeclarationKind.TopLevel, null, null, null, null, null, null, ;)
       handleIdentifier(int, typeReference)
       handleNoTypeArguments(library)
       handleType(int, null)
@@ -184,7 +184,7 @@
   beginMetadataStar(int)
   endMetadataStar(0)
   beginTopLevelMember(int)
-    beginFields(;)
+    beginFields(DeclarationKind.TopLevel, null, null, null, null, null, null, ;)
       handleIdentifier(int, typeReference)
       handleNoTypeArguments(operator)
       handleType(int, null)
@@ -197,7 +197,7 @@
   beginMetadataStar(int)
   endMetadataStar(0)
   beginTopLevelMember(int)
-    beginFields(;)
+    beginFields(DeclarationKind.TopLevel, null, null, null, null, null, null, ;)
       handleIdentifier(int, typeReference)
       handleNoTypeArguments(mixin)
       handleType(int, null)
@@ -210,7 +210,7 @@
   beginMetadataStar(int)
   endMetadataStar(0)
   beginTopLevelMember(int)
-    beginFields(;)
+    beginFields(DeclarationKind.TopLevel, null, null, null, null, null, null, ;)
       handleIdentifier(int, typeReference)
       handleNoTypeArguments(part)
       handleType(int, null)
@@ -223,7 +223,7 @@
   beginMetadataStar(int)
   endMetadataStar(0)
   beginTopLevelMember(int)
-    beginFields(;)
+    beginFields(DeclarationKind.TopLevel, null, null, null, null, null, null, ;)
       handleIdentifier(int, typeReference)
       handleNoTypeArguments(set)
       handleType(int, null)
@@ -236,7 +236,7 @@
   beginMetadataStar(int)
   endMetadataStar(0)
   beginTopLevelMember(int)
-    beginFields(;)
+    beginFields(DeclarationKind.TopLevel, null, null, null, null, null, null, ;)
       handleIdentifier(int, typeReference)
       handleNoTypeArguments(static)
       handleType(int, null)
@@ -249,7 +249,7 @@
   beginMetadataStar(int)
   endMetadataStar(0)
   beginTopLevelMember(int)
-    beginFields(;)
+    beginFields(DeclarationKind.TopLevel, null, null, null, null, null, null, ;)
       handleIdentifier(int, typeReference)
       handleNoTypeArguments(typedef)
       handleType(int, null)
diff --git a/pkg/front_end/parser_testcases/general/built_in_identifier_top_level_fields.dart.intertwined.expect b/pkg/front_end/parser_testcases/general/built_in_identifier_top_level_fields.dart.intertwined.expect
index 21b408a..8ecab82 100644
--- a/pkg/front_end/parser_testcases/general/built_in_identifier_top_level_fields.dart.intertwined.expect
+++ b/pkg/front_end/parser_testcases/general/built_in_identifier_top_level_fields.dart.intertwined.expect
@@ -9,7 +9,7 @@
     parseTopLevelMemberImpl()
       listener: beginTopLevelMember(int)
       parseFields(, null, null, null, null, null, null, , Instance of 'SimpleType', abstract, DeclarationKind.TopLevel, null, false)
-        listener: beginFields()
+        listener: beginFields(DeclarationKind.TopLevel, null, null, null, null, null, null, )
         listener: handleIdentifier(int, typeReference)
         listener: handleNoTypeArguments(abstract)
         listener: handleType(int, null)
@@ -33,7 +33,7 @@
     parseTopLevelMemberImpl(;)
       listener: beginTopLevelMember(int)
       parseFields(;, null, null, null, null, null, null, ;, Instance of 'SimpleType', as, DeclarationKind.TopLevel, null, false)
-        listener: beginFields(;)
+        listener: beginFields(DeclarationKind.TopLevel, null, null, null, null, null, null, ;)
         listener: handleIdentifier(int, typeReference)
         listener: handleNoTypeArguments(as)
         listener: handleType(int, null)
@@ -57,7 +57,7 @@
     parseTopLevelMemberImpl(;)
       listener: beginTopLevelMember(int)
       parseFields(;, null, null, null, null, null, null, ;, Instance of 'SimpleType', covariant, DeclarationKind.TopLevel, null, false)
-        listener: beginFields(;)
+        listener: beginFields(DeclarationKind.TopLevel, null, null, null, null, null, null, ;)
         listener: handleIdentifier(int, typeReference)
         listener: handleNoTypeArguments(covariant)
         listener: handleType(int, null)
@@ -81,7 +81,7 @@
     parseTopLevelMemberImpl(;)
       listener: beginTopLevelMember(int)
       parseFields(;, null, null, null, null, null, null, ;, Instance of 'SimpleType', deferred, DeclarationKind.TopLevel, null, false)
-        listener: beginFields(;)
+        listener: beginFields(DeclarationKind.TopLevel, null, null, null, null, null, null, ;)
         listener: handleIdentifier(int, typeReference)
         listener: handleNoTypeArguments(deferred)
         listener: handleType(int, null)
@@ -105,7 +105,7 @@
     parseTopLevelMemberImpl(;)
       listener: beginTopLevelMember(int)
       parseFields(;, null, null, null, null, null, null, ;, Instance of 'SimpleType', dynamic, DeclarationKind.TopLevel, null, false)
-        listener: beginFields(;)
+        listener: beginFields(DeclarationKind.TopLevel, null, null, null, null, null, null, ;)
         listener: handleIdentifier(int, typeReference)
         listener: handleNoTypeArguments(dynamic)
         listener: handleType(int, null)
@@ -129,7 +129,7 @@
     parseTopLevelMemberImpl(;)
       listener: beginTopLevelMember(int)
       parseFields(;, null, null, null, null, null, null, ;, Instance of 'SimpleType', export, DeclarationKind.TopLevel, null, false)
-        listener: beginFields(;)
+        listener: beginFields(DeclarationKind.TopLevel, null, null, null, null, null, null, ;)
         listener: handleIdentifier(int, typeReference)
         listener: handleNoTypeArguments(export)
         listener: handleType(int, null)
@@ -153,7 +153,7 @@
     parseTopLevelMemberImpl(;)
       listener: beginTopLevelMember(int)
       parseFields(;, null, null, null, null, null, null, ;, Instance of 'SimpleType', external, DeclarationKind.TopLevel, null, false)
-        listener: beginFields(;)
+        listener: beginFields(DeclarationKind.TopLevel, null, null, null, null, null, null, ;)
         listener: handleIdentifier(int, typeReference)
         listener: handleNoTypeArguments(external)
         listener: handleType(int, null)
@@ -177,7 +177,7 @@
     parseTopLevelMemberImpl(;)
       listener: beginTopLevelMember(int)
       parseFields(;, null, null, null, null, null, null, ;, Instance of 'SimpleType', factory, DeclarationKind.TopLevel, null, false)
-        listener: beginFields(;)
+        listener: beginFields(DeclarationKind.TopLevel, null, null, null, null, null, null, ;)
         listener: handleIdentifier(int, typeReference)
         listener: handleNoTypeArguments(factory)
         listener: handleType(int, null)
@@ -201,7 +201,7 @@
     parseTopLevelMemberImpl(;)
       listener: beginTopLevelMember(int)
       parseFields(;, null, null, null, null, null, null, ;, Instance of 'SimpleType', Function, DeclarationKind.TopLevel, null, false)
-        listener: beginFields(;)
+        listener: beginFields(DeclarationKind.TopLevel, null, null, null, null, null, null, ;)
         listener: handleIdentifier(int, typeReference)
         listener: handleNoTypeArguments(Function)
         listener: handleType(int, null)
@@ -225,7 +225,7 @@
     parseTopLevelMemberImpl(;)
       listener: beginTopLevelMember(int)
       parseFields(;, null, null, null, null, null, null, ;, Instance of 'SimpleType', get, DeclarationKind.TopLevel, null, false)
-        listener: beginFields(;)
+        listener: beginFields(DeclarationKind.TopLevel, null, null, null, null, null, null, ;)
         listener: handleIdentifier(int, typeReference)
         listener: handleNoTypeArguments(get)
         listener: handleType(int, null)
@@ -249,7 +249,7 @@
     parseTopLevelMemberImpl(;)
       listener: beginTopLevelMember(int)
       parseFields(;, null, null, null, null, null, null, ;, Instance of 'SimpleType', implements, DeclarationKind.TopLevel, null, false)
-        listener: beginFields(;)
+        listener: beginFields(DeclarationKind.TopLevel, null, null, null, null, null, null, ;)
         listener: handleIdentifier(int, typeReference)
         listener: handleNoTypeArguments(implements)
         listener: handleType(int, null)
@@ -273,7 +273,7 @@
     parseTopLevelMemberImpl(;)
       listener: beginTopLevelMember(int)
       parseFields(;, null, null, null, null, null, null, ;, Instance of 'SimpleType', import, DeclarationKind.TopLevel, null, false)
-        listener: beginFields(;)
+        listener: beginFields(DeclarationKind.TopLevel, null, null, null, null, null, null, ;)
         listener: handleIdentifier(int, typeReference)
         listener: handleNoTypeArguments(import)
         listener: handleType(int, null)
@@ -297,7 +297,7 @@
     parseTopLevelMemberImpl(;)
       listener: beginTopLevelMember(int)
       parseFields(;, null, null, null, null, null, null, ;, Instance of 'SimpleType', interface, DeclarationKind.TopLevel, null, false)
-        listener: beginFields(;)
+        listener: beginFields(DeclarationKind.TopLevel, null, null, null, null, null, null, ;)
         listener: handleIdentifier(int, typeReference)
         listener: handleNoTypeArguments(interface)
         listener: handleType(int, null)
@@ -321,7 +321,7 @@
     parseTopLevelMemberImpl(;)
       listener: beginTopLevelMember(int)
       parseFields(;, null, null, null, null, null, null, ;, Instance of 'SimpleType', library, DeclarationKind.TopLevel, null, false)
-        listener: beginFields(;)
+        listener: beginFields(DeclarationKind.TopLevel, null, null, null, null, null, null, ;)
         listener: handleIdentifier(int, typeReference)
         listener: handleNoTypeArguments(library)
         listener: handleType(int, null)
@@ -345,7 +345,7 @@
     parseTopLevelMemberImpl(;)
       listener: beginTopLevelMember(int)
       parseFields(;, null, null, null, null, null, null, ;, Instance of 'SimpleType', operator, DeclarationKind.TopLevel, null, false)
-        listener: beginFields(;)
+        listener: beginFields(DeclarationKind.TopLevel, null, null, null, null, null, null, ;)
         listener: handleIdentifier(int, typeReference)
         listener: handleNoTypeArguments(operator)
         listener: handleType(int, null)
@@ -369,7 +369,7 @@
     parseTopLevelMemberImpl(;)
       listener: beginTopLevelMember(int)
       parseFields(;, null, null, null, null, null, null, ;, Instance of 'SimpleType', mixin, DeclarationKind.TopLevel, null, false)
-        listener: beginFields(;)
+        listener: beginFields(DeclarationKind.TopLevel, null, null, null, null, null, null, ;)
         listener: handleIdentifier(int, typeReference)
         listener: handleNoTypeArguments(mixin)
         listener: handleType(int, null)
@@ -393,7 +393,7 @@
     parseTopLevelMemberImpl(;)
       listener: beginTopLevelMember(int)
       parseFields(;, null, null, null, null, null, null, ;, Instance of 'SimpleType', part, DeclarationKind.TopLevel, null, false)
-        listener: beginFields(;)
+        listener: beginFields(DeclarationKind.TopLevel, null, null, null, null, null, null, ;)
         listener: handleIdentifier(int, typeReference)
         listener: handleNoTypeArguments(part)
         listener: handleType(int, null)
@@ -417,7 +417,7 @@
     parseTopLevelMemberImpl(;)
       listener: beginTopLevelMember(int)
       parseFields(;, null, null, null, null, null, null, ;, Instance of 'SimpleType', set, DeclarationKind.TopLevel, null, false)
-        listener: beginFields(;)
+        listener: beginFields(DeclarationKind.TopLevel, null, null, null, null, null, null, ;)
         listener: handleIdentifier(int, typeReference)
         listener: handleNoTypeArguments(set)
         listener: handleType(int, null)
@@ -441,7 +441,7 @@
     parseTopLevelMemberImpl(;)
       listener: beginTopLevelMember(int)
       parseFields(;, null, null, null, null, null, null, ;, Instance of 'SimpleType', static, DeclarationKind.TopLevel, null, false)
-        listener: beginFields(;)
+        listener: beginFields(DeclarationKind.TopLevel, null, null, null, null, null, null, ;)
         listener: handleIdentifier(int, typeReference)
         listener: handleNoTypeArguments(static)
         listener: handleType(int, null)
@@ -465,7 +465,7 @@
     parseTopLevelMemberImpl(;)
       listener: beginTopLevelMember(int)
       parseFields(;, null, null, null, null, null, null, ;, Instance of 'SimpleType', typedef, DeclarationKind.TopLevel, null, false)
-        listener: beginFields(;)
+        listener: beginFields(DeclarationKind.TopLevel, null, null, null, null, null, null, ;)
         listener: handleIdentifier(int, typeReference)
         listener: handleNoTypeArguments(typedef)
         listener: handleType(int, null)
diff --git a/pkg/front_end/parser_testcases/general/function_reference_following_token.dart.expect b/pkg/front_end/parser_testcases/general/function_reference_following_token.dart.expect
index eb3e565..2fca01a 100644
--- a/pkg/front_end/parser_testcases/general/function_reference_following_token.dart.expect
+++ b/pkg/front_end/parser_testcases/general/function_reference_following_token.dart.expect
@@ -84,7 +84,7 @@
   beginMetadataStar(var)
   endMetadataStar(0)
   beginTopLevelMember(var)
-    beginFields()
+    beginFields(DeclarationKind.TopLevel, null, null, null, null, null, var, )
       handleNoType(var)
       handleIdentifier(typeArgs_closeBrace, topLevelVariableDeclaration)
       beginFieldInitializer(=)
@@ -109,7 +109,7 @@
   beginMetadataStar(var)
   endMetadataStar(0)
   beginTopLevelMember(var)
-    beginFields(;)
+    beginFields(DeclarationKind.TopLevel, null, null, null, null, null, var, ;)
       handleNoType(var)
       handleIdentifier(typeArgs_closeBracket, topLevelVariableDeclaration)
       beginFieldInitializer(=)
@@ -134,7 +134,7 @@
   beginMetadataStar(var)
   endMetadataStar(0)
   beginTopLevelMember(var)
-    beginFields(;)
+    beginFields(DeclarationKind.TopLevel, null, null, null, null, null, var, ;)
       handleNoType(var)
       handleIdentifier(typeArgs_closeParen, topLevelVariableDeclaration)
       beginFieldInitializer(=)
@@ -162,7 +162,7 @@
   beginMetadataStar(var)
   endMetadataStar(0)
   beginTopLevelMember(var)
-    beginFields(;)
+    beginFields(DeclarationKind.TopLevel, null, null, null, null, null, var, ;)
       handleNoType(var)
       handleIdentifier(typeArgs_colon, topLevelVariableDeclaration)
       beginFieldInitializer(=)
@@ -189,7 +189,7 @@
   beginMetadataStar(var)
   endMetadataStar(0)
   beginTopLevelMember(var)
-    beginFields(;)
+    beginFields(DeclarationKind.TopLevel, null, null, null, null, null, var, ;)
       handleNoType(var)
       handleIdentifier(typeArgs_comma, topLevelVariableDeclaration)
       beginFieldInitializer(=)
@@ -215,7 +215,7 @@
   beginMetadataStar(var)
   endMetadataStar(0)
   beginTopLevelMember(var)
-    beginFields(;)
+    beginFields(DeclarationKind.TopLevel, null, null, null, null, null, var, ;)
       handleNoType(var)
       handleIdentifier(typeArgs_equals, topLevelVariableDeclaration)
       beginFieldInitializer(=)
@@ -241,7 +241,7 @@
   beginMetadataStar(var)
   endMetadataStar(0)
   beginTopLevelMember(var)
-    beginFields(;)
+    beginFields(DeclarationKind.TopLevel, null, null, null, null, null, var, ;)
       handleNoType(var)
       handleIdentifier(typeArgs_not_equals, topLevelVariableDeclaration)
       beginFieldInitializer(=)
@@ -267,7 +267,7 @@
   beginMetadataStar(var)
   endMetadataStar(0)
   beginTopLevelMember(var)
-    beginFields(;)
+    beginFields(DeclarationKind.TopLevel, null, null, null, null, null, var, ;)
       handleNoType(var)
       handleIdentifier(typeArgs_openParen, topLevelVariableDeclaration)
       beginFieldInitializer(=)
@@ -289,7 +289,7 @@
   beginMetadataStar(var)
   endMetadataStar(0)
   beginTopLevelMember(var)
-    beginFields(;)
+    beginFields(DeclarationKind.TopLevel, null, null, null, null, null, var, ;)
       handleNoType(var)
       handleIdentifier(typeArgs_period_methodInvocation, topLevelVariableDeclaration)
       beginFieldInitializer(=)
@@ -315,7 +315,7 @@
   beginMetadataStar(var)
   endMetadataStar(0)
   beginTopLevelMember(var)
-    beginFields(;)
+    beginFields(DeclarationKind.TopLevel, null, null, null, null, null, var, ;)
       handleNoType(var)
       handleIdentifier(typeArgs_period_methodInvocation_generic, topLevelVariableDeclaration)
       beginFieldInitializer(=)
@@ -348,7 +348,7 @@
   beginMetadataStar(var)
   endMetadataStar(0)
   beginTopLevelMember(var)
-    beginFields(;)
+    beginFields(DeclarationKind.TopLevel, null, null, null, null, null, var, ;)
       handleNoType(var)
       handleIdentifier(typeArgs_period_propertyAccess, topLevelVariableDeclaration)
       beginFieldInitializer(=)
@@ -376,7 +376,7 @@
   beginMetadataStar(var)
   endMetadataStar(0)
   beginTopLevelMember(var)
-    beginFields(;)
+    beginFields(DeclarationKind.TopLevel, null, null, null, null, null, var, ;)
       handleNoType(var)
       handleIdentifier(typeArgs_semicolon, topLevelVariableDeclaration)
       beginFieldInitializer(=)
@@ -399,7 +399,7 @@
   beginMetadataStar(var)
   endMetadataStar(0)
   beginTopLevelMember(var)
-    beginFields(;)
+    beginFields(DeclarationKind.TopLevel, null, null, null, null, null, var, ;)
       handleNoType(var)
       handleIdentifier(operators_ampersand, topLevelVariableDeclaration)
       beginFieldInitializer(=)
@@ -441,7 +441,7 @@
   beginMetadataStar(var)
   endMetadataStar(0)
   beginTopLevelMember(var)
-    beginFields(;)
+    beginFields(DeclarationKind.TopLevel, null, null, null, null, null, var, ;)
       handleNoType(var)
       handleIdentifier(operators_as, topLevelVariableDeclaration)
       beginFieldInitializer(=)
@@ -476,7 +476,7 @@
   beginMetadataStar(var)
   endMetadataStar(0)
   beginTopLevelMember(var)
-    beginFields(;)
+    beginFields(DeclarationKind.TopLevel, null, null, null, null, null, var, ;)
       handleNoType(var)
       handleIdentifier(operators_asterisk, topLevelVariableDeclaration)
       beginFieldInitializer(=)
@@ -518,7 +518,7 @@
   beginMetadataStar(var)
   endMetadataStar(0)
   beginTopLevelMember(var)
-    beginFields(;)
+    beginFields(DeclarationKind.TopLevel, null, null, null, null, null, var, ;)
       handleNoType(var)
       handleIdentifier(operators_bang_openBracket, topLevelVariableDeclaration)
       beginFieldInitializer(=)
@@ -556,7 +556,7 @@
   beginMetadataStar(var)
   endMetadataStar(0)
   beginTopLevelMember(var)
-    beginFields(;)
+    beginFields(DeclarationKind.TopLevel, null, null, null, null, null, var, ;)
       handleNoType(var)
       handleIdentifier(operators_bang_paren, topLevelVariableDeclaration)
       beginFieldInitializer(=)
@@ -593,7 +593,7 @@
   beginMetadataStar(var)
   endMetadataStar(0)
   beginTopLevelMember(var)
-    beginFields(;)
+    beginFields(DeclarationKind.TopLevel, null, null, null, null, null, var, ;)
       handleNoType(var)
       handleIdentifier(operators_bar, topLevelVariableDeclaration)
       beginFieldInitializer(=)
@@ -635,7 +635,7 @@
   beginMetadataStar(var)
   endMetadataStar(0)
   beginTopLevelMember(var)
-    beginFields(;)
+    beginFields(DeclarationKind.TopLevel, null, null, null, null, null, var, ;)
       handleNoType(var)
       handleIdentifier(operators_caret, topLevelVariableDeclaration)
       beginFieldInitializer(=)
@@ -677,7 +677,7 @@
   beginMetadataStar(var)
   endMetadataStar(0)
   beginTopLevelMember(var)
-    beginFields(;)
+    beginFields(DeclarationKind.TopLevel, null, null, null, null, null, var, ;)
       handleNoType(var)
       handleIdentifier(operators_is, topLevelVariableDeclaration)
       beginFieldInitializer(=)
@@ -719,7 +719,7 @@
   beginMetadataStar(var)
   endMetadataStar(0)
   beginTopLevelMember(var)
-    beginFields(;)
+    beginFields(DeclarationKind.TopLevel, null, null, null, null, null, var, ;)
       handleNoType(var)
       handleIdentifier(operators_lessThan, topLevelVariableDeclaration)
       beginFieldInitializer(=)
@@ -749,7 +749,7 @@
   beginMetadataStar(var)
   endMetadataStar(0)
   beginTopLevelMember(var)
-    beginFields(;)
+    beginFields(DeclarationKind.TopLevel, null, null, null, null, null, var, ;)
       handleNoType(var)
       handleIdentifier(operators_minus, topLevelVariableDeclaration)
       beginFieldInitializer(=)
@@ -785,7 +785,7 @@
   beginMetadataStar(var)
   endMetadataStar(0)
   beginTopLevelMember(var)
-    beginFields(;)
+    beginFields(DeclarationKind.TopLevel, null, null, null, null, null, var, ;)
       handleNoType(var)
       handleIdentifier(operators_openBracket, topLevelVariableDeclaration)
       beginFieldInitializer(=)
@@ -822,7 +822,7 @@
   beginMetadataStar(var)
   endMetadataStar(0)
   beginTopLevelMember(var)
-    beginFields(;)
+    beginFields(DeclarationKind.TopLevel, null, null, null, null, null, var, ;)
       handleNoType(var)
       handleIdentifier(operators_openBracket_error, topLevelVariableDeclaration)
       beginFieldInitializer(=)
@@ -866,7 +866,7 @@
   beginMetadataStar(var)
   endMetadataStar(0)
   beginTopLevelMember(var)
-    beginFields(;)
+    beginFields(DeclarationKind.TopLevel, null, null, null, null, null, var, ;)
       handleNoType(var)
       handleIdentifier(operators_openBracket_unambiguous, topLevelVariableDeclaration)
       beginFieldInitializer(=)
@@ -907,7 +907,7 @@
   beginMetadataStar(var)
   endMetadataStar(0)
   beginTopLevelMember(var)
-    beginFields(;)
+    beginFields(DeclarationKind.TopLevel, null, null, null, null, null, var, ;)
       handleNoType(var)
       handleIdentifier(operators_percent, topLevelVariableDeclaration)
       beginFieldInitializer(=)
@@ -949,7 +949,7 @@
   beginMetadataStar(var)
   endMetadataStar(0)
   beginTopLevelMember(var)
-    beginFields(;)
+    beginFields(DeclarationKind.TopLevel, null, null, null, null, null, var, ;)
       handleNoType(var)
       handleIdentifier(operators_period_period, topLevelVariableDeclaration)
       beginFieldInitializer(=)
@@ -993,7 +993,7 @@
   beginMetadataStar(var)
   endMetadataStar(0)
   beginTopLevelMember(var)
-    beginFields(;)
+    beginFields(DeclarationKind.TopLevel, null, null, null, null, null, var, ;)
       handleNoType(var)
       handleIdentifier(operators_plus, topLevelVariableDeclaration)
       beginFieldInitializer(=)
@@ -1035,7 +1035,7 @@
   beginMetadataStar(var)
   endMetadataStar(0)
   beginTopLevelMember(var)
-    beginFields(;)
+    beginFields(DeclarationKind.TopLevel, null, null, null, null, null, var, ;)
       handleNoType(var)
       handleIdentifier(operators_question, topLevelVariableDeclaration)
       beginFieldInitializer(=)
@@ -1076,7 +1076,7 @@
   beginMetadataStar(var)
   endMetadataStar(0)
   beginTopLevelMember(var)
-    beginFields(;)
+    beginFields(DeclarationKind.TopLevel, null, null, null, null, null, var, ;)
       handleNoType(var)
       handleIdentifier(operators_question_period_methodInvocation, topLevelVariableDeclaration)
       beginFieldInitializer(=)
@@ -1118,7 +1118,7 @@
   beginMetadataStar(var)
   endMetadataStar(0)
   beginTopLevelMember(var)
-    beginFields(;)
+    beginFields(DeclarationKind.TopLevel, null, null, null, null, null, var, ;)
       handleNoType(var)
       handleIdentifier(operators_question_period_methodInvocation_generic, topLevelVariableDeclaration)
       beginFieldInitializer(=)
@@ -1164,7 +1164,7 @@
   beginMetadataStar(var)
   endMetadataStar(0)
   beginTopLevelMember(var)
-    beginFields(;)
+    beginFields(DeclarationKind.TopLevel, null, null, null, null, null, var, ;)
       handleNoType(var)
       handleIdentifier(operators_question_period_period, topLevelVariableDeclaration)
       beginFieldInitializer(=)
@@ -1206,7 +1206,7 @@
   beginMetadataStar(var)
   endMetadataStar(0)
   beginTopLevelMember(var)
-    beginFields(;)
+    beginFields(DeclarationKind.TopLevel, null, null, null, null, null, var, ;)
       handleNoType(var)
       handleIdentifier(operators_question_period_propertyAccess, topLevelVariableDeclaration)
       beginFieldInitializer(=)
@@ -1247,7 +1247,7 @@
   beginMetadataStar(var)
   endMetadataStar(0)
   beginTopLevelMember(var)
-    beginFields(;)
+    beginFields(DeclarationKind.TopLevel, null, null, null, null, null, var, ;)
       handleNoType(var)
       handleIdentifier(operators_question_question, topLevelVariableDeclaration)
       beginFieldInitializer(=)
@@ -1289,7 +1289,7 @@
   beginMetadataStar(var)
   endMetadataStar(0)
   beginTopLevelMember(var)
-    beginFields(;)
+    beginFields(DeclarationKind.TopLevel, null, null, null, null, null, var, ;)
       handleNoType(var)
       handleIdentifier(operators_slash, topLevelVariableDeclaration)
       beginFieldInitializer(=)
@@ -1331,7 +1331,7 @@
   beginMetadataStar(var)
   endMetadataStar(0)
   beginTopLevelMember(var)
-    beginFields(;)
+    beginFields(DeclarationKind.TopLevel, null, null, null, null, null, var, ;)
       handleNoType(var)
       handleIdentifier(operators_tilde_slash, topLevelVariableDeclaration)
       beginFieldInitializer(=)
diff --git a/pkg/front_end/parser_testcases/general/function_reference_following_token.dart.intertwined.expect b/pkg/front_end/parser_testcases/general/function_reference_following_token.dart.intertwined.expect
index ffafde7..32d6f7d 100644
--- a/pkg/front_end/parser_testcases/general/function_reference_following_token.dart.intertwined.expect
+++ b/pkg/front_end/parser_testcases/general/function_reference_following_token.dart.intertwined.expect
@@ -9,7 +9,7 @@
     parseTopLevelMemberImpl()
       listener: beginTopLevelMember(var)
       parseFields(, null, null, null, null, null, var, var, Instance of 'NoType', typeArgs_closeBrace, DeclarationKind.TopLevel, null, false)
-        listener: beginFields()
+        listener: beginFields(DeclarationKind.TopLevel, null, null, null, null, null, var, )
         listener: handleNoType(var)
         ensureIdentifierPotentiallyRecovered(var, topLevelVariableDeclaration, false)
           listener: handleIdentifier(typeArgs_closeBrace, topLevelVariableDeclaration)
@@ -54,7 +54,7 @@
     parseTopLevelMemberImpl(;)
       listener: beginTopLevelMember(var)
       parseFields(;, null, null, null, null, null, var, var, Instance of 'NoType', typeArgs_closeBracket, DeclarationKind.TopLevel, null, false)
-        listener: beginFields(;)
+        listener: beginFields(DeclarationKind.TopLevel, null, null, null, null, null, var, ;)
         listener: handleNoType(var)
         ensureIdentifierPotentiallyRecovered(var, topLevelVariableDeclaration, false)
           listener: handleIdentifier(typeArgs_closeBracket, topLevelVariableDeclaration)
@@ -99,7 +99,7 @@
     parseTopLevelMemberImpl(;)
       listener: beginTopLevelMember(var)
       parseFields(;, null, null, null, null, null, var, var, Instance of 'NoType', typeArgs_closeParen, DeclarationKind.TopLevel, null, false)
-        listener: beginFields(;)
+        listener: beginFields(DeclarationKind.TopLevel, null, null, null, null, null, var, ;)
         listener: handleNoType(var)
         ensureIdentifierPotentiallyRecovered(var, topLevelVariableDeclaration, false)
           listener: handleIdentifier(typeArgs_closeParen, topLevelVariableDeclaration)
@@ -154,7 +154,7 @@
     parseTopLevelMemberImpl(;)
       listener: beginTopLevelMember(var)
       parseFields(;, null, null, null, null, null, var, var, Instance of 'NoType', typeArgs_colon, DeclarationKind.TopLevel, null, false)
-        listener: beginFields(;)
+        listener: beginFields(DeclarationKind.TopLevel, null, null, null, null, null, var, ;)
         listener: handleNoType(var)
         ensureIdentifierPotentiallyRecovered(var, topLevelVariableDeclaration, false)
           listener: handleIdentifier(typeArgs_colon, topLevelVariableDeclaration)
@@ -206,7 +206,7 @@
     parseTopLevelMemberImpl(;)
       listener: beginTopLevelMember(var)
       parseFields(;, null, null, null, null, null, var, var, Instance of 'NoType', typeArgs_comma, DeclarationKind.TopLevel, null, false)
-        listener: beginFields(;)
+        listener: beginFields(DeclarationKind.TopLevel, null, null, null, null, null, var, ;)
         listener: handleNoType(var)
         ensureIdentifierPotentiallyRecovered(var, topLevelVariableDeclaration, false)
           listener: handleIdentifier(typeArgs_comma, topLevelVariableDeclaration)
@@ -257,7 +257,7 @@
     parseTopLevelMemberImpl(;)
       listener: beginTopLevelMember(var)
       parseFields(;, null, null, null, null, null, var, var, Instance of 'NoType', typeArgs_equals, DeclarationKind.TopLevel, null, false)
-        listener: beginFields(;)
+        listener: beginFields(DeclarationKind.TopLevel, null, null, null, null, null, var, ;)
         listener: handleNoType(var)
         ensureIdentifierPotentiallyRecovered(var, topLevelVariableDeclaration, false)
           listener: handleIdentifier(typeArgs_equals, topLevelVariableDeclaration)
@@ -302,7 +302,7 @@
     parseTopLevelMemberImpl(;)
       listener: beginTopLevelMember(var)
       parseFields(;, null, null, null, null, null, var, var, Instance of 'NoType', typeArgs_not_equals, DeclarationKind.TopLevel, null, false)
-        listener: beginFields(;)
+        listener: beginFields(DeclarationKind.TopLevel, null, null, null, null, null, var, ;)
         listener: handleNoType(var)
         ensureIdentifierPotentiallyRecovered(var, topLevelVariableDeclaration, false)
           listener: handleIdentifier(typeArgs_not_equals, topLevelVariableDeclaration)
@@ -347,7 +347,7 @@
     parseTopLevelMemberImpl(;)
       listener: beginTopLevelMember(var)
       parseFields(;, null, null, null, null, null, var, var, Instance of 'NoType', typeArgs_openParen, DeclarationKind.TopLevel, null, false)
-        listener: beginFields(;)
+        listener: beginFields(DeclarationKind.TopLevel, null, null, null, null, null, var, ;)
         listener: handleNoType(var)
         ensureIdentifierPotentiallyRecovered(var, topLevelVariableDeclaration, false)
           listener: handleIdentifier(typeArgs_openParen, topLevelVariableDeclaration)
@@ -387,7 +387,7 @@
     parseTopLevelMemberImpl(;)
       listener: beginTopLevelMember(var)
       parseFields(;, null, null, null, null, null, var, var, Instance of 'NoType', typeArgs_period_methodInvocation, DeclarationKind.TopLevel, null, false)
-        listener: beginFields(;)
+        listener: beginFields(DeclarationKind.TopLevel, null, null, null, null, null, var, ;)
         listener: handleNoType(var)
         ensureIdentifierPotentiallyRecovered(var, topLevelVariableDeclaration, false)
           listener: handleIdentifier(typeArgs_period_methodInvocation, topLevelVariableDeclaration)
@@ -429,7 +429,7 @@
     parseTopLevelMemberImpl(;)
       listener: beginTopLevelMember(var)
       parseFields(;, null, null, null, null, null, var, var, Instance of 'NoType', typeArgs_period_methodInvocation_generic, DeclarationKind.TopLevel, null, false)
-        listener: beginFields(;)
+        listener: beginFields(DeclarationKind.TopLevel, null, null, null, null, null, var, ;)
         listener: handleNoType(var)
         ensureIdentifierPotentiallyRecovered(var, topLevelVariableDeclaration, false)
           listener: handleIdentifier(typeArgs_period_methodInvocation_generic, topLevelVariableDeclaration)
@@ -486,7 +486,7 @@
     parseTopLevelMemberImpl(;)
       listener: beginTopLevelMember(var)
       parseFields(;, null, null, null, null, null, var, var, Instance of 'NoType', typeArgs_period_propertyAccess, DeclarationKind.TopLevel, null, false)
-        listener: beginFields(;)
+        listener: beginFields(DeclarationKind.TopLevel, null, null, null, null, null, var, ;)
         listener: handleNoType(var)
         ensureIdentifierPotentiallyRecovered(var, topLevelVariableDeclaration, false)
           listener: handleIdentifier(typeArgs_period_propertyAccess, topLevelVariableDeclaration)
@@ -535,7 +535,7 @@
     parseTopLevelMemberImpl(;)
       listener: beginTopLevelMember(var)
       parseFields(;, null, null, null, null, null, var, var, Instance of 'NoType', typeArgs_semicolon, DeclarationKind.TopLevel, null, false)
-        listener: beginFields(;)
+        listener: beginFields(DeclarationKind.TopLevel, null, null, null, null, null, var, ;)
         listener: handleNoType(var)
         ensureIdentifierPotentiallyRecovered(var, topLevelVariableDeclaration, false)
           listener: handleIdentifier(typeArgs_semicolon, topLevelVariableDeclaration)
@@ -573,7 +573,7 @@
     parseTopLevelMemberImpl(;)
       listener: beginTopLevelMember(var)
       parseFields(;, null, null, null, null, null, var, var, Instance of 'NoType', operators_ampersand, DeclarationKind.TopLevel, null, false)
-        listener: beginFields(;)
+        listener: beginFields(DeclarationKind.TopLevel, null, null, null, null, null, var, ;)
         listener: handleNoType(var)
         ensureIdentifierPotentiallyRecovered(var, topLevelVariableDeclaration, false)
           listener: handleIdentifier(operators_ampersand, topLevelVariableDeclaration)
@@ -676,7 +676,7 @@
     parseTopLevelMemberImpl(;)
       listener: beginTopLevelMember(var)
       parseFields(;, null, null, null, null, null, var, var, Instance of 'NoType', operators_as, DeclarationKind.TopLevel, null, false)
-        listener: beginFields(;)
+        listener: beginFields(DeclarationKind.TopLevel, null, null, null, null, null, var, ;)
         listener: handleNoType(var)
         ensureIdentifierPotentiallyRecovered(var, topLevelVariableDeclaration, false)
           listener: handleIdentifier(operators_as, topLevelVariableDeclaration)
@@ -765,7 +765,7 @@
     parseTopLevelMemberImpl(;)
       listener: beginTopLevelMember(var)
       parseFields(;, null, null, null, null, null, var, var, Instance of 'NoType', operators_asterisk, DeclarationKind.TopLevel, null, false)
-        listener: beginFields(;)
+        listener: beginFields(DeclarationKind.TopLevel, null, null, null, null, null, var, ;)
         listener: handleNoType(var)
         ensureIdentifierPotentiallyRecovered(var, topLevelVariableDeclaration, false)
           listener: handleIdentifier(operators_asterisk, topLevelVariableDeclaration)
@@ -868,7 +868,7 @@
     parseTopLevelMemberImpl(;)
       listener: beginTopLevelMember(var)
       parseFields(;, null, null, null, null, null, var, var, Instance of 'NoType', operators_bang_openBracket, DeclarationKind.TopLevel, null, false)
-        listener: beginFields(;)
+        listener: beginFields(DeclarationKind.TopLevel, null, null, null, null, null, var, ;)
         listener: handleNoType(var)
         ensureIdentifierPotentiallyRecovered(var, topLevelVariableDeclaration, false)
           listener: handleIdentifier(operators_bang_openBracket, topLevelVariableDeclaration)
@@ -965,7 +965,7 @@
     parseTopLevelMemberImpl(;)
       listener: beginTopLevelMember(var)
       parseFields(;, null, null, null, null, null, var, var, Instance of 'NoType', operators_bang_paren, DeclarationKind.TopLevel, null, false)
-        listener: beginFields(;)
+        listener: beginFields(DeclarationKind.TopLevel, null, null, null, null, null, var, ;)
         listener: handleNoType(var)
         ensureIdentifierPotentiallyRecovered(var, topLevelVariableDeclaration, false)
           listener: handleIdentifier(operators_bang_paren, topLevelVariableDeclaration)
@@ -1065,7 +1065,7 @@
     parseTopLevelMemberImpl(;)
       listener: beginTopLevelMember(var)
       parseFields(;, null, null, null, null, null, var, var, Instance of 'NoType', operators_bar, DeclarationKind.TopLevel, null, false)
-        listener: beginFields(;)
+        listener: beginFields(DeclarationKind.TopLevel, null, null, null, null, null, var, ;)
         listener: handleNoType(var)
         ensureIdentifierPotentiallyRecovered(var, topLevelVariableDeclaration, false)
           listener: handleIdentifier(operators_bar, topLevelVariableDeclaration)
@@ -1168,7 +1168,7 @@
     parseTopLevelMemberImpl(;)
       listener: beginTopLevelMember(var)
       parseFields(;, null, null, null, null, null, var, var, Instance of 'NoType', operators_caret, DeclarationKind.TopLevel, null, false)
-        listener: beginFields(;)
+        listener: beginFields(DeclarationKind.TopLevel, null, null, null, null, null, var, ;)
         listener: handleNoType(var)
         ensureIdentifierPotentiallyRecovered(var, topLevelVariableDeclaration, false)
           listener: handleIdentifier(operators_caret, topLevelVariableDeclaration)
@@ -1271,7 +1271,7 @@
     parseTopLevelMemberImpl(;)
       listener: beginTopLevelMember(var)
       parseFields(;, null, null, null, null, null, var, var, Instance of 'NoType', operators_is, DeclarationKind.TopLevel, null, false)
-        listener: beginFields(;)
+        listener: beginFields(DeclarationKind.TopLevel, null, null, null, null, null, var, ;)
         listener: handleNoType(var)
         ensureIdentifierPotentiallyRecovered(var, topLevelVariableDeclaration, false)
           listener: handleIdentifier(operators_is, topLevelVariableDeclaration)
@@ -1370,7 +1370,7 @@
     parseTopLevelMemberImpl(;)
       listener: beginTopLevelMember(var)
       parseFields(;, null, null, null, null, null, var, var, Instance of 'NoType', operators_lessThan, DeclarationKind.TopLevel, null, false)
-        listener: beginFields(;)
+        listener: beginFields(DeclarationKind.TopLevel, null, null, null, null, null, var, ;)
         listener: handleNoType(var)
         ensureIdentifierPotentiallyRecovered(var, topLevelVariableDeclaration, false)
           listener: handleIdentifier(operators_lessThan, topLevelVariableDeclaration)
@@ -1434,7 +1434,7 @@
     parseTopLevelMemberImpl(;)
       listener: beginTopLevelMember(var)
       parseFields(;, null, null, null, null, null, var, var, Instance of 'NoType', operators_minus, DeclarationKind.TopLevel, null, false)
-        listener: beginFields(;)
+        listener: beginFields(DeclarationKind.TopLevel, null, null, null, null, null, var, ;)
         listener: handleNoType(var)
         ensureIdentifierPotentiallyRecovered(var, topLevelVariableDeclaration, false)
           listener: handleIdentifier(operators_minus, topLevelVariableDeclaration)
@@ -1524,7 +1524,7 @@
     parseTopLevelMemberImpl(;)
       listener: beginTopLevelMember(var)
       parseFields(;, null, null, null, null, null, var, var, Instance of 'NoType', operators_openBracket, DeclarationKind.TopLevel, null, false)
-        listener: beginFields(;)
+        listener: beginFields(DeclarationKind.TopLevel, null, null, null, null, null, var, ;)
         listener: handleNoType(var)
         ensureIdentifierPotentiallyRecovered(var, topLevelVariableDeclaration, false)
           listener: handleIdentifier(operators_openBracket, topLevelVariableDeclaration)
@@ -1618,7 +1618,7 @@
     parseTopLevelMemberImpl(;)
       listener: beginTopLevelMember(var)
       parseFields(;, null, null, null, null, null, var, var, Instance of 'NoType', operators_openBracket_error, DeclarationKind.TopLevel, null, false)
-        listener: beginFields(;)
+        listener: beginFields(DeclarationKind.TopLevel, null, null, null, null, null, var, ;)
         listener: handleNoType(var)
         ensureIdentifierPotentiallyRecovered(var, topLevelVariableDeclaration, false)
           listener: handleIdentifier(operators_openBracket_error, topLevelVariableDeclaration)
@@ -1728,7 +1728,7 @@
     parseTopLevelMemberImpl(;)
       listener: beginTopLevelMember(var)
       parseFields(;, null, null, null, null, null, var, var, Instance of 'NoType', operators_openBracket_unambiguous, DeclarationKind.TopLevel, null, false)
-        listener: beginFields(;)
+        listener: beginFields(DeclarationKind.TopLevel, null, null, null, null, null, var, ;)
         listener: handleNoType(var)
         ensureIdentifierPotentiallyRecovered(var, topLevelVariableDeclaration, false)
           listener: handleIdentifier(operators_openBracket_unambiguous, topLevelVariableDeclaration)
@@ -1835,7 +1835,7 @@
     parseTopLevelMemberImpl(;)
       listener: beginTopLevelMember(var)
       parseFields(;, null, null, null, null, null, var, var, Instance of 'NoType', operators_percent, DeclarationKind.TopLevel, null, false)
-        listener: beginFields(;)
+        listener: beginFields(DeclarationKind.TopLevel, null, null, null, null, null, var, ;)
         listener: handleNoType(var)
         ensureIdentifierPotentiallyRecovered(var, topLevelVariableDeclaration, false)
           listener: handleIdentifier(operators_percent, topLevelVariableDeclaration)
@@ -1938,7 +1938,7 @@
     parseTopLevelMemberImpl(;)
       listener: beginTopLevelMember(var)
       parseFields(;, null, null, null, null, null, var, var, Instance of 'NoType', operators_period_period, DeclarationKind.TopLevel, null, false)
-        listener: beginFields(;)
+        listener: beginFields(DeclarationKind.TopLevel, null, null, null, null, null, var, ;)
         listener: handleNoType(var)
         ensureIdentifierPotentiallyRecovered(var, topLevelVariableDeclaration, false)
           listener: handleIdentifier(operators_period_period, topLevelVariableDeclaration)
@@ -2043,7 +2043,7 @@
     parseTopLevelMemberImpl(;)
       listener: beginTopLevelMember(var)
       parseFields(;, null, null, null, null, null, var, var, Instance of 'NoType', operators_plus, DeclarationKind.TopLevel, null, false)
-        listener: beginFields(;)
+        listener: beginFields(DeclarationKind.TopLevel, null, null, null, null, null, var, ;)
         listener: handleNoType(var)
         ensureIdentifierPotentiallyRecovered(var, topLevelVariableDeclaration, false)
           listener: handleIdentifier(operators_plus, topLevelVariableDeclaration)
@@ -2148,7 +2148,7 @@
     parseTopLevelMemberImpl(;)
       listener: beginTopLevelMember(var)
       parseFields(;, null, null, null, null, null, var, var, Instance of 'NoType', operators_question, DeclarationKind.TopLevel, null, false)
-        listener: beginFields(;)
+        listener: beginFields(DeclarationKind.TopLevel, null, null, null, null, null, var, ;)
         listener: handleNoType(var)
         ensureIdentifierPotentiallyRecovered(var, topLevelVariableDeclaration, false)
           listener: handleIdentifier(operators_question, topLevelVariableDeclaration)
@@ -2254,7 +2254,7 @@
     parseTopLevelMemberImpl(;)
       listener: beginTopLevelMember(var)
       parseFields(;, null, null, null, null, null, var, var, Instance of 'NoType', operators_question_period_methodInvocation, DeclarationKind.TopLevel, null, false)
-        listener: beginFields(;)
+        listener: beginFields(DeclarationKind.TopLevel, null, null, null, null, null, var, ;)
         listener: handleNoType(var)
         ensureIdentifierPotentiallyRecovered(var, topLevelVariableDeclaration, false)
           listener: handleIdentifier(operators_question_period_methodInvocation, topLevelVariableDeclaration)
@@ -2358,7 +2358,7 @@
     parseTopLevelMemberImpl(;)
       listener: beginTopLevelMember(var)
       parseFields(;, null, null, null, null, null, var, var, Instance of 'NoType', operators_question_period_methodInvocation_generic, DeclarationKind.TopLevel, null, false)
-        listener: beginFields(;)
+        listener: beginFields(DeclarationKind.TopLevel, null, null, null, null, null, var, ;)
         listener: handleNoType(var)
         ensureIdentifierPotentiallyRecovered(var, topLevelVariableDeclaration, false)
           listener: handleIdentifier(operators_question_period_methodInvocation_generic, topLevelVariableDeclaration)
@@ -2466,7 +2466,7 @@
     parseTopLevelMemberImpl(;)
       listener: beginTopLevelMember(var)
       parseFields(;, null, null, null, null, null, var, var, Instance of 'NoType', operators_question_period_period, DeclarationKind.TopLevel, null, false)
-        listener: beginFields(;)
+        listener: beginFields(DeclarationKind.TopLevel, null, null, null, null, null, var, ;)
         listener: handleNoType(var)
         ensureIdentifierPotentiallyRecovered(var, topLevelVariableDeclaration, false)
           listener: handleIdentifier(operators_question_period_period, topLevelVariableDeclaration)
@@ -2576,7 +2576,7 @@
     parseTopLevelMemberImpl(;)
       listener: beginTopLevelMember(var)
       parseFields(;, null, null, null, null, null, var, var, Instance of 'NoType', operators_question_period_propertyAccess, DeclarationKind.TopLevel, null, false)
-        listener: beginFields(;)
+        listener: beginFields(DeclarationKind.TopLevel, null, null, null, null, null, var, ;)
         listener: handleNoType(var)
         ensureIdentifierPotentiallyRecovered(var, topLevelVariableDeclaration, false)
           listener: handleIdentifier(operators_question_period_propertyAccess, topLevelVariableDeclaration)
@@ -2676,7 +2676,7 @@
     parseTopLevelMemberImpl(;)
       listener: beginTopLevelMember(var)
       parseFields(;, null, null, null, null, null, var, var, Instance of 'NoType', operators_question_question, DeclarationKind.TopLevel, null, false)
-        listener: beginFields(;)
+        listener: beginFields(DeclarationKind.TopLevel, null, null, null, null, null, var, ;)
         listener: handleNoType(var)
         ensureIdentifierPotentiallyRecovered(var, topLevelVariableDeclaration, false)
           listener: handleIdentifier(operators_question_question, topLevelVariableDeclaration)
@@ -2779,7 +2779,7 @@
     parseTopLevelMemberImpl(;)
       listener: beginTopLevelMember(var)
       parseFields(;, null, null, null, null, null, var, var, Instance of 'NoType', operators_slash, DeclarationKind.TopLevel, null, false)
-        listener: beginFields(;)
+        listener: beginFields(DeclarationKind.TopLevel, null, null, null, null, null, var, ;)
         listener: handleNoType(var)
         ensureIdentifierPotentiallyRecovered(var, topLevelVariableDeclaration, false)
           listener: handleIdentifier(operators_slash, topLevelVariableDeclaration)
@@ -2882,7 +2882,7 @@
     parseTopLevelMemberImpl(;)
       listener: beginTopLevelMember(var)
       parseFields(;, null, null, null, null, null, var, var, Instance of 'NoType', operators_tilde_slash, DeclarationKind.TopLevel, null, false)
-        listener: beginFields(;)
+        listener: beginFields(DeclarationKind.TopLevel, null, null, null, null, null, var, ;)
         listener: handleNoType(var)
         ensureIdentifierPotentiallyRecovered(var, topLevelVariableDeclaration, false)
           listener: handleIdentifier(operators_tilde_slash, topLevelVariableDeclaration)
diff --git a/pkg/front_end/parser_testcases/general/function_reference_kinds.dart.expect b/pkg/front_end/parser_testcases/general/function_reference_kinds.dart.expect
index c3fdd54..63ed9e6 100644
--- a/pkg/front_end/parser_testcases/general/function_reference_kinds.dart.expect
+++ b/pkg/front_end/parser_testcases/general/function_reference_kinds.dart.expect
@@ -2,7 +2,7 @@
   beginMetadataStar(var)
   endMetadataStar(0)
   beginTopLevelMember(var)
-    beginFields()
+    beginFields(DeclarationKind.TopLevel, null, null, null, null, null, var, )
       handleNoType(var)
       handleIdentifier(simpleIdentifier, topLevelVariableDeclaration)
       beginFieldInitializer(=)
@@ -25,7 +25,7 @@
   beginMetadataStar(var)
   endMetadataStar(0)
   beginTopLevelMember(var)
-    beginFields(;)
+    beginFields(DeclarationKind.TopLevel, null, null, null, null, null, var, ;)
       handleNoType(var)
       handleIdentifier(method, topLevelVariableDeclaration)
       beginFieldInitializer(=)
@@ -54,7 +54,7 @@
   beginMetadataStar(var)
   endMetadataStar(0)
   beginTopLevelMember(var)
-    beginFields(;)
+    beginFields(DeclarationKind.TopLevel, null, null, null, null, null, var, ;)
       handleNoType(var)
       handleIdentifier(prefixedIdentifier, topLevelVariableDeclaration)
       beginFieldInitializer(=)
@@ -82,7 +82,7 @@
   beginMetadataStar(var)
   endMetadataStar(0)
   beginTopLevelMember(var)
-    beginFields(;)
+    beginFields(DeclarationKind.TopLevel, null, null, null, null, null, var, ;)
       handleNoType(var)
       handleIdentifier(three_identifiers, topLevelVariableDeclaration)
       beginFieldInitializer(=)
diff --git a/pkg/front_end/parser_testcases/general/function_reference_kinds.dart.intertwined.expect b/pkg/front_end/parser_testcases/general/function_reference_kinds.dart.intertwined.expect
index 93e6d37..7e231fe 100644
--- a/pkg/front_end/parser_testcases/general/function_reference_kinds.dart.intertwined.expect
+++ b/pkg/front_end/parser_testcases/general/function_reference_kinds.dart.intertwined.expect
@@ -9,7 +9,7 @@
     parseTopLevelMemberImpl()
       listener: beginTopLevelMember(var)
       parseFields(, null, null, null, null, null, var, var, Instance of 'NoType', simpleIdentifier, DeclarationKind.TopLevel, null, false)
-        listener: beginFields()
+        listener: beginFields(DeclarationKind.TopLevel, null, null, null, null, null, var, )
         listener: handleNoType(var)
         ensureIdentifierPotentiallyRecovered(var, topLevelVariableDeclaration, false)
           listener: handleIdentifier(simpleIdentifier, topLevelVariableDeclaration)
@@ -47,7 +47,7 @@
     parseTopLevelMemberImpl(;)
       listener: beginTopLevelMember(var)
       parseFields(;, null, null, null, null, null, var, var, Instance of 'NoType', method, DeclarationKind.TopLevel, null, false)
-        listener: beginFields(;)
+        listener: beginFields(DeclarationKind.TopLevel, null, null, null, null, null, var, ;)
         listener: handleNoType(var)
         ensureIdentifierPotentiallyRecovered(var, topLevelVariableDeclaration, false)
           listener: handleIdentifier(method, topLevelVariableDeclaration)
@@ -100,7 +100,7 @@
     parseTopLevelMemberImpl(;)
       listener: beginTopLevelMember(var)
       parseFields(;, null, null, null, null, null, var, var, Instance of 'NoType', prefixedIdentifier, DeclarationKind.TopLevel, null, false)
-        listener: beginFields(;)
+        listener: beginFields(DeclarationKind.TopLevel, null, null, null, null, null, var, ;)
         listener: handleNoType(var)
         ensureIdentifierPotentiallyRecovered(var, topLevelVariableDeclaration, false)
           listener: handleIdentifier(prefixedIdentifier, topLevelVariableDeclaration)
@@ -149,7 +149,7 @@
     parseTopLevelMemberImpl(;)
       listener: beginTopLevelMember(var)
       parseFields(;, null, null, null, null, null, var, var, Instance of 'NoType', three_identifiers, DeclarationKind.TopLevel, null, false)
-        listener: beginFields(;)
+        listener: beginFields(DeclarationKind.TopLevel, null, null, null, null, null, var, ;)
         listener: handleNoType(var)
         ensureIdentifierPotentiallyRecovered(var, topLevelVariableDeclaration, false)
           listener: handleIdentifier(three_identifiers, topLevelVariableDeclaration)
diff --git a/pkg/front_end/parser_testcases/general/generic_function_typedef.dart.expect b/pkg/front_end/parser_testcases/general/generic_function_typedef.dart.expect
index 7378081..3b9714d 100644
--- a/pkg/front_end/parser_testcases/general/generic_function_typedef.dart.expect
+++ b/pkg/front_end/parser_testcases/general/generic_function_typedef.dart.expect
@@ -2,7 +2,7 @@
   beginMetadataStar(typedef)
   endMetadataStar(0)
   beginUncategorizedTopLevelDeclaration(typedef)
-    beginFunctionTypeAlias(typedef)
+    beginTypedef(typedef)
       handleIdentifier(E1, typedefDeclaration)
       beginTypeVariables(<)
         beginMetadataStar(T)
@@ -19,12 +19,12 @@
         beginFormalParameters((, MemberKind.GeneralizedFunctionType)
         endFormalParameters(0, (, ), MemberKind.GeneralizedFunctionType)
       endFunctionType(Function, null)
-    endFunctionTypeAlias(typedef, =, ;)
+    endTypedef(typedef, =, ;)
   endTopLevelDeclaration(typedef)
   beginMetadataStar(typedef)
   endMetadataStar(0)
   beginUncategorizedTopLevelDeclaration(typedef)
-    beginFunctionTypeAlias(typedef)
+    beginTypedef(typedef)
       handleIdentifier(E2, typedefDeclaration)
       beginTypeVariables(<)
         beginMetadataStar(T)
@@ -43,12 +43,12 @@
         beginFormalParameters((, MemberKind.GeneralizedFunctionType)
         endFormalParameters(0, (, ), MemberKind.GeneralizedFunctionType)
       endFunctionType(Function, null)
-    endFunctionTypeAlias(typedef, =, ;)
+    endTypedef(typedef, =, ;)
   endTopLevelDeclaration(typedef)
   beginMetadataStar(typedef)
   endMetadataStar(0)
   beginUncategorizedTopLevelDeclaration(typedef)
-    beginFunctionTypeAlias(typedef)
+    beginTypedef(typedef)
       handleIdentifier(E3, typedefDeclaration)
       beginTypeVariables(<)
         beginMetadataStar(T)
@@ -71,12 +71,12 @@
         beginFormalParameters((, MemberKind.GeneralizedFunctionType)
         endFormalParameters(0, (, ), MemberKind.GeneralizedFunctionType)
       endFunctionType(Function, null)
-    endFunctionTypeAlias(typedef, =, ;)
+    endTypedef(typedef, =, ;)
   endTopLevelDeclaration(typedef)
   beginMetadataStar(typedef)
   endMetadataStar(0)
   beginUncategorizedTopLevelDeclaration(typedef)
-    beginFunctionTypeAlias(typedef)
+    beginTypedef(typedef)
       handleIdentifier(E4, typedefDeclaration)
       beginTypeVariables(<)
         beginMetadataStar(T)
@@ -103,12 +103,12 @@
         beginFormalParameters((, MemberKind.GeneralizedFunctionType)
         endFormalParameters(0, (, ), MemberKind.GeneralizedFunctionType)
       endFunctionType(Function, null)
-    endFunctionTypeAlias(typedef, =, ;)
+    endTypedef(typedef, =, ;)
   endTopLevelDeclaration(typedef)
   beginMetadataStar(typedef)
   endMetadataStar(0)
   beginUncategorizedTopLevelDeclaration(typedef)
-    beginFunctionTypeAlias(typedef)
+    beginTypedef(typedef)
       handleIdentifier(E5, typedefDeclaration)
       beginTypeVariables(<)
         beginMetadataStar(T)
@@ -135,12 +135,12 @@
         beginFormalParameters((, MemberKind.GeneralizedFunctionType)
         endFormalParameters(0, (, ), MemberKind.GeneralizedFunctionType)
       endFunctionType(Function, null)
-    endFunctionTypeAlias(typedef, =, ;)
+    endTypedef(typedef, =, ;)
   endTopLevelDeclaration(typedef)
   beginMetadataStar(typedef)
   endMetadataStar(0)
   beginUncategorizedTopLevelDeclaration(typedef)
-    beginFunctionTypeAlias(typedef)
+    beginTypedef(typedef)
       handleIdentifier(E6, typedefDeclaration)
       beginTypeVariables(<)
         beginMetadataStar(T)
@@ -167,12 +167,12 @@
         beginFormalParameters((, MemberKind.GeneralizedFunctionType)
         endFormalParameters(0, (, ), MemberKind.GeneralizedFunctionType)
       endFunctionType(Function, null)
-    endFunctionTypeAlias(typedef, =, ;)
+    endTypedef(typedef, =, ;)
   endTopLevelDeclaration(typedef)
   beginMetadataStar(typedef)
   endMetadataStar(0)
   beginUncategorizedTopLevelDeclaration(typedef)
-    beginFunctionTypeAlias(typedef)
+    beginTypedef(typedef)
       handleIdentifier(F1, typedefDeclaration)
       handleNoTypeVariables(=)
       beginFunctionType(void)
@@ -189,12 +189,12 @@
         beginFormalParameters((, MemberKind.GeneralizedFunctionType)
         endFormalParameters(0, (, ), MemberKind.GeneralizedFunctionType)
       endFunctionType(Function, null)
-    endFunctionTypeAlias(typedef, =, ;)
+    endTypedef(typedef, =, ;)
   endTopLevelDeclaration(typedef)
   beginMetadataStar(typedef)
   endMetadataStar(0)
   beginUncategorizedTopLevelDeclaration(typedef)
-    beginFunctionTypeAlias(typedef)
+    beginTypedef(typedef)
       handleIdentifier(F2, typedefDeclaration)
       handleNoTypeVariables(=)
       beginFunctionType(void)
@@ -213,12 +213,12 @@
         beginFormalParameters((, MemberKind.GeneralizedFunctionType)
         endFormalParameters(0, (, ), MemberKind.GeneralizedFunctionType)
       endFunctionType(Function, null)
-    endFunctionTypeAlias(typedef, =, ;)
+    endTypedef(typedef, =, ;)
   endTopLevelDeclaration(typedef)
   beginMetadataStar(typedef)
   endMetadataStar(0)
   beginUncategorizedTopLevelDeclaration(typedef)
-    beginFunctionTypeAlias(typedef)
+    beginTypedef(typedef)
       handleIdentifier(F3, typedefDeclaration)
       handleNoTypeVariables(=)
       beginFunctionType(void)
@@ -241,12 +241,12 @@
         beginFormalParameters((, MemberKind.GeneralizedFunctionType)
         endFormalParameters(0, (, ), MemberKind.GeneralizedFunctionType)
       endFunctionType(Function, null)
-    endFunctionTypeAlias(typedef, =, ;)
+    endTypedef(typedef, =, ;)
   endTopLevelDeclaration(typedef)
   beginMetadataStar(typedef)
   endMetadataStar(0)
   beginUncategorizedTopLevelDeclaration(typedef)
-    beginFunctionTypeAlias(typedef)
+    beginTypedef(typedef)
       handleIdentifier(F4, typedefDeclaration)
       handleNoTypeVariables(=)
       beginFunctionType(void)
@@ -273,12 +273,12 @@
         beginFormalParameters((, MemberKind.GeneralizedFunctionType)
         endFormalParameters(0, (, ), MemberKind.GeneralizedFunctionType)
       endFunctionType(Function, null)
-    endFunctionTypeAlias(typedef, =, ;)
+    endTypedef(typedef, =, ;)
   endTopLevelDeclaration(typedef)
   beginMetadataStar(typedef)
   endMetadataStar(0)
   beginUncategorizedTopLevelDeclaration(typedef)
-    beginFunctionTypeAlias(typedef)
+    beginTypedef(typedef)
       handleIdentifier(F5, typedefDeclaration)
       handleNoTypeVariables(=)
       beginFunctionType(void)
@@ -305,12 +305,12 @@
         beginFormalParameters((, MemberKind.GeneralizedFunctionType)
         endFormalParameters(0, (, ), MemberKind.GeneralizedFunctionType)
       endFunctionType(Function, null)
-    endFunctionTypeAlias(typedef, =, ;)
+    endTypedef(typedef, =, ;)
   endTopLevelDeclaration(typedef)
   beginMetadataStar(typedef)
   endMetadataStar(0)
   beginUncategorizedTopLevelDeclaration(typedef)
-    beginFunctionTypeAlias(typedef)
+    beginTypedef(typedef)
       handleIdentifier(F6, typedefDeclaration)
       handleNoTypeVariables(=)
       beginFunctionType(void)
@@ -337,12 +337,12 @@
         beginFormalParameters((, MemberKind.GeneralizedFunctionType)
         endFormalParameters(0, (, ), MemberKind.GeneralizedFunctionType)
       endFunctionType(Function, null)
-    endFunctionTypeAlias(typedef, =, ;)
+    endTypedef(typedef, =, ;)
   endTopLevelDeclaration(typedef)
   beginMetadataStar(typedef)
   endMetadataStar(0)
   beginUncategorizedTopLevelDeclaration(typedef)
-    beginFunctionTypeAlias(typedef)
+    beginTypedef(typedef)
       handleIdentifier(G1, typedefDeclaration)
       beginTypeVariables(<)
         beginMetadataStar(X)
@@ -369,12 +369,12 @@
         beginFormalParameters((, MemberKind.GeneralizedFunctionType)
         endFormalParameters(0, (, ), MemberKind.GeneralizedFunctionType)
       endFunctionType(Function, null)
-    endFunctionTypeAlias(typedef, =, ;)
+    endTypedef(typedef, =, ;)
   endTopLevelDeclaration(typedef)
   beginMetadataStar(typedef)
   endMetadataStar(0)
   beginUncategorizedTopLevelDeclaration(typedef)
-    beginFunctionTypeAlias(typedef)
+    beginTypedef(typedef)
       handleIdentifier(G2, typedefDeclaration)
       beginTypeVariables(<)
         beginMetadataStar(X)
@@ -403,12 +403,12 @@
         beginFormalParameters((, MemberKind.GeneralizedFunctionType)
         endFormalParameters(0, (, ), MemberKind.GeneralizedFunctionType)
       endFunctionType(Function, null)
-    endFunctionTypeAlias(typedef, =, ;)
+    endTypedef(typedef, =, ;)
   endTopLevelDeclaration(typedef)
   beginMetadataStar(typedef)
   endMetadataStar(0)
   beginUncategorizedTopLevelDeclaration(typedef)
-    beginFunctionTypeAlias(typedef)
+    beginTypedef(typedef)
       handleIdentifier(G3, typedefDeclaration)
       beginTypeVariables(<)
         beginMetadataStar(X)
@@ -449,12 +449,12 @@
         beginFormalParameters((, MemberKind.GeneralizedFunctionType)
         endFormalParameters(0, (, ), MemberKind.GeneralizedFunctionType)
       endFunctionType(Function, null)
-    endFunctionTypeAlias(typedef, =, ;)
+    endTypedef(typedef, =, ;)
   endTopLevelDeclaration(typedef)
   beginMetadataStar(typedef)
   endMetadataStar(0)
   beginUncategorizedTopLevelDeclaration(typedef)
-    beginFunctionTypeAlias(typedef)
+    beginTypedef(typedef)
       handleIdentifier(G4, typedefDeclaration)
       beginTypeVariables(<)
         beginMetadataStar(X)
@@ -499,12 +499,12 @@
         beginFormalParameters((, MemberKind.GeneralizedFunctionType)
         endFormalParameters(0, (, ), MemberKind.GeneralizedFunctionType)
       endFunctionType(Function, null)
-    endFunctionTypeAlias(typedef, =, ;)
+    endTypedef(typedef, =, ;)
   endTopLevelDeclaration(typedef)
   beginMetadataStar(typedef)
   endMetadataStar(0)
   beginUncategorizedTopLevelDeclaration(typedef)
-    beginFunctionTypeAlias(typedef)
+    beginTypedef(typedef)
       handleIdentifier(G5, typedefDeclaration)
       beginTypeVariables(<)
         beginMetadataStar(X)
@@ -541,12 +541,12 @@
         beginFormalParameters((, MemberKind.GeneralizedFunctionType)
         endFormalParameters(0, (, ), MemberKind.GeneralizedFunctionType)
       endFunctionType(Function, null)
-    endFunctionTypeAlias(typedef, =, ;)
+    endTypedef(typedef, =, ;)
   endTopLevelDeclaration(typedef)
   beginMetadataStar(typedef)
   endMetadataStar(0)
   beginUncategorizedTopLevelDeclaration(typedef)
-    beginFunctionTypeAlias(typedef)
+    beginTypedef(typedef)
       handleIdentifier(G6, typedefDeclaration)
       beginTypeVariables(<)
         beginMetadataStar(X)
@@ -583,12 +583,12 @@
         beginFormalParameters((, MemberKind.GeneralizedFunctionType)
         endFormalParameters(0, (, ), MemberKind.GeneralizedFunctionType)
       endFunctionType(Function, null)
-    endFunctionTypeAlias(typedef, =, ;)
+    endTypedef(typedef, =, ;)
   endTopLevelDeclaration(typedef)
   beginMetadataStar(typedef)
   endMetadataStar(0)
   beginUncategorizedTopLevelDeclaration(typedef)
-    beginFunctionTypeAlias(typedef)
+    beginTypedef(typedef)
       handleIdentifier(H1, typedefDeclaration)
       handleNoTypeVariables(=)
       beginFunctionType(void)
@@ -617,12 +617,12 @@
           endFormalParameter(null, null, ), null, null, FormalParameterKind.mandatory, MemberKind.GeneralizedFunctionType)
         endFormalParameters(1, (, ), MemberKind.GeneralizedFunctionType)
       endFunctionType(Function, null)
-    endFunctionTypeAlias(typedef, =, ;)
+    endTypedef(typedef, =, ;)
   endTopLevelDeclaration(typedef)
   beginMetadataStar(typedef)
   endMetadataStar(0)
   beginUncategorizedTopLevelDeclaration(typedef)
-    beginFunctionTypeAlias(typedef)
+    beginTypedef(typedef)
       handleIdentifier(H2, typedefDeclaration)
       handleNoTypeVariables(=)
       beginFunctionType(void)
@@ -653,12 +653,12 @@
           endFormalParameter(null, null, ), null, null, FormalParameterKind.mandatory, MemberKind.GeneralizedFunctionType)
         endFormalParameters(1, (, ), MemberKind.GeneralizedFunctionType)
       endFunctionType(Function, null)
-    endFunctionTypeAlias(typedef, =, ;)
+    endTypedef(typedef, =, ;)
   endTopLevelDeclaration(typedef)
   beginMetadataStar(typedef)
   endMetadataStar(0)
   beginUncategorizedTopLevelDeclaration(typedef)
-    beginFunctionTypeAlias(typedef)
+    beginTypedef(typedef)
       handleIdentifier(H3, typedefDeclaration)
       handleNoTypeVariables(=)
       beginFunctionType(void)
@@ -693,12 +693,12 @@
           endFormalParameter(null, null, ), null, null, FormalParameterKind.mandatory, MemberKind.GeneralizedFunctionType)
         endFormalParameters(1, (, ), MemberKind.GeneralizedFunctionType)
       endFunctionType(Function, null)
-    endFunctionTypeAlias(typedef, =, ;)
+    endTypedef(typedef, =, ;)
   endTopLevelDeclaration(typedef)
   beginMetadataStar(typedef)
   endMetadataStar(0)
   beginUncategorizedTopLevelDeclaration(typedef)
-    beginFunctionTypeAlias(typedef)
+    beginTypedef(typedef)
       handleIdentifier(H4, typedefDeclaration)
       handleNoTypeVariables(=)
       beginFunctionType(void)
@@ -737,12 +737,12 @@
           endFormalParameter(null, null, ), null, null, FormalParameterKind.mandatory, MemberKind.GeneralizedFunctionType)
         endFormalParameters(1, (, ), MemberKind.GeneralizedFunctionType)
       endFunctionType(Function, null)
-    endFunctionTypeAlias(typedef, =, ;)
+    endTypedef(typedef, =, ;)
   endTopLevelDeclaration(typedef)
   beginMetadataStar(typedef)
   endMetadataStar(0)
   beginUncategorizedTopLevelDeclaration(typedef)
-    beginFunctionTypeAlias(typedef)
+    beginTypedef(typedef)
       handleIdentifier(H5, typedefDeclaration)
       handleNoTypeVariables(=)
       beginFunctionType(void)
@@ -781,12 +781,12 @@
           endFormalParameter(null, null, ), null, null, FormalParameterKind.mandatory, MemberKind.GeneralizedFunctionType)
         endFormalParameters(1, (, ), MemberKind.GeneralizedFunctionType)
       endFunctionType(Function, null)
-    endFunctionTypeAlias(typedef, =, ;)
+    endTypedef(typedef, =, ;)
   endTopLevelDeclaration(typedef)
   beginMetadataStar(typedef)
   endMetadataStar(0)
   beginUncategorizedTopLevelDeclaration(typedef)
-    beginFunctionTypeAlias(typedef)
+    beginTypedef(typedef)
       handleIdentifier(H6, typedefDeclaration)
       handleNoTypeVariables(=)
       beginFunctionType(void)
@@ -825,12 +825,12 @@
           endFormalParameter(null, null, ), null, null, FormalParameterKind.mandatory, MemberKind.GeneralizedFunctionType)
         endFormalParameters(1, (, ), MemberKind.GeneralizedFunctionType)
       endFunctionType(Function, null)
-    endFunctionTypeAlias(typedef, =, ;)
+    endTypedef(typedef, =, ;)
   endTopLevelDeclaration(void)
   beginMetadataStar(void)
   endMetadataStar(0)
   beginTopLevelMember(void)
-    beginFields(;)
+    beginFields(DeclarationKind.TopLevel, null, null, null, null, null, null, ;)
       beginFunctionType(void)
         beginTypeVariables(<)
           beginMetadataStar(T)
@@ -852,7 +852,7 @@
   beginMetadataStar(void)
   endMetadataStar(0)
   beginTopLevelMember(void)
-    beginFields(;)
+    beginFields(DeclarationKind.TopLevel, null, null, null, null, null, null, ;)
       beginFunctionType(void)
         beginTypeVariables(<)
           beginMetadataStar(T)
@@ -876,7 +876,7 @@
   beginMetadataStar(void)
   endMetadataStar(0)
   beginTopLevelMember(void)
-    beginFields(;)
+    beginFields(DeclarationKind.TopLevel, null, null, null, null, null, null, ;)
       beginFunctionType(void)
         beginTypeVariables(<)
           beginMetadataStar(T)
@@ -904,7 +904,7 @@
   beginMetadataStar(void)
   endMetadataStar(0)
   beginTopLevelMember(void)
-    beginFields(;)
+    beginFields(DeclarationKind.TopLevel, null, null, null, null, null, null, ;)
       beginFunctionType(void)
         beginTypeVariables(<)
           beginMetadataStar(T)
@@ -936,7 +936,7 @@
   beginMetadataStar(void)
   endMetadataStar(0)
   beginTopLevelMember(void)
-    beginFields(;)
+    beginFields(DeclarationKind.TopLevel, null, null, null, null, null, null, ;)
       beginFunctionType(void)
         beginTypeVariables(<)
           beginMetadataStar(T)
@@ -968,7 +968,7 @@
   beginMetadataStar(void)
   endMetadataStar(0)
   beginTopLevelMember(void)
-    beginFields(;)
+    beginFields(DeclarationKind.TopLevel, null, null, null, null, null, null, ;)
       beginFunctionType(void)
         beginTypeVariables(<)
           beginMetadataStar(T)
diff --git a/pkg/front_end/parser_testcases/general/generic_function_typedef.dart.intertwined.expect b/pkg/front_end/parser_testcases/general/generic_function_typedef.dart.intertwined.expect
index 916c8ba..1f25d5e 100644
--- a/pkg/front_end/parser_testcases/general/generic_function_typedef.dart.intertwined.expect
+++ b/pkg/front_end/parser_testcases/general/generic_function_typedef.dart.intertwined.expect
@@ -10,7 +10,7 @@
       parseTopLevelKeywordModifiers(, typedef)
       parseTypedef(typedef)
         listener: beginUncategorizedTopLevelDeclaration(typedef)
-        listener: beginFunctionTypeAlias(typedef)
+        listener: beginTypedef(typedef)
         ensureIdentifierPotentiallyRecovered(typedef, typedefDeclaration, true)
           listener: handleIdentifier(E1, typedefDeclaration)
         listener: beginTypeVariables(<)
@@ -31,7 +31,7 @@
             listener: endFormalParameters(0, (, ), MemberKind.GeneralizedFunctionType)
         listener: endFunctionType(Function, null)
         ensureSemicolon())
-        listener: endFunctionTypeAlias(typedef, =, ;)
+        listener: endTypedef(typedef, =, ;)
   listener: endTopLevelDeclaration(typedef)
   parseTopLevelDeclarationImpl(;, Instance of 'DirectiveContext')
     parseMetadataStar(;)
@@ -41,7 +41,7 @@
       parseTopLevelKeywordModifiers(;, typedef)
       parseTypedef(typedef)
         listener: beginUncategorizedTopLevelDeclaration(typedef)
-        listener: beginFunctionTypeAlias(typedef)
+        listener: beginTypedef(typedef)
         ensureIdentifierPotentiallyRecovered(typedef, typedefDeclaration, true)
           listener: handleIdentifier(E2, typedefDeclaration)
         listener: beginTypeVariables(<)
@@ -66,7 +66,7 @@
             listener: endFormalParameters(0, (, ), MemberKind.GeneralizedFunctionType)
         listener: endFunctionType(Function, null)
         ensureSemicolon())
-        listener: endFunctionTypeAlias(typedef, =, ;)
+        listener: endTypedef(typedef, =, ;)
   listener: endTopLevelDeclaration(typedef)
   parseTopLevelDeclarationImpl(;, Instance of 'DirectiveContext')
     parseMetadataStar(;)
@@ -76,7 +76,7 @@
       parseTopLevelKeywordModifiers(;, typedef)
       parseTypedef(typedef)
         listener: beginUncategorizedTopLevelDeclaration(typedef)
-        listener: beginFunctionTypeAlias(typedef)
+        listener: beginTypedef(typedef)
         ensureIdentifierPotentiallyRecovered(typedef, typedefDeclaration, true)
           listener: handleIdentifier(E3, typedefDeclaration)
         listener: beginTypeVariables(<)
@@ -107,7 +107,7 @@
             listener: endFormalParameters(0, (, ), MemberKind.GeneralizedFunctionType)
         listener: endFunctionType(Function, null)
         ensureSemicolon())
-        listener: endFunctionTypeAlias(typedef, =, ;)
+        listener: endTypedef(typedef, =, ;)
   listener: endTopLevelDeclaration(typedef)
   parseTopLevelDeclarationImpl(;, Instance of 'DirectiveContext')
     parseMetadataStar(;)
@@ -117,7 +117,7 @@
       parseTopLevelKeywordModifiers(;, typedef)
       parseTypedef(typedef)
         listener: beginUncategorizedTopLevelDeclaration(typedef)
-        listener: beginFunctionTypeAlias(typedef)
+        listener: beginTypedef(typedef)
         ensureIdentifierPotentiallyRecovered(typedef, typedefDeclaration, true)
           listener: handleIdentifier(E4, typedefDeclaration)
         listener: beginTypeVariables(<)
@@ -152,7 +152,7 @@
             listener: endFormalParameters(0, (, ), MemberKind.GeneralizedFunctionType)
         listener: endFunctionType(Function, null)
         ensureSemicolon())
-        listener: endFunctionTypeAlias(typedef, =, ;)
+        listener: endTypedef(typedef, =, ;)
   listener: endTopLevelDeclaration(typedef)
   parseTopLevelDeclarationImpl(;, Instance of 'DirectiveContext')
     parseMetadataStar(;)
@@ -162,7 +162,7 @@
       parseTopLevelKeywordModifiers(;, typedef)
       parseTypedef(typedef)
         listener: beginUncategorizedTopLevelDeclaration(typedef)
-        listener: beginFunctionTypeAlias(typedef)
+        listener: beginTypedef(typedef)
         ensureIdentifierPotentiallyRecovered(typedef, typedefDeclaration, true)
           listener: handleIdentifier(E5, typedefDeclaration)
         listener: beginTypeVariables(<)
@@ -197,7 +197,7 @@
             listener: endFormalParameters(0, (, ), MemberKind.GeneralizedFunctionType)
         listener: endFunctionType(Function, null)
         ensureSemicolon())
-        listener: endFunctionTypeAlias(typedef, =, ;)
+        listener: endTypedef(typedef, =, ;)
   listener: endTopLevelDeclaration(typedef)
   parseTopLevelDeclarationImpl(;, Instance of 'DirectiveContext')
     parseMetadataStar(;)
@@ -207,7 +207,7 @@
       parseTopLevelKeywordModifiers(;, typedef)
       parseTypedef(typedef)
         listener: beginUncategorizedTopLevelDeclaration(typedef)
-        listener: beginFunctionTypeAlias(typedef)
+        listener: beginTypedef(typedef)
         ensureIdentifierPotentiallyRecovered(typedef, typedefDeclaration, true)
           listener: handleIdentifier(E6, typedefDeclaration)
         listener: beginTypeVariables(<)
@@ -242,7 +242,7 @@
             listener: endFormalParameters(0, (, ), MemberKind.GeneralizedFunctionType)
         listener: endFunctionType(Function, null)
         ensureSemicolon())
-        listener: endFunctionTypeAlias(typedef, =, ;)
+        listener: endTypedef(typedef, =, ;)
   listener: endTopLevelDeclaration(typedef)
   parseTopLevelDeclarationImpl(;, Instance of 'DirectiveContext')
     parseMetadataStar(;)
@@ -252,7 +252,7 @@
       parseTopLevelKeywordModifiers(;, typedef)
       parseTypedef(typedef)
         listener: beginUncategorizedTopLevelDeclaration(typedef)
-        listener: beginFunctionTypeAlias(typedef)
+        listener: beginTypedef(typedef)
         ensureIdentifierPotentiallyRecovered(typedef, typedefDeclaration, true)
           listener: handleIdentifier(F1, typedefDeclaration)
         listener: handleNoTypeVariables(=)
@@ -273,7 +273,7 @@
             listener: endFormalParameters(0, (, ), MemberKind.GeneralizedFunctionType)
         listener: endFunctionType(Function, null)
         ensureSemicolon())
-        listener: endFunctionTypeAlias(typedef, =, ;)
+        listener: endTypedef(typedef, =, ;)
   listener: endTopLevelDeclaration(typedef)
   parseTopLevelDeclarationImpl(;, Instance of 'DirectiveContext')
     parseMetadataStar(;)
@@ -283,7 +283,7 @@
       parseTopLevelKeywordModifiers(;, typedef)
       parseTypedef(typedef)
         listener: beginUncategorizedTopLevelDeclaration(typedef)
-        listener: beginFunctionTypeAlias(typedef)
+        listener: beginTypedef(typedef)
         ensureIdentifierPotentiallyRecovered(typedef, typedefDeclaration, true)
           listener: handleIdentifier(F2, typedefDeclaration)
         listener: handleNoTypeVariables(=)
@@ -308,7 +308,7 @@
             listener: endFormalParameters(0, (, ), MemberKind.GeneralizedFunctionType)
         listener: endFunctionType(Function, null)
         ensureSemicolon())
-        listener: endFunctionTypeAlias(typedef, =, ;)
+        listener: endTypedef(typedef, =, ;)
   listener: endTopLevelDeclaration(typedef)
   parseTopLevelDeclarationImpl(;, Instance of 'DirectiveContext')
     parseMetadataStar(;)
@@ -318,7 +318,7 @@
       parseTopLevelKeywordModifiers(;, typedef)
       parseTypedef(typedef)
         listener: beginUncategorizedTopLevelDeclaration(typedef)
-        listener: beginFunctionTypeAlias(typedef)
+        listener: beginTypedef(typedef)
         ensureIdentifierPotentiallyRecovered(typedef, typedefDeclaration, true)
           listener: handleIdentifier(F3, typedefDeclaration)
         listener: handleNoTypeVariables(=)
@@ -349,7 +349,7 @@
             listener: endFormalParameters(0, (, ), MemberKind.GeneralizedFunctionType)
         listener: endFunctionType(Function, null)
         ensureSemicolon())
-        listener: endFunctionTypeAlias(typedef, =, ;)
+        listener: endTypedef(typedef, =, ;)
   listener: endTopLevelDeclaration(typedef)
   parseTopLevelDeclarationImpl(;, Instance of 'DirectiveContext')
     parseMetadataStar(;)
@@ -359,7 +359,7 @@
       parseTopLevelKeywordModifiers(;, typedef)
       parseTypedef(typedef)
         listener: beginUncategorizedTopLevelDeclaration(typedef)
-        listener: beginFunctionTypeAlias(typedef)
+        listener: beginTypedef(typedef)
         ensureIdentifierPotentiallyRecovered(typedef, typedefDeclaration, true)
           listener: handleIdentifier(F4, typedefDeclaration)
         listener: handleNoTypeVariables(=)
@@ -394,7 +394,7 @@
             listener: endFormalParameters(0, (, ), MemberKind.GeneralizedFunctionType)
         listener: endFunctionType(Function, null)
         ensureSemicolon())
-        listener: endFunctionTypeAlias(typedef, =, ;)
+        listener: endTypedef(typedef, =, ;)
   listener: endTopLevelDeclaration(typedef)
   parseTopLevelDeclarationImpl(;, Instance of 'DirectiveContext')
     parseMetadataStar(;)
@@ -404,7 +404,7 @@
       parseTopLevelKeywordModifiers(;, typedef)
       parseTypedef(typedef)
         listener: beginUncategorizedTopLevelDeclaration(typedef)
-        listener: beginFunctionTypeAlias(typedef)
+        listener: beginTypedef(typedef)
         ensureIdentifierPotentiallyRecovered(typedef, typedefDeclaration, true)
           listener: handleIdentifier(F5, typedefDeclaration)
         listener: handleNoTypeVariables(=)
@@ -439,7 +439,7 @@
             listener: endFormalParameters(0, (, ), MemberKind.GeneralizedFunctionType)
         listener: endFunctionType(Function, null)
         ensureSemicolon())
-        listener: endFunctionTypeAlias(typedef, =, ;)
+        listener: endTypedef(typedef, =, ;)
   listener: endTopLevelDeclaration(typedef)
   parseTopLevelDeclarationImpl(;, Instance of 'DirectiveContext')
     parseMetadataStar(;)
@@ -449,7 +449,7 @@
       parseTopLevelKeywordModifiers(;, typedef)
       parseTypedef(typedef)
         listener: beginUncategorizedTopLevelDeclaration(typedef)
-        listener: beginFunctionTypeAlias(typedef)
+        listener: beginTypedef(typedef)
         ensureIdentifierPotentiallyRecovered(typedef, typedefDeclaration, true)
           listener: handleIdentifier(F6, typedefDeclaration)
         listener: handleNoTypeVariables(=)
@@ -484,7 +484,7 @@
             listener: endFormalParameters(0, (, ), MemberKind.GeneralizedFunctionType)
         listener: endFunctionType(Function, null)
         ensureSemicolon())
-        listener: endFunctionTypeAlias(typedef, =, ;)
+        listener: endTypedef(typedef, =, ;)
   listener: endTopLevelDeclaration(typedef)
   parseTopLevelDeclarationImpl(;, Instance of 'DirectiveContext')
     parseMetadataStar(;)
@@ -494,7 +494,7 @@
       parseTopLevelKeywordModifiers(;, typedef)
       parseTypedef(typedef)
         listener: beginUncategorizedTopLevelDeclaration(typedef)
-        listener: beginFunctionTypeAlias(typedef)
+        listener: beginTypedef(typedef)
         ensureIdentifierPotentiallyRecovered(typedef, typedefDeclaration, true)
           listener: handleIdentifier(G1, typedefDeclaration)
         listener: beginTypeVariables(<)
@@ -527,7 +527,7 @@
             listener: endFormalParameters(0, (, ), MemberKind.GeneralizedFunctionType)
         listener: endFunctionType(Function, null)
         ensureSemicolon())
-        listener: endFunctionTypeAlias(typedef, =, ;)
+        listener: endTypedef(typedef, =, ;)
   listener: endTopLevelDeclaration(typedef)
   parseTopLevelDeclarationImpl(;, Instance of 'DirectiveContext')
     parseMetadataStar(;)
@@ -537,7 +537,7 @@
       parseTopLevelKeywordModifiers(;, typedef)
       parseTypedef(typedef)
         listener: beginUncategorizedTopLevelDeclaration(typedef)
-        listener: beginFunctionTypeAlias(typedef)
+        listener: beginTypedef(typedef)
         ensureIdentifierPotentiallyRecovered(typedef, typedefDeclaration, true)
           listener: handleIdentifier(G2, typedefDeclaration)
         listener: beginTypeVariables(<)
@@ -574,7 +574,7 @@
             listener: endFormalParameters(0, (, ), MemberKind.GeneralizedFunctionType)
         listener: endFunctionType(Function, null)
         ensureSemicolon())
-        listener: endFunctionTypeAlias(typedef, =, ;)
+        listener: endTypedef(typedef, =, ;)
   listener: endTopLevelDeclaration(typedef)
   parseTopLevelDeclarationImpl(;, Instance of 'DirectiveContext')
     parseMetadataStar(;)
@@ -584,7 +584,7 @@
       parseTopLevelKeywordModifiers(;, typedef)
       parseTypedef(typedef)
         listener: beginUncategorizedTopLevelDeclaration(typedef)
-        listener: beginFunctionTypeAlias(typedef)
+        listener: beginTypedef(typedef)
         ensureIdentifierPotentiallyRecovered(typedef, typedefDeclaration, true)
           listener: handleIdentifier(G3, typedefDeclaration)
         listener: beginTypeVariables(<)
@@ -637,7 +637,7 @@
             listener: endFormalParameters(0, (, ), MemberKind.GeneralizedFunctionType)
         listener: endFunctionType(Function, null)
         ensureSemicolon())
-        listener: endFunctionTypeAlias(typedef, =, ;)
+        listener: endTypedef(typedef, =, ;)
   listener: endTopLevelDeclaration(typedef)
   parseTopLevelDeclarationImpl(;, Instance of 'DirectiveContext')
     parseMetadataStar(;)
@@ -647,7 +647,7 @@
       parseTopLevelKeywordModifiers(;, typedef)
       parseTypedef(typedef)
         listener: beginUncategorizedTopLevelDeclaration(typedef)
-        listener: beginFunctionTypeAlias(typedef)
+        listener: beginTypedef(typedef)
         ensureIdentifierPotentiallyRecovered(typedef, typedefDeclaration, true)
           listener: handleIdentifier(G4, typedefDeclaration)
         listener: beginTypeVariables(<)
@@ -704,7 +704,7 @@
             listener: endFormalParameters(0, (, ), MemberKind.GeneralizedFunctionType)
         listener: endFunctionType(Function, null)
         ensureSemicolon())
-        listener: endFunctionTypeAlias(typedef, =, ;)
+        listener: endTypedef(typedef, =, ;)
   listener: endTopLevelDeclaration(typedef)
   parseTopLevelDeclarationImpl(;, Instance of 'DirectiveContext')
     parseMetadataStar(;)
@@ -714,7 +714,7 @@
       parseTopLevelKeywordModifiers(;, typedef)
       parseTypedef(typedef)
         listener: beginUncategorizedTopLevelDeclaration(typedef)
-        listener: beginFunctionTypeAlias(typedef)
+        listener: beginTypedef(typedef)
         ensureIdentifierPotentiallyRecovered(typedef, typedefDeclaration, true)
           listener: handleIdentifier(G5, typedefDeclaration)
         listener: beginTypeVariables(<)
@@ -761,7 +761,7 @@
             listener: endFormalParameters(0, (, ), MemberKind.GeneralizedFunctionType)
         listener: endFunctionType(Function, null)
         ensureSemicolon())
-        listener: endFunctionTypeAlias(typedef, =, ;)
+        listener: endTypedef(typedef, =, ;)
   listener: endTopLevelDeclaration(typedef)
   parseTopLevelDeclarationImpl(;, Instance of 'DirectiveContext')
     parseMetadataStar(;)
@@ -771,7 +771,7 @@
       parseTopLevelKeywordModifiers(;, typedef)
       parseTypedef(typedef)
         listener: beginUncategorizedTopLevelDeclaration(typedef)
-        listener: beginFunctionTypeAlias(typedef)
+        listener: beginTypedef(typedef)
         ensureIdentifierPotentiallyRecovered(typedef, typedefDeclaration, true)
           listener: handleIdentifier(G6, typedefDeclaration)
         listener: beginTypeVariables(<)
@@ -818,7 +818,7 @@
             listener: endFormalParameters(0, (, ), MemberKind.GeneralizedFunctionType)
         listener: endFunctionType(Function, null)
         ensureSemicolon())
-        listener: endFunctionTypeAlias(typedef, =, ;)
+        listener: endTypedef(typedef, =, ;)
   listener: endTopLevelDeclaration(typedef)
   parseTopLevelDeclarationImpl(;, Instance of 'DirectiveContext')
     parseMetadataStar(;)
@@ -828,7 +828,7 @@
       parseTopLevelKeywordModifiers(;, typedef)
       parseTypedef(typedef)
         listener: beginUncategorizedTopLevelDeclaration(typedef)
-        listener: beginFunctionTypeAlias(typedef)
+        listener: beginTypedef(typedef)
         ensureIdentifierPotentiallyRecovered(typedef, typedefDeclaration, true)
           listener: handleIdentifier(H1, typedefDeclaration)
         listener: handleNoTypeVariables(=)
@@ -865,7 +865,7 @@
             listener: endFormalParameters(1, (, ), MemberKind.GeneralizedFunctionType)
         listener: endFunctionType(Function, null)
         ensureSemicolon())
-        listener: endFunctionTypeAlias(typedef, =, ;)
+        listener: endTypedef(typedef, =, ;)
   listener: endTopLevelDeclaration(typedef)
   parseTopLevelDeclarationImpl(;, Instance of 'DirectiveContext')
     parseMetadataStar(;)
@@ -875,7 +875,7 @@
       parseTopLevelKeywordModifiers(;, typedef)
       parseTypedef(typedef)
         listener: beginUncategorizedTopLevelDeclaration(typedef)
-        listener: beginFunctionTypeAlias(typedef)
+        listener: beginTypedef(typedef)
         ensureIdentifierPotentiallyRecovered(typedef, typedefDeclaration, true)
           listener: handleIdentifier(H2, typedefDeclaration)
         listener: handleNoTypeVariables(=)
@@ -916,7 +916,7 @@
             listener: endFormalParameters(1, (, ), MemberKind.GeneralizedFunctionType)
         listener: endFunctionType(Function, null)
         ensureSemicolon())
-        listener: endFunctionTypeAlias(typedef, =, ;)
+        listener: endTypedef(typedef, =, ;)
   listener: endTopLevelDeclaration(typedef)
   parseTopLevelDeclarationImpl(;, Instance of 'DirectiveContext')
     parseMetadataStar(;)
@@ -926,7 +926,7 @@
       parseTopLevelKeywordModifiers(;, typedef)
       parseTypedef(typedef)
         listener: beginUncategorizedTopLevelDeclaration(typedef)
-        listener: beginFunctionTypeAlias(typedef)
+        listener: beginTypedef(typedef)
         ensureIdentifierPotentiallyRecovered(typedef, typedefDeclaration, true)
           listener: handleIdentifier(H3, typedefDeclaration)
         listener: handleNoTypeVariables(=)
@@ -973,7 +973,7 @@
             listener: endFormalParameters(1, (, ), MemberKind.GeneralizedFunctionType)
         listener: endFunctionType(Function, null)
         ensureSemicolon())
-        listener: endFunctionTypeAlias(typedef, =, ;)
+        listener: endTypedef(typedef, =, ;)
   listener: endTopLevelDeclaration(typedef)
   parseTopLevelDeclarationImpl(;, Instance of 'DirectiveContext')
     parseMetadataStar(;)
@@ -983,7 +983,7 @@
       parseTopLevelKeywordModifiers(;, typedef)
       parseTypedef(typedef)
         listener: beginUncategorizedTopLevelDeclaration(typedef)
-        listener: beginFunctionTypeAlias(typedef)
+        listener: beginTypedef(typedef)
         ensureIdentifierPotentiallyRecovered(typedef, typedefDeclaration, true)
           listener: handleIdentifier(H4, typedefDeclaration)
         listener: handleNoTypeVariables(=)
@@ -1034,7 +1034,7 @@
             listener: endFormalParameters(1, (, ), MemberKind.GeneralizedFunctionType)
         listener: endFunctionType(Function, null)
         ensureSemicolon())
-        listener: endFunctionTypeAlias(typedef, =, ;)
+        listener: endTypedef(typedef, =, ;)
   listener: endTopLevelDeclaration(typedef)
   parseTopLevelDeclarationImpl(;, Instance of 'DirectiveContext')
     parseMetadataStar(;)
@@ -1044,7 +1044,7 @@
       parseTopLevelKeywordModifiers(;, typedef)
       parseTypedef(typedef)
         listener: beginUncategorizedTopLevelDeclaration(typedef)
-        listener: beginFunctionTypeAlias(typedef)
+        listener: beginTypedef(typedef)
         ensureIdentifierPotentiallyRecovered(typedef, typedefDeclaration, true)
           listener: handleIdentifier(H5, typedefDeclaration)
         listener: handleNoTypeVariables(=)
@@ -1095,7 +1095,7 @@
             listener: endFormalParameters(1, (, ), MemberKind.GeneralizedFunctionType)
         listener: endFunctionType(Function, null)
         ensureSemicolon())
-        listener: endFunctionTypeAlias(typedef, =, ;)
+        listener: endTypedef(typedef, =, ;)
   listener: endTopLevelDeclaration(typedef)
   parseTopLevelDeclarationImpl(;, Instance of 'DirectiveContext')
     parseMetadataStar(;)
@@ -1105,7 +1105,7 @@
       parseTopLevelKeywordModifiers(;, typedef)
       parseTypedef(typedef)
         listener: beginUncategorizedTopLevelDeclaration(typedef)
-        listener: beginFunctionTypeAlias(typedef)
+        listener: beginTypedef(typedef)
         ensureIdentifierPotentiallyRecovered(typedef, typedefDeclaration, true)
           listener: handleIdentifier(H6, typedefDeclaration)
         listener: handleNoTypeVariables(=)
@@ -1156,7 +1156,7 @@
             listener: endFormalParameters(1, (, ), MemberKind.GeneralizedFunctionType)
         listener: endFunctionType(Function, null)
         ensureSemicolon())
-        listener: endFunctionTypeAlias(typedef, =, ;)
+        listener: endTypedef(typedef, =, ;)
   listener: endTopLevelDeclaration(void)
   parseTopLevelDeclarationImpl(;, Instance of 'DirectiveContext')
     parseMetadataStar(;)
@@ -1165,7 +1165,7 @@
     parseTopLevelMemberImpl(;)
       listener: beginTopLevelMember(void)
       parseFields(;, null, null, null, null, null, null, ;, Instance of 'ComplexTypeInfo', f1, DeclarationKind.TopLevel, null, false)
-        listener: beginFields(;)
+        listener: beginFields(DeclarationKind.TopLevel, null, null, null, null, null, null, ;)
         listener: beginFunctionType(void)
         listener: beginTypeVariables(<)
         listener: beginMetadataStar(T)
@@ -1195,7 +1195,7 @@
     parseTopLevelMemberImpl(;)
       listener: beginTopLevelMember(void)
       parseFields(;, null, null, null, null, null, null, ;, Instance of 'ComplexTypeInfo', f2, DeclarationKind.TopLevel, null, false)
-        listener: beginFields(;)
+        listener: beginFields(DeclarationKind.TopLevel, null, null, null, null, null, null, ;)
         listener: beginFunctionType(void)
         listener: beginTypeVariables(<)
         parseMetadataStar(<)
@@ -1229,7 +1229,7 @@
     parseTopLevelMemberImpl(;)
       listener: beginTopLevelMember(void)
       parseFields(;, null, null, null, null, null, null, ;, Instance of 'ComplexTypeInfo', f3, DeclarationKind.TopLevel, null, false)
-        listener: beginFields(;)
+        listener: beginFields(DeclarationKind.TopLevel, null, null, null, null, null, null, ;)
         listener: beginFunctionType(void)
         listener: beginTypeVariables(<)
         parseMetadataStar(<)
@@ -1269,7 +1269,7 @@
     parseTopLevelMemberImpl(;)
       listener: beginTopLevelMember(void)
       parseFields(;, null, null, null, null, null, null, ;, Instance of 'ComplexTypeInfo', f4, DeclarationKind.TopLevel, null, false)
-        listener: beginFields(;)
+        listener: beginFields(DeclarationKind.TopLevel, null, null, null, null, null, null, ;)
         listener: beginFunctionType(void)
         listener: beginTypeVariables(<)
         parseMetadataStar(<)
@@ -1313,7 +1313,7 @@
     parseTopLevelMemberImpl(;)
       listener: beginTopLevelMember(void)
       parseFields(;, null, null, null, null, null, null, ;, Instance of 'ComplexTypeInfo', f5, DeclarationKind.TopLevel, null, false)
-        listener: beginFields(;)
+        listener: beginFields(DeclarationKind.TopLevel, null, null, null, null, null, null, ;)
         listener: beginFunctionType(void)
         listener: beginTypeVariables(<)
         parseMetadataStar(<)
@@ -1357,7 +1357,7 @@
     parseTopLevelMemberImpl(;)
       listener: beginTopLevelMember(void)
       parseFields(;, null, null, null, null, null, null, ;, Instance of 'ComplexTypeInfo', f6, DeclarationKind.TopLevel, null, false)
-        listener: beginFields(;)
+        listener: beginFields(DeclarationKind.TopLevel, null, null, null, null, null, null, ;)
         listener: beginFunctionType(void)
         listener: beginTypeVariables(<)
         parseMetadataStar(<)
diff --git a/pkg/front_end/parser_testcases/general/issue_41121.dart.expect b/pkg/front_end/parser_testcases/general/issue_41121.dart.expect
index 5d40379..494fec3 100644
--- a/pkg/front_end/parser_testcases/general/issue_41121.dart.expect
+++ b/pkg/front_end/parser_testcases/general/issue_41121.dart.expect
@@ -43,7 +43,7 @@
 beginCompilationUnit(class)
   beginMetadataStar(class)
   endMetadataStar(0)
-  beginClassOrNamedMixinApplicationPrelude(class)
+  beginClassOrMixinOrNamedMixinApplicationPrelude(class)
     handleIdentifier(ConfigurationService, classOrMixinDeclaration)
     handleNoTypeVariables({)
     beginClassDeclaration(class, null, ConfigurationService)
@@ -52,11 +52,11 @@
       handleClassNoWithClause()
       handleClassOrMixinImplements(null, 0)
       handleClassHeader(class, class, null)
-      beginClassOrMixinBody(DeclarationKind.Class, {)
+      beginClassOrMixinOrExtensionBody(DeclarationKind.Class, {)
         beginMetadataStar(Configuration)
         endMetadataStar(0)
         beginMember()
-          beginFields({)
+          beginFields(DeclarationKind.Class, null, null, null, null, null, null, {)
             handleIdentifier(Configuration, typeReference)
             handleNoTypeArguments(_configuration)
             handleType(Configuration, null)
@@ -67,7 +67,7 @@
         beginMetadataStar(ConfigurationService)
         endMetadataStar(0)
         beginMember()
-          beginMethod(null, null, null, null, null, ConfigurationService)
+          beginMethod(DeclarationKind.Class, null, null, null, null, null, ConfigurationService)
             handleNoType(;)
             handleIdentifier(ConfigurationService, methodDeclaration)
             handleNoTypeVariables(()
@@ -114,7 +114,7 @@
         beginMetadataStar(void)
         endMetadataStar(0)
         beginMember()
-          beginMethod(null, null, null, null, set, configuration)
+          beginMethod(DeclarationKind.Class, null, null, null, null, set, configuration)
             handleVoidKeyword(void)
             handleIdentifier(configuration, methodDeclaration)
             handleNoTypeVariables(()
@@ -164,7 +164,7 @@
         beginMetadataStar(Configuration)
         endMetadataStar(0)
         beginMember()
-          beginMethod(null, null, null, null, get, configuration)
+          beginMethod(DeclarationKind.Class, null, null, null, null, get, configuration)
             handleIdentifier(Configuration, typeReference)
             handleNoTypeArguments(get)
             handleType(Configuration, null)
@@ -219,7 +219,7 @@
         beginMetadataStar(void)
         endMetadataStar(0)
         beginMember()
-          beginMethod(null, null, null, null, null, method)
+          beginMethod(DeclarationKind.Class, null, null, null, null, null, method)
             handleVoidKeyword(void)
             handleIdentifier(method, methodDeclaration)
             handleNoTypeVariables(()
@@ -245,7 +245,7 @@
         beginMetadataStar(Foo)
         endMetadataStar(0)
         beginMember()
-          beginMethod(null, null, null, null, null, Foo)
+          beginMethod(DeclarationKind.Class, null, null, null, null, null, Foo)
             handleNoType(})
             handleIdentifier(Foo, methodDeclaration)
             handleNoTypeVariables(()
@@ -267,12 +267,12 @@
             handleRecoverableError(ConstructorWithWrongName, Foo, Foo)
           endClassConstructor(null, Foo, (, :, })
         endMember()
-      endClassOrMixinBody(DeclarationKind.Class, 6, {, })
+      endClassOrMixinOrExtensionBody(DeclarationKind.Class, 6, {, })
     endClassDeclaration(class, })
   endTopLevelDeclaration(class)
   beginMetadataStar(class)
   endMetadataStar(0)
-  beginClassOrNamedMixinApplicationPrelude(class)
+  beginClassOrMixinOrNamedMixinApplicationPrelude(class)
     handleIdentifier(Configuration, classOrMixinDeclaration)
     handleNoTypeVariables({)
     beginClassDeclaration(class, null, Configuration)
@@ -281,11 +281,11 @@
       handleClassNoWithClause()
       handleClassOrMixinImplements(null, 0)
       handleClassHeader(class, class, null)
-      beginClassOrMixinBody(DeclarationKind.Class, {)
+      beginClassOrMixinOrExtensionBody(DeclarationKind.Class, {)
         beginMetadataStar(Configuration)
         endMetadataStar(0)
         beginMember()
-          beginMethod(null, null, null, null, get, foo)
+          beginMethod(DeclarationKind.Class, null, null, null, null, get, foo)
             handleIdentifier(Configuration, typeReference)
             handleNoTypeArguments(get)
             handleType(Configuration, null)
@@ -298,7 +298,7 @@
             handleExpressionFunctionBody(=>, ;)
           endClassMethod(get, Configuration, =>, null, ;)
         endMember()
-      endClassOrMixinBody(DeclarationKind.Class, 1, {, })
+      endClassOrMixinOrExtensionBody(DeclarationKind.Class, 1, {, })
     endClassDeclaration(class, })
   endTopLevelDeclaration()
 endCompilationUnit(2, )
diff --git a/pkg/front_end/parser_testcases/general/issue_41121.dart.intertwined.expect b/pkg/front_end/parser_testcases/general/issue_41121.dart.intertwined.expect
index 2b1efbc..cbffc96 100644
--- a/pkg/front_end/parser_testcases/general/issue_41121.dart.intertwined.expect
+++ b/pkg/front_end/parser_testcases/general/issue_41121.dart.intertwined.expect
@@ -9,7 +9,7 @@
     parseTopLevelKeywordDeclaration(, class, Instance of 'DirectiveContext')
       parseClassDeclarationModifiers(, class)
       parseClassOrNamedMixinApplication(null, class)
-        listener: beginClassOrNamedMixinApplicationPrelude(class)
+        listener: beginClassOrMixinOrNamedMixinApplicationPrelude(class)
         ensureIdentifier(class, classOrMixinDeclaration)
           listener: handleIdentifier(ConfigurationService, classOrMixinDeclaration)
         listener: handleNoTypeVariables({)
@@ -25,7 +25,7 @@
               listener: handleClassOrMixinImplements(null, 0)
             listener: handleClassHeader(class, class, null)
           parseClassOrMixinOrExtensionBody(ConfigurationService, DeclarationKind.Class, ConfigurationService)
-            listener: beginClassOrMixinBody(DeclarationKind.Class, {)
+            listener: beginClassOrMixinOrExtensionBody(DeclarationKind.Class, {)
             notEofOrValue(}, Configuration)
             parseClassOrMixinOrExtensionMemberImpl({, DeclarationKind.Class, ConfigurationService)
               parseMetadataStar({)
@@ -33,7 +33,7 @@
                 listener: endMetadataStar(0)
               listener: beginMember()
               parseFields({, null, null, null, null, null, null, {, Instance of 'SimpleType', _configuration, DeclarationKind.Class, ConfigurationService, false)
-                listener: beginFields({)
+                listener: beginFields(DeclarationKind.Class, null, null, null, null, null, null, {)
                 listener: handleIdentifier(Configuration, typeReference)
                 listener: handleNoTypeArguments(_configuration)
                 listener: handleType(Configuration, null)
@@ -51,7 +51,7 @@
               listener: beginMember()
               isReservedKeyword(()
               parseMethod(;, null, null, null, null, null, null, ;, Instance of 'NoType', null, ConfigurationService, DeclarationKind.Class, ConfigurationService, false)
-                listener: beginMethod(null, null, null, null, null, ConfigurationService)
+                listener: beginMethod(DeclarationKind.Class, null, null, null, null, null, ConfigurationService)
                 listener: handleNoType(;)
                 ensureIdentifierPotentiallyRecovered(;, methodDeclaration, false)
                   listener: handleIdentifier(ConfigurationService, methodDeclaration)
@@ -152,7 +152,7 @@
                 listener: endMetadataStar(0)
               listener: beginMember()
               parseMethod(}, null, null, null, null, null, null, }, Instance of 'VoidType', set, configuration, DeclarationKind.Class, ConfigurationService, false)
-                listener: beginMethod(null, null, null, null, set, configuration)
+                listener: beginMethod(DeclarationKind.Class, null, null, null, null, set, configuration)
                 listener: handleVoidKeyword(void)
                 ensureIdentifierPotentiallyRecovered(set, methodDeclaration, false)
                   listener: handleIdentifier(configuration, methodDeclaration)
@@ -259,7 +259,7 @@
                 listener: endMetadataStar(0)
               listener: beginMember()
               parseMethod(}, null, null, null, null, null, null, }, Instance of 'SimpleType', get, configuration, DeclarationKind.Class, ConfigurationService, false)
-                listener: beginMethod(null, null, null, null, get, configuration)
+                listener: beginMethod(DeclarationKind.Class, null, null, null, null, get, configuration)
                 listener: handleIdentifier(Configuration, typeReference)
                 listener: handleNoTypeArguments(get)
                 listener: handleType(Configuration, null)
@@ -391,7 +391,7 @@
                 listener: endMetadataStar(0)
               listener: beginMember()
               parseMethod(}, null, null, null, null, null, null, }, Instance of 'VoidType', null, method, DeclarationKind.Class, ConfigurationService, false)
-                listener: beginMethod(null, null, null, null, null, method)
+                listener: beginMethod(DeclarationKind.Class, null, null, null, null, null, method)
                 listener: handleVoidKeyword(void)
                 ensureIdentifierPotentiallyRecovered(void, methodDeclaration, false)
                   listener: handleIdentifier(method, methodDeclaration)
@@ -452,7 +452,7 @@
               listener: beginMember()
               isReservedKeyword(()
               parseMethod(}, null, null, null, null, null, null, }, Instance of 'NoType', null, Foo, DeclarationKind.Class, ConfigurationService, false)
-                listener: beginMethod(null, null, null, null, null, Foo)
+                listener: beginMethod(DeclarationKind.Class, null, null, null, null, null, Foo)
                 listener: handleNoType(})
                 ensureIdentifierPotentiallyRecovered(}, methodDeclaration, false)
                   listener: handleIdentifier(Foo, methodDeclaration)
@@ -504,7 +504,7 @@
                 listener: endClassConstructor(null, Foo, (, :, })
               listener: endMember()
             notEofOrValue(}, })
-            listener: endClassOrMixinBody(DeclarationKind.Class, 6, {, })
+            listener: endClassOrMixinOrExtensionBody(DeclarationKind.Class, 6, {, })
           listener: endClassDeclaration(class, })
   listener: endTopLevelDeclaration(class)
   parseTopLevelDeclarationImpl(}, Instance of 'DirectiveContext')
@@ -514,7 +514,7 @@
     parseTopLevelKeywordDeclaration(}, class, Instance of 'DirectiveContext')
       parseClassDeclarationModifiers(}, class)
       parseClassOrNamedMixinApplication(null, class)
-        listener: beginClassOrNamedMixinApplicationPrelude(class)
+        listener: beginClassOrMixinOrNamedMixinApplicationPrelude(class)
         ensureIdentifier(class, classOrMixinDeclaration)
           listener: handleIdentifier(Configuration, classOrMixinDeclaration)
         listener: handleNoTypeVariables({)
@@ -530,7 +530,7 @@
               listener: handleClassOrMixinImplements(null, 0)
             listener: handleClassHeader(class, class, null)
           parseClassOrMixinOrExtensionBody(Configuration, DeclarationKind.Class, Configuration)
-            listener: beginClassOrMixinBody(DeclarationKind.Class, {)
+            listener: beginClassOrMixinOrExtensionBody(DeclarationKind.Class, {)
             notEofOrValue(}, Configuration)
             parseClassOrMixinOrExtensionMemberImpl({, DeclarationKind.Class, Configuration)
               parseMetadataStar({)
@@ -538,7 +538,7 @@
                 listener: endMetadataStar(0)
               listener: beginMember()
               parseMethod({, null, null, null, null, null, null, {, Instance of 'SimpleType', get, foo, DeclarationKind.Class, Configuration, false)
-                listener: beginMethod(null, null, null, null, get, foo)
+                listener: beginMethod(DeclarationKind.Class, null, null, null, null, get, foo)
                 listener: handleIdentifier(Configuration, typeReference)
                 listener: handleNoTypeArguments(get)
                 listener: handleType(Configuration, null)
@@ -569,7 +569,7 @@
                 listener: endClassMethod(get, Configuration, =>, null, ;)
               listener: endMember()
             notEofOrValue(}, })
-            listener: endClassOrMixinBody(DeclarationKind.Class, 1, {, })
+            listener: endClassOrMixinOrExtensionBody(DeclarationKind.Class, 1, {, })
           listener: endClassDeclaration(class, })
   listener: endTopLevelDeclaration()
   reportAllErrorTokens(class)
diff --git a/pkg/front_end/parser_testcases/general/issue_45120.dart.expect b/pkg/front_end/parser_testcases/general/issue_45120.dart.expect
index 1effedc..dda69fa 100644
--- a/pkg/front_end/parser_testcases/general/issue_45120.dart.expect
+++ b/pkg/front_end/parser_testcases/general/issue_45120.dart.expect
@@ -13,7 +13,7 @@
     endMetadata(@, null, typedef)
   endMetadataStar(1)
   beginUncategorizedTopLevelDeclaration(typedef)
-    beginFunctionTypeAlias(typedef)
+    beginTypedef(typedef)
       handleIdentifier(F, typedefDeclaration)
       beginTypeVariables(<)
         beginMetadataStar(@)
@@ -82,7 +82,7 @@
           endFormalParameter(null, null, ), null, null, FormalParameterKind.mandatory, MemberKind.GeneralizedFunctionType)
         endFormalParameters(1, (, ), MemberKind.GeneralizedFunctionType)
       endFunctionType(Function, null)
-    endFunctionTypeAlias(typedef, =, ;)
+    endTypedef(typedef, =, ;)
   endTopLevelDeclaration(void)
   beginMetadataStar(void)
   endMetadataStar(0)
diff --git a/pkg/front_end/parser_testcases/general/issue_45120.dart.intertwined.expect b/pkg/front_end/parser_testcases/general/issue_45120.dart.intertwined.expect
index 63f2c9a..412b5a6 100644
--- a/pkg/front_end/parser_testcases/general/issue_45120.dart.intertwined.expect
+++ b/pkg/front_end/parser_testcases/general/issue_45120.dart.intertwined.expect
@@ -32,7 +32,7 @@
       parseTopLevelKeywordModifiers(), typedef)
       parseTypedef(typedef)
         listener: beginUncategorizedTopLevelDeclaration(typedef)
-        listener: beginFunctionTypeAlias(typedef)
+        listener: beginTypedef(typedef)
         ensureIdentifierPotentiallyRecovered(typedef, typedefDeclaration, true)
           listener: handleIdentifier(F, typedefDeclaration)
         listener: beginTypeVariables(<)
@@ -145,7 +145,7 @@
             listener: endFormalParameters(1, (, ), MemberKind.GeneralizedFunctionType)
         listener: endFunctionType(Function, null)
         ensureSemicolon())
-        listener: endFunctionTypeAlias(typedef, =, ;)
+        listener: endTypedef(typedef, =, ;)
   listener: endTopLevelDeclaration(void)
   parseTopLevelDeclarationImpl(;, Instance of 'DirectiveContext')
     parseMetadataStar(;)
diff --git a/pkg/front_end/parser_testcases/general/metadata.dart.expect b/pkg/front_end/parser_testcases/general/metadata.dart.expect
index d342b49..eddf5e6 100644
--- a/pkg/front_end/parser_testcases/general/metadata.dart.expect
+++ b/pkg/front_end/parser_testcases/general/metadata.dart.expect
@@ -104,7 +104,7 @@
       endArguments(1, (, ))
     endMetadata(@, ., class)
   endMetadataStar(10)
-  beginClassOrNamedMixinApplicationPrelude(class)
+  beginClassOrMixinOrNamedMixinApplicationPrelude(class)
     handleIdentifier(X, classOrMixinDeclaration)
     handleNoTypeVariables({)
     beginClassDeclaration(class, null, X)
@@ -113,14 +113,14 @@
       handleClassNoWithClause()
       handleClassOrMixinImplements(null, 0)
       handleClassHeader(class, class, null)
-      beginClassOrMixinBody(DeclarationKind.Class, {)
-      endClassOrMixinBody(DeclarationKind.Class, 0, {, })
+      beginClassOrMixinOrExtensionBody(DeclarationKind.Class, {)
+      endClassOrMixinOrExtensionBody(DeclarationKind.Class, 0, {, })
     endClassDeclaration(class, })
   endTopLevelDeclaration(typedef)
   beginMetadataStar(typedef)
   endMetadataStar(0)
   beginUncategorizedTopLevelDeclaration(typedef)
-    beginFunctionTypeAlias(typedef)
+    beginTypedef(typedef)
       handleIdentifier(F, typedefDeclaration)
       beginTypeVariables(<)
         beginMetadataStar(@)
@@ -171,12 +171,12 @@
           endFormalParameter(null, null, ), null, null, FormalParameterKind.mandatory, MemberKind.GeneralizedFunctionType)
         endFormalParameters(1, (, ), MemberKind.GeneralizedFunctionType)
       endFunctionType(Function, null)
-    endFunctionTypeAlias(typedef, =, ;)
+    endTypedef(typedef, =, ;)
   endTopLevelDeclaration(typedef)
   beginMetadataStar(typedef)
   endMetadataStar(0)
   beginUncategorizedTopLevelDeclaration(typedef)
-    beginFunctionTypeAlias(typedef)
+    beginTypedef(typedef)
       handleIdentifier(F, typedefDeclaration)
       beginTypeVariables(<)
         beginMetadataStar(@)
@@ -233,12 +233,12 @@
           endFormalParameter(null, null, ), null, null, FormalParameterKind.mandatory, MemberKind.GeneralizedFunctionType)
         endFormalParameters(1, (, ), MemberKind.GeneralizedFunctionType)
       endFunctionType(Function, null)
-    endFunctionTypeAlias(typedef, =, ;)
+    endTypedef(typedef, =, ;)
   endTopLevelDeclaration(typedef)
   beginMetadataStar(typedef)
   endMetadataStar(0)
   beginUncategorizedTopLevelDeclaration(typedef)
-    beginFunctionTypeAlias(typedef)
+    beginTypedef(typedef)
       handleIdentifier(F, typedefDeclaration)
       beginTypeVariables(<)
         beginMetadataStar(@)
@@ -298,12 +298,12 @@
           endFormalParameter(null, null, ), null, null, FormalParameterKind.mandatory, MemberKind.GeneralizedFunctionType)
         endFormalParameters(1, (, ), MemberKind.GeneralizedFunctionType)
       endFunctionType(Function, null)
-    endFunctionTypeAlias(typedef, =, ;)
+    endTypedef(typedef, =, ;)
   endTopLevelDeclaration(typedef)
   beginMetadataStar(typedef)
   endMetadataStar(0)
   beginUncategorizedTopLevelDeclaration(typedef)
-    beginFunctionTypeAlias(typedef)
+    beginTypedef(typedef)
       handleIdentifier(F, typedefDeclaration)
       beginTypeVariables(<)
         beginMetadataStar(@)
@@ -363,12 +363,12 @@
           endFormalParameter(null, null, ), null, null, FormalParameterKind.mandatory, MemberKind.GeneralizedFunctionType)
         endFormalParameters(1, (, ), MemberKind.GeneralizedFunctionType)
       endFunctionType(Function, null)
-    endFunctionTypeAlias(typedef, =, ;)
+    endTypedef(typedef, =, ;)
   endTopLevelDeclaration(typedef)
   beginMetadataStar(typedef)
   endMetadataStar(0)
   beginUncategorizedTopLevelDeclaration(typedef)
-    beginFunctionTypeAlias(typedef)
+    beginTypedef(typedef)
       handleIdentifier(F, typedefDeclaration)
       beginTypeVariables(<)
         beginMetadataStar(@)
@@ -434,12 +434,12 @@
           endFormalParameter(null, null, ), null, null, FormalParameterKind.mandatory, MemberKind.GeneralizedFunctionType)
         endFormalParameters(1, (, ), MemberKind.GeneralizedFunctionType)
       endFunctionType(Function, null)
-    endFunctionTypeAlias(typedef, =, ;)
+    endTypedef(typedef, =, ;)
   endTopLevelDeclaration(typedef)
   beginMetadataStar(typedef)
   endMetadataStar(0)
   beginUncategorizedTopLevelDeclaration(typedef)
-    beginFunctionTypeAlias(typedef)
+    beginTypedef(typedef)
       handleIdentifier(F, typedefDeclaration)
       beginTypeVariables(<)
         beginMetadataStar(@)
@@ -508,12 +508,12 @@
           endFormalParameter(null, null, ), null, null, FormalParameterKind.mandatory, MemberKind.GeneralizedFunctionType)
         endFormalParameters(1, (, ), MemberKind.GeneralizedFunctionType)
       endFunctionType(Function, null)
-    endFunctionTypeAlias(typedef, =, ;)
+    endTypedef(typedef, =, ;)
   endTopLevelDeclaration(typedef)
   beginMetadataStar(typedef)
   endMetadataStar(0)
   beginUncategorizedTopLevelDeclaration(typedef)
-    beginFunctionTypeAlias(typedef)
+    beginTypedef(typedef)
       handleIdentifier(F, typedefDeclaration)
       beginTypeVariables(<)
         beginMetadataStar(@)
@@ -585,12 +585,12 @@
           endFormalParameter(null, null, ), null, null, FormalParameterKind.mandatory, MemberKind.GeneralizedFunctionType)
         endFormalParameters(1, (, ), MemberKind.GeneralizedFunctionType)
       endFunctionType(Function, null)
-    endFunctionTypeAlias(typedef, =, ;)
+    endTypedef(typedef, =, ;)
   endTopLevelDeclaration(typedef)
   beginMetadataStar(typedef)
   endMetadataStar(0)
   beginUncategorizedTopLevelDeclaration(typedef)
-    beginFunctionTypeAlias(typedef)
+    beginTypedef(typedef)
       handleIdentifier(F, typedefDeclaration)
       beginTypeVariables(<)
         beginMetadataStar(@)
@@ -665,12 +665,12 @@
           endFormalParameter(null, null, ), null, null, FormalParameterKind.mandatory, MemberKind.GeneralizedFunctionType)
         endFormalParameters(1, (, ), MemberKind.GeneralizedFunctionType)
       endFunctionType(Function, null)
-    endFunctionTypeAlias(typedef, =, ;)
+    endTypedef(typedef, =, ;)
   endTopLevelDeclaration(typedef)
   beginMetadataStar(typedef)
   endMetadataStar(0)
   beginUncategorizedTopLevelDeclaration(typedef)
-    beginFunctionTypeAlias(typedef)
+    beginTypedef(typedef)
       handleIdentifier(F, typedefDeclaration)
       beginTypeVariables(<)
         beginMetadataStar(@)
@@ -748,12 +748,12 @@
           endFormalParameter(null, null, ), null, null, FormalParameterKind.mandatory, MemberKind.GeneralizedFunctionType)
         endFormalParameters(1, (, ), MemberKind.GeneralizedFunctionType)
       endFunctionType(Function, null)
-    endFunctionTypeAlias(typedef, =, ;)
+    endTypedef(typedef, =, ;)
   endTopLevelDeclaration(typedef)
   beginMetadataStar(typedef)
   endMetadataStar(0)
   beginUncategorizedTopLevelDeclaration(typedef)
-    beginFunctionTypeAlias(typedef)
+    beginTypedef(typedef)
       handleIdentifier(F, typedefDeclaration)
       beginTypeVariables(<)
         beginMetadataStar(@)
@@ -834,7 +834,7 @@
           endFormalParameter(null, null, ), null, null, FormalParameterKind.mandatory, MemberKind.GeneralizedFunctionType)
         endFormalParameters(1, (, ), MemberKind.GeneralizedFunctionType)
       endFunctionType(Function, null)
-    endFunctionTypeAlias(typedef, =, ;)
+    endTypedef(typedef, =, ;)
   endTopLevelDeclaration(@)
   beginMetadataStar(@)
     beginMetadata(@)
@@ -936,7 +936,7 @@
       endArguments(1, (, ))
     endMetadata(@, ., class)
   endMetadataStar(9)
-  beginClassOrNamedMixinApplicationPrelude(class)
+  beginClassOrMixinOrNamedMixinApplicationPrelude(class)
     handleIdentifier(Y, classOrMixinDeclaration)
     handleNoTypeVariables({)
     beginClassDeclaration(class, null, Y)
@@ -945,8 +945,8 @@
       handleClassNoWithClause()
       handleClassOrMixinImplements(null, 0)
       handleClassHeader(class, class, null)
-      beginClassOrMixinBody(DeclarationKind.Class, {)
-      endClassOrMixinBody(DeclarationKind.Class, 0, {, })
+      beginClassOrMixinOrExtensionBody(DeclarationKind.Class, {)
+      endClassOrMixinOrExtensionBody(DeclarationKind.Class, 0, {, })
     endClassDeclaration(class, })
   endTopLevelDeclaration()
 endCompilationUnit(12, )
diff --git a/pkg/front_end/parser_testcases/general/metadata.dart.intertwined.expect b/pkg/front_end/parser_testcases/general/metadata.dart.intertwined.expect
index 9a0530c..905a217 100644
--- a/pkg/front_end/parser_testcases/general/metadata.dart.intertwined.expect
+++ b/pkg/front_end/parser_testcases/general/metadata.dart.intertwined.expect
@@ -231,7 +231,7 @@
     parseTopLevelKeywordDeclaration(), class, Instance of 'DirectiveContext')
       parseClassDeclarationModifiers(), class)
       parseClassOrNamedMixinApplication(null, class)
-        listener: beginClassOrNamedMixinApplicationPrelude(class)
+        listener: beginClassOrMixinOrNamedMixinApplicationPrelude(class)
         ensureIdentifier(class, classOrMixinDeclaration)
           listener: handleIdentifier(X, classOrMixinDeclaration)
         listener: handleNoTypeVariables({)
@@ -247,9 +247,9 @@
               listener: handleClassOrMixinImplements(null, 0)
             listener: handleClassHeader(class, class, null)
           parseClassOrMixinOrExtensionBody(X, DeclarationKind.Class, X)
-            listener: beginClassOrMixinBody(DeclarationKind.Class, {)
+            listener: beginClassOrMixinOrExtensionBody(DeclarationKind.Class, {)
             notEofOrValue(}, })
-            listener: endClassOrMixinBody(DeclarationKind.Class, 0, {, })
+            listener: endClassOrMixinOrExtensionBody(DeclarationKind.Class, 0, {, })
           listener: endClassDeclaration(class, })
   listener: endTopLevelDeclaration(typedef)
   parseTopLevelDeclarationImpl(}, Instance of 'DirectiveContext')
@@ -260,7 +260,7 @@
       parseTopLevelKeywordModifiers(}, typedef)
       parseTypedef(typedef)
         listener: beginUncategorizedTopLevelDeclaration(typedef)
-        listener: beginFunctionTypeAlias(typedef)
+        listener: beginTypedef(typedef)
         ensureIdentifierPotentiallyRecovered(typedef, typedefDeclaration, true)
           listener: handleIdentifier(F, typedefDeclaration)
         listener: beginTypeVariables(<)
@@ -337,7 +337,7 @@
             listener: endFormalParameters(1, (, ), MemberKind.GeneralizedFunctionType)
         listener: endFunctionType(Function, null)
         ensureSemicolon())
-        listener: endFunctionTypeAlias(typedef, =, ;)
+        listener: endTypedef(typedef, =, ;)
   listener: endTopLevelDeclaration(typedef)
   parseTopLevelDeclarationImpl(;, Instance of 'DirectiveContext')
     parseMetadataStar(;)
@@ -347,7 +347,7 @@
       parseTopLevelKeywordModifiers(;, typedef)
       parseTypedef(typedef)
         listener: beginUncategorizedTopLevelDeclaration(typedef)
-        listener: beginFunctionTypeAlias(typedef)
+        listener: beginTypedef(typedef)
         ensureIdentifierPotentiallyRecovered(typedef, typedefDeclaration, true)
           listener: handleIdentifier(F, typedefDeclaration)
         listener: beginTypeVariables(<)
@@ -436,7 +436,7 @@
             listener: endFormalParameters(1, (, ), MemberKind.GeneralizedFunctionType)
         listener: endFunctionType(Function, null)
         ensureSemicolon())
-        listener: endFunctionTypeAlias(typedef, =, ;)
+        listener: endTypedef(typedef, =, ;)
   listener: endTopLevelDeclaration(typedef)
   parseTopLevelDeclarationImpl(;, Instance of 'DirectiveContext')
     parseMetadataStar(;)
@@ -446,7 +446,7 @@
       parseTopLevelKeywordModifiers(;, typedef)
       parseTypedef(typedef)
         listener: beginUncategorizedTopLevelDeclaration(typedef)
-        listener: beginFunctionTypeAlias(typedef)
+        listener: beginTypedef(typedef)
         ensureIdentifierPotentiallyRecovered(typedef, typedefDeclaration, true)
           listener: handleIdentifier(F, typedefDeclaration)
         listener: beginTypeVariables(<)
@@ -541,7 +541,7 @@
             listener: endFormalParameters(1, (, ), MemberKind.GeneralizedFunctionType)
         listener: endFunctionType(Function, null)
         ensureSemicolon())
-        listener: endFunctionTypeAlias(typedef, =, ;)
+        listener: endTypedef(typedef, =, ;)
   listener: endTopLevelDeclaration(typedef)
   parseTopLevelDeclarationImpl(;, Instance of 'DirectiveContext')
     parseMetadataStar(;)
@@ -551,7 +551,7 @@
       parseTopLevelKeywordModifiers(;, typedef)
       parseTypedef(typedef)
         listener: beginUncategorizedTopLevelDeclaration(typedef)
-        listener: beginFunctionTypeAlias(typedef)
+        listener: beginTypedef(typedef)
         ensureIdentifierPotentiallyRecovered(typedef, typedefDeclaration, true)
           listener: handleIdentifier(F, typedefDeclaration)
         listener: beginTypeVariables(<)
@@ -658,7 +658,7 @@
             listener: endFormalParameters(1, (, ), MemberKind.GeneralizedFunctionType)
         listener: endFunctionType(Function, null)
         ensureSemicolon())
-        listener: endFunctionTypeAlias(typedef, =, ;)
+        listener: endTypedef(typedef, =, ;)
   listener: endTopLevelDeclaration(typedef)
   parseTopLevelDeclarationImpl(;, Instance of 'DirectiveContext')
     parseMetadataStar(;)
@@ -668,7 +668,7 @@
       parseTopLevelKeywordModifiers(;, typedef)
       parseTypedef(typedef)
         listener: beginUncategorizedTopLevelDeclaration(typedef)
-        listener: beginFunctionTypeAlias(typedef)
+        listener: beginTypedef(typedef)
         ensureIdentifierPotentiallyRecovered(typedef, typedefDeclaration, true)
           listener: handleIdentifier(F, typedefDeclaration)
         listener: beginTypeVariables(<)
@@ -790,7 +790,7 @@
             listener: endFormalParameters(1, (, ), MemberKind.GeneralizedFunctionType)
         listener: endFunctionType(Function, null)
         ensureSemicolon())
-        listener: endFunctionTypeAlias(typedef, =, ;)
+        listener: endTypedef(typedef, =, ;)
   listener: endTopLevelDeclaration(typedef)
   parseTopLevelDeclarationImpl(;, Instance of 'DirectiveContext')
     parseMetadataStar(;)
@@ -800,7 +800,7 @@
       parseTopLevelKeywordModifiers(;, typedef)
       parseTypedef(typedef)
         listener: beginUncategorizedTopLevelDeclaration(typedef)
-        listener: beginFunctionTypeAlias(typedef)
+        listener: beginTypedef(typedef)
         ensureIdentifierPotentiallyRecovered(typedef, typedefDeclaration, true)
           listener: handleIdentifier(F, typedefDeclaration)
         listener: beginTypeVariables(<)
@@ -928,7 +928,7 @@
             listener: endFormalParameters(1, (, ), MemberKind.GeneralizedFunctionType)
         listener: endFunctionType(Function, null)
         ensureSemicolon())
-        listener: endFunctionTypeAlias(typedef, =, ;)
+        listener: endTypedef(typedef, =, ;)
   listener: endTopLevelDeclaration(typedef)
   parseTopLevelDeclarationImpl(;, Instance of 'DirectiveContext')
     parseMetadataStar(;)
@@ -938,7 +938,7 @@
       parseTopLevelKeywordModifiers(;, typedef)
       parseTypedef(typedef)
         listener: beginUncategorizedTopLevelDeclaration(typedef)
-        listener: beginFunctionTypeAlias(typedef)
+        listener: beginTypedef(typedef)
         ensureIdentifierPotentiallyRecovered(typedef, typedefDeclaration, true)
           listener: handleIdentifier(F, typedefDeclaration)
         listener: beginTypeVariables(<)
@@ -1057,7 +1057,7 @@
             listener: endFormalParameters(1, (, ), MemberKind.GeneralizedFunctionType)
         listener: endFunctionType(Function, null)
         ensureSemicolon())
-        listener: endFunctionTypeAlias(typedef, =, ;)
+        listener: endTypedef(typedef, =, ;)
   listener: endTopLevelDeclaration(typedef)
   parseTopLevelDeclarationImpl(;, Instance of 'DirectiveContext')
     parseMetadataStar(;)
@@ -1067,7 +1067,7 @@
       parseTopLevelKeywordModifiers(;, typedef)
       parseTypedef(typedef)
         listener: beginUncategorizedTopLevelDeclaration(typedef)
-        listener: beginFunctionTypeAlias(typedef)
+        listener: beginTypedef(typedef)
         ensureIdentifierPotentiallyRecovered(typedef, typedefDeclaration, true)
           listener: handleIdentifier(F, typedefDeclaration)
         listener: beginTypeVariables(<)
@@ -1195,7 +1195,7 @@
             listener: endFormalParameters(1, (, ), MemberKind.GeneralizedFunctionType)
         listener: endFunctionType(Function, null)
         ensureSemicolon())
-        listener: endFunctionTypeAlias(typedef, =, ;)
+        listener: endTypedef(typedef, =, ;)
   listener: endTopLevelDeclaration(typedef)
   parseTopLevelDeclarationImpl(;, Instance of 'DirectiveContext')
     parseMetadataStar(;)
@@ -1205,7 +1205,7 @@
       parseTopLevelKeywordModifiers(;, typedef)
       parseTypedef(typedef)
         listener: beginUncategorizedTopLevelDeclaration(typedef)
-        listener: beginFunctionTypeAlias(typedef)
+        listener: beginTypedef(typedef)
         ensureIdentifierPotentiallyRecovered(typedef, typedefDeclaration, true)
           listener: handleIdentifier(F, typedefDeclaration)
         listener: beginTypeVariables(<)
@@ -1336,7 +1336,7 @@
             listener: endFormalParameters(1, (, ), MemberKind.GeneralizedFunctionType)
         listener: endFunctionType(Function, null)
         ensureSemicolon())
-        listener: endFunctionTypeAlias(typedef, =, ;)
+        listener: endTypedef(typedef, =, ;)
   listener: endTopLevelDeclaration(typedef)
   parseTopLevelDeclarationImpl(;, Instance of 'DirectiveContext')
     parseMetadataStar(;)
@@ -1346,7 +1346,7 @@
       parseTopLevelKeywordModifiers(;, typedef)
       parseTypedef(typedef)
         listener: beginUncategorizedTopLevelDeclaration(typedef)
-        listener: beginFunctionTypeAlias(typedef)
+        listener: beginTypedef(typedef)
         ensureIdentifierPotentiallyRecovered(typedef, typedefDeclaration, true)
           listener: handleIdentifier(F, typedefDeclaration)
         listener: beginTypeVariables(<)
@@ -1486,7 +1486,7 @@
             listener: endFormalParameters(1, (, ), MemberKind.GeneralizedFunctionType)
         listener: endFunctionType(Function, null)
         ensureSemicolon())
-        listener: endFunctionTypeAlias(typedef, =, ;)
+        listener: endTypedef(typedef, =, ;)
   listener: endTopLevelDeclaration(@)
   parseTopLevelDeclarationImpl(;, Instance of 'DirectiveContext')
     parseMetadataStar(;)
@@ -1716,7 +1716,7 @@
     parseTopLevelKeywordDeclaration(), class, Instance of 'DirectiveContext')
       parseClassDeclarationModifiers(), class)
       parseClassOrNamedMixinApplication(null, class)
-        listener: beginClassOrNamedMixinApplicationPrelude(class)
+        listener: beginClassOrMixinOrNamedMixinApplicationPrelude(class)
         ensureIdentifier(class, classOrMixinDeclaration)
           listener: handleIdentifier(Y, classOrMixinDeclaration)
         listener: handleNoTypeVariables({)
@@ -1732,9 +1732,9 @@
               listener: handleClassOrMixinImplements(null, 0)
             listener: handleClassHeader(class, class, null)
           parseClassOrMixinOrExtensionBody(Y, DeclarationKind.Class, Y)
-            listener: beginClassOrMixinBody(DeclarationKind.Class, {)
+            listener: beginClassOrMixinOrExtensionBody(DeclarationKind.Class, {)
             notEofOrValue(}, })
-            listener: endClassOrMixinBody(DeclarationKind.Class, 0, {, })
+            listener: endClassOrMixinOrExtensionBody(DeclarationKind.Class, 0, {, })
           listener: endClassDeclaration(class, })
   listener: endTopLevelDeclaration()
   reportAllErrorTokens(@)
diff --git a/pkg/front_end/parser_testcases/general/new_as_identifier.dart.expect b/pkg/front_end/parser_testcases/general/new_as_identifier.dart.expect
index f914b42..e3d208d 100644
--- a/pkg/front_end/parser_testcases/general/new_as_identifier.dart.expect
+++ b/pkg/front_end/parser_testcases/general/new_as_identifier.dart.expect
@@ -43,7 +43,7 @@
 beginCompilationUnit(class)
   beginMetadataStar(class)
   endMetadataStar(0)
-  beginClassOrNamedMixinApplicationPrelude(class)
+  beginClassOrMixinOrNamedMixinApplicationPrelude(class)
     handleIdentifier(C, classOrMixinDeclaration)
     handleNoTypeVariables({)
     beginClassDeclaration(class, null, C)
@@ -52,11 +52,11 @@
       handleClassNoWithClause()
       handleClassOrMixinImplements(null, 0)
       handleClassHeader(class, class, null)
-      beginClassOrMixinBody(DeclarationKind.Class, {)
+      beginClassOrMixinOrExtensionBody(DeclarationKind.Class, {)
         beginMetadataStar(C)
         endMetadataStar(0)
         beginMember()
-          beginMethod(null, null, null, null, null, C)
+          beginMethod(DeclarationKind.Class, null, null, null, null, null, C)
             handleNoType({)
             handleIdentifier(C, methodDeclaration)
             handleNewAsIdentifier(new)
@@ -73,7 +73,7 @@
         beginMetadataStar(C)
         endMetadataStar(0)
         beginMember()
-          beginMethod(null, null, null, null, null, C)
+          beginMethod(DeclarationKind.Class, null, null, null, null, null, C)
             handleNoType(;)
             handleIdentifier(C, methodDeclaration)
             handleIdentifier(constructor_field_initializer, methodDeclarationContinuation)
@@ -113,7 +113,7 @@
         endMetadataStar(0)
         beginMember()
           handleRecoverableError(MissingOperatorKeyword, =, =)
-          beginMethod(null, null, null, null, null, operator)
+          beginMethod(DeclarationKind.Class, null, null, null, null, null, operator)
             handleNoType(new)
             handleRecoverableError(Message[InvalidOperator, The string '=' isn't a user-definable operator., null, {lexeme: =}], =, =)
             handleInvalidOperatorName(operator, =)
@@ -139,12 +139,12 @@
           handleRecoverableError(Message[ExpectedClassMember, Expected a class member, but got ';'., null, {lexeme: ;}], ;, ;)
           handleInvalidMember(;)
         endMember()
-      endClassOrMixinBody(DeclarationKind.Class, 6, {, })
+      endClassOrMixinOrExtensionBody(DeclarationKind.Class, 6, {, })
     endClassDeclaration(class, })
   endTopLevelDeclaration(class)
   beginMetadataStar(class)
   endMetadataStar(0)
-  beginClassOrNamedMixinApplicationPrelude(class)
+  beginClassOrMixinOrNamedMixinApplicationPrelude(class)
     handleIdentifier(D, classOrMixinDeclaration)
     handleNoTypeVariables({)
     beginClassDeclaration(class, null, D)
@@ -153,11 +153,11 @@
       handleClassNoWithClause()
       handleClassOrMixinImplements(null, 0)
       handleClassHeader(class, class, null)
-      beginClassOrMixinBody(DeclarationKind.Class, {)
+      beginClassOrMixinOrExtensionBody(DeclarationKind.Class, {)
         beginMetadataStar(factory)
         endMetadataStar(0)
         beginMember()
-          beginFactoryMethod({, null, null)
+          beginFactoryMethod(DeclarationKind.Class, {, null, null)
             handleIdentifier(D, methodDeclaration)
             handleNewAsIdentifier(new)
             handleIdentifier(new, methodDeclarationContinuation)
@@ -177,7 +177,7 @@
         beginMetadataStar(factory)
         endMetadataStar(0)
         beginMember()
-          beginFactoryMethod(;, null, null)
+          beginFactoryMethod(DeclarationKind.Class, ;, null, null)
             handleIdentifier(D, methodDeclaration)
             handleIdentifier(factory_redirection, methodDeclarationContinuation)
             handleQualified(.)
@@ -200,7 +200,7 @@
         beginMetadataStar(factory)
         endMetadataStar(0)
         beginMember()
-          beginFactoryMethod(;, null, null)
+          beginFactoryMethod(DeclarationKind.Class, ;, null, null)
             handleIdentifier(D, methodDeclaration)
             handleIdentifier(factory_redirection_generic, methodDeclarationContinuation)
             handleQualified(.)
@@ -225,7 +225,7 @@
         beginMetadataStar(factory)
         endMetadataStar(0)
         beginMember()
-          beginFactoryMethod(;, null, null)
+          beginFactoryMethod(DeclarationKind.Class, ;, null, null)
             handleIdentifier(D, methodDeclaration)
             handleIdentifier(factory_redirection_prefixed, methodDeclarationContinuation)
             handleQualified(.)
@@ -248,7 +248,7 @@
         beginMetadataStar(factory)
         endMetadataStar(0)
         beginMember()
-          beginFactoryMethod(;, null, null)
+          beginFactoryMethod(DeclarationKind.Class, ;, null, null)
             handleIdentifier(D, methodDeclaration)
             handleIdentifier(factory_redirection_prefixed_generic, methodDeclarationContinuation)
             handleQualified(.)
@@ -275,7 +275,7 @@
         beginMetadataStar(D)
         endMetadataStar(0)
         beginMember()
-          beginMethod(null, null, null, null, null, D)
+          beginMethod(DeclarationKind.Class, null, null, null, null, null, D)
             handleNoType(;)
             handleIdentifier(D, methodDeclaration)
             handleIdentifier(super_invocation, methodDeclarationContinuation)
@@ -302,7 +302,7 @@
         beginMetadataStar(D)
         endMetadataStar(0)
         beginMember()
-          beginMethod(null, null, null, null, null, D)
+          beginMethod(DeclarationKind.Class, null, null, null, null, null, D)
             handleNoType(;)
             handleIdentifier(D, methodDeclaration)
             handleIdentifier(this_redirection, methodDeclarationContinuation)
@@ -326,13 +326,13 @@
             handleEmptyFunctionBody(;)
           endClassConstructor(null, D, (, :, ;)
         endMember()
-      endClassOrMixinBody(DeclarationKind.Class, 7, {, })
+      endClassOrMixinOrExtensionBody(DeclarationKind.Class, 7, {, })
     endClassDeclaration(class, })
   endTopLevelDeclaration(var)
   beginMetadataStar(var)
   endMetadataStar(0)
   beginTopLevelMember(var)
-    beginFields(})
+    beginFields(DeclarationKind.TopLevel, null, null, null, null, null, var, })
       handleNoType(var)
       handleIdentifier(constructor_invocation_const, topLevelVariableDeclaration)
       beginFieldInitializer(=)
@@ -354,7 +354,7 @@
   beginMetadataStar(var)
   endMetadataStar(0)
   beginTopLevelMember(var)
-    beginFields(;)
+    beginFields(DeclarationKind.TopLevel, null, null, null, null, null, var, ;)
       handleNoType(var)
       handleIdentifier(constructor_invocation_const_generic, topLevelVariableDeclaration)
       beginFieldInitializer(=)
@@ -378,7 +378,7 @@
   beginMetadataStar(var)
   endMetadataStar(0)
   beginTopLevelMember(var)
-    beginFields(;)
+    beginFields(DeclarationKind.TopLevel, null, null, null, null, null, var, ;)
       handleNoType(var)
       handleIdentifier(constructor_invocation_const_prefixed, topLevelVariableDeclaration)
       beginFieldInitializer(=)
@@ -400,7 +400,7 @@
   beginMetadataStar(var)
   endMetadataStar(0)
   beginTopLevelMember(var)
-    beginFields(;)
+    beginFields(DeclarationKind.TopLevel, null, null, null, null, null, var, ;)
       handleNoType(var)
       handleIdentifier(constructor_invocation_const_prefixed_generic, topLevelVariableDeclaration)
       beginFieldInitializer(=)
@@ -426,7 +426,7 @@
   beginMetadataStar(var)
   endMetadataStar(0)
   beginTopLevelMember(var)
-    beginFields(;)
+    beginFields(DeclarationKind.TopLevel, null, null, null, null, null, var, ;)
       handleNoType(var)
       handleIdentifier(constructor_invocation_explicit, topLevelVariableDeclaration)
       beginFieldInitializer(=)
@@ -448,7 +448,7 @@
   beginMetadataStar(var)
   endMetadataStar(0)
   beginTopLevelMember(var)
-    beginFields(;)
+    beginFields(DeclarationKind.TopLevel, null, null, null, null, null, var, ;)
       handleNoType(var)
       handleIdentifier(constructor_invocation_explicit_generic, topLevelVariableDeclaration)
       beginFieldInitializer(=)
@@ -472,7 +472,7 @@
   beginMetadataStar(var)
   endMetadataStar(0)
   beginTopLevelMember(var)
-    beginFields(;)
+    beginFields(DeclarationKind.TopLevel, null, null, null, null, null, var, ;)
       handleNoType(var)
       handleIdentifier(constructor_invocation_explicit_prefixed, topLevelVariableDeclaration)
       beginFieldInitializer(=)
@@ -494,7 +494,7 @@
   beginMetadataStar(var)
   endMetadataStar(0)
   beginTopLevelMember(var)
-    beginFields(;)
+    beginFields(DeclarationKind.TopLevel, null, null, null, null, null, var, ;)
       handleNoType(var)
       handleIdentifier(constructor_invocation_explicit_prefixed_generic, topLevelVariableDeclaration)
       beginFieldInitializer(=)
@@ -520,7 +520,7 @@
   beginMetadataStar(var)
   endMetadataStar(0)
   beginTopLevelMember(var)
-    beginFields(;)
+    beginFields(DeclarationKind.TopLevel, null, null, null, null, null, var, ;)
       handleNoType(var)
       handleIdentifier(constructor_invocation_implicit, topLevelVariableDeclaration)
       beginFieldInitializer(=)
@@ -541,7 +541,7 @@
   beginMetadataStar(var)
   endMetadataStar(0)
   beginTopLevelMember(var)
-    beginFields(;)
+    beginFields(DeclarationKind.TopLevel, null, null, null, null, null, var, ;)
       handleNoType(var)
       handleIdentifier(constructor_invocation_implicit_generic, topLevelVariableDeclaration)
       beginFieldInitializer(=)
@@ -565,7 +565,7 @@
   beginMetadataStar(var)
   endMetadataStar(0)
   beginTopLevelMember(var)
-    beginFields(;)
+    beginFields(DeclarationKind.TopLevel, null, null, null, null, null, var, ;)
       handleNoType(var)
       handleIdentifier(constructor_invocation_implicit_prefixed, topLevelVariableDeclaration)
       beginFieldInitializer(=)
@@ -591,7 +591,7 @@
   beginMetadataStar(var)
   endMetadataStar(0)
   beginTopLevelMember(var)
-    beginFields(;)
+    beginFields(DeclarationKind.TopLevel, null, null, null, null, null, var, ;)
       handleNoType(var)
       handleIdentifier(constructor_invocation_implicit_prefixed_generic, topLevelVariableDeclaration)
       beginFieldInitializer(=)
@@ -617,7 +617,7 @@
   beginMetadataStar(var)
   endMetadataStar(0)
   beginTopLevelMember(var)
-    beginFields(;)
+    beginFields(DeclarationKind.TopLevel, null, null, null, null, null, var, ;)
       handleNoType(var)
       handleIdentifier(constructor_tearoff, topLevelVariableDeclaration)
       beginFieldInitializer(=)
@@ -637,7 +637,7 @@
   beginMetadataStar(var)
   endMetadataStar(0)
   beginTopLevelMember(var)
-    beginFields(;)
+    beginFields(DeclarationKind.TopLevel, null, null, null, null, null, var, ;)
       handleNoType(var)
       handleIdentifier(constructor_tearoff_generic, topLevelVariableDeclaration)
       beginFieldInitializer(=)
@@ -663,7 +663,7 @@
   beginMetadataStar(var)
   endMetadataStar(0)
   beginTopLevelMember(var)
-    beginFields(;)
+    beginFields(DeclarationKind.TopLevel, null, null, null, null, null, var, ;)
       handleNoType(var)
       handleIdentifier(constructor_tearoff_generic_method_invocation, topLevelVariableDeclaration)
       beginFieldInitializer(=)
@@ -695,7 +695,7 @@
   beginMetadataStar(var)
   endMetadataStar(0)
   beginTopLevelMember(var)
-    beginFields(;)
+    beginFields(DeclarationKind.TopLevel, null, null, null, null, null, var, ;)
       handleNoType(var)
       handleIdentifier(constructor_tearoff_method_invocation, topLevelVariableDeclaration)
       beginFieldInitializer(=)
@@ -721,7 +721,7 @@
   beginMetadataStar(var)
   endMetadataStar(0)
   beginTopLevelMember(var)
-    beginFields(;)
+    beginFields(DeclarationKind.TopLevel, null, null, null, null, null, var, ;)
       handleNoType(var)
       handleIdentifier(constructor_tearoff_prefixed, topLevelVariableDeclaration)
       beginFieldInitializer(=)
@@ -746,7 +746,7 @@
   beginMetadataStar(var)
   endMetadataStar(0)
   beginTopLevelMember(var)
-    beginFields(;)
+    beginFields(DeclarationKind.TopLevel, null, null, null, null, null, var, ;)
       handleNoType(var)
       handleIdentifier(constructor_tearoff_prefixed_generic, topLevelVariableDeclaration)
       beginFieldInitializer(=)
@@ -777,7 +777,7 @@
   beginMetadataStar(var)
   endMetadataStar(0)
   beginTopLevelMember(var)
-    beginFields(;)
+    beginFields(DeclarationKind.TopLevel, null, null, null, null, null, var, ;)
       handleNoType(var)
       handleIdentifier(constructor_tearoff_prefixed_generic_method_invocation, topLevelVariableDeclaration)
       beginFieldInitializer(=)
@@ -814,7 +814,7 @@
   beginMetadataStar(var)
   endMetadataStar(0)
   beginTopLevelMember(var)
-    beginFields(;)
+    beginFields(DeclarationKind.TopLevel, null, null, null, null, null, var, ;)
       handleNoType(var)
       handleIdentifier(constructor_tearoff_prefixed_method_invocation, topLevelVariableDeclaration)
       beginFieldInitializer(=)
diff --git a/pkg/front_end/parser_testcases/general/new_as_identifier.dart.intertwined.expect b/pkg/front_end/parser_testcases/general/new_as_identifier.dart.intertwined.expect
index d88fc9d..f1c6c1c 100644
--- a/pkg/front_end/parser_testcases/general/new_as_identifier.dart.intertwined.expect
+++ b/pkg/front_end/parser_testcases/general/new_as_identifier.dart.intertwined.expect
@@ -9,7 +9,7 @@
     parseTopLevelKeywordDeclaration(, class, Instance of 'DirectiveContext')
       parseClassDeclarationModifiers(, class)
       parseClassOrNamedMixinApplication(null, class)
-        listener: beginClassOrNamedMixinApplicationPrelude(class)
+        listener: beginClassOrMixinOrNamedMixinApplicationPrelude(class)
         ensureIdentifier(class, classOrMixinDeclaration)
           listener: handleIdentifier(C, classOrMixinDeclaration)
         listener: handleNoTypeVariables({)
@@ -25,7 +25,7 @@
               listener: handleClassOrMixinImplements(null, 0)
             listener: handleClassHeader(class, class, null)
           parseClassOrMixinOrExtensionBody(C, DeclarationKind.Class, C)
-            listener: beginClassOrMixinBody(DeclarationKind.Class, {)
+            listener: beginClassOrMixinOrExtensionBody(DeclarationKind.Class, {)
             notEofOrValue(}, C)
             parseClassOrMixinOrExtensionMemberImpl({, DeclarationKind.Class, C)
               parseMetadataStar({)
@@ -34,7 +34,7 @@
               listener: beginMember()
               isReservedKeyword(.)
               parseMethod({, null, null, null, null, null, null, {, Instance of 'NoType', null, C, DeclarationKind.Class, C, false)
-                listener: beginMethod(null, null, null, null, null, C)
+                listener: beginMethod(DeclarationKind.Class, null, null, null, null, null, C)
                 listener: handleNoType({)
                 ensureIdentifierPotentiallyRecovered({, methodDeclaration, false)
                   listener: handleIdentifier(C, methodDeclaration)
@@ -70,7 +70,7 @@
               listener: beginMember()
               isReservedKeyword(.)
               parseMethod(;, null, null, null, null, null, null, ;, Instance of 'NoType', null, C, DeclarationKind.Class, C, false)
-                listener: beginMethod(null, null, null, null, null, C)
+                listener: beginMethod(DeclarationKind.Class, null, null, null, null, null, C)
                 listener: handleNoType(;)
                 ensureIdentifierPotentiallyRecovered(;, methodDeclaration, false)
                   listener: handleIdentifier(C, methodDeclaration)
@@ -170,7 +170,7 @@
                     listener: handleRecoverableError(MissingOperatorKeyword, =, =)
                   rewriter()
                   parseMethod(new, null, null, null, null, null, null, new, Instance of 'NoType', null, operator, DeclarationKind.Class, C, false)
-                    listener: beginMethod(null, null, null, null, null, operator)
+                    listener: beginMethod(DeclarationKind.Class, null, null, null, null, null, operator)
                     listener: handleNoType(new)
                     parseOperatorName(new)
                       isUnaryMinus(=)
@@ -226,7 +226,7 @@
                 listener: handleInvalidMember(;)
                 listener: endMember()
             notEofOrValue(}, })
-            listener: endClassOrMixinBody(DeclarationKind.Class, 6, {, })
+            listener: endClassOrMixinOrExtensionBody(DeclarationKind.Class, 6, {, })
           listener: endClassDeclaration(class, })
   listener: endTopLevelDeclaration(class)
   parseTopLevelDeclarationImpl(}, Instance of 'DirectiveContext')
@@ -236,7 +236,7 @@
     parseTopLevelKeywordDeclaration(}, class, Instance of 'DirectiveContext')
       parseClassDeclarationModifiers(}, class)
       parseClassOrNamedMixinApplication(null, class)
-        listener: beginClassOrNamedMixinApplicationPrelude(class)
+        listener: beginClassOrMixinOrNamedMixinApplicationPrelude(class)
         ensureIdentifier(class, classOrMixinDeclaration)
           listener: handleIdentifier(D, classOrMixinDeclaration)
         listener: handleNoTypeVariables({)
@@ -252,7 +252,7 @@
               listener: handleClassOrMixinImplements(null, 0)
             listener: handleClassHeader(class, class, null)
           parseClassOrMixinOrExtensionBody(D, DeclarationKind.Class, D)
-            listener: beginClassOrMixinBody(DeclarationKind.Class, {)
+            listener: beginClassOrMixinOrExtensionBody(DeclarationKind.Class, {)
             notEofOrValue(}, factory)
             parseClassOrMixinOrExtensionMemberImpl({, DeclarationKind.Class, D)
               parseMetadataStar({)
@@ -260,7 +260,7 @@
                 listener: endMetadataStar(0)
               listener: beginMember()
               parseFactoryMethod({, DeclarationKind.Class, {, null, null, null)
-                listener: beginFactoryMethod({, null, null)
+                listener: beginFactoryMethod(DeclarationKind.Class, {, null, null)
                 ensureIdentifier(factory, methodDeclaration)
                   listener: handleIdentifier(D, methodDeclaration)
                 parseQualifiedRestOpt(D, methodDeclarationContinuation)
@@ -311,7 +311,7 @@
                 listener: endMetadataStar(0)
               listener: beginMember()
               parseFactoryMethod(;, DeclarationKind.Class, ;, null, null, null)
-                listener: beginFactoryMethod(;, null, null)
+                listener: beginFactoryMethod(DeclarationKind.Class, ;, null, null)
                 ensureIdentifier(factory, methodDeclaration)
                   listener: handleIdentifier(D, methodDeclaration)
                 parseQualifiedRestOpt(D, methodDeclarationContinuation)
@@ -356,7 +356,7 @@
                 listener: endMetadataStar(0)
               listener: beginMember()
               parseFactoryMethod(;, DeclarationKind.Class, ;, null, null, null)
-                listener: beginFactoryMethod(;, null, null)
+                listener: beginFactoryMethod(DeclarationKind.Class, ;, null, null)
                 ensureIdentifier(factory, methodDeclaration)
                   listener: handleIdentifier(D, methodDeclaration)
                 parseQualifiedRestOpt(D, methodDeclarationContinuation)
@@ -402,7 +402,7 @@
                 listener: endMetadataStar(0)
               listener: beginMember()
               parseFactoryMethod(;, DeclarationKind.Class, ;, null, null, null)
-                listener: beginFactoryMethod(;, null, null)
+                listener: beginFactoryMethod(DeclarationKind.Class, ;, null, null)
                 ensureIdentifier(factory, methodDeclaration)
                   listener: handleIdentifier(D, methodDeclaration)
                 parseQualifiedRestOpt(D, methodDeclarationContinuation)
@@ -448,7 +448,7 @@
                 listener: endMetadataStar(0)
               listener: beginMember()
               parseFactoryMethod(;, DeclarationKind.Class, ;, null, null, null)
-                listener: beginFactoryMethod(;, null, null)
+                listener: beginFactoryMethod(DeclarationKind.Class, ;, null, null)
                 ensureIdentifier(factory, methodDeclaration)
                   listener: handleIdentifier(D, methodDeclaration)
                 parseQualifiedRestOpt(D, methodDeclarationContinuation)
@@ -499,7 +499,7 @@
               listener: beginMember()
               isReservedKeyword(.)
               parseMethod(;, null, null, null, null, null, null, ;, Instance of 'NoType', null, D, DeclarationKind.Class, D, false)
-                listener: beginMethod(null, null, null, null, null, D)
+                listener: beginMethod(DeclarationKind.Class, null, null, null, null, null, D)
                 listener: handleNoType(;)
                 ensureIdentifierPotentiallyRecovered(;, methodDeclaration, false)
                   listener: handleIdentifier(D, methodDeclaration)
@@ -562,7 +562,7 @@
               listener: beginMember()
               isReservedKeyword(.)
               parseMethod(;, null, null, null, null, null, null, ;, Instance of 'NoType', null, D, DeclarationKind.Class, D, false)
-                listener: beginMethod(null, null, null, null, null, D)
+                listener: beginMethod(DeclarationKind.Class, null, null, null, null, null, D)
                 listener: handleNoType(;)
                 ensureIdentifierPotentiallyRecovered(;, methodDeclaration, false)
                   listener: handleIdentifier(D, methodDeclaration)
@@ -617,7 +617,7 @@
                 listener: endClassConstructor(null, D, (, :, ;)
               listener: endMember()
             notEofOrValue(}, })
-            listener: endClassOrMixinBody(DeclarationKind.Class, 7, {, })
+            listener: endClassOrMixinOrExtensionBody(DeclarationKind.Class, 7, {, })
           listener: endClassDeclaration(class, })
   listener: endTopLevelDeclaration(var)
   parseTopLevelDeclarationImpl(}, Instance of 'DirectiveContext')
@@ -627,7 +627,7 @@
     parseTopLevelMemberImpl(})
       listener: beginTopLevelMember(var)
       parseFields(}, null, null, null, null, null, var, var, Instance of 'NoType', constructor_invocation_const, DeclarationKind.TopLevel, null, false)
-        listener: beginFields(})
+        listener: beginFields(DeclarationKind.TopLevel, null, null, null, null, null, var, })
         listener: handleNoType(var)
         ensureIdentifierPotentiallyRecovered(var, topLevelVariableDeclaration, false)
           listener: handleIdentifier(constructor_invocation_const, topLevelVariableDeclaration)
@@ -668,7 +668,7 @@
     parseTopLevelMemberImpl(;)
       listener: beginTopLevelMember(var)
       parseFields(;, null, null, null, null, null, var, var, Instance of 'NoType', constructor_invocation_const_generic, DeclarationKind.TopLevel, null, false)
-        listener: beginFields(;)
+        listener: beginFields(DeclarationKind.TopLevel, null, null, null, null, null, var, ;)
         listener: handleNoType(var)
         ensureIdentifierPotentiallyRecovered(var, topLevelVariableDeclaration, false)
           listener: handleIdentifier(constructor_invocation_const_generic, topLevelVariableDeclaration)
@@ -710,7 +710,7 @@
     parseTopLevelMemberImpl(;)
       listener: beginTopLevelMember(var)
       parseFields(;, null, null, null, null, null, var, var, Instance of 'NoType', constructor_invocation_const_prefixed, DeclarationKind.TopLevel, null, false)
-        listener: beginFields(;)
+        listener: beginFields(DeclarationKind.TopLevel, null, null, null, null, null, var, ;)
         listener: handleNoType(var)
         ensureIdentifierPotentiallyRecovered(var, topLevelVariableDeclaration, false)
           listener: handleIdentifier(constructor_invocation_const_prefixed, topLevelVariableDeclaration)
@@ -752,7 +752,7 @@
     parseTopLevelMemberImpl(;)
       listener: beginTopLevelMember(var)
       parseFields(;, null, null, null, null, null, var, var, Instance of 'NoType', constructor_invocation_const_prefixed_generic, DeclarationKind.TopLevel, null, false)
-        listener: beginFields(;)
+        listener: beginFields(DeclarationKind.TopLevel, null, null, null, null, null, var, ;)
         listener: handleNoType(var)
         ensureIdentifierPotentiallyRecovered(var, topLevelVariableDeclaration, false)
           listener: handleIdentifier(constructor_invocation_const_prefixed_generic, topLevelVariableDeclaration)
@@ -798,7 +798,7 @@
     parseTopLevelMemberImpl(;)
       listener: beginTopLevelMember(var)
       parseFields(;, null, null, null, null, null, var, var, Instance of 'NoType', constructor_invocation_explicit, DeclarationKind.TopLevel, null, false)
-        listener: beginFields(;)
+        listener: beginFields(DeclarationKind.TopLevel, null, null, null, null, null, var, ;)
         listener: handleNoType(var)
         ensureIdentifierPotentiallyRecovered(var, topLevelVariableDeclaration, false)
           listener: handleIdentifier(constructor_invocation_explicit, topLevelVariableDeclaration)
@@ -840,7 +840,7 @@
     parseTopLevelMemberImpl(;)
       listener: beginTopLevelMember(var)
       parseFields(;, null, null, null, null, null, var, var, Instance of 'NoType', constructor_invocation_explicit_generic, DeclarationKind.TopLevel, null, false)
-        listener: beginFields(;)
+        listener: beginFields(DeclarationKind.TopLevel, null, null, null, null, null, var, ;)
         listener: handleNoType(var)
         ensureIdentifierPotentiallyRecovered(var, topLevelVariableDeclaration, false)
           listener: handleIdentifier(constructor_invocation_explicit_generic, topLevelVariableDeclaration)
@@ -883,7 +883,7 @@
     parseTopLevelMemberImpl(;)
       listener: beginTopLevelMember(var)
       parseFields(;, null, null, null, null, null, var, var, Instance of 'NoType', constructor_invocation_explicit_prefixed, DeclarationKind.TopLevel, null, false)
-        listener: beginFields(;)
+        listener: beginFields(DeclarationKind.TopLevel, null, null, null, null, null, var, ;)
         listener: handleNoType(var)
         ensureIdentifierPotentiallyRecovered(var, topLevelVariableDeclaration, false)
           listener: handleIdentifier(constructor_invocation_explicit_prefixed, topLevelVariableDeclaration)
@@ -926,7 +926,7 @@
     parseTopLevelMemberImpl(;)
       listener: beginTopLevelMember(var)
       parseFields(;, null, null, null, null, null, var, var, Instance of 'NoType', constructor_invocation_explicit_prefixed_generic, DeclarationKind.TopLevel, null, false)
-        listener: beginFields(;)
+        listener: beginFields(DeclarationKind.TopLevel, null, null, null, null, null, var, ;)
         listener: handleNoType(var)
         ensureIdentifierPotentiallyRecovered(var, topLevelVariableDeclaration, false)
           listener: handleIdentifier(constructor_invocation_explicit_prefixed_generic, topLevelVariableDeclaration)
@@ -973,7 +973,7 @@
     parseTopLevelMemberImpl(;)
       listener: beginTopLevelMember(var)
       parseFields(;, null, null, null, null, null, var, var, Instance of 'NoType', constructor_invocation_implicit, DeclarationKind.TopLevel, null, false)
-        listener: beginFields(;)
+        listener: beginFields(DeclarationKind.TopLevel, null, null, null, null, null, var, ;)
         listener: handleNoType(var)
         ensureIdentifierPotentiallyRecovered(var, topLevelVariableDeclaration, false)
           listener: handleIdentifier(constructor_invocation_implicit, topLevelVariableDeclaration)
@@ -1019,7 +1019,7 @@
     parseTopLevelMemberImpl(;)
       listener: beginTopLevelMember(var)
       parseFields(;, null, null, null, null, null, var, var, Instance of 'NoType', constructor_invocation_implicit_generic, DeclarationKind.TopLevel, null, false)
-        listener: beginFields(;)
+        listener: beginFields(DeclarationKind.TopLevel, null, null, null, null, null, var, ;)
         listener: handleNoType(var)
         ensureIdentifierPotentiallyRecovered(var, topLevelVariableDeclaration, false)
           listener: handleIdentifier(constructor_invocation_implicit_generic, topLevelVariableDeclaration)
@@ -1060,7 +1060,7 @@
     parseTopLevelMemberImpl(;)
       listener: beginTopLevelMember(var)
       parseFields(;, null, null, null, null, null, var, var, Instance of 'NoType', constructor_invocation_implicit_prefixed, DeclarationKind.TopLevel, null, false)
-        listener: beginFields(;)
+        listener: beginFields(DeclarationKind.TopLevel, null, null, null, null, null, var, ;)
         listener: handleNoType(var)
         ensureIdentifierPotentiallyRecovered(var, topLevelVariableDeclaration, false)
           listener: handleIdentifier(constructor_invocation_implicit_prefixed, topLevelVariableDeclaration)
@@ -1117,7 +1117,7 @@
     parseTopLevelMemberImpl(;)
       listener: beginTopLevelMember(var)
       parseFields(;, null, null, null, null, null, var, var, Instance of 'NoType', constructor_invocation_implicit_prefixed_generic, DeclarationKind.TopLevel, null, false)
-        listener: beginFields(;)
+        listener: beginFields(DeclarationKind.TopLevel, null, null, null, null, null, var, ;)
         listener: handleNoType(var)
         ensureIdentifierPotentiallyRecovered(var, topLevelVariableDeclaration, false)
           listener: handleIdentifier(constructor_invocation_implicit_prefixed_generic, topLevelVariableDeclaration)
@@ -1162,7 +1162,7 @@
     parseTopLevelMemberImpl(;)
       listener: beginTopLevelMember(var)
       parseFields(;, null, null, null, null, null, var, var, Instance of 'NoType', constructor_tearoff, DeclarationKind.TopLevel, null, false)
-        listener: beginFields(;)
+        listener: beginFields(DeclarationKind.TopLevel, null, null, null, null, null, var, ;)
         listener: handleNoType(var)
         ensureIdentifierPotentiallyRecovered(var, topLevelVariableDeclaration, false)
           listener: handleIdentifier(constructor_tearoff, topLevelVariableDeclaration)
@@ -1204,7 +1204,7 @@
     parseTopLevelMemberImpl(;)
       listener: beginTopLevelMember(var)
       parseFields(;, null, null, null, null, null, var, var, Instance of 'NoType', constructor_tearoff_generic, DeclarationKind.TopLevel, null, false)
-        listener: beginFields(;)
+        listener: beginFields(DeclarationKind.TopLevel, null, null, null, null, null, var, ;)
         listener: handleNoType(var)
         ensureIdentifierPotentiallyRecovered(var, topLevelVariableDeclaration, false)
           listener: handleIdentifier(constructor_tearoff_generic, topLevelVariableDeclaration)
@@ -1252,7 +1252,7 @@
     parseTopLevelMemberImpl(;)
       listener: beginTopLevelMember(var)
       parseFields(;, null, null, null, null, null, var, var, Instance of 'NoType', constructor_tearoff_generic_method_invocation, DeclarationKind.TopLevel, null, false)
-        listener: beginFields(;)
+        listener: beginFields(DeclarationKind.TopLevel, null, null, null, null, null, var, ;)
         listener: handleNoType(var)
         ensureIdentifierPotentiallyRecovered(var, topLevelVariableDeclaration, false)
           listener: handleIdentifier(constructor_tearoff_generic_method_invocation, topLevelVariableDeclaration)
@@ -1315,7 +1315,7 @@
     parseTopLevelMemberImpl(;)
       listener: beginTopLevelMember(var)
       parseFields(;, null, null, null, null, null, var, var, Instance of 'NoType', constructor_tearoff_method_invocation, DeclarationKind.TopLevel, null, false)
-        listener: beginFields(;)
+        listener: beginFields(DeclarationKind.TopLevel, null, null, null, null, null, var, ;)
         listener: handleNoType(var)
         ensureIdentifierPotentiallyRecovered(var, topLevelVariableDeclaration, false)
           listener: handleIdentifier(constructor_tearoff_method_invocation, topLevelVariableDeclaration)
@@ -1372,7 +1372,7 @@
     parseTopLevelMemberImpl(;)
       listener: beginTopLevelMember(var)
       parseFields(;, null, null, null, null, null, var, var, Instance of 'NoType', constructor_tearoff_prefixed, DeclarationKind.TopLevel, null, false)
-        listener: beginFields(;)
+        listener: beginFields(DeclarationKind.TopLevel, null, null, null, null, null, var, ;)
         listener: handleNoType(var)
         ensureIdentifierPotentiallyRecovered(var, topLevelVariableDeclaration, false)
           listener: handleIdentifier(constructor_tearoff_prefixed, topLevelVariableDeclaration)
@@ -1425,7 +1425,7 @@
     parseTopLevelMemberImpl(;)
       listener: beginTopLevelMember(var)
       parseFields(;, null, null, null, null, null, var, var, Instance of 'NoType', constructor_tearoff_prefixed_generic, DeclarationKind.TopLevel, null, false)
-        listener: beginFields(;)
+        listener: beginFields(DeclarationKind.TopLevel, null, null, null, null, null, var, ;)
         listener: handleNoType(var)
         ensureIdentifierPotentiallyRecovered(var, topLevelVariableDeclaration, false)
           listener: handleIdentifier(constructor_tearoff_prefixed_generic, topLevelVariableDeclaration)
@@ -1484,7 +1484,7 @@
     parseTopLevelMemberImpl(;)
       listener: beginTopLevelMember(var)
       parseFields(;, null, null, null, null, null, var, var, Instance of 'NoType', constructor_tearoff_prefixed_generic_method_invocation, DeclarationKind.TopLevel, null, false)
-        listener: beginFields(;)
+        listener: beginFields(DeclarationKind.TopLevel, null, null, null, null, null, var, ;)
         listener: handleNoType(var)
         ensureIdentifierPotentiallyRecovered(var, topLevelVariableDeclaration, false)
           listener: handleIdentifier(constructor_tearoff_prefixed_generic_method_invocation, topLevelVariableDeclaration)
@@ -1558,7 +1558,7 @@
     parseTopLevelMemberImpl(;)
       listener: beginTopLevelMember(var)
       parseFields(;, null, null, null, null, null, var, var, Instance of 'NoType', constructor_tearoff_prefixed_method_invocation, DeclarationKind.TopLevel, null, false)
-        listener: beginFields(;)
+        listener: beginFields(DeclarationKind.TopLevel, null, null, null, null, null, var, ;)
         listener: handleNoType(var)
         ensureIdentifierPotentiallyRecovered(var, topLevelVariableDeclaration, false)
           listener: handleIdentifier(constructor_tearoff_prefixed_method_invocation, topLevelVariableDeclaration)
diff --git a/pkg/front_end/parser_testcases/general/operator_01.dart.expect b/pkg/front_end/parser_testcases/general/operator_01.dart.expect
index 88fbc2c..ff9df52 100644
--- a/pkg/front_end/parser_testcases/general/operator_01.dart.expect
+++ b/pkg/front_end/parser_testcases/general/operator_01.dart.expect
@@ -1,7 +1,7 @@
 beginCompilationUnit(class)
   beginMetadataStar(class)
   endMetadataStar(0)
-  beginClassOrNamedMixinApplicationPrelude(class)
+  beginClassOrMixinOrNamedMixinApplicationPrelude(class)
     handleIdentifier(Foo, classOrMixinDeclaration)
     handleNoTypeVariables({)
     beginClassDeclaration(class, null, Foo)
@@ -10,11 +10,11 @@
       handleClassNoWithClause()
       handleClassOrMixinImplements(null, 0)
       handleClassHeader(class, class, null)
-      beginClassOrMixinBody(DeclarationKind.Class, {)
+      beginClassOrMixinOrExtensionBody(DeclarationKind.Class, {)
         beginMetadataStar(bool)
         endMetadataStar(0)
         beginMember()
-          beginMethod(null, null, null, null, null, operator)
+          beginMethod(DeclarationKind.Class, null, null, null, null, null, operator)
             handleIdentifier(bool, typeReference)
             handleNoTypeArguments(operator)
             handleType(bool, null)
@@ -43,7 +43,7 @@
         beginMetadataStar(int)
         endMetadataStar(0)
         beginMember()
-          beginMethod(null, null, null, null, null, operator)
+          beginMethod(DeclarationKind.Class, null, null, null, null, null, operator)
             handleIdentifier(int, typeReference)
             handleNoTypeArguments(operator)
             handleType(int, null)
@@ -72,7 +72,7 @@
         beginMetadataStar(bool)
         endMetadataStar(0)
         beginMember()
-          beginMethod(null, null, null, null, null, operator)
+          beginMethod(DeclarationKind.Class, null, null, null, null, null, operator)
             handleIdentifier(bool, typeReference)
             handleNoTypeArguments(operator)
             handleType(bool, null)
@@ -101,7 +101,7 @@
         beginMetadataStar(int)
         endMetadataStar(0)
         beginMember()
-          beginMethod(null, null, null, null, null, operator)
+          beginMethod(DeclarationKind.Class, null, null, null, null, null, operator)
             handleIdentifier(int, typeReference)
             handleNoTypeArguments(operator)
             handleType(int, null)
@@ -130,7 +130,7 @@
         beginMetadataStar(int)
         endMetadataStar(0)
         beginMember()
-          beginMethod(null, null, null, null, null, operator)
+          beginMethod(DeclarationKind.Class, null, null, null, null, null, operator)
             handleIdentifier(int, typeReference)
             handleNoTypeArguments(operator)
             handleType(int, null)
@@ -156,7 +156,7 @@
             endBlockFunctionBody(1, {, })
           endClassMethod(null, int, (, null, })
         endMember()
-      endClassOrMixinBody(DeclarationKind.Class, 5, {, })
+      endClassOrMixinOrExtensionBody(DeclarationKind.Class, 5, {, })
     endClassDeclaration(class, })
   endTopLevelDeclaration()
 endCompilationUnit(1, )
diff --git a/pkg/front_end/parser_testcases/general/operator_01.dart.intertwined.expect b/pkg/front_end/parser_testcases/general/operator_01.dart.intertwined.expect
index d90a492..1fe4197 100644
--- a/pkg/front_end/parser_testcases/general/operator_01.dart.intertwined.expect
+++ b/pkg/front_end/parser_testcases/general/operator_01.dart.intertwined.expect
@@ -9,7 +9,7 @@
     parseTopLevelKeywordDeclaration(, class, Instance of 'DirectiveContext')
       parseClassDeclarationModifiers(, class)
       parseClassOrNamedMixinApplication(null, class)
-        listener: beginClassOrNamedMixinApplicationPrelude(class)
+        listener: beginClassOrMixinOrNamedMixinApplicationPrelude(class)
         ensureIdentifier(class, classOrMixinDeclaration)
           listener: handleIdentifier(Foo, classOrMixinDeclaration)
         listener: handleNoTypeVariables({)
@@ -25,7 +25,7 @@
               listener: handleClassOrMixinImplements(null, 0)
             listener: handleClassHeader(class, class, null)
           parseClassOrMixinOrExtensionBody(Foo, DeclarationKind.Class, Foo)
-            listener: beginClassOrMixinBody(DeclarationKind.Class, {)
+            listener: beginClassOrMixinOrExtensionBody(DeclarationKind.Class, {)
             notEofOrValue(}, bool)
             parseClassOrMixinOrExtensionMemberImpl({, DeclarationKind.Class, Foo)
               parseMetadataStar({)
@@ -33,7 +33,7 @@
                 listener: endMetadataStar(0)
               listener: beginMember()
               parseMethod({, null, null, null, null, null, null, {, Instance of 'SimpleType', null, operator, DeclarationKind.Class, Foo, false)
-                listener: beginMethod(null, null, null, null, null, operator)
+                listener: beginMethod(DeclarationKind.Class, null, null, null, null, null, operator)
                 listener: handleIdentifier(bool, typeReference)
                 listener: handleNoTypeArguments(operator)
                 listener: handleType(bool, null)
@@ -91,7 +91,7 @@
                 listener: endMetadataStar(0)
               listener: beginMember()
               parseMethod(}, null, null, null, null, null, null, }, Instance of 'SimpleType', null, operator, DeclarationKind.Class, Foo, false)
-                listener: beginMethod(null, null, null, null, null, operator)
+                listener: beginMethod(DeclarationKind.Class, null, null, null, null, null, operator)
                 listener: handleIdentifier(int, typeReference)
                 listener: handleNoTypeArguments(operator)
                 listener: handleType(int, null)
@@ -149,7 +149,7 @@
                 listener: endMetadataStar(0)
               listener: beginMember()
               parseMethod(}, null, null, null, null, null, null, }, Instance of 'SimpleType', null, operator, DeclarationKind.Class, Foo, false)
-                listener: beginMethod(null, null, null, null, null, operator)
+                listener: beginMethod(DeclarationKind.Class, null, null, null, null, null, operator)
                 listener: handleIdentifier(bool, typeReference)
                 listener: handleNoTypeArguments(operator)
                 listener: handleType(bool, null)
@@ -207,7 +207,7 @@
                 listener: endMetadataStar(0)
               listener: beginMember()
               parseMethod(}, null, null, null, null, null, null, }, Instance of 'SimpleType', null, operator, DeclarationKind.Class, Foo, false)
-                listener: beginMethod(null, null, null, null, null, operator)
+                listener: beginMethod(DeclarationKind.Class, null, null, null, null, null, operator)
                 listener: handleIdentifier(int, typeReference)
                 listener: handleNoTypeArguments(operator)
                 listener: handleType(int, null)
@@ -265,7 +265,7 @@
                 listener: endMetadataStar(0)
               listener: beginMember()
               parseMethod(}, null, null, null, null, null, null, }, Instance of 'SimpleType', null, operator, DeclarationKind.Class, Foo, false)
-                listener: beginMethod(null, null, null, null, null, operator)
+                listener: beginMethod(DeclarationKind.Class, null, null, null, null, null, operator)
                 listener: handleIdentifier(int, typeReference)
                 listener: handleNoTypeArguments(operator)
                 listener: handleType(int, null)
@@ -317,7 +317,7 @@
                 listener: endClassMethod(null, int, (, null, })
               listener: endMember()
             notEofOrValue(}, })
-            listener: endClassOrMixinBody(DeclarationKind.Class, 5, {, })
+            listener: endClassOrMixinOrExtensionBody(DeclarationKind.Class, 5, {, })
           listener: endClassDeclaration(class, })
   listener: endTopLevelDeclaration()
   reportAllErrorTokens(class)
diff --git a/pkg/front_end/parser_testcases/general/operator_hat_class.crash_dart.expect b/pkg/front_end/parser_testcases/general/operator_hat_class.crash_dart.expect
index 3c769e2..90dae7d 100644
--- a/pkg/front_end/parser_testcases/general/operator_hat_class.crash_dart.expect
+++ b/pkg/front_end/parser_testcases/general/operator_hat_class.crash_dart.expect
@@ -7,7 +7,7 @@
 beginCompilationUnit(class)
   beginMetadataStar(class)
   endMetadataStar(0)
-  beginClassOrNamedMixinApplicationPrelude(class)
+  beginClassOrMixinOrNamedMixinApplicationPrelude(class)
     handleRecoverableError(Message[BuiltInIdentifierInDeclaration, Can't use 'operator' as a name here., null, {lexeme: operator}], operator, operator)
     handleIdentifier(operator, classOrMixinDeclaration)
     handleNoTypeVariables({)
@@ -17,11 +17,11 @@
       handleClassNoWithClause()
       handleClassOrMixinImplements(null, 0)
       handleClassHeader(class, class, null)
-      beginClassOrMixinBody(DeclarationKind.Class, {)
+      beginClassOrMixinOrExtensionBody(DeclarationKind.Class, {)
         beginMetadataStar(operator)
         endMetadataStar(0)
         beginMember()
-          beginMethod(null, null, null, null, null, operator)
+          beginMethod(DeclarationKind.Class, null, null, null, null, null, operator)
             handleNoType({)
             handleOperatorName(operator, ^)
             handleNoTypeVariables(()
@@ -42,7 +42,7 @@
             endBlockFunctionBody(0, {, })
           endClassConstructor(null, operator, (, null, })
         endMember()
-      endClassOrMixinBody(DeclarationKind.Class, 1, {, })
+      endClassOrMixinOrExtensionBody(DeclarationKind.Class, 1, {, })
     endClassDeclaration(class, })
   endTopLevelDeclaration()
 endCompilationUnit(1, )
diff --git a/pkg/front_end/parser_testcases/general/operator_hat_class.crash_dart.intertwined.expect b/pkg/front_end/parser_testcases/general/operator_hat_class.crash_dart.intertwined.expect
index 2b3c832..48dee75 100644
--- a/pkg/front_end/parser_testcases/general/operator_hat_class.crash_dart.intertwined.expect
+++ b/pkg/front_end/parser_testcases/general/operator_hat_class.crash_dart.intertwined.expect
@@ -9,7 +9,7 @@
     parseTopLevelKeywordDeclaration(, class, Instance of 'DirectiveContext')
       parseClassDeclarationModifiers(, class)
       parseClassOrNamedMixinApplication(null, class)
-        listener: beginClassOrNamedMixinApplicationPrelude(class)
+        listener: beginClassOrMixinOrNamedMixinApplicationPrelude(class)
         ensureIdentifier(class, classOrMixinDeclaration)
           reportRecoverableErrorWithToken(operator, Instance of 'Template<(Token) => Message>')
             listener: handleRecoverableError(Message[BuiltInIdentifierInDeclaration, Can't use 'operator' as a name here., null, {lexeme: operator}], operator, operator)
@@ -27,7 +27,7 @@
               listener: handleClassOrMixinImplements(null, 0)
             listener: handleClassHeader(class, class, null)
           parseClassOrMixinOrExtensionBody(operator, DeclarationKind.Class, operator)
-            listener: beginClassOrMixinBody(DeclarationKind.Class, {)
+            listener: beginClassOrMixinOrExtensionBody(DeclarationKind.Class, {)
             notEofOrValue(}, operator)
             parseClassOrMixinOrExtensionMemberImpl({, DeclarationKind.Class, operator)
               parseMetadataStar({)
@@ -35,7 +35,7 @@
                 listener: endMetadataStar(0)
               listener: beginMember()
               parseMethod({, null, null, null, null, null, null, {, Instance of 'NoType', null, operator, DeclarationKind.Class, operator, false)
-                listener: beginMethod(null, null, null, null, null, operator)
+                listener: beginMethod(DeclarationKind.Class, null, null, null, null, null, operator)
                 listener: handleNoType({)
                 parseOperatorName({)
                   listener: handleOperatorName(operator, ^)
@@ -71,7 +71,7 @@
                 listener: endClassConstructor(null, operator, (, null, })
               listener: endMember()
             notEofOrValue(}, })
-            listener: endClassOrMixinBody(DeclarationKind.Class, 1, {, })
+            listener: endClassOrMixinOrExtensionBody(DeclarationKind.Class, 1, {, })
           listener: endClassDeclaration(class, })
   listener: endTopLevelDeclaration()
   reportAllErrorTokens(class)
diff --git a/pkg/front_end/parser_testcases/nnbd/error_recovery/abstract_placement.dart.expect b/pkg/front_end/parser_testcases/nnbd/error_recovery/abstract_placement.dart.expect
index 2baf5d9..b9eb4f6 100644
--- a/pkg/front_end/parser_testcases/nnbd/error_recovery/abstract_placement.dart.expect
+++ b/pkg/front_end/parser_testcases/nnbd/error_recovery/abstract_placement.dart.expect
@@ -55,7 +55,7 @@
 beginCompilationUnit(abstract)
   beginMetadataStar(abstract)
   endMetadataStar(0)
-  beginClassOrNamedMixinApplicationPrelude(abstract)
+  beginClassOrMixinOrNamedMixinApplicationPrelude(abstract)
     handleIdentifier(C, classOrMixinDeclaration)
     handleNoTypeVariables({)
     beginClassDeclaration(abstract, abstract, C)
@@ -64,12 +64,12 @@
       handleClassNoWithClause()
       handleClassOrMixinImplements(null, 0)
       handleClassHeader(abstract, class, null)
-      beginClassOrMixinBody(DeclarationKind.Class, {)
+      beginClassOrMixinOrExtensionBody(DeclarationKind.Class, {)
         beginMetadataStar(final)
         endMetadataStar(0)
         handleRecoverableError(Message[ModifierOutOfOrder, The modifier 'abstract' should be before the modifier 'final'., Try re-ordering the modifiers., {string: abstract, string2: final}], abstract, abstract)
         beginMember()
-          beginFields({)
+          beginFields(DeclarationKind.Class, abstract, null, null, null, null, final, {)
             handleIdentifier(int, typeReference)
             handleNoTypeArguments(i1)
             handleType(int, null)
@@ -81,7 +81,7 @@
         endMetadataStar(0)
         handleRecoverableError(Message[ModifierOutOfOrder, The modifier 'abstract' should be before the modifier 'final'., Try re-ordering the modifiers., {string: abstract, string2: final}], abstract, abstract)
         beginMember()
-          beginFields(;)
+          beginFields(DeclarationKind.Class, abstract, null, null, null, null, final, ;)
             handleNoType(abstract)
             handleIdentifier(i2, fieldDeclaration)
             handleNoFieldInitializer(;)
@@ -91,7 +91,7 @@
         endMetadataStar(0)
         handleRecoverableError(Message[ModifierOutOfOrder, The modifier 'abstract' should be before the modifier 'covariant'., Try re-ordering the modifiers., {string: abstract, string2: covariant}], abstract, abstract)
         beginMember()
-          beginFields(;)
+          beginFields(DeclarationKind.Class, abstract, null, null, covariant, null, null, ;)
             handleIdentifier(num, typeReference)
             handleNoTypeArguments(i3)
             handleType(num, null)
@@ -103,7 +103,7 @@
         endMetadataStar(0)
         handleRecoverableError(Message[ModifierOutOfOrder, The modifier 'abstract' should be before the modifier 'covariant'., Try re-ordering the modifiers., {string: abstract, string2: covariant}], abstract, abstract)
         beginMember()
-          beginFields(;)
+          beginFields(DeclarationKind.Class, abstract, null, null, covariant, null, var, ;)
             handleNoType(var)
             handleIdentifier(i4, fieldDeclaration)
             handleNoFieldInitializer(;)
@@ -113,7 +113,7 @@
         endMetadataStar(0)
         handleRecoverableError(Message[ModifierOutOfOrder, The modifier 'abstract' should be before the modifier 'final'., Try re-ordering the modifiers., {string: abstract, string2: final}], abstract, abstract)
         beginMember()
-          beginFields(;)
+          beginFields(DeclarationKind.Class, abstract, null, null, null, null, final, ;)
             handleNoType(abstract)
             handleIdentifier(i5, fieldDeclaration)
             handleNoFieldInitializer(;)
@@ -123,7 +123,7 @@
         endMetadataStar(0)
         handleRecoverableError(Message[ModifierOutOfOrder, The modifier 'abstract' should be before the modifier 'var'., Try re-ordering the modifiers., {string: abstract, string2: var}], abstract, abstract)
         beginMember()
-          beginFields(;)
+          beginFields(DeclarationKind.Class, abstract, null, null, null, null, var, ;)
             handleNoType(abstract)
             handleIdentifier(i6, fieldDeclaration)
             handleNoFieldInitializer(;)
@@ -132,7 +132,7 @@
         beginMetadataStar(C)
         endMetadataStar(0)
         beginMember()
-          beginFields(;)
+          beginFields(DeclarationKind.Class, null, null, null, null, null, null, ;)
             handleIdentifier(C, typeReference)
             handleNoTypeArguments(abstract)
             handleType(C, null)
@@ -144,14 +144,14 @@
         beginMetadataStar(i7)
         endMetadataStar(0)
         beginMember()
-          beginFields(;)
+          beginFields(DeclarationKind.Class, null, null, null, null, null, null, ;)
             handleRecoverableError(MissingConstFinalVarOrType, i7, i7)
             handleNoType(;)
             handleIdentifier(i7, fieldDeclaration)
             handleNoFieldInitializer(;)
           endClassFields(null, null, null, null, null, null, 1, i7, ;)
         endMember()
-      endClassOrMixinBody(DeclarationKind.Class, 8, {, })
+      endClassOrMixinOrExtensionBody(DeclarationKind.Class, 8, {, })
     endClassDeclaration(abstract, })
   endTopLevelDeclaration(var)
   beginMetadataStar(var)
@@ -159,7 +159,7 @@
   beginTopLevelMember(var)
     handleRecoverableError(Message[ModifierOutOfOrder, The modifier 'abstract' should be before the modifier 'var'., Try re-ordering the modifiers., {string: abstract, string2: var}], abstract, abstract)
     handleRecoverableError(Message[ExtraneousModifier, Can't have modifier 'abstract' here., Try removing 'abstract'., {lexeme: abstract}], abstract, abstract)
-    beginFields(})
+    beginFields(DeclarationKind.TopLevel, null, null, null, null, null, var, })
       handleNoType(abstract)
       handleIdentifier(foo, topLevelVariableDeclaration)
       handleNoFieldInitializer(;)
@@ -167,7 +167,7 @@
   endTopLevelDeclaration(abstract)
   beginMetadataStar(abstract)
   endMetadataStar(0)
-  beginClassOrNamedMixinApplicationPrelude(abstract)
+  beginClassOrMixinOrNamedMixinApplicationPrelude(abstract)
     handleIdentifier(Bar, classOrMixinDeclaration)
     handleNoTypeVariables({)
     beginClassDeclaration(abstract, abstract, Bar)
@@ -176,20 +176,20 @@
       handleClassNoWithClause()
       handleClassOrMixinImplements(null, 0)
       handleClassHeader(abstract, class, null)
-      beginClassOrMixinBody(DeclarationKind.Class, {)
+      beginClassOrMixinOrExtensionBody(DeclarationKind.Class, {)
         beginMetadataStar(covariant)
         endMetadataStar(0)
         handleRecoverableError(Message[ModifierOutOfOrder, The modifier 'required' should be before the modifier 'covariant'., Try re-ordering the modifiers., {string: required, string2: covariant}], required, required)
         handleRecoverableError(Message[ExtraneousModifier, Can't have modifier 'required' here., Try removing 'required'., {lexeme: required}], required, required)
         beginMember()
-          beginFields({)
+          beginFields(DeclarationKind.Class, null, null, null, covariant, null, null, {)
             handleRecoverableError(MissingConstFinalVarOrType, x, x)
             handleNoType(required)
             handleIdentifier(x, fieldDeclaration)
             handleNoFieldInitializer(;)
           endClassFields(null, null, null, covariant, null, null, 1, covariant, ;)
         endMember()
-      endClassOrMixinBody(DeclarationKind.Class, 1, {, })
+      endClassOrMixinOrExtensionBody(DeclarationKind.Class, 1, {, })
     endClassDeclaration(abstract, })
   endTopLevelDeclaration()
 endCompilationUnit(3, )
diff --git a/pkg/front_end/parser_testcases/nnbd/error_recovery/abstract_placement.dart.intertwined.expect b/pkg/front_end/parser_testcases/nnbd/error_recovery/abstract_placement.dart.intertwined.expect
index 153ca2c..93bf99d 100644
--- a/pkg/front_end/parser_testcases/nnbd/error_recovery/abstract_placement.dart.intertwined.expect
+++ b/pkg/front_end/parser_testcases/nnbd/error_recovery/abstract_placement.dart.intertwined.expect
@@ -10,7 +10,7 @@
       parseClassDeclarationModifiers(, class)
         parseTopLevelKeywordModifiers(abstract, class)
       parseClassOrNamedMixinApplication(abstract, class)
-        listener: beginClassOrNamedMixinApplicationPrelude(abstract)
+        listener: beginClassOrMixinOrNamedMixinApplicationPrelude(abstract)
         ensureIdentifier(class, classOrMixinDeclaration)
           listener: handleIdentifier(C, classOrMixinDeclaration)
         listener: handleNoTypeVariables({)
@@ -26,7 +26,7 @@
               listener: handleClassOrMixinImplements(null, 0)
             listener: handleClassHeader(abstract, class, null)
           parseClassOrMixinOrExtensionBody(C, DeclarationKind.Class, C)
-            listener: beginClassOrMixinBody(DeclarationKind.Class, {)
+            listener: beginClassOrMixinOrExtensionBody(DeclarationKind.Class, {)
             notEofOrValue(}, final)
             parseClassOrMixinOrExtensionMemberImpl({, DeclarationKind.Class, C)
               parseMetadataStar({)
@@ -36,7 +36,7 @@
                 listener: handleRecoverableError(Message[ModifierOutOfOrder, The modifier 'abstract' should be before the modifier 'final'., Try re-ordering the modifiers., {string: abstract, string2: final}], abstract, abstract)
               listener: beginMember()
               parseFields({, abstract, null, null, null, null, final, abstract, Instance of 'SimpleType', i1, DeclarationKind.Class, C, false)
-                listener: beginFields({)
+                listener: beginFields(DeclarationKind.Class, abstract, null, null, null, null, final, {)
                 listener: handleIdentifier(int, typeReference)
                 listener: handleNoTypeArguments(i1)
                 listener: handleType(int, null)
@@ -55,7 +55,7 @@
                 listener: handleRecoverableError(Message[ModifierOutOfOrder, The modifier 'abstract' should be before the modifier 'final'., Try re-ordering the modifiers., {string: abstract, string2: final}], abstract, abstract)
               listener: beginMember()
               parseFields(;, abstract, null, null, null, null, final, abstract, Instance of 'NoType', i2, DeclarationKind.Class, C, false)
-                listener: beginFields(;)
+                listener: beginFields(DeclarationKind.Class, abstract, null, null, null, null, final, ;)
                 listener: handleNoType(abstract)
                 ensureIdentifierPotentiallyRecovered(abstract, fieldDeclaration, false)
                   listener: handleIdentifier(i2, fieldDeclaration)
@@ -72,7 +72,7 @@
                 listener: handleRecoverableError(Message[ModifierOutOfOrder, The modifier 'abstract' should be before the modifier 'covariant'., Try re-ordering the modifiers., {string: abstract, string2: covariant}], abstract, abstract)
               listener: beginMember()
               parseFields(;, abstract, null, null, covariant, null, null, abstract, Instance of 'SimpleType', i3, DeclarationKind.Class, C, false)
-                listener: beginFields(;)
+                listener: beginFields(DeclarationKind.Class, abstract, null, null, covariant, null, null, ;)
                 listener: handleIdentifier(num, typeReference)
                 listener: handleNoTypeArguments(i3)
                 listener: handleType(num, null)
@@ -91,7 +91,7 @@
                 listener: handleRecoverableError(Message[ModifierOutOfOrder, The modifier 'abstract' should be before the modifier 'covariant'., Try re-ordering the modifiers., {string: abstract, string2: covariant}], abstract, abstract)
               listener: beginMember()
               parseFields(;, abstract, null, null, covariant, null, var, var, Instance of 'NoType', i4, DeclarationKind.Class, C, false)
-                listener: beginFields(;)
+                listener: beginFields(DeclarationKind.Class, abstract, null, null, covariant, null, var, ;)
                 listener: handleNoType(var)
                 ensureIdentifierPotentiallyRecovered(var, fieldDeclaration, false)
                   listener: handleIdentifier(i4, fieldDeclaration)
@@ -108,7 +108,7 @@
                 listener: handleRecoverableError(Message[ModifierOutOfOrder, The modifier 'abstract' should be before the modifier 'final'., Try re-ordering the modifiers., {string: abstract, string2: final}], abstract, abstract)
               listener: beginMember()
               parseFields(;, abstract, null, null, null, null, final, abstract, Instance of 'NoType', i5, DeclarationKind.Class, C, false)
-                listener: beginFields(;)
+                listener: beginFields(DeclarationKind.Class, abstract, null, null, null, null, final, ;)
                 listener: handleNoType(abstract)
                 ensureIdentifierPotentiallyRecovered(abstract, fieldDeclaration, false)
                   listener: handleIdentifier(i5, fieldDeclaration)
@@ -125,7 +125,7 @@
                 listener: handleRecoverableError(Message[ModifierOutOfOrder, The modifier 'abstract' should be before the modifier 'var'., Try re-ordering the modifiers., {string: abstract, string2: var}], abstract, abstract)
               listener: beginMember()
               parseFields(;, abstract, null, null, null, null, var, abstract, Instance of 'NoType', i6, DeclarationKind.Class, C, false)
-                listener: beginFields(;)
+                listener: beginFields(DeclarationKind.Class, abstract, null, null, null, null, var, ;)
                 listener: handleNoType(abstract)
                 ensureIdentifierPotentiallyRecovered(abstract, fieldDeclaration, false)
                   listener: handleIdentifier(i6, fieldDeclaration)
@@ -140,7 +140,7 @@
                 listener: endMetadataStar(0)
               listener: beginMember()
               parseFields(;, null, null, null, null, null, null, ;, Instance of 'SimpleType', abstract, DeclarationKind.Class, C, false)
-                listener: beginFields(;)
+                listener: beginFields(DeclarationKind.Class, null, null, null, null, null, null, ;)
                 listener: handleIdentifier(C, typeReference)
                 listener: handleNoTypeArguments(abstract)
                 listener: handleType(C, null)
@@ -162,7 +162,7 @@
               listener: beginMember()
               isReservedKeyword(;)
               parseFields(;, null, null, null, null, null, null, ;, Instance of 'NoType', i7, DeclarationKind.Class, C, false)
-                listener: beginFields(;)
+                listener: beginFields(DeclarationKind.Class, null, null, null, null, null, null, ;)
                 reportRecoverableError(i7, MissingConstFinalVarOrType)
                   listener: handleRecoverableError(MissingConstFinalVarOrType, i7, i7)
                 listener: handleNoType(;)
@@ -173,7 +173,7 @@
                 listener: endClassFields(null, null, null, null, null, null, 1, i7, ;)
               listener: endMember()
             notEofOrValue(}, })
-            listener: endClassOrMixinBody(DeclarationKind.Class, 8, {, })
+            listener: endClassOrMixinOrExtensionBody(DeclarationKind.Class, 8, {, })
           listener: endClassDeclaration(abstract, })
   listener: endTopLevelDeclaration(var)
   parseTopLevelDeclarationImpl(}, Instance of 'DirectiveContext')
@@ -187,7 +187,7 @@
       reportRecoverableErrorWithToken(abstract, Instance of 'Template<(Token) => Message>')
         listener: handleRecoverableError(Message[ExtraneousModifier, Can't have modifier 'abstract' here., Try removing 'abstract'., {lexeme: abstract}], abstract, abstract)
       parseFields(}, null, null, null, null, null, var, abstract, Instance of 'NoType', foo, DeclarationKind.TopLevel, null, false)
-        listener: beginFields(})
+        listener: beginFields(DeclarationKind.TopLevel, null, null, null, null, null, var, })
         listener: handleNoType(abstract)
         ensureIdentifierPotentiallyRecovered(abstract, topLevelVariableDeclaration, false)
           listener: handleIdentifier(foo, topLevelVariableDeclaration)
@@ -203,7 +203,7 @@
       parseClassDeclarationModifiers(;, class)
         parseTopLevelKeywordModifiers(abstract, class)
       parseClassOrNamedMixinApplication(abstract, class)
-        listener: beginClassOrNamedMixinApplicationPrelude(abstract)
+        listener: beginClassOrMixinOrNamedMixinApplicationPrelude(abstract)
         ensureIdentifier(class, classOrMixinDeclaration)
           listener: handleIdentifier(Bar, classOrMixinDeclaration)
         listener: handleNoTypeVariables({)
@@ -219,7 +219,7 @@
               listener: handleClassOrMixinImplements(null, 0)
             listener: handleClassHeader(abstract, class, null)
           parseClassOrMixinOrExtensionBody(Bar, DeclarationKind.Class, Bar)
-            listener: beginClassOrMixinBody(DeclarationKind.Class, {)
+            listener: beginClassOrMixinOrExtensionBody(DeclarationKind.Class, {)
             notEofOrValue(}, covariant)
             parseClassOrMixinOrExtensionMemberImpl({, DeclarationKind.Class, Bar)
               parseMetadataStar({)
@@ -232,7 +232,7 @@
               listener: beginMember()
               isReservedKeyword(;)
               parseFields({, null, null, null, covariant, null, null, required, Instance of 'NoType', x, DeclarationKind.Class, Bar, false)
-                listener: beginFields({)
+                listener: beginFields(DeclarationKind.Class, null, null, null, covariant, null, null, {)
                 reportRecoverableError(x, MissingConstFinalVarOrType)
                   listener: handleRecoverableError(MissingConstFinalVarOrType, x, x)
                 listener: handleNoType(required)
@@ -243,7 +243,7 @@
                 listener: endClassFields(null, null, null, covariant, null, null, 1, covariant, ;)
               listener: endMember()
             notEofOrValue(}, })
-            listener: endClassOrMixinBody(DeclarationKind.Class, 1, {, })
+            listener: endClassOrMixinOrExtensionBody(DeclarationKind.Class, 1, {, })
           listener: endClassDeclaration(abstract, })
   listener: endTopLevelDeclaration()
   reportAllErrorTokens(abstract)
diff --git a/pkg/front_end/parser_testcases/nnbd/error_recovery/external_placement.dart.expect b/pkg/front_end/parser_testcases/nnbd/error_recovery/external_placement.dart.expect
index b26632d..140bdbf 100644
--- a/pkg/front_end/parser_testcases/nnbd/error_recovery/external_placement.dart.expect
+++ b/pkg/front_end/parser_testcases/nnbd/error_recovery/external_placement.dart.expect
@@ -41,7 +41,7 @@
   endMetadataStar(0)
   beginTopLevelMember(final)
     handleRecoverableError(Message[ModifierOutOfOrder, The modifier 'external' should be before the modifier 'final'., Try re-ordering the modifiers., {string: external, string2: final}], external, external)
-    beginFields()
+    beginFields(DeclarationKind.TopLevel, null, external, null, null, null, final, )
       handleIdentifier(int, typeReference)
       handleNoTypeArguments(i1)
       handleType(int, null)
@@ -53,7 +53,7 @@
   endMetadataStar(0)
   beginTopLevelMember(var)
     handleRecoverableError(Message[ModifierOutOfOrder, The modifier 'external' should be before the modifier 'var'., Try re-ordering the modifiers., {string: external, string2: var}], external, external)
-    beginFields(;)
+    beginFields(DeclarationKind.TopLevel, null, external, null, null, null, var, ;)
       handleNoType(external)
       handleIdentifier(i2, topLevelVariableDeclaration)
       handleNoFieldInitializer(;)
@@ -61,7 +61,7 @@
   endTopLevelDeclaration(class)
   beginMetadataStar(class)
   endMetadataStar(0)
-  beginClassOrNamedMixinApplicationPrelude(class)
+  beginClassOrMixinOrNamedMixinApplicationPrelude(class)
     handleIdentifier(C, classOrMixinDeclaration)
     handleNoTypeVariables({)
     beginClassDeclaration(class, null, C)
@@ -70,12 +70,12 @@
       handleClassNoWithClause()
       handleClassOrMixinImplements(null, 0)
       handleClassHeader(class, class, null)
-      beginClassOrMixinBody(DeclarationKind.Class, {)
+      beginClassOrMixinOrExtensionBody(DeclarationKind.Class, {)
         beginMetadataStar(covariant)
         endMetadataStar(0)
         handleRecoverableError(Message[ModifierOutOfOrder, The modifier 'external' should be before the modifier 'covariant'., Try re-ordering the modifiers., {string: external, string2: covariant}], external, external)
         beginMember()
-          beginFields({)
+          beginFields(DeclarationKind.Class, null, external, null, covariant, null, null, {)
             handleIdentifier(num, typeReference)
             handleNoTypeArguments(i3)
             handleType(num, null)
@@ -87,7 +87,7 @@
         endMetadataStar(0)
         handleRecoverableError(Message[ModifierOutOfOrder, The modifier 'external' should be before the modifier 'final'., Try re-ordering the modifiers., {string: external, string2: final}], external, external)
         beginMember()
-          beginFields(;)
+          beginFields(DeclarationKind.Class, null, external, null, null, null, final, ;)
             handleIdentifier(int, typeReference)
             handleNoTypeArguments(i4)
             handleType(int, null)
@@ -99,7 +99,7 @@
         endMetadataStar(0)
         handleRecoverableError(Message[ModifierOutOfOrder, The modifier 'external' should be before the modifier 'final'., Try re-ordering the modifiers., {string: external, string2: final}], external, external)
         beginMember()
-          beginFields(;)
+          beginFields(DeclarationKind.Class, null, external, null, null, null, final, ;)
             handleNoType(external)
             handleIdentifier(i5, fieldDeclaration)
             handleNoFieldInitializer(;)
@@ -109,7 +109,7 @@
         endMetadataStar(0)
         handleRecoverableError(Message[ModifierOutOfOrder, The modifier 'external' should be before the modifier 'static'., Try re-ordering the modifiers., {string: external, string2: static}], external, external)
         beginMember()
-          beginFields(;)
+          beginFields(DeclarationKind.Class, null, external, static, null, null, final, ;)
             handleNoType(final)
             handleIdentifier(i6, fieldDeclaration)
             handleNoFieldInitializer(;)
@@ -119,7 +119,7 @@
         endMetadataStar(0)
         handleRecoverableError(Message[ModifierOutOfOrder, The modifier 'external' should be before the modifier 'static'., Try re-ordering the modifiers., {string: external, string2: static}], external, external)
         beginMember()
-          beginFields(;)
+          beginFields(DeclarationKind.Class, null, external, static, null, null, final, ;)
             handleNoType(external)
             handleIdentifier(i7, fieldDeclaration)
             handleNoFieldInitializer(;)
@@ -130,13 +130,13 @@
         handleRecoverableError(Message[ModifierOutOfOrder, The modifier 'static' should be before the modifier 'final'., Try re-ordering the modifiers., {string: static, string2: final}], static, static)
         handleRecoverableError(Message[ModifierOutOfOrder, The modifier 'external' should be before the modifier 'static'., Try re-ordering the modifiers., {string: external, string2: static}], external, external)
         beginMember()
-          beginFields(;)
+          beginFields(DeclarationKind.Class, null, external, static, null, null, final, ;)
             handleNoType(external)
             handleIdentifier(i8, fieldDeclaration)
             handleNoFieldInitializer(;)
           endClassFields(null, external, static, null, null, final, 1, final, ;)
         endMember()
-      endClassOrMixinBody(DeclarationKind.Class, 6, {, })
+      endClassOrMixinOrExtensionBody(DeclarationKind.Class, 6, {, })
     endClassDeclaration(class, })
   endTopLevelDeclaration()
 endCompilationUnit(3, )
diff --git a/pkg/front_end/parser_testcases/nnbd/error_recovery/external_placement.dart.intertwined.expect b/pkg/front_end/parser_testcases/nnbd/error_recovery/external_placement.dart.intertwined.expect
index ec0650f..6c9e4f0 100644
--- a/pkg/front_end/parser_testcases/nnbd/error_recovery/external_placement.dart.intertwined.expect
+++ b/pkg/front_end/parser_testcases/nnbd/error_recovery/external_placement.dart.intertwined.expect
@@ -11,7 +11,7 @@
       reportRecoverableError(external, Message[ModifierOutOfOrder, The modifier 'external' should be before the modifier 'final'., Try re-ordering the modifiers., {string: external, string2: final}])
         listener: handleRecoverableError(Message[ModifierOutOfOrder, The modifier 'external' should be before the modifier 'final'., Try re-ordering the modifiers., {string: external, string2: final}], external, external)
       parseFields(, null, external, null, null, null, final, external, Instance of 'SimpleType', i1, DeclarationKind.TopLevel, null, false)
-        listener: beginFields()
+        listener: beginFields(DeclarationKind.TopLevel, null, external, null, null, null, final, )
         listener: handleIdentifier(int, typeReference)
         listener: handleNoTypeArguments(i1)
         listener: handleType(int, null)
@@ -30,7 +30,7 @@
       reportRecoverableError(external, Message[ModifierOutOfOrder, The modifier 'external' should be before the modifier 'var'., Try re-ordering the modifiers., {string: external, string2: var}])
         listener: handleRecoverableError(Message[ModifierOutOfOrder, The modifier 'external' should be before the modifier 'var'., Try re-ordering the modifiers., {string: external, string2: var}], external, external)
       parseFields(;, null, external, null, null, null, var, external, Instance of 'NoType', i2, DeclarationKind.TopLevel, null, false)
-        listener: beginFields(;)
+        listener: beginFields(DeclarationKind.TopLevel, null, external, null, null, null, var, ;)
         listener: handleNoType(external)
         ensureIdentifierPotentiallyRecovered(external, topLevelVariableDeclaration, false)
           listener: handleIdentifier(i2, topLevelVariableDeclaration)
@@ -45,7 +45,7 @@
     parseTopLevelKeywordDeclaration(;, class, Instance of 'DirectiveContext')
       parseClassDeclarationModifiers(;, class)
       parseClassOrNamedMixinApplication(null, class)
-        listener: beginClassOrNamedMixinApplicationPrelude(class)
+        listener: beginClassOrMixinOrNamedMixinApplicationPrelude(class)
         ensureIdentifier(class, classOrMixinDeclaration)
           listener: handleIdentifier(C, classOrMixinDeclaration)
         listener: handleNoTypeVariables({)
@@ -61,7 +61,7 @@
               listener: handleClassOrMixinImplements(null, 0)
             listener: handleClassHeader(class, class, null)
           parseClassOrMixinOrExtensionBody(C, DeclarationKind.Class, C)
-            listener: beginClassOrMixinBody(DeclarationKind.Class, {)
+            listener: beginClassOrMixinOrExtensionBody(DeclarationKind.Class, {)
             notEofOrValue(}, covariant)
             parseClassOrMixinOrExtensionMemberImpl({, DeclarationKind.Class, C)
               parseMetadataStar({)
@@ -71,7 +71,7 @@
                 listener: handleRecoverableError(Message[ModifierOutOfOrder, The modifier 'external' should be before the modifier 'covariant'., Try re-ordering the modifiers., {string: external, string2: covariant}], external, external)
               listener: beginMember()
               parseFields({, null, external, null, covariant, null, null, external, Instance of 'SimpleType', i3, DeclarationKind.Class, C, false)
-                listener: beginFields({)
+                listener: beginFields(DeclarationKind.Class, null, external, null, covariant, null, null, {)
                 listener: handleIdentifier(num, typeReference)
                 listener: handleNoTypeArguments(i3)
                 listener: handleType(num, null)
@@ -90,7 +90,7 @@
                 listener: handleRecoverableError(Message[ModifierOutOfOrder, The modifier 'external' should be before the modifier 'final'., Try re-ordering the modifiers., {string: external, string2: final}], external, external)
               listener: beginMember()
               parseFields(;, null, external, null, null, null, final, external, Instance of 'SimpleType', i4, DeclarationKind.Class, C, false)
-                listener: beginFields(;)
+                listener: beginFields(DeclarationKind.Class, null, external, null, null, null, final, ;)
                 listener: handleIdentifier(int, typeReference)
                 listener: handleNoTypeArguments(i4)
                 listener: handleType(int, null)
@@ -109,7 +109,7 @@
                 listener: handleRecoverableError(Message[ModifierOutOfOrder, The modifier 'external' should be before the modifier 'final'., Try re-ordering the modifiers., {string: external, string2: final}], external, external)
               listener: beginMember()
               parseFields(;, null, external, null, null, null, final, external, Instance of 'NoType', i5, DeclarationKind.Class, C, false)
-                listener: beginFields(;)
+                listener: beginFields(DeclarationKind.Class, null, external, null, null, null, final, ;)
                 listener: handleNoType(external)
                 ensureIdentifierPotentiallyRecovered(external, fieldDeclaration, false)
                   listener: handleIdentifier(i5, fieldDeclaration)
@@ -126,7 +126,7 @@
                 listener: handleRecoverableError(Message[ModifierOutOfOrder, The modifier 'external' should be before the modifier 'static'., Try re-ordering the modifiers., {string: external, string2: static}], external, external)
               listener: beginMember()
               parseFields(;, null, external, static, null, null, final, final, Instance of 'NoType', i6, DeclarationKind.Class, C, false)
-                listener: beginFields(;)
+                listener: beginFields(DeclarationKind.Class, null, external, static, null, null, final, ;)
                 listener: handleNoType(final)
                 ensureIdentifierPotentiallyRecovered(final, fieldDeclaration, false)
                   listener: handleIdentifier(i6, fieldDeclaration)
@@ -143,7 +143,7 @@
                 listener: handleRecoverableError(Message[ModifierOutOfOrder, The modifier 'external' should be before the modifier 'static'., Try re-ordering the modifiers., {string: external, string2: static}], external, external)
               listener: beginMember()
               parseFields(;, null, external, static, null, null, final, external, Instance of 'NoType', i7, DeclarationKind.Class, C, false)
-                listener: beginFields(;)
+                listener: beginFields(DeclarationKind.Class, null, external, static, null, null, final, ;)
                 listener: handleNoType(external)
                 ensureIdentifierPotentiallyRecovered(external, fieldDeclaration, false)
                   listener: handleIdentifier(i7, fieldDeclaration)
@@ -162,7 +162,7 @@
                 listener: handleRecoverableError(Message[ModifierOutOfOrder, The modifier 'external' should be before the modifier 'static'., Try re-ordering the modifiers., {string: external, string2: static}], external, external)
               listener: beginMember()
               parseFields(;, null, external, static, null, null, final, external, Instance of 'NoType', i8, DeclarationKind.Class, C, false)
-                listener: beginFields(;)
+                listener: beginFields(DeclarationKind.Class, null, external, static, null, null, final, ;)
                 listener: handleNoType(external)
                 ensureIdentifierPotentiallyRecovered(external, fieldDeclaration, false)
                   listener: handleIdentifier(i8, fieldDeclaration)
@@ -171,7 +171,7 @@
                 listener: endClassFields(null, external, static, null, null, final, 1, final, ;)
               listener: endMember()
             notEofOrValue(}, })
-            listener: endClassOrMixinBody(DeclarationKind.Class, 6, {, })
+            listener: endClassOrMixinOrExtensionBody(DeclarationKind.Class, 6, {, })
           listener: endClassDeclaration(class, })
   listener: endTopLevelDeclaration()
   reportAllErrorTokens(final)
diff --git a/pkg/front_end/parser_testcases/nnbd/error_recovery/late_without_var_etc.dart.expect b/pkg/front_end/parser_testcases/nnbd/error_recovery/late_without_var_etc.dart.expect
index 5ec7a5e..946637f 100644
--- a/pkg/front_end/parser_testcases/nnbd/error_recovery/late_without_var_etc.dart.expect
+++ b/pkg/front_end/parser_testcases/nnbd/error_recovery/late_without_var_etc.dart.expect
@@ -48,7 +48,7 @@
   beginMetadataStar(late)
   endMetadataStar(0)
   beginTopLevelMember(late)
-    beginFields(})
+    beginFields(DeclarationKind.TopLevel, null, null, null, null, late, null, })
       handleRecoverableError(MissingConstFinalVarOrType, y, y)
       handleNoType(late)
       handleIdentifier(y, topLevelVariableDeclaration)
@@ -57,7 +57,7 @@
   endTopLevelDeclaration(class)
   beginMetadataStar(class)
   endMetadataStar(0)
-  beginClassOrNamedMixinApplicationPrelude(class)
+  beginClassOrMixinOrNamedMixinApplicationPrelude(class)
     handleIdentifier(Foo, classOrMixinDeclaration)
     handleNoTypeVariables({)
     beginClassDeclaration(class, null, Foo)
@@ -66,11 +66,11 @@
       handleClassNoWithClause()
       handleClassOrMixinImplements(null, 0)
       handleClassHeader(class, class, null)
-      beginClassOrMixinBody(DeclarationKind.Class, {)
+      beginClassOrMixinOrExtensionBody(DeclarationKind.Class, {)
         beginMetadataStar(late)
         endMetadataStar(0)
         beginMember()
-          beginFields({)
+          beginFields(DeclarationKind.Class, null, null, null, null, late, null, {)
             handleRecoverableError(MissingConstFinalVarOrType, z, z)
             handleNoType(late)
             handleIdentifier(z, fieldDeclaration)
@@ -80,7 +80,7 @@
         beginMetadataStar(void)
         endMetadataStar(0)
         beginMember()
-          beginMethod(null, null, null, null, null, foo)
+          beginMethod(DeclarationKind.Class, null, null, null, null, null, foo)
             handleVoidKeyword(void)
             handleIdentifier(foo, methodDeclaration)
             handleNoTypeVariables(()
@@ -105,7 +105,7 @@
         beginMetadataStar(static)
         endMetadataStar(0)
         beginMember()
-          beginMethod(null, static, null, null, null, bar)
+          beginMethod(DeclarationKind.Class, null, static, null, null, null, bar)
             handleVoidKeyword(void)
             handleIdentifier(bar, methodDeclaration)
             handleNoTypeVariables(()
@@ -127,7 +127,7 @@
             endBlockFunctionBody(1, {, })
           endClassMethod(null, static, (, null, })
         endMember()
-      endClassOrMixinBody(DeclarationKind.Class, 3, {, })
+      endClassOrMixinOrExtensionBody(DeclarationKind.Class, 3, {, })
     endClassDeclaration(class, })
   endTopLevelDeclaration()
 endCompilationUnit(3, )
diff --git a/pkg/front_end/parser_testcases/nnbd/error_recovery/late_without_var_etc.dart.intertwined.expect b/pkg/front_end/parser_testcases/nnbd/error_recovery/late_without_var_etc.dart.intertwined.expect
index 13b0274..2f526a0 100644
--- a/pkg/front_end/parser_testcases/nnbd/error_recovery/late_without_var_etc.dart.intertwined.expect
+++ b/pkg/front_end/parser_testcases/nnbd/error_recovery/late_without_var_etc.dart.intertwined.expect
@@ -59,7 +59,7 @@
       listener: beginTopLevelMember(late)
       isReservedKeyword(;)
       parseFields(}, null, null, null, null, late, null, late, Instance of 'NoType', y, DeclarationKind.TopLevel, null, false)
-        listener: beginFields(})
+        listener: beginFields(DeclarationKind.TopLevel, null, null, null, null, late, null, })
         reportRecoverableError(y, MissingConstFinalVarOrType)
           listener: handleRecoverableError(MissingConstFinalVarOrType, y, y)
         listener: handleNoType(late)
@@ -76,7 +76,7 @@
     parseTopLevelKeywordDeclaration(;, class, Instance of 'DirectiveContext')
       parseClassDeclarationModifiers(;, class)
       parseClassOrNamedMixinApplication(null, class)
-        listener: beginClassOrNamedMixinApplicationPrelude(class)
+        listener: beginClassOrMixinOrNamedMixinApplicationPrelude(class)
         ensureIdentifier(class, classOrMixinDeclaration)
           listener: handleIdentifier(Foo, classOrMixinDeclaration)
         listener: handleNoTypeVariables({)
@@ -92,7 +92,7 @@
               listener: handleClassOrMixinImplements(null, 0)
             listener: handleClassHeader(class, class, null)
           parseClassOrMixinOrExtensionBody(Foo, DeclarationKind.Class, Foo)
-            listener: beginClassOrMixinBody(DeclarationKind.Class, {)
+            listener: beginClassOrMixinOrExtensionBody(DeclarationKind.Class, {)
             notEofOrValue(}, late)
             parseClassOrMixinOrExtensionMemberImpl({, DeclarationKind.Class, Foo)
               parseMetadataStar({)
@@ -101,7 +101,7 @@
               listener: beginMember()
               isReservedKeyword(;)
               parseFields({, null, null, null, null, late, null, late, Instance of 'NoType', z, DeclarationKind.Class, Foo, false)
-                listener: beginFields({)
+                listener: beginFields(DeclarationKind.Class, null, null, null, null, late, null, {)
                 reportRecoverableError(z, MissingConstFinalVarOrType)
                   listener: handleRecoverableError(MissingConstFinalVarOrType, z, z)
                 listener: handleNoType(late)
@@ -118,7 +118,7 @@
                 listener: endMetadataStar(0)
               listener: beginMember()
               parseMethod(;, null, null, null, null, null, null, ;, Instance of 'VoidType', null, foo, DeclarationKind.Class, Foo, false)
-                listener: beginMethod(null, null, null, null, null, foo)
+                listener: beginMethod(DeclarationKind.Class, null, null, null, null, null, foo)
                 listener: handleVoidKeyword(void)
                 ensureIdentifierPotentiallyRecovered(void, methodDeclaration, false)
                   listener: handleIdentifier(foo, methodDeclaration)
@@ -171,7 +171,7 @@
                 listener: endMetadataStar(0)
               listener: beginMember()
               parseMethod(}, null, null, static, null, null, null, static, Instance of 'VoidType', null, bar, DeclarationKind.Class, Foo, false)
-                listener: beginMethod(null, static, null, null, null, bar)
+                listener: beginMethod(DeclarationKind.Class, null, static, null, null, null, bar)
                 listener: handleVoidKeyword(void)
                 ensureIdentifierPotentiallyRecovered(void, methodDeclaration, false)
                   listener: handleIdentifier(bar, methodDeclaration)
@@ -217,7 +217,7 @@
                 listener: endClassMethod(null, static, (, null, })
               listener: endMember()
             notEofOrValue(}, })
-            listener: endClassOrMixinBody(DeclarationKind.Class, 3, {, })
+            listener: endClassOrMixinOrExtensionBody(DeclarationKind.Class, 3, {, })
           listener: endClassDeclaration(class, })
   listener: endTopLevelDeclaration()
   reportAllErrorTokens(void)
diff --git a/pkg/front_end/parser_testcases/nnbd/issue_39723.dart.expect b/pkg/front_end/parser_testcases/nnbd/issue_39723.dart.expect
index 325d346..42d16be 100644
--- a/pkg/front_end/parser_testcases/nnbd/issue_39723.dart.expect
+++ b/pkg/front_end/parser_testcases/nnbd/issue_39723.dart.expect
@@ -1,7 +1,7 @@
 beginCompilationUnit(class)
   beginMetadataStar(class)
   endMetadataStar(0)
-  beginClassOrNamedMixinApplicationPrelude(class)
+  beginClassOrMixinOrNamedMixinApplicationPrelude(class)
     handleIdentifier(A, classOrMixinDeclaration)
     handleNoTypeVariables({)
     beginClassDeclaration(class, null, A)
@@ -10,11 +10,11 @@
       handleClassNoWithClause()
       handleClassOrMixinImplements(null, 0)
       handleClassHeader(class, class, null)
-      beginClassOrMixinBody(DeclarationKind.Class, {)
+      beginClassOrMixinOrExtensionBody(DeclarationKind.Class, {)
         beginMetadataStar(operator)
         endMetadataStar(0)
         beginMember()
-          beginMethod(null, null, null, null, null, operator)
+          beginMethod(DeclarationKind.Class, null, null, null, null, null, operator)
             handleNoType({)
             handleOperatorName(operator, [])
             handleNoTypeVariables(()
@@ -38,7 +38,7 @@
             handleExpressionFunctionBody(=>, ;)
           endClassMethod(null, operator, (, null, ;)
         endMember()
-      endClassOrMixinBody(DeclarationKind.Class, 1, {, })
+      endClassOrMixinOrExtensionBody(DeclarationKind.Class, 1, {, })
     endClassDeclaration(class, })
   endTopLevelDeclaration(main)
   beginMetadataStar(main)
diff --git a/pkg/front_end/parser_testcases/nnbd/issue_39723.dart.intertwined.expect b/pkg/front_end/parser_testcases/nnbd/issue_39723.dart.intertwined.expect
index 37429ab..8c6aed4 100644
--- a/pkg/front_end/parser_testcases/nnbd/issue_39723.dart.intertwined.expect
+++ b/pkg/front_end/parser_testcases/nnbd/issue_39723.dart.intertwined.expect
@@ -9,7 +9,7 @@
     parseTopLevelKeywordDeclaration(, class, Instance of 'DirectiveContext')
       parseClassDeclarationModifiers(, class)
       parseClassOrNamedMixinApplication(null, class)
-        listener: beginClassOrNamedMixinApplicationPrelude(class)
+        listener: beginClassOrMixinOrNamedMixinApplicationPrelude(class)
         ensureIdentifier(class, classOrMixinDeclaration)
           listener: handleIdentifier(A, classOrMixinDeclaration)
         listener: handleNoTypeVariables({)
@@ -25,7 +25,7 @@
               listener: handleClassOrMixinImplements(null, 0)
             listener: handleClassHeader(class, class, null)
           parseClassOrMixinOrExtensionBody(A, DeclarationKind.Class, A)
-            listener: beginClassOrMixinBody(DeclarationKind.Class, {)
+            listener: beginClassOrMixinOrExtensionBody(DeclarationKind.Class, {)
             notEofOrValue(}, operator)
             parseClassOrMixinOrExtensionMemberImpl({, DeclarationKind.Class, A)
               parseMetadataStar({)
@@ -33,7 +33,7 @@
                 listener: endMetadataStar(0)
               listener: beginMember()
               parseMethod({, null, null, null, null, null, null, {, Instance of 'NoType', null, operator, DeclarationKind.Class, A, false)
-                listener: beginMethod(null, null, null, null, null, operator)
+                listener: beginMethod(DeclarationKind.Class, null, null, null, null, null, operator)
                 listener: handleNoType({)
                 parseOperatorName({)
                   listener: handleOperatorName(operator, [])
@@ -83,7 +83,7 @@
                 listener: endClassMethod(null, operator, (, null, ;)
               listener: endMember()
             notEofOrValue(}, })
-            listener: endClassOrMixinBody(DeclarationKind.Class, 1, {, })
+            listener: endClassOrMixinOrExtensionBody(DeclarationKind.Class, 1, {, })
           listener: endClassDeclaration(class, })
   listener: endTopLevelDeclaration(main)
   parseTopLevelDeclarationImpl(}, Instance of 'DirectiveContext')
diff --git a/pkg/front_end/parser_testcases/nnbd/issue_39723_prime.dart.expect b/pkg/front_end/parser_testcases/nnbd/issue_39723_prime.dart.expect
index b461804c..2f4c2f7 100644
--- a/pkg/front_end/parser_testcases/nnbd/issue_39723_prime.dart.expect
+++ b/pkg/front_end/parser_testcases/nnbd/issue_39723_prime.dart.expect
@@ -1,7 +1,7 @@
 beginCompilationUnit(class)
   beginMetadataStar(class)
   endMetadataStar(0)
-  beginClassOrNamedMixinApplicationPrelude(class)
+  beginClassOrMixinOrNamedMixinApplicationPrelude(class)
     handleIdentifier(A, classOrMixinDeclaration)
     handleNoTypeVariables({)
     beginClassDeclaration(class, null, A)
@@ -10,11 +10,11 @@
       handleClassNoWithClause()
       handleClassOrMixinImplements(null, 0)
       handleClassHeader(class, class, null)
-      beginClassOrMixinBody(DeclarationKind.Class, {)
+      beginClassOrMixinOrExtensionBody(DeclarationKind.Class, {)
         beginMetadataStar(operator)
         endMetadataStar(0)
         beginMember()
-          beginMethod(null, null, null, null, null, operator)
+          beginMethod(DeclarationKind.Class, null, null, null, null, null, operator)
             handleNoType({)
             handleOperatorName(operator, [])
             handleNoTypeVariables(()
@@ -38,7 +38,7 @@
             handleExpressionFunctionBody(=>, ;)
           endClassMethod(null, operator, (, null, ;)
         endMember()
-      endClassOrMixinBody(DeclarationKind.Class, 1, {, })
+      endClassOrMixinOrExtensionBody(DeclarationKind.Class, 1, {, })
     endClassDeclaration(class, })
   endTopLevelDeclaration(main)
   beginMetadataStar(main)
diff --git a/pkg/front_end/parser_testcases/nnbd/issue_39723_prime.dart.intertwined.expect b/pkg/front_end/parser_testcases/nnbd/issue_39723_prime.dart.intertwined.expect
index 093880f..e6caa09 100644
--- a/pkg/front_end/parser_testcases/nnbd/issue_39723_prime.dart.intertwined.expect
+++ b/pkg/front_end/parser_testcases/nnbd/issue_39723_prime.dart.intertwined.expect
@@ -9,7 +9,7 @@
     parseTopLevelKeywordDeclaration(, class, Instance of 'DirectiveContext')
       parseClassDeclarationModifiers(, class)
       parseClassOrNamedMixinApplication(null, class)
-        listener: beginClassOrNamedMixinApplicationPrelude(class)
+        listener: beginClassOrMixinOrNamedMixinApplicationPrelude(class)
         ensureIdentifier(class, classOrMixinDeclaration)
           listener: handleIdentifier(A, classOrMixinDeclaration)
         listener: handleNoTypeVariables({)
@@ -25,7 +25,7 @@
               listener: handleClassOrMixinImplements(null, 0)
             listener: handleClassHeader(class, class, null)
           parseClassOrMixinOrExtensionBody(A, DeclarationKind.Class, A)
-            listener: beginClassOrMixinBody(DeclarationKind.Class, {)
+            listener: beginClassOrMixinOrExtensionBody(DeclarationKind.Class, {)
             notEofOrValue(}, operator)
             parseClassOrMixinOrExtensionMemberImpl({, DeclarationKind.Class, A)
               parseMetadataStar({)
@@ -33,7 +33,7 @@
                 listener: endMetadataStar(0)
               listener: beginMember()
               parseMethod({, null, null, null, null, null, null, {, Instance of 'NoType', null, operator, DeclarationKind.Class, A, false)
-                listener: beginMethod(null, null, null, null, null, operator)
+                listener: beginMethod(DeclarationKind.Class, null, null, null, null, null, operator)
                 listener: handleNoType({)
                 parseOperatorName({)
                   listener: handleOperatorName(operator, [])
@@ -83,7 +83,7 @@
                 listener: endClassMethod(null, operator, (, null, ;)
               listener: endMember()
             notEofOrValue(}, })
-            listener: endClassOrMixinBody(DeclarationKind.Class, 1, {, })
+            listener: endClassOrMixinOrExtensionBody(DeclarationKind.Class, 1, {, })
           listener: endClassDeclaration(class, })
   listener: endTopLevelDeclaration(main)
   parseTopLevelDeclarationImpl(}, Instance of 'DirectiveContext')
diff --git a/pkg/front_end/parser_testcases/nnbd/issue_39858.dart.expect b/pkg/front_end/parser_testcases/nnbd/issue_39858.dart.expect
index 0e1c227..1328dc8 100644
--- a/pkg/front_end/parser_testcases/nnbd/issue_39858.dart.expect
+++ b/pkg/front_end/parser_testcases/nnbd/issue_39858.dart.expect
@@ -27,7 +27,7 @@
 beginCompilationUnit(class)
   beginMetadataStar(class)
   endMetadataStar(0)
-  beginClassOrNamedMixinApplicationPrelude(class)
+  beginClassOrMixinOrNamedMixinApplicationPrelude(class)
     handleIdentifier(X, classOrMixinDeclaration)
     handleNoTypeVariables({)
     beginClassDeclaration(class, null, X)
@@ -36,11 +36,11 @@
       handleClassNoWithClause()
       handleClassOrMixinImplements(null, 0)
       handleClassHeader(class, class, null)
-      beginClassOrMixinBody(DeclarationKind.Class, {)
+      beginClassOrMixinOrExtensionBody(DeclarationKind.Class, {)
         beginMetadataStar(late)
         endMetadataStar(0)
         beginMember()
-          beginFields({)
+          beginFields(DeclarationKind.Class, null, null, null, null, late, null, {)
             handleRecoverableError(MissingConstFinalVarOrType, x1, x1)
             handleNoType(late)
             handleIdentifier(x1, fieldDeclaration)
@@ -50,7 +50,7 @@
         beginMetadataStar(static)
         endMetadataStar(0)
         beginMember()
-          beginFields(;)
+          beginFields(DeclarationKind.Class, null, null, static, null, late, null, ;)
             handleRecoverableError(MissingConstFinalVarOrType, x2, x2)
             handleNoType(late)
             handleIdentifier(x2, fieldDeclaration)
@@ -60,7 +60,7 @@
         beginMetadataStar(covariant)
         endMetadataStar(0)
         beginMember()
-          beginFields(;)
+          beginFields(DeclarationKind.Class, null, null, null, covariant, late, null, ;)
             handleRecoverableError(MissingConstFinalVarOrType, x3, x3)
             handleNoType(late)
             handleIdentifier(x3, fieldDeclaration)
@@ -70,7 +70,7 @@
         beginMetadataStar(late)
         endMetadataStar(0)
         beginMember()
-          beginFields(;)
+          beginFields(DeclarationKind.Class, null, null, null, null, late, null, ;)
             handleRecoverableError(MissingConstFinalVarOrType, x4, x4)
             handleNoType(late)
             handleIdentifier(x4, fieldDeclaration)
@@ -82,7 +82,7 @@
         beginMetadataStar(static)
         endMetadataStar(0)
         beginMember()
-          beginFields(;)
+          beginFields(DeclarationKind.Class, null, null, static, null, late, null, ;)
             handleRecoverableError(MissingConstFinalVarOrType, x5, x5)
             handleNoType(late)
             handleIdentifier(x5, fieldDeclaration)
@@ -94,7 +94,7 @@
         beginMetadataStar(covariant)
         endMetadataStar(0)
         beginMember()
-          beginFields(;)
+          beginFields(DeclarationKind.Class, null, null, null, covariant, late, null, ;)
             handleRecoverableError(MissingConstFinalVarOrType, x6, x6)
             handleNoType(late)
             handleIdentifier(x6, fieldDeclaration)
@@ -103,7 +103,7 @@
             endFieldInitializer(=, ;)
           endClassFields(null, null, null, covariant, late, null, 1, covariant, ;)
         endMember()
-      endClassOrMixinBody(DeclarationKind.Class, 6, {, })
+      endClassOrMixinOrExtensionBody(DeclarationKind.Class, 6, {, })
     endClassDeclaration(class, })
   endTopLevelDeclaration()
 endCompilationUnit(1, )
diff --git a/pkg/front_end/parser_testcases/nnbd/issue_39858.dart.intertwined.expect b/pkg/front_end/parser_testcases/nnbd/issue_39858.dart.intertwined.expect
index 4dd48dd..26b7bad 100644
--- a/pkg/front_end/parser_testcases/nnbd/issue_39858.dart.intertwined.expect
+++ b/pkg/front_end/parser_testcases/nnbd/issue_39858.dart.intertwined.expect
@@ -9,7 +9,7 @@
     parseTopLevelKeywordDeclaration(, class, Instance of 'DirectiveContext')
       parseClassDeclarationModifiers(, class)
       parseClassOrNamedMixinApplication(null, class)
-        listener: beginClassOrNamedMixinApplicationPrelude(class)
+        listener: beginClassOrMixinOrNamedMixinApplicationPrelude(class)
         ensureIdentifier(class, classOrMixinDeclaration)
           listener: handleIdentifier(X, classOrMixinDeclaration)
         listener: handleNoTypeVariables({)
@@ -25,7 +25,7 @@
               listener: handleClassOrMixinImplements(null, 0)
             listener: handleClassHeader(class, class, null)
           parseClassOrMixinOrExtensionBody(X, DeclarationKind.Class, X)
-            listener: beginClassOrMixinBody(DeclarationKind.Class, {)
+            listener: beginClassOrMixinOrExtensionBody(DeclarationKind.Class, {)
             notEofOrValue(}, late)
             parseClassOrMixinOrExtensionMemberImpl({, DeclarationKind.Class, X)
               parseMetadataStar({)
@@ -34,7 +34,7 @@
               listener: beginMember()
               isReservedKeyword(;)
               parseFields({, null, null, null, null, late, null, late, Instance of 'NoType', x1, DeclarationKind.Class, X, false)
-                listener: beginFields({)
+                listener: beginFields(DeclarationKind.Class, null, null, null, null, late, null, {)
                 reportRecoverableError(x1, MissingConstFinalVarOrType)
                   listener: handleRecoverableError(MissingConstFinalVarOrType, x1, x1)
                 listener: handleNoType(late)
@@ -52,7 +52,7 @@
               listener: beginMember()
               isReservedKeyword(;)
               parseFields(;, null, null, static, null, late, null, late, Instance of 'NoType', x2, DeclarationKind.Class, X, false)
-                listener: beginFields(;)
+                listener: beginFields(DeclarationKind.Class, null, null, static, null, late, null, ;)
                 reportRecoverableError(x2, MissingConstFinalVarOrType)
                   listener: handleRecoverableError(MissingConstFinalVarOrType, x2, x2)
                 listener: handleNoType(late)
@@ -70,7 +70,7 @@
               listener: beginMember()
               isReservedKeyword(;)
               parseFields(;, null, null, null, covariant, late, null, late, Instance of 'NoType', x3, DeclarationKind.Class, X, false)
-                listener: beginFields(;)
+                listener: beginFields(DeclarationKind.Class, null, null, null, covariant, late, null, ;)
                 reportRecoverableError(x3, MissingConstFinalVarOrType)
                   listener: handleRecoverableError(MissingConstFinalVarOrType, x3, x3)
                 listener: handleNoType(late)
@@ -88,7 +88,7 @@
               listener: beginMember()
               isReservedKeyword(=)
               parseFields(;, null, null, null, null, late, null, late, Instance of 'NoType', x4, DeclarationKind.Class, X, false)
-                listener: beginFields(;)
+                listener: beginFields(DeclarationKind.Class, null, null, null, null, late, null, ;)
                 reportRecoverableError(x4, MissingConstFinalVarOrType)
                   listener: handleRecoverableError(MissingConstFinalVarOrType, x4, x4)
                 listener: handleNoType(late)
@@ -113,7 +113,7 @@
               listener: beginMember()
               isReservedKeyword(=)
               parseFields(;, null, null, static, null, late, null, late, Instance of 'NoType', x5, DeclarationKind.Class, X, false)
-                listener: beginFields(;)
+                listener: beginFields(DeclarationKind.Class, null, null, static, null, late, null, ;)
                 reportRecoverableError(x5, MissingConstFinalVarOrType)
                   listener: handleRecoverableError(MissingConstFinalVarOrType, x5, x5)
                 listener: handleNoType(late)
@@ -138,7 +138,7 @@
               listener: beginMember()
               isReservedKeyword(=)
               parseFields(;, null, null, null, covariant, late, null, late, Instance of 'NoType', x6, DeclarationKind.Class, X, false)
-                listener: beginFields(;)
+                listener: beginFields(DeclarationKind.Class, null, null, null, covariant, late, null, ;)
                 reportRecoverableError(x6, MissingConstFinalVarOrType)
                   listener: handleRecoverableError(MissingConstFinalVarOrType, x6, x6)
                 listener: handleNoType(late)
@@ -156,7 +156,7 @@
                 listener: endClassFields(null, null, null, covariant, late, null, 1, covariant, ;)
               listener: endMember()
             notEofOrValue(}, })
-            listener: endClassOrMixinBody(DeclarationKind.Class, 6, {, })
+            listener: endClassOrMixinOrExtensionBody(DeclarationKind.Class, 6, {, })
           listener: endClassDeclaration(class, })
   listener: endTopLevelDeclaration()
   reportAllErrorTokens(class)
diff --git a/pkg/front_end/parser_testcases/nnbd/issue_39858_prime1.dart.expect b/pkg/front_end/parser_testcases/nnbd/issue_39858_prime1.dart.expect
index 2cb3c26..7ebeff9 100644
--- a/pkg/front_end/parser_testcases/nnbd/issue_39858_prime1.dart.expect
+++ b/pkg/front_end/parser_testcases/nnbd/issue_39858_prime1.dart.expect
@@ -1,7 +1,7 @@
 beginCompilationUnit(class)
   beginMetadataStar(class)
   endMetadataStar(0)
-  beginClassOrNamedMixinApplicationPrelude(class)
+  beginClassOrMixinOrNamedMixinApplicationPrelude(class)
     handleIdentifier(X, classOrMixinDeclaration)
     handleNoTypeVariables({)
     beginClassDeclaration(class, null, X)
@@ -10,11 +10,11 @@
       handleClassNoWithClause()
       handleClassOrMixinImplements(null, 0)
       handleClassHeader(class, class, null)
-      beginClassOrMixinBody(DeclarationKind.Class, {)
+      beginClassOrMixinOrExtensionBody(DeclarationKind.Class, {)
         beginMetadataStar(var)
         endMetadataStar(0)
         beginMember()
-          beginFields({)
+          beginFields(DeclarationKind.Class, null, null, null, null, null, var, {)
             handleNoType(var)
             handleIdentifier(x1, fieldDeclaration)
             handleNoFieldInitializer(;)
@@ -23,7 +23,7 @@
         beginMetadataStar(static)
         endMetadataStar(0)
         beginMember()
-          beginFields(;)
+          beginFields(DeclarationKind.Class, null, null, static, null, null, var, ;)
             handleNoType(var)
             handleIdentifier(x2, fieldDeclaration)
             handleNoFieldInitializer(;)
@@ -32,7 +32,7 @@
         beginMetadataStar(covariant)
         endMetadataStar(0)
         beginMember()
-          beginFields(;)
+          beginFields(DeclarationKind.Class, null, null, null, covariant, null, var, ;)
             handleNoType(var)
             handleIdentifier(x3, fieldDeclaration)
             handleNoFieldInitializer(;)
@@ -41,7 +41,7 @@
         beginMetadataStar(var)
         endMetadataStar(0)
         beginMember()
-          beginFields(;)
+          beginFields(DeclarationKind.Class, null, null, null, null, null, var, ;)
             handleNoType(var)
             handleIdentifier(x4, fieldDeclaration)
             beginFieldInitializer(=)
@@ -52,7 +52,7 @@
         beginMetadataStar(static)
         endMetadataStar(0)
         beginMember()
-          beginFields(;)
+          beginFields(DeclarationKind.Class, null, null, static, null, null, var, ;)
             handleNoType(var)
             handleIdentifier(x5, fieldDeclaration)
             beginFieldInitializer(=)
@@ -63,7 +63,7 @@
         beginMetadataStar(covariant)
         endMetadataStar(0)
         beginMember()
-          beginFields(;)
+          beginFields(DeclarationKind.Class, null, null, null, covariant, null, var, ;)
             handleNoType(var)
             handleIdentifier(x6, fieldDeclaration)
             beginFieldInitializer(=)
@@ -71,7 +71,7 @@
             endFieldInitializer(=, ;)
           endClassFields(null, null, null, covariant, null, var, 1, covariant, ;)
         endMember()
-      endClassOrMixinBody(DeclarationKind.Class, 6, {, })
+      endClassOrMixinOrExtensionBody(DeclarationKind.Class, 6, {, })
     endClassDeclaration(class, })
   endTopLevelDeclaration()
 endCompilationUnit(1, )
diff --git a/pkg/front_end/parser_testcases/nnbd/issue_39858_prime1.dart.intertwined.expect b/pkg/front_end/parser_testcases/nnbd/issue_39858_prime1.dart.intertwined.expect
index db54e68..1d8ef6f 100644
--- a/pkg/front_end/parser_testcases/nnbd/issue_39858_prime1.dart.intertwined.expect
+++ b/pkg/front_end/parser_testcases/nnbd/issue_39858_prime1.dart.intertwined.expect
@@ -9,7 +9,7 @@
     parseTopLevelKeywordDeclaration(, class, Instance of 'DirectiveContext')
       parseClassDeclarationModifiers(, class)
       parseClassOrNamedMixinApplication(null, class)
-        listener: beginClassOrNamedMixinApplicationPrelude(class)
+        listener: beginClassOrMixinOrNamedMixinApplicationPrelude(class)
         ensureIdentifier(class, classOrMixinDeclaration)
           listener: handleIdentifier(X, classOrMixinDeclaration)
         listener: handleNoTypeVariables({)
@@ -25,7 +25,7 @@
               listener: handleClassOrMixinImplements(null, 0)
             listener: handleClassHeader(class, class, null)
           parseClassOrMixinOrExtensionBody(X, DeclarationKind.Class, X)
-            listener: beginClassOrMixinBody(DeclarationKind.Class, {)
+            listener: beginClassOrMixinOrExtensionBody(DeclarationKind.Class, {)
             notEofOrValue(}, var)
             parseClassOrMixinOrExtensionMemberImpl({, DeclarationKind.Class, X)
               parseMetadataStar({)
@@ -33,7 +33,7 @@
                 listener: endMetadataStar(0)
               listener: beginMember()
               parseFields({, null, null, null, null, null, var, var, Instance of 'NoType', x1, DeclarationKind.Class, X, false)
-                listener: beginFields({)
+                listener: beginFields(DeclarationKind.Class, null, null, null, null, null, var, {)
                 listener: handleNoType(var)
                 ensureIdentifierPotentiallyRecovered(var, fieldDeclaration, false)
                   listener: handleIdentifier(x1, fieldDeclaration)
@@ -48,7 +48,7 @@
                 listener: endMetadataStar(0)
               listener: beginMember()
               parseFields(;, null, null, static, null, null, var, var, Instance of 'NoType', x2, DeclarationKind.Class, X, false)
-                listener: beginFields(;)
+                listener: beginFields(DeclarationKind.Class, null, null, static, null, null, var, ;)
                 listener: handleNoType(var)
                 ensureIdentifierPotentiallyRecovered(var, fieldDeclaration, false)
                   listener: handleIdentifier(x2, fieldDeclaration)
@@ -63,7 +63,7 @@
                 listener: endMetadataStar(0)
               listener: beginMember()
               parseFields(;, null, null, null, covariant, null, var, var, Instance of 'NoType', x3, DeclarationKind.Class, X, false)
-                listener: beginFields(;)
+                listener: beginFields(DeclarationKind.Class, null, null, null, covariant, null, var, ;)
                 listener: handleNoType(var)
                 ensureIdentifierPotentiallyRecovered(var, fieldDeclaration, false)
                   listener: handleIdentifier(x3, fieldDeclaration)
@@ -78,7 +78,7 @@
                 listener: endMetadataStar(0)
               listener: beginMember()
               parseFields(;, null, null, null, null, null, var, var, Instance of 'NoType', x4, DeclarationKind.Class, X, false)
-                listener: beginFields(;)
+                listener: beginFields(DeclarationKind.Class, null, null, null, null, null, var, ;)
                 listener: handleNoType(var)
                 ensureIdentifierPotentiallyRecovered(var, fieldDeclaration, false)
                   listener: handleIdentifier(x4, fieldDeclaration)
@@ -100,7 +100,7 @@
                 listener: endMetadataStar(0)
               listener: beginMember()
               parseFields(;, null, null, static, null, null, var, var, Instance of 'NoType', x5, DeclarationKind.Class, X, false)
-                listener: beginFields(;)
+                listener: beginFields(DeclarationKind.Class, null, null, static, null, null, var, ;)
                 listener: handleNoType(var)
                 ensureIdentifierPotentiallyRecovered(var, fieldDeclaration, false)
                   listener: handleIdentifier(x5, fieldDeclaration)
@@ -122,7 +122,7 @@
                 listener: endMetadataStar(0)
               listener: beginMember()
               parseFields(;, null, null, null, covariant, null, var, var, Instance of 'NoType', x6, DeclarationKind.Class, X, false)
-                listener: beginFields(;)
+                listener: beginFields(DeclarationKind.Class, null, null, null, covariant, null, var, ;)
                 listener: handleNoType(var)
                 ensureIdentifierPotentiallyRecovered(var, fieldDeclaration, false)
                   listener: handleIdentifier(x6, fieldDeclaration)
@@ -138,7 +138,7 @@
                 listener: endClassFields(null, null, null, covariant, null, var, 1, covariant, ;)
               listener: endMember()
             notEofOrValue(}, })
-            listener: endClassOrMixinBody(DeclarationKind.Class, 6, {, })
+            listener: endClassOrMixinOrExtensionBody(DeclarationKind.Class, 6, {, })
           listener: endClassDeclaration(class, })
   listener: endTopLevelDeclaration()
   reportAllErrorTokens(class)
diff --git a/pkg/front_end/parser_testcases/nnbd/issue_40805_01.dart.expect b/pkg/front_end/parser_testcases/nnbd/issue_40805_01.dart.expect
index 5e881e6..890579d 100644
--- a/pkg/front_end/parser_testcases/nnbd/issue_40805_01.dart.expect
+++ b/pkg/front_end/parser_testcases/nnbd/issue_40805_01.dart.expect
@@ -1,7 +1,7 @@
 beginCompilationUnit(class)
   beginMetadataStar(class)
   endMetadataStar(0)
-  beginClassOrNamedMixinApplicationPrelude(class)
+  beginClassOrMixinOrNamedMixinApplicationPrelude(class)
     handleIdentifier(C, classOrMixinDeclaration)
     handleNoTypeVariables({)
     beginClassDeclaration(class, null, C)
@@ -10,11 +10,11 @@
       handleClassNoWithClause()
       handleClassOrMixinImplements(null, 0)
       handleClassHeader(class, class, null)
-      beginClassOrMixinBody(DeclarationKind.Class, {)
+      beginClassOrMixinOrExtensionBody(DeclarationKind.Class, {)
         beginMetadataStar(covariant)
         endMetadataStar(0)
         beginMember()
-          beginFields({)
+          beginFields(DeclarationKind.Class, null, null, null, covariant, late, final, {)
             handleIdentifier(int, typeReference)
             handleNoTypeArguments(x)
             handleType(int, null)
@@ -22,7 +22,7 @@
             handleNoFieldInitializer(;)
           endClassFields(null, null, null, covariant, late, final, 1, covariant, ;)
         endMember()
-      endClassOrMixinBody(DeclarationKind.Class, 1, {, })
+      endClassOrMixinOrExtensionBody(DeclarationKind.Class, 1, {, })
     endClassDeclaration(class, })
   endTopLevelDeclaration()
 endCompilationUnit(1, )
diff --git a/pkg/front_end/parser_testcases/nnbd/issue_40805_01.dart.intertwined.expect b/pkg/front_end/parser_testcases/nnbd/issue_40805_01.dart.intertwined.expect
index 1680edc..a42a169 100644
--- a/pkg/front_end/parser_testcases/nnbd/issue_40805_01.dart.intertwined.expect
+++ b/pkg/front_end/parser_testcases/nnbd/issue_40805_01.dart.intertwined.expect
@@ -9,7 +9,7 @@
     parseTopLevelKeywordDeclaration(, class, Instance of 'DirectiveContext')
       parseClassDeclarationModifiers(, class)
       parseClassOrNamedMixinApplication(null, class)
-        listener: beginClassOrNamedMixinApplicationPrelude(class)
+        listener: beginClassOrMixinOrNamedMixinApplicationPrelude(class)
         ensureIdentifier(class, classOrMixinDeclaration)
           listener: handleIdentifier(C, classOrMixinDeclaration)
         listener: handleNoTypeVariables({)
@@ -25,7 +25,7 @@
               listener: handleClassOrMixinImplements(null, 0)
             listener: handleClassHeader(class, class, null)
           parseClassOrMixinOrExtensionBody(C, DeclarationKind.Class, C)
-            listener: beginClassOrMixinBody(DeclarationKind.Class, {)
+            listener: beginClassOrMixinOrExtensionBody(DeclarationKind.Class, {)
             notEofOrValue(}, covariant)
             parseClassOrMixinOrExtensionMemberImpl({, DeclarationKind.Class, C)
               parseMetadataStar({)
@@ -33,7 +33,7 @@
                 listener: endMetadataStar(0)
               listener: beginMember()
               parseFields({, null, null, null, covariant, late, final, final, Instance of 'SimpleType', x, DeclarationKind.Class, C, false)
-                listener: beginFields({)
+                listener: beginFields(DeclarationKind.Class, null, null, null, covariant, late, final, {)
                 listener: handleIdentifier(int, typeReference)
                 listener: handleNoTypeArguments(x)
                 listener: handleType(int, null)
@@ -44,7 +44,7 @@
                 listener: endClassFields(null, null, null, covariant, late, final, 1, covariant, ;)
               listener: endMember()
             notEofOrValue(}, })
-            listener: endClassOrMixinBody(DeclarationKind.Class, 1, {, })
+            listener: endClassOrMixinOrExtensionBody(DeclarationKind.Class, 1, {, })
           listener: endClassDeclaration(class, })
   listener: endTopLevelDeclaration()
   reportAllErrorTokens(class)
diff --git a/pkg/front_end/parser_testcases/nnbd/issue_40805_02.dart.expect b/pkg/front_end/parser_testcases/nnbd/issue_40805_02.dart.expect
index b28c309..8125755 100644
--- a/pkg/front_end/parser_testcases/nnbd/issue_40805_02.dart.expect
+++ b/pkg/front_end/parser_testcases/nnbd/issue_40805_02.dart.expect
@@ -7,7 +7,7 @@
 beginCompilationUnit(class)
   beginMetadataStar(class)
   endMetadataStar(0)
-  beginClassOrNamedMixinApplicationPrelude(class)
+  beginClassOrMixinOrNamedMixinApplicationPrelude(class)
     handleIdentifier(C, classOrMixinDeclaration)
     handleNoTypeVariables({)
     beginClassDeclaration(class, null, C)
@@ -16,11 +16,11 @@
       handleClassNoWithClause()
       handleClassOrMixinImplements(null, 0)
       handleClassHeader(class, class, null)
-      beginClassOrMixinBody(DeclarationKind.Class, {)
+      beginClassOrMixinOrExtensionBody(DeclarationKind.Class, {)
         beginMetadataStar(covariant)
         endMetadataStar(0)
         beginMember()
-          beginFields({)
+          beginFields(DeclarationKind.Class, null, null, null, covariant, late, final, {)
             handleIdentifier(int, typeReference)
             handleNoTypeArguments(x)
             handleType(int, null)
@@ -31,7 +31,7 @@
             endFieldInitializer(=, ;)
           endClassFields(null, null, null, null, late, final, 1, covariant, ;)
         endMember()
-      endClassOrMixinBody(DeclarationKind.Class, 1, {, })
+      endClassOrMixinOrExtensionBody(DeclarationKind.Class, 1, {, })
     endClassDeclaration(class, })
   endTopLevelDeclaration()
 endCompilationUnit(1, )
diff --git a/pkg/front_end/parser_testcases/nnbd/issue_40805_02.dart.intertwined.expect b/pkg/front_end/parser_testcases/nnbd/issue_40805_02.dart.intertwined.expect
index 6b1e244..777b6f6 100644
--- a/pkg/front_end/parser_testcases/nnbd/issue_40805_02.dart.intertwined.expect
+++ b/pkg/front_end/parser_testcases/nnbd/issue_40805_02.dart.intertwined.expect
@@ -9,7 +9,7 @@
     parseTopLevelKeywordDeclaration(, class, Instance of 'DirectiveContext')
       parseClassDeclarationModifiers(, class)
       parseClassOrNamedMixinApplication(null, class)
-        listener: beginClassOrNamedMixinApplicationPrelude(class)
+        listener: beginClassOrMixinOrNamedMixinApplicationPrelude(class)
         ensureIdentifier(class, classOrMixinDeclaration)
           listener: handleIdentifier(C, classOrMixinDeclaration)
         listener: handleNoTypeVariables({)
@@ -25,7 +25,7 @@
               listener: handleClassOrMixinImplements(null, 0)
             listener: handleClassHeader(class, class, null)
           parseClassOrMixinOrExtensionBody(C, DeclarationKind.Class, C)
-            listener: beginClassOrMixinBody(DeclarationKind.Class, {)
+            listener: beginClassOrMixinOrExtensionBody(DeclarationKind.Class, {)
             notEofOrValue(}, covariant)
             parseClassOrMixinOrExtensionMemberImpl({, DeclarationKind.Class, C)
               parseMetadataStar({)
@@ -33,7 +33,7 @@
                 listener: endMetadataStar(0)
               listener: beginMember()
               parseFields({, null, null, null, covariant, late, final, final, Instance of 'SimpleType', x, DeclarationKind.Class, C, false)
-                listener: beginFields({)
+                listener: beginFields(DeclarationKind.Class, null, null, null, covariant, late, final, {)
                 listener: handleIdentifier(int, typeReference)
                 listener: handleNoTypeArguments(x)
                 listener: handleType(int, null)
@@ -53,7 +53,7 @@
                 listener: endClassFields(null, null, null, null, late, final, 1, covariant, ;)
               listener: endMember()
             notEofOrValue(}, })
-            listener: endClassOrMixinBody(DeclarationKind.Class, 1, {, })
+            listener: endClassOrMixinOrExtensionBody(DeclarationKind.Class, 1, {, })
           listener: endClassDeclaration(class, })
   listener: endTopLevelDeclaration()
   reportAllErrorTokens(class)
diff --git a/pkg/front_end/parser_testcases/nnbd/issue_40805_03.dart.expect b/pkg/front_end/parser_testcases/nnbd/issue_40805_03.dart.expect
index a3cfa19..0c383ad 100644
--- a/pkg/front_end/parser_testcases/nnbd/issue_40805_03.dart.expect
+++ b/pkg/front_end/parser_testcases/nnbd/issue_40805_03.dart.expect
@@ -7,7 +7,7 @@
 beginCompilationUnit(class)
   beginMetadataStar(class)
   endMetadataStar(0)
-  beginClassOrNamedMixinApplicationPrelude(class)
+  beginClassOrMixinOrNamedMixinApplicationPrelude(class)
     handleIdentifier(C, classOrMixinDeclaration)
     handleNoTypeVariables({)
     beginClassDeclaration(class, null, C)
@@ -16,11 +16,11 @@
       handleClassNoWithClause()
       handleClassOrMixinImplements(null, 0)
       handleClassHeader(class, class, null)
-      beginClassOrMixinBody(DeclarationKind.Class, {)
+      beginClassOrMixinOrExtensionBody(DeclarationKind.Class, {)
         beginMetadataStar(covariant)
         endMetadataStar(0)
         beginMember()
-          beginFields({)
+          beginFields(DeclarationKind.Class, null, null, null, covariant, null, final, {)
             handleRecoverableError(FinalAndCovariant, covariant, covariant)
             handleIdentifier(int, typeReference)
             handleNoTypeArguments(x)
@@ -31,7 +31,7 @@
             endFieldInitializer(=, ;)
           endClassFields(null, null, null, null, null, final, 1, covariant, ;)
         endMember()
-      endClassOrMixinBody(DeclarationKind.Class, 1, {, })
+      endClassOrMixinOrExtensionBody(DeclarationKind.Class, 1, {, })
     endClassDeclaration(class, })
   endTopLevelDeclaration()
 endCompilationUnit(1, )
diff --git a/pkg/front_end/parser_testcases/nnbd/issue_40805_03.dart.intertwined.expect b/pkg/front_end/parser_testcases/nnbd/issue_40805_03.dart.intertwined.expect
index 5664402..40f8c8c5 100644
--- a/pkg/front_end/parser_testcases/nnbd/issue_40805_03.dart.intertwined.expect
+++ b/pkg/front_end/parser_testcases/nnbd/issue_40805_03.dart.intertwined.expect
@@ -9,7 +9,7 @@
     parseTopLevelKeywordDeclaration(, class, Instance of 'DirectiveContext')
       parseClassDeclarationModifiers(, class)
       parseClassOrNamedMixinApplication(null, class)
-        listener: beginClassOrNamedMixinApplicationPrelude(class)
+        listener: beginClassOrMixinOrNamedMixinApplicationPrelude(class)
         ensureIdentifier(class, classOrMixinDeclaration)
           listener: handleIdentifier(C, classOrMixinDeclaration)
         listener: handleNoTypeVariables({)
@@ -25,7 +25,7 @@
               listener: handleClassOrMixinImplements(null, 0)
             listener: handleClassHeader(class, class, null)
           parseClassOrMixinOrExtensionBody(C, DeclarationKind.Class, C)
-            listener: beginClassOrMixinBody(DeclarationKind.Class, {)
+            listener: beginClassOrMixinOrExtensionBody(DeclarationKind.Class, {)
             notEofOrValue(}, covariant)
             parseClassOrMixinOrExtensionMemberImpl({, DeclarationKind.Class, C)
               parseMetadataStar({)
@@ -33,7 +33,7 @@
                 listener: endMetadataStar(0)
               listener: beginMember()
               parseFields({, null, null, null, covariant, null, final, final, Instance of 'SimpleType', x, DeclarationKind.Class, C, false)
-                listener: beginFields({)
+                listener: beginFields(DeclarationKind.Class, null, null, null, covariant, null, final, {)
                 reportRecoverableError(covariant, FinalAndCovariant)
                   listener: handleRecoverableError(FinalAndCovariant, covariant, covariant)
                 listener: handleIdentifier(int, typeReference)
@@ -53,7 +53,7 @@
                 listener: endClassFields(null, null, null, null, null, final, 1, covariant, ;)
               listener: endMember()
             notEofOrValue(}, })
-            listener: endClassOrMixinBody(DeclarationKind.Class, 1, {, })
+            listener: endClassOrMixinOrExtensionBody(DeclarationKind.Class, 1, {, })
           listener: endClassDeclaration(class, })
   listener: endTopLevelDeclaration()
   reportAllErrorTokens(class)
diff --git a/pkg/front_end/parser_testcases/nnbd/issue_40834_01.dart.expect b/pkg/front_end/parser_testcases/nnbd/issue_40834_01.dart.expect
index 0624ab1..8bd1608 100644
--- a/pkg/front_end/parser_testcases/nnbd/issue_40834_01.dart.expect
+++ b/pkg/front_end/parser_testcases/nnbd/issue_40834_01.dart.expect
@@ -1,7 +1,7 @@
 beginCompilationUnit(class)
   beginMetadataStar(class)
   endMetadataStar(0)
-  beginClassOrNamedMixinApplicationPrelude(class)
+  beginClassOrMixinOrNamedMixinApplicationPrelude(class)
     handleIdentifier(Foo, classOrMixinDeclaration)
     handleNoTypeVariables({)
     beginClassDeclaration(class, null, Foo)
@@ -10,11 +10,11 @@
       handleClassNoWithClause()
       handleClassOrMixinImplements(null, 0)
       handleClassHeader(class, class, null)
-      beginClassOrMixinBody(DeclarationKind.Class, {)
+      beginClassOrMixinOrExtensionBody(DeclarationKind.Class, {)
         beginMetadataStar(String)
         endMetadataStar(0)
         beginMember()
-          beginFields({)
+          beginFields(DeclarationKind.Class, null, null, null, null, null, null, {)
             handleIdentifier(String, typeReference)
             handleNoTypeArguments(?)
             handleType(String, ?)
@@ -25,7 +25,7 @@
         beginMetadataStar(int)
         endMetadataStar(0)
         beginMember()
-          beginFields(;)
+          beginFields(DeclarationKind.Class, null, null, null, null, null, null, ;)
             handleIdentifier(int, typeReference)
             handleNoTypeArguments(y)
             handleType(int, null)
@@ -36,7 +36,7 @@
         beginMetadataStar(Foo)
         endMetadataStar(0)
         beginMember()
-          beginMethod(null, null, null, null, null, Foo)
+          beginMethod(DeclarationKind.Class, null, null, null, null, null, Foo)
             handleNoType(;)
             handleIdentifier(Foo, methodDeclaration)
             handleNoTypeVariables(()
@@ -85,7 +85,7 @@
         beginMetadataStar(Foo)
         endMetadataStar(0)
         beginMember()
-          beginMethod(null, null, null, null, null, Foo)
+          beginMethod(DeclarationKind.Class, null, null, null, null, null, Foo)
             handleNoType(;)
             handleIdentifier(Foo, methodDeclaration)
             handleIdentifier(a, methodDeclarationContinuation)
@@ -149,7 +149,7 @@
         beginMetadataStar(Foo)
         endMetadataStar(0)
         beginMember()
-          beginMethod(null, null, null, null, null, Foo)
+          beginMethod(DeclarationKind.Class, null, null, null, null, null, Foo)
             handleNoType(;)
             handleIdentifier(Foo, methodDeclaration)
             handleIdentifier(b, methodDeclarationContinuation)
@@ -213,7 +213,7 @@
         beginMetadataStar(Foo)
         endMetadataStar(0)
         beginMember()
-          beginMethod(null, null, null, null, null, Foo)
+          beginMethod(DeclarationKind.Class, null, null, null, null, null, Foo)
             handleNoType(;)
             handleIdentifier(Foo, methodDeclaration)
             handleIdentifier(c, methodDeclarationContinuation)
@@ -277,7 +277,7 @@
         beginMetadataStar(Foo)
         endMetadataStar(0)
         beginMember()
-          beginMethod(null, null, null, null, null, Foo)
+          beginMethod(DeclarationKind.Class, null, null, null, null, null, Foo)
             handleNoType(;)
             handleIdentifier(Foo, methodDeclaration)
             handleIdentifier(d, methodDeclarationContinuation)
@@ -338,7 +338,7 @@
             handleEmptyFunctionBody(;)
           endClassConstructor(null, Foo, (, :, ;)
         endMember()
-      endClassOrMixinBody(DeclarationKind.Class, 7, {, })
+      endClassOrMixinOrExtensionBody(DeclarationKind.Class, 7, {, })
     endClassDeclaration(class, })
   endTopLevelDeclaration()
 endCompilationUnit(1, )
diff --git a/pkg/front_end/parser_testcases/nnbd/issue_40834_01.dart.intertwined.expect b/pkg/front_end/parser_testcases/nnbd/issue_40834_01.dart.intertwined.expect
index 4bd0d59..377a621 100644
--- a/pkg/front_end/parser_testcases/nnbd/issue_40834_01.dart.intertwined.expect
+++ b/pkg/front_end/parser_testcases/nnbd/issue_40834_01.dart.intertwined.expect
@@ -9,7 +9,7 @@
     parseTopLevelKeywordDeclaration(, class, Instance of 'DirectiveContext')
       parseClassDeclarationModifiers(, class)
       parseClassOrNamedMixinApplication(null, class)
-        listener: beginClassOrNamedMixinApplicationPrelude(class)
+        listener: beginClassOrMixinOrNamedMixinApplicationPrelude(class)
         ensureIdentifier(class, classOrMixinDeclaration)
           listener: handleIdentifier(Foo, classOrMixinDeclaration)
         listener: handleNoTypeVariables({)
@@ -25,7 +25,7 @@
               listener: handleClassOrMixinImplements(null, 0)
             listener: handleClassHeader(class, class, null)
           parseClassOrMixinOrExtensionBody(Foo, DeclarationKind.Class, Foo)
-            listener: beginClassOrMixinBody(DeclarationKind.Class, {)
+            listener: beginClassOrMixinOrExtensionBody(DeclarationKind.Class, {)
             notEofOrValue(}, String)
             parseClassOrMixinOrExtensionMemberImpl({, DeclarationKind.Class, Foo)
               parseMetadataStar({)
@@ -33,7 +33,7 @@
                 listener: endMetadataStar(0)
               listener: beginMember()
               parseFields({, null, null, null, null, null, null, {, Instance of 'SimpleNullableType', x, DeclarationKind.Class, Foo, false)
-                listener: beginFields({)
+                listener: beginFields(DeclarationKind.Class, null, null, null, null, null, null, {)
                 listener: handleIdentifier(String, typeReference)
                 listener: handleNoTypeArguments(?)
                 listener: handleType(String, ?)
@@ -50,7 +50,7 @@
                 listener: endMetadataStar(0)
               listener: beginMember()
               parseFields(;, null, null, null, null, null, null, ;, Instance of 'SimpleType', y, DeclarationKind.Class, Foo, false)
-                listener: beginFields(;)
+                listener: beginFields(DeclarationKind.Class, null, null, null, null, null, null, ;)
                 listener: handleIdentifier(int, typeReference)
                 listener: handleNoTypeArguments(y)
                 listener: handleType(int, null)
@@ -68,7 +68,7 @@
               listener: beginMember()
               isReservedKeyword(()
               parseMethod(;, null, null, null, null, null, null, ;, Instance of 'NoType', null, Foo, DeclarationKind.Class, Foo, false)
-                listener: beginMethod(null, null, null, null, null, Foo)
+                listener: beginMethod(DeclarationKind.Class, null, null, null, null, null, Foo)
                 listener: handleNoType(;)
                 ensureIdentifierPotentiallyRecovered(;, methodDeclaration, false)
                   listener: handleIdentifier(Foo, methodDeclaration)
@@ -174,7 +174,7 @@
               listener: beginMember()
               isReservedKeyword(.)
               parseMethod(;, null, null, null, null, null, null, ;, Instance of 'NoType', null, Foo, DeclarationKind.Class, Foo, false)
-                listener: beginMethod(null, null, null, null, null, Foo)
+                listener: beginMethod(DeclarationKind.Class, null, null, null, null, null, Foo)
                 listener: handleNoType(;)
                 ensureIdentifierPotentiallyRecovered(;, methodDeclaration, false)
                   listener: handleIdentifier(Foo, methodDeclaration)
@@ -319,7 +319,7 @@
               listener: beginMember()
               isReservedKeyword(.)
               parseMethod(;, null, null, null, null, null, null, ;, Instance of 'NoType', null, Foo, DeclarationKind.Class, Foo, false)
-                listener: beginMethod(null, null, null, null, null, Foo)
+                listener: beginMethod(DeclarationKind.Class, null, null, null, null, null, Foo)
                 listener: handleNoType(;)
                 ensureIdentifierPotentiallyRecovered(;, methodDeclaration, false)
                   listener: handleIdentifier(Foo, methodDeclaration)
@@ -464,7 +464,7 @@
               listener: beginMember()
               isReservedKeyword(.)
               parseMethod(;, null, null, null, null, null, null, ;, Instance of 'NoType', null, Foo, DeclarationKind.Class, Foo, false)
-                listener: beginMethod(null, null, null, null, null, Foo)
+                listener: beginMethod(DeclarationKind.Class, null, null, null, null, null, Foo)
                 listener: handleNoType(;)
                 ensureIdentifierPotentiallyRecovered(;, methodDeclaration, false)
                   listener: handleIdentifier(Foo, methodDeclaration)
@@ -609,7 +609,7 @@
               listener: beginMember()
               isReservedKeyword(.)
               parseMethod(;, null, null, null, null, null, null, ;, Instance of 'NoType', null, Foo, DeclarationKind.Class, Foo, false)
-                listener: beginMethod(null, null, null, null, null, Foo)
+                listener: beginMethod(DeclarationKind.Class, null, null, null, null, null, Foo)
                 listener: handleNoType(;)
                 ensureIdentifierPotentiallyRecovered(;, methodDeclaration, false)
                   listener: handleIdentifier(Foo, methodDeclaration)
@@ -747,7 +747,7 @@
                 listener: endClassConstructor(null, Foo, (, :, ;)
               listener: endMember()
             notEofOrValue(}, })
-            listener: endClassOrMixinBody(DeclarationKind.Class, 7, {, })
+            listener: endClassOrMixinOrExtensionBody(DeclarationKind.Class, 7, {, })
           listener: endClassDeclaration(class, })
   listener: endTopLevelDeclaration()
   reportAllErrorTokens(class)
diff --git a/pkg/front_end/parser_testcases/nnbd/issue_40834_02.dart.expect b/pkg/front_end/parser_testcases/nnbd/issue_40834_02.dart.expect
index 89bb893..a6d80f5 100644
--- a/pkg/front_end/parser_testcases/nnbd/issue_40834_02.dart.expect
+++ b/pkg/front_end/parser_testcases/nnbd/issue_40834_02.dart.expect
@@ -1,7 +1,7 @@
 beginCompilationUnit(class)
   beginMetadataStar(class)
   endMetadataStar(0)
-  beginClassOrNamedMixinApplicationPrelude(class)
+  beginClassOrMixinOrNamedMixinApplicationPrelude(class)
     handleIdentifier(Foo, classOrMixinDeclaration)
     handleNoTypeVariables({)
     beginClassDeclaration(class, null, Foo)
@@ -10,11 +10,11 @@
       handleClassNoWithClause()
       handleClassOrMixinImplements(null, 0)
       handleClassHeader(class, class, null)
-      beginClassOrMixinBody(DeclarationKind.Class, {)
+      beginClassOrMixinOrExtensionBody(DeclarationKind.Class, {)
         beginMetadataStar(String)
         endMetadataStar(0)
         beginMember()
-          beginFields({)
+          beginFields(DeclarationKind.Class, null, null, null, null, null, null, {)
             handleIdentifier(String, typeReference)
             handleNoTypeArguments(?)
             handleType(String, ?)
@@ -25,7 +25,7 @@
         beginMetadataStar(int)
         endMetadataStar(0)
         beginMember()
-          beginFields(;)
+          beginFields(DeclarationKind.Class, null, null, null, null, null, null, ;)
             handleIdentifier(int, typeReference)
             handleNoTypeArguments(y)
             handleType(int, null)
@@ -36,7 +36,7 @@
         beginMetadataStar(Foo)
         endMetadataStar(0)
         beginMember()
-          beginMethod(null, null, null, null, null, Foo)
+          beginMethod(DeclarationKind.Class, null, null, null, null, null, Foo)
             handleNoType(;)
             handleIdentifier(Foo, methodDeclaration)
             handleNoTypeVariables(()
@@ -82,7 +82,7 @@
             handleEmptyFunctionBody(;)
           endClassConstructor(null, Foo, (, :, ;)
         endMember()
-      endClassOrMixinBody(DeclarationKind.Class, 3, {, })
+      endClassOrMixinOrExtensionBody(DeclarationKind.Class, 3, {, })
     endClassDeclaration(class, })
   endTopLevelDeclaration()
 endCompilationUnit(1, )
diff --git a/pkg/front_end/parser_testcases/nnbd/issue_40834_02.dart.intertwined.expect b/pkg/front_end/parser_testcases/nnbd/issue_40834_02.dart.intertwined.expect
index 6678394c..7bae571 100644
--- a/pkg/front_end/parser_testcases/nnbd/issue_40834_02.dart.intertwined.expect
+++ b/pkg/front_end/parser_testcases/nnbd/issue_40834_02.dart.intertwined.expect
@@ -9,7 +9,7 @@
     parseTopLevelKeywordDeclaration(, class, Instance of 'DirectiveContext')
       parseClassDeclarationModifiers(, class)
       parseClassOrNamedMixinApplication(null, class)
-        listener: beginClassOrNamedMixinApplicationPrelude(class)
+        listener: beginClassOrMixinOrNamedMixinApplicationPrelude(class)
         ensureIdentifier(class, classOrMixinDeclaration)
           listener: handleIdentifier(Foo, classOrMixinDeclaration)
         listener: handleNoTypeVariables({)
@@ -25,7 +25,7 @@
               listener: handleClassOrMixinImplements(null, 0)
             listener: handleClassHeader(class, class, null)
           parseClassOrMixinOrExtensionBody(Foo, DeclarationKind.Class, Foo)
-            listener: beginClassOrMixinBody(DeclarationKind.Class, {)
+            listener: beginClassOrMixinOrExtensionBody(DeclarationKind.Class, {)
             notEofOrValue(}, String)
             parseClassOrMixinOrExtensionMemberImpl({, DeclarationKind.Class, Foo)
               parseMetadataStar({)
@@ -33,7 +33,7 @@
                 listener: endMetadataStar(0)
               listener: beginMember()
               parseFields({, null, null, null, null, null, null, {, Instance of 'SimpleNullableType', x, DeclarationKind.Class, Foo, false)
-                listener: beginFields({)
+                listener: beginFields(DeclarationKind.Class, null, null, null, null, null, null, {)
                 listener: handleIdentifier(String, typeReference)
                 listener: handleNoTypeArguments(?)
                 listener: handleType(String, ?)
@@ -50,7 +50,7 @@
                 listener: endMetadataStar(0)
               listener: beginMember()
               parseFields(;, null, null, null, null, null, null, ;, Instance of 'SimpleType', y, DeclarationKind.Class, Foo, false)
-                listener: beginFields(;)
+                listener: beginFields(DeclarationKind.Class, null, null, null, null, null, null, ;)
                 listener: handleIdentifier(int, typeReference)
                 listener: handleNoTypeArguments(y)
                 listener: handleType(int, null)
@@ -68,7 +68,7 @@
               listener: beginMember()
               isReservedKeyword(()
               parseMethod(;, null, null, null, null, null, null, ;, Instance of 'NoType', null, Foo, DeclarationKind.Class, Foo, false)
-                listener: beginMethod(null, null, null, null, null, Foo)
+                listener: beginMethod(DeclarationKind.Class, null, null, null, null, null, Foo)
                 listener: handleNoType(;)
                 ensureIdentifierPotentiallyRecovered(;, methodDeclaration, false)
                   listener: handleIdentifier(Foo, methodDeclaration)
@@ -167,7 +167,7 @@
                 listener: endClassConstructor(null, Foo, (, :, ;)
               listener: endMember()
             notEofOrValue(}, })
-            listener: endClassOrMixinBody(DeclarationKind.Class, 3, {, })
+            listener: endClassOrMixinOrExtensionBody(DeclarationKind.Class, 3, {, })
           listener: endClassDeclaration(class, })
   listener: endTopLevelDeclaration()
   reportAllErrorTokens(class)
diff --git a/pkg/front_end/parser_testcases/nnbd/issue_40834_03.dart.expect b/pkg/front_end/parser_testcases/nnbd/issue_40834_03.dart.expect
index 1efd65e..4b60813 100644
--- a/pkg/front_end/parser_testcases/nnbd/issue_40834_03.dart.expect
+++ b/pkg/front_end/parser_testcases/nnbd/issue_40834_03.dart.expect
@@ -1,7 +1,7 @@
 beginCompilationUnit(class)
   beginMetadataStar(class)
   endMetadataStar(0)
-  beginClassOrNamedMixinApplicationPrelude(class)
+  beginClassOrMixinOrNamedMixinApplicationPrelude(class)
     handleIdentifier(Foo, classOrMixinDeclaration)
     handleNoTypeVariables({)
     beginClassDeclaration(class, null, Foo)
@@ -10,11 +10,11 @@
       handleClassNoWithClause()
       handleClassOrMixinImplements(null, 0)
       handleClassHeader(class, class, null)
-      beginClassOrMixinBody(DeclarationKind.Class, {)
+      beginClassOrMixinOrExtensionBody(DeclarationKind.Class, {)
         beginMetadataStar(String)
         endMetadataStar(0)
         beginMember()
-          beginFields({)
+          beginFields(DeclarationKind.Class, null, null, null, null, null, null, {)
             handleIdentifier(String, typeReference)
             handleNoTypeArguments(?)
             handleType(String, ?)
@@ -25,7 +25,7 @@
         beginMetadataStar(int)
         endMetadataStar(0)
         beginMember()
-          beginFields(;)
+          beginFields(DeclarationKind.Class, null, null, null, null, null, null, ;)
             handleIdentifier(int, typeReference)
             handleNoTypeArguments(y)
             handleType(int, null)
@@ -36,7 +36,7 @@
         beginMetadataStar(Foo)
         endMetadataStar(0)
         beginMember()
-          beginMethod(null, null, null, null, null, Foo)
+          beginMethod(DeclarationKind.Class, null, null, null, null, null, Foo)
             handleNoType(;)
             handleIdentifier(Foo, methodDeclaration)
             handleNoTypeVariables(()
@@ -96,7 +96,7 @@
         beginMetadataStar(void)
         endMetadataStar(0)
         beginMember()
-          beginMethod(null, null, null, null, null, foo)
+          beginMethod(DeclarationKind.Class, null, null, null, null, null, foo)
             handleVoidKeyword(void)
             handleIdentifier(foo, methodDeclaration)
             handleNoTypeVariables(()
@@ -153,7 +153,7 @@
         beginMetadataStar(void)
         endMetadataStar(0)
         beginMember()
-          beginMethod(null, null, null, null, null, bar)
+          beginMethod(DeclarationKind.Class, null, null, null, null, null, bar)
             handleVoidKeyword(void)
             handleIdentifier(bar, methodDeclaration)
             handleNoTypeVariables(()
@@ -207,7 +207,7 @@
             endBlockFunctionBody(1, {, })
           endClassMethod(null, void, (, null, })
         endMember()
-      endClassOrMixinBody(DeclarationKind.Class, 5, {, })
+      endClassOrMixinOrExtensionBody(DeclarationKind.Class, 5, {, })
     endClassDeclaration(class, })
   endTopLevelDeclaration()
 endCompilationUnit(1, )
diff --git a/pkg/front_end/parser_testcases/nnbd/issue_40834_03.dart.intertwined.expect b/pkg/front_end/parser_testcases/nnbd/issue_40834_03.dart.intertwined.expect
index bfe4f7d..bcb265d 100644
--- a/pkg/front_end/parser_testcases/nnbd/issue_40834_03.dart.intertwined.expect
+++ b/pkg/front_end/parser_testcases/nnbd/issue_40834_03.dart.intertwined.expect
@@ -9,7 +9,7 @@
     parseTopLevelKeywordDeclaration(, class, Instance of 'DirectiveContext')
       parseClassDeclarationModifiers(, class)
       parseClassOrNamedMixinApplication(null, class)
-        listener: beginClassOrNamedMixinApplicationPrelude(class)
+        listener: beginClassOrMixinOrNamedMixinApplicationPrelude(class)
         ensureIdentifier(class, classOrMixinDeclaration)
           listener: handleIdentifier(Foo, classOrMixinDeclaration)
         listener: handleNoTypeVariables({)
@@ -25,7 +25,7 @@
               listener: handleClassOrMixinImplements(null, 0)
             listener: handleClassHeader(class, class, null)
           parseClassOrMixinOrExtensionBody(Foo, DeclarationKind.Class, Foo)
-            listener: beginClassOrMixinBody(DeclarationKind.Class, {)
+            listener: beginClassOrMixinOrExtensionBody(DeclarationKind.Class, {)
             notEofOrValue(}, String)
             parseClassOrMixinOrExtensionMemberImpl({, DeclarationKind.Class, Foo)
               parseMetadataStar({)
@@ -33,7 +33,7 @@
                 listener: endMetadataStar(0)
               listener: beginMember()
               parseFields({, null, null, null, null, null, null, {, Instance of 'SimpleNullableType', x, DeclarationKind.Class, Foo, false)
-                listener: beginFields({)
+                listener: beginFields(DeclarationKind.Class, null, null, null, null, null, null, {)
                 listener: handleIdentifier(String, typeReference)
                 listener: handleNoTypeArguments(?)
                 listener: handleType(String, ?)
@@ -50,7 +50,7 @@
                 listener: endMetadataStar(0)
               listener: beginMember()
               parseFields(;, null, null, null, null, null, null, ;, Instance of 'SimpleType', y, DeclarationKind.Class, Foo, false)
-                listener: beginFields(;)
+                listener: beginFields(DeclarationKind.Class, null, null, null, null, null, null, ;)
                 listener: handleIdentifier(int, typeReference)
                 listener: handleNoTypeArguments(y)
                 listener: handleType(int, null)
@@ -68,7 +68,7 @@
               listener: beginMember()
               isReservedKeyword(()
               parseMethod(;, null, null, null, null, null, null, ;, Instance of 'NoType', null, Foo, DeclarationKind.Class, Foo, false)
-                listener: beginMethod(null, null, null, null, null, Foo)
+                listener: beginMethod(DeclarationKind.Class, null, null, null, null, null, Foo)
                 listener: handleNoType(;)
                 ensureIdentifierPotentiallyRecovered(;, methodDeclaration, false)
                   listener: handleIdentifier(Foo, methodDeclaration)
@@ -204,7 +204,7 @@
                 listener: endMetadataStar(0)
               listener: beginMember()
               parseMethod(;, null, null, null, null, null, null, ;, Instance of 'VoidType', null, foo, DeclarationKind.Class, Foo, false)
-                listener: beginMethod(null, null, null, null, null, foo)
+                listener: beginMethod(DeclarationKind.Class, null, null, null, null, null, foo)
                 listener: handleVoidKeyword(void)
                 ensureIdentifierPotentiallyRecovered(void, methodDeclaration, false)
                   listener: handleIdentifier(foo, methodDeclaration)
@@ -345,7 +345,7 @@
                 listener: endMetadataStar(0)
               listener: beginMember()
               parseMethod(}, null, null, null, null, null, null, }, Instance of 'VoidType', null, bar, DeclarationKind.Class, Foo, false)
-                listener: beginMethod(null, null, null, null, null, bar)
+                listener: beginMethod(DeclarationKind.Class, null, null, null, null, null, bar)
                 listener: handleVoidKeyword(void)
                 ensureIdentifierPotentiallyRecovered(void, methodDeclaration, false)
                   listener: handleIdentifier(bar, methodDeclaration)
@@ -480,7 +480,7 @@
                 listener: endClassMethod(null, void, (, null, })
               listener: endMember()
             notEofOrValue(}, })
-            listener: endClassOrMixinBody(DeclarationKind.Class, 5, {, })
+            listener: endClassOrMixinOrExtensionBody(DeclarationKind.Class, 5, {, })
           listener: endClassDeclaration(class, })
   listener: endTopLevelDeclaration()
   reportAllErrorTokens(class)
diff --git a/pkg/front_end/parser_testcases/nnbd/issue_41597.dart.expect b/pkg/front_end/parser_testcases/nnbd/issue_41597.dart.expect
index 8553682..4bb704e 100644
--- a/pkg/front_end/parser_testcases/nnbd/issue_41597.dart.expect
+++ b/pkg/front_end/parser_testcases/nnbd/issue_41597.dart.expect
@@ -2,7 +2,7 @@
   beginMetadataStar(bool)
   endMetadataStar(0)
   beginTopLevelMember(bool)
-    beginFields()
+    beginFields(DeclarationKind.TopLevel, null, null, null, null, null, null, )
       handleIdentifier(bool, typeReference)
       handleNoTypeArguments(x)
       handleType(bool, null)
@@ -13,7 +13,7 @@
   beginMetadataStar(bool)
   endMetadataStar(0)
   beginTopLevelMember(bool)
-    beginFields(;)
+    beginFields(DeclarationKind.TopLevel, null, null, null, null, null, null, ;)
       handleIdentifier(bool, typeReference)
       handleNoTypeArguments(x)
       handleType(bool, null)
@@ -69,7 +69,7 @@
   endTopLevelDeclaration(class)
   beginMetadataStar(class)
   endMetadataStar(0)
-  beginClassOrNamedMixinApplicationPrelude(class)
+  beginClassOrMixinOrNamedMixinApplicationPrelude(class)
     handleIdentifier(C, classOrMixinDeclaration)
     handleNoTypeVariables({)
     beginClassDeclaration(class, null, C)
@@ -78,11 +78,11 @@
       handleClassNoWithClause()
       handleClassOrMixinImplements(null, 0)
       handleClassHeader(class, class, null)
-      beginClassOrMixinBody(DeclarationKind.Class, {)
+      beginClassOrMixinOrExtensionBody(DeclarationKind.Class, {)
         beginMetadataStar(C)
         endMetadataStar(0)
         beginMember()
-          beginMethod(null, null, null, null, null, C)
+          beginMethod(DeclarationKind.Class, null, null, null, null, null, C)
             handleNoType({)
             handleIdentifier(C, methodDeclaration)
             handleIdentifier(c0, methodDeclarationContinuation)
@@ -106,7 +106,7 @@
         beginMetadataStar(C)
         endMetadataStar(0)
         beginMember()
-          beginMethod(null, null, null, null, null, C)
+          beginMethod(DeclarationKind.Class, null, null, null, null, null, C)
             handleNoType(;)
             handleIdentifier(C, methodDeclaration)
             handleIdentifier(c1, methodDeclarationContinuation)
@@ -128,7 +128,7 @@
             handleEmptyFunctionBody(;)
           endClassConstructor(null, C, (, :, ;)
         endMember()
-      endClassOrMixinBody(DeclarationKind.Class, 2, {, })
+      endClassOrMixinOrExtensionBody(DeclarationKind.Class, 2, {, })
     endClassDeclaration(class, })
   endTopLevelDeclaration(main)
   beginMetadataStar(main)
diff --git a/pkg/front_end/parser_testcases/nnbd/issue_41597.dart.intertwined.expect b/pkg/front_end/parser_testcases/nnbd/issue_41597.dart.intertwined.expect
index 86b9cdb..1b2b88b 100644
--- a/pkg/front_end/parser_testcases/nnbd/issue_41597.dart.intertwined.expect
+++ b/pkg/front_end/parser_testcases/nnbd/issue_41597.dart.intertwined.expect
@@ -9,7 +9,7 @@
     parseTopLevelMemberImpl()
       listener: beginTopLevelMember(bool)
       parseFields(, null, null, null, null, null, null, , Instance of 'SimpleType', x, DeclarationKind.TopLevel, null, false)
-        listener: beginFields()
+        listener: beginFields(DeclarationKind.TopLevel, null, null, null, null, null, null, )
         listener: handleIdentifier(bool, typeReference)
         listener: handleNoTypeArguments(x)
         listener: handleType(bool, null)
@@ -26,7 +26,7 @@
     parseTopLevelMemberImpl(;)
       listener: beginTopLevelMember(bool)
       parseFields(;, null, null, null, null, null, null, ;, Instance of 'SimpleType', x, DeclarationKind.TopLevel, null, false)
-        listener: beginFields(;)
+        listener: beginFields(DeclarationKind.TopLevel, null, null, null, null, null, null, ;)
         listener: handleIdentifier(bool, typeReference)
         listener: handleNoTypeArguments(x)
         listener: handleType(bool, null)
@@ -189,7 +189,7 @@
     parseTopLevelKeywordDeclaration(}, class, Instance of 'DirectiveContext')
       parseClassDeclarationModifiers(}, class)
       parseClassOrNamedMixinApplication(null, class)
-        listener: beginClassOrNamedMixinApplicationPrelude(class)
+        listener: beginClassOrMixinOrNamedMixinApplicationPrelude(class)
         ensureIdentifier(class, classOrMixinDeclaration)
           listener: handleIdentifier(C, classOrMixinDeclaration)
         listener: handleNoTypeVariables({)
@@ -205,7 +205,7 @@
               listener: handleClassOrMixinImplements(null, 0)
             listener: handleClassHeader(class, class, null)
           parseClassOrMixinOrExtensionBody(C, DeclarationKind.Class, C)
-            listener: beginClassOrMixinBody(DeclarationKind.Class, {)
+            listener: beginClassOrMixinOrExtensionBody(DeclarationKind.Class, {)
             notEofOrValue(}, C)
             parseClassOrMixinOrExtensionMemberImpl({, DeclarationKind.Class, C)
               parseMetadataStar({)
@@ -214,7 +214,7 @@
               listener: beginMember()
               isReservedKeyword(.)
               parseMethod({, null, null, null, null, null, null, {, Instance of 'NoType', null, C, DeclarationKind.Class, C, false)
-                listener: beginMethod(null, null, null, null, null, C)
+                listener: beginMethod(DeclarationKind.Class, null, null, null, null, null, C)
                 listener: handleNoType({)
                 ensureIdentifierPotentiallyRecovered({, methodDeclaration, false)
                   listener: handleIdentifier(C, methodDeclaration)
@@ -267,7 +267,7 @@
               listener: beginMember()
               isReservedKeyword(.)
               parseMethod(;, null, null, null, null, null, null, ;, Instance of 'NoType', null, C, DeclarationKind.Class, C, false)
-                listener: beginMethod(null, null, null, null, null, C)
+                listener: beginMethod(DeclarationKind.Class, null, null, null, null, null, C)
                 listener: handleNoType(;)
                 ensureIdentifierPotentiallyRecovered(;, methodDeclaration, false)
                   listener: handleIdentifier(C, methodDeclaration)
@@ -314,7 +314,7 @@
                 listener: endClassConstructor(null, C, (, :, ;)
               listener: endMember()
             notEofOrValue(}, })
-            listener: endClassOrMixinBody(DeclarationKind.Class, 2, {, })
+            listener: endClassOrMixinOrExtensionBody(DeclarationKind.Class, 2, {, })
           listener: endClassDeclaration(class, })
   listener: endTopLevelDeclaration(main)
   parseTopLevelDeclarationImpl(}, Instance of 'DirectiveContext')
diff --git a/pkg/front_end/parser_testcases/nnbd/issue_42621.dart.expect b/pkg/front_end/parser_testcases/nnbd/issue_42621.dart.expect
index 5447d9d..1cc1518 100644
--- a/pkg/front_end/parser_testcases/nnbd/issue_42621.dart.expect
+++ b/pkg/front_end/parser_testcases/nnbd/issue_42621.dart.expect
@@ -305,7 +305,7 @@
   endTopLevelDeclaration(class)
   beginMetadataStar(class)
   endMetadataStar(0)
-  beginClassOrNamedMixinApplicationPrelude(class)
+  beginClassOrMixinOrNamedMixinApplicationPrelude(class)
     handleIdentifier(Order, classOrMixinDeclaration)
     handleNoTypeVariables({)
     beginClassDeclaration(class, null, Order)
@@ -314,11 +314,11 @@
       handleClassNoWithClause()
       handleClassOrMixinImplements(null, 0)
       handleClassHeader(class, class, null)
-      beginClassOrMixinBody(DeclarationKind.Class, {)
+      beginClassOrMixinOrExtensionBody(DeclarationKind.Class, {)
         beginMetadataStar(List)
         endMetadataStar(0)
         beginMember()
-          beginFields({)
+          beginFields(DeclarationKind.Class, null, null, null, null, null, null, {)
             handleIdentifier(List, typeReference)
             handleNoTypeArguments(?)
             handleType(List, ?)
@@ -329,7 +329,7 @@
         beginMetadataStar(int)
         endMetadataStar(0)
         beginMember()
-          beginFields(;)
+          beginFields(DeclarationKind.Class, null, null, null, null, null, null, ;)
             handleIdentifier(int, typeReference)
             handleNoTypeArguments(?)
             handleType(int, ?)
@@ -337,7 +337,7 @@
             handleNoFieldInitializer(;)
           endClassFields(null, null, null, null, null, null, 1, int, ;)
         endMember()
-      endClassOrMixinBody(DeclarationKind.Class, 2, {, })
+      endClassOrMixinOrExtensionBody(DeclarationKind.Class, 2, {, })
     endClassDeclaration(class, })
   endTopLevelDeclaration()
 endCompilationUnit(5, )
diff --git a/pkg/front_end/parser_testcases/nnbd/issue_42621.dart.intertwined.expect b/pkg/front_end/parser_testcases/nnbd/issue_42621.dart.intertwined.expect
index 7069d7b..a2e28bd 100644
--- a/pkg/front_end/parser_testcases/nnbd/issue_42621.dart.intertwined.expect
+++ b/pkg/front_end/parser_testcases/nnbd/issue_42621.dart.intertwined.expect
@@ -637,7 +637,7 @@
     parseTopLevelKeywordDeclaration(}, class, Instance of 'DirectiveContext')
       parseClassDeclarationModifiers(}, class)
       parseClassOrNamedMixinApplication(null, class)
-        listener: beginClassOrNamedMixinApplicationPrelude(class)
+        listener: beginClassOrMixinOrNamedMixinApplicationPrelude(class)
         ensureIdentifier(class, classOrMixinDeclaration)
           listener: handleIdentifier(Order, classOrMixinDeclaration)
         listener: handleNoTypeVariables({)
@@ -653,7 +653,7 @@
               listener: handleClassOrMixinImplements(null, 0)
             listener: handleClassHeader(class, class, null)
           parseClassOrMixinOrExtensionBody(Order, DeclarationKind.Class, Order)
-            listener: beginClassOrMixinBody(DeclarationKind.Class, {)
+            listener: beginClassOrMixinOrExtensionBody(DeclarationKind.Class, {)
             notEofOrValue(}, List)
             parseClassOrMixinOrExtensionMemberImpl({, DeclarationKind.Class, Order)
               parseMetadataStar({)
@@ -661,7 +661,7 @@
                 listener: endMetadataStar(0)
               listener: beginMember()
               parseFields({, null, null, null, null, null, null, {, Instance of 'SimpleNullableType', x, DeclarationKind.Class, Order, false)
-                listener: beginFields({)
+                listener: beginFields(DeclarationKind.Class, null, null, null, null, null, null, {)
                 listener: handleIdentifier(List, typeReference)
                 listener: handleNoTypeArguments(?)
                 listener: handleType(List, ?)
@@ -678,7 +678,7 @@
                 listener: endMetadataStar(0)
               listener: beginMember()
               parseFields(;, null, null, null, null, null, null, ;, Instance of 'SimpleNullableType', y, DeclarationKind.Class, Order, false)
-                listener: beginFields(;)
+                listener: beginFields(DeclarationKind.Class, null, null, null, null, null, null, ;)
                 listener: handleIdentifier(int, typeReference)
                 listener: handleNoTypeArguments(?)
                 listener: handleType(int, ?)
@@ -689,7 +689,7 @@
                 listener: endClassFields(null, null, null, null, null, null, 1, int, ;)
               listener: endMember()
             notEofOrValue(}, })
-            listener: endClassOrMixinBody(DeclarationKind.Class, 2, {, })
+            listener: endClassOrMixinOrExtensionBody(DeclarationKind.Class, 2, {, })
           listener: endClassDeclaration(class, })
   listener: endTopLevelDeclaration()
   reportAllErrorTokens(Order)
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 a765a2f..a305eb1 100644
--- a/pkg/front_end/parser_testcases/nnbd/issue_44477.dart.expect
+++ b/pkg/front_end/parser_testcases/nnbd/issue_44477.dart.expect
@@ -26,7 +26,7 @@
   beginTopLevelMember(Future)
     handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got ''., Try inserting an identifier before ''., {lexeme: }], , )
     // WARNING: Reporting at eof for .
-    beginFields()
+    beginFields(DeclarationKind.TopLevel, null, null, null, null, null, null, )
       handleIdentifier(Future, typeReference)
       beginTypeArguments(<)
         handleIdentifier(List, typeReference)
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 43fbe7a..adc5a86 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
@@ -14,7 +14,7 @@
           listener: // WARNING: Reporting at eof for .
         rewriter()
       parseFields(, null, null, null, null, null, null, , Instance of 'ComplexTypeInfo', , DeclarationKind.TopLevel, null, false)
-        listener: beginFields()
+        listener: beginFields(DeclarationKind.TopLevel, null, null, null, null, null, null, )
         ensureIdentifier(, typeReference)
           listener: handleIdentifier(Future, typeReference)
         listener: beginTypeArguments(<)
diff --git a/pkg/front_end/parser_testcases/nnbd/late_member.dart.expect b/pkg/front_end/parser_testcases/nnbd/late_member.dart.expect
index 1295e65..1bf1597 100644
--- a/pkg/front_end/parser_testcases/nnbd/late_member.dart.expect
+++ b/pkg/front_end/parser_testcases/nnbd/late_member.dart.expect
@@ -120,7 +120,7 @@
   endTopLevelDeclaration(class)
   beginMetadataStar(class)
   endMetadataStar(0)
-  beginClassOrNamedMixinApplicationPrelude(class)
+  beginClassOrMixinOrNamedMixinApplicationPrelude(class)
     handleIdentifier(X, classOrMixinDeclaration)
     handleNoTypeVariables({)
     beginClassDeclaration(class, null, X)
@@ -129,11 +129,11 @@
       handleClassNoWithClause()
       handleClassOrMixinImplements(null, 0)
       handleClassHeader(class, class, null)
-      beginClassOrMixinBody(DeclarationKind.Class, {)
+      beginClassOrMixinOrExtensionBody(DeclarationKind.Class, {)
         beginMetadataStar(late)
         endMetadataStar(0)
         beginMember()
-          beginMethod(null, null, null, null, null, late)
+          beginMethod(DeclarationKind.Class, null, null, null, null, null, late)
             handleNoType({)
             handleIdentifier(late, methodDeclaration)
             handleNoTypeVariables(()
@@ -153,12 +153,12 @@
             endBlockFunctionBody(1, {, })
           endClassMethod(null, late, (, null, })
         endMember()
-      endClassOrMixinBody(DeclarationKind.Class, 1, {, })
+      endClassOrMixinOrExtensionBody(DeclarationKind.Class, 1, {, })
     endClassDeclaration(class, })
   endTopLevelDeclaration(class)
   beginMetadataStar(class)
   endMetadataStar(0)
-  beginClassOrNamedMixinApplicationPrelude(class)
+  beginClassOrMixinOrNamedMixinApplicationPrelude(class)
     handleIdentifier(Y, classOrMixinDeclaration)
     handleNoTypeVariables({)
     beginClassDeclaration(class, null, Y)
@@ -167,11 +167,11 @@
       handleClassNoWithClause()
       handleClassOrMixinImplements(null, 0)
       handleClassHeader(class, class, null)
-      beginClassOrMixinBody(DeclarationKind.Class, {)
+      beginClassOrMixinOrExtensionBody(DeclarationKind.Class, {)
         beginMetadataStar(int)
         endMetadataStar(0)
         beginMember()
-          beginFields({)
+          beginFields(DeclarationKind.Class, null, null, null, null, null, null, {)
             handleIdentifier(int, typeReference)
             handleNoTypeArguments(late)
             handleType(int, null)
@@ -181,7 +181,7 @@
             endFieldInitializer(=, ;)
           endClassFields(null, null, null, null, null, null, 1, int, ;)
         endMember()
-      endClassOrMixinBody(DeclarationKind.Class, 1, {, })
+      endClassOrMixinOrExtensionBody(DeclarationKind.Class, 1, {, })
     endClassDeclaration(class, })
   endTopLevelDeclaration()
 endCompilationUnit(4, )
diff --git a/pkg/front_end/parser_testcases/nnbd/late_member.dart.intertwined.expect b/pkg/front_end/parser_testcases/nnbd/late_member.dart.intertwined.expect
index e5b3775..23a7bb2 100644
--- a/pkg/front_end/parser_testcases/nnbd/late_member.dart.intertwined.expect
+++ b/pkg/front_end/parser_testcases/nnbd/late_member.dart.intertwined.expect
@@ -328,7 +328,7 @@
     parseTopLevelKeywordDeclaration(}, class, Instance of 'DirectiveContext')
       parseClassDeclarationModifiers(}, class)
       parseClassOrNamedMixinApplication(null, class)
-        listener: beginClassOrNamedMixinApplicationPrelude(class)
+        listener: beginClassOrMixinOrNamedMixinApplicationPrelude(class)
         ensureIdentifier(class, classOrMixinDeclaration)
           listener: handleIdentifier(X, classOrMixinDeclaration)
         listener: handleNoTypeVariables({)
@@ -344,7 +344,7 @@
               listener: handleClassOrMixinImplements(null, 0)
             listener: handleClassHeader(class, class, null)
           parseClassOrMixinOrExtensionBody(X, DeclarationKind.Class, X)
-            listener: beginClassOrMixinBody(DeclarationKind.Class, {)
+            listener: beginClassOrMixinOrExtensionBody(DeclarationKind.Class, {)
             notEofOrValue(}, late)
             parseClassOrMixinOrExtensionMemberImpl({, DeclarationKind.Class, X)
               parseMetadataStar({)
@@ -352,7 +352,7 @@
                 listener: endMetadataStar(0)
               listener: beginMember()
               parseMethod({, null, null, null, null, null, null, {, Instance of 'NoType', null, late, DeclarationKind.Class, X, false)
-                listener: beginMethod(null, null, null, null, null, late)
+                listener: beginMethod(DeclarationKind.Class, null, null, null, null, null, late)
                 listener: handleNoType({)
                 ensureIdentifierPotentiallyRecovered({, methodDeclaration, false)
                   listener: handleIdentifier(late, methodDeclaration)
@@ -410,7 +410,7 @@
                 listener: endClassMethod(null, late, (, null, })
               listener: endMember()
             notEofOrValue(}, })
-            listener: endClassOrMixinBody(DeclarationKind.Class, 1, {, })
+            listener: endClassOrMixinOrExtensionBody(DeclarationKind.Class, 1, {, })
           listener: endClassDeclaration(class, })
   listener: endTopLevelDeclaration(class)
   parseTopLevelDeclarationImpl(}, Instance of 'DirectiveContext')
@@ -420,7 +420,7 @@
     parseTopLevelKeywordDeclaration(}, class, Instance of 'DirectiveContext')
       parseClassDeclarationModifiers(}, class)
       parseClassOrNamedMixinApplication(null, class)
-        listener: beginClassOrNamedMixinApplicationPrelude(class)
+        listener: beginClassOrMixinOrNamedMixinApplicationPrelude(class)
         ensureIdentifier(class, classOrMixinDeclaration)
           listener: handleIdentifier(Y, classOrMixinDeclaration)
         listener: handleNoTypeVariables({)
@@ -436,7 +436,7 @@
               listener: handleClassOrMixinImplements(null, 0)
             listener: handleClassHeader(class, class, null)
           parseClassOrMixinOrExtensionBody(Y, DeclarationKind.Class, Y)
-            listener: beginClassOrMixinBody(DeclarationKind.Class, {)
+            listener: beginClassOrMixinOrExtensionBody(DeclarationKind.Class, {)
             notEofOrValue(}, int)
             parseClassOrMixinOrExtensionMemberImpl({, DeclarationKind.Class, Y)
               parseMetadataStar({)
@@ -444,7 +444,7 @@
                 listener: endMetadataStar(0)
               listener: beginMember()
               parseFields({, null, null, null, null, null, null, {, Instance of 'SimpleType', late, DeclarationKind.Class, Y, false)
-                listener: beginFields({)
+                listener: beginFields(DeclarationKind.Class, null, null, null, null, null, null, {)
                 listener: handleIdentifier(int, typeReference)
                 listener: handleNoTypeArguments(late)
                 listener: handleType(int, null)
@@ -462,7 +462,7 @@
                 listener: endClassFields(null, null, null, null, null, null, 1, int, ;)
               listener: endMember()
             notEofOrValue(}, })
-            listener: endClassOrMixinBody(DeclarationKind.Class, 1, {, })
+            listener: endClassOrMixinOrExtensionBody(DeclarationKind.Class, 1, {, })
           listener: endClassDeclaration(class, })
   listener: endTopLevelDeclaration()
   reportAllErrorTokens(main)
diff --git a/pkg/front_end/parser_testcases/nnbd/late_modifier.dart.expect b/pkg/front_end/parser_testcases/nnbd/late_modifier.dart.expect
index e8b4997..52d88f1 100644
--- a/pkg/front_end/parser_testcases/nnbd/late_modifier.dart.expect
+++ b/pkg/front_end/parser_testcases/nnbd/late_modifier.dart.expect
@@ -138,7 +138,7 @@
   endTopLevelDeclaration(class)
   beginMetadataStar(class)
   endMetadataStar(0)
-  beginClassOrNamedMixinApplicationPrelude(class)
+  beginClassOrMixinOrNamedMixinApplicationPrelude(class)
     handleIdentifier(X, classOrMixinDeclaration)
     handleNoTypeVariables({)
     beginClassDeclaration(class, null, X)
@@ -147,11 +147,11 @@
       handleClassNoWithClause()
       handleClassOrMixinImplements(null, 0)
       handleClassHeader(class, class, null)
-      beginClassOrMixinBody(DeclarationKind.Class, {)
+      beginClassOrMixinOrExtensionBody(DeclarationKind.Class, {)
         beginMetadataStar(late)
         endMetadataStar(0)
         beginMember()
-          beginMethod(null, null, null, null, null, late)
+          beginMethod(DeclarationKind.Class, null, null, null, null, null, late)
             handleNoType({)
             handleIdentifier(late, methodDeclaration)
             handleNoTypeVariables(()
@@ -171,12 +171,12 @@
             endBlockFunctionBody(1, {, })
           endClassMethod(null, late, (, null, })
         endMember()
-      endClassOrMixinBody(DeclarationKind.Class, 1, {, })
+      endClassOrMixinOrExtensionBody(DeclarationKind.Class, 1, {, })
     endClassDeclaration(class, })
   endTopLevelDeclaration(class)
   beginMetadataStar(class)
   endMetadataStar(0)
-  beginClassOrNamedMixinApplicationPrelude(class)
+  beginClassOrMixinOrNamedMixinApplicationPrelude(class)
     handleIdentifier(Y, classOrMixinDeclaration)
     handleNoTypeVariables({)
     beginClassDeclaration(class, null, Y)
@@ -185,11 +185,11 @@
       handleClassNoWithClause()
       handleClassOrMixinImplements(null, 0)
       handleClassHeader(class, class, null)
-      beginClassOrMixinBody(DeclarationKind.Class, {)
+      beginClassOrMixinOrExtensionBody(DeclarationKind.Class, {)
         beginMetadataStar(int)
         endMetadataStar(0)
         beginMember()
-          beginFields({)
+          beginFields(DeclarationKind.Class, null, null, null, null, null, null, {)
             handleIdentifier(int, typeReference)
             handleNoTypeArguments(late)
             handleType(int, null)
@@ -199,7 +199,7 @@
             endFieldInitializer(=, ;)
           endClassFields(null, null, null, null, null, null, 1, int, ;)
         endMember()
-      endClassOrMixinBody(DeclarationKind.Class, 1, {, })
+      endClassOrMixinOrExtensionBody(DeclarationKind.Class, 1, {, })
     endClassDeclaration(class, })
   endTopLevelDeclaration()
 endCompilationUnit(4, )
diff --git a/pkg/front_end/parser_testcases/nnbd/late_modifier.dart.intertwined.expect b/pkg/front_end/parser_testcases/nnbd/late_modifier.dart.intertwined.expect
index ef86be8..cbd34da 100644
--- a/pkg/front_end/parser_testcases/nnbd/late_modifier.dart.intertwined.expect
+++ b/pkg/front_end/parser_testcases/nnbd/late_modifier.dart.intertwined.expect
@@ -377,7 +377,7 @@
     parseTopLevelKeywordDeclaration(}, class, Instance of 'DirectiveContext')
       parseClassDeclarationModifiers(}, class)
       parseClassOrNamedMixinApplication(null, class)
-        listener: beginClassOrNamedMixinApplicationPrelude(class)
+        listener: beginClassOrMixinOrNamedMixinApplicationPrelude(class)
         ensureIdentifier(class, classOrMixinDeclaration)
           listener: handleIdentifier(X, classOrMixinDeclaration)
         listener: handleNoTypeVariables({)
@@ -393,7 +393,7 @@
               listener: handleClassOrMixinImplements(null, 0)
             listener: handleClassHeader(class, class, null)
           parseClassOrMixinOrExtensionBody(X, DeclarationKind.Class, X)
-            listener: beginClassOrMixinBody(DeclarationKind.Class, {)
+            listener: beginClassOrMixinOrExtensionBody(DeclarationKind.Class, {)
             notEofOrValue(}, late)
             parseClassOrMixinOrExtensionMemberImpl({, DeclarationKind.Class, X)
               parseMetadataStar({)
@@ -401,7 +401,7 @@
                 listener: endMetadataStar(0)
               listener: beginMember()
               parseMethod({, null, null, null, null, null, null, {, Instance of 'NoType', null, late, DeclarationKind.Class, X, false)
-                listener: beginMethod(null, null, null, null, null, late)
+                listener: beginMethod(DeclarationKind.Class, null, null, null, null, null, late)
                 listener: handleNoType({)
                 ensureIdentifierPotentiallyRecovered({, methodDeclaration, false)
                   listener: handleIdentifier(late, methodDeclaration)
@@ -459,7 +459,7 @@
                 listener: endClassMethod(null, late, (, null, })
               listener: endMember()
             notEofOrValue(}, })
-            listener: endClassOrMixinBody(DeclarationKind.Class, 1, {, })
+            listener: endClassOrMixinOrExtensionBody(DeclarationKind.Class, 1, {, })
           listener: endClassDeclaration(class, })
   listener: endTopLevelDeclaration(class)
   parseTopLevelDeclarationImpl(}, Instance of 'DirectiveContext')
@@ -469,7 +469,7 @@
     parseTopLevelKeywordDeclaration(}, class, Instance of 'DirectiveContext')
       parseClassDeclarationModifiers(}, class)
       parseClassOrNamedMixinApplication(null, class)
-        listener: beginClassOrNamedMixinApplicationPrelude(class)
+        listener: beginClassOrMixinOrNamedMixinApplicationPrelude(class)
         ensureIdentifier(class, classOrMixinDeclaration)
           listener: handleIdentifier(Y, classOrMixinDeclaration)
         listener: handleNoTypeVariables({)
@@ -485,7 +485,7 @@
               listener: handleClassOrMixinImplements(null, 0)
             listener: handleClassHeader(class, class, null)
           parseClassOrMixinOrExtensionBody(Y, DeclarationKind.Class, Y)
-            listener: beginClassOrMixinBody(DeclarationKind.Class, {)
+            listener: beginClassOrMixinOrExtensionBody(DeclarationKind.Class, {)
             notEofOrValue(}, int)
             parseClassOrMixinOrExtensionMemberImpl({, DeclarationKind.Class, Y)
               parseMetadataStar({)
@@ -493,7 +493,7 @@
                 listener: endMetadataStar(0)
               listener: beginMember()
               parseFields({, null, null, null, null, null, null, {, Instance of 'SimpleType', late, DeclarationKind.Class, Y, false)
-                listener: beginFields({)
+                listener: beginFields(DeclarationKind.Class, null, null, null, null, null, null, {)
                 listener: handleIdentifier(int, typeReference)
                 listener: handleNoTypeArguments(late)
                 listener: handleType(int, null)
@@ -511,7 +511,7 @@
                 listener: endClassFields(null, null, null, null, null, null, 1, int, ;)
               listener: endMember()
             notEofOrValue(}, })
-            listener: endClassOrMixinBody(DeclarationKind.Class, 1, {, })
+            listener: endClassOrMixinOrExtensionBody(DeclarationKind.Class, 1, {, })
           listener: endClassDeclaration(class, })
   listener: endTopLevelDeclaration()
   reportAllErrorTokens(main)
diff --git a/pkg/front_end/parser_testcases/nnbd/null_shorting_index.dart.expect b/pkg/front_end/parser_testcases/nnbd/null_shorting_index.dart.expect
index dda2592..4854f02 100644
--- a/pkg/front_end/parser_testcases/nnbd/null_shorting_index.dart.expect
+++ b/pkg/front_end/parser_testcases/nnbd/null_shorting_index.dart.expect
@@ -1,7 +1,7 @@
 beginCompilationUnit(class)
   beginMetadataStar(class)
   endMetadataStar(0)
-  beginClassOrNamedMixinApplicationPrelude(class)
+  beginClassOrMixinOrNamedMixinApplicationPrelude(class)
     handleIdentifier(Class1, classOrMixinDeclaration)
     handleNoTypeVariables({)
     beginClassDeclaration(class, null, Class1)
@@ -10,11 +10,11 @@
       handleClassNoWithClause()
       handleClassOrMixinImplements(null, 0)
       handleClassHeader(class, class, null)
-      beginClassOrMixinBody(DeclarationKind.Class, {)
+      beginClassOrMixinOrExtensionBody(DeclarationKind.Class, {)
         beginMetadataStar(int)
         endMetadataStar(0)
         beginMember()
-          beginMethod(null, null, null, null, null, operator)
+          beginMethod(DeclarationKind.Class, null, null, null, null, null, operator)
             handleIdentifier(int, typeReference)
             handleNoTypeArguments(operator)
             handleType(int, null)
@@ -43,7 +43,7 @@
         beginMetadataStar(void)
         endMetadataStar(0)
         beginMember()
-          beginMethod(null, null, null, null, null, operator)
+          beginMethod(DeclarationKind.Class, null, null, null, null, null, operator)
             handleVoidKeyword(void)
             handleOperatorName(operator, []=)
             handleNoTypeVariables(()
@@ -73,7 +73,7 @@
             endBlockFunctionBody(0, {, })
           endClassMethod(null, void, (, null, })
         endMember()
-      endClassOrMixinBody(DeclarationKind.Class, 2, {, })
+      endClassOrMixinOrExtensionBody(DeclarationKind.Class, 2, {, })
     endClassDeclaration(class, })
   endTopLevelDeclaration(main)
   beginMetadataStar(main)
diff --git a/pkg/front_end/parser_testcases/nnbd/null_shorting_index.dart.intertwined.expect b/pkg/front_end/parser_testcases/nnbd/null_shorting_index.dart.intertwined.expect
index 54a5797..bd48abf 100644
--- a/pkg/front_end/parser_testcases/nnbd/null_shorting_index.dart.intertwined.expect
+++ b/pkg/front_end/parser_testcases/nnbd/null_shorting_index.dart.intertwined.expect
@@ -9,7 +9,7 @@
     parseTopLevelKeywordDeclaration(, class, Instance of 'DirectiveContext')
       parseClassDeclarationModifiers(, class)
       parseClassOrNamedMixinApplication(null, class)
-        listener: beginClassOrNamedMixinApplicationPrelude(class)
+        listener: beginClassOrMixinOrNamedMixinApplicationPrelude(class)
         ensureIdentifier(class, classOrMixinDeclaration)
           listener: handleIdentifier(Class1, classOrMixinDeclaration)
         listener: handleNoTypeVariables({)
@@ -25,7 +25,7 @@
               listener: handleClassOrMixinImplements(null, 0)
             listener: handleClassHeader(class, class, null)
           parseClassOrMixinOrExtensionBody(Class1, DeclarationKind.Class, Class1)
-            listener: beginClassOrMixinBody(DeclarationKind.Class, {)
+            listener: beginClassOrMixinOrExtensionBody(DeclarationKind.Class, {)
             notEofOrValue(}, int)
             parseClassOrMixinOrExtensionMemberImpl({, DeclarationKind.Class, Class1)
               parseMetadataStar({)
@@ -33,7 +33,7 @@
                 listener: endMetadataStar(0)
               listener: beginMember()
               parseMethod({, null, null, null, null, null, null, {, Instance of 'SimpleType', null, operator, DeclarationKind.Class, Class1, false)
-                listener: beginMethod(null, null, null, null, null, operator)
+                listener: beginMethod(DeclarationKind.Class, null, null, null, null, null, operator)
                 listener: handleIdentifier(int, typeReference)
                 listener: handleNoTypeArguments(operator)
                 listener: handleType(int, null)
@@ -91,7 +91,7 @@
                 listener: endMetadataStar(0)
               listener: beginMember()
               parseMethod(;, null, null, null, null, null, null, ;, Instance of 'VoidType', null, operator, DeclarationKind.Class, Class1, false)
-                listener: beginMethod(null, null, null, null, null, operator)
+                listener: beginMethod(DeclarationKind.Class, null, null, null, null, null, operator)
                 listener: handleVoidKeyword(void)
                 parseOperatorName(void)
                   listener: handleOperatorName(operator, []=)
@@ -139,7 +139,7 @@
                 listener: endClassMethod(null, void, (, null, })
               listener: endMember()
             notEofOrValue(}, })
-            listener: endClassOrMixinBody(DeclarationKind.Class, 2, {, })
+            listener: endClassOrMixinOrExtensionBody(DeclarationKind.Class, 2, {, })
           listener: endClassDeclaration(class, })
   listener: endTopLevelDeclaration(main)
   parseTopLevelDeclarationImpl(}, Instance of 'DirectiveContext')
diff --git a/pkg/front_end/parser_testcases/nnbd/required_member.dart.expect b/pkg/front_end/parser_testcases/nnbd/required_member.dart.expect
index 4e2dc09..f4825f1 100644
--- a/pkg/front_end/parser_testcases/nnbd/required_member.dart.expect
+++ b/pkg/front_end/parser_testcases/nnbd/required_member.dart.expect
@@ -120,7 +120,7 @@
   endTopLevelDeclaration(class)
   beginMetadataStar(class)
   endMetadataStar(0)
-  beginClassOrNamedMixinApplicationPrelude(class)
+  beginClassOrMixinOrNamedMixinApplicationPrelude(class)
     handleIdentifier(X, classOrMixinDeclaration)
     handleNoTypeVariables({)
     beginClassDeclaration(class, null, X)
@@ -129,11 +129,11 @@
       handleClassNoWithClause()
       handleClassOrMixinImplements(null, 0)
       handleClassHeader(class, class, null)
-      beginClassOrMixinBody(DeclarationKind.Class, {)
+      beginClassOrMixinOrExtensionBody(DeclarationKind.Class, {)
         beginMetadataStar(required)
         endMetadataStar(0)
         beginMember()
-          beginMethod(null, null, null, null, null, required)
+          beginMethod(DeclarationKind.Class, null, null, null, null, null, required)
             handleNoType({)
             handleIdentifier(required, methodDeclaration)
             handleNoTypeVariables(()
@@ -153,12 +153,12 @@
             endBlockFunctionBody(1, {, })
           endClassMethod(null, required, (, null, })
         endMember()
-      endClassOrMixinBody(DeclarationKind.Class, 1, {, })
+      endClassOrMixinOrExtensionBody(DeclarationKind.Class, 1, {, })
     endClassDeclaration(class, })
   endTopLevelDeclaration(class)
   beginMetadataStar(class)
   endMetadataStar(0)
-  beginClassOrNamedMixinApplicationPrelude(class)
+  beginClassOrMixinOrNamedMixinApplicationPrelude(class)
     handleIdentifier(Y, classOrMixinDeclaration)
     handleNoTypeVariables({)
     beginClassDeclaration(class, null, Y)
@@ -167,11 +167,11 @@
       handleClassNoWithClause()
       handleClassOrMixinImplements(null, 0)
       handleClassHeader(class, class, null)
-      beginClassOrMixinBody(DeclarationKind.Class, {)
+      beginClassOrMixinOrExtensionBody(DeclarationKind.Class, {)
         beginMetadataStar(int)
         endMetadataStar(0)
         beginMember()
-          beginFields({)
+          beginFields(DeclarationKind.Class, null, null, null, null, null, null, {)
             handleIdentifier(int, typeReference)
             handleNoTypeArguments(required)
             handleType(int, null)
@@ -181,7 +181,7 @@
             endFieldInitializer(=, ;)
           endClassFields(null, null, null, null, null, null, 1, int, ;)
         endMember()
-      endClassOrMixinBody(DeclarationKind.Class, 1, {, })
+      endClassOrMixinOrExtensionBody(DeclarationKind.Class, 1, {, })
     endClassDeclaration(class, })
   endTopLevelDeclaration()
 endCompilationUnit(4, )
diff --git a/pkg/front_end/parser_testcases/nnbd/required_member.dart.intertwined.expect b/pkg/front_end/parser_testcases/nnbd/required_member.dart.intertwined.expect
index b40afe0..ef231a3 100644
--- a/pkg/front_end/parser_testcases/nnbd/required_member.dart.intertwined.expect
+++ b/pkg/front_end/parser_testcases/nnbd/required_member.dart.intertwined.expect
@@ -328,7 +328,7 @@
     parseTopLevelKeywordDeclaration(}, class, Instance of 'DirectiveContext')
       parseClassDeclarationModifiers(}, class)
       parseClassOrNamedMixinApplication(null, class)
-        listener: beginClassOrNamedMixinApplicationPrelude(class)
+        listener: beginClassOrMixinOrNamedMixinApplicationPrelude(class)
         ensureIdentifier(class, classOrMixinDeclaration)
           listener: handleIdentifier(X, classOrMixinDeclaration)
         listener: handleNoTypeVariables({)
@@ -344,7 +344,7 @@
               listener: handleClassOrMixinImplements(null, 0)
             listener: handleClassHeader(class, class, null)
           parseClassOrMixinOrExtensionBody(X, DeclarationKind.Class, X)
-            listener: beginClassOrMixinBody(DeclarationKind.Class, {)
+            listener: beginClassOrMixinOrExtensionBody(DeclarationKind.Class, {)
             notEofOrValue(}, required)
             parseClassOrMixinOrExtensionMemberImpl({, DeclarationKind.Class, X)
               parseMetadataStar({)
@@ -352,7 +352,7 @@
                 listener: endMetadataStar(0)
               listener: beginMember()
               parseMethod({, null, null, null, null, null, null, {, Instance of 'NoType', null, required, DeclarationKind.Class, X, false)
-                listener: beginMethod(null, null, null, null, null, required)
+                listener: beginMethod(DeclarationKind.Class, null, null, null, null, null, required)
                 listener: handleNoType({)
                 ensureIdentifierPotentiallyRecovered({, methodDeclaration, false)
                   listener: handleIdentifier(required, methodDeclaration)
@@ -410,7 +410,7 @@
                 listener: endClassMethod(null, required, (, null, })
               listener: endMember()
             notEofOrValue(}, })
-            listener: endClassOrMixinBody(DeclarationKind.Class, 1, {, })
+            listener: endClassOrMixinOrExtensionBody(DeclarationKind.Class, 1, {, })
           listener: endClassDeclaration(class, })
   listener: endTopLevelDeclaration(class)
   parseTopLevelDeclarationImpl(}, Instance of 'DirectiveContext')
@@ -420,7 +420,7 @@
     parseTopLevelKeywordDeclaration(}, class, Instance of 'DirectiveContext')
       parseClassDeclarationModifiers(}, class)
       parseClassOrNamedMixinApplication(null, class)
-        listener: beginClassOrNamedMixinApplicationPrelude(class)
+        listener: beginClassOrMixinOrNamedMixinApplicationPrelude(class)
         ensureIdentifier(class, classOrMixinDeclaration)
           listener: handleIdentifier(Y, classOrMixinDeclaration)
         listener: handleNoTypeVariables({)
@@ -436,7 +436,7 @@
               listener: handleClassOrMixinImplements(null, 0)
             listener: handleClassHeader(class, class, null)
           parseClassOrMixinOrExtensionBody(Y, DeclarationKind.Class, Y)
-            listener: beginClassOrMixinBody(DeclarationKind.Class, {)
+            listener: beginClassOrMixinOrExtensionBody(DeclarationKind.Class, {)
             notEofOrValue(}, int)
             parseClassOrMixinOrExtensionMemberImpl({, DeclarationKind.Class, Y)
               parseMetadataStar({)
@@ -444,7 +444,7 @@
                 listener: endMetadataStar(0)
               listener: beginMember()
               parseFields({, null, null, null, null, null, null, {, Instance of 'SimpleType', required, DeclarationKind.Class, Y, false)
-                listener: beginFields({)
+                listener: beginFields(DeclarationKind.Class, null, null, null, null, null, null, {)
                 listener: handleIdentifier(int, typeReference)
                 listener: handleNoTypeArguments(required)
                 listener: handleType(int, null)
@@ -462,7 +462,7 @@
                 listener: endClassFields(null, null, null, null, null, null, 1, int, ;)
               listener: endMember()
             notEofOrValue(}, })
-            listener: endClassOrMixinBody(DeclarationKind.Class, 1, {, })
+            listener: endClassOrMixinOrExtensionBody(DeclarationKind.Class, 1, {, })
           listener: endClassDeclaration(class, })
   listener: endTopLevelDeclaration()
   reportAllErrorTokens(main)
diff --git a/pkg/front_end/parser_testcases/nnbd/required_modifier.dart.expect b/pkg/front_end/parser_testcases/nnbd/required_modifier.dart.expect
index 407ba51..8d19c73 100644
--- a/pkg/front_end/parser_testcases/nnbd/required_modifier.dart.expect
+++ b/pkg/front_end/parser_testcases/nnbd/required_modifier.dart.expect
@@ -131,7 +131,7 @@
   endTopLevelDeclaration(class)
   beginMetadataStar(class)
   endMetadataStar(0)
-  beginClassOrNamedMixinApplicationPrelude(class)
+  beginClassOrMixinOrNamedMixinApplicationPrelude(class)
     handleIdentifier(X, classOrMixinDeclaration)
     handleNoTypeVariables({)
     beginClassDeclaration(class, null, X)
@@ -140,11 +140,11 @@
       handleClassNoWithClause()
       handleClassOrMixinImplements(null, 0)
       handleClassHeader(class, class, null)
-      beginClassOrMixinBody(DeclarationKind.Class, {)
+      beginClassOrMixinOrExtensionBody(DeclarationKind.Class, {)
         beginMetadataStar(required)
         endMetadataStar(0)
         beginMember()
-          beginMethod(null, null, null, null, null, required)
+          beginMethod(DeclarationKind.Class, null, null, null, null, null, required)
             handleNoType({)
             handleIdentifier(required, methodDeclaration)
             handleNoTypeVariables(()
@@ -164,12 +164,12 @@
             endBlockFunctionBody(1, {, })
           endClassMethod(null, required, (, null, })
         endMember()
-      endClassOrMixinBody(DeclarationKind.Class, 1, {, })
+      endClassOrMixinOrExtensionBody(DeclarationKind.Class, 1, {, })
     endClassDeclaration(class, })
   endTopLevelDeclaration(class)
   beginMetadataStar(class)
   endMetadataStar(0)
-  beginClassOrNamedMixinApplicationPrelude(class)
+  beginClassOrMixinOrNamedMixinApplicationPrelude(class)
     handleIdentifier(Y, classOrMixinDeclaration)
     handleNoTypeVariables({)
     beginClassDeclaration(class, null, Y)
@@ -178,11 +178,11 @@
       handleClassNoWithClause()
       handleClassOrMixinImplements(null, 0)
       handleClassHeader(class, class, null)
-      beginClassOrMixinBody(DeclarationKind.Class, {)
+      beginClassOrMixinOrExtensionBody(DeclarationKind.Class, {)
         beginMetadataStar(int)
         endMetadataStar(0)
         beginMember()
-          beginFields({)
+          beginFields(DeclarationKind.Class, null, null, null, null, null, null, {)
             handleIdentifier(int, typeReference)
             handleNoTypeArguments(required)
             handleType(int, null)
@@ -192,7 +192,7 @@
             endFieldInitializer(=, ;)
           endClassFields(null, null, null, null, null, null, 1, int, ;)
         endMember()
-      endClassOrMixinBody(DeclarationKind.Class, 1, {, })
+      endClassOrMixinOrExtensionBody(DeclarationKind.Class, 1, {, })
     endClassDeclaration(class, })
   endTopLevelDeclaration()
 endCompilationUnit(4, )
diff --git a/pkg/front_end/parser_testcases/nnbd/required_modifier.dart.intertwined.expect b/pkg/front_end/parser_testcases/nnbd/required_modifier.dart.intertwined.expect
index 5bab2cc..42f35f4 100644
--- a/pkg/front_end/parser_testcases/nnbd/required_modifier.dart.intertwined.expect
+++ b/pkg/front_end/parser_testcases/nnbd/required_modifier.dart.intertwined.expect
@@ -344,7 +344,7 @@
     parseTopLevelKeywordDeclaration(}, class, Instance of 'DirectiveContext')
       parseClassDeclarationModifiers(}, class)
       parseClassOrNamedMixinApplication(null, class)
-        listener: beginClassOrNamedMixinApplicationPrelude(class)
+        listener: beginClassOrMixinOrNamedMixinApplicationPrelude(class)
         ensureIdentifier(class, classOrMixinDeclaration)
           listener: handleIdentifier(X, classOrMixinDeclaration)
         listener: handleNoTypeVariables({)
@@ -360,7 +360,7 @@
               listener: handleClassOrMixinImplements(null, 0)
             listener: handleClassHeader(class, class, null)
           parseClassOrMixinOrExtensionBody(X, DeclarationKind.Class, X)
-            listener: beginClassOrMixinBody(DeclarationKind.Class, {)
+            listener: beginClassOrMixinOrExtensionBody(DeclarationKind.Class, {)
             notEofOrValue(}, required)
             parseClassOrMixinOrExtensionMemberImpl({, DeclarationKind.Class, X)
               parseMetadataStar({)
@@ -368,7 +368,7 @@
                 listener: endMetadataStar(0)
               listener: beginMember()
               parseMethod({, null, null, null, null, null, null, {, Instance of 'NoType', null, required, DeclarationKind.Class, X, false)
-                listener: beginMethod(null, null, null, null, null, required)
+                listener: beginMethod(DeclarationKind.Class, null, null, null, null, null, required)
                 listener: handleNoType({)
                 ensureIdentifierPotentiallyRecovered({, methodDeclaration, false)
                   listener: handleIdentifier(required, methodDeclaration)
@@ -426,7 +426,7 @@
                 listener: endClassMethod(null, required, (, null, })
               listener: endMember()
             notEofOrValue(}, })
-            listener: endClassOrMixinBody(DeclarationKind.Class, 1, {, })
+            listener: endClassOrMixinOrExtensionBody(DeclarationKind.Class, 1, {, })
           listener: endClassDeclaration(class, })
   listener: endTopLevelDeclaration(class)
   parseTopLevelDeclarationImpl(}, Instance of 'DirectiveContext')
@@ -436,7 +436,7 @@
     parseTopLevelKeywordDeclaration(}, class, Instance of 'DirectiveContext')
       parseClassDeclarationModifiers(}, class)
       parseClassOrNamedMixinApplication(null, class)
-        listener: beginClassOrNamedMixinApplicationPrelude(class)
+        listener: beginClassOrMixinOrNamedMixinApplicationPrelude(class)
         ensureIdentifier(class, classOrMixinDeclaration)
           listener: handleIdentifier(Y, classOrMixinDeclaration)
         listener: handleNoTypeVariables({)
@@ -452,7 +452,7 @@
               listener: handleClassOrMixinImplements(null, 0)
             listener: handleClassHeader(class, class, null)
           parseClassOrMixinOrExtensionBody(Y, DeclarationKind.Class, Y)
-            listener: beginClassOrMixinBody(DeclarationKind.Class, {)
+            listener: beginClassOrMixinOrExtensionBody(DeclarationKind.Class, {)
             notEofOrValue(}, int)
             parseClassOrMixinOrExtensionMemberImpl({, DeclarationKind.Class, Y)
               parseMetadataStar({)
@@ -460,7 +460,7 @@
                 listener: endMetadataStar(0)
               listener: beginMember()
               parseFields({, null, null, null, null, null, null, {, Instance of 'SimpleType', required, DeclarationKind.Class, Y, false)
-                listener: beginFields({)
+                listener: beginFields(DeclarationKind.Class, null, null, null, null, null, null, {)
                 listener: handleIdentifier(int, typeReference)
                 listener: handleNoTypeArguments(required)
                 listener: handleType(int, null)
@@ -478,7 +478,7 @@
                 listener: endClassFields(null, null, null, null, null, null, 1, int, ;)
               listener: endMember()
             notEofOrValue(}, })
-            listener: endClassOrMixinBody(DeclarationKind.Class, 1, {, })
+            listener: endClassOrMixinOrExtensionBody(DeclarationKind.Class, 1, {, })
           listener: endClassDeclaration(class, })
   listener: endTopLevelDeclaration()
   reportAllErrorTokens(main)
diff --git a/pkg/front_end/parser_testcases/no-triple-shift/define_triple_shift_method.dart.expect b/pkg/front_end/parser_testcases/no-triple-shift/define_triple_shift_method.dart.expect
index cc92f37..8bdfa8b 100644
--- a/pkg/front_end/parser_testcases/no-triple-shift/define_triple_shift_method.dart.expect
+++ b/pkg/front_end/parser_testcases/no-triple-shift/define_triple_shift_method.dart.expect
@@ -23,7 +23,7 @@
 beginCompilationUnit(class)
   beginMetadataStar(class)
   endMetadataStar(0)
-  beginClassOrNamedMixinApplicationPrelude(class)
+  beginClassOrMixinOrNamedMixinApplicationPrelude(class)
     handleIdentifier(Foo, classOrMixinDeclaration)
     handleNoTypeVariables({)
     beginClassDeclaration(class, null, Foo)
@@ -32,12 +32,12 @@
       handleClassNoWithClause()
       handleClassOrMixinImplements(null, 0)
       handleClassHeader(class, class, null)
-      beginClassOrMixinBody(DeclarationKind.Class, {)
+      beginClassOrMixinOrExtensionBody(DeclarationKind.Class, {)
         beginMetadataStar(Foo)
         endMetadataStar(0)
         beginMember()
           handleRecoverableError(Message[ExperimentNotEnabled, This requires the 'triple-shift' language feature to be enabled., Try updating your pubspec.yaml to set the minimum SDK constraint to 2.14 or higher, and running 'pub get'., {string: triple-shift, string2: 2.14}], >>, >)
-          beginMethod(null, null, null, null, null, operator)
+          beginMethod(DeclarationKind.Class, null, null, null, null, null, operator)
             handleIdentifier(Foo, typeReference)
             handleNoTypeArguments(operator)
             handleType(Foo, null)
@@ -58,7 +58,7 @@
             handleExpressionFunctionBody(=>, ;)
           endClassMethod(null, Foo, (, null, ;)
         endMember()
-      endClassOrMixinBody(DeclarationKind.Class, 1, {, })
+      endClassOrMixinOrExtensionBody(DeclarationKind.Class, 1, {, })
     endClassDeclaration(class, })
   endTopLevelDeclaration(main)
   beginMetadataStar(main)
diff --git a/pkg/front_end/parser_testcases/no-triple-shift/define_triple_shift_method.dart.intertwined.expect b/pkg/front_end/parser_testcases/no-triple-shift/define_triple_shift_method.dart.intertwined.expect
index c29f941..af61377 100644
--- a/pkg/front_end/parser_testcases/no-triple-shift/define_triple_shift_method.dart.intertwined.expect
+++ b/pkg/front_end/parser_testcases/no-triple-shift/define_triple_shift_method.dart.intertwined.expect
@@ -9,7 +9,7 @@
     parseTopLevelKeywordDeclaration(, class, Instance of 'DirectiveContext')
       parseClassDeclarationModifiers(, class)
       parseClassOrNamedMixinApplication(null, class)
-        listener: beginClassOrNamedMixinApplicationPrelude(class)
+        listener: beginClassOrMixinOrNamedMixinApplicationPrelude(class)
         ensureIdentifier(class, classOrMixinDeclaration)
           listener: handleIdentifier(Foo, classOrMixinDeclaration)
         listener: handleNoTypeVariables({)
@@ -25,7 +25,7 @@
               listener: handleClassOrMixinImplements(null, 0)
             listener: handleClassHeader(class, class, null)
           parseClassOrMixinOrExtensionBody(Foo, DeclarationKind.Class, Foo)
-            listener: beginClassOrMixinBody(DeclarationKind.Class, {)
+            listener: beginClassOrMixinOrExtensionBody(DeclarationKind.Class, {)
             notEofOrValue(}, Foo)
             parseClassOrMixinOrExtensionMemberImpl({, DeclarationKind.Class, Foo)
               parseMetadataStar({)
@@ -36,7 +36,7 @@
                 reportRecoverableErrorWithEnd(>>, >, Message[ExperimentNotEnabled, This requires the 'triple-shift' language feature to be enabled., Try updating your pubspec.yaml to set the minimum SDK constraint to 2.14 or higher, and running 'pub get'., {string: triple-shift, string2: 2.14}])
                   listener: handleRecoverableError(Message[ExperimentNotEnabled, This requires the 'triple-shift' language feature to be enabled., Try updating your pubspec.yaml to set the minimum SDK constraint to 2.14 or higher, and running 'pub get'., {string: triple-shift, string2: 2.14}], >>, >)
                 rewriter()
-                listener: beginMethod(null, null, null, null, null, operator)
+                listener: beginMethod(DeclarationKind.Class, null, null, null, null, null, operator)
                 listener: handleIdentifier(Foo, typeReference)
                 listener: handleNoTypeArguments(operator)
                 listener: handleType(Foo, null)
@@ -79,7 +79,7 @@
                 listener: endClassMethod(null, Foo, (, null, ;)
               listener: endMember()
             notEofOrValue(}, })
-            listener: endClassOrMixinBody(DeclarationKind.Class, 1, {, })
+            listener: endClassOrMixinOrExtensionBody(DeclarationKind.Class, 1, {, })
           listener: endClassDeclaration(class, })
   listener: endTopLevelDeclaration(main)
   parseTopLevelDeclarationImpl(}, Instance of 'DirectiveContext')
diff --git a/pkg/front_end/parser_testcases/no-triple-shift/define_triple_shift_method_prime.dart.expect b/pkg/front_end/parser_testcases/no-triple-shift/define_triple_shift_method_prime.dart.expect
index cd35af3..3e1635e 100644
--- a/pkg/front_end/parser_testcases/no-triple-shift/define_triple_shift_method_prime.dart.expect
+++ b/pkg/front_end/parser_testcases/no-triple-shift/define_triple_shift_method_prime.dart.expect
@@ -1,7 +1,7 @@
 beginCompilationUnit(class)
   beginMetadataStar(class)
   endMetadataStar(0)
-  beginClassOrNamedMixinApplicationPrelude(class)
+  beginClassOrMixinOrNamedMixinApplicationPrelude(class)
     handleIdentifier(Foo, classOrMixinDeclaration)
     handleNoTypeVariables({)
     beginClassDeclaration(class, null, Foo)
@@ -10,11 +10,11 @@
       handleClassNoWithClause()
       handleClassOrMixinImplements(null, 0)
       handleClassHeader(class, class, null)
-      beginClassOrMixinBody(DeclarationKind.Class, {)
+      beginClassOrMixinOrExtensionBody(DeclarationKind.Class, {)
         beginMetadataStar(Foo)
         endMetadataStar(0)
         beginMember()
-          beginMethod(null, null, null, null, null, operator)
+          beginMethod(DeclarationKind.Class, null, null, null, null, null, operator)
             handleIdentifier(Foo, typeReference)
             handleNoTypeArguments(operator)
             handleType(Foo, null)
@@ -35,7 +35,7 @@
             handleExpressionFunctionBody(=>, ;)
           endClassMethod(null, Foo, (, null, ;)
         endMember()
-      endClassOrMixinBody(DeclarationKind.Class, 1, {, })
+      endClassOrMixinOrExtensionBody(DeclarationKind.Class, 1, {, })
     endClassDeclaration(class, })
   endTopLevelDeclaration(main)
   beginMetadataStar(main)
diff --git a/pkg/front_end/parser_testcases/no-triple-shift/define_triple_shift_method_prime.dart.intertwined.expect b/pkg/front_end/parser_testcases/no-triple-shift/define_triple_shift_method_prime.dart.intertwined.expect
index 675e626..e429730 100644
--- a/pkg/front_end/parser_testcases/no-triple-shift/define_triple_shift_method_prime.dart.intertwined.expect
+++ b/pkg/front_end/parser_testcases/no-triple-shift/define_triple_shift_method_prime.dart.intertwined.expect
@@ -9,7 +9,7 @@
     parseTopLevelKeywordDeclaration(, class, Instance of 'DirectiveContext')
       parseClassDeclarationModifiers(, class)
       parseClassOrNamedMixinApplication(null, class)
-        listener: beginClassOrNamedMixinApplicationPrelude(class)
+        listener: beginClassOrMixinOrNamedMixinApplicationPrelude(class)
         ensureIdentifier(class, classOrMixinDeclaration)
           listener: handleIdentifier(Foo, classOrMixinDeclaration)
         listener: handleNoTypeVariables({)
@@ -25,7 +25,7 @@
               listener: handleClassOrMixinImplements(null, 0)
             listener: handleClassHeader(class, class, null)
           parseClassOrMixinOrExtensionBody(Foo, DeclarationKind.Class, Foo)
-            listener: beginClassOrMixinBody(DeclarationKind.Class, {)
+            listener: beginClassOrMixinOrExtensionBody(DeclarationKind.Class, {)
             notEofOrValue(}, Foo)
             parseClassOrMixinOrExtensionMemberImpl({, DeclarationKind.Class, Foo)
               parseMetadataStar({)
@@ -33,7 +33,7 @@
                 listener: endMetadataStar(0)
               listener: beginMember()
               parseMethod({, null, null, null, null, null, null, {, Instance of 'SimpleType', null, operator, DeclarationKind.Class, Foo, false)
-                listener: beginMethod(null, null, null, null, null, operator)
+                listener: beginMethod(DeclarationKind.Class, null, null, null, null, null, operator)
                 listener: handleIdentifier(Foo, typeReference)
                 listener: handleNoTypeArguments(operator)
                 listener: handleType(Foo, null)
@@ -76,7 +76,7 @@
                 listener: endClassMethod(null, Foo, (, null, ;)
               listener: endMember()
             notEofOrValue(}, })
-            listener: endClassOrMixinBody(DeclarationKind.Class, 1, {, })
+            listener: endClassOrMixinOrExtensionBody(DeclarationKind.Class, 1, {, })
           listener: endClassDeclaration(class, })
   listener: endTopLevelDeclaration(main)
   parseTopLevelDeclarationImpl(}, Instance of 'DirectiveContext')
diff --git a/pkg/front_end/parser_testcases/no-triple-shift/triple_shift_not_triple_shift.dart.expect b/pkg/front_end/parser_testcases/no-triple-shift/triple_shift_not_triple_shift.dart.expect
index 3a34750..67bd589 100644
--- a/pkg/front_end/parser_testcases/no-triple-shift/triple_shift_not_triple_shift.dart.expect
+++ b/pkg/front_end/parser_testcases/no-triple-shift/triple_shift_not_triple_shift.dart.expect
@@ -8,11 +8,11 @@
       handleNoTypeArguments({)
       handleType(Symbol, null)
       handleExtensionShowHide(null, 0, null, 0)
-      beginClassOrMixinBody(DeclarationKind.Extension, {)
+      beginClassOrMixinOrExtensionBody(DeclarationKind.Extension, {)
         beginMetadataStar(String)
         endMetadataStar(0)
         beginMember()
-          beginMethod(null, null, null, null, null, operator)
+          beginMethod(DeclarationKind.Extension, null, null, null, null, null, operator)
             handleIdentifier(String, typeReference)
             handleNoTypeArguments(operator)
             handleType(String, null)
@@ -37,7 +37,7 @@
         beginMetadataStar(String)
         endMetadataStar(0)
         beginMember()
-          beginMethod(null, null, null, null, null, call)
+          beginMethod(DeclarationKind.Extension, null, null, null, null, null, call)
             handleIdentifier(String, typeReference)
             handleNoTypeArguments(call)
             handleType(String, null)
@@ -59,7 +59,7 @@
             handleExpressionFunctionBody(=>, ;)
           endExtensionMethod(null, String, (, null, ;)
         endMember()
-      endClassOrMixinBody(DeclarationKind.Extension, 2, {, })
+      endClassOrMixinOrExtensionBody(DeclarationKind.Extension, 2, {, })
     endExtensionDeclaration(extension, null, on, null, null, })
   endTopLevelDeclaration(void)
   beginMetadataStar(void)
@@ -91,7 +91,7 @@
   endTopLevelDeclaration(abstract)
   beginMetadataStar(abstract)
   endMetadataStar(0)
-  beginClassOrNamedMixinApplicationPrelude(abstract)
+  beginClassOrMixinOrNamedMixinApplicationPrelude(abstract)
     handleIdentifier(Foo, classOrMixinDeclaration)
     handleNoTypeVariables(extends)
     beginClassDeclaration(abstract, abstract, Foo)
@@ -114,8 +114,8 @@
       handleClassNoWithClause()
       handleClassOrMixinImplements(null, 0)
       handleClassHeader(abstract, class, null)
-      beginClassOrMixinBody(DeclarationKind.Class, {)
-      endClassOrMixinBody(DeclarationKind.Class, 0, {, })
+      beginClassOrMixinOrExtensionBody(DeclarationKind.Class, {)
+      endClassOrMixinOrExtensionBody(DeclarationKind.Class, 0, {, })
     endClassDeclaration(abstract, })
   endTopLevelDeclaration()
 endCompilationUnit(3, )
diff --git a/pkg/front_end/parser_testcases/no-triple-shift/triple_shift_not_triple_shift.dart.intertwined.expect b/pkg/front_end/parser_testcases/no-triple-shift/triple_shift_not_triple_shift.dart.intertwined.expect
index 3e7a724..81d4778 100644
--- a/pkg/front_end/parser_testcases/no-triple-shift/triple_shift_not_triple_shift.dart.intertwined.expect
+++ b/pkg/front_end/parser_testcases/no-triple-shift/triple_shift_not_triple_shift.dart.intertwined.expect
@@ -17,7 +17,7 @@
         listener: handleType(Symbol, null)
         listener: handleExtensionShowHide(null, 0, null, 0)
         parseClassOrMixinOrExtensionBody(Symbol, DeclarationKind.Extension, null)
-          listener: beginClassOrMixinBody(DeclarationKind.Extension, {)
+          listener: beginClassOrMixinOrExtensionBody(DeclarationKind.Extension, {)
           notEofOrValue(}, String)
           parseClassOrMixinOrExtensionMemberImpl({, DeclarationKind.Extension, null)
             parseMetadataStar({)
@@ -25,7 +25,7 @@
               listener: endMetadataStar(0)
             listener: beginMember()
             parseMethod({, null, null, null, null, null, null, {, Instance of 'SimpleType', null, operator, DeclarationKind.Extension, null, false)
-              listener: beginMethod(null, null, null, null, null, operator)
+              listener: beginMethod(DeclarationKind.Extension, null, null, null, null, null, operator)
               listener: handleIdentifier(String, typeReference)
               listener: handleNoTypeArguments(operator)
               listener: handleType(String, null)
@@ -76,7 +76,7 @@
               listener: endMetadataStar(0)
             listener: beginMember()
             parseMethod(;, null, null, null, null, null, null, ;, Instance of 'SimpleType', null, call, DeclarationKind.Extension, null, false)
-              listener: beginMethod(null, null, null, null, null, call)
+              listener: beginMethod(DeclarationKind.Extension, null, null, null, null, null, call)
               listener: handleIdentifier(String, typeReference)
               listener: handleNoTypeArguments(call)
               listener: handleType(String, null)
@@ -122,7 +122,7 @@
               listener: endExtensionMethod(null, String, (, null, ;)
             listener: endMember()
           notEofOrValue(}, })
-          listener: endClassOrMixinBody(DeclarationKind.Extension, 2, {, })
+          listener: endClassOrMixinOrExtensionBody(DeclarationKind.Extension, 2, {, })
         listener: endExtensionDeclaration(extension, null, on, null, null, })
   listener: endTopLevelDeclaration(void)
   parseTopLevelDeclarationImpl(}, Instance of 'DirectiveContext')
@@ -210,7 +210,7 @@
       parseClassDeclarationModifiers(}, class)
         parseTopLevelKeywordModifiers(abstract, class)
       parseClassOrNamedMixinApplication(abstract, class)
-        listener: beginClassOrNamedMixinApplicationPrelude(abstract)
+        listener: beginClassOrMixinOrNamedMixinApplicationPrelude(abstract)
         ensureIdentifier(class, classOrMixinDeclaration)
           listener: handleIdentifier(Foo, classOrMixinDeclaration)
         listener: handleNoTypeVariables(extends)
@@ -243,9 +243,9 @@
               listener: handleClassOrMixinImplements(null, 0)
             listener: handleClassHeader(abstract, class, null)
           parseClassOrMixinOrExtensionBody(>, DeclarationKind.Class, Foo)
-            listener: beginClassOrMixinBody(DeclarationKind.Class, {)
+            listener: beginClassOrMixinOrExtensionBody(DeclarationKind.Class, {)
             notEofOrValue(}, })
-            listener: endClassOrMixinBody(DeclarationKind.Class, 0, {, })
+            listener: endClassOrMixinOrExtensionBody(DeclarationKind.Class, 0, {, })
           listener: endClassDeclaration(abstract, })
   listener: endTopLevelDeclaration()
   reportAllErrorTokens(extension)
diff --git a/pkg/front_end/parser_testcases/non-nnbd/issue_40267_conditional_4.dart.expect b/pkg/front_end/parser_testcases/non-nnbd/issue_40267_conditional_4.dart.expect
index 5a22804..138a4ba 100644
--- a/pkg/front_end/parser_testcases/non-nnbd/issue_40267_conditional_4.dart.expect
+++ b/pkg/front_end/parser_testcases/non-nnbd/issue_40267_conditional_4.dart.expect
@@ -2,7 +2,7 @@
   beginMetadataStar(var)
   endMetadataStar(0)
   beginTopLevelMember(var)
-    beginFields()
+    beginFields(DeclarationKind.TopLevel, null, null, null, null, null, var, )
       handleNoType(var)
       handleIdentifier(a, topLevelVariableDeclaration)
       handleNoFieldInitializer(,)
diff --git a/pkg/front_end/parser_testcases/non-nnbd/issue_40267_conditional_4.dart.intertwined.expect b/pkg/front_end/parser_testcases/non-nnbd/issue_40267_conditional_4.dart.intertwined.expect
index 06fa097..1044c77 100644
--- a/pkg/front_end/parser_testcases/non-nnbd/issue_40267_conditional_4.dart.intertwined.expect
+++ b/pkg/front_end/parser_testcases/non-nnbd/issue_40267_conditional_4.dart.intertwined.expect
@@ -9,7 +9,7 @@
     parseTopLevelMemberImpl()
       listener: beginTopLevelMember(var)
       parseFields(, null, null, null, null, null, var, var, Instance of 'NoType', a, DeclarationKind.TopLevel, null, false)
-        listener: beginFields()
+        listener: beginFields(DeclarationKind.TopLevel, null, null, null, null, null, var, )
         listener: handleNoType(var)
         ensureIdentifierPotentiallyRecovered(var, topLevelVariableDeclaration, false)
           listener: handleIdentifier(a, topLevelVariableDeclaration)
diff --git a/pkg/front_end/parser_testcases/non-nnbd/issue_40288.dart.expect b/pkg/front_end/parser_testcases/non-nnbd/issue_40288.dart.expect
index e1e42f2..ccf89b4 100644
--- a/pkg/front_end/parser_testcases/non-nnbd/issue_40288.dart.expect
+++ b/pkg/front_end/parser_testcases/non-nnbd/issue_40288.dart.expect
@@ -1,7 +1,7 @@
 beginCompilationUnit(class)
   beginMetadataStar(class)
   endMetadataStar(0)
-  beginClassOrNamedMixinApplicationPrelude(class)
+  beginClassOrMixinOrNamedMixinApplicationPrelude(class)
     handleIdentifier(late, classOrMixinDeclaration)
     handleNoTypeVariables({)
     beginClassDeclaration(class, null, late)
@@ -10,11 +10,11 @@
       handleClassNoWithClause()
       handleClassOrMixinImplements(null, 0)
       handleClassHeader(class, class, null)
-      beginClassOrMixinBody(DeclarationKind.Class, {)
+      beginClassOrMixinOrExtensionBody(DeclarationKind.Class, {)
         beginMetadataStar(int)
         endMetadataStar(0)
         beginMember()
-          beginMethod(null, null, null, null, get, g)
+          beginMethod(DeclarationKind.Class, null, null, null, null, get, g)
             handleIdentifier(int, typeReference)
             handleNoTypeArguments(get)
             handleType(int, null)
@@ -27,12 +27,12 @@
             handleExpressionFunctionBody(=>, ;)
           endClassMethod(get, int, =>, null, ;)
         endMember()
-      endClassOrMixinBody(DeclarationKind.Class, 1, {, })
+      endClassOrMixinOrExtensionBody(DeclarationKind.Class, 1, {, })
     endClassDeclaration(class, })
   endTopLevelDeclaration(class)
   beginMetadataStar(class)
   endMetadataStar(0)
-  beginClassOrNamedMixinApplicationPrelude(class)
+  beginClassOrMixinOrNamedMixinApplicationPrelude(class)
     handleIdentifier(required, classOrMixinDeclaration)
     handleNoTypeVariables({)
     beginClassDeclaration(class, null, required)
@@ -41,11 +41,11 @@
       handleClassNoWithClause()
       handleClassOrMixinImplements(null, 0)
       handleClassHeader(class, class, null)
-      beginClassOrMixinBody(DeclarationKind.Class, {)
+      beginClassOrMixinOrExtensionBody(DeclarationKind.Class, {)
         beginMetadataStar(int)
         endMetadataStar(0)
         beginMember()
-          beginMethod(null, null, null, null, get, g)
+          beginMethod(DeclarationKind.Class, null, null, null, null, get, g)
             handleIdentifier(int, typeReference)
             handleNoTypeArguments(get)
             handleType(int, null)
@@ -58,12 +58,12 @@
             handleExpressionFunctionBody(=>, ;)
           endClassMethod(get, int, =>, null, ;)
         endMember()
-      endClassOrMixinBody(DeclarationKind.Class, 1, {, })
+      endClassOrMixinOrExtensionBody(DeclarationKind.Class, 1, {, })
     endClassDeclaration(class, })
   endTopLevelDeclaration(class)
   beginMetadataStar(class)
   endMetadataStar(0)
-  beginClassOrNamedMixinApplicationPrelude(class)
+  beginClassOrMixinOrNamedMixinApplicationPrelude(class)
     handleIdentifier(C, classOrMixinDeclaration)
     handleNoTypeVariables({)
     beginClassDeclaration(class, null, C)
@@ -72,11 +72,11 @@
       handleClassNoWithClause()
       handleClassOrMixinImplements(null, 0)
       handleClassHeader(class, class, null)
-      beginClassOrMixinBody(DeclarationKind.Class, {)
+      beginClassOrMixinOrExtensionBody(DeclarationKind.Class, {)
         beginMetadataStar(late)
         endMetadataStar(0)
         beginMember()
-          beginFields({)
+          beginFields(DeclarationKind.Class, null, null, null, null, null, null, {)
             handleIdentifier(late, typeReference)
             handleNoTypeArguments(l)
             handleType(late, null)
@@ -93,7 +93,7 @@
         beginMetadataStar(required)
         endMetadataStar(0)
         beginMember()
-          beginFields(;)
+          beginFields(DeclarationKind.Class, null, null, null, null, null, null, ;)
             handleIdentifier(required, typeReference)
             handleNoTypeArguments(r)
             handleType(required, null)
@@ -107,7 +107,7 @@
             endFieldInitializer(=, ;)
           endClassFields(null, null, null, null, null, null, 1, required, ;)
         endMember()
-      endClassOrMixinBody(DeclarationKind.Class, 2, {, })
+      endClassOrMixinOrExtensionBody(DeclarationKind.Class, 2, {, })
     endClassDeclaration(class, })
   endTopLevelDeclaration()
 endCompilationUnit(3, )
diff --git a/pkg/front_end/parser_testcases/non-nnbd/issue_40288.dart.intertwined.expect b/pkg/front_end/parser_testcases/non-nnbd/issue_40288.dart.intertwined.expect
index 9d357bc..8a856d0 100644
--- a/pkg/front_end/parser_testcases/non-nnbd/issue_40288.dart.intertwined.expect
+++ b/pkg/front_end/parser_testcases/non-nnbd/issue_40288.dart.intertwined.expect
@@ -9,7 +9,7 @@
     parseTopLevelKeywordDeclaration(, class, Instance of 'DirectiveContext')
       parseClassDeclarationModifiers(, class)
       parseClassOrNamedMixinApplication(null, class)
-        listener: beginClassOrNamedMixinApplicationPrelude(class)
+        listener: beginClassOrMixinOrNamedMixinApplicationPrelude(class)
         ensureIdentifier(class, classOrMixinDeclaration)
           listener: handleIdentifier(late, classOrMixinDeclaration)
         listener: handleNoTypeVariables({)
@@ -25,7 +25,7 @@
               listener: handleClassOrMixinImplements(null, 0)
             listener: handleClassHeader(class, class, null)
           parseClassOrMixinOrExtensionBody(late, DeclarationKind.Class, late)
-            listener: beginClassOrMixinBody(DeclarationKind.Class, {)
+            listener: beginClassOrMixinOrExtensionBody(DeclarationKind.Class, {)
             notEofOrValue(}, int)
             parseClassOrMixinOrExtensionMemberImpl({, DeclarationKind.Class, late)
               parseMetadataStar({)
@@ -33,7 +33,7 @@
                 listener: endMetadataStar(0)
               listener: beginMember()
               parseMethod({, null, null, null, null, null, null, {, Instance of 'SimpleType', get, g, DeclarationKind.Class, late, false)
-                listener: beginMethod(null, null, null, null, get, g)
+                listener: beginMethod(DeclarationKind.Class, null, null, null, null, get, g)
                 listener: handleIdentifier(int, typeReference)
                 listener: handleNoTypeArguments(get)
                 listener: handleType(int, null)
@@ -64,7 +64,7 @@
                 listener: endClassMethod(get, int, =>, null, ;)
               listener: endMember()
             notEofOrValue(}, })
-            listener: endClassOrMixinBody(DeclarationKind.Class, 1, {, })
+            listener: endClassOrMixinOrExtensionBody(DeclarationKind.Class, 1, {, })
           listener: endClassDeclaration(class, })
   listener: endTopLevelDeclaration(class)
   parseTopLevelDeclarationImpl(}, Instance of 'DirectiveContext')
@@ -74,7 +74,7 @@
     parseTopLevelKeywordDeclaration(}, class, Instance of 'DirectiveContext')
       parseClassDeclarationModifiers(}, class)
       parseClassOrNamedMixinApplication(null, class)
-        listener: beginClassOrNamedMixinApplicationPrelude(class)
+        listener: beginClassOrMixinOrNamedMixinApplicationPrelude(class)
         ensureIdentifier(class, classOrMixinDeclaration)
           listener: handleIdentifier(required, classOrMixinDeclaration)
         listener: handleNoTypeVariables({)
@@ -90,7 +90,7 @@
               listener: handleClassOrMixinImplements(null, 0)
             listener: handleClassHeader(class, class, null)
           parseClassOrMixinOrExtensionBody(required, DeclarationKind.Class, required)
-            listener: beginClassOrMixinBody(DeclarationKind.Class, {)
+            listener: beginClassOrMixinOrExtensionBody(DeclarationKind.Class, {)
             notEofOrValue(}, int)
             parseClassOrMixinOrExtensionMemberImpl({, DeclarationKind.Class, required)
               parseMetadataStar({)
@@ -98,7 +98,7 @@
                 listener: endMetadataStar(0)
               listener: beginMember()
               parseMethod({, null, null, null, null, null, null, {, Instance of 'SimpleType', get, g, DeclarationKind.Class, required, false)
-                listener: beginMethod(null, null, null, null, get, g)
+                listener: beginMethod(DeclarationKind.Class, null, null, null, null, get, g)
                 listener: handleIdentifier(int, typeReference)
                 listener: handleNoTypeArguments(get)
                 listener: handleType(int, null)
@@ -129,7 +129,7 @@
                 listener: endClassMethod(get, int, =>, null, ;)
               listener: endMember()
             notEofOrValue(}, })
-            listener: endClassOrMixinBody(DeclarationKind.Class, 1, {, })
+            listener: endClassOrMixinOrExtensionBody(DeclarationKind.Class, 1, {, })
           listener: endClassDeclaration(class, })
   listener: endTopLevelDeclaration(class)
   parseTopLevelDeclarationImpl(}, Instance of 'DirectiveContext')
@@ -139,7 +139,7 @@
     parseTopLevelKeywordDeclaration(}, class, Instance of 'DirectiveContext')
       parseClassDeclarationModifiers(}, class)
       parseClassOrNamedMixinApplication(null, class)
-        listener: beginClassOrNamedMixinApplicationPrelude(class)
+        listener: beginClassOrMixinOrNamedMixinApplicationPrelude(class)
         ensureIdentifier(class, classOrMixinDeclaration)
           listener: handleIdentifier(C, classOrMixinDeclaration)
         listener: handleNoTypeVariables({)
@@ -155,7 +155,7 @@
               listener: handleClassOrMixinImplements(null, 0)
             listener: handleClassHeader(class, class, null)
           parseClassOrMixinOrExtensionBody(C, DeclarationKind.Class, C)
-            listener: beginClassOrMixinBody(DeclarationKind.Class, {)
+            listener: beginClassOrMixinOrExtensionBody(DeclarationKind.Class, {)
             notEofOrValue(}, late)
             parseClassOrMixinOrExtensionMemberImpl({, DeclarationKind.Class, C)
               parseMetadataStar({)
@@ -163,7 +163,7 @@
                 listener: endMetadataStar(0)
               listener: beginMember()
               parseFields({, null, null, null, null, null, null, {, Instance of 'SimpleType', l, DeclarationKind.Class, C, false)
-                listener: beginFields({)
+                listener: beginFields(DeclarationKind.Class, null, null, null, null, null, null, {)
                 listener: handleIdentifier(late, typeReference)
                 listener: handleNoTypeArguments(l)
                 listener: handleType(late, null)
@@ -198,7 +198,7 @@
                 listener: endMetadataStar(0)
               listener: beginMember()
               parseFields(;, null, null, null, null, null, null, ;, Instance of 'SimpleType', r, DeclarationKind.Class, C, false)
-                listener: beginFields(;)
+                listener: beginFields(DeclarationKind.Class, null, null, null, null, null, null, ;)
                 listener: handleIdentifier(required, typeReference)
                 listener: handleNoTypeArguments(r)
                 listener: handleType(required, null)
@@ -227,7 +227,7 @@
                 listener: endClassFields(null, null, null, null, null, null, 1, required, ;)
               listener: endMember()
             notEofOrValue(}, })
-            listener: endClassOrMixinBody(DeclarationKind.Class, 2, {, })
+            listener: endClassOrMixinOrExtensionBody(DeclarationKind.Class, 2, {, })
           listener: endClassDeclaration(class, })
   listener: endTopLevelDeclaration()
   reportAllErrorTokens(class)
diff --git a/pkg/front_end/parser_testcases/non-nnbd/issue_40288_prime.dart.expect b/pkg/front_end/parser_testcases/non-nnbd/issue_40288_prime.dart.expect
index fd1c433..f7cda4b 100644
--- a/pkg/front_end/parser_testcases/non-nnbd/issue_40288_prime.dart.expect
+++ b/pkg/front_end/parser_testcases/non-nnbd/issue_40288_prime.dart.expect
@@ -1,7 +1,7 @@
 beginCompilationUnit(class)
   beginMetadataStar(class)
   endMetadataStar(0)
-  beginClassOrNamedMixinApplicationPrelude(class)
+  beginClassOrMixinOrNamedMixinApplicationPrelude(class)
     handleIdentifier(Xlate, classOrMixinDeclaration)
     handleNoTypeVariables({)
     beginClassDeclaration(class, null, Xlate)
@@ -10,11 +10,11 @@
       handleClassNoWithClause()
       handleClassOrMixinImplements(null, 0)
       handleClassHeader(class, class, null)
-      beginClassOrMixinBody(DeclarationKind.Class, {)
+      beginClassOrMixinOrExtensionBody(DeclarationKind.Class, {)
         beginMetadataStar(int)
         endMetadataStar(0)
         beginMember()
-          beginMethod(null, null, null, null, get, g)
+          beginMethod(DeclarationKind.Class, null, null, null, null, get, g)
             handleIdentifier(int, typeReference)
             handleNoTypeArguments(get)
             handleType(int, null)
@@ -27,12 +27,12 @@
             handleExpressionFunctionBody(=>, ;)
           endClassMethod(get, int, =>, null, ;)
         endMember()
-      endClassOrMixinBody(DeclarationKind.Class, 1, {, })
+      endClassOrMixinOrExtensionBody(DeclarationKind.Class, 1, {, })
     endClassDeclaration(class, })
   endTopLevelDeclaration(class)
   beginMetadataStar(class)
   endMetadataStar(0)
-  beginClassOrNamedMixinApplicationPrelude(class)
+  beginClassOrMixinOrNamedMixinApplicationPrelude(class)
     handleIdentifier(Xrequired, classOrMixinDeclaration)
     handleNoTypeVariables({)
     beginClassDeclaration(class, null, Xrequired)
@@ -41,11 +41,11 @@
       handleClassNoWithClause()
       handleClassOrMixinImplements(null, 0)
       handleClassHeader(class, class, null)
-      beginClassOrMixinBody(DeclarationKind.Class, {)
+      beginClassOrMixinOrExtensionBody(DeclarationKind.Class, {)
         beginMetadataStar(int)
         endMetadataStar(0)
         beginMember()
-          beginMethod(null, null, null, null, get, g)
+          beginMethod(DeclarationKind.Class, null, null, null, null, get, g)
             handleIdentifier(int, typeReference)
             handleNoTypeArguments(get)
             handleType(int, null)
@@ -58,12 +58,12 @@
             handleExpressionFunctionBody(=>, ;)
           endClassMethod(get, int, =>, null, ;)
         endMember()
-      endClassOrMixinBody(DeclarationKind.Class, 1, {, })
+      endClassOrMixinOrExtensionBody(DeclarationKind.Class, 1, {, })
     endClassDeclaration(class, })
   endTopLevelDeclaration(class)
   beginMetadataStar(class)
   endMetadataStar(0)
-  beginClassOrNamedMixinApplicationPrelude(class)
+  beginClassOrMixinOrNamedMixinApplicationPrelude(class)
     handleIdentifier(C, classOrMixinDeclaration)
     handleNoTypeVariables({)
     beginClassDeclaration(class, null, C)
@@ -72,11 +72,11 @@
       handleClassNoWithClause()
       handleClassOrMixinImplements(null, 0)
       handleClassHeader(class, class, null)
-      beginClassOrMixinBody(DeclarationKind.Class, {)
+      beginClassOrMixinOrExtensionBody(DeclarationKind.Class, {)
         beginMetadataStar(Xlate)
         endMetadataStar(0)
         beginMember()
-          beginFields({)
+          beginFields(DeclarationKind.Class, null, null, null, null, null, null, {)
             handleIdentifier(Xlate, typeReference)
             handleNoTypeArguments(l)
             handleType(Xlate, null)
@@ -93,7 +93,7 @@
         beginMetadataStar(Xrequired)
         endMetadataStar(0)
         beginMember()
-          beginFields(;)
+          beginFields(DeclarationKind.Class, null, null, null, null, null, null, ;)
             handleIdentifier(Xrequired, typeReference)
             handleNoTypeArguments(r)
             handleType(Xrequired, null)
@@ -107,7 +107,7 @@
             endFieldInitializer(=, ;)
           endClassFields(null, null, null, null, null, null, 1, Xrequired, ;)
         endMember()
-      endClassOrMixinBody(DeclarationKind.Class, 2, {, })
+      endClassOrMixinOrExtensionBody(DeclarationKind.Class, 2, {, })
     endClassDeclaration(class, })
   endTopLevelDeclaration()
 endCompilationUnit(3, )
diff --git a/pkg/front_end/parser_testcases/non-nnbd/issue_40288_prime.dart.intertwined.expect b/pkg/front_end/parser_testcases/non-nnbd/issue_40288_prime.dart.intertwined.expect
index 94ff34e..20506bd 100644
--- a/pkg/front_end/parser_testcases/non-nnbd/issue_40288_prime.dart.intertwined.expect
+++ b/pkg/front_end/parser_testcases/non-nnbd/issue_40288_prime.dart.intertwined.expect
@@ -9,7 +9,7 @@
     parseTopLevelKeywordDeclaration(, class, Instance of 'DirectiveContext')
       parseClassDeclarationModifiers(, class)
       parseClassOrNamedMixinApplication(null, class)
-        listener: beginClassOrNamedMixinApplicationPrelude(class)
+        listener: beginClassOrMixinOrNamedMixinApplicationPrelude(class)
         ensureIdentifier(class, classOrMixinDeclaration)
           listener: handleIdentifier(Xlate, classOrMixinDeclaration)
         listener: handleNoTypeVariables({)
@@ -25,7 +25,7 @@
               listener: handleClassOrMixinImplements(null, 0)
             listener: handleClassHeader(class, class, null)
           parseClassOrMixinOrExtensionBody(Xlate, DeclarationKind.Class, Xlate)
-            listener: beginClassOrMixinBody(DeclarationKind.Class, {)
+            listener: beginClassOrMixinOrExtensionBody(DeclarationKind.Class, {)
             notEofOrValue(}, int)
             parseClassOrMixinOrExtensionMemberImpl({, DeclarationKind.Class, Xlate)
               parseMetadataStar({)
@@ -33,7 +33,7 @@
                 listener: endMetadataStar(0)
               listener: beginMember()
               parseMethod({, null, null, null, null, null, null, {, Instance of 'SimpleType', get, g, DeclarationKind.Class, Xlate, false)
-                listener: beginMethod(null, null, null, null, get, g)
+                listener: beginMethod(DeclarationKind.Class, null, null, null, null, get, g)
                 listener: handleIdentifier(int, typeReference)
                 listener: handleNoTypeArguments(get)
                 listener: handleType(int, null)
@@ -64,7 +64,7 @@
                 listener: endClassMethod(get, int, =>, null, ;)
               listener: endMember()
             notEofOrValue(}, })
-            listener: endClassOrMixinBody(DeclarationKind.Class, 1, {, })
+            listener: endClassOrMixinOrExtensionBody(DeclarationKind.Class, 1, {, })
           listener: endClassDeclaration(class, })
   listener: endTopLevelDeclaration(class)
   parseTopLevelDeclarationImpl(}, Instance of 'DirectiveContext')
@@ -74,7 +74,7 @@
     parseTopLevelKeywordDeclaration(}, class, Instance of 'DirectiveContext')
       parseClassDeclarationModifiers(}, class)
       parseClassOrNamedMixinApplication(null, class)
-        listener: beginClassOrNamedMixinApplicationPrelude(class)
+        listener: beginClassOrMixinOrNamedMixinApplicationPrelude(class)
         ensureIdentifier(class, classOrMixinDeclaration)
           listener: handleIdentifier(Xrequired, classOrMixinDeclaration)
         listener: handleNoTypeVariables({)
@@ -90,7 +90,7 @@
               listener: handleClassOrMixinImplements(null, 0)
             listener: handleClassHeader(class, class, null)
           parseClassOrMixinOrExtensionBody(Xrequired, DeclarationKind.Class, Xrequired)
-            listener: beginClassOrMixinBody(DeclarationKind.Class, {)
+            listener: beginClassOrMixinOrExtensionBody(DeclarationKind.Class, {)
             notEofOrValue(}, int)
             parseClassOrMixinOrExtensionMemberImpl({, DeclarationKind.Class, Xrequired)
               parseMetadataStar({)
@@ -98,7 +98,7 @@
                 listener: endMetadataStar(0)
               listener: beginMember()
               parseMethod({, null, null, null, null, null, null, {, Instance of 'SimpleType', get, g, DeclarationKind.Class, Xrequired, false)
-                listener: beginMethod(null, null, null, null, get, g)
+                listener: beginMethod(DeclarationKind.Class, null, null, null, null, get, g)
                 listener: handleIdentifier(int, typeReference)
                 listener: handleNoTypeArguments(get)
                 listener: handleType(int, null)
@@ -129,7 +129,7 @@
                 listener: endClassMethod(get, int, =>, null, ;)
               listener: endMember()
             notEofOrValue(}, })
-            listener: endClassOrMixinBody(DeclarationKind.Class, 1, {, })
+            listener: endClassOrMixinOrExtensionBody(DeclarationKind.Class, 1, {, })
           listener: endClassDeclaration(class, })
   listener: endTopLevelDeclaration(class)
   parseTopLevelDeclarationImpl(}, Instance of 'DirectiveContext')
@@ -139,7 +139,7 @@
     parseTopLevelKeywordDeclaration(}, class, Instance of 'DirectiveContext')
       parseClassDeclarationModifiers(}, class)
       parseClassOrNamedMixinApplication(null, class)
-        listener: beginClassOrNamedMixinApplicationPrelude(class)
+        listener: beginClassOrMixinOrNamedMixinApplicationPrelude(class)
         ensureIdentifier(class, classOrMixinDeclaration)
           listener: handleIdentifier(C, classOrMixinDeclaration)
         listener: handleNoTypeVariables({)
@@ -155,7 +155,7 @@
               listener: handleClassOrMixinImplements(null, 0)
             listener: handleClassHeader(class, class, null)
           parseClassOrMixinOrExtensionBody(C, DeclarationKind.Class, C)
-            listener: beginClassOrMixinBody(DeclarationKind.Class, {)
+            listener: beginClassOrMixinOrExtensionBody(DeclarationKind.Class, {)
             notEofOrValue(}, Xlate)
             parseClassOrMixinOrExtensionMemberImpl({, DeclarationKind.Class, C)
               parseMetadataStar({)
@@ -163,7 +163,7 @@
                 listener: endMetadataStar(0)
               listener: beginMember()
               parseFields({, null, null, null, null, null, null, {, Instance of 'SimpleType', l, DeclarationKind.Class, C, false)
-                listener: beginFields({)
+                listener: beginFields(DeclarationKind.Class, null, null, null, null, null, null, {)
                 listener: handleIdentifier(Xlate, typeReference)
                 listener: handleNoTypeArguments(l)
                 listener: handleType(Xlate, null)
@@ -198,7 +198,7 @@
                 listener: endMetadataStar(0)
               listener: beginMember()
               parseFields(;, null, null, null, null, null, null, ;, Instance of 'SimpleType', r, DeclarationKind.Class, C, false)
-                listener: beginFields(;)
+                listener: beginFields(DeclarationKind.Class, null, null, null, null, null, null, ;)
                 listener: handleIdentifier(Xrequired, typeReference)
                 listener: handleNoTypeArguments(r)
                 listener: handleType(Xrequired, null)
@@ -227,7 +227,7 @@
                 listener: endClassFields(null, null, null, null, null, null, 1, Xrequired, ;)
               listener: endMember()
             notEofOrValue(}, })
-            listener: endClassOrMixinBody(DeclarationKind.Class, 2, {, })
+            listener: endClassOrMixinOrExtensionBody(DeclarationKind.Class, 2, {, })
           listener: endClassDeclaration(class, })
   listener: endTopLevelDeclaration()
   reportAllErrorTokens(class)
diff --git a/pkg/front_end/parser_testcases/non-nnbd/nullable_type_argument.dart.expect b/pkg/front_end/parser_testcases/non-nnbd/nullable_type_argument.dart.expect
index bc75d92..42d27b1 100644
--- a/pkg/front_end/parser_testcases/non-nnbd/nullable_type_argument.dart.expect
+++ b/pkg/front_end/parser_testcases/non-nnbd/nullable_type_argument.dart.expect
@@ -1,7 +1,7 @@
 beginCompilationUnit(class)
   beginMetadataStar(class)
   endMetadataStar(0)
-  beginClassOrNamedMixinApplicationPrelude(class)
+  beginClassOrMixinOrNamedMixinApplicationPrelude(class)
     handleIdentifier(A, classOrMixinDeclaration)
     beginTypeVariables(<)
       beginMetadataStar(T)
@@ -18,13 +18,13 @@
       handleClassNoWithClause()
       handleClassOrMixinImplements(null, 0)
       handleClassHeader(class, class, null)
-      beginClassOrMixinBody(DeclarationKind.Class, {)
-      endClassOrMixinBody(DeclarationKind.Class, 0, {, })
+      beginClassOrMixinOrExtensionBody(DeclarationKind.Class, {)
+      endClassOrMixinOrExtensionBody(DeclarationKind.Class, 0, {, })
     endClassDeclaration(class, })
   endTopLevelDeclaration(class)
   beginMetadataStar(class)
   endMetadataStar(0)
-  beginClassOrNamedMixinApplicationPrelude(class)
+  beginClassOrMixinOrNamedMixinApplicationPrelude(class)
     handleIdentifier(B, classOrMixinDeclaration)
     handleNoTypeVariables(implements)
     beginClassDeclaration(class, null, B)
@@ -40,8 +40,8 @@
       handleType(A, null)
       handleClassOrMixinImplements(implements, 1)
       handleClassHeader(class, class, null)
-      beginClassOrMixinBody(DeclarationKind.Class, {)
-      endClassOrMixinBody(DeclarationKind.Class, 0, {, })
+      beginClassOrMixinOrExtensionBody(DeclarationKind.Class, {)
+      endClassOrMixinOrExtensionBody(DeclarationKind.Class, 0, {, })
     endClassDeclaration(class, })
   endTopLevelDeclaration()
 endCompilationUnit(2, )
diff --git a/pkg/front_end/parser_testcases/non-nnbd/nullable_type_argument.dart.intertwined.expect b/pkg/front_end/parser_testcases/non-nnbd/nullable_type_argument.dart.intertwined.expect
index 9baf74c..5d322f3 100644
--- a/pkg/front_end/parser_testcases/non-nnbd/nullable_type_argument.dart.intertwined.expect
+++ b/pkg/front_end/parser_testcases/non-nnbd/nullable_type_argument.dart.intertwined.expect
@@ -9,7 +9,7 @@
     parseTopLevelKeywordDeclaration(, class, Instance of 'DirectiveContext')
       parseClassDeclarationModifiers(, class)
       parseClassOrNamedMixinApplication(null, class)
-        listener: beginClassOrNamedMixinApplicationPrelude(class)
+        listener: beginClassOrMixinOrNamedMixinApplicationPrelude(class)
         ensureIdentifier(class, classOrMixinDeclaration)
           listener: handleIdentifier(A, classOrMixinDeclaration)
         listener: beginTypeVariables(<)
@@ -33,9 +33,9 @@
               listener: handleClassOrMixinImplements(null, 0)
             listener: handleClassHeader(class, class, null)
           parseClassOrMixinOrExtensionBody(>, DeclarationKind.Class, A)
-            listener: beginClassOrMixinBody(DeclarationKind.Class, {)
+            listener: beginClassOrMixinOrExtensionBody(DeclarationKind.Class, {)
             notEofOrValue(}, })
-            listener: endClassOrMixinBody(DeclarationKind.Class, 0, {, })
+            listener: endClassOrMixinOrExtensionBody(DeclarationKind.Class, 0, {, })
           listener: endClassDeclaration(class, })
   listener: endTopLevelDeclaration(class)
   parseTopLevelDeclarationImpl(}, Instance of 'DirectiveContext')
@@ -45,7 +45,7 @@
     parseTopLevelKeywordDeclaration(}, class, Instance of 'DirectiveContext')
       parseClassDeclarationModifiers(}, class)
       parseClassOrNamedMixinApplication(null, class)
-        listener: beginClassOrNamedMixinApplicationPrelude(class)
+        listener: beginClassOrMixinOrNamedMixinApplicationPrelude(class)
         ensureIdentifier(class, classOrMixinDeclaration)
           listener: handleIdentifier(B, classOrMixinDeclaration)
         listener: handleNoTypeVariables(implements)
@@ -69,9 +69,9 @@
               listener: handleClassOrMixinImplements(implements, 1)
             listener: handleClassHeader(class, class, null)
           parseClassOrMixinOrExtensionBody(>, DeclarationKind.Class, B)
-            listener: beginClassOrMixinBody(DeclarationKind.Class, {)
+            listener: beginClassOrMixinOrExtensionBody(DeclarationKind.Class, {)
             notEofOrValue(}, })
-            listener: endClassOrMixinBody(DeclarationKind.Class, 0, {, })
+            listener: endClassOrMixinOrExtensionBody(DeclarationKind.Class, 0, {, })
           listener: endClassDeclaration(class, })
   listener: endTopLevelDeclaration()
   reportAllErrorTokens(class)
diff --git a/pkg/front_end/parser_testcases/non-nnbd/use_late_in_non_nnbd.dart.expect b/pkg/front_end/parser_testcases/non-nnbd/use_late_in_non_nnbd.dart.expect
index 405a6f7..37497b6 100644
--- a/pkg/front_end/parser_testcases/non-nnbd/use_late_in_non_nnbd.dart.expect
+++ b/pkg/front_end/parser_testcases/non-nnbd/use_late_in_non_nnbd.dart.expect
@@ -64,7 +64,7 @@
   beginMetadataStar(int)
   endMetadataStar(0)
   beginTopLevelMember(int)
-    beginFields()
+    beginFields(DeclarationKind.TopLevel, null, null, null, null, null, null, )
       handleIdentifier(int, typeReference)
       handleNoTypeArguments(x1)
       handleType(int, null)
@@ -76,7 +76,7 @@
   endMetadataStar(0)
   beginTopLevelMember(late)
     handleRecoverableError(Message[UnexpectedModifierInNonNnbd, The modifier 'late' is only available in null safe libraries., null, {lexeme: late}], late, late)
-    beginFields(late)
+    beginFields(DeclarationKind.TopLevel, null, null, null, null, late, null, late)
       handleIdentifier(int, typeReference)
       handleNoTypeArguments(x2)
       handleType(int, null)
@@ -88,7 +88,7 @@
   endMetadataStar(0)
   beginTopLevelMember(late)
     handleRecoverableError(Message[UnexpectedModifierInNonNnbd, The modifier 'late' is only available in null safe libraries., null, {lexeme: late}], late, late)
-    beginFields(late)
+    beginFields(DeclarationKind.TopLevel, null, null, null, null, late, null, late)
       handleIdentifier(List, typeReference)
       beginTypeArguments(<)
         handleIdentifier(int, typeReference)
@@ -104,7 +104,7 @@
   endMetadataStar(0)
   beginTopLevelMember(late)
     handleRecoverableError(Message[UnexpectedModifierInNonNnbd, The modifier 'late' is only available in null safe libraries., null, {lexeme: late}], late, late)
-    beginFields(late)
+    beginFields(DeclarationKind.TopLevel, null, null, null, null, late, final, late)
       handleIdentifier(int, typeReference)
       handleNoTypeArguments(x4)
       handleType(int, null)
@@ -115,7 +115,7 @@
   beginMetadataStar(late)
   endMetadataStar(0)
   beginTopLevelMember(late)
-    beginFields(;)
+    beginFields(DeclarationKind.TopLevel, null, null, null, null, null, null, ;)
       handleIdentifier(late, typeReference)
       handleNoTypeArguments(x5)
       handleType(late, null)
@@ -132,7 +132,7 @@
   beginMetadataStar(late)
   endMetadataStar(0)
   beginTopLevelMember(late)
-    beginFields(;)
+    beginFields(DeclarationKind.TopLevel, null, null, null, null, null, null, ;)
       handleRecoverableError(MissingConstFinalVarOrType, late, late)
       handleNoType(;)
       handleIdentifier(late, topLevelVariableDeclaration)
@@ -243,7 +243,7 @@
   endTopLevelDeclaration(class)
   beginMetadataStar(class)
   endMetadataStar(0)
-  beginClassOrNamedMixinApplicationPrelude(class)
+  beginClassOrMixinOrNamedMixinApplicationPrelude(class)
     handleIdentifier(Foo, classOrMixinDeclaration)
     handleNoTypeVariables({)
     beginClassDeclaration(class, null, Foo)
@@ -252,11 +252,11 @@
       handleClassNoWithClause()
       handleClassOrMixinImplements(null, 0)
       handleClassHeader(class, class, null)
-      beginClassOrMixinBody(DeclarationKind.Class, {)
+      beginClassOrMixinOrExtensionBody(DeclarationKind.Class, {)
         beginMetadataStar(int)
         endMetadataStar(0)
         beginMember()
-          beginFields({)
+          beginFields(DeclarationKind.Class, null, null, null, null, null, null, {)
             handleIdentifier(int, typeReference)
             handleNoTypeArguments(z1)
             handleType(int, null)
@@ -268,7 +268,7 @@
         endMetadataStar(0)
         handleRecoverableError(Message[UnexpectedModifierInNonNnbd, The modifier 'late' is only available in null safe libraries., null, {lexeme: late}], late, late)
         beginMember()
-          beginFields(late)
+          beginFields(DeclarationKind.Class, null, null, null, null, late, null, late)
             handleIdentifier(int, typeReference)
             handleNoTypeArguments(z2)
             handleType(int, null)
@@ -280,7 +280,7 @@
         endMetadataStar(0)
         handleRecoverableError(Message[UnexpectedModifierInNonNnbd, The modifier 'late' is only available in null safe libraries., null, {lexeme: late}], late, late)
         beginMember()
-          beginFields(late)
+          beginFields(DeclarationKind.Class, null, null, null, null, late, null, late)
             handleIdentifier(List, typeReference)
             beginTypeArguments(<)
               handleIdentifier(int, typeReference)
@@ -296,7 +296,7 @@
         endMetadataStar(0)
         handleRecoverableError(Message[UnexpectedModifierInNonNnbd, The modifier 'late' is only available in null safe libraries., null, {lexeme: late}], late, late)
         beginMember()
-          beginFields(late)
+          beginFields(DeclarationKind.Class, null, null, null, null, late, final, late)
             handleIdentifier(int, typeReference)
             handleNoTypeArguments(z4)
             handleType(int, null)
@@ -307,7 +307,7 @@
         beginMetadataStar(late)
         endMetadataStar(0)
         beginMember()
-          beginFields(;)
+          beginFields(DeclarationKind.Class, null, null, null, null, null, null, ;)
             handleIdentifier(late, typeReference)
             handleNoTypeArguments(z5)
             handleType(late, null)
@@ -324,7 +324,7 @@
         beginMetadataStar(late)
         endMetadataStar(0)
         beginMember()
-          beginFields(;)
+          beginFields(DeclarationKind.Class, null, null, null, null, null, null, ;)
             handleRecoverableError(MissingConstFinalVarOrType, late, late)
             handleNoType(;)
             handleIdentifier(late, fieldDeclaration)
@@ -337,7 +337,7 @@
           handleRecoverableError(Message[ExpectedClassMember, Expected a class member, but got ';'., null, {lexeme: ;}], ;, ;)
           handleInvalidMember(;)
         endMember()
-      endClassOrMixinBody(DeclarationKind.Class, 8, {, })
+      endClassOrMixinOrExtensionBody(DeclarationKind.Class, 8, {, })
     endClassDeclaration(class, })
   endTopLevelDeclaration()
 endCompilationUnit(10, )
diff --git a/pkg/front_end/parser_testcases/non-nnbd/use_late_in_non_nnbd.dart.intertwined.expect b/pkg/front_end/parser_testcases/non-nnbd/use_late_in_non_nnbd.dart.intertwined.expect
index cab97bd..8d5501d9 100644
--- a/pkg/front_end/parser_testcases/non-nnbd/use_late_in_non_nnbd.dart.intertwined.expect
+++ b/pkg/front_end/parser_testcases/non-nnbd/use_late_in_non_nnbd.dart.intertwined.expect
@@ -9,7 +9,7 @@
     parseTopLevelMemberImpl()
       listener: beginTopLevelMember(int)
       parseFields(, null, null, null, null, null, null, , Instance of 'SimpleType', x1, DeclarationKind.TopLevel, null, false)
-        listener: beginFields()
+        listener: beginFields(DeclarationKind.TopLevel, null, null, null, null, null, null, )
         listener: handleIdentifier(int, typeReference)
         listener: handleNoTypeArguments(x1)
         listener: handleType(int, null)
@@ -29,7 +29,7 @@
       reportRecoverableErrorWithToken(late, Instance of 'Template<(Token) => Message>')
         listener: handleRecoverableError(Message[UnexpectedModifierInNonNnbd, The modifier 'late' is only available in null safe libraries., null, {lexeme: late}], late, late)
       parseFields(late, null, null, null, null, late, null, late, Instance of 'SimpleType', x2, DeclarationKind.TopLevel, null, false)
-        listener: beginFields(late)
+        listener: beginFields(DeclarationKind.TopLevel, null, null, null, null, late, null, late)
         listener: handleIdentifier(int, typeReference)
         listener: handleNoTypeArguments(x2)
         listener: handleType(int, null)
@@ -49,7 +49,7 @@
       reportRecoverableErrorWithToken(late, Instance of 'Template<(Token) => Message>')
         listener: handleRecoverableError(Message[UnexpectedModifierInNonNnbd, The modifier 'late' is only available in null safe libraries., null, {lexeme: late}], late, late)
       parseFields(late, null, null, null, null, late, null, late, Instance of 'SimpleTypeWith1Argument', x3, DeclarationKind.TopLevel, null, false)
-        listener: beginFields(late)
+        listener: beginFields(DeclarationKind.TopLevel, null, null, null, null, late, null, late)
         listener: handleIdentifier(List, typeReference)
         listener: beginTypeArguments(<)
         listener: handleIdentifier(int, typeReference)
@@ -73,7 +73,7 @@
       reportRecoverableErrorWithToken(late, Instance of 'Template<(Token) => Message>')
         listener: handleRecoverableError(Message[UnexpectedModifierInNonNnbd, The modifier 'late' is only available in null safe libraries., null, {lexeme: late}], late, late)
       parseFields(late, null, null, null, null, late, final, final, Instance of 'SimpleType', x4, DeclarationKind.TopLevel, null, false)
-        listener: beginFields(late)
+        listener: beginFields(DeclarationKind.TopLevel, null, null, null, null, late, final, late)
         listener: handleIdentifier(int, typeReference)
         listener: handleNoTypeArguments(x4)
         listener: handleType(int, null)
@@ -90,7 +90,7 @@
     parseTopLevelMemberImpl(;)
       listener: beginTopLevelMember(late)
       parseFields(;, null, null, null, null, null, null, ;, Instance of 'SimpleType', x5, DeclarationKind.TopLevel, null, false)
-        listener: beginFields(;)
+        listener: beginFields(DeclarationKind.TopLevel, null, null, null, null, null, null, ;)
         listener: handleIdentifier(late, typeReference)
         listener: handleNoTypeArguments(x5)
         listener: handleType(late, null)
@@ -118,7 +118,7 @@
       listener: beginTopLevelMember(late)
       isReservedKeyword(;)
       parseFields(;, null, null, null, null, null, null, ;, Instance of 'NoType', late, DeclarationKind.TopLevel, null, false)
-        listener: beginFields(;)
+        listener: beginFields(DeclarationKind.TopLevel, null, null, null, null, null, null, ;)
         reportRecoverableError(late, MissingConstFinalVarOrType)
           listener: handleRecoverableError(MissingConstFinalVarOrType, late, late)
         listener: handleNoType(;)
@@ -338,7 +338,7 @@
     parseTopLevelKeywordDeclaration(}, class, Instance of 'DirectiveContext')
       parseClassDeclarationModifiers(}, class)
       parseClassOrNamedMixinApplication(null, class)
-        listener: beginClassOrNamedMixinApplicationPrelude(class)
+        listener: beginClassOrMixinOrNamedMixinApplicationPrelude(class)
         ensureIdentifier(class, classOrMixinDeclaration)
           listener: handleIdentifier(Foo, classOrMixinDeclaration)
         listener: handleNoTypeVariables({)
@@ -354,7 +354,7 @@
               listener: handleClassOrMixinImplements(null, 0)
             listener: handleClassHeader(class, class, null)
           parseClassOrMixinOrExtensionBody(Foo, DeclarationKind.Class, Foo)
-            listener: beginClassOrMixinBody(DeclarationKind.Class, {)
+            listener: beginClassOrMixinOrExtensionBody(DeclarationKind.Class, {)
             notEofOrValue(}, int)
             parseClassOrMixinOrExtensionMemberImpl({, DeclarationKind.Class, Foo)
               parseMetadataStar({)
@@ -362,7 +362,7 @@
                 listener: endMetadataStar(0)
               listener: beginMember()
               parseFields({, null, null, null, null, null, null, {, Instance of 'SimpleType', z1, DeclarationKind.Class, Foo, false)
-                listener: beginFields({)
+                listener: beginFields(DeclarationKind.Class, null, null, null, null, null, null, {)
                 listener: handleIdentifier(int, typeReference)
                 listener: handleNoTypeArguments(z1)
                 listener: handleType(int, null)
@@ -382,7 +382,7 @@
                 listener: handleRecoverableError(Message[UnexpectedModifierInNonNnbd, The modifier 'late' is only available in null safe libraries., null, {lexeme: late}], late, late)
               listener: beginMember()
               parseFields(late, null, null, null, null, late, null, late, Instance of 'SimpleType', z2, DeclarationKind.Class, Foo, false)
-                listener: beginFields(late)
+                listener: beginFields(DeclarationKind.Class, null, null, null, null, late, null, late)
                 listener: handleIdentifier(int, typeReference)
                 listener: handleNoTypeArguments(z2)
                 listener: handleType(int, null)
@@ -402,7 +402,7 @@
                 listener: handleRecoverableError(Message[UnexpectedModifierInNonNnbd, The modifier 'late' is only available in null safe libraries., null, {lexeme: late}], late, late)
               listener: beginMember()
               parseFields(late, null, null, null, null, late, null, late, Instance of 'SimpleTypeWith1Argument', x3, DeclarationKind.Class, Foo, false)
-                listener: beginFields(late)
+                listener: beginFields(DeclarationKind.Class, null, null, null, null, late, null, late)
                 listener: handleIdentifier(List, typeReference)
                 listener: beginTypeArguments(<)
                 listener: handleIdentifier(int, typeReference)
@@ -426,7 +426,7 @@
                 listener: handleRecoverableError(Message[UnexpectedModifierInNonNnbd, The modifier 'late' is only available in null safe libraries., null, {lexeme: late}], late, late)
               listener: beginMember()
               parseFields(late, null, null, null, null, late, final, final, Instance of 'SimpleType', z4, DeclarationKind.Class, Foo, false)
-                listener: beginFields(late)
+                listener: beginFields(DeclarationKind.Class, null, null, null, null, late, final, late)
                 listener: handleIdentifier(int, typeReference)
                 listener: handleNoTypeArguments(z4)
                 listener: handleType(int, null)
@@ -443,7 +443,7 @@
                 listener: endMetadataStar(0)
               listener: beginMember()
               parseFields(;, null, null, null, null, null, null, ;, Instance of 'SimpleType', z5, DeclarationKind.Class, Foo, false)
-                listener: beginFields(;)
+                listener: beginFields(DeclarationKind.Class, null, null, null, null, null, null, ;)
                 listener: handleIdentifier(late, typeReference)
                 listener: handleNoTypeArguments(z5)
                 listener: handleType(late, null)
@@ -472,7 +472,7 @@
               listener: beginMember()
               isReservedKeyword(;)
               parseFields(;, null, null, null, null, null, null, ;, Instance of 'NoType', late, DeclarationKind.Class, Foo, false)
-                listener: beginFields(;)
+                listener: beginFields(DeclarationKind.Class, null, null, null, null, null, null, ;)
                 reportRecoverableError(late, MissingConstFinalVarOrType)
                   listener: handleRecoverableError(MissingConstFinalVarOrType, late, late)
                 listener: handleNoType(;)
@@ -494,7 +494,7 @@
                 listener: handleInvalidMember(;)
                 listener: endMember()
             notEofOrValue(}, })
-            listener: endClassOrMixinBody(DeclarationKind.Class, 8, {, })
+            listener: endClassOrMixinOrExtensionBody(DeclarationKind.Class, 8, {, })
           listener: endClassDeclaration(class, })
   listener: endTopLevelDeclaration()
   reportAllErrorTokens(int)
diff --git a/pkg/front_end/parser_testcases/non-nnbd/use_required_in_non_nnbd.dart.expect b/pkg/front_end/parser_testcases/non-nnbd/use_required_in_non_nnbd.dart.expect
index 645cb48..6e58879 100644
--- a/pkg/front_end/parser_testcases/non-nnbd/use_required_in_non_nnbd.dart.expect
+++ b/pkg/front_end/parser_testcases/non-nnbd/use_required_in_non_nnbd.dart.expect
@@ -122,7 +122,7 @@
   endTopLevelDeclaration(class)
   beginMetadataStar(class)
   endMetadataStar(0)
-  beginClassOrNamedMixinApplicationPrelude(class)
+  beginClassOrMixinOrNamedMixinApplicationPrelude(class)
     handleIdentifier(Foo, classOrMixinDeclaration)
     handleNoTypeVariables({)
     beginClassDeclaration(class, null, Foo)
@@ -131,11 +131,11 @@
       handleClassNoWithClause()
       handleClassOrMixinImplements(null, 0)
       handleClassHeader(class, class, null)
-      beginClassOrMixinBody(DeclarationKind.Class, {)
+      beginClassOrMixinOrExtensionBody(DeclarationKind.Class, {)
         beginMetadataStar(void)
         endMetadataStar(0)
         beginMember()
-          beginMethod(null, null, null, null, null, foo4)
+          beginMethod(DeclarationKind.Class, null, null, null, null, null, foo4)
             handleVoidKeyword(void)
             handleIdentifier(foo4, methodDeclaration)
             handleNoTypeVariables(()
@@ -169,7 +169,7 @@
             endBlockFunctionBody(1, {, })
           endClassMethod(null, void, (, null, })
         endMember()
-      endClassOrMixinBody(DeclarationKind.Class, 1, {, })
+      endClassOrMixinOrExtensionBody(DeclarationKind.Class, 1, {, })
     endClassDeclaration(class, })
   endTopLevelDeclaration()
 endCompilationUnit(4, )
diff --git a/pkg/front_end/parser_testcases/non-nnbd/use_required_in_non_nnbd.dart.intertwined.expect b/pkg/front_end/parser_testcases/non-nnbd/use_required_in_non_nnbd.dart.intertwined.expect
index 20f8cf3..476dd57 100644
--- a/pkg/front_end/parser_testcases/non-nnbd/use_required_in_non_nnbd.dart.intertwined.expect
+++ b/pkg/front_end/parser_testcases/non-nnbd/use_required_in_non_nnbd.dart.intertwined.expect
@@ -256,7 +256,7 @@
     parseTopLevelKeywordDeclaration(}, class, Instance of 'DirectiveContext')
       parseClassDeclarationModifiers(}, class)
       parseClassOrNamedMixinApplication(null, class)
-        listener: beginClassOrNamedMixinApplicationPrelude(class)
+        listener: beginClassOrMixinOrNamedMixinApplicationPrelude(class)
         ensureIdentifier(class, classOrMixinDeclaration)
           listener: handleIdentifier(Foo, classOrMixinDeclaration)
         listener: handleNoTypeVariables({)
@@ -272,7 +272,7 @@
               listener: handleClassOrMixinImplements(null, 0)
             listener: handleClassHeader(class, class, null)
           parseClassOrMixinOrExtensionBody(Foo, DeclarationKind.Class, Foo)
-            listener: beginClassOrMixinBody(DeclarationKind.Class, {)
+            listener: beginClassOrMixinOrExtensionBody(DeclarationKind.Class, {)
             notEofOrValue(}, void)
             parseClassOrMixinOrExtensionMemberImpl({, DeclarationKind.Class, Foo)
               parseMetadataStar({)
@@ -280,7 +280,7 @@
                 listener: endMetadataStar(0)
               listener: beginMember()
               parseMethod({, null, null, null, null, null, null, {, Instance of 'VoidType', null, foo4, DeclarationKind.Class, Foo, false)
-                listener: beginMethod(null, null, null, null, null, foo4)
+                listener: beginMethod(DeclarationKind.Class, null, null, null, null, null, foo4)
                 listener: handleVoidKeyword(void)
                 ensureIdentifierPotentiallyRecovered(void, methodDeclaration, false)
                   listener: handleIdentifier(foo4, methodDeclaration)
@@ -361,7 +361,7 @@
                 listener: endClassMethod(null, void, (, null, })
               listener: endMember()
             notEofOrValue(}, })
-            listener: endClassOrMixinBody(DeclarationKind.Class, 1, {, })
+            listener: endClassOrMixinOrExtensionBody(DeclarationKind.Class, 1, {, })
           listener: endClassDeclaration(class, })
   listener: endTopLevelDeclaration()
   reportAllErrorTokens(void)
diff --git a/pkg/front_end/test/crashing_test_case_minimizer_impl.dart b/pkg/front_end/test/crashing_test_case_minimizer_impl.dart
index d77e84e..e8e1ed7 100644
--- a/pkg/front_end/test/crashing_test_case_minimizer_impl.dart
+++ b/pkg/front_end/test/crashing_test_case_minimizer_impl.dart
@@ -1309,7 +1309,7 @@
         shouldCompile = true;
         what = "enum";
       } else if (child.isTypedef()) {
-        DirectParserASTContentFunctionTypeAliasEnd decl = child.asTypedef();
+        DirectParserASTContentTypedefEnd decl = child.asTypedef();
         helper.replacements.add(new _Replacement(
             decl.typedefKeyword.offset - 1, decl.endToken.offset + 1));
         shouldCompile = true;
@@ -1371,8 +1371,8 @@
           if (child.isClass()) {
             // Also try to remove all content of the class.
             DirectParserASTContentClassDeclarationEnd decl = child.asClass();
-            DirectParserASTContentClassOrMixinBodyEnd body =
-                decl.getClassOrMixinBody();
+            DirectParserASTContentClassOrMixinOrExtensionBodyEnd body =
+                decl.getClassOrMixinOrExtensionBody();
             if (body.beginToken.offset + 2 < body.endToken.offset) {
               helper.replacements.add(new _Replacement(
                   body.beginToken.offset, body.endToken.offset));
@@ -1500,8 +1500,8 @@
             // Also try to remove all content of the mixin.
             DirectParserASTContentMixinDeclarationEnd decl =
                 child.asMixinDeclaration();
-            DirectParserASTContentClassOrMixinBodyEnd body =
-                decl.getClassOrMixinBody();
+            DirectParserASTContentClassOrMixinOrExtensionBodyEnd body =
+                decl.getClassOrMixinOrExtensionBody();
             if (body.beginToken.offset + 2 < body.endToken.offset) {
               helper.replacements.add(new _Replacement(
                   body.beginToken.offset, body.endToken.offset));
diff --git a/pkg/front_end/test/fasta/testing/suite.dart b/pkg/front_end/test/fasta/testing/suite.dart
index 2cda1e4..f6468b1 100644
--- a/pkg/front_end/test/fasta/testing/suite.dart
+++ b/pkg/front_end/test/fasta/testing/suite.dart
@@ -1670,8 +1670,8 @@
   }
 
   @override
-  void visitTypedef(DirectParserASTContentFunctionTypeAliasEnd node,
-      Token startInclusive, Token endInclusive) {
+  void visitTypedef(DirectParserASTContentTypedefEnd node, Token startInclusive,
+      Token endInclusive) {
     handleData(FuzzSorterState.sortableRest, startInclusive, endInclusive);
   }
 }
diff --git a/pkg/front_end/test/fasta/util/direct_parser_ast_test.dart b/pkg/front_end/test/fasta/util/direct_parser_ast_test.dart
index a393a6d..4e4a34d 100644
--- a/pkg/front_end/test/fasta/util/direct_parser_ast_test.dart
+++ b/pkg/front_end/test/fasta/util/direct_parser_ast_test.dart
@@ -43,10 +43,12 @@
         splitIntoChunks(ast, data);
         for (DirectParserASTContent child in ast.children) {
           if (child.isClass()) {
-            splitIntoChunks(child.asClass().getClassOrMixinBody(), data);
+            splitIntoChunks(
+                child.asClass().getClassOrMixinOrExtensionBody(), data);
           } else if (child.isMixinDeclaration()) {
             splitIntoChunks(
-                child.asMixinDeclaration().getClassOrMixinBody(), data);
+                child.asMixinDeclaration().getClassOrMixinOrExtensionBody(),
+                data);
           }
         }
       } catch (e, st) {
@@ -165,7 +167,7 @@
       cls.getClassWithClause();
   expect(null, withClauseDecl);
   List<DirectParserASTContentMemberEnd> members =
-      cls.getClassOrMixinBody().getMembers();
+      cls.getClassOrMixinOrExtensionBody().getMembers();
   expect(5, members.length);
   expect(members[0].isClassConstructor(), true);
   expect(members[1].isClassFactoryMethod(), true);
@@ -173,7 +175,8 @@
   expect(members[3].isClassMethod(), true);
   expect(members[4].isClassFields(), true);
 
-  List<String> chunks = splitIntoChunks(cls.getClassOrMixinBody(), data);
+  List<String> chunks =
+      splitIntoChunks(cls.getClassOrMixinOrExtensionBody(), data);
   expect(5, chunks.length);
   expect("""Foo() {
     // Constructor
@@ -208,7 +211,7 @@
 
   // TODO: Move (something like) this into the check-all-files-thing.
   for (DirectParserASTContentMemberEnd member
-      in cls.getClassOrMixinBody().getMembers()) {
+      in cls.getClassOrMixinOrExtensionBody().getMembers()) {
     if (member.isClassConstructor()) continue;
     if (member.isClassFactoryMethod()) continue;
     if (member.isClassFields()) continue;
@@ -225,7 +228,7 @@
   expect(null, implementsDecl.implementsKeyword?.lexeme);
   withClauseDecl = cls.getClassWithClause();
   expect("with", withClauseDecl.withKeyword.lexeme);
-  members = cls.getClassOrMixinBody().getMembers();
+  members = cls.getClassOrMixinOrExtensionBody().getMembers();
   expect(0, members.length);
 }
 
@@ -247,14 +250,15 @@
   expect("B", decl.getIdentifier().token.lexeme);
 
   List<DirectParserASTContentMemberEnd> members =
-      mxn.getClassOrMixinBody().getMembers();
+      mxn.getClassOrMixinOrExtensionBody().getMembers();
   expect(4, members.length);
   expect(members[0].isMixinFields(), true);
   expect(members[1].isMixinMethod(), true);
   expect(members[2].isMixinFactoryMethod(), true);
   expect(members[3].isMixinConstructor(), true);
 
-  List<String> chunks = splitIntoChunks(mxn.getClassOrMixinBody(), data);
+  List<String> chunks =
+      splitIntoChunks(mxn.getClassOrMixinOrExtensionBody(), data);
   expect(4, chunks.length);
   expect("static int staticField = 0;", chunks[0]);
   expect("""void foo() {
@@ -366,7 +370,7 @@
           namedMixinDecl.endToken.offset + namedMixinDecl.endToken.length)
     ];
   } else if (item.isTypedef()) {
-    DirectParserASTContentFunctionTypeAliasEnd typedefDecl = item.asTypedef();
+    DirectParserASTContentTypedefEnd typedefDecl = item.asTypedef();
     return [
       getCutContent(data, typedefDecl.typedefKeyword.offset,
           typedefDecl.endToken.offset + typedefDecl.endToken.length)
diff --git a/pkg/front_end/test/parser_test_listener.dart b/pkg/front_end/test/parser_test_listener.dart
index 4d45463..7fcb1c2 100644
--- a/pkg/front_end/test/parser_test_listener.dart
+++ b/pkg/front_end/test/parser_test_listener.dart
@@ -172,19 +172,19 @@
   }
 
   @override
-  void beginClassOrMixinBody(DeclarationKind kind, Token token) {
+  void beginClassOrMixinOrExtensionBody(DeclarationKind kind, Token token) {
     seen(token);
-    doPrint('beginClassOrMixinBody(' '$kind, ' '$token)');
+    doPrint('beginClassOrMixinOrExtensionBody(' '$kind, ' '$token)');
     indent++;
   }
 
   @override
-  void endClassOrMixinBody(
+  void endClassOrMixinOrExtensionBody(
       DeclarationKind kind, int memberCount, Token beginToken, Token endToken) {
     indent--;
     seen(beginToken);
     seen(endToken);
-    doPrint('endClassOrMixinBody('
+    doPrint('endClassOrMixinOrExtensionBody('
         '$kind, '
         '$memberCount, '
         '$beginToken, '
@@ -192,9 +192,9 @@
   }
 
   @override
-  void beginClassOrNamedMixinApplicationPrelude(Token token) {
+  void beginClassOrMixinOrNamedMixinApplicationPrelude(Token token) {
     seen(token);
-    doPrint('beginClassOrNamedMixinApplicationPrelude(' '$token)');
+    doPrint('beginClassOrMixinOrNamedMixinApplicationPrelude(' '$token)');
     indent++;
   }
 
@@ -485,12 +485,13 @@
   }
 
   @override
-  void beginFactoryMethod(
-      Token lastConsumed, Token? externalToken, Token? constToken) {
+  void beginFactoryMethod(DeclarationKind declarationKind, Token lastConsumed,
+      Token? externalToken, Token? constToken) {
     seen(lastConsumed);
     seen(externalToken);
     seen(constToken);
     doPrint('beginFactoryMethod('
+        '$declarationKind, '
         '$lastConsumed, '
         '$externalToken, '
         '$constToken)');
@@ -879,21 +880,19 @@
   }
 
   @override
-  void beginFunctionTypeAlias(Token token) {
+  void beginTypedef(Token token) {
     seen(token);
-    doPrint('beginFunctionTypeAlias(' '$token)');
+    doPrint('beginTypedef(' '$token)');
     indent++;
   }
 
   @override
-  void endFunctionTypeAlias(
-      Token typedefKeyword, Token? equals, Token endToken) {
+  void endTypedef(Token typedefKeyword, Token? equals, Token endToken) {
     indent--;
     seen(typedefKeyword);
     seen(equals);
     seen(endToken);
-    doPrint(
-        'endFunctionTypeAlias(' '$typedefKeyword, ' '$equals, ' '$endToken)');
+    doPrint('endTypedef(' '$typedefKeyword, ' '$equals, ' '$endToken)');
   }
 
   @override
@@ -1288,6 +1287,7 @@
 
   @override
   void beginMethod(
+      DeclarationKind declarationKind,
       Token? externalToken,
       Token? staticToken,
       Token? covariantToken,
@@ -1301,6 +1301,7 @@
     seen(getOrSet);
     seen(name);
     doPrint('beginMethod('
+        '$declarationKind, '
         '$externalToken, '
         '$staticToken, '
         '$covariantToken, '
@@ -1668,9 +1669,31 @@
   }
 
   @override
-  void beginFields(Token lastConsumed) {
+  void beginFields(
+      DeclarationKind declarationKind,
+      Token? abstractToken,
+      Token? externalToken,
+      Token? staticToken,
+      Token? covariantToken,
+      Token? lateToken,
+      Token? varFinalOrConst,
+      Token lastConsumed) {
+    seen(abstractToken);
+    seen(externalToken);
+    seen(staticToken);
+    seen(covariantToken);
+    seen(lateToken);
+    seen(varFinalOrConst);
     seen(lastConsumed);
-    doPrint('beginFields(' '$lastConsumed)');
+    doPrint('beginFields('
+        '$declarationKind, '
+        '$abstractToken, '
+        '$externalToken, '
+        '$staticToken, '
+        '$covariantToken, '
+        '$lateToken, '
+        '$varFinalOrConst, '
+        '$lastConsumed)');
     indent++;
   }
 
diff --git a/pkg/front_end/test/parser_test_listener_creator.dart b/pkg/front_end/test/parser_test_listener_creator.dart
index 508e479..c2c6df4 100644
--- a/pkg/front_end/test/parser_test_listener_creator.dart
+++ b/pkg/front_end/test/parser_test_listener_creator.dart
@@ -138,8 +138,14 @@
   }
 
   @override
-  void beginMethod(Token externalToken, Token staticToken, Token covariantToken,
-      Token varFinalOrConst, Token getOrSet, Token name) {
+  void beginMethod(
+      DeclarationKind declarationKind,
+      Token externalToken,
+      Token staticToken,
+      Token covariantToken,
+      Token varFinalOrConst,
+      Token getOrSet,
+      Token name) {
     currentMethodName = name.lexeme;
   }
 
diff --git a/pkg/front_end/test/parser_test_parser_creator.dart b/pkg/front_end/test/parser_test_parser_creator.dart
index ccc24c3..136e903 100644
--- a/pkg/front_end/test/parser_test_parser_creator.dart
+++ b/pkg/front_end/test/parser_test_parser_creator.dart
@@ -123,8 +123,14 @@
   }
 
   @override
-  void beginMethod(Token externalToken, Token staticToken, Token covariantToken,
-      Token varFinalOrConst, Token getOrSet, Token name) {
+  void beginMethod(
+      DeclarationKind declarationKind,
+      Token externalToken,
+      Token staticToken,
+      Token covariantToken,
+      Token varFinalOrConst,
+      Token getOrSet,
+      Token name) {
     currentMethodName = name.lexeme;
   }
 
diff --git a/pkg/front_end/test/spell_checking_list_code.txt b/pkg/front_end/test/spell_checking_list_code.txt
index 69249ea..44c927d 100644
--- a/pkg/front_end/test/spell_checking_list_code.txt
+++ b/pkg/front_end/test/spell_checking_list_code.txt
@@ -395,6 +395,7 @@
 enforces
 enforcing
 engineered
+enhanced
 enters
 enumerates
 env
@@ -1075,6 +1076,7 @@
 risk
 rn
 rnystrom
+robust
 role
 room
 rooted
diff --git a/pkg/front_end/test/test_generator_test.dart b/pkg/front_end/test/test_generator_test.dart
index 23c8f54..2f009ea 100644
--- a/pkg/front_end/test/test_generator_test.dart
+++ b/pkg/front_end/test/test_generator_test.dart
@@ -66,7 +66,6 @@
 const Set<Code> ignoredCodes = {
   codeInvalidAssignmentError,
   codeTypeVariableInStaticContext,
-  codeNonInstanceTypeVariableUse,
   codeExtensionDeclaresInstanceField,
   codeExtraneousModifier,
 };
diff --git a/pkg/front_end/testcases/constructor_tearoffs/callable_instantiation.dart b/pkg/front_end/testcases/constructor_tearoffs/callable_instantiation.dart
index 692cc20..c8b971c 100644
--- a/pkg/front_end/testcases/constructor_tearoffs/callable_instantiation.dart
+++ b/pkg/front_end/testcases/constructor_tearoffs/callable_instantiation.dart
@@ -42,6 +42,34 @@
   f3<int>; // error
 }
 
+Class c1 = Class();
+Class? c2;
+GetterCall c3 = GetterCall();
+int i1 = 0;
+int? i2 = null;
+void Function<T>()? f1 = null;
+Never n = throw '';
+dynamic d = null;
+String a = '';
+double b = 0.5;
+bool c = true;
+FutureOr<Class> f2 = Class();
+Function f3 = () {};
+
+var topLevel1 = c1<int>; // ok
+var topLevel2 = i1<int>; // ok
+var topLevel3 = c2<int>; // error
+var topLevel4 = c3<int>; // error
+var topLevel5 = i2<int>; // error
+var topLevel6 = f1<int>; // error
+var topLevel7 = n<int>; // error
+var topLevel8 = d<int>; // error
+var topLevel9 = a<int>; // error
+var topLevel10 = b<int>; // error
+var topLevel11 = c<int>; // error
+var topLevel12 = f2<int>; // error
+var topLevel13 = f3<int>; // error
+
 class Class {
   call<T>() {}
 }
diff --git a/pkg/front_end/testcases/constructor_tearoffs/callable_instantiation.dart.strong.expect b/pkg/front_end/testcases/constructor_tearoffs/callable_instantiation.dart.strong.expect
index 2270689..bb11cff 100644
--- a/pkg/front_end/testcases/constructor_tearoffs/callable_instantiation.dart.strong.expect
+++ b/pkg/front_end/testcases/constructor_tearoffs/callable_instantiation.dart.strong.expect
@@ -34,6 +34,11 @@
 //   s<int>; // error
 //    ^
 //
+// pkg/front_end/testcases/constructor_tearoffs/callable_instantiation.dart:35:5: Error: The static type of the explicit instantiation operand must be a non-null generic function type but is 'void Function<T>()?'.
+// Try changing the operand or remove the type arguments.
+//   f1<int>; // error
+//     ^
+//
 // pkg/front_end/testcases/constructor_tearoffs/callable_instantiation.dart:36:4: Error: The static type of the explicit instantiation operand must be a generic function type but is 'Never'.
 // Try changing the operand or remove the type arguments.
 //   n<int>; // error
@@ -71,6 +76,65 @@
 //   f3<int>; // error
 //     ^
 //
+// pkg/front_end/testcases/constructor_tearoffs/callable_instantiation.dart:61:19: Error: The static type of the explicit instantiation operand must be a generic function type but is 'Class?'.
+//  - 'Class' is from 'pkg/front_end/testcases/constructor_tearoffs/callable_instantiation.dart'.
+// Try changing the operand or remove the type arguments.
+// var topLevel3 = c2<int>; // error
+//                   ^
+//
+// pkg/front_end/testcases/constructor_tearoffs/callable_instantiation.dart:62:19: Error: The static type of the explicit instantiation operand must be a generic function type but is 'GetterCall'.
+//  - 'GetterCall' is from 'pkg/front_end/testcases/constructor_tearoffs/callable_instantiation.dart'.
+// Try changing the operand or remove the type arguments.
+// var topLevel4 = c3<int>; // error
+//                   ^
+//
+// pkg/front_end/testcases/constructor_tearoffs/callable_instantiation.dart:63:19: Error: The static type of the explicit instantiation operand must be a generic function type but is 'int?'.
+// Try changing the operand or remove the type arguments.
+// var topLevel5 = i2<int>; // error
+//                   ^
+//
+// pkg/front_end/testcases/constructor_tearoffs/callable_instantiation.dart:64:19: Error: The static type of the explicit instantiation operand must be a non-null generic function type but is 'void Function<T>()?'.
+// Try changing the operand or remove the type arguments.
+// var topLevel6 = f1<int>; // error
+//                   ^
+//
+// pkg/front_end/testcases/constructor_tearoffs/callable_instantiation.dart:65:18: Error: The static type of the explicit instantiation operand must be a generic function type but is 'Never'.
+// Try changing the operand or remove the type arguments.
+// var topLevel7 = n<int>; // error
+//                  ^
+//
+// pkg/front_end/testcases/constructor_tearoffs/callable_instantiation.dart:66:18: Error: The static type of the explicit instantiation operand must be a generic function type but is 'dynamic'.
+// Try changing the operand or remove the type arguments.
+// var topLevel8 = d<int>; // error
+//                  ^
+//
+// pkg/front_end/testcases/constructor_tearoffs/callable_instantiation.dart:67:18: Error: The static type of the explicit instantiation operand must be a generic function type but is 'String'.
+// Try changing the operand or remove the type arguments.
+// var topLevel9 = a<int>; // error
+//                  ^
+//
+// pkg/front_end/testcases/constructor_tearoffs/callable_instantiation.dart:68:19: Error: The static type of the explicit instantiation operand must be a generic function type but is 'double'.
+// Try changing the operand or remove the type arguments.
+// var topLevel10 = b<int>; // error
+//                   ^
+//
+// pkg/front_end/testcases/constructor_tearoffs/callable_instantiation.dart:69:19: Error: The static type of the explicit instantiation operand must be a generic function type but is 'bool'.
+// Try changing the operand or remove the type arguments.
+// var topLevel11 = c<int>; // error
+//                   ^
+//
+// pkg/front_end/testcases/constructor_tearoffs/callable_instantiation.dart:70:20: Error: The static type of the explicit instantiation operand must be a generic function type but is 'FutureOr<Class>'.
+//  - 'Class' is from 'pkg/front_end/testcases/constructor_tearoffs/callable_instantiation.dart'.
+// Try changing the operand or remove the type arguments.
+// var topLevel12 = f2<int>; // error
+//                    ^
+//
+// pkg/front_end/testcases/constructor_tearoffs/callable_instantiation.dart:71:20: Error: The static type of the explicit instantiation operand must be a generic function type but is 'Function'.
+//  - 'Function' is from 'dart:core'.
+// Try changing the operand or remove the type arguments.
+// var topLevel13 = f3<int>; // error
+//                    ^
+//
 import self as self;
 import "dart:core" as core;
 
@@ -107,6 +171,69 @@
   method call = self::Ambiguous2|call;
   tearoff call = self::Ambiguous2|get#call;
 }
+static field self::Class c1 = new self::Class::•();
+static field self::Class? c2;
+static field self::GetterCall c3 = new self::GetterCall::•();
+static field core::int i1 = 0;
+static field core::int? i2 = null;
+static field <T extends core::Object? = dynamic>() →? void f1 = null;
+static field Never n = throw "";
+static field dynamic d = null;
+static field core::String a = "";
+static field core::double b = 0.5;
+static field core::bool c = true;
+static field FutureOr<self::Class>f2 = new self::Class::•();
+static field core::Function f3 = () → Null {};
+static field () → dynamic topLevel1 = self::c1.{self::Class::call}{<T extends core::Object? = dynamic>() → dynamic}<core::int>;
+static field () → dynamic topLevel2 = self::Extension|get#call(self::i1)<core::int>;
+static field invalid-type topLevel3 = invalid-expression "pkg/front_end/testcases/constructor_tearoffs/callable_instantiation.dart:61:19: Error: The static type of the explicit instantiation operand must be a generic function type but is 'Class?'.
+ - 'Class' is from 'pkg/front_end/testcases/constructor_tearoffs/callable_instantiation.dart'.
+Try changing the operand or remove the type arguments.
+var topLevel3 = c2<int>; // error
+                  ^";
+static field invalid-type topLevel4 = invalid-expression "pkg/front_end/testcases/constructor_tearoffs/callable_instantiation.dart:62:19: Error: The static type of the explicit instantiation operand must be a generic function type but is 'GetterCall'.
+ - 'GetterCall' is from 'pkg/front_end/testcases/constructor_tearoffs/callable_instantiation.dart'.
+Try changing the operand or remove the type arguments.
+var topLevel4 = c3<int>; // error
+                  ^";
+static field invalid-type topLevel5 = invalid-expression "pkg/front_end/testcases/constructor_tearoffs/callable_instantiation.dart:63:19: Error: The static type of the explicit instantiation operand must be a generic function type but is 'int?'.
+Try changing the operand or remove the type arguments.
+var topLevel5 = i2<int>; // error
+                  ^";
+static field invalid-type topLevel6 = invalid-expression "pkg/front_end/testcases/constructor_tearoffs/callable_instantiation.dart:64:19: Error: The static type of the explicit instantiation operand must be a non-null generic function type but is 'void Function<T>()?'.
+Try changing the operand or remove the type arguments.
+var topLevel6 = f1<int>; // error
+                  ^";
+static field invalid-type topLevel7 = invalid-expression "pkg/front_end/testcases/constructor_tearoffs/callable_instantiation.dart:65:18: Error: The static type of the explicit instantiation operand must be a generic function type but is 'Never'.
+Try changing the operand or remove the type arguments.
+var topLevel7 = n<int>; // error
+                 ^";
+static field invalid-type topLevel8 = invalid-expression "pkg/front_end/testcases/constructor_tearoffs/callable_instantiation.dart:66:18: Error: The static type of the explicit instantiation operand must be a generic function type but is 'dynamic'.
+Try changing the operand or remove the type arguments.
+var topLevel8 = d<int>; // error
+                 ^";
+static field invalid-type topLevel9 = invalid-expression "pkg/front_end/testcases/constructor_tearoffs/callable_instantiation.dart:67:18: Error: The static type of the explicit instantiation operand must be a generic function type but is 'String'.
+Try changing the operand or remove the type arguments.
+var topLevel9 = a<int>; // error
+                 ^";
+static field invalid-type topLevel10 = invalid-expression "pkg/front_end/testcases/constructor_tearoffs/callable_instantiation.dart:68:19: Error: The static type of the explicit instantiation operand must be a generic function type but is 'double'.
+Try changing the operand or remove the type arguments.
+var topLevel10 = b<int>; // error
+                  ^";
+static field invalid-type topLevel11 = invalid-expression "pkg/front_end/testcases/constructor_tearoffs/callable_instantiation.dart:69:19: Error: The static type of the explicit instantiation operand must be a generic function type but is 'bool'.
+Try changing the operand or remove the type arguments.
+var topLevel11 = c<int>; // error
+                  ^";
+static field invalid-type topLevel12 = invalid-expression "pkg/front_end/testcases/constructor_tearoffs/callable_instantiation.dart:70:20: Error: The static type of the explicit instantiation operand must be a generic function type but is 'FutureOr<Class>'.
+ - 'Class' is from 'pkg/front_end/testcases/constructor_tearoffs/callable_instantiation.dart'.
+Try changing the operand or remove the type arguments.
+var topLevel12 = f2<int>; // error
+                   ^";
+static field invalid-type topLevel13 = invalid-expression "pkg/front_end/testcases/constructor_tearoffs/callable_instantiation.dart:71:20: Error: The static type of the explicit instantiation operand must be a generic function type but is 'Function'.
+ - 'Function' is from 'dart:core'.
+Try changing the operand or remove the type arguments.
+var topLevel13 = f3<int>; // error
+                   ^";
 static method method<T extends self::Class, S extends core::int>(self::Class c, core::int i, self::method::T t, self::method::S s) → dynamic {
   c.{self::Class::call}{<T extends core::Object? = dynamic>() → dynamic}<core::int>;
   self::Extension|get#call(i)<core::int>;
@@ -140,7 +267,10 @@
 Try changing the operand or remove the type arguments.
   s<int>; // error
    ^";
-  f1<core::int>;
+  invalid-expression "pkg/front_end/testcases/constructor_tearoffs/callable_instantiation.dart:35:5: Error: The static type of the explicit instantiation operand must be a non-null generic function type but is 'void Function<T>()?'.
+Try changing the operand or remove the type arguments.
+  f1<int>; // error
+    ^";
   invalid-expression "pkg/front_end/testcases/constructor_tearoffs/callable_instantiation.dart:36:4: Error: The static type of the explicit instantiation operand must be a generic function type but is 'Never'.
 Try changing the operand or remove the type arguments.
   n<int>; // error
diff --git a/pkg/front_end/testcases/constructor_tearoffs/callable_instantiation.dart.strong.transformed.expect b/pkg/front_end/testcases/constructor_tearoffs/callable_instantiation.dart.strong.transformed.expect
index 2270689..bb11cff 100644
--- a/pkg/front_end/testcases/constructor_tearoffs/callable_instantiation.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/constructor_tearoffs/callable_instantiation.dart.strong.transformed.expect
@@ -34,6 +34,11 @@
 //   s<int>; // error
 //    ^
 //
+// pkg/front_end/testcases/constructor_tearoffs/callable_instantiation.dart:35:5: Error: The static type of the explicit instantiation operand must be a non-null generic function type but is 'void Function<T>()?'.
+// Try changing the operand or remove the type arguments.
+//   f1<int>; // error
+//     ^
+//
 // pkg/front_end/testcases/constructor_tearoffs/callable_instantiation.dart:36:4: Error: The static type of the explicit instantiation operand must be a generic function type but is 'Never'.
 // Try changing the operand or remove the type arguments.
 //   n<int>; // error
@@ -71,6 +76,65 @@
 //   f3<int>; // error
 //     ^
 //
+// pkg/front_end/testcases/constructor_tearoffs/callable_instantiation.dart:61:19: Error: The static type of the explicit instantiation operand must be a generic function type but is 'Class?'.
+//  - 'Class' is from 'pkg/front_end/testcases/constructor_tearoffs/callable_instantiation.dart'.
+// Try changing the operand or remove the type arguments.
+// var topLevel3 = c2<int>; // error
+//                   ^
+//
+// pkg/front_end/testcases/constructor_tearoffs/callable_instantiation.dart:62:19: Error: The static type of the explicit instantiation operand must be a generic function type but is 'GetterCall'.
+//  - 'GetterCall' is from 'pkg/front_end/testcases/constructor_tearoffs/callable_instantiation.dart'.
+// Try changing the operand or remove the type arguments.
+// var topLevel4 = c3<int>; // error
+//                   ^
+//
+// pkg/front_end/testcases/constructor_tearoffs/callable_instantiation.dart:63:19: Error: The static type of the explicit instantiation operand must be a generic function type but is 'int?'.
+// Try changing the operand or remove the type arguments.
+// var topLevel5 = i2<int>; // error
+//                   ^
+//
+// pkg/front_end/testcases/constructor_tearoffs/callable_instantiation.dart:64:19: Error: The static type of the explicit instantiation operand must be a non-null generic function type but is 'void Function<T>()?'.
+// Try changing the operand or remove the type arguments.
+// var topLevel6 = f1<int>; // error
+//                   ^
+//
+// pkg/front_end/testcases/constructor_tearoffs/callable_instantiation.dart:65:18: Error: The static type of the explicit instantiation operand must be a generic function type but is 'Never'.
+// Try changing the operand or remove the type arguments.
+// var topLevel7 = n<int>; // error
+//                  ^
+//
+// pkg/front_end/testcases/constructor_tearoffs/callable_instantiation.dart:66:18: Error: The static type of the explicit instantiation operand must be a generic function type but is 'dynamic'.
+// Try changing the operand or remove the type arguments.
+// var topLevel8 = d<int>; // error
+//                  ^
+//
+// pkg/front_end/testcases/constructor_tearoffs/callable_instantiation.dart:67:18: Error: The static type of the explicit instantiation operand must be a generic function type but is 'String'.
+// Try changing the operand or remove the type arguments.
+// var topLevel9 = a<int>; // error
+//                  ^
+//
+// pkg/front_end/testcases/constructor_tearoffs/callable_instantiation.dart:68:19: Error: The static type of the explicit instantiation operand must be a generic function type but is 'double'.
+// Try changing the operand or remove the type arguments.
+// var topLevel10 = b<int>; // error
+//                   ^
+//
+// pkg/front_end/testcases/constructor_tearoffs/callable_instantiation.dart:69:19: Error: The static type of the explicit instantiation operand must be a generic function type but is 'bool'.
+// Try changing the operand or remove the type arguments.
+// var topLevel11 = c<int>; // error
+//                   ^
+//
+// pkg/front_end/testcases/constructor_tearoffs/callable_instantiation.dart:70:20: Error: The static type of the explicit instantiation operand must be a generic function type but is 'FutureOr<Class>'.
+//  - 'Class' is from 'pkg/front_end/testcases/constructor_tearoffs/callable_instantiation.dart'.
+// Try changing the operand or remove the type arguments.
+// var topLevel12 = f2<int>; // error
+//                    ^
+//
+// pkg/front_end/testcases/constructor_tearoffs/callable_instantiation.dart:71:20: Error: The static type of the explicit instantiation operand must be a generic function type but is 'Function'.
+//  - 'Function' is from 'dart:core'.
+// Try changing the operand or remove the type arguments.
+// var topLevel13 = f3<int>; // error
+//                    ^
+//
 import self as self;
 import "dart:core" as core;
 
@@ -107,6 +171,69 @@
   method call = self::Ambiguous2|call;
   tearoff call = self::Ambiguous2|get#call;
 }
+static field self::Class c1 = new self::Class::•();
+static field self::Class? c2;
+static field self::GetterCall c3 = new self::GetterCall::•();
+static field core::int i1 = 0;
+static field core::int? i2 = null;
+static field <T extends core::Object? = dynamic>() →? void f1 = null;
+static field Never n = throw "";
+static field dynamic d = null;
+static field core::String a = "";
+static field core::double b = 0.5;
+static field core::bool c = true;
+static field FutureOr<self::Class>f2 = new self::Class::•();
+static field core::Function f3 = () → Null {};
+static field () → dynamic topLevel1 = self::c1.{self::Class::call}{<T extends core::Object? = dynamic>() → dynamic}<core::int>;
+static field () → dynamic topLevel2 = self::Extension|get#call(self::i1)<core::int>;
+static field invalid-type topLevel3 = invalid-expression "pkg/front_end/testcases/constructor_tearoffs/callable_instantiation.dart:61:19: Error: The static type of the explicit instantiation operand must be a generic function type but is 'Class?'.
+ - 'Class' is from 'pkg/front_end/testcases/constructor_tearoffs/callable_instantiation.dart'.
+Try changing the operand or remove the type arguments.
+var topLevel3 = c2<int>; // error
+                  ^";
+static field invalid-type topLevel4 = invalid-expression "pkg/front_end/testcases/constructor_tearoffs/callable_instantiation.dart:62:19: Error: The static type of the explicit instantiation operand must be a generic function type but is 'GetterCall'.
+ - 'GetterCall' is from 'pkg/front_end/testcases/constructor_tearoffs/callable_instantiation.dart'.
+Try changing the operand or remove the type arguments.
+var topLevel4 = c3<int>; // error
+                  ^";
+static field invalid-type topLevel5 = invalid-expression "pkg/front_end/testcases/constructor_tearoffs/callable_instantiation.dart:63:19: Error: The static type of the explicit instantiation operand must be a generic function type but is 'int?'.
+Try changing the operand or remove the type arguments.
+var topLevel5 = i2<int>; // error
+                  ^";
+static field invalid-type topLevel6 = invalid-expression "pkg/front_end/testcases/constructor_tearoffs/callable_instantiation.dart:64:19: Error: The static type of the explicit instantiation operand must be a non-null generic function type but is 'void Function<T>()?'.
+Try changing the operand or remove the type arguments.
+var topLevel6 = f1<int>; // error
+                  ^";
+static field invalid-type topLevel7 = invalid-expression "pkg/front_end/testcases/constructor_tearoffs/callable_instantiation.dart:65:18: Error: The static type of the explicit instantiation operand must be a generic function type but is 'Never'.
+Try changing the operand or remove the type arguments.
+var topLevel7 = n<int>; // error
+                 ^";
+static field invalid-type topLevel8 = invalid-expression "pkg/front_end/testcases/constructor_tearoffs/callable_instantiation.dart:66:18: Error: The static type of the explicit instantiation operand must be a generic function type but is 'dynamic'.
+Try changing the operand or remove the type arguments.
+var topLevel8 = d<int>; // error
+                 ^";
+static field invalid-type topLevel9 = invalid-expression "pkg/front_end/testcases/constructor_tearoffs/callable_instantiation.dart:67:18: Error: The static type of the explicit instantiation operand must be a generic function type but is 'String'.
+Try changing the operand or remove the type arguments.
+var topLevel9 = a<int>; // error
+                 ^";
+static field invalid-type topLevel10 = invalid-expression "pkg/front_end/testcases/constructor_tearoffs/callable_instantiation.dart:68:19: Error: The static type of the explicit instantiation operand must be a generic function type but is 'double'.
+Try changing the operand or remove the type arguments.
+var topLevel10 = b<int>; // error
+                  ^";
+static field invalid-type topLevel11 = invalid-expression "pkg/front_end/testcases/constructor_tearoffs/callable_instantiation.dart:69:19: Error: The static type of the explicit instantiation operand must be a generic function type but is 'bool'.
+Try changing the operand or remove the type arguments.
+var topLevel11 = c<int>; // error
+                  ^";
+static field invalid-type topLevel12 = invalid-expression "pkg/front_end/testcases/constructor_tearoffs/callable_instantiation.dart:70:20: Error: The static type of the explicit instantiation operand must be a generic function type but is 'FutureOr<Class>'.
+ - 'Class' is from 'pkg/front_end/testcases/constructor_tearoffs/callable_instantiation.dart'.
+Try changing the operand or remove the type arguments.
+var topLevel12 = f2<int>; // error
+                   ^";
+static field invalid-type topLevel13 = invalid-expression "pkg/front_end/testcases/constructor_tearoffs/callable_instantiation.dart:71:20: Error: The static type of the explicit instantiation operand must be a generic function type but is 'Function'.
+ - 'Function' is from 'dart:core'.
+Try changing the operand or remove the type arguments.
+var topLevel13 = f3<int>; // error
+                   ^";
 static method method<T extends self::Class, S extends core::int>(self::Class c, core::int i, self::method::T t, self::method::S s) → dynamic {
   c.{self::Class::call}{<T extends core::Object? = dynamic>() → dynamic}<core::int>;
   self::Extension|get#call(i)<core::int>;
@@ -140,7 +267,10 @@
 Try changing the operand or remove the type arguments.
   s<int>; // error
    ^";
-  f1<core::int>;
+  invalid-expression "pkg/front_end/testcases/constructor_tearoffs/callable_instantiation.dart:35:5: Error: The static type of the explicit instantiation operand must be a non-null generic function type but is 'void Function<T>()?'.
+Try changing the operand or remove the type arguments.
+  f1<int>; // error
+    ^";
   invalid-expression "pkg/front_end/testcases/constructor_tearoffs/callable_instantiation.dart:36:4: Error: The static type of the explicit instantiation operand must be a generic function type but is 'Never'.
 Try changing the operand or remove the type arguments.
   n<int>; // error
diff --git a/pkg/front_end/testcases/constructor_tearoffs/callable_instantiation.dart.textual_outline.expect b/pkg/front_end/testcases/constructor_tearoffs/callable_instantiation.dart.textual_outline.expect
index 807f530..1828544 100644
--- a/pkg/front_end/testcases/constructor_tearoffs/callable_instantiation.dart.textual_outline.expect
+++ b/pkg/front_end/testcases/constructor_tearoffs/callable_instantiation.dart.textual_outline.expect
@@ -16,6 +16,32 @@
     bool c,
     FutureOr<Class> f2,
     Function f3) {}
+Class c1 = Class();
+Class? c2;
+GetterCall c3 = GetterCall();
+int i1 = 0;
+int? i2 = null;
+void Function<T>()? f1 = null;
+Never n = throw '';
+dynamic d = null;
+String a = '';
+double b = 0.5;
+bool c = true;
+FutureOr<Class> f2 = Class();
+Function f3 = () {};
+var topLevel1 = c1<int>;
+var topLevel2 = i1<int>;
+var topLevel3 = c2<int>;
+var topLevel4 = c3<int>;
+var topLevel5 = i2<int>;
+var topLevel6 = f1<int>;
+var topLevel7 = n<int>;
+var topLevel8 = d<int>;
+var topLevel9 = a<int>;
+var topLevel10 = b<int>;
+var topLevel11 = c<int>;
+var topLevel12 = f2<int>;
+var topLevel13 = f3<int>;
 
 class Class {
   call<T>() {}
diff --git a/pkg/front_end/testcases/constructor_tearoffs/callable_instantiation.dart.textual_outline_modelled.expect b/pkg/front_end/testcases/constructor_tearoffs/callable_instantiation.dart.textual_outline_modelled.expect
index 5c31ac3..3b6ec7e 100644
--- a/pkg/front_end/testcases/constructor_tearoffs/callable_instantiation.dart.textual_outline_modelled.expect
+++ b/pkg/front_end/testcases/constructor_tearoffs/callable_instantiation.dart.textual_outline_modelled.expect
@@ -1,5 +1,14 @@
 import 'dart:async';
 
+Class? c2;
+Class c1 = Class();
+Function f3 = () {};
+FutureOr<Class> f2 = Class();
+GetterCall c3 = GetterCall();
+Never n = throw '';
+String a = '';
+bool c = true;
+
 class Class {
   call<T>() {}
 }
@@ -8,6 +17,9 @@
   void Function<T>() get call => <T>() {};
 }
 
+double b = 0.5;
+dynamic d = null;
+
 extension Ambiguous1 on String {
   call<T>() {}
 }
@@ -28,6 +40,8 @@
   set call(void Function<T>() value) {}
 }
 
+int? i2 = null;
+int i1 = 0;
 main() {}
 method<T extends Class, S extends int>(Class c, int i, T t, S s) {}
 test<T extends Class?, S extends int>(
@@ -45,3 +59,17 @@
     bool c,
     FutureOr<Class> f2,
     Function f3) {}
+var topLevel1 = c1<int>;
+var topLevel10 = b<int>;
+var topLevel11 = c<int>;
+var topLevel12 = f2<int>;
+var topLevel13 = f3<int>;
+var topLevel2 = i1<int>;
+var topLevel3 = c2<int>;
+var topLevel4 = c3<int>;
+var topLevel5 = i2<int>;
+var topLevel6 = f1<int>;
+var topLevel7 = n<int>;
+var topLevel8 = d<int>;
+var topLevel9 = a<int>;
+void Function<T>()? f1 = null;
diff --git a/pkg/front_end/testcases/constructor_tearoffs/callable_instantiation.dart.weak.expect b/pkg/front_end/testcases/constructor_tearoffs/callable_instantiation.dart.weak.expect
index 2270689..bb11cff 100644
--- a/pkg/front_end/testcases/constructor_tearoffs/callable_instantiation.dart.weak.expect
+++ b/pkg/front_end/testcases/constructor_tearoffs/callable_instantiation.dart.weak.expect
@@ -34,6 +34,11 @@
 //   s<int>; // error
 //    ^
 //
+// pkg/front_end/testcases/constructor_tearoffs/callable_instantiation.dart:35:5: Error: The static type of the explicit instantiation operand must be a non-null generic function type but is 'void Function<T>()?'.
+// Try changing the operand or remove the type arguments.
+//   f1<int>; // error
+//     ^
+//
 // pkg/front_end/testcases/constructor_tearoffs/callable_instantiation.dart:36:4: Error: The static type of the explicit instantiation operand must be a generic function type but is 'Never'.
 // Try changing the operand or remove the type arguments.
 //   n<int>; // error
@@ -71,6 +76,65 @@
 //   f3<int>; // error
 //     ^
 //
+// pkg/front_end/testcases/constructor_tearoffs/callable_instantiation.dart:61:19: Error: The static type of the explicit instantiation operand must be a generic function type but is 'Class?'.
+//  - 'Class' is from 'pkg/front_end/testcases/constructor_tearoffs/callable_instantiation.dart'.
+// Try changing the operand or remove the type arguments.
+// var topLevel3 = c2<int>; // error
+//                   ^
+//
+// pkg/front_end/testcases/constructor_tearoffs/callable_instantiation.dart:62:19: Error: The static type of the explicit instantiation operand must be a generic function type but is 'GetterCall'.
+//  - 'GetterCall' is from 'pkg/front_end/testcases/constructor_tearoffs/callable_instantiation.dart'.
+// Try changing the operand or remove the type arguments.
+// var topLevel4 = c3<int>; // error
+//                   ^
+//
+// pkg/front_end/testcases/constructor_tearoffs/callable_instantiation.dart:63:19: Error: The static type of the explicit instantiation operand must be a generic function type but is 'int?'.
+// Try changing the operand or remove the type arguments.
+// var topLevel5 = i2<int>; // error
+//                   ^
+//
+// pkg/front_end/testcases/constructor_tearoffs/callable_instantiation.dart:64:19: Error: The static type of the explicit instantiation operand must be a non-null generic function type but is 'void Function<T>()?'.
+// Try changing the operand or remove the type arguments.
+// var topLevel6 = f1<int>; // error
+//                   ^
+//
+// pkg/front_end/testcases/constructor_tearoffs/callable_instantiation.dart:65:18: Error: The static type of the explicit instantiation operand must be a generic function type but is 'Never'.
+// Try changing the operand or remove the type arguments.
+// var topLevel7 = n<int>; // error
+//                  ^
+//
+// pkg/front_end/testcases/constructor_tearoffs/callable_instantiation.dart:66:18: Error: The static type of the explicit instantiation operand must be a generic function type but is 'dynamic'.
+// Try changing the operand or remove the type arguments.
+// var topLevel8 = d<int>; // error
+//                  ^
+//
+// pkg/front_end/testcases/constructor_tearoffs/callable_instantiation.dart:67:18: Error: The static type of the explicit instantiation operand must be a generic function type but is 'String'.
+// Try changing the operand or remove the type arguments.
+// var topLevel9 = a<int>; // error
+//                  ^
+//
+// pkg/front_end/testcases/constructor_tearoffs/callable_instantiation.dart:68:19: Error: The static type of the explicit instantiation operand must be a generic function type but is 'double'.
+// Try changing the operand or remove the type arguments.
+// var topLevel10 = b<int>; // error
+//                   ^
+//
+// pkg/front_end/testcases/constructor_tearoffs/callable_instantiation.dart:69:19: Error: The static type of the explicit instantiation operand must be a generic function type but is 'bool'.
+// Try changing the operand or remove the type arguments.
+// var topLevel11 = c<int>; // error
+//                   ^
+//
+// pkg/front_end/testcases/constructor_tearoffs/callable_instantiation.dart:70:20: Error: The static type of the explicit instantiation operand must be a generic function type but is 'FutureOr<Class>'.
+//  - 'Class' is from 'pkg/front_end/testcases/constructor_tearoffs/callable_instantiation.dart'.
+// Try changing the operand or remove the type arguments.
+// var topLevel12 = f2<int>; // error
+//                    ^
+//
+// pkg/front_end/testcases/constructor_tearoffs/callable_instantiation.dart:71:20: Error: The static type of the explicit instantiation operand must be a generic function type but is 'Function'.
+//  - 'Function' is from 'dart:core'.
+// Try changing the operand or remove the type arguments.
+// var topLevel13 = f3<int>; // error
+//                    ^
+//
 import self as self;
 import "dart:core" as core;
 
@@ -107,6 +171,69 @@
   method call = self::Ambiguous2|call;
   tearoff call = self::Ambiguous2|get#call;
 }
+static field self::Class c1 = new self::Class::•();
+static field self::Class? c2;
+static field self::GetterCall c3 = new self::GetterCall::•();
+static field core::int i1 = 0;
+static field core::int? i2 = null;
+static field <T extends core::Object? = dynamic>() →? void f1 = null;
+static field Never n = throw "";
+static field dynamic d = null;
+static field core::String a = "";
+static field core::double b = 0.5;
+static field core::bool c = true;
+static field FutureOr<self::Class>f2 = new self::Class::•();
+static field core::Function f3 = () → Null {};
+static field () → dynamic topLevel1 = self::c1.{self::Class::call}{<T extends core::Object? = dynamic>() → dynamic}<core::int>;
+static field () → dynamic topLevel2 = self::Extension|get#call(self::i1)<core::int>;
+static field invalid-type topLevel3 = invalid-expression "pkg/front_end/testcases/constructor_tearoffs/callable_instantiation.dart:61:19: Error: The static type of the explicit instantiation operand must be a generic function type but is 'Class?'.
+ - 'Class' is from 'pkg/front_end/testcases/constructor_tearoffs/callable_instantiation.dart'.
+Try changing the operand or remove the type arguments.
+var topLevel3 = c2<int>; // error
+                  ^";
+static field invalid-type topLevel4 = invalid-expression "pkg/front_end/testcases/constructor_tearoffs/callable_instantiation.dart:62:19: Error: The static type of the explicit instantiation operand must be a generic function type but is 'GetterCall'.
+ - 'GetterCall' is from 'pkg/front_end/testcases/constructor_tearoffs/callable_instantiation.dart'.
+Try changing the operand or remove the type arguments.
+var topLevel4 = c3<int>; // error
+                  ^";
+static field invalid-type topLevel5 = invalid-expression "pkg/front_end/testcases/constructor_tearoffs/callable_instantiation.dart:63:19: Error: The static type of the explicit instantiation operand must be a generic function type but is 'int?'.
+Try changing the operand or remove the type arguments.
+var topLevel5 = i2<int>; // error
+                  ^";
+static field invalid-type topLevel6 = invalid-expression "pkg/front_end/testcases/constructor_tearoffs/callable_instantiation.dart:64:19: Error: The static type of the explicit instantiation operand must be a non-null generic function type but is 'void Function<T>()?'.
+Try changing the operand or remove the type arguments.
+var topLevel6 = f1<int>; // error
+                  ^";
+static field invalid-type topLevel7 = invalid-expression "pkg/front_end/testcases/constructor_tearoffs/callable_instantiation.dart:65:18: Error: The static type of the explicit instantiation operand must be a generic function type but is 'Never'.
+Try changing the operand or remove the type arguments.
+var topLevel7 = n<int>; // error
+                 ^";
+static field invalid-type topLevel8 = invalid-expression "pkg/front_end/testcases/constructor_tearoffs/callable_instantiation.dart:66:18: Error: The static type of the explicit instantiation operand must be a generic function type but is 'dynamic'.
+Try changing the operand or remove the type arguments.
+var topLevel8 = d<int>; // error
+                 ^";
+static field invalid-type topLevel9 = invalid-expression "pkg/front_end/testcases/constructor_tearoffs/callable_instantiation.dart:67:18: Error: The static type of the explicit instantiation operand must be a generic function type but is 'String'.
+Try changing the operand or remove the type arguments.
+var topLevel9 = a<int>; // error
+                 ^";
+static field invalid-type topLevel10 = invalid-expression "pkg/front_end/testcases/constructor_tearoffs/callable_instantiation.dart:68:19: Error: The static type of the explicit instantiation operand must be a generic function type but is 'double'.
+Try changing the operand or remove the type arguments.
+var topLevel10 = b<int>; // error
+                  ^";
+static field invalid-type topLevel11 = invalid-expression "pkg/front_end/testcases/constructor_tearoffs/callable_instantiation.dart:69:19: Error: The static type of the explicit instantiation operand must be a generic function type but is 'bool'.
+Try changing the operand or remove the type arguments.
+var topLevel11 = c<int>; // error
+                  ^";
+static field invalid-type topLevel12 = invalid-expression "pkg/front_end/testcases/constructor_tearoffs/callable_instantiation.dart:70:20: Error: The static type of the explicit instantiation operand must be a generic function type but is 'FutureOr<Class>'.
+ - 'Class' is from 'pkg/front_end/testcases/constructor_tearoffs/callable_instantiation.dart'.
+Try changing the operand or remove the type arguments.
+var topLevel12 = f2<int>; // error
+                   ^";
+static field invalid-type topLevel13 = invalid-expression "pkg/front_end/testcases/constructor_tearoffs/callable_instantiation.dart:71:20: Error: The static type of the explicit instantiation operand must be a generic function type but is 'Function'.
+ - 'Function' is from 'dart:core'.
+Try changing the operand or remove the type arguments.
+var topLevel13 = f3<int>; // error
+                   ^";
 static method method<T extends self::Class, S extends core::int>(self::Class c, core::int i, self::method::T t, self::method::S s) → dynamic {
   c.{self::Class::call}{<T extends core::Object? = dynamic>() → dynamic}<core::int>;
   self::Extension|get#call(i)<core::int>;
@@ -140,7 +267,10 @@
 Try changing the operand or remove the type arguments.
   s<int>; // error
    ^";
-  f1<core::int>;
+  invalid-expression "pkg/front_end/testcases/constructor_tearoffs/callable_instantiation.dart:35:5: Error: The static type of the explicit instantiation operand must be a non-null generic function type but is 'void Function<T>()?'.
+Try changing the operand or remove the type arguments.
+  f1<int>; // error
+    ^";
   invalid-expression "pkg/front_end/testcases/constructor_tearoffs/callable_instantiation.dart:36:4: Error: The static type of the explicit instantiation operand must be a generic function type but is 'Never'.
 Try changing the operand or remove the type arguments.
   n<int>; // error
diff --git a/pkg/front_end/testcases/constructor_tearoffs/callable_instantiation.dart.weak.outline.expect b/pkg/front_end/testcases/constructor_tearoffs/callable_instantiation.dart.weak.outline.expect
index a47d813..8f35528 100644
--- a/pkg/front_end/testcases/constructor_tearoffs/callable_instantiation.dart.weak.outline.expect
+++ b/pkg/front_end/testcases/constructor_tearoffs/callable_instantiation.dart.weak.outline.expect
@@ -34,6 +34,32 @@
   method call = self::Ambiguous2|call;
   tearoff call = self::Ambiguous2|get#call;
 }
+static field self::Class c1;
+static field self::Class? c2;
+static field self::GetterCall c3;
+static field core::int i1;
+static field core::int? i2;
+static field <T extends core::Object? = dynamic>() →? void f1;
+static field Never n;
+static field dynamic d;
+static field core::String a;
+static field core::double b;
+static field core::bool c;
+static field FutureOr<self::Class>f2;
+static field core::Function f3;
+static field () → dynamic topLevel1;
+static field () → dynamic topLevel2;
+static field invalid-type topLevel3;
+static field invalid-type topLevel4;
+static field invalid-type topLevel5;
+static field invalid-type topLevel6;
+static field invalid-type topLevel7;
+static field invalid-type topLevel8;
+static field invalid-type topLevel9;
+static field invalid-type topLevel10;
+static field invalid-type topLevel11;
+static field invalid-type topLevel12;
+static field invalid-type topLevel13;
 static method method<T extends self::Class, S extends core::int>(self::Class c, core::int i, self::method::T t, self::method::S s) → dynamic
   ;
 static method test<T extends self::Class?, S extends core::int>(self::Class? c1, self::GetterCall c2, core::int? i, self::test::T% t1, self::test::T? t2, self::test::S? s, <T extends core::Object? = dynamic>() →? void f1, Never n, dynamic d, core::String a, core::double b, core::bool c, FutureOr<self::Class>f2, core::Function f3) → dynamic
diff --git a/pkg/front_end/testcases/constructor_tearoffs/callable_instantiation.dart.weak.transformed.expect b/pkg/front_end/testcases/constructor_tearoffs/callable_instantiation.dart.weak.transformed.expect
index 2270689..bb11cff 100644
--- a/pkg/front_end/testcases/constructor_tearoffs/callable_instantiation.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/constructor_tearoffs/callable_instantiation.dart.weak.transformed.expect
@@ -34,6 +34,11 @@
 //   s<int>; // error
 //    ^
 //
+// pkg/front_end/testcases/constructor_tearoffs/callable_instantiation.dart:35:5: Error: The static type of the explicit instantiation operand must be a non-null generic function type but is 'void Function<T>()?'.
+// Try changing the operand or remove the type arguments.
+//   f1<int>; // error
+//     ^
+//
 // pkg/front_end/testcases/constructor_tearoffs/callable_instantiation.dart:36:4: Error: The static type of the explicit instantiation operand must be a generic function type but is 'Never'.
 // Try changing the operand or remove the type arguments.
 //   n<int>; // error
@@ -71,6 +76,65 @@
 //   f3<int>; // error
 //     ^
 //
+// pkg/front_end/testcases/constructor_tearoffs/callable_instantiation.dart:61:19: Error: The static type of the explicit instantiation operand must be a generic function type but is 'Class?'.
+//  - 'Class' is from 'pkg/front_end/testcases/constructor_tearoffs/callable_instantiation.dart'.
+// Try changing the operand or remove the type arguments.
+// var topLevel3 = c2<int>; // error
+//                   ^
+//
+// pkg/front_end/testcases/constructor_tearoffs/callable_instantiation.dart:62:19: Error: The static type of the explicit instantiation operand must be a generic function type but is 'GetterCall'.
+//  - 'GetterCall' is from 'pkg/front_end/testcases/constructor_tearoffs/callable_instantiation.dart'.
+// Try changing the operand or remove the type arguments.
+// var topLevel4 = c3<int>; // error
+//                   ^
+//
+// pkg/front_end/testcases/constructor_tearoffs/callable_instantiation.dart:63:19: Error: The static type of the explicit instantiation operand must be a generic function type but is 'int?'.
+// Try changing the operand or remove the type arguments.
+// var topLevel5 = i2<int>; // error
+//                   ^
+//
+// pkg/front_end/testcases/constructor_tearoffs/callable_instantiation.dart:64:19: Error: The static type of the explicit instantiation operand must be a non-null generic function type but is 'void Function<T>()?'.
+// Try changing the operand or remove the type arguments.
+// var topLevel6 = f1<int>; // error
+//                   ^
+//
+// pkg/front_end/testcases/constructor_tearoffs/callable_instantiation.dart:65:18: Error: The static type of the explicit instantiation operand must be a generic function type but is 'Never'.
+// Try changing the operand or remove the type arguments.
+// var topLevel7 = n<int>; // error
+//                  ^
+//
+// pkg/front_end/testcases/constructor_tearoffs/callable_instantiation.dart:66:18: Error: The static type of the explicit instantiation operand must be a generic function type but is 'dynamic'.
+// Try changing the operand or remove the type arguments.
+// var topLevel8 = d<int>; // error
+//                  ^
+//
+// pkg/front_end/testcases/constructor_tearoffs/callable_instantiation.dart:67:18: Error: The static type of the explicit instantiation operand must be a generic function type but is 'String'.
+// Try changing the operand or remove the type arguments.
+// var topLevel9 = a<int>; // error
+//                  ^
+//
+// pkg/front_end/testcases/constructor_tearoffs/callable_instantiation.dart:68:19: Error: The static type of the explicit instantiation operand must be a generic function type but is 'double'.
+// Try changing the operand or remove the type arguments.
+// var topLevel10 = b<int>; // error
+//                   ^
+//
+// pkg/front_end/testcases/constructor_tearoffs/callable_instantiation.dart:69:19: Error: The static type of the explicit instantiation operand must be a generic function type but is 'bool'.
+// Try changing the operand or remove the type arguments.
+// var topLevel11 = c<int>; // error
+//                   ^
+//
+// pkg/front_end/testcases/constructor_tearoffs/callable_instantiation.dart:70:20: Error: The static type of the explicit instantiation operand must be a generic function type but is 'FutureOr<Class>'.
+//  - 'Class' is from 'pkg/front_end/testcases/constructor_tearoffs/callable_instantiation.dart'.
+// Try changing the operand or remove the type arguments.
+// var topLevel12 = f2<int>; // error
+//                    ^
+//
+// pkg/front_end/testcases/constructor_tearoffs/callable_instantiation.dart:71:20: Error: The static type of the explicit instantiation operand must be a generic function type but is 'Function'.
+//  - 'Function' is from 'dart:core'.
+// Try changing the operand or remove the type arguments.
+// var topLevel13 = f3<int>; // error
+//                    ^
+//
 import self as self;
 import "dart:core" as core;
 
@@ -107,6 +171,69 @@
   method call = self::Ambiguous2|call;
   tearoff call = self::Ambiguous2|get#call;
 }
+static field self::Class c1 = new self::Class::•();
+static field self::Class? c2;
+static field self::GetterCall c3 = new self::GetterCall::•();
+static field core::int i1 = 0;
+static field core::int? i2 = null;
+static field <T extends core::Object? = dynamic>() →? void f1 = null;
+static field Never n = throw "";
+static field dynamic d = null;
+static field core::String a = "";
+static field core::double b = 0.5;
+static field core::bool c = true;
+static field FutureOr<self::Class>f2 = new self::Class::•();
+static field core::Function f3 = () → Null {};
+static field () → dynamic topLevel1 = self::c1.{self::Class::call}{<T extends core::Object? = dynamic>() → dynamic}<core::int>;
+static field () → dynamic topLevel2 = self::Extension|get#call(self::i1)<core::int>;
+static field invalid-type topLevel3 = invalid-expression "pkg/front_end/testcases/constructor_tearoffs/callable_instantiation.dart:61:19: Error: The static type of the explicit instantiation operand must be a generic function type but is 'Class?'.
+ - 'Class' is from 'pkg/front_end/testcases/constructor_tearoffs/callable_instantiation.dart'.
+Try changing the operand or remove the type arguments.
+var topLevel3 = c2<int>; // error
+                  ^";
+static field invalid-type topLevel4 = invalid-expression "pkg/front_end/testcases/constructor_tearoffs/callable_instantiation.dart:62:19: Error: The static type of the explicit instantiation operand must be a generic function type but is 'GetterCall'.
+ - 'GetterCall' is from 'pkg/front_end/testcases/constructor_tearoffs/callable_instantiation.dart'.
+Try changing the operand or remove the type arguments.
+var topLevel4 = c3<int>; // error
+                  ^";
+static field invalid-type topLevel5 = invalid-expression "pkg/front_end/testcases/constructor_tearoffs/callable_instantiation.dart:63:19: Error: The static type of the explicit instantiation operand must be a generic function type but is 'int?'.
+Try changing the operand or remove the type arguments.
+var topLevel5 = i2<int>; // error
+                  ^";
+static field invalid-type topLevel6 = invalid-expression "pkg/front_end/testcases/constructor_tearoffs/callable_instantiation.dart:64:19: Error: The static type of the explicit instantiation operand must be a non-null generic function type but is 'void Function<T>()?'.
+Try changing the operand or remove the type arguments.
+var topLevel6 = f1<int>; // error
+                  ^";
+static field invalid-type topLevel7 = invalid-expression "pkg/front_end/testcases/constructor_tearoffs/callable_instantiation.dart:65:18: Error: The static type of the explicit instantiation operand must be a generic function type but is 'Never'.
+Try changing the operand or remove the type arguments.
+var topLevel7 = n<int>; // error
+                 ^";
+static field invalid-type topLevel8 = invalid-expression "pkg/front_end/testcases/constructor_tearoffs/callable_instantiation.dart:66:18: Error: The static type of the explicit instantiation operand must be a generic function type but is 'dynamic'.
+Try changing the operand or remove the type arguments.
+var topLevel8 = d<int>; // error
+                 ^";
+static field invalid-type topLevel9 = invalid-expression "pkg/front_end/testcases/constructor_tearoffs/callable_instantiation.dart:67:18: Error: The static type of the explicit instantiation operand must be a generic function type but is 'String'.
+Try changing the operand or remove the type arguments.
+var topLevel9 = a<int>; // error
+                 ^";
+static field invalid-type topLevel10 = invalid-expression "pkg/front_end/testcases/constructor_tearoffs/callable_instantiation.dart:68:19: Error: The static type of the explicit instantiation operand must be a generic function type but is 'double'.
+Try changing the operand or remove the type arguments.
+var topLevel10 = b<int>; // error
+                  ^";
+static field invalid-type topLevel11 = invalid-expression "pkg/front_end/testcases/constructor_tearoffs/callable_instantiation.dart:69:19: Error: The static type of the explicit instantiation operand must be a generic function type but is 'bool'.
+Try changing the operand or remove the type arguments.
+var topLevel11 = c<int>; // error
+                  ^";
+static field invalid-type topLevel12 = invalid-expression "pkg/front_end/testcases/constructor_tearoffs/callable_instantiation.dart:70:20: Error: The static type of the explicit instantiation operand must be a generic function type but is 'FutureOr<Class>'.
+ - 'Class' is from 'pkg/front_end/testcases/constructor_tearoffs/callable_instantiation.dart'.
+Try changing the operand or remove the type arguments.
+var topLevel12 = f2<int>; // error
+                   ^";
+static field invalid-type topLevel13 = invalid-expression "pkg/front_end/testcases/constructor_tearoffs/callable_instantiation.dart:71:20: Error: The static type of the explicit instantiation operand must be a generic function type but is 'Function'.
+ - 'Function' is from 'dart:core'.
+Try changing the operand or remove the type arguments.
+var topLevel13 = f3<int>; // error
+                   ^";
 static method method<T extends self::Class, S extends core::int>(self::Class c, core::int i, self::method::T t, self::method::S s) → dynamic {
   c.{self::Class::call}{<T extends core::Object? = dynamic>() → dynamic}<core::int>;
   self::Extension|get#call(i)<core::int>;
@@ -140,7 +267,10 @@
 Try changing the operand or remove the type arguments.
   s<int>; // error
    ^";
-  f1<core::int>;
+  invalid-expression "pkg/front_end/testcases/constructor_tearoffs/callable_instantiation.dart:35:5: Error: The static type of the explicit instantiation operand must be a non-null generic function type but is 'void Function<T>()?'.
+Try changing the operand or remove the type arguments.
+  f1<int>; // error
+    ^";
   invalid-expression "pkg/front_end/testcases/constructor_tearoffs/callable_instantiation.dart:36:4: Error: The static type of the explicit instantiation operand must be a generic function type but is 'Never'.
 Try changing the operand or remove the type arguments.
   n<int>; // error
diff --git a/pkg/front_end/testcases/extension_types/type_variable_in_static_context.dart b/pkg/front_end/testcases/extension_types/type_variable_in_static_context.dart
new file mode 100644
index 0000000..42f48cf
--- /dev/null
+++ b/pkg/front_end/testcases/extension_types/type_variable_in_static_context.dart
@@ -0,0 +1,16 @@
+// 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.
+
+extension type A<T> on Class<T> {}
+
+class Class<T> {
+  static A<T>? method1(A<T> arg) {
+    A<T>? local;
+  }
+  static A<A<T>>? method2(A<A<T>> arg) {
+    A<A<T>>? local;
+  }
+}
+
+main() {}
\ No newline at end of file
diff --git a/pkg/front_end/testcases/extension_types/type_variable_in_static_context.dart.strong.expect b/pkg/front_end/testcases/extension_types/type_variable_in_static_context.dart.strong.expect
new file mode 100644
index 0000000..7f95ca4
--- /dev/null
+++ b/pkg/front_end/testcases/extension_types/type_variable_in_static_context.dart.strong.expect
@@ -0,0 +1,45 @@
+library /*isNonNullableByDefault*/;
+//
+// Problems in library:
+//
+// pkg/front_end/testcases/extension_types/type_variable_in_static_context.dart:8:26: Error: Type variables can't be used in static members.
+//   static A<T>? method1(A<T> arg) {
+//                          ^
+//
+// pkg/front_end/testcases/extension_types/type_variable_in_static_context.dart:8:12: Error: Type variables can't be used in static members.
+//   static A<T>? method1(A<T> arg) {
+//            ^
+//
+// pkg/front_end/testcases/extension_types/type_variable_in_static_context.dart:11:31: Error: Type variables can't be used in static members.
+//   static A<A<T>>? method2(A<A<T>> arg) {
+//                               ^
+//
+// pkg/front_end/testcases/extension_types/type_variable_in_static_context.dart:11:14: Error: Type variables can't be used in static members.
+//   static A<A<T>>? method2(A<A<T>> arg) {
+//              ^
+//
+// pkg/front_end/testcases/extension_types/type_variable_in_static_context.dart:9:7: Error: Type variables can't be used in static members.
+//     A<T>? local;
+//       ^
+//
+// pkg/front_end/testcases/extension_types/type_variable_in_static_context.dart:12:9: Error: Type variables can't be used in static members.
+//     A<A<T>>? local;
+//         ^
+//
+import self as self;
+import "dart:core" as core;
+
+class Class<T extends core::Object? = dynamic> extends core::Object {
+  synthetic constructor •() → self::Class<self::Class::T%>
+    : super core::Object::•()
+    ;
+  static method method1(self::A<invalid-type> arg) → self::A<invalid-type>? {
+    self::A<invalid-type>? local;
+  }
+  static method method2(self::A<self::A<invalid-type>> arg) → self::A<self::A<invalid-type>>? {
+    self::A<self::A<invalid-type>>? local;
+  }
+}
+extension type A<T extends core::Object? = dynamic> on self::Class<T%> {
+}
+static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/extension_types/type_variable_in_static_context.dart.textual_outline.expect b/pkg/front_end/testcases/extension_types/type_variable_in_static_context.dart.textual_outline.expect
new file mode 100644
index 0000000..06ad37b
--- /dev/null
+++ b/pkg/front_end/testcases/extension_types/type_variable_in_static_context.dart.textual_outline.expect
@@ -0,0 +1,6 @@
+extension type A<T> on Class<T> {}
+class Class<T> {
+  static A<T>? method1(A<T> arg) {}
+  static A<A<T>>? method2(A<A<T>> arg) {}
+}
+main() {}
diff --git a/pkg/front_end/testcases/extension_types/type_variable_in_static_context.dart.weak.expect b/pkg/front_end/testcases/extension_types/type_variable_in_static_context.dart.weak.expect
new file mode 100644
index 0000000..7f95ca4
--- /dev/null
+++ b/pkg/front_end/testcases/extension_types/type_variable_in_static_context.dart.weak.expect
@@ -0,0 +1,45 @@
+library /*isNonNullableByDefault*/;
+//
+// Problems in library:
+//
+// pkg/front_end/testcases/extension_types/type_variable_in_static_context.dart:8:26: Error: Type variables can't be used in static members.
+//   static A<T>? method1(A<T> arg) {
+//                          ^
+//
+// pkg/front_end/testcases/extension_types/type_variable_in_static_context.dart:8:12: Error: Type variables can't be used in static members.
+//   static A<T>? method1(A<T> arg) {
+//            ^
+//
+// pkg/front_end/testcases/extension_types/type_variable_in_static_context.dart:11:31: Error: Type variables can't be used in static members.
+//   static A<A<T>>? method2(A<A<T>> arg) {
+//                               ^
+//
+// pkg/front_end/testcases/extension_types/type_variable_in_static_context.dart:11:14: Error: Type variables can't be used in static members.
+//   static A<A<T>>? method2(A<A<T>> arg) {
+//              ^
+//
+// pkg/front_end/testcases/extension_types/type_variable_in_static_context.dart:9:7: Error: Type variables can't be used in static members.
+//     A<T>? local;
+//       ^
+//
+// pkg/front_end/testcases/extension_types/type_variable_in_static_context.dart:12:9: Error: Type variables can't be used in static members.
+//     A<A<T>>? local;
+//         ^
+//
+import self as self;
+import "dart:core" as core;
+
+class Class<T extends core::Object? = dynamic> extends core::Object {
+  synthetic constructor •() → self::Class<self::Class::T%>
+    : super core::Object::•()
+    ;
+  static method method1(self::A<invalid-type> arg) → self::A<invalid-type>? {
+    self::A<invalid-type>? local;
+  }
+  static method method2(self::A<self::A<invalid-type>> arg) → self::A<self::A<invalid-type>>? {
+    self::A<self::A<invalid-type>>? local;
+  }
+}
+extension type A<T extends core::Object? = dynamic> on self::Class<T%> {
+}
+static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/extension_types/type_variable_in_static_context.dart.weak.outline.expect b/pkg/front_end/testcases/extension_types/type_variable_in_static_context.dart.weak.outline.expect
new file mode 100644
index 0000000..9dda330
--- /dev/null
+++ b/pkg/front_end/testcases/extension_types/type_variable_in_static_context.dart.weak.outline.expect
@@ -0,0 +1,35 @@
+library /*isNonNullableByDefault*/;
+//
+// Problems in library:
+//
+// pkg/front_end/testcases/extension_types/type_variable_in_static_context.dart:8:26: Error: Type variables can't be used in static members.
+//   static A<T>? method1(A<T> arg) {
+//                          ^
+//
+// pkg/front_end/testcases/extension_types/type_variable_in_static_context.dart:8:12: Error: Type variables can't be used in static members.
+//   static A<T>? method1(A<T> arg) {
+//            ^
+//
+// pkg/front_end/testcases/extension_types/type_variable_in_static_context.dart:11:31: Error: Type variables can't be used in static members.
+//   static A<A<T>>? method2(A<A<T>> arg) {
+//                               ^
+//
+// pkg/front_end/testcases/extension_types/type_variable_in_static_context.dart:11:14: Error: Type variables can't be used in static members.
+//   static A<A<T>>? method2(A<A<T>> arg) {
+//              ^
+//
+import self as self;
+import "dart:core" as core;
+
+class Class<T extends core::Object? = dynamic> extends core::Object {
+  synthetic constructor •() → self::Class<self::Class::T%>
+    ;
+  static method method1(self::A<invalid-type> arg) → self::A<invalid-type>?
+    ;
+  static method method2(self::A<self::A<invalid-type>> arg) → self::A<self::A<invalid-type>>?
+    ;
+}
+extension type A<T extends core::Object? = dynamic> on self::Class<T%> {
+}
+static method main() → dynamic
+  ;
diff --git a/pkg/front_end/testcases/extensions/extension_field_with_type_parameter_usage.dart b/pkg/front_end/testcases/extensions/extension_field_with_type_parameter_usage.dart
index ef9d43c..2d4605b 100644
--- a/pkg/front_end/testcases/extensions/extension_field_with_type_parameter_usage.dart
+++ b/pkg/front_end/testcases/extensions/extension_field_with_type_parameter_usage.dart
@@ -1,15 +1,16 @@
 // Copyright (c) 2020, the Dart project authors.  Please see the AUTHORS file
 // for details. All rights reserved. Use of this source code is governed by a
 // BSD-style license that can be found in the LICENSE file.
-// @dart=2.9
+
 extension E<U> on String {
   U field1 = null;
-  int field2 = () { U x = null; return null; }();
-  List<U> field3 = null;
-  U Function(U) field4 = null;
-  List<U> Function(List<U>) field5 = null;
-  int field6 = <E>() { E x = null; return null; }<String>();
-  int field7 = <E>() { E x = null; return null; }<U>();
+  int? field2 = () { U x = null; return null; }();
+  List<U>? field3 = null;
+  U Function(U)? field4 = null;
+  List<U> Function(List<U>)? field5 = null;
+  int? field6 = <E>() { E? x = null; return null; }<String>();
+  int? field7 = <E>() { E? x = null; return null; }<U>();
+  Type field8 = U;
 }
 
 main() {}
\ No newline at end of file
diff --git a/pkg/front_end/testcases/extensions/extension_field_with_type_parameter_usage.dart.textual_outline.expect b/pkg/front_end/testcases/extensions/extension_field_with_type_parameter_usage.dart.textual_outline.expect
index d1f6d15..ded570a 100644
--- a/pkg/front_end/testcases/extensions/extension_field_with_type_parameter_usage.dart.textual_outline.expect
+++ b/pkg/front_end/testcases/extensions/extension_field_with_type_parameter_usage.dart.textual_outline.expect
@@ -1,11 +1,11 @@
-// @dart = 2.9
 extension E<U> on String {
   U field1 = null;
-  int field2 = () { U x = null; return null; }();
-  List<U> field3 = null;
-  U Function(U) field4 = null;
-  List<U> Function(List<U>) field5 = null;
-  int field6 = <E>() { E x = null; return null; }<String>();
-  int field7 = <E>() { E x = null; return null; }<U>();
+  int? field2 = () { U x = null; return null; }();
+  List<U>? field3 = null;
+  U Function(U)? field4 = null;
+  List<U> Function(List<U>)? field5 = null;
+  int? field6 = <E>() { E? x = null; return null; }<String>();
+  int? field7 = <E>() { E? x = null; return null; }<U>();
+  Type field8 = U;
 }
 main() {}
diff --git a/pkg/front_end/testcases/extensions/extension_field_with_type_parameter_usage.dart.weak.expect b/pkg/front_end/testcases/extensions/extension_field_with_type_parameter_usage.dart.weak.expect
index 3578f8e..1539e4a 100644
--- a/pkg/front_end/testcases/extensions/extension_field_with_type_parameter_usage.dart.weak.expect
+++ b/pkg/front_end/testcases/extensions/extension_field_with_type_parameter_usage.dart.weak.expect
@@ -1,4 +1,4 @@
-library;
+library /*isNonNullableByDefault*/;
 //
 // Problems in library:
 //
@@ -7,72 +7,45 @@
 //   U field1 = null;
 //     ^^^^^^
 //
-// pkg/front_end/testcases/extensions/extension_field_with_type_parameter_usage.dart:7:7: Error: Extensions can't declare instance fields
+// pkg/front_end/testcases/extensions/extension_field_with_type_parameter_usage.dart:7:8: Error: Extensions can't declare instance fields
 // Try removing the field declaration or making it a static field
-//   int field2 = () { U x = null; return null; }();
-//       ^^^^^^
+//   int? field2 = () { U x = null; return null; }();
+//        ^^^^^^
 //
-// pkg/front_end/testcases/extensions/extension_field_with_type_parameter_usage.dart:8:11: Error: Extensions can't declare instance fields
+// pkg/front_end/testcases/extensions/extension_field_with_type_parameter_usage.dart:8:12: Error: Extensions can't declare instance fields
 // Try removing the field declaration or making it a static field
-//   List<U> field3 = null;
-//           ^^^^^^
+//   List<U>? field3 = null;
+//            ^^^^^^
 //
-// pkg/front_end/testcases/extensions/extension_field_with_type_parameter_usage.dart:9:17: Error: Extensions can't declare instance fields
+// pkg/front_end/testcases/extensions/extension_field_with_type_parameter_usage.dart:9:18: Error: Extensions can't declare instance fields
 // Try removing the field declaration or making it a static field
-//   U Function(U) field4 = null;
-//                 ^^^^^^
+//   U Function(U)? field4 = null;
+//                  ^^^^^^
 //
-// pkg/front_end/testcases/extensions/extension_field_with_type_parameter_usage.dart:10:29: Error: Extensions can't declare instance fields
+// pkg/front_end/testcases/extensions/extension_field_with_type_parameter_usage.dart:10:30: Error: Extensions can't declare instance fields
 // Try removing the field declaration or making it a static field
-//   List<U> Function(List<U>) field5 = null;
-//                             ^^^^^^
+//   List<U> Function(List<U>)? field5 = null;
+//                              ^^^^^^
 //
-// pkg/front_end/testcases/extensions/extension_field_with_type_parameter_usage.dart:11:7: Error: Extensions can't declare instance fields
+// pkg/front_end/testcases/extensions/extension_field_with_type_parameter_usage.dart:11:8: Error: Extensions can't declare instance fields
 // Try removing the field declaration or making it a static field
-//   int field6 = <E>() { E x = null; return null; }<String>();
-//       ^^^^^^
+//   int? field6 = <E>() { E? x = null; return null; }<String>();
+//        ^^^^^^
 //
-// pkg/front_end/testcases/extensions/extension_field_with_type_parameter_usage.dart:12:7: Error: Extensions can't declare instance fields
+// pkg/front_end/testcases/extensions/extension_field_with_type_parameter_usage.dart:12:8: Error: Extensions can't declare instance fields
 // Try removing the field declaration or making it a static field
-//   int field7 = <E>() { E x = null; return null; }<U>();
-//       ^^^^^^
+//   int? field7 = <E>() { E? x = null; return null; }<U>();
+//        ^^^^^^
 //
-// pkg/front_end/testcases/extensions/extension_field_with_type_parameter_usage.dart:6:3: Error: Type variables can't be used in static members.
-//   U field1 = null;
-//   ^
-//
-// pkg/front_end/testcases/extensions/extension_field_with_type_parameter_usage.dart:8:8: Error: Type variables can't be used in static members.
-//   List<U> field3 = null;
-//        ^
-//
-// pkg/front_end/testcases/extensions/extension_field_with_type_parameter_usage.dart:9:3: Error: Type variables can't be used in static members.
-//   U Function(U) field4 = null;
-//   ^
-//
-// pkg/front_end/testcases/extensions/extension_field_with_type_parameter_usage.dart:9:14: Error: Type variables can't be used in static members.
-//   U Function(U) field4 = null;
-//              ^
-//
-// pkg/front_end/testcases/extensions/extension_field_with_type_parameter_usage.dart:10:8: Error: Type variables can't be used in static members.
-//   List<U> Function(List<U>) field5 = null;
-//        ^
-//
-// pkg/front_end/testcases/extensions/extension_field_with_type_parameter_usage.dart:10:25: Error: Type variables can't be used in static members.
-//   List<U> Function(List<U>) field5 = null;
-//                         ^
-//
-// pkg/front_end/testcases/extensions/extension_field_with_type_parameter_usage.dart:7:21: Error: Type variables can't be used in static members.
-//   int field2 = () { U x = null; return null; }();
-//                     ^
-//
-// pkg/front_end/testcases/extensions/extension_field_with_type_parameter_usage.dart:12:51: Error: Type variables can't be used in static members.
-//   int field7 = <E>() { E x = null; return null; }<U>();
-//                                                   ^
+// pkg/front_end/testcases/extensions/extension_field_with_type_parameter_usage.dart:13:8: Error: Extensions can't declare instance fields
+// Try removing the field declaration or making it a static field
+//   Type field8 = U;
+//        ^^^^^^
 //
 import self as self;
 import "dart:core" as core;
 
-extension E<U extends core::Object* = dynamic> on core::String* {
+extension E<U extends core::Object? = dynamic> on core::String {
   field field1 = self::E|field1;
   field field2 = self::E|field2;
   field field3 = self::E|field3;
@@ -80,21 +53,27 @@
   field field5 = self::E|field5;
   field field6 = self::E|field6;
   field field7 = self::E|field7;
+  field field8 = self::E|field8;
 }
 static field invalid-type E|field1 = null;
-static field core::int* E|field2 = (() → Null {
+static field core::int? E|field2 = (() → Null {
   invalid-type x = null;
   return null;
-})(){() →* Null};
-static field core::List<invalid-type>* E|field3 = null;
-static field (invalid-type) →* invalid-type E|field4 = null;
-static field (core::List<invalid-type>*) →* core::List<invalid-type>* E|field5 = null;
-static field core::int* E|field6 = (<E extends core::Object* = dynamic>() → Null {
-  E* x = null;
+})(){() → Null};
+static field core::List<invalid-type>? E|field3 = null;
+static field (invalid-type) →? invalid-type E|field4 = null;
+static field (core::List<invalid-type>) →? core::List<invalid-type> E|field5 = null;
+static field core::int? E|field6 = (<E extends core::Object? = dynamic>() → Null {
+  E? x = null;
   return null;
-})<core::String*>(){() →* Null};
-static field core::int* E|field7 = (<E extends core::Object* = dynamic>() → Null {
-  E* x = null;
+})<core::String>(){() → Null};
+static field core::int? E|field7 = (<E extends core::Object? = dynamic>() → Null {
+  E? x = null;
   return null;
-})<invalid-type>(){() →* Null};
+})<invalid-type>(){() → Null};
+static field core::Type E|field8 = #C1;
 static method main() → dynamic {}
+
+constants  {
+  #C1 = TypeLiteralConstant(invalid-type)
+}
diff --git a/pkg/front_end/testcases/extensions/extension_field_with_type_parameter_usage.dart.weak.outline.expect b/pkg/front_end/testcases/extensions/extension_field_with_type_parameter_usage.dart.weak.outline.expect
index a1e7455..3ff507f 100644
--- a/pkg/front_end/testcases/extensions/extension_field_with_type_parameter_usage.dart.weak.outline.expect
+++ b/pkg/front_end/testcases/extensions/extension_field_with_type_parameter_usage.dart.weak.outline.expect
@@ -1,4 +1,4 @@
-library;
+library /*isNonNullableByDefault*/;
 //
 // Problems in library:
 //
@@ -7,64 +7,45 @@
 //   U field1 = null;
 //     ^^^^^^
 //
-// pkg/front_end/testcases/extensions/extension_field_with_type_parameter_usage.dart:7:7: Error: Extensions can't declare instance fields
+// pkg/front_end/testcases/extensions/extension_field_with_type_parameter_usage.dart:7:8: Error: Extensions can't declare instance fields
 // Try removing the field declaration or making it a static field
-//   int field2 = () { U x = null; return null; }();
-//       ^^^^^^
+//   int? field2 = () { U x = null; return null; }();
+//        ^^^^^^
 //
-// pkg/front_end/testcases/extensions/extension_field_with_type_parameter_usage.dart:8:11: Error: Extensions can't declare instance fields
+// pkg/front_end/testcases/extensions/extension_field_with_type_parameter_usage.dart:8:12: Error: Extensions can't declare instance fields
 // Try removing the field declaration or making it a static field
-//   List<U> field3 = null;
-//           ^^^^^^
+//   List<U>? field3 = null;
+//            ^^^^^^
 //
-// pkg/front_end/testcases/extensions/extension_field_with_type_parameter_usage.dart:9:17: Error: Extensions can't declare instance fields
+// pkg/front_end/testcases/extensions/extension_field_with_type_parameter_usage.dart:9:18: Error: Extensions can't declare instance fields
 // Try removing the field declaration or making it a static field
-//   U Function(U) field4 = null;
-//                 ^^^^^^
+//   U Function(U)? field4 = null;
+//                  ^^^^^^
 //
-// pkg/front_end/testcases/extensions/extension_field_with_type_parameter_usage.dart:10:29: Error: Extensions can't declare instance fields
+// pkg/front_end/testcases/extensions/extension_field_with_type_parameter_usage.dart:10:30: Error: Extensions can't declare instance fields
 // Try removing the field declaration or making it a static field
-//   List<U> Function(List<U>) field5 = null;
-//                             ^^^^^^
+//   List<U> Function(List<U>)? field5 = null;
+//                              ^^^^^^
 //
-// pkg/front_end/testcases/extensions/extension_field_with_type_parameter_usage.dart:11:7: Error: Extensions can't declare instance fields
+// pkg/front_end/testcases/extensions/extension_field_with_type_parameter_usage.dart:11:8: Error: Extensions can't declare instance fields
 // Try removing the field declaration or making it a static field
-//   int field6 = <E>() { E x = null; return null; }<String>();
-//       ^^^^^^
+//   int? field6 = <E>() { E? x = null; return null; }<String>();
+//        ^^^^^^
 //
-// pkg/front_end/testcases/extensions/extension_field_with_type_parameter_usage.dart:12:7: Error: Extensions can't declare instance fields
+// pkg/front_end/testcases/extensions/extension_field_with_type_parameter_usage.dart:12:8: Error: Extensions can't declare instance fields
 // Try removing the field declaration or making it a static field
-//   int field7 = <E>() { E x = null; return null; }<U>();
-//       ^^^^^^
+//   int? field7 = <E>() { E? x = null; return null; }<U>();
+//        ^^^^^^
 //
-// pkg/front_end/testcases/extensions/extension_field_with_type_parameter_usage.dart:6:3: Error: Type variables can't be used in static members.
-//   U field1 = null;
-//   ^
-//
-// pkg/front_end/testcases/extensions/extension_field_with_type_parameter_usage.dart:8:8: Error: Type variables can't be used in static members.
-//   List<U> field3 = null;
-//        ^
-//
-// pkg/front_end/testcases/extensions/extension_field_with_type_parameter_usage.dart:9:3: Error: Type variables can't be used in static members.
-//   U Function(U) field4 = null;
-//   ^
-//
-// pkg/front_end/testcases/extensions/extension_field_with_type_parameter_usage.dart:9:14: Error: Type variables can't be used in static members.
-//   U Function(U) field4 = null;
-//              ^
-//
-// pkg/front_end/testcases/extensions/extension_field_with_type_parameter_usage.dart:10:8: Error: Type variables can't be used in static members.
-//   List<U> Function(List<U>) field5 = null;
-//        ^
-//
-// pkg/front_end/testcases/extensions/extension_field_with_type_parameter_usage.dart:10:25: Error: Type variables can't be used in static members.
-//   List<U> Function(List<U>) field5 = null;
-//                         ^
+// pkg/front_end/testcases/extensions/extension_field_with_type_parameter_usage.dart:13:8: Error: Extensions can't declare instance fields
+// Try removing the field declaration or making it a static field
+//   Type field8 = U;
+//        ^^^^^^
 //
 import self as self;
 import "dart:core" as core;
 
-extension E<U extends core::Object* = dynamic> on core::String* {
+extension E<U extends core::Object? = dynamic> on core::String {
   field field1 = self::E|field1;
   field field2 = self::E|field2;
   field field3 = self::E|field3;
@@ -72,13 +53,15 @@
   field field5 = self::E|field5;
   field field6 = self::E|field6;
   field field7 = self::E|field7;
+  field field8 = self::E|field8;
 }
 static field invalid-type E|field1;
-static field core::int* E|field2;
-static field core::List<invalid-type>* E|field3;
-static field (invalid-type) →* invalid-type E|field4;
-static field (core::List<invalid-type>*) →* core::List<invalid-type>* E|field5;
-static field core::int* E|field6;
-static field core::int* E|field7;
+static field core::int? E|field2;
+static field core::List<invalid-type>? E|field3;
+static field (invalid-type) →? invalid-type E|field4;
+static field (core::List<invalid-type>) →? core::List<invalid-type> E|field5;
+static field core::int? E|field6;
+static field core::int? E|field7;
+static field core::Type E|field8;
 static method main() → dynamic
   ;
diff --git a/pkg/front_end/testcases/extensions/extension_field_with_type_parameter_usage.dart.weak.transformed.expect b/pkg/front_end/testcases/extensions/extension_field_with_type_parameter_usage.dart.weak.transformed.expect
index 3578f8e..1539e4a 100644
--- a/pkg/front_end/testcases/extensions/extension_field_with_type_parameter_usage.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/extensions/extension_field_with_type_parameter_usage.dart.weak.transformed.expect
@@ -1,4 +1,4 @@
-library;
+library /*isNonNullableByDefault*/;
 //
 // Problems in library:
 //
@@ -7,72 +7,45 @@
 //   U field1 = null;
 //     ^^^^^^
 //
-// pkg/front_end/testcases/extensions/extension_field_with_type_parameter_usage.dart:7:7: Error: Extensions can't declare instance fields
+// pkg/front_end/testcases/extensions/extension_field_with_type_parameter_usage.dart:7:8: Error: Extensions can't declare instance fields
 // Try removing the field declaration or making it a static field
-//   int field2 = () { U x = null; return null; }();
-//       ^^^^^^
+//   int? field2 = () { U x = null; return null; }();
+//        ^^^^^^
 //
-// pkg/front_end/testcases/extensions/extension_field_with_type_parameter_usage.dart:8:11: Error: Extensions can't declare instance fields
+// pkg/front_end/testcases/extensions/extension_field_with_type_parameter_usage.dart:8:12: Error: Extensions can't declare instance fields
 // Try removing the field declaration or making it a static field
-//   List<U> field3 = null;
-//           ^^^^^^
+//   List<U>? field3 = null;
+//            ^^^^^^
 //
-// pkg/front_end/testcases/extensions/extension_field_with_type_parameter_usage.dart:9:17: Error: Extensions can't declare instance fields
+// pkg/front_end/testcases/extensions/extension_field_with_type_parameter_usage.dart:9:18: Error: Extensions can't declare instance fields
 // Try removing the field declaration or making it a static field
-//   U Function(U) field4 = null;
-//                 ^^^^^^
+//   U Function(U)? field4 = null;
+//                  ^^^^^^
 //
-// pkg/front_end/testcases/extensions/extension_field_with_type_parameter_usage.dart:10:29: Error: Extensions can't declare instance fields
+// pkg/front_end/testcases/extensions/extension_field_with_type_parameter_usage.dart:10:30: Error: Extensions can't declare instance fields
 // Try removing the field declaration or making it a static field
-//   List<U> Function(List<U>) field5 = null;
-//                             ^^^^^^
+//   List<U> Function(List<U>)? field5 = null;
+//                              ^^^^^^
 //
-// pkg/front_end/testcases/extensions/extension_field_with_type_parameter_usage.dart:11:7: Error: Extensions can't declare instance fields
+// pkg/front_end/testcases/extensions/extension_field_with_type_parameter_usage.dart:11:8: Error: Extensions can't declare instance fields
 // Try removing the field declaration or making it a static field
-//   int field6 = <E>() { E x = null; return null; }<String>();
-//       ^^^^^^
+//   int? field6 = <E>() { E? x = null; return null; }<String>();
+//        ^^^^^^
 //
-// pkg/front_end/testcases/extensions/extension_field_with_type_parameter_usage.dart:12:7: Error: Extensions can't declare instance fields
+// pkg/front_end/testcases/extensions/extension_field_with_type_parameter_usage.dart:12:8: Error: Extensions can't declare instance fields
 // Try removing the field declaration or making it a static field
-//   int field7 = <E>() { E x = null; return null; }<U>();
-//       ^^^^^^
+//   int? field7 = <E>() { E? x = null; return null; }<U>();
+//        ^^^^^^
 //
-// pkg/front_end/testcases/extensions/extension_field_with_type_parameter_usage.dart:6:3: Error: Type variables can't be used in static members.
-//   U field1 = null;
-//   ^
-//
-// pkg/front_end/testcases/extensions/extension_field_with_type_parameter_usage.dart:8:8: Error: Type variables can't be used in static members.
-//   List<U> field3 = null;
-//        ^
-//
-// pkg/front_end/testcases/extensions/extension_field_with_type_parameter_usage.dart:9:3: Error: Type variables can't be used in static members.
-//   U Function(U) field4 = null;
-//   ^
-//
-// pkg/front_end/testcases/extensions/extension_field_with_type_parameter_usage.dart:9:14: Error: Type variables can't be used in static members.
-//   U Function(U) field4 = null;
-//              ^
-//
-// pkg/front_end/testcases/extensions/extension_field_with_type_parameter_usage.dart:10:8: Error: Type variables can't be used in static members.
-//   List<U> Function(List<U>) field5 = null;
-//        ^
-//
-// pkg/front_end/testcases/extensions/extension_field_with_type_parameter_usage.dart:10:25: Error: Type variables can't be used in static members.
-//   List<U> Function(List<U>) field5 = null;
-//                         ^
-//
-// pkg/front_end/testcases/extensions/extension_field_with_type_parameter_usage.dart:7:21: Error: Type variables can't be used in static members.
-//   int field2 = () { U x = null; return null; }();
-//                     ^
-//
-// pkg/front_end/testcases/extensions/extension_field_with_type_parameter_usage.dart:12:51: Error: Type variables can't be used in static members.
-//   int field7 = <E>() { E x = null; return null; }<U>();
-//                                                   ^
+// pkg/front_end/testcases/extensions/extension_field_with_type_parameter_usage.dart:13:8: Error: Extensions can't declare instance fields
+// Try removing the field declaration or making it a static field
+//   Type field8 = U;
+//        ^^^^^^
 //
 import self as self;
 import "dart:core" as core;
 
-extension E<U extends core::Object* = dynamic> on core::String* {
+extension E<U extends core::Object? = dynamic> on core::String {
   field field1 = self::E|field1;
   field field2 = self::E|field2;
   field field3 = self::E|field3;
@@ -80,21 +53,27 @@
   field field5 = self::E|field5;
   field field6 = self::E|field6;
   field field7 = self::E|field7;
+  field field8 = self::E|field8;
 }
 static field invalid-type E|field1 = null;
-static field core::int* E|field2 = (() → Null {
+static field core::int? E|field2 = (() → Null {
   invalid-type x = null;
   return null;
-})(){() →* Null};
-static field core::List<invalid-type>* E|field3 = null;
-static field (invalid-type) →* invalid-type E|field4 = null;
-static field (core::List<invalid-type>*) →* core::List<invalid-type>* E|field5 = null;
-static field core::int* E|field6 = (<E extends core::Object* = dynamic>() → Null {
-  E* x = null;
+})(){() → Null};
+static field core::List<invalid-type>? E|field3 = null;
+static field (invalid-type) →? invalid-type E|field4 = null;
+static field (core::List<invalid-type>) →? core::List<invalid-type> E|field5 = null;
+static field core::int? E|field6 = (<E extends core::Object? = dynamic>() → Null {
+  E? x = null;
   return null;
-})<core::String*>(){() →* Null};
-static field core::int* E|field7 = (<E extends core::Object* = dynamic>() → Null {
-  E* x = null;
+})<core::String>(){() → Null};
+static field core::int? E|field7 = (<E extends core::Object? = dynamic>() → Null {
+  E? x = null;
   return null;
-})<invalid-type>(){() →* Null};
+})<invalid-type>(){() → Null};
+static field core::Type E|field8 = #C1;
 static method main() → dynamic {}
+
+constants  {
+  #C1 = TypeLiteralConstant(invalid-type)
+}
diff --git a/pkg/front_end/testcases/general/enum_names_from_core.dart b/pkg/front_end/testcases/general/enum_names_from_core.dart
new file mode 100644
index 0000000..9500f1c
--- /dev/null
+++ b/pkg/front_end/testcases/general/enum_names_from_core.dart
@@ -0,0 +1,23 @@
+// 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 int {}
+
+class Object {}
+
+class String {}
+
+class _Enum {}
+
+class List {}
+
+enum E {
+  int,
+  Object,
+  String,
+  _Enum,
+  List,
+}
+
+main() {}
diff --git a/pkg/front_end/testcases/general/enum_names_from_core.dart.textual_outline.expect b/pkg/front_end/testcases/general/enum_names_from_core.dart.textual_outline.expect
new file mode 100644
index 0000000..ba503dc
--- /dev/null
+++ b/pkg/front_end/testcases/general/enum_names_from_core.dart.textual_outline.expect
@@ -0,0 +1,18 @@
+class int {}
+
+class Object {}
+
+class String {}
+
+class _Enum {}
+
+class List {}
+
+enum E {
+  int,
+  Object,
+  String,
+  _Enum,
+  List,
+}
+main() {}
diff --git a/pkg/front_end/testcases/general/enum_names_from_core.dart.textual_outline_modelled.expect b/pkg/front_end/testcases/general/enum_names_from_core.dart.textual_outline_modelled.expect
new file mode 100644
index 0000000..361bcb3
--- /dev/null
+++ b/pkg/front_end/testcases/general/enum_names_from_core.dart.textual_outline_modelled.expect
@@ -0,0 +1,18 @@
+class List {}
+
+class Object {}
+
+class String {}
+
+class _Enum {}
+
+class int {}
+
+enum E {
+  int,
+  Object,
+  String,
+  _Enum,
+  List,
+}
+main() {}
diff --git a/pkg/front_end/testcases/general/enum_names_from_core.dart.weak.expect b/pkg/front_end/testcases/general/enum_names_from_core.dart.weak.expect
new file mode 100644
index 0000000..f367499
--- /dev/null
+++ b/pkg/front_end/testcases/general/enum_names_from_core.dart.weak.expect
@@ -0,0 +1,69 @@
+library /*isNonNullableByDefault*/;
+import self as self;
+import "dart:core" as core;
+
+class int extends core::Object {
+  synthetic constructor •() → self::int
+    : super core::Object::•()
+    ;
+}
+class Object extends core::Object {
+  synthetic constructor •() → self::Object
+    : super core::Object::•()
+    ;
+}
+class String extends core::Object {
+  synthetic constructor •() → self::String
+    : super core::Object::•()
+    ;
+}
+class _Enum extends core::Object {
+  synthetic constructor •() → self::_Enum
+    : super core::Object::•()
+    ;
+}
+class List extends core::Object {
+  synthetic constructor •() → self::List
+    : super core::Object::•()
+    ;
+}
+class E extends core::_Enum /*isEnum*/  {
+  static const field core::List<self::E> values = #C16;
+  static const field self::E int = #C3;
+  static const field self::E Object = #C6;
+  static const field self::E String = #C9;
+  static const field self::E _Enum = #C12;
+  static const field self::E List = #C15;
+  const constructor •(core::int index, core::String name) → self::E
+    : super core::_Enum::•(index, name)
+    ;
+  method toString() → core::String
+    return "E.${this.{core::_Enum::_name}{core::String}}";
+}
+static method main() → dynamic {}
+
+constants  {
+  #C1 = 0
+  #C2 = "int"
+  #C3 = self::E {index:#C1, _name:#C2}
+  #C4 = 1
+  #C5 = "Object"
+  #C6 = self::E {index:#C4, _name:#C5}
+  #C7 = 2
+  #C8 = "String"
+  #C9 = self::E {index:#C7, _name:#C8}
+  #C10 = 3
+  #C11 = "_Enum"
+  #C12 = self::E {index:#C10, _name:#C11}
+  #C13 = 4
+  #C14 = "List"
+  #C15 = self::E {index:#C13, _name:#C14}
+  #C16 = <self::E*>[#C3, #C6, #C9, #C12, #C15]
+}
+
+
+Constructor coverage from constants:
+org-dartlang-testcase:///enum_names_from_core.dart:
+- E. (from org-dartlang-testcase:///enum_names_from_core.dart:15:6)
+- _Enum. (from org-dartlang-sdk:///sdk/lib/core/enum.dart:76:9)
+- Object. (from org-dartlang-sdk:///sdk/lib/core/object.dart:25:9)
diff --git a/pkg/front_end/testcases/general/enum_names_from_core.dart.weak.outline.expect b/pkg/front_end/testcases/general/enum_names_from_core.dart.weak.outline.expect
new file mode 100644
index 0000000..7b3853c
--- /dev/null
+++ b/pkg/front_end/testcases/general/enum_names_from_core.dart.weak.outline.expect
@@ -0,0 +1,49 @@
+library /*isNonNullableByDefault*/;
+import self as self;
+import "dart:core" as core;
+
+class int extends core::Object {
+  synthetic constructor •() → self::int
+    ;
+}
+class Object extends core::Object {
+  synthetic constructor •() → self::Object
+    ;
+}
+class String extends core::Object {
+  synthetic constructor •() → self::String
+    ;
+}
+class _Enum extends core::Object {
+  synthetic constructor •() → self::_Enum
+    ;
+}
+class List extends core::Object {
+  synthetic constructor •() → self::List
+    ;
+}
+class E extends core::_Enum /*isEnum*/  {
+  static const field core::List<self::E> values = const <self::E>[self::E::int, self::E::Object, self::E::String, self::E::_Enum, self::E::List];
+  static const field self::E int = const self::E::•(0, "int");
+  static const field self::E Object = const self::E::•(1, "Object");
+  static const field self::E String = const self::E::•(2, "String");
+  static const field self::E _Enum = const self::E::•(3, "_Enum");
+  static const field self::E List = const self::E::•(4, "List");
+  const constructor •(core::int index, core::String name) → self::E
+    : super core::_Enum::•(index, name)
+    ;
+  method toString() → core::String
+    return "E.${this.{core::_Enum::_name}{core::String}}";
+}
+static method main() → dynamic
+  ;
+
+
+Extra constant evaluation status:
+Evaluated: ListLiteral @ org-dartlang-testcase:///enum_names_from_core.dart:15:6 -> ListConstant(const <E*>[const E{_Enum.index: 0, _Enum._name: "int"}, const E{_Enum.index: 1, _Enum._name: "Object"}, const E{_Enum.index: 2, _Enum._name: "String"}, const E{_Enum.index: 3, _Enum._name: "_Enum"}, const E{_Enum.index: 4, _Enum._name: "List"}])
+Evaluated: ConstructorInvocation @ org-dartlang-testcase:///enum_names_from_core.dart:16:3 -> InstanceConstant(const E{_Enum.index: 0, _Enum._name: "int"})
+Evaluated: ConstructorInvocation @ org-dartlang-testcase:///enum_names_from_core.dart:17:3 -> InstanceConstant(const E{_Enum.index: 1, _Enum._name: "Object"})
+Evaluated: ConstructorInvocation @ org-dartlang-testcase:///enum_names_from_core.dart:18:3 -> InstanceConstant(const E{_Enum.index: 2, _Enum._name: "String"})
+Evaluated: ConstructorInvocation @ org-dartlang-testcase:///enum_names_from_core.dart:19:3 -> InstanceConstant(const E{_Enum.index: 3, _Enum._name: "_Enum"})
+Evaluated: ConstructorInvocation @ org-dartlang-testcase:///enum_names_from_core.dart:20:3 -> InstanceConstant(const E{_Enum.index: 4, _Enum._name: "List"})
+Extra constant evaluation: evaluated: 11, effectively constant: 6
diff --git a/pkg/front_end/testcases/general/enum_names_from_core.dart.weak.transformed.expect b/pkg/front_end/testcases/general/enum_names_from_core.dart.weak.transformed.expect
new file mode 100644
index 0000000..f367499
--- /dev/null
+++ b/pkg/front_end/testcases/general/enum_names_from_core.dart.weak.transformed.expect
@@ -0,0 +1,69 @@
+library /*isNonNullableByDefault*/;
+import self as self;
+import "dart:core" as core;
+
+class int extends core::Object {
+  synthetic constructor •() → self::int
+    : super core::Object::•()
+    ;
+}
+class Object extends core::Object {
+  synthetic constructor •() → self::Object
+    : super core::Object::•()
+    ;
+}
+class String extends core::Object {
+  synthetic constructor •() → self::String
+    : super core::Object::•()
+    ;
+}
+class _Enum extends core::Object {
+  synthetic constructor •() → self::_Enum
+    : super core::Object::•()
+    ;
+}
+class List extends core::Object {
+  synthetic constructor •() → self::List
+    : super core::Object::•()
+    ;
+}
+class E extends core::_Enum /*isEnum*/  {
+  static const field core::List<self::E> values = #C16;
+  static const field self::E int = #C3;
+  static const field self::E Object = #C6;
+  static const field self::E String = #C9;
+  static const field self::E _Enum = #C12;
+  static const field self::E List = #C15;
+  const constructor •(core::int index, core::String name) → self::E
+    : super core::_Enum::•(index, name)
+    ;
+  method toString() → core::String
+    return "E.${this.{core::_Enum::_name}{core::String}}";
+}
+static method main() → dynamic {}
+
+constants  {
+  #C1 = 0
+  #C2 = "int"
+  #C3 = self::E {index:#C1, _name:#C2}
+  #C4 = 1
+  #C5 = "Object"
+  #C6 = self::E {index:#C4, _name:#C5}
+  #C7 = 2
+  #C8 = "String"
+  #C9 = self::E {index:#C7, _name:#C8}
+  #C10 = 3
+  #C11 = "_Enum"
+  #C12 = self::E {index:#C10, _name:#C11}
+  #C13 = 4
+  #C14 = "List"
+  #C15 = self::E {index:#C13, _name:#C14}
+  #C16 = <self::E*>[#C3, #C6, #C9, #C12, #C15]
+}
+
+
+Constructor coverage from constants:
+org-dartlang-testcase:///enum_names_from_core.dart:
+- E. (from org-dartlang-testcase:///enum_names_from_core.dart:15:6)
+- _Enum. (from org-dartlang-sdk:///sdk/lib/core/enum.dart:76:9)
+- Object. (from org-dartlang-sdk:///sdk/lib/core/object.dart:25:9)
diff --git a/pkg/front_end/testcases/general/mixin_constructors_with_default_values.dart.weak.expect b/pkg/front_end/testcases/general/mixin_constructors_with_default_values.dart.weak.expect
index e433f66..eba1d44 100644
--- a/pkg/front_end/testcases/general/mixin_constructors_with_default_values.dart.weak.expect
+++ b/pkg/front_end/testcases/general/mixin_constructors_with_default_values.dart.weak.expect
@@ -2,15 +2,9 @@
 //
 // Problems in library:
 //
-// pkg/front_end/testcases/general/mixin_constructors_with_default_values.dart:9:15: Error: Constant evaluation error:
+// pkg/front_end/testcases/general/mixin_constructors_with_default_values.dart:9:15: Error: Type variables can't be used as constants.
 //   C({a: 0, b: T}) : trace = "a: $a, b: $b";
 //               ^
-// pkg/front_end/testcases/general/mixin_constructors_with_default_values.dart:9:15: Context: The type 'T' is not a constant because it depends on a type parameter, only instantiated types are allowed.
-//   C({a: 0, b: T}) : trace = "a: $a, b: $b";
-//               ^
-// pkg/front_end/testcases/general/mixin_constructors_with_default_values.dart:9:12: Context: While analyzing:
-//   C({a: 0, b: T}) : trace = "a: $a, b: $b";
-//            ^
 //
 import self as self;
 import "dart:core" as core;
@@ -20,7 +14,7 @@
 
 class C<T extends core::Object* = dynamic> extends core::Object {
   field core::String* trace;
-  constructor •({dynamic a = #C1, dynamic b = invalid-expression "The type 'T' is not a constant because it depends on a type parameter, only instantiated types are allowed."}) → self::C<self::C::T*>*
+  constructor •({dynamic a = #C1, dynamic b = invalid-expression "Type variables can't be used as constants."}) → self::C<self::C::T*>*
     : self::C::trace = "a: ${a}, b: ${b}", super core::Object::•()
     ;
   abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
diff --git a/pkg/front_end/testcases/general/mixin_constructors_with_default_values.dart.weak.transformed.expect b/pkg/front_end/testcases/general/mixin_constructors_with_default_values.dart.weak.transformed.expect
index 3a642dd..7780786 100644
--- a/pkg/front_end/testcases/general/mixin_constructors_with_default_values.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/general/mixin_constructors_with_default_values.dart.weak.transformed.expect
@@ -2,15 +2,9 @@
 //
 // Problems in library:
 //
-// pkg/front_end/testcases/general/mixin_constructors_with_default_values.dart:9:15: Error: Constant evaluation error:
+// pkg/front_end/testcases/general/mixin_constructors_with_default_values.dart:9:15: Error: Type variables can't be used as constants.
 //   C({a: 0, b: T}) : trace = "a: $a, b: $b";
 //               ^
-// pkg/front_end/testcases/general/mixin_constructors_with_default_values.dart:9:15: Context: The type 'T' is not a constant because it depends on a type parameter, only instantiated types are allowed.
-//   C({a: 0, b: T}) : trace = "a: $a, b: $b";
-//               ^
-// pkg/front_end/testcases/general/mixin_constructors_with_default_values.dart:9:12: Context: While analyzing:
-//   C({a: 0, b: T}) : trace = "a: $a, b: $b";
-//            ^
 //
 import self as self;
 import "dart:core" as core;
@@ -20,7 +14,7 @@
 
 class C<T extends core::Object* = dynamic> extends core::Object {
   field core::String* trace;
-  constructor •({dynamic a = #C1, dynamic b = invalid-expression "The type 'T' is not a constant because it depends on a type parameter, only instantiated types are allowed."}) → self::C<self::C::T*>*
+  constructor •({dynamic a = #C1, dynamic b = invalid-expression "Type variables can't be used as constants."}) → self::C<self::C::T*>*
     : self::C::trace = "a: ${a}, b: ${b}", super core::Object::•()
     ;
   abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
diff --git a/pkg/front_end/testcases/general/type_variable_in_static_context.dart b/pkg/front_end/testcases/general/type_variable_in_static_context.dart
new file mode 100644
index 0000000..d8f37df
--- /dev/null
+++ b/pkg/front_end/testcases/general/type_variable_in_static_context.dart
@@ -0,0 +1,154 @@
+// 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.
+
+typedef A<T> = Class<T>;
+
+typedef B<T extends num> = Class<T>;
+
+class Class<T> {
+  const Class();
+
+  @T()
+  static T? method0<S extends T>(T arg) {
+    T? local;
+    T;
+    void fun<U extends T>() {}
+  }
+
+  @Class<T>()
+  static Class<T>? method1<S extends Class<T>>(Class<T> arg) {
+    Class<T>? local;
+    new Class<T>();
+    Class<T>;
+    Class<T>.new;
+    void fun<U extends Class<T>>() {}
+  }
+
+  @Class<Class<T>>()
+  static Class<Class<T>>? method2<S extends Class<Class<T>>>(Class<Class<T>> arg) {
+    Class<Class<T>>? local;
+    new Class<Class<T>>();
+    Class<Class<T>>;
+    Class<Class<T>>.new;
+    void fun<U extends Class<Class<T>>>() {}
+  }
+
+  @A<T>()
+  static A<T>? method3<S extends A<T>>(A<T> arg) {
+    A<T>? local;
+    new A<T>();
+    A<T>;
+    A<T>.new;
+    void fun<U extends A<T>>() {}
+  }
+
+  @A<A<T>>()
+  static A<A<T>>? method4<S extends A<A<T>>>(A<A<T>> arg) {
+    A<A<T>>? local;
+    new A<A<T>>();
+    A<A<T>>;
+    A<A<T>>.new;
+    void fun<U extends A<A<T>>>() {}
+  }
+
+  @B<T>()
+  static B<T>? method5<S extends B<T>>(B<T> arg) {
+    B<T>? local;
+    new B<T>();
+    B<T>;
+    B<T>.new;
+    void fun<U extends B<T>>() {}
+  }
+
+  @A<B<T>>()
+  static A<B<T>>? method6<S extends A<B<T>>>(A<B<T>> arg) {
+    A<B<T>>? local;
+    new A<B<T>>();
+    A<B<T>>;
+    A<B<T>>.new;
+    void fun<U extends A<B<T>>>() {}
+  }
+
+  @Class<void Function<S extends T>()>()
+  static void Function<S extends T>()? method7<U extends void Function<S extends T>()>(void Function<S extends T>() arg) {
+    void Function<S extends T>()? local;
+    void fun<V extends void Function<S extends T>()>() {}
+  }
+
+  @T()
+  static T field0;
+
+  @Class<T>()
+  static Class<T>? field1;
+
+  @Class<Class<T>>()
+  static Type field2 = T;
+
+  @A<T>()
+  static Type field3 = Class<T>;
+
+  @B<T>()
+  static var field4 = (T t) => T;
+
+  @T()
+  final T? instanceField;
+
+  @T()
+  T instanceMethod<S extends T>(T t) {
+    T;
+    return t;
+  }
+}
+
+extension Extension<T> on T {
+  Extension(T t);
+
+  factory Extension.fact(T t) => null;
+
+  @T()
+  static T field0;
+
+  @T()
+  T field1;
+
+  @T()
+  static T? staticMethod<S extends T>(T arg) {
+    T? local;
+    T;
+    void fun<U extends T>() {}
+  }
+
+  @T()
+  T instanceMethod<S extends T>(T t) {
+    T;
+    return t;
+  }
+}
+
+mixin Mixin<T> {
+  Mixin(T t);
+
+  factory Mixin.fact(T t) => null;
+
+  @T()
+  static T field0;
+
+  @T()
+  static T? staticMethod<S extends T>(T arg) {
+    T? local;
+    T;
+    void fun<U extends T>() {}
+  }
+
+  @T()
+  T? instanceField;
+
+  @T()
+  T instanceMethod<S extends T>(T t) {
+    T;
+    return t;
+  }
+}
+
+main() {}
\ No newline at end of file
diff --git a/pkg/front_end/testcases/general/type_variable_in_static_context.dart.textual_outline.expect b/pkg/front_end/testcases/general/type_variable_in_static_context.dart.textual_outline.expect
new file mode 100644
index 0000000..d1247c0
--- /dev/null
+++ b/pkg/front_end/testcases/general/type_variable_in_static_context.dart.textual_outline.expect
@@ -0,0 +1,60 @@
+typedef A<T> = Class<T>;
+typedef B<T extends num> = Class<T>;
+class Class<T> {
+  const Class();
+  @T()
+  static T? method0<S extends T>(T arg) {}
+  @Class<T>()
+  static Class<T>? method1<S extends Class<T>>(Class<T> arg) {}
+  @Class<Class<T>>()
+  static Class<Class<T>>? method2<S extends Class<Class<T>>>(Class<Class<T>> arg) {}
+  @A<T>()
+  static A<T>? method3<S extends A<T>>(A<T> arg) {}
+  @A<A<T>>()
+  static A<A<T>>? method4<S extends A<A<T>>>(A<A<T>> arg) {}
+  @B<T>()
+  static B<T>? method5<S extends B<T>>(B<T> arg) {}
+  @A<B<T>>()
+  static A<B<T>>? method6<S extends A<B<T>>>(A<B<T>> arg) {}
+  @Class<void Function<S extends T>()>()
+  static void Function<S extends T>()? method7<U extends void Function<S extends T>()>(void Function<S extends T>() arg) {}
+  @T()
+  static T field0;
+  @Class<T>()
+  static Class<T>? field1;
+  @Class<Class<T>>()
+  static Type field2 = T;
+  @A<T>()
+  static Type field3 = Class<T>;
+  @B<T>()
+  static var field4 = (T t) => T;
+  @T()
+  final T? instanceField;
+  @T()
+  T instanceMethod<S extends T>(T t) {}
+}
+extension Extension<T> on T {
+  Extension(T t);
+  factory Extension.fact(T t) => null;
+  @T()
+  static T field0;
+  @T()
+  T field1;
+  @T()
+  static T? staticMethod<S extends T>(T arg) {}
+  @T()
+  T instanceMethod<S extends T>(T t) {}
+}
+mixin Mixin<T> {
+  Mixin(T t);
+  factory Mixin.fact(T t) => null;
+  @T()
+  static T field0;
+  @T()
+  static T? staticMethod<S extends T>(T arg) {}
+  @T()
+  T? instanceField;
+  @T()
+  T instanceMethod<S extends T>(T t) {}
+}
+main() {}
diff --git a/pkg/front_end/testcases/general/type_variable_in_static_context.dart.textual_outline_modelled.expect b/pkg/front_end/testcases/general/type_variable_in_static_context.dart.textual_outline_modelled.expect
new file mode 100644
index 0000000..86ca952
--- /dev/null
+++ b/pkg/front_end/testcases/general/type_variable_in_static_context.dart.textual_outline_modelled.expect
@@ -0,0 +1,17 @@
+class Class<T> {
+  static A<A<T>>? method4<S extends A<A<T>>>(A<A<T>> arg) {}
+  static A<B<T>>? method6<S extends A<B<T>>>(A<B<T>> arg) {}
+  static A<T>? method3<S extends A<T>>(A<T> arg) {}
+  static B<T>? method5<S extends B<T>>(B<T> arg) {}
+  static Class<Class<T>>? method2<S extends Class<Class<T>>>(
+      Class<Class<T>> arg) {}
+  static Class<T>? method1<S extends Class<T>>(Class<T> arg) {}
+  static T? method0<S extends T>(T arg) {}
+  static void Function<S extends T>()?
+      method7<U extends void Function<S extends T>()>(
+          void Function<S extends T>() arg) {}
+}
+
+main() {}
+typedef A<T> = Class<T>;
+typedef B<T extends num> = Class<T>;
diff --git a/pkg/front_end/testcases/general/type_variable_in_static_context.dart.weak.expect b/pkg/front_end/testcases/general/type_variable_in_static_context.dart.weak.expect
new file mode 100644
index 0000000..0dfa518
--- /dev/null
+++ b/pkg/front_end/testcases/general/type_variable_in_static_context.dart.weak.expect
@@ -0,0 +1,630 @@
+library /*isNonNullableByDefault*/;
+//
+// Problems in library:
+//
+// pkg/front_end/testcases/general/type_variable_in_static_context.dart:105:3: Error: Extensions can't declare constructors.
+// Try removing the constructor declaration.
+//   Extension(T t);
+//   ^^^^^^^^^
+//
+// pkg/front_end/testcases/general/type_variable_in_static_context.dart:107:3: Error: Extensions can't declare constructors.
+// Try removing the constructor declaration.
+//   factory Extension.fact(T t) => null;
+//   ^^^^^^^
+//
+// pkg/front_end/testcases/general/type_variable_in_static_context.dart:113:5: Error: Extensions can't declare instance fields
+// Try removing the field declaration or making it a static field
+//   T field1;
+//     ^^^^^^
+//
+// pkg/front_end/testcases/general/type_variable_in_static_context.dart:130:3: Error: Mixins can't declare constructors.
+//   Mixin(T t);
+//   ^^^^^
+//
+// pkg/front_end/testcases/general/type_variable_in_static_context.dart:132:3: Error: Mixins can't declare constructors.
+//   factory Mixin.fact(T t) => null;
+//   ^^^^^^^
+//
+// pkg/front_end/testcases/general/type_variable_in_static_context.dart:107:11: Error: Expected 0 type arguments.
+//   factory Extension.fact(T t) => null;
+//           ^
+//
+// pkg/front_end/testcases/general/type_variable_in_static_context.dart:13:31: Error: Type variables can't be used in static members.
+//   static T? method0<S extends T>(T arg) {
+//                               ^
+//
+// pkg/front_end/testcases/general/type_variable_in_static_context.dart:20:44: Error: Type variables can't be used in static members.
+//   static Class<T>? method1<S extends Class<T>>(Class<T> arg) {
+//                                            ^
+//
+// pkg/front_end/testcases/general/type_variable_in_static_context.dart:29:57: Error: Type variables can't be used in static members.
+//   static Class<Class<T>>? method2<S extends Class<Class<T>>>(Class<Class<T>> arg) {
+//                                                         ^
+//
+// pkg/front_end/testcases/general/type_variable_in_static_context.dart:38:36: Error: Type variables can't be used in static members.
+//   static A<T>? method3<S extends A<T>>(A<T> arg) {
+//                                    ^
+//
+// pkg/front_end/testcases/general/type_variable_in_static_context.dart:47:41: Error: Type variables can't be used in static members.
+//   static A<A<T>>? method4<S extends A<A<T>>>(A<A<T>> arg) {
+//                                         ^
+//
+// pkg/front_end/testcases/general/type_variable_in_static_context.dart:56:36: Error: Type variables can't be used in static members.
+//   static B<T>? method5<S extends B<T>>(B<T> arg) {
+//                                    ^
+//
+// pkg/front_end/testcases/general/type_variable_in_static_context.dart:65:41: Error: Type variables can't be used in static members.
+//   static A<B<T>>? method6<S extends A<B<T>>>(A<B<T>> arg) {
+//                                         ^
+//
+// pkg/front_end/testcases/general/type_variable_in_static_context.dart:73:34: Error: Type variables can't be used in static members.
+//   @Class<void Function<S extends T>()>()
+//                                  ^
+//
+// pkg/front_end/testcases/general/type_variable_in_static_context.dart:74:34: Error: Type variables can't be used in static members.
+//   static void Function<S extends T>()? method7<U extends void Function<S extends T>()>(void Function<S extends T>() arg) {
+//                                  ^
+//
+// pkg/front_end/testcases/general/type_variable_in_static_context.dart:74:82: Error: Type variables can't be used in static members.
+//   static void Function<S extends T>()? method7<U extends void Function<S extends T>()>(void Function<S extends T>() arg) {
+//                                                                                  ^
+//
+// pkg/front_end/testcases/general/type_variable_in_static_context.dart:74:112: Error: Type variables can't be used in static members.
+//   static void Function<S extends T>()? method7<U extends void Function<S extends T>()>(void Function<S extends T>() arg) {
+//                                                                                                                ^
+//
+// pkg/front_end/testcases/general/type_variable_in_static_context.dart:116:36: Error: Type variables can't be used in static members.
+//   static T? staticMethod<S extends T>(T arg) {
+//                                    ^
+//
+// pkg/front_end/testcases/general/type_variable_in_static_context.dart:138:36: Error: Type variables can't be used in static members.
+//   static T? staticMethod<S extends T>(T arg) {
+//                                    ^
+//
+// pkg/front_end/testcases/general/type_variable_in_static_context.dart:13:34: Error: Type variables can't be used in static members.
+//   static T? method0<S extends T>(T arg) {
+//                                  ^
+//
+// pkg/front_end/testcases/general/type_variable_in_static_context.dart:13:10: Error: Type variables can't be used in static members.
+//   static T? method0<S extends T>(T arg) {
+//          ^
+//
+// pkg/front_end/testcases/general/type_variable_in_static_context.dart:20:54: Error: Type variables can't be used in static members.
+//   static Class<T>? method1<S extends Class<T>>(Class<T> arg) {
+//                                                      ^
+//
+// pkg/front_end/testcases/general/type_variable_in_static_context.dart:20:16: Error: Type variables can't be used in static members.
+//   static Class<T>? method1<S extends Class<T>>(Class<T> arg) {
+//                ^
+//
+// pkg/front_end/testcases/general/type_variable_in_static_context.dart:29:74: Error: Type variables can't be used in static members.
+//   static Class<Class<T>>? method2<S extends Class<Class<T>>>(Class<Class<T>> arg) {
+//                                                                          ^
+//
+// pkg/front_end/testcases/general/type_variable_in_static_context.dart:29:22: Error: Type variables can't be used in static members.
+//   static Class<Class<T>>? method2<S extends Class<Class<T>>>(Class<Class<T>> arg) {
+//                      ^
+//
+// pkg/front_end/testcases/general/type_variable_in_static_context.dart:38:42: Error: Type variables can't be used in static members.
+//   static A<T>? method3<S extends A<T>>(A<T> arg) {
+//                                          ^
+//
+// pkg/front_end/testcases/general/type_variable_in_static_context.dart:38:12: Error: Type variables can't be used in static members.
+//   static A<T>? method3<S extends A<T>>(A<T> arg) {
+//            ^
+//
+// pkg/front_end/testcases/general/type_variable_in_static_context.dart:47:50: Error: Type variables can't be used in static members.
+//   static A<A<T>>? method4<S extends A<A<T>>>(A<A<T>> arg) {
+//                                                  ^
+//
+// pkg/front_end/testcases/general/type_variable_in_static_context.dart:47:14: Error: Type variables can't be used in static members.
+//   static A<A<T>>? method4<S extends A<A<T>>>(A<A<T>> arg) {
+//              ^
+//
+// pkg/front_end/testcases/general/type_variable_in_static_context.dart:56:42: Error: Type variables can't be used in static members.
+//   static B<T>? method5<S extends B<T>>(B<T> arg) {
+//                                          ^
+//
+// pkg/front_end/testcases/general/type_variable_in_static_context.dart:56:12: Error: Type variables can't be used in static members.
+//   static B<T>? method5<S extends B<T>>(B<T> arg) {
+//            ^
+//
+// pkg/front_end/testcases/general/type_variable_in_static_context.dart:65:50: Error: Type variables can't be used in static members.
+//   static A<B<T>>? method6<S extends A<B<T>>>(A<B<T>> arg) {
+//                                                  ^
+//
+// pkg/front_end/testcases/general/type_variable_in_static_context.dart:65:14: Error: Type variables can't be used in static members.
+//   static A<B<T>>? method6<S extends A<B<T>>>(A<B<T>> arg) {
+//              ^
+//
+// pkg/front_end/testcases/general/type_variable_in_static_context.dart:80:10: Error: Type variables can't be used in static members.
+//   static T field0;
+//          ^
+//
+// pkg/front_end/testcases/general/type_variable_in_static_context.dart:83:16: Error: Type variables can't be used in static members.
+//   static Class<T>? field1;
+//                ^
+//
+// pkg/front_end/testcases/general/type_variable_in_static_context.dart:110:10: Error: Type variables can't be used in static members.
+//   static T field0;
+//          ^
+//
+// pkg/front_end/testcases/general/type_variable_in_static_context.dart:116:39: Error: Type variables can't be used in static members.
+//   static T? staticMethod<S extends T>(T arg) {
+//                                       ^
+//
+// pkg/front_end/testcases/general/type_variable_in_static_context.dart:116:10: Error: Type variables can't be used in static members.
+//   static T? staticMethod<S extends T>(T arg) {
+//          ^
+//
+// pkg/front_end/testcases/general/type_variable_in_static_context.dart:135:10: Error: Type variables can't be used in static members.
+//   static T field0;
+//          ^
+//
+// pkg/front_end/testcases/general/type_variable_in_static_context.dart:138:39: Error: Type variables can't be used in static members.
+//   static T? staticMethod<S extends T>(T arg) {
+//                                       ^
+//
+// pkg/front_end/testcases/general/type_variable_in_static_context.dart:138:10: Error: Type variables can't be used in static members.
+//   static T? staticMethod<S extends T>(T arg) {
+//          ^
+//
+// pkg/front_end/testcases/general/type_variable_in_static_context.dart:92:24: Error: Type variables can't be used in static members.
+//   static var field4 = (T t) => T;
+//                        ^
+//
+// pkg/front_end/testcases/general/type_variable_in_static_context.dart:92:32: Error: Type variables can't be used in static members.
+//   static var field4 = (T t) => T;
+//                                ^
+//
+// pkg/front_end/testcases/general/type_variable_in_static_context.dart:12:4: Error: Couldn't find constructor 'T'.
+//   @T()
+//    ^
+//
+// pkg/front_end/testcases/general/type_variable_in_static_context.dart:19:10: Error: Type variables can't be used in static members.
+//   @Class<T>()
+//          ^
+//
+// pkg/front_end/testcases/general/type_variable_in_static_context.dart:28:16: Error: Type variables can't be used in static members.
+//   @Class<Class<T>>()
+//                ^
+//
+// pkg/front_end/testcases/general/type_variable_in_static_context.dart:37:6: Error: Type variables can't be used in static members.
+//   @A<T>()
+//      ^
+//
+// pkg/front_end/testcases/general/type_variable_in_static_context.dart:46:8: Error: Type variables can't be used in static members.
+//   @A<A<T>>()
+//        ^
+//
+// pkg/front_end/testcases/general/type_variable_in_static_context.dart:55:6: Error: Type variables can't be used in static members.
+//   @B<T>()
+//      ^
+//
+// pkg/front_end/testcases/general/type_variable_in_static_context.dart:64:8: Error: Type variables can't be used in static members.
+//   @A<B<T>>()
+//        ^
+//
+// pkg/front_end/testcases/general/type_variable_in_static_context.dart:79:4: Error: Couldn't find constructor 'T'.
+//   @T()
+//    ^
+//
+// pkg/front_end/testcases/general/type_variable_in_static_context.dart:82:10: Error: Type variables can't be used in static members.
+//   @Class<T>()
+//          ^
+//
+// pkg/front_end/testcases/general/type_variable_in_static_context.dart:85:16: Error: Type variables can't be used in static members.
+//   @Class<Class<T>>()
+//                ^
+//
+// pkg/front_end/testcases/general/type_variable_in_static_context.dart:88:6: Error: Type variables can't be used in static members.
+//   @A<T>()
+//      ^
+//
+// pkg/front_end/testcases/general/type_variable_in_static_context.dart:91:6: Error: Type variables can't be used in static members.
+//   @B<T>()
+//      ^
+//
+// pkg/front_end/testcases/general/type_variable_in_static_context.dart:94:4: Error: Couldn't find constructor 'T'.
+//   @T()
+//    ^
+//
+// pkg/front_end/testcases/general/type_variable_in_static_context.dart:97:4: Error: Couldn't find constructor 'T'.
+//   @T()
+//    ^
+//
+// pkg/front_end/testcases/general/type_variable_in_static_context.dart:109:4: Error: Couldn't find constructor 'T'.
+//   @T()
+//    ^
+//
+// pkg/front_end/testcases/general/type_variable_in_static_context.dart:112:4: Error: Couldn't find constructor 'T'.
+//   @T()
+//    ^
+//
+// pkg/front_end/testcases/general/type_variable_in_static_context.dart:115:4: Error: Couldn't find constructor 'T'.
+//   @T()
+//    ^
+//
+// pkg/front_end/testcases/general/type_variable_in_static_context.dart:122:4: Error: Couldn't find constructor 'T'.
+//   @T()
+//    ^
+//
+// pkg/front_end/testcases/general/type_variable_in_static_context.dart:134:4: Error: Couldn't find constructor 'T'.
+//   @T()
+//    ^
+//
+// pkg/front_end/testcases/general/type_variable_in_static_context.dart:137:4: Error: Couldn't find constructor 'T'.
+//   @T()
+//    ^
+//
+// pkg/front_end/testcases/general/type_variable_in_static_context.dart:144:4: Error: Couldn't find constructor 'T'.
+//   @T()
+//    ^
+//
+// pkg/front_end/testcases/general/type_variable_in_static_context.dart:147:4: Error: Couldn't find constructor 'T'.
+//   @T()
+//    ^
+//
+// pkg/front_end/testcases/general/type_variable_in_static_context.dart:14:5: Error: Type variables can't be used in static members.
+//     T? local;
+//     ^
+//
+// pkg/front_end/testcases/general/type_variable_in_static_context.dart:15:5: Error: Type variables can't be used in static members.
+//     T;
+//     ^
+//
+// pkg/front_end/testcases/general/type_variable_in_static_context.dart:16:24: Error: Type variables can't be used in static members.
+//     void fun<U extends T>() {}
+//                        ^
+//
+// pkg/front_end/testcases/general/type_variable_in_static_context.dart:21:11: Error: Type variables can't be used in static members.
+//     Class<T>? local;
+//           ^
+//
+// pkg/front_end/testcases/general/type_variable_in_static_context.dart:22:15: Error: Type variables can't be used in static members.
+//     new Class<T>();
+//               ^
+//
+// pkg/front_end/testcases/general/type_variable_in_static_context.dart:23:11: Error: Type variables can't be used in static members.
+//     Class<T>;
+//           ^
+//
+// pkg/front_end/testcases/general/type_variable_in_static_context.dart:24:11: Error: Type variables can't be used in static members.
+//     Class<T>.new;
+//           ^
+//
+// pkg/front_end/testcases/general/type_variable_in_static_context.dart:25:30: Error: Type variables can't be used in static members.
+//     void fun<U extends Class<T>>() {}
+//                              ^
+//
+// pkg/front_end/testcases/general/type_variable_in_static_context.dart:30:17: Error: Type variables can't be used in static members.
+//     Class<Class<T>>? local;
+//                 ^
+//
+// pkg/front_end/testcases/general/type_variable_in_static_context.dart:31:21: Error: Type variables can't be used in static members.
+//     new Class<Class<T>>();
+//                     ^
+//
+// pkg/front_end/testcases/general/type_variable_in_static_context.dart:32:17: Error: Type variables can't be used in static members.
+//     Class<Class<T>>;
+//                 ^
+//
+// pkg/front_end/testcases/general/type_variable_in_static_context.dart:33:17: Error: Type variables can't be used in static members.
+//     Class<Class<T>>.new;
+//                 ^
+//
+// pkg/front_end/testcases/general/type_variable_in_static_context.dart:34:36: Error: Type variables can't be used in static members.
+//     void fun<U extends Class<Class<T>>>() {}
+//                                    ^
+//
+// pkg/front_end/testcases/general/type_variable_in_static_context.dart:39:7: Error: Type variables can't be used in static members.
+//     A<T>? local;
+//       ^
+//
+// pkg/front_end/testcases/general/type_variable_in_static_context.dart:40:11: Error: Type variables can't be used in static members.
+//     new A<T>();
+//           ^
+//
+// pkg/front_end/testcases/general/type_variable_in_static_context.dart:41:7: Error: Type variables can't be used in static members.
+//     A<T>;
+//       ^
+//
+// pkg/front_end/testcases/general/type_variable_in_static_context.dart:42:7: Error: Type variables can't be used in static members.
+//     A<T>.new;
+//       ^
+//
+// pkg/front_end/testcases/general/type_variable_in_static_context.dart:43:26: Error: Type variables can't be used in static members.
+//     void fun<U extends A<T>>() {}
+//                          ^
+//
+// pkg/front_end/testcases/general/type_variable_in_static_context.dart:48:9: Error: Type variables can't be used in static members.
+//     A<A<T>>? local;
+//         ^
+//
+// pkg/front_end/testcases/general/type_variable_in_static_context.dart:49:13: Error: Type variables can't be used in static members.
+//     new A<A<T>>();
+//             ^
+//
+// pkg/front_end/testcases/general/type_variable_in_static_context.dart:50:9: Error: Type variables can't be used in static members.
+//     A<A<T>>;
+//         ^
+//
+// pkg/front_end/testcases/general/type_variable_in_static_context.dart:51:9: Error: Type variables can't be used in static members.
+//     A<A<T>>.new;
+//         ^
+//
+// pkg/front_end/testcases/general/type_variable_in_static_context.dart:52:28: Error: Type variables can't be used in static members.
+//     void fun<U extends A<A<T>>>() {}
+//                            ^
+//
+// pkg/front_end/testcases/general/type_variable_in_static_context.dart:57:7: Error: Type variables can't be used in static members.
+//     B<T>? local;
+//       ^
+//
+// pkg/front_end/testcases/general/type_variable_in_static_context.dart:58:11: Error: Type variables can't be used in static members.
+//     new B<T>();
+//           ^
+//
+// pkg/front_end/testcases/general/type_variable_in_static_context.dart:59:7: Error: Type variables can't be used in static members.
+//     B<T>;
+//       ^
+//
+// pkg/front_end/testcases/general/type_variable_in_static_context.dart:60:7: Error: Type variables can't be used in static members.
+//     B<T>.new;
+//       ^
+//
+// pkg/front_end/testcases/general/type_variable_in_static_context.dart:61:26: Error: Type variables can't be used in static members.
+//     void fun<U extends B<T>>() {}
+//                          ^
+//
+// pkg/front_end/testcases/general/type_variable_in_static_context.dart:66:9: Error: Type variables can't be used in static members.
+//     A<B<T>>? local;
+//         ^
+//
+// pkg/front_end/testcases/general/type_variable_in_static_context.dart:67:13: Error: Type variables can't be used in static members.
+//     new A<B<T>>();
+//             ^
+//
+// pkg/front_end/testcases/general/type_variable_in_static_context.dart:68:9: Error: Type variables can't be used in static members.
+//     A<B<T>>;
+//         ^
+//
+// pkg/front_end/testcases/general/type_variable_in_static_context.dart:69:9: Error: Type variables can't be used in static members.
+//     A<B<T>>.new;
+//         ^
+//
+// pkg/front_end/testcases/general/type_variable_in_static_context.dart:70:28: Error: Type variables can't be used in static members.
+//     void fun<U extends A<B<T>>>() {}
+//                            ^
+//
+// pkg/front_end/testcases/general/type_variable_in_static_context.dart:75:29: Error: Type variables can't be used in static members.
+//     void Function<S extends T>()? local;
+//                             ^
+//
+// pkg/front_end/testcases/general/type_variable_in_static_context.dart:76:48: Error: Type variables can't be used in static members.
+//     void fun<V extends void Function<S extends T>()>() {}
+//                                                ^
+//
+// pkg/front_end/testcases/general/type_variable_in_static_context.dart:86:24: Error: Type variables can't be used in static members.
+//   static Type field2 = T;
+//                        ^
+//
+// pkg/front_end/testcases/general/type_variable_in_static_context.dart:89:30: Error: Type variables can't be used in static members.
+//   static Type field3 = Class<T>;
+//                              ^
+//
+// pkg/front_end/testcases/general/type_variable_in_static_context.dart:117:5: Error: Type variables can't be used in static members.
+//     T? local;
+//     ^
+//
+// pkg/front_end/testcases/general/type_variable_in_static_context.dart:118:5: Error: Type variables can't be used in static members.
+//     T;
+//     ^
+//
+// pkg/front_end/testcases/general/type_variable_in_static_context.dart:119:24: Error: Type variables can't be used in static members.
+//     void fun<U extends T>() {}
+//                        ^
+//
+// pkg/front_end/testcases/general/type_variable_in_static_context.dart:132:30: Error: The value 'null' can't be returned from a function with return type 'Mixin<T>' because 'Mixin<T>' is not nullable.
+//  - 'Mixin' is from 'pkg/front_end/testcases/general/type_variable_in_static_context.dart'.
+//   factory Mixin.fact(T t) => null;
+//                              ^
+//
+// pkg/front_end/testcases/general/type_variable_in_static_context.dart:139:5: Error: Type variables can't be used in static members.
+//     T? local;
+//     ^
+//
+// pkg/front_end/testcases/general/type_variable_in_static_context.dart:140:5: Error: Type variables can't be used in static members.
+//     T;
+//     ^
+//
+// pkg/front_end/testcases/general/type_variable_in_static_context.dart:141:24: Error: Type variables can't be used in static members.
+//     void fun<U extends T>() {}
+//                        ^
+//
+// pkg/front_end/testcases/general/type_variable_in_static_context.dart:95:12: Error: Final field 'instanceField' is not initialized.
+// Try to initialize the field in the declaration or in every constructor.
+//   final T? instanceField;
+//            ^^^^^^^^^^^^^
+//
+import self as self;
+import "dart:core" as core;
+
+typedef A<T extends core::Object? = dynamic> = self::Class<T%>;
+typedef B<T extends core::num> = self::Class<T>;
+class Class<T extends core::Object? = dynamic> extends core::Object /*hasConstConstructor*/  {
+  @invalid-expression "pkg/front_end/testcases/general/type_variable_in_static_context.dart:79:4: Error: Couldn't find constructor 'T'.
+  @T()
+   ^"
+  static field invalid-type field0 = null;
+  @#C2
+  static field self::Class<invalid-type>? field1 = null;
+  @#C3
+  static field core::Type field2 = #C4;
+  @#C2
+  static field core::Type field3 = #C5;
+  @#C2
+  static field (invalid-type) → core::Type field4 = (invalid-type t) → core::Type => #C4;
+  @invalid-expression "pkg/front_end/testcases/general/type_variable_in_static_context.dart:94:4: Error: Couldn't find constructor 'T'.
+  @T()
+   ^"
+  final field self::Class::T? instanceField = null;
+  const constructor •() → self::Class<self::Class::T%>
+    : super core::Object::•()
+    ;
+  @invalid-expression "pkg/front_end/testcases/general/type_variable_in_static_context.dart:12:4: Error: Couldn't find constructor 'T'.
+  @T()
+   ^"
+  static method method0<S extends invalid-type>(invalid-type arg) → invalid-type {
+    invalid-type local;
+    #C4;
+    function fun<U extends invalid-type>() → void {}
+  }
+  @#C2
+  static method method1<S extends self::Class<invalid-type>>(self::Class<invalid-type> arg) → self::Class<invalid-type>? {
+    self::Class<invalid-type>? local;
+    new self::Class::•<invalid-type>();
+    #C5;
+    #C7;
+    function fun<U extends self::Class<invalid-type>>() → void {}
+  }
+  @#C3
+  static method method2<S extends self::Class<self::Class<invalid-type>>>(self::Class<self::Class<invalid-type>> arg) → self::Class<self::Class<invalid-type>>? {
+    self::Class<self::Class<invalid-type>>? local;
+    new self::Class::•<self::Class<invalid-type>>();
+    #C8;
+    #C9;
+    function fun<U extends self::Class<self::Class<invalid-type>>>() → void {}
+  }
+  @#C2
+  static method method3<S extends self::Class<invalid-type>>(self::Class<invalid-type> arg) → self::Class<invalid-type>? {
+    self::Class<invalid-type>? local;
+    new self::Class::•<invalid-type>();
+    #C5;
+    #C7;
+    function fun<U extends self::Class<invalid-type>>() → void {}
+  }
+  @#C3
+  static method method4<S extends self::Class<self::Class<invalid-type>>>(self::Class<self::Class<invalid-type>> arg) → self::Class<self::Class<invalid-type>>? {
+    self::Class<self::Class<invalid-type>>? local;
+    new self::Class::•<self::Class<invalid-type>>();
+    #C8;
+    #C9;
+    function fun<U extends self::Class<self::Class<invalid-type>>>() → void {}
+  }
+  @#C2
+  static method method5<S extends self::Class<invalid-type>>(self::Class<invalid-type> arg) → self::Class<invalid-type>? {
+    self::Class<invalid-type>? local;
+    new self::Class::•<invalid-type>();
+    #C5;
+    #C7;
+    function fun<U extends self::Class<invalid-type>>() → void {}
+  }
+  @#C3
+  static method method6<S extends self::Class<self::Class<invalid-type>>>(self::Class<self::Class<invalid-type>> arg) → self::Class<self::Class<invalid-type>>? {
+    self::Class<self::Class<invalid-type>>? local;
+    new self::Class::•<self::Class<invalid-type>>();
+    #C8;
+    #C9;
+    function fun<U extends self::Class<self::Class<invalid-type>>>() → void {}
+  }
+  @#C10
+  static method method7<U extends <S extends invalid-type = dynamic>() → void>(<S extends invalid-type = dynamic>() → void arg) → <S extends invalid-type = dynamic>() →? void {
+    <S extends invalid-type>() →? void local;
+    function fun<V extends <S extends invalid-type>() → void>() → void {}
+  }
+  @invalid-expression "pkg/front_end/testcases/general/type_variable_in_static_context.dart:97:4: Error: Couldn't find constructor 'T'.
+  @T()
+   ^"
+  method instanceMethod<covariant-by-class S extends self::Class::T%>(covariant-by-class self::Class::T% t) → self::Class::T% {
+    self::Class::T%;
+    return t;
+  }
+}
+abstract class Mixin<T extends core::Object? = dynamic> extends core::Object /*isMixinDeclaration*/  {
+  @invalid-expression "pkg/front_end/testcases/general/type_variable_in_static_context.dart:134:4: Error: Couldn't find constructor 'T'.
+  @T()
+   ^"
+  static field invalid-type field0 = null;
+  @invalid-expression "pkg/front_end/testcases/general/type_variable_in_static_context.dart:144:4: Error: Couldn't find constructor 'T'.
+  @T()
+   ^"
+  covariant-by-class field self::Mixin::T? instanceField = null;
+  constructor •(invalid-type t) → self::Mixin<self::Mixin::T%>
+    : super core::Object::•()
+    ;
+  static factory fact<T extends core::Object? = dynamic>(self::Mixin::fact::T% t) → self::Mixin<self::Mixin::fact::T%>
+    return invalid-expression "pkg/front_end/testcases/general/type_variable_in_static_context.dart:132:30: Error: The value 'null' can't be returned from a function with return type 'Mixin<T>' because 'Mixin<T>' is not nullable.
+ - 'Mixin' is from 'pkg/front_end/testcases/general/type_variable_in_static_context.dart'.
+  factory Mixin.fact(T t) => null;
+                             ^" in null as{TypeError,ForNonNullableByDefault} Never;
+  @invalid-expression "pkg/front_end/testcases/general/type_variable_in_static_context.dart:137:4: Error: Couldn't find constructor 'T'.
+  @T()
+   ^"
+  static method staticMethod<S extends invalid-type>(invalid-type arg) → invalid-type {
+    invalid-type local;
+    #C4;
+    function fun<U extends invalid-type>() → void {}
+  }
+  @invalid-expression "pkg/front_end/testcases/general/type_variable_in_static_context.dart:147:4: Error: Couldn't find constructor 'T'.
+  @T()
+   ^"
+  method instanceMethod<covariant-by-class S extends self::Mixin::T%>(covariant-by-class self::Mixin::T% t) → self::Mixin::T% {
+    self::Mixin::T%;
+    return t;
+  }
+}
+extension Extension<T extends core::Object? = dynamic> on T% {
+  static field field0 = self::Extension|field0;
+  field field1 = self::Extension|field1;
+  static method staticMethod = self::Extension|staticMethod;
+  method instanceMethod = self::Extension|instanceMethod;
+  tearoff instanceMethod = self::Extension|get#instanceMethod;
+}
+@invalid-expression "pkg/front_end/testcases/general/type_variable_in_static_context.dart:109:4: Error: Couldn't find constructor 'T'.
+  @T()
+   ^"
+static field invalid-type Extension|field0;
+@invalid-expression "pkg/front_end/testcases/general/type_variable_in_static_context.dart:112:4: Error: Couldn't find constructor 'T'.
+  @T()
+   ^"
+static field invalid-type Extension|field1;
+@invalid-expression "pkg/front_end/testcases/general/type_variable_in_static_context.dart:115:4: Error: Couldn't find constructor 'T'.
+  @T()
+   ^"
+static method Extension|staticMethod<S extends invalid-type>(invalid-type arg) → invalid-type {
+  invalid-type local;
+  #C4;
+  function fun<U extends invalid-type>() → void {}
+}
+@invalid-expression "pkg/front_end/testcases/general/type_variable_in_static_context.dart:122:4: Error: Couldn't find constructor 'T'.
+  @T()
+   ^"
+static method Extension|instanceMethod<T extends core::Object? = dynamic, S extends self::Extension|instanceMethod::T% = dynamic>(lowered final self::Extension|instanceMethod::T% #this, self::Extension|instanceMethod::T% t) → self::Extension|instanceMethod::T% {
+  self::Extension|instanceMethod::T%;
+  return t;
+}
+static method Extension|get#instanceMethod<T extends core::Object? = dynamic>(lowered final self::Extension|get#instanceMethod::T% #this) → <S extends self::Extension|get#instanceMethod::T% = dynamic>(self::Extension|get#instanceMethod::T%) → self::Extension|get#instanceMethod::T%
+  return <S extends self::Extension|get#instanceMethod::T% = dynamic>(self::Extension|get#instanceMethod::T% t) → self::Extension|get#instanceMethod::T% => self::Extension|instanceMethod<self::Extension|get#instanceMethod::T%, S%>(#this, t);
+static method main() → dynamic {}
+static method _#B#new#tearOff<T extends core::num>() → self::Class<self::_#B#new#tearOff::T>
+  return new self::Class::•<self::_#B#new#tearOff::T>();
+
+constants  {
+  #C1 = null
+  #C2 = self::Class<invalid-type> {instanceField:#C1}
+  #C3 = self::Class<self::Class<invalid-type>*> {instanceField:#C1}
+  #C4 = TypeLiteralConstant(invalid-type)
+  #C5 = TypeLiteralConstant(self::Class<invalid-type>*)
+  #C6 = constructor-tearoff self::Class::•
+  #C7 = instantiation self::Class::• <invalid-type>
+  #C8 = TypeLiteralConstant(self::Class<self::Class<invalid-type>*>*)
+  #C9 = instantiation self::Class::• <self::Class<invalid-type>*>
+  #C10 = self::Class<<S extends invalid-type>() →* void> {instanceField:#C1}
+}
+
+
+Constructor coverage from constants:
+org-dartlang-testcase:///type_variable_in_static_context.dart:
+- Class. (from org-dartlang-testcase:///type_variable_in_static_context.dart:10:9)
+- Object. (from org-dartlang-sdk:///sdk/lib/core/object.dart:25:9)
diff --git a/pkg/front_end/testcases/general/type_variable_in_static_context.dart.weak.outline.expect b/pkg/front_end/testcases/general/type_variable_in_static_context.dart.weak.outline.expect
new file mode 100644
index 0000000..fcae7bb
--- /dev/null
+++ b/pkg/front_end/testcases/general/type_variable_in_static_context.dart.weak.outline.expect
@@ -0,0 +1,394 @@
+library /*isNonNullableByDefault*/;
+//
+// Problems in library:
+//
+// pkg/front_end/testcases/general/type_variable_in_static_context.dart:105:3: Error: Extensions can't declare constructors.
+// Try removing the constructor declaration.
+//   Extension(T t);
+//   ^^^^^^^^^
+//
+// pkg/front_end/testcases/general/type_variable_in_static_context.dart:107:3: Error: Extensions can't declare constructors.
+// Try removing the constructor declaration.
+//   factory Extension.fact(T t) => null;
+//   ^^^^^^^
+//
+// pkg/front_end/testcases/general/type_variable_in_static_context.dart:113:5: Error: Extensions can't declare instance fields
+// Try removing the field declaration or making it a static field
+//   T field1;
+//     ^^^^^^
+//
+// pkg/front_end/testcases/general/type_variable_in_static_context.dart:130:3: Error: Mixins can't declare constructors.
+//   Mixin(T t);
+//   ^^^^^
+//
+// pkg/front_end/testcases/general/type_variable_in_static_context.dart:132:3: Error: Mixins can't declare constructors.
+//   factory Mixin.fact(T t) => null;
+//   ^^^^^^^
+//
+// pkg/front_end/testcases/general/type_variable_in_static_context.dart:107:11: Error: Expected 0 type arguments.
+//   factory Extension.fact(T t) => null;
+//           ^
+//
+// pkg/front_end/testcases/general/type_variable_in_static_context.dart:13:31: Error: Type variables can't be used in static members.
+//   static T? method0<S extends T>(T arg) {
+//                               ^
+//
+// pkg/front_end/testcases/general/type_variable_in_static_context.dart:20:44: Error: Type variables can't be used in static members.
+//   static Class<T>? method1<S extends Class<T>>(Class<T> arg) {
+//                                            ^
+//
+// pkg/front_end/testcases/general/type_variable_in_static_context.dart:29:57: Error: Type variables can't be used in static members.
+//   static Class<Class<T>>? method2<S extends Class<Class<T>>>(Class<Class<T>> arg) {
+//                                                         ^
+//
+// pkg/front_end/testcases/general/type_variable_in_static_context.dart:38:36: Error: Type variables can't be used in static members.
+//   static A<T>? method3<S extends A<T>>(A<T> arg) {
+//                                    ^
+//
+// pkg/front_end/testcases/general/type_variable_in_static_context.dart:47:41: Error: Type variables can't be used in static members.
+//   static A<A<T>>? method4<S extends A<A<T>>>(A<A<T>> arg) {
+//                                         ^
+//
+// pkg/front_end/testcases/general/type_variable_in_static_context.dart:56:36: Error: Type variables can't be used in static members.
+//   static B<T>? method5<S extends B<T>>(B<T> arg) {
+//                                    ^
+//
+// pkg/front_end/testcases/general/type_variable_in_static_context.dart:65:41: Error: Type variables can't be used in static members.
+//   static A<B<T>>? method6<S extends A<B<T>>>(A<B<T>> arg) {
+//                                         ^
+//
+// pkg/front_end/testcases/general/type_variable_in_static_context.dart:73:34: Error: Type variables can't be used in static members.
+//   @Class<void Function<S extends T>()>()
+//                                  ^
+//
+// pkg/front_end/testcases/general/type_variable_in_static_context.dart:74:34: Error: Type variables can't be used in static members.
+//   static void Function<S extends T>()? method7<U extends void Function<S extends T>()>(void Function<S extends T>() arg) {
+//                                  ^
+//
+// pkg/front_end/testcases/general/type_variable_in_static_context.dart:74:82: Error: Type variables can't be used in static members.
+//   static void Function<S extends T>()? method7<U extends void Function<S extends T>()>(void Function<S extends T>() arg) {
+//                                                                                  ^
+//
+// pkg/front_end/testcases/general/type_variable_in_static_context.dart:74:112: Error: Type variables can't be used in static members.
+//   static void Function<S extends T>()? method7<U extends void Function<S extends T>()>(void Function<S extends T>() arg) {
+//                                                                                                                ^
+//
+// pkg/front_end/testcases/general/type_variable_in_static_context.dart:116:36: Error: Type variables can't be used in static members.
+//   static T? staticMethod<S extends T>(T arg) {
+//                                    ^
+//
+// pkg/front_end/testcases/general/type_variable_in_static_context.dart:138:36: Error: Type variables can't be used in static members.
+//   static T? staticMethod<S extends T>(T arg) {
+//                                    ^
+//
+// pkg/front_end/testcases/general/type_variable_in_static_context.dart:13:34: Error: Type variables can't be used in static members.
+//   static T? method0<S extends T>(T arg) {
+//                                  ^
+//
+// pkg/front_end/testcases/general/type_variable_in_static_context.dart:13:10: Error: Type variables can't be used in static members.
+//   static T? method0<S extends T>(T arg) {
+//          ^
+//
+// pkg/front_end/testcases/general/type_variable_in_static_context.dart:20:54: Error: Type variables can't be used in static members.
+//   static Class<T>? method1<S extends Class<T>>(Class<T> arg) {
+//                                                      ^
+//
+// pkg/front_end/testcases/general/type_variable_in_static_context.dart:20:16: Error: Type variables can't be used in static members.
+//   static Class<T>? method1<S extends Class<T>>(Class<T> arg) {
+//                ^
+//
+// pkg/front_end/testcases/general/type_variable_in_static_context.dart:29:74: Error: Type variables can't be used in static members.
+//   static Class<Class<T>>? method2<S extends Class<Class<T>>>(Class<Class<T>> arg) {
+//                                                                          ^
+//
+// pkg/front_end/testcases/general/type_variable_in_static_context.dart:29:22: Error: Type variables can't be used in static members.
+//   static Class<Class<T>>? method2<S extends Class<Class<T>>>(Class<Class<T>> arg) {
+//                      ^
+//
+// pkg/front_end/testcases/general/type_variable_in_static_context.dart:38:42: Error: Type variables can't be used in static members.
+//   static A<T>? method3<S extends A<T>>(A<T> arg) {
+//                                          ^
+//
+// pkg/front_end/testcases/general/type_variable_in_static_context.dart:38:12: Error: Type variables can't be used in static members.
+//   static A<T>? method3<S extends A<T>>(A<T> arg) {
+//            ^
+//
+// pkg/front_end/testcases/general/type_variable_in_static_context.dart:47:50: Error: Type variables can't be used in static members.
+//   static A<A<T>>? method4<S extends A<A<T>>>(A<A<T>> arg) {
+//                                                  ^
+//
+// pkg/front_end/testcases/general/type_variable_in_static_context.dart:47:14: Error: Type variables can't be used in static members.
+//   static A<A<T>>? method4<S extends A<A<T>>>(A<A<T>> arg) {
+//              ^
+//
+// pkg/front_end/testcases/general/type_variable_in_static_context.dart:56:42: Error: Type variables can't be used in static members.
+//   static B<T>? method5<S extends B<T>>(B<T> arg) {
+//                                          ^
+//
+// pkg/front_end/testcases/general/type_variable_in_static_context.dart:56:12: Error: Type variables can't be used in static members.
+//   static B<T>? method5<S extends B<T>>(B<T> arg) {
+//            ^
+//
+// pkg/front_end/testcases/general/type_variable_in_static_context.dart:65:50: Error: Type variables can't be used in static members.
+//   static A<B<T>>? method6<S extends A<B<T>>>(A<B<T>> arg) {
+//                                                  ^
+//
+// pkg/front_end/testcases/general/type_variable_in_static_context.dart:65:14: Error: Type variables can't be used in static members.
+//   static A<B<T>>? method6<S extends A<B<T>>>(A<B<T>> arg) {
+//              ^
+//
+// pkg/front_end/testcases/general/type_variable_in_static_context.dart:80:10: Error: Type variables can't be used in static members.
+//   static T field0;
+//          ^
+//
+// pkg/front_end/testcases/general/type_variable_in_static_context.dart:83:16: Error: Type variables can't be used in static members.
+//   static Class<T>? field1;
+//                ^
+//
+// pkg/front_end/testcases/general/type_variable_in_static_context.dart:110:10: Error: Type variables can't be used in static members.
+//   static T field0;
+//          ^
+//
+// pkg/front_end/testcases/general/type_variable_in_static_context.dart:116:39: Error: Type variables can't be used in static members.
+//   static T? staticMethod<S extends T>(T arg) {
+//                                       ^
+//
+// pkg/front_end/testcases/general/type_variable_in_static_context.dart:116:10: Error: Type variables can't be used in static members.
+//   static T? staticMethod<S extends T>(T arg) {
+//          ^
+//
+// pkg/front_end/testcases/general/type_variable_in_static_context.dart:135:10: Error: Type variables can't be used in static members.
+//   static T field0;
+//          ^
+//
+// pkg/front_end/testcases/general/type_variable_in_static_context.dart:138:39: Error: Type variables can't be used in static members.
+//   static T? staticMethod<S extends T>(T arg) {
+//                                       ^
+//
+// pkg/front_end/testcases/general/type_variable_in_static_context.dart:138:10: Error: Type variables can't be used in static members.
+//   static T? staticMethod<S extends T>(T arg) {
+//          ^
+//
+// pkg/front_end/testcases/general/type_variable_in_static_context.dart:92:24: Error: Type variables can't be used in static members.
+//   static var field4 = (T t) => T;
+//                        ^
+//
+// pkg/front_end/testcases/general/type_variable_in_static_context.dart:92:32: Error: Type variables can't be used in static members.
+//   static var field4 = (T t) => T;
+//                                ^
+//
+// pkg/front_end/testcases/general/type_variable_in_static_context.dart:12:4: Error: Couldn't find constructor 'T'.
+//   @T()
+//    ^
+//
+// pkg/front_end/testcases/general/type_variable_in_static_context.dart:19:10: Error: Type variables can't be used in static members.
+//   @Class<T>()
+//          ^
+//
+// pkg/front_end/testcases/general/type_variable_in_static_context.dart:28:16: Error: Type variables can't be used in static members.
+//   @Class<Class<T>>()
+//                ^
+//
+// pkg/front_end/testcases/general/type_variable_in_static_context.dart:37:6: Error: Type variables can't be used in static members.
+//   @A<T>()
+//      ^
+//
+// pkg/front_end/testcases/general/type_variable_in_static_context.dart:46:8: Error: Type variables can't be used in static members.
+//   @A<A<T>>()
+//        ^
+//
+// pkg/front_end/testcases/general/type_variable_in_static_context.dart:55:6: Error: Type variables can't be used in static members.
+//   @B<T>()
+//      ^
+//
+// pkg/front_end/testcases/general/type_variable_in_static_context.dart:64:8: Error: Type variables can't be used in static members.
+//   @A<B<T>>()
+//        ^
+//
+// pkg/front_end/testcases/general/type_variable_in_static_context.dart:79:4: Error: Couldn't find constructor 'T'.
+//   @T()
+//    ^
+//
+// pkg/front_end/testcases/general/type_variable_in_static_context.dart:82:10: Error: Type variables can't be used in static members.
+//   @Class<T>()
+//          ^
+//
+// pkg/front_end/testcases/general/type_variable_in_static_context.dart:85:16: Error: Type variables can't be used in static members.
+//   @Class<Class<T>>()
+//                ^
+//
+// pkg/front_end/testcases/general/type_variable_in_static_context.dart:88:6: Error: Type variables can't be used in static members.
+//   @A<T>()
+//      ^
+//
+// pkg/front_end/testcases/general/type_variable_in_static_context.dart:91:6: Error: Type variables can't be used in static members.
+//   @B<T>()
+//      ^
+//
+// pkg/front_end/testcases/general/type_variable_in_static_context.dart:94:4: Error: Couldn't find constructor 'T'.
+//   @T()
+//    ^
+//
+// pkg/front_end/testcases/general/type_variable_in_static_context.dart:97:4: Error: Couldn't find constructor 'T'.
+//   @T()
+//    ^
+//
+// pkg/front_end/testcases/general/type_variable_in_static_context.dart:109:4: Error: Couldn't find constructor 'T'.
+//   @T()
+//    ^
+//
+// pkg/front_end/testcases/general/type_variable_in_static_context.dart:112:4: Error: Couldn't find constructor 'T'.
+//   @T()
+//    ^
+//
+// pkg/front_end/testcases/general/type_variable_in_static_context.dart:115:4: Error: Couldn't find constructor 'T'.
+//   @T()
+//    ^
+//
+// pkg/front_end/testcases/general/type_variable_in_static_context.dart:122:4: Error: Couldn't find constructor 'T'.
+//   @T()
+//    ^
+//
+// pkg/front_end/testcases/general/type_variable_in_static_context.dart:134:4: Error: Couldn't find constructor 'T'.
+//   @T()
+//    ^
+//
+// pkg/front_end/testcases/general/type_variable_in_static_context.dart:137:4: Error: Couldn't find constructor 'T'.
+//   @T()
+//    ^
+//
+// pkg/front_end/testcases/general/type_variable_in_static_context.dart:144:4: Error: Couldn't find constructor 'T'.
+//   @T()
+//    ^
+//
+// pkg/front_end/testcases/general/type_variable_in_static_context.dart:147:4: Error: Couldn't find constructor 'T'.
+//   @T()
+//    ^
+//
+import self as self;
+import "dart:core" as core;
+
+typedef A<T extends core::Object? = dynamic> = self::Class<T%>;
+typedef B<T extends core::num> = self::Class<T>;
+class Class<T extends core::Object? = dynamic> extends core::Object /*hasConstConstructor*/  {
+  @invalid-expression "pkg/front_end/testcases/general/type_variable_in_static_context.dart:79:4: Error: Couldn't find constructor 'T'.
+  @T()
+   ^"
+  static field invalid-type field0;
+  @self::Class::•<invalid-type>()
+  static field self::Class<invalid-type>? field1;
+  @self::Class::•<self::Class<invalid-type>>()
+  static field core::Type field2;
+  @self::Class::•<invalid-type>()
+  static field core::Type field3;
+  @self::Class::•<invalid-type>()
+  static field (invalid-type) → core::Type field4;
+  @invalid-expression "pkg/front_end/testcases/general/type_variable_in_static_context.dart:94:4: Error: Couldn't find constructor 'T'.
+  @T()
+   ^"
+  final field self::Class::T? instanceField;
+  const constructor •() → self::Class<self::Class::T%>
+    : super core::Object::•()
+    ;
+  @invalid-expression "pkg/front_end/testcases/general/type_variable_in_static_context.dart:12:4: Error: Couldn't find constructor 'T'.
+  @T()
+   ^"
+  static method method0<S extends invalid-type>(invalid-type arg) → invalid-type
+    ;
+  @self::Class::•<invalid-type>()
+  static method method1<S extends self::Class<invalid-type>>(self::Class<invalid-type> arg) → self::Class<invalid-type>?
+    ;
+  @self::Class::•<self::Class<invalid-type>>()
+  static method method2<S extends self::Class<self::Class<invalid-type>>>(self::Class<self::Class<invalid-type>> arg) → self::Class<self::Class<invalid-type>>?
+    ;
+  @self::Class::•<invalid-type>()
+  static method method3<S extends self::Class<invalid-type>>(self::Class<invalid-type> arg) → self::Class<invalid-type>?
+    ;
+  @self::Class::•<self::Class<invalid-type>>()
+  static method method4<S extends self::Class<self::Class<invalid-type>>>(self::Class<self::Class<invalid-type>> arg) → self::Class<self::Class<invalid-type>>?
+    ;
+  @self::Class::•<invalid-type>()
+  static method method5<S extends self::Class<invalid-type>>(self::Class<invalid-type> arg) → self::Class<invalid-type>?
+    ;
+  @self::Class::•<self::Class<invalid-type>>()
+  static method method6<S extends self::Class<self::Class<invalid-type>>>(self::Class<self::Class<invalid-type>> arg) → self::Class<self::Class<invalid-type>>?
+    ;
+  @self::Class::•<<S extends invalid-type>() → void>()
+  static method method7<U extends <S extends invalid-type = dynamic>() → void>(<S extends invalid-type = dynamic>() → void arg) → <S extends invalid-type = dynamic>() →? void
+    ;
+  @invalid-expression "pkg/front_end/testcases/general/type_variable_in_static_context.dart:97:4: Error: Couldn't find constructor 'T'.
+  @T()
+   ^"
+  method instanceMethod<covariant-by-class S extends self::Class::T%>(covariant-by-class self::Class::T% t) → self::Class::T%
+    ;
+}
+abstract class Mixin<T extends core::Object? = dynamic> extends core::Object /*isMixinDeclaration*/  {
+  @invalid-expression "pkg/front_end/testcases/general/type_variable_in_static_context.dart:134:4: Error: Couldn't find constructor 'T'.
+  @T()
+   ^"
+  static field invalid-type field0;
+  @invalid-expression "pkg/front_end/testcases/general/type_variable_in_static_context.dart:144:4: Error: Couldn't find constructor 'T'.
+  @T()
+   ^"
+  covariant-by-class field self::Mixin::T? instanceField;
+  constructor •(invalid-type t) → self::Mixin<self::Mixin::T%>
+    ;
+  static factory fact<T extends core::Object? = dynamic>(self::Mixin::fact::T% t) → self::Mixin<self::Mixin::fact::T%>
+    ;
+  @invalid-expression "pkg/front_end/testcases/general/type_variable_in_static_context.dart:137:4: Error: Couldn't find constructor 'T'.
+  @T()
+   ^"
+  static method staticMethod<S extends invalid-type>(invalid-type arg) → invalid-type
+    ;
+  @invalid-expression "pkg/front_end/testcases/general/type_variable_in_static_context.dart:147:4: Error: Couldn't find constructor 'T'.
+  @T()
+   ^"
+  method instanceMethod<covariant-by-class S extends self::Mixin::T%>(covariant-by-class self::Mixin::T% t) → self::Mixin::T%
+    ;
+}
+extension Extension<T extends core::Object? = dynamic> on T% {
+  static field field0 = self::Extension|field0;
+  field field1 = self::Extension|field1;
+  static method staticMethod = self::Extension|staticMethod;
+  method instanceMethod = self::Extension|instanceMethod;
+  tearoff instanceMethod = self::Extension|get#instanceMethod;
+}
+@invalid-expression "pkg/front_end/testcases/general/type_variable_in_static_context.dart:109:4: Error: Couldn't find constructor 'T'.
+  @T()
+   ^"
+static field invalid-type Extension|field0;
+@invalid-expression "pkg/front_end/testcases/general/type_variable_in_static_context.dart:112:4: Error: Couldn't find constructor 'T'.
+  @T()
+   ^"
+static field invalid-type Extension|field1;
+@invalid-expression "pkg/front_end/testcases/general/type_variable_in_static_context.dart:115:4: Error: Couldn't find constructor 'T'.
+  @T()
+   ^"
+static method Extension|staticMethod<S extends invalid-type>(invalid-type arg) → invalid-type
+  ;
+@invalid-expression "pkg/front_end/testcases/general/type_variable_in_static_context.dart:122:4: Error: Couldn't find constructor 'T'.
+  @T()
+   ^"
+static method Extension|instanceMethod<T extends core::Object? = dynamic, S extends self::Extension|instanceMethod::T% = dynamic>(lowered final self::Extension|instanceMethod::T% #this, self::Extension|instanceMethod::T% t) → self::Extension|instanceMethod::T%
+  ;
+static method Extension|get#instanceMethod<T extends core::Object? = dynamic>(lowered final self::Extension|get#instanceMethod::T% #this) → <S extends self::Extension|get#instanceMethod::T% = dynamic>(self::Extension|get#instanceMethod::T%) → self::Extension|get#instanceMethod::T%
+  return <S extends self::Extension|get#instanceMethod::T% = dynamic>(self::Extension|get#instanceMethod::T% t) → self::Extension|get#instanceMethod::T% => self::Extension|instanceMethod<self::Extension|get#instanceMethod::T%, S%>(#this, t);
+static method main() → dynamic
+  ;
+static method _#B#new#tearOff<T extends core::num>() → self::Class<self::_#B#new#tearOff::T>
+  return new self::Class::•<self::_#B#new#tearOff::T>();
+
+
+Extra constant evaluation status:
+Evaluated: ConstructorInvocation @ org-dartlang-testcase:///type_variable_in_static_context.dart:19:4 -> InstanceConstant(const Class<<invalid>>{Class.instanceField: null})
+Evaluated: ConstructorInvocation @ org-dartlang-testcase:///type_variable_in_static_context.dart:28:4 -> InstanceConstant(const Class<Class<<invalid>>*>{Class.instanceField: null})
+Evaluated: ConstructorInvocation @ org-dartlang-testcase:///type_variable_in_static_context.dart:37:4 -> InstanceConstant(const Class<<invalid>>{Class.instanceField: null})
+Evaluated: ConstructorInvocation @ org-dartlang-testcase:///type_variable_in_static_context.dart:46:4 -> InstanceConstant(const Class<Class<<invalid>>*>{Class.instanceField: null})
+Evaluated: ConstructorInvocation @ org-dartlang-testcase:///type_variable_in_static_context.dart:55:4 -> InstanceConstant(const Class<<invalid>>{Class.instanceField: null})
+Evaluated: ConstructorInvocation @ org-dartlang-testcase:///type_variable_in_static_context.dart:64:4 -> InstanceConstant(const Class<Class<<invalid>>*>{Class.instanceField: null})
+Evaluated: ConstructorInvocation @ org-dartlang-testcase:///type_variable_in_static_context.dart:73:4 -> InstanceConstant(const Class<void Function<S extends <invalid>>()*>{Class.instanceField: null})
+Evaluated: ConstructorInvocation @ org-dartlang-testcase:///type_variable_in_static_context.dart:82:4 -> InstanceConstant(const Class<<invalid>>{Class.instanceField: null})
+Evaluated: ConstructorInvocation @ org-dartlang-testcase:///type_variable_in_static_context.dart:85:4 -> InstanceConstant(const Class<Class<<invalid>>*>{Class.instanceField: null})
+Evaluated: ConstructorInvocation @ org-dartlang-testcase:///type_variable_in_static_context.dart:88:4 -> InstanceConstant(const Class<<invalid>>{Class.instanceField: null})
+Evaluated: ConstructorInvocation @ org-dartlang-testcase:///type_variable_in_static_context.dart:91:4 -> InstanceConstant(const Class<<invalid>>{Class.instanceField: null})
+Extra constant evaluation: evaluated: 16, effectively constant: 11
diff --git a/pkg/front_end/testcases/general/type_variable_in_static_context.dart.weak.transformed.expect b/pkg/front_end/testcases/general/type_variable_in_static_context.dart.weak.transformed.expect
new file mode 100644
index 0000000..c523d09
--- /dev/null
+++ b/pkg/front_end/testcases/general/type_variable_in_static_context.dart.weak.transformed.expect
@@ -0,0 +1,630 @@
+library /*isNonNullableByDefault*/;
+//
+// Problems in library:
+//
+// pkg/front_end/testcases/general/type_variable_in_static_context.dart:105:3: Error: Extensions can't declare constructors.
+// Try removing the constructor declaration.
+//   Extension(T t);
+//   ^^^^^^^^^
+//
+// pkg/front_end/testcases/general/type_variable_in_static_context.dart:107:3: Error: Extensions can't declare constructors.
+// Try removing the constructor declaration.
+//   factory Extension.fact(T t) => null;
+//   ^^^^^^^
+//
+// pkg/front_end/testcases/general/type_variable_in_static_context.dart:113:5: Error: Extensions can't declare instance fields
+// Try removing the field declaration or making it a static field
+//   T field1;
+//     ^^^^^^
+//
+// pkg/front_end/testcases/general/type_variable_in_static_context.dart:130:3: Error: Mixins can't declare constructors.
+//   Mixin(T t);
+//   ^^^^^
+//
+// pkg/front_end/testcases/general/type_variable_in_static_context.dart:132:3: Error: Mixins can't declare constructors.
+//   factory Mixin.fact(T t) => null;
+//   ^^^^^^^
+//
+// pkg/front_end/testcases/general/type_variable_in_static_context.dart:107:11: Error: Expected 0 type arguments.
+//   factory Extension.fact(T t) => null;
+//           ^
+//
+// pkg/front_end/testcases/general/type_variable_in_static_context.dart:13:31: Error: Type variables can't be used in static members.
+//   static T? method0<S extends T>(T arg) {
+//                               ^
+//
+// pkg/front_end/testcases/general/type_variable_in_static_context.dart:20:44: Error: Type variables can't be used in static members.
+//   static Class<T>? method1<S extends Class<T>>(Class<T> arg) {
+//                                            ^
+//
+// pkg/front_end/testcases/general/type_variable_in_static_context.dart:29:57: Error: Type variables can't be used in static members.
+//   static Class<Class<T>>? method2<S extends Class<Class<T>>>(Class<Class<T>> arg) {
+//                                                         ^
+//
+// pkg/front_end/testcases/general/type_variable_in_static_context.dart:38:36: Error: Type variables can't be used in static members.
+//   static A<T>? method3<S extends A<T>>(A<T> arg) {
+//                                    ^
+//
+// pkg/front_end/testcases/general/type_variable_in_static_context.dart:47:41: Error: Type variables can't be used in static members.
+//   static A<A<T>>? method4<S extends A<A<T>>>(A<A<T>> arg) {
+//                                         ^
+//
+// pkg/front_end/testcases/general/type_variable_in_static_context.dart:56:36: Error: Type variables can't be used in static members.
+//   static B<T>? method5<S extends B<T>>(B<T> arg) {
+//                                    ^
+//
+// pkg/front_end/testcases/general/type_variable_in_static_context.dart:65:41: Error: Type variables can't be used in static members.
+//   static A<B<T>>? method6<S extends A<B<T>>>(A<B<T>> arg) {
+//                                         ^
+//
+// pkg/front_end/testcases/general/type_variable_in_static_context.dart:73:34: Error: Type variables can't be used in static members.
+//   @Class<void Function<S extends T>()>()
+//                                  ^
+//
+// pkg/front_end/testcases/general/type_variable_in_static_context.dart:74:34: Error: Type variables can't be used in static members.
+//   static void Function<S extends T>()? method7<U extends void Function<S extends T>()>(void Function<S extends T>() arg) {
+//                                  ^
+//
+// pkg/front_end/testcases/general/type_variable_in_static_context.dart:74:82: Error: Type variables can't be used in static members.
+//   static void Function<S extends T>()? method7<U extends void Function<S extends T>()>(void Function<S extends T>() arg) {
+//                                                                                  ^
+//
+// pkg/front_end/testcases/general/type_variable_in_static_context.dart:74:112: Error: Type variables can't be used in static members.
+//   static void Function<S extends T>()? method7<U extends void Function<S extends T>()>(void Function<S extends T>() arg) {
+//                                                                                                                ^
+//
+// pkg/front_end/testcases/general/type_variable_in_static_context.dart:116:36: Error: Type variables can't be used in static members.
+//   static T? staticMethod<S extends T>(T arg) {
+//                                    ^
+//
+// pkg/front_end/testcases/general/type_variable_in_static_context.dart:138:36: Error: Type variables can't be used in static members.
+//   static T? staticMethod<S extends T>(T arg) {
+//                                    ^
+//
+// pkg/front_end/testcases/general/type_variable_in_static_context.dart:13:34: Error: Type variables can't be used in static members.
+//   static T? method0<S extends T>(T arg) {
+//                                  ^
+//
+// pkg/front_end/testcases/general/type_variable_in_static_context.dart:13:10: Error: Type variables can't be used in static members.
+//   static T? method0<S extends T>(T arg) {
+//          ^
+//
+// pkg/front_end/testcases/general/type_variable_in_static_context.dart:20:54: Error: Type variables can't be used in static members.
+//   static Class<T>? method1<S extends Class<T>>(Class<T> arg) {
+//                                                      ^
+//
+// pkg/front_end/testcases/general/type_variable_in_static_context.dart:20:16: Error: Type variables can't be used in static members.
+//   static Class<T>? method1<S extends Class<T>>(Class<T> arg) {
+//                ^
+//
+// pkg/front_end/testcases/general/type_variable_in_static_context.dart:29:74: Error: Type variables can't be used in static members.
+//   static Class<Class<T>>? method2<S extends Class<Class<T>>>(Class<Class<T>> arg) {
+//                                                                          ^
+//
+// pkg/front_end/testcases/general/type_variable_in_static_context.dart:29:22: Error: Type variables can't be used in static members.
+//   static Class<Class<T>>? method2<S extends Class<Class<T>>>(Class<Class<T>> arg) {
+//                      ^
+//
+// pkg/front_end/testcases/general/type_variable_in_static_context.dart:38:42: Error: Type variables can't be used in static members.
+//   static A<T>? method3<S extends A<T>>(A<T> arg) {
+//                                          ^
+//
+// pkg/front_end/testcases/general/type_variable_in_static_context.dart:38:12: Error: Type variables can't be used in static members.
+//   static A<T>? method3<S extends A<T>>(A<T> arg) {
+//            ^
+//
+// pkg/front_end/testcases/general/type_variable_in_static_context.dart:47:50: Error: Type variables can't be used in static members.
+//   static A<A<T>>? method4<S extends A<A<T>>>(A<A<T>> arg) {
+//                                                  ^
+//
+// pkg/front_end/testcases/general/type_variable_in_static_context.dart:47:14: Error: Type variables can't be used in static members.
+//   static A<A<T>>? method4<S extends A<A<T>>>(A<A<T>> arg) {
+//              ^
+//
+// pkg/front_end/testcases/general/type_variable_in_static_context.dart:56:42: Error: Type variables can't be used in static members.
+//   static B<T>? method5<S extends B<T>>(B<T> arg) {
+//                                          ^
+//
+// pkg/front_end/testcases/general/type_variable_in_static_context.dart:56:12: Error: Type variables can't be used in static members.
+//   static B<T>? method5<S extends B<T>>(B<T> arg) {
+//            ^
+//
+// pkg/front_end/testcases/general/type_variable_in_static_context.dart:65:50: Error: Type variables can't be used in static members.
+//   static A<B<T>>? method6<S extends A<B<T>>>(A<B<T>> arg) {
+//                                                  ^
+//
+// pkg/front_end/testcases/general/type_variable_in_static_context.dart:65:14: Error: Type variables can't be used in static members.
+//   static A<B<T>>? method6<S extends A<B<T>>>(A<B<T>> arg) {
+//              ^
+//
+// pkg/front_end/testcases/general/type_variable_in_static_context.dart:80:10: Error: Type variables can't be used in static members.
+//   static T field0;
+//          ^
+//
+// pkg/front_end/testcases/general/type_variable_in_static_context.dart:83:16: Error: Type variables can't be used in static members.
+//   static Class<T>? field1;
+//                ^
+//
+// pkg/front_end/testcases/general/type_variable_in_static_context.dart:110:10: Error: Type variables can't be used in static members.
+//   static T field0;
+//          ^
+//
+// pkg/front_end/testcases/general/type_variable_in_static_context.dart:116:39: Error: Type variables can't be used in static members.
+//   static T? staticMethod<S extends T>(T arg) {
+//                                       ^
+//
+// pkg/front_end/testcases/general/type_variable_in_static_context.dart:116:10: Error: Type variables can't be used in static members.
+//   static T? staticMethod<S extends T>(T arg) {
+//          ^
+//
+// pkg/front_end/testcases/general/type_variable_in_static_context.dart:135:10: Error: Type variables can't be used in static members.
+//   static T field0;
+//          ^
+//
+// pkg/front_end/testcases/general/type_variable_in_static_context.dart:138:39: Error: Type variables can't be used in static members.
+//   static T? staticMethod<S extends T>(T arg) {
+//                                       ^
+//
+// pkg/front_end/testcases/general/type_variable_in_static_context.dart:138:10: Error: Type variables can't be used in static members.
+//   static T? staticMethod<S extends T>(T arg) {
+//          ^
+//
+// pkg/front_end/testcases/general/type_variable_in_static_context.dart:92:24: Error: Type variables can't be used in static members.
+//   static var field4 = (T t) => T;
+//                        ^
+//
+// pkg/front_end/testcases/general/type_variable_in_static_context.dart:92:32: Error: Type variables can't be used in static members.
+//   static var field4 = (T t) => T;
+//                                ^
+//
+// pkg/front_end/testcases/general/type_variable_in_static_context.dart:12:4: Error: Couldn't find constructor 'T'.
+//   @T()
+//    ^
+//
+// pkg/front_end/testcases/general/type_variable_in_static_context.dart:19:10: Error: Type variables can't be used in static members.
+//   @Class<T>()
+//          ^
+//
+// pkg/front_end/testcases/general/type_variable_in_static_context.dart:28:16: Error: Type variables can't be used in static members.
+//   @Class<Class<T>>()
+//                ^
+//
+// pkg/front_end/testcases/general/type_variable_in_static_context.dart:37:6: Error: Type variables can't be used in static members.
+//   @A<T>()
+//      ^
+//
+// pkg/front_end/testcases/general/type_variable_in_static_context.dart:46:8: Error: Type variables can't be used in static members.
+//   @A<A<T>>()
+//        ^
+//
+// pkg/front_end/testcases/general/type_variable_in_static_context.dart:55:6: Error: Type variables can't be used in static members.
+//   @B<T>()
+//      ^
+//
+// pkg/front_end/testcases/general/type_variable_in_static_context.dart:64:8: Error: Type variables can't be used in static members.
+//   @A<B<T>>()
+//        ^
+//
+// pkg/front_end/testcases/general/type_variable_in_static_context.dart:79:4: Error: Couldn't find constructor 'T'.
+//   @T()
+//    ^
+//
+// pkg/front_end/testcases/general/type_variable_in_static_context.dart:82:10: Error: Type variables can't be used in static members.
+//   @Class<T>()
+//          ^
+//
+// pkg/front_end/testcases/general/type_variable_in_static_context.dart:85:16: Error: Type variables can't be used in static members.
+//   @Class<Class<T>>()
+//                ^
+//
+// pkg/front_end/testcases/general/type_variable_in_static_context.dart:88:6: Error: Type variables can't be used in static members.
+//   @A<T>()
+//      ^
+//
+// pkg/front_end/testcases/general/type_variable_in_static_context.dart:91:6: Error: Type variables can't be used in static members.
+//   @B<T>()
+//      ^
+//
+// pkg/front_end/testcases/general/type_variable_in_static_context.dart:94:4: Error: Couldn't find constructor 'T'.
+//   @T()
+//    ^
+//
+// pkg/front_end/testcases/general/type_variable_in_static_context.dart:97:4: Error: Couldn't find constructor 'T'.
+//   @T()
+//    ^
+//
+// pkg/front_end/testcases/general/type_variable_in_static_context.dart:109:4: Error: Couldn't find constructor 'T'.
+//   @T()
+//    ^
+//
+// pkg/front_end/testcases/general/type_variable_in_static_context.dart:112:4: Error: Couldn't find constructor 'T'.
+//   @T()
+//    ^
+//
+// pkg/front_end/testcases/general/type_variable_in_static_context.dart:115:4: Error: Couldn't find constructor 'T'.
+//   @T()
+//    ^
+//
+// pkg/front_end/testcases/general/type_variable_in_static_context.dart:122:4: Error: Couldn't find constructor 'T'.
+//   @T()
+//    ^
+//
+// pkg/front_end/testcases/general/type_variable_in_static_context.dart:134:4: Error: Couldn't find constructor 'T'.
+//   @T()
+//    ^
+//
+// pkg/front_end/testcases/general/type_variable_in_static_context.dart:137:4: Error: Couldn't find constructor 'T'.
+//   @T()
+//    ^
+//
+// pkg/front_end/testcases/general/type_variable_in_static_context.dart:144:4: Error: Couldn't find constructor 'T'.
+//   @T()
+//    ^
+//
+// pkg/front_end/testcases/general/type_variable_in_static_context.dart:147:4: Error: Couldn't find constructor 'T'.
+//   @T()
+//    ^
+//
+// pkg/front_end/testcases/general/type_variable_in_static_context.dart:14:5: Error: Type variables can't be used in static members.
+//     T? local;
+//     ^
+//
+// pkg/front_end/testcases/general/type_variable_in_static_context.dart:15:5: Error: Type variables can't be used in static members.
+//     T;
+//     ^
+//
+// pkg/front_end/testcases/general/type_variable_in_static_context.dart:16:24: Error: Type variables can't be used in static members.
+//     void fun<U extends T>() {}
+//                        ^
+//
+// pkg/front_end/testcases/general/type_variable_in_static_context.dart:21:11: Error: Type variables can't be used in static members.
+//     Class<T>? local;
+//           ^
+//
+// pkg/front_end/testcases/general/type_variable_in_static_context.dart:22:15: Error: Type variables can't be used in static members.
+//     new Class<T>();
+//               ^
+//
+// pkg/front_end/testcases/general/type_variable_in_static_context.dart:23:11: Error: Type variables can't be used in static members.
+//     Class<T>;
+//           ^
+//
+// pkg/front_end/testcases/general/type_variable_in_static_context.dart:24:11: Error: Type variables can't be used in static members.
+//     Class<T>.new;
+//           ^
+//
+// pkg/front_end/testcases/general/type_variable_in_static_context.dart:25:30: Error: Type variables can't be used in static members.
+//     void fun<U extends Class<T>>() {}
+//                              ^
+//
+// pkg/front_end/testcases/general/type_variable_in_static_context.dart:30:17: Error: Type variables can't be used in static members.
+//     Class<Class<T>>? local;
+//                 ^
+//
+// pkg/front_end/testcases/general/type_variable_in_static_context.dart:31:21: Error: Type variables can't be used in static members.
+//     new Class<Class<T>>();
+//                     ^
+//
+// pkg/front_end/testcases/general/type_variable_in_static_context.dart:32:17: Error: Type variables can't be used in static members.
+//     Class<Class<T>>;
+//                 ^
+//
+// pkg/front_end/testcases/general/type_variable_in_static_context.dart:33:17: Error: Type variables can't be used in static members.
+//     Class<Class<T>>.new;
+//                 ^
+//
+// pkg/front_end/testcases/general/type_variable_in_static_context.dart:34:36: Error: Type variables can't be used in static members.
+//     void fun<U extends Class<Class<T>>>() {}
+//                                    ^
+//
+// pkg/front_end/testcases/general/type_variable_in_static_context.dart:39:7: Error: Type variables can't be used in static members.
+//     A<T>? local;
+//       ^
+//
+// pkg/front_end/testcases/general/type_variable_in_static_context.dart:40:11: Error: Type variables can't be used in static members.
+//     new A<T>();
+//           ^
+//
+// pkg/front_end/testcases/general/type_variable_in_static_context.dart:41:7: Error: Type variables can't be used in static members.
+//     A<T>;
+//       ^
+//
+// pkg/front_end/testcases/general/type_variable_in_static_context.dart:42:7: Error: Type variables can't be used in static members.
+//     A<T>.new;
+//       ^
+//
+// pkg/front_end/testcases/general/type_variable_in_static_context.dart:43:26: Error: Type variables can't be used in static members.
+//     void fun<U extends A<T>>() {}
+//                          ^
+//
+// pkg/front_end/testcases/general/type_variable_in_static_context.dart:48:9: Error: Type variables can't be used in static members.
+//     A<A<T>>? local;
+//         ^
+//
+// pkg/front_end/testcases/general/type_variable_in_static_context.dart:49:13: Error: Type variables can't be used in static members.
+//     new A<A<T>>();
+//             ^
+//
+// pkg/front_end/testcases/general/type_variable_in_static_context.dart:50:9: Error: Type variables can't be used in static members.
+//     A<A<T>>;
+//         ^
+//
+// pkg/front_end/testcases/general/type_variable_in_static_context.dart:51:9: Error: Type variables can't be used in static members.
+//     A<A<T>>.new;
+//         ^
+//
+// pkg/front_end/testcases/general/type_variable_in_static_context.dart:52:28: Error: Type variables can't be used in static members.
+//     void fun<U extends A<A<T>>>() {}
+//                            ^
+//
+// pkg/front_end/testcases/general/type_variable_in_static_context.dart:57:7: Error: Type variables can't be used in static members.
+//     B<T>? local;
+//       ^
+//
+// pkg/front_end/testcases/general/type_variable_in_static_context.dart:58:11: Error: Type variables can't be used in static members.
+//     new B<T>();
+//           ^
+//
+// pkg/front_end/testcases/general/type_variable_in_static_context.dart:59:7: Error: Type variables can't be used in static members.
+//     B<T>;
+//       ^
+//
+// pkg/front_end/testcases/general/type_variable_in_static_context.dart:60:7: Error: Type variables can't be used in static members.
+//     B<T>.new;
+//       ^
+//
+// pkg/front_end/testcases/general/type_variable_in_static_context.dart:61:26: Error: Type variables can't be used in static members.
+//     void fun<U extends B<T>>() {}
+//                          ^
+//
+// pkg/front_end/testcases/general/type_variable_in_static_context.dart:66:9: Error: Type variables can't be used in static members.
+//     A<B<T>>? local;
+//         ^
+//
+// pkg/front_end/testcases/general/type_variable_in_static_context.dart:67:13: Error: Type variables can't be used in static members.
+//     new A<B<T>>();
+//             ^
+//
+// pkg/front_end/testcases/general/type_variable_in_static_context.dart:68:9: Error: Type variables can't be used in static members.
+//     A<B<T>>;
+//         ^
+//
+// pkg/front_end/testcases/general/type_variable_in_static_context.dart:69:9: Error: Type variables can't be used in static members.
+//     A<B<T>>.new;
+//         ^
+//
+// pkg/front_end/testcases/general/type_variable_in_static_context.dart:70:28: Error: Type variables can't be used in static members.
+//     void fun<U extends A<B<T>>>() {}
+//                            ^
+//
+// pkg/front_end/testcases/general/type_variable_in_static_context.dart:75:29: Error: Type variables can't be used in static members.
+//     void Function<S extends T>()? local;
+//                             ^
+//
+// pkg/front_end/testcases/general/type_variable_in_static_context.dart:76:48: Error: Type variables can't be used in static members.
+//     void fun<V extends void Function<S extends T>()>() {}
+//                                                ^
+//
+// pkg/front_end/testcases/general/type_variable_in_static_context.dart:86:24: Error: Type variables can't be used in static members.
+//   static Type field2 = T;
+//                        ^
+//
+// pkg/front_end/testcases/general/type_variable_in_static_context.dart:89:30: Error: Type variables can't be used in static members.
+//   static Type field3 = Class<T>;
+//                              ^
+//
+// pkg/front_end/testcases/general/type_variable_in_static_context.dart:117:5: Error: Type variables can't be used in static members.
+//     T? local;
+//     ^
+//
+// pkg/front_end/testcases/general/type_variable_in_static_context.dart:118:5: Error: Type variables can't be used in static members.
+//     T;
+//     ^
+//
+// pkg/front_end/testcases/general/type_variable_in_static_context.dart:119:24: Error: Type variables can't be used in static members.
+//     void fun<U extends T>() {}
+//                        ^
+//
+// pkg/front_end/testcases/general/type_variable_in_static_context.dart:132:30: Error: The value 'null' can't be returned from a function with return type 'Mixin<T>' because 'Mixin<T>' is not nullable.
+//  - 'Mixin' is from 'pkg/front_end/testcases/general/type_variable_in_static_context.dart'.
+//   factory Mixin.fact(T t) => null;
+//                              ^
+//
+// pkg/front_end/testcases/general/type_variable_in_static_context.dart:139:5: Error: Type variables can't be used in static members.
+//     T? local;
+//     ^
+//
+// pkg/front_end/testcases/general/type_variable_in_static_context.dart:140:5: Error: Type variables can't be used in static members.
+//     T;
+//     ^
+//
+// pkg/front_end/testcases/general/type_variable_in_static_context.dart:141:24: Error: Type variables can't be used in static members.
+//     void fun<U extends T>() {}
+//                        ^
+//
+// pkg/front_end/testcases/general/type_variable_in_static_context.dart:95:12: Error: Final field 'instanceField' is not initialized.
+// Try to initialize the field in the declaration or in every constructor.
+//   final T? instanceField;
+//            ^^^^^^^^^^^^^
+//
+import self as self;
+import "dart:core" as core;
+
+typedef A<T extends core::Object? = dynamic> = self::Class<T%>;
+typedef B<T extends core::num> = self::Class<T>;
+class Class<T extends core::Object? = dynamic> extends core::Object /*hasConstConstructor*/  {
+  @invalid-expression "pkg/front_end/testcases/general/type_variable_in_static_context.dart:79:4: Error: Couldn't find constructor 'T'.
+  @T()
+   ^"
+  static field invalid-type field0 = null;
+  @#C2
+  static field self::Class<invalid-type>? field1 = null;
+  @#C3
+  static field core::Type field2 = #C4;
+  @#C2
+  static field core::Type field3 = #C5;
+  @#C2
+  static field (invalid-type) → core::Type field4 = (invalid-type t) → core::Type => #C4;
+  @invalid-expression "pkg/front_end/testcases/general/type_variable_in_static_context.dart:94:4: Error: Couldn't find constructor 'T'.
+  @T()
+   ^"
+  final field self::Class::T? instanceField = null;
+  const constructor •() → self::Class<self::Class::T%>
+    : super core::Object::•()
+    ;
+  @invalid-expression "pkg/front_end/testcases/general/type_variable_in_static_context.dart:12:4: Error: Couldn't find constructor 'T'.
+  @T()
+   ^"
+  static method method0<S extends invalid-type>(invalid-type arg) → invalid-type {
+    invalid-type local;
+    #C4;
+    function fun<U extends invalid-type>() → void {}
+  }
+  @#C2
+  static method method1<S extends self::Class<invalid-type>>(self::Class<invalid-type> arg) → self::Class<invalid-type>? {
+    self::Class<invalid-type>? local;
+    new self::Class::•<invalid-type>();
+    #C5;
+    #C7;
+    function fun<U extends self::Class<invalid-type>>() → void {}
+  }
+  @#C3
+  static method method2<S extends self::Class<self::Class<invalid-type>>>(self::Class<self::Class<invalid-type>> arg) → self::Class<self::Class<invalid-type>>? {
+    self::Class<self::Class<invalid-type>>? local;
+    new self::Class::•<self::Class<invalid-type>>();
+    #C8;
+    #C9;
+    function fun<U extends self::Class<self::Class<invalid-type>>>() → void {}
+  }
+  @#C2
+  static method method3<S extends self::Class<invalid-type>>(self::Class<invalid-type> arg) → self::Class<invalid-type>? {
+    self::Class<invalid-type>? local;
+    new self::Class::•<invalid-type>();
+    #C5;
+    #C7;
+    function fun<U extends self::Class<invalid-type>>() → void {}
+  }
+  @#C3
+  static method method4<S extends self::Class<self::Class<invalid-type>>>(self::Class<self::Class<invalid-type>> arg) → self::Class<self::Class<invalid-type>>? {
+    self::Class<self::Class<invalid-type>>? local;
+    new self::Class::•<self::Class<invalid-type>>();
+    #C8;
+    #C9;
+    function fun<U extends self::Class<self::Class<invalid-type>>>() → void {}
+  }
+  @#C2
+  static method method5<S extends self::Class<invalid-type>>(self::Class<invalid-type> arg) → self::Class<invalid-type>? {
+    self::Class<invalid-type>? local;
+    new self::Class::•<invalid-type>();
+    #C5;
+    #C7;
+    function fun<U extends self::Class<invalid-type>>() → void {}
+  }
+  @#C3
+  static method method6<S extends self::Class<self::Class<invalid-type>>>(self::Class<self::Class<invalid-type>> arg) → self::Class<self::Class<invalid-type>>? {
+    self::Class<self::Class<invalid-type>>? local;
+    new self::Class::•<self::Class<invalid-type>>();
+    #C8;
+    #C9;
+    function fun<U extends self::Class<self::Class<invalid-type>>>() → void {}
+  }
+  @#C10
+  static method method7<U extends <S extends invalid-type = dynamic>() → void>(<S extends invalid-type = dynamic>() → void arg) → <S extends invalid-type = dynamic>() →? void {
+    <S extends invalid-type>() →? void local;
+    function fun<V extends <S extends invalid-type>() → void>() → void {}
+  }
+  @invalid-expression "pkg/front_end/testcases/general/type_variable_in_static_context.dart:97:4: Error: Couldn't find constructor 'T'.
+  @T()
+   ^"
+  method instanceMethod<covariant-by-class S extends self::Class::T%>(covariant-by-class self::Class::T% t) → self::Class::T% {
+    self::Class::T%;
+    return t;
+  }
+}
+abstract class Mixin<T extends core::Object? = dynamic> extends core::Object /*isMixinDeclaration*/  {
+  @invalid-expression "pkg/front_end/testcases/general/type_variable_in_static_context.dart:134:4: Error: Couldn't find constructor 'T'.
+  @T()
+   ^"
+  static field invalid-type field0 = null;
+  @invalid-expression "pkg/front_end/testcases/general/type_variable_in_static_context.dart:144:4: Error: Couldn't find constructor 'T'.
+  @T()
+   ^"
+  covariant-by-class field self::Mixin::T? instanceField = null;
+  constructor •(invalid-type t) → self::Mixin<self::Mixin::T%>
+    : super core::Object::•()
+    ;
+  static factory fact<T extends core::Object? = dynamic>(self::Mixin::fact::T% t) → self::Mixin<self::Mixin::fact::T%>
+    return invalid-expression "pkg/front_end/testcases/general/type_variable_in_static_context.dart:132:30: Error: The value 'null' can't be returned from a function with return type 'Mixin<T>' because 'Mixin<T>' is not nullable.
+ - 'Mixin' is from 'pkg/front_end/testcases/general/type_variable_in_static_context.dart'.
+  factory Mixin.fact(T t) => null;
+                             ^" in null;
+  @invalid-expression "pkg/front_end/testcases/general/type_variable_in_static_context.dart:137:4: Error: Couldn't find constructor 'T'.
+  @T()
+   ^"
+  static method staticMethod<S extends invalid-type>(invalid-type arg) → invalid-type {
+    invalid-type local;
+    #C4;
+    function fun<U extends invalid-type>() → void {}
+  }
+  @invalid-expression "pkg/front_end/testcases/general/type_variable_in_static_context.dart:147:4: Error: Couldn't find constructor 'T'.
+  @T()
+   ^"
+  method instanceMethod<covariant-by-class S extends self::Mixin::T%>(covariant-by-class self::Mixin::T% t) → self::Mixin::T% {
+    self::Mixin::T%;
+    return t;
+  }
+}
+extension Extension<T extends core::Object? = dynamic> on T% {
+  static field field0 = self::Extension|field0;
+  field field1 = self::Extension|field1;
+  static method staticMethod = self::Extension|staticMethod;
+  method instanceMethod = self::Extension|instanceMethod;
+  tearoff instanceMethod = self::Extension|get#instanceMethod;
+}
+@invalid-expression "pkg/front_end/testcases/general/type_variable_in_static_context.dart:109:4: Error: Couldn't find constructor 'T'.
+  @T()
+   ^"
+static field invalid-type Extension|field0;
+@invalid-expression "pkg/front_end/testcases/general/type_variable_in_static_context.dart:112:4: Error: Couldn't find constructor 'T'.
+  @T()
+   ^"
+static field invalid-type Extension|field1;
+@invalid-expression "pkg/front_end/testcases/general/type_variable_in_static_context.dart:115:4: Error: Couldn't find constructor 'T'.
+  @T()
+   ^"
+static method Extension|staticMethod<S extends invalid-type>(invalid-type arg) → invalid-type {
+  invalid-type local;
+  #C4;
+  function fun<U extends invalid-type>() → void {}
+}
+@invalid-expression "pkg/front_end/testcases/general/type_variable_in_static_context.dart:122:4: Error: Couldn't find constructor 'T'.
+  @T()
+   ^"
+static method Extension|instanceMethod<T extends core::Object? = dynamic, S extends self::Extension|instanceMethod::T% = dynamic>(lowered final self::Extension|instanceMethod::T% #this, self::Extension|instanceMethod::T% t) → self::Extension|instanceMethod::T% {
+  self::Extension|instanceMethod::T%;
+  return t;
+}
+static method Extension|get#instanceMethod<T extends core::Object? = dynamic>(lowered final self::Extension|get#instanceMethod::T% #this) → <S extends self::Extension|get#instanceMethod::T% = dynamic>(self::Extension|get#instanceMethod::T%) → self::Extension|get#instanceMethod::T%
+  return <S extends self::Extension|get#instanceMethod::T% = dynamic>(self::Extension|get#instanceMethod::T% t) → self::Extension|get#instanceMethod::T% => self::Extension|instanceMethod<self::Extension|get#instanceMethod::T%, S%>(#this, t);
+static method main() → dynamic {}
+static method _#B#new#tearOff<T extends core::num>() → self::Class<self::_#B#new#tearOff::T>
+  return new self::Class::•<self::_#B#new#tearOff::T>();
+
+constants  {
+  #C1 = null
+  #C2 = self::Class<invalid-type> {instanceField:#C1}
+  #C3 = self::Class<self::Class<invalid-type>*> {instanceField:#C1}
+  #C4 = TypeLiteralConstant(invalid-type)
+  #C5 = TypeLiteralConstant(self::Class<invalid-type>*)
+  #C6 = constructor-tearoff self::Class::•
+  #C7 = instantiation self::Class::• <invalid-type>
+  #C8 = TypeLiteralConstant(self::Class<self::Class<invalid-type>*>*)
+  #C9 = instantiation self::Class::• <self::Class<invalid-type>*>
+  #C10 = self::Class<<S extends invalid-type>() →* void> {instanceField:#C1}
+}
+
+
+Constructor coverage from constants:
+org-dartlang-testcase:///type_variable_in_static_context.dart:
+- Class. (from org-dartlang-testcase:///type_variable_in_static_context.dart:10:9)
+- Object. (from org-dartlang-sdk:///sdk/lib/core/object.dart:25:9)
diff --git a/pkg/front_end/testcases/general/type_variable_prefix.dart b/pkg/front_end/testcases/general/type_variable_prefix.dart
index 905f448..9e32d32 100644
--- a/pkg/front_end/testcases/general/type_variable_prefix.dart
+++ b/pkg/front_end/testcases/general/type_variable_prefix.dart
@@ -1,7 +1,9 @@
 // Copyright (c) 2016, the Dart project authors.  Please see the AUTHORS file
 // for details. All rights reserved. Use of this source code is governed by a
 // BSD-style license that can be found in the LICENSE file.
+
 // @dart=2.9
+
 import "dart:core" as T;
 
 class C<T> {
diff --git a/pkg/front_end/testcases/general/type_variable_prefix.dart.weak.expect b/pkg/front_end/testcases/general/type_variable_prefix.dart.weak.expect
index 93f9c23..20eabce 100644
--- a/pkg/front_end/testcases/general/type_variable_prefix.dart.weak.expect
+++ b/pkg/front_end/testcases/general/type_variable_prefix.dart.weak.expect
@@ -2,7 +2,7 @@
 //
 // Problems in library:
 //
-// pkg/front_end/testcases/general/type_variable_prefix.dart:8:3: Error: 'T.String' can't be used as a type because 'T' doesn't refer to an import prefix.
+// pkg/front_end/testcases/general/type_variable_prefix.dart:10:3: Error: 'T.String' can't be used as a type because 'T' doesn't refer to an import prefix.
 //   T.String method() => "Hello, World!";
 //   ^^^^^^^^
 //
diff --git a/pkg/front_end/testcases/general/type_variable_prefix.dart.weak.outline.expect b/pkg/front_end/testcases/general/type_variable_prefix.dart.weak.outline.expect
index 5ec5fac..17c7da5 100644
--- a/pkg/front_end/testcases/general/type_variable_prefix.dart.weak.outline.expect
+++ b/pkg/front_end/testcases/general/type_variable_prefix.dart.weak.outline.expect
@@ -2,7 +2,7 @@
 //
 // Problems in library:
 //
-// pkg/front_end/testcases/general/type_variable_prefix.dart:8:3: Error: 'T.String' can't be used as a type because 'T' doesn't refer to an import prefix.
+// pkg/front_end/testcases/general/type_variable_prefix.dart:10:3: Error: 'T.String' can't be used as a type because 'T' doesn't refer to an import prefix.
 //   T.String method() => "Hello, World!";
 //   ^^^^^^^^
 //
diff --git a/pkg/front_end/testcases/general/type_variable_prefix.dart.weak.transformed.expect b/pkg/front_end/testcases/general/type_variable_prefix.dart.weak.transformed.expect
index 93f9c23..20eabce 100644
--- a/pkg/front_end/testcases/general/type_variable_prefix.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/general/type_variable_prefix.dart.weak.transformed.expect
@@ -2,7 +2,7 @@
 //
 // Problems in library:
 //
-// pkg/front_end/testcases/general/type_variable_prefix.dart:8:3: Error: 'T.String' can't be used as a type because 'T' doesn't refer to an import prefix.
+// pkg/front_end/testcases/general/type_variable_prefix.dart:10:3: Error: 'T.String' can't be used as a type because 'T' doesn't refer to an import prefix.
 //   T.String method() => "Hello, World!";
 //   ^^^^^^^^
 //
diff --git a/pkg/front_end/testcases/general/type_variable_uses.dart.weak.expect b/pkg/front_end/testcases/general/type_variable_uses.dart.weak.expect
index fe9dcbd..4fbbbaa 100644
--- a/pkg/front_end/testcases/general/type_variable_uses.dart.weak.expect
+++ b/pkg/front_end/testcases/general/type_variable_uses.dart.weak.expect
@@ -2,9 +2,9 @@
 //
 // Problems in library:
 //
-// pkg/front_end/testcases/general/type_variable_uses.dart:7:15: Error: Can only use type variables in instance methods.
+// pkg/front_end/testcases/general/type_variable_uses.dart:7:12: Error: Type variables can't be used in static members.
 //   static C<T> staticMethod() {
-//               ^
+//            ^
 //
 // pkg/front_end/testcases/general/type_variable_uses.dart:8:11: Error: Type variables can't be used in static members.
 //     print(T);
@@ -69,7 +69,7 @@
   const constructor •() → self::C<self::C::T*>*
     : super core::Object::•()
     ;
-  static method staticMethod() → self::C<dynamic>* {
+  static method staticMethod() → self::C<invalid-type>* {
     core::print(#C1);
     invalid-type t;
     self::C<invalid-type>* l;
diff --git a/pkg/front_end/testcases/general/type_variable_uses.dart.weak.outline.expect b/pkg/front_end/testcases/general/type_variable_uses.dart.weak.outline.expect
index c7c6526..6825fba 100644
--- a/pkg/front_end/testcases/general/type_variable_uses.dart.weak.outline.expect
+++ b/pkg/front_end/testcases/general/type_variable_uses.dart.weak.outline.expect
@@ -2,9 +2,9 @@
 //
 // Problems in library:
 //
-// pkg/front_end/testcases/general/type_variable_uses.dart:7:15: Error: Can only use type variables in instance methods.
+// pkg/front_end/testcases/general/type_variable_uses.dart:7:12: Error: Type variables can't be used in static members.
 //   static C<T> staticMethod() {
-//               ^
+//            ^
 //
 import self as self;
 import "dart:core" as core;
@@ -13,7 +13,7 @@
   const constructor •() → self::C<self::C::T*>*
     : super core::Object::•()
     ;
-  static method staticMethod() → self::C<dynamic>*
+  static method staticMethod() → self::C<invalid-type>*
     ;
   method instanceMethod() → self::C<self::C::T*>*
     ;
diff --git a/pkg/front_end/testcases/general/type_variable_uses.dart.weak.transformed.expect b/pkg/front_end/testcases/general/type_variable_uses.dart.weak.transformed.expect
index fe9dcbd..4fbbbaa 100644
--- a/pkg/front_end/testcases/general/type_variable_uses.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/general/type_variable_uses.dart.weak.transformed.expect
@@ -2,9 +2,9 @@
 //
 // Problems in library:
 //
-// pkg/front_end/testcases/general/type_variable_uses.dart:7:15: Error: Can only use type variables in instance methods.
+// pkg/front_end/testcases/general/type_variable_uses.dart:7:12: Error: Type variables can't be used in static members.
 //   static C<T> staticMethod() {
-//               ^
+//            ^
 //
 // pkg/front_end/testcases/general/type_variable_uses.dart:8:11: Error: Type variables can't be used in static members.
 //     print(T);
@@ -69,7 +69,7 @@
   const constructor •() → self::C<self::C::T*>*
     : super core::Object::•()
     ;
-  static method staticMethod() → self::C<dynamic>* {
+  static method staticMethod() → self::C<invalid-type>* {
     core::print(#C1);
     invalid-type t;
     self::C<invalid-type>* l;
diff --git a/pkg/front_end/testcases/incremental/external_extension_field.yaml b/pkg/front_end/testcases/incremental/external_extension_field.yaml
new file mode 100644
index 0000000..27097d3
--- /dev/null
+++ b/pkg/front_end/testcases/incremental/external_extension_field.yaml
@@ -0,0 +1,33 @@
+# 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.md file.
+
+type: newworld
+worlds:
+  - entry: main.dart
+    experiments: alternative-invalidation-strategy
+    sources:
+      main.dart: |
+        extension E on String {
+          external int field;
+        }
+        main() {
+          "foo".field = "bar".field;
+        }
+    expectedLibraryCount: 1
+  - entry: main.dart
+    experiments: alternative-invalidation-strategy
+    worldType: updated
+    expectInitializeFromDill: false
+    invalidate:
+      - main.dart
+    sources:
+      main.dart: |
+        extension E on String {
+          external int field;
+        }
+        main() {
+          "foo".field = "bar".field;
+        }
+    expectedLibraryCount: 1
+    expectsRebuildBodiesOnly: true
diff --git a/pkg/front_end/testcases/incremental/external_extension_field.yaml.world.1.expect b/pkg/front_end/testcases/incremental/external_extension_field.yaml.world.1.expect
new file mode 100644
index 0000000..3241fbe
--- /dev/null
+++ b/pkg/front_end/testcases/incremental/external_extension_field.yaml.world.1.expect
@@ -0,0 +1,13 @@
+main = main::main;
+library from "org-dartlang-test:///main.dart" as main {
+
+  extension E on dart.core::String {
+    get field = main::E|get#field;
+    set field = main::E|set#field;
+  }
+  external static method E|get#field(dart.core::String #this) → dart.core::int;
+  external static method E|set#field(dart.core::String #this, dart.core::int #externalFieldValue) → void;
+  static method main() → dynamic {
+    main::E|set#field("foo", main::E|get#field("bar"));
+  }
+}
diff --git a/pkg/front_end/testcases/incremental/external_extension_field.yaml.world.2.expect b/pkg/front_end/testcases/incremental/external_extension_field.yaml.world.2.expect
new file mode 100644
index 0000000..3241fbe
--- /dev/null
+++ b/pkg/front_end/testcases/incremental/external_extension_field.yaml.world.2.expect
@@ -0,0 +1,13 @@
+main = main::main;
+library from "org-dartlang-test:///main.dart" as main {
+
+  extension E on dart.core::String {
+    get field = main::E|get#field;
+    set field = main::E|set#field;
+  }
+  external static method E|get#field(dart.core::String #this) → dart.core::int;
+  external static method E|set#field(dart.core::String #this, dart.core::int #externalFieldValue) → void;
+  static method main() → dynamic {
+    main::E|set#field("foo", main::E|get#field("bar"));
+  }
+}
diff --git a/pkg/front_end/testcases/outline.status b/pkg/front_end/testcases/outline.status
index d331e38..957e581 100644
--- a/pkg/front_end/testcases/outline.status
+++ b/pkg/front_end/testcases/outline.status
@@ -14,6 +14,7 @@
 extension_types/simple_operator_resolution: ExpectationFileMismatchSerialized
 extension_types/simple_setter_resolution: ExpectationFileMismatchSerialized
 extension_types/simple_show_hide: ExpectationFileMismatchSerialized # Expected.
+extension_types/type_variable_in_static_context: ExpectationFileMismatchSerialized # Expected.
 general/abstract_members: TypeCheckError
 general/bug30695: TypeCheckError
 general/covariant_field: TypeCheckError
diff --git a/pkg/front_end/testcases/strong.status b/pkg/front_end/testcases/strong.status
index 1bb2c89..3619d46 100644
--- a/pkg/front_end/testcases/strong.status
+++ b/pkg/front_end/testcases/strong.status
@@ -19,6 +19,7 @@
 extension_types/simple_operator_resolution: ExpectationFileMismatchSerialized # Expected.
 extension_types/simple_setter_resolution: ExpectationFileMismatchSerialized # Expected.
 extension_types/simple_show_hide: ExpectationFileMismatchSerialized # Expected.
+extension_types/type_variable_in_static_context: ExpectationFileMismatchSerialized # Expected.
 late_lowering/covariant_late_field: TypeCheckError
 nnbd/covariant_late_field: TypeCheckError
 nnbd/getter_vs_setter_type: TypeCheckError
diff --git a/pkg/front_end/testcases/text_serialization.status b/pkg/front_end/testcases/text_serialization.status
index 6eff171..c9b65cc 100644
--- a/pkg/front_end/testcases/text_serialization.status
+++ b/pkg/front_end/testcases/text_serialization.status
@@ -19,6 +19,7 @@
 extension_types/simple_operator_resolution: ExpectationFileMismatchSerialized # Expected.
 extension_types/simple_setter_resolution: ExpectationFileMismatchSerialized # Expected.
 extension_types/simple_show_hide: ExpectationFileMismatchSerialized # Expected.
+extension_types/type_variable_in_static_context: ExpectationFileMismatchSerialized # Expected.
 extensions/extension_setter_error: TypeCheckError
 extensions/instance_access_of_static: RuntimeError
 extensions/invalid_explicit_access: RuntimeError
diff --git a/pkg/front_end/testcases/textual_outline.status b/pkg/front_end/testcases/textual_outline.status
index 076e9ed..b53b921 100644
--- a/pkg/front_end/testcases/textual_outline.status
+++ b/pkg/front_end/testcases/textual_outline.status
@@ -39,6 +39,7 @@
 extension_types/simple_show_and_hide: FormatterCrash
 extension_types/simple_show_hide: FormatterCrash
 extension_types/simple_show_hide_conflicts: FormatterCrash
+extension_types/type_variable_in_static_context: FormatterCrash
 extension_types/various_hide_elements: FormatterCrash
 extension_types/various_show_elements: FormatterCrash
 extensions/extension_constructor: FormatterCrash
@@ -91,6 +92,7 @@
 general/null_safety_invalid_experiment: FormatterCrash
 general/null_safety_invalid_experiment_and_language_version: FormatterCrash
 general/type_parameters_on_void: FormatterCrash
+general/type_variable_in_static_context: FormatterCrash
 general/var_as_type_name: FormatterCrash
 inference/unsafe_block_closure_inference_function_call_explicit_dynamic_param_via_expr1: FormatterCrash
 inference/unsafe_block_closure_inference_function_call_explicit_type_param_via_expr1: FormatterCrash
diff --git a/pkg/front_end/testcases/weak.status b/pkg/front_end/testcases/weak.status
index 1f9bcca..b9aca04 100644
--- a/pkg/front_end/testcases/weak.status
+++ b/pkg/front_end/testcases/weak.status
@@ -23,6 +23,7 @@
 extension_types/simple_operator_resolution: ExpectationFileMismatchSerialized # Expected.
 extension_types/simple_setter_resolution: ExpectationFileMismatchSerialized # Expected.
 extension_types/simple_show_hide: ExpectationFileMismatchSerialized # Expected.
+extension_types/type_variable_in_static_context: ExpectationFileMismatchSerialized # Expected.
 extensions/extension_setter_error: TypeCheckError
 extensions/instance_access_of_static: RuntimeError
 extensions/invalid_explicit_access: RuntimeError
diff --git a/pkg/front_end/tool/_fasta/direct_parser_ast_helper_creator.dart b/pkg/front_end/tool/_fasta/direct_parser_ast_helper_creator.dart
index 3624fe0..301e0cb 100644
--- a/pkg/front_end/tool/_fasta/direct_parser_ast_helper_creator.dart
+++ b/pkg/front_end/tool/_fasta/direct_parser_ast_helper_creator.dart
@@ -113,6 +113,7 @@
 
   @override
   void beginMethod(
+      DeclarationKind declarationKind,
       Token? externalToken,
       Token? staticToken,
       Token? covariantToken,
diff --git a/pkg/front_end/tool/kernel_ast_file_rewriter.dart b/pkg/front_end/tool/kernel_ast_file_rewriter.dart
index 2d0e924..16f15e7 100644
--- a/pkg/front_end/tool/kernel_ast_file_rewriter.dart
+++ b/pkg/front_end/tool/kernel_ast_file_rewriter.dart
@@ -57,8 +57,8 @@
 
     DirectParserASTContentClassDeclarationEnd classDeclaration =
         cls.getClassDeclaration();
-    DirectParserASTContentClassOrMixinBodyEnd classOrMixinBody =
-        classDeclaration.getClassOrMixinBody();
+    DirectParserASTContentClassOrMixinOrExtensionBodyEnd classOrMixinBody =
+        classDeclaration.getClassOrMixinOrExtensionBody();
 
     Set<String> namedClassConstructors = {};
     Set<String> namedFields = {};
diff --git a/runtime/vm/compiler/jit/compiler.cc b/runtime/vm/compiler/jit/compiler.cc
index c9f4f86..7c89806 100644
--- a/runtime/vm/compiler/jit/compiler.cc
+++ b/runtime/vm/compiler/jit/compiler.cc
@@ -243,7 +243,7 @@
     // immediately, causing an infinite compilation loop. The compiler raises
     // the threshold for functions with breakpoints, so we drop the unoptimized
     // to force it to be recompiled.
-    if (thread->isolate()->CanOptimizeImmediately()) {
+    if (CanOptimizeImmediately()) {
       function.ClearCode();
     }
     return false;
diff --git a/runtime/vm/compiler/jit/compiler.h b/runtime/vm/compiler/jit/compiler.h
index 456c70b..528a964 100644
--- a/runtime/vm/compiler/jit/compiler.h
+++ b/runtime/vm/compiler/jit/compiler.h
@@ -76,6 +76,15 @@
   // The result for a function may change if debugging gets turned on/off.
   static bool CanOptimizeFunction(Thread* thread, const Function& function);
 
+#if !defined(PRODUCT)
+  // Whether it's possible for unoptimized code to optimize immediately on entry
+  // (can happen with random or very low optimization counter thresholds)
+  static bool CanOptimizeImmediately() {
+    return FLAG_optimization_counter_threshold < 2 ||
+           FLAG_randomize_optimization_counter;
+  }
+#endif
+
   // Generates code for given function without optimization and sets its code
   // field.
   //
diff --git a/runtime/vm/isolate.h b/runtime/vm/isolate.h
index 21cd81c..cb402bd 100644
--- a/runtime/vm/isolate.h
+++ b/runtime/vm/isolate.h
@@ -1334,13 +1334,6 @@
     UpdateIsolateFlagsBit<IsKernelIsolateBit>(value);
   }
 
-  // Whether it's possible for unoptimized code to optimize immediately on entry
-  // (can happen with random or very low optimization counter thresholds)
-  bool CanOptimizeImmediately() const {
-    return FLAG_optimization_counter_threshold < 2 ||
-           FLAG_randomize_optimization_counter;
-  }
-
   const DispatchTable* dispatch_table() const {
     return group()->dispatch_table();
   }
diff --git a/tests/language/metadata/type_parameter_scope_other_test.dart b/tests/language/metadata/type_parameter_scope_other_test.dart
index d411e2f..a393588 100644
--- a/tests/language/metadata/type_parameter_scope_other_test.dart
+++ b/tests/language/metadata/type_parameter_scope_other_test.dart
@@ -16,7 +16,7 @@
 class Class<T, @Annotation(T) U> {}
 //                         ^
 // [analyzer] COMPILE_TIME_ERROR.CONST_WITH_NON_CONSTANT_ARGUMENT
-// [cfe] Type variables can't be used in static members.
+// [cfe] Type variables can't be used as constants.
 
 void function<T, @Annotation(T) U>() {}
 //                           ^
@@ -26,7 +26,7 @@
 extension Extension<T, @Annotation(T) U> on Map<T, U> {}
 //                                 ^
 // [analyzer] COMPILE_TIME_ERROR.CONST_WITH_NON_CONSTANT_ARGUMENT
-// [cfe] Type variables can't be used in static members.
+// [cfe] Type variables can't be used as constants.
 
 class C {
   void method<T, @Annotation(T) U>() {}
@@ -38,7 +38,7 @@
 mixin Mixin<T, @Annotation(T) U> {}
 //                         ^
 // [analyzer] COMPILE_TIME_ERROR.CONST_WITH_NON_CONSTANT_ARGUMENT
-// [cfe] Type variables can't be used in static members.
+// [cfe] Type variables can't be used as constants.
 
 typedef void Typedef1<T, @Annotation(T) U>(T t, U u);
 //                                   ^
diff --git a/tests/language/type_variable/scope_test.dart b/tests/language/type_variable/scope_test.dart
index 2a68d15..8253f03 100644
--- a/tests/language/type_variable/scope_test.dart
+++ b/tests/language/type_variable/scope_test.dart
@@ -11,9 +11,8 @@
   Foo<T>
   //  ^
   // [analyzer] COMPILE_TIME_ERROR.TYPE_PARAMETER_REFERENCED_BY_STATIC
+  // [cfe] Type variables can't be used in static members.
       m(
-//    ^
-// [cfe] Can only use type variables in instance methods.
     Foo<T>
     //  ^
     // [analyzer] COMPILE_TIME_ERROR.TYPE_PARAMETER_REFERENCED_BY_STATIC
@@ -41,26 +40,19 @@
   //              ^
   // [analyzer] COMPILE_TIME_ERROR.TYPE_PARAMETER_REFERENCED_BY_STATIC
   // [cfe] Type variables can't be used in static members.
-  //                 ^
-  // [cfe] Verification of the generated program failed:
-  //                 ^
-  // [cfe] Verification of the generated program failed:
 
   static
   Foo<T>
   //  ^
   // [analyzer] COMPILE_TIME_ERROR.TYPE_PARAMETER_REFERENCED_BY_STATIC
+  // [cfe] Type variables can't be used in static members.
       get f {
-      //  ^
-      // [cfe] Can only use type variables in instance methods.
     return new Foo<String>();
     //     ^^^^^^^^^^^^^^^^^
     // [analyzer] COMPILE_TIME_ERROR.RETURN_OF_INVALID_TYPE
   }
 
   static void set f(
-  //              ^
-  // [cfe] Can only use type variables in instance methods.
                     Foo<T>
                     //  ^
                     // [analyzer] COMPILE_TIME_ERROR.TYPE_PARAMETER_REFERENCED_BY_STATIC
@@ -80,8 +72,6 @@
   Foo.f1 = new Foo<String>();
   //       ^^^^^^^^^^^^^^^^^
   // [analyzer] COMPILE_TIME_ERROR.INVALID_ASSIGNMENT
-  //           ^
-  // [cfe] A value of type 'Foo<String>' can't be assigned to a variable of type 'Foo<T>'.
   var x = Foo.f;
   Foo.f = x;
 }
diff --git a/tests/language_2/metadata/type_parameter_scope_other_test.dart b/tests/language_2/metadata/type_parameter_scope_other_test.dart
index d411e2f..a393588 100644
--- a/tests/language_2/metadata/type_parameter_scope_other_test.dart
+++ b/tests/language_2/metadata/type_parameter_scope_other_test.dart
@@ -16,7 +16,7 @@
 class Class<T, @Annotation(T) U> {}
 //                         ^
 // [analyzer] COMPILE_TIME_ERROR.CONST_WITH_NON_CONSTANT_ARGUMENT
-// [cfe] Type variables can't be used in static members.
+// [cfe] Type variables can't be used as constants.
 
 void function<T, @Annotation(T) U>() {}
 //                           ^
@@ -26,7 +26,7 @@
 extension Extension<T, @Annotation(T) U> on Map<T, U> {}
 //                                 ^
 // [analyzer] COMPILE_TIME_ERROR.CONST_WITH_NON_CONSTANT_ARGUMENT
-// [cfe] Type variables can't be used in static members.
+// [cfe] Type variables can't be used as constants.
 
 class C {
   void method<T, @Annotation(T) U>() {}
@@ -38,7 +38,7 @@
 mixin Mixin<T, @Annotation(T) U> {}
 //                         ^
 // [analyzer] COMPILE_TIME_ERROR.CONST_WITH_NON_CONSTANT_ARGUMENT
-// [cfe] Type variables can't be used in static members.
+// [cfe] Type variables can't be used as constants.
 
 typedef void Typedef1<T, @Annotation(T) U>(T t, U u);
 //                                   ^
diff --git a/tools/VERSION b/tools/VERSION
index ca28cda..3ada223 100644
--- a/tools/VERSION
+++ b/tools/VERSION
@@ -27,5 +27,5 @@
 MAJOR 2
 MINOR 15
 PATCH 0
-PRERELEASE 183
+PRERELEASE 184
 PRERELEASE_PATCH 0
\ No newline at end of file