diff --git a/pkg/analysis_server/lib/src/computer/computer_highlights.dart b/pkg/analysis_server/lib/src/computer/computer_highlights.dart
index e69016d..c2b13cc 100644
--- a/pkg/analysis_server/lib/src/computer/computer_highlights.dart
+++ b/pkg/analysis_server/lib/src/computer/computer_highlights.dart
@@ -756,6 +756,13 @@
   }
 
   @override
+  void visitTopLevelVariableDeclaration(TopLevelVariableDeclaration node) {
+    computer._addRegion_token(
+        node.externalKeyword, HighlightRegionType.BUILT_IN);
+    super.visitTopLevelVariableDeclaration(node);
+  }
+
+  @override
   void visitTryStatement(TryStatement node) {
     computer._addRegion_token(node.tryKeyword, HighlightRegionType.KEYWORD);
     computer._addRegion_token(node.finallyKeyword, HighlightRegionType.KEYWORD);
diff --git a/pkg/analysis_server/lib/src/computer/computer_highlights2.dart b/pkg/analysis_server/lib/src/computer/computer_highlights2.dart
index 6b72a3e..6f59807 100644
--- a/pkg/analysis_server/lib/src/computer/computer_highlights2.dart
+++ b/pkg/analysis_server/lib/src/computer/computer_highlights2.dart
@@ -865,6 +865,13 @@
   }
 
   @override
+  void visitTopLevelVariableDeclaration(TopLevelVariableDeclaration node) {
+    computer._addRegion_token(
+        node.externalKeyword, HighlightRegionType.BUILT_IN);
+    super.visitTopLevelVariableDeclaration(node);
+  }
+
+  @override
   void visitTryStatement(TryStatement node) {
     computer._addRegion_token(node.tryKeyword, HighlightRegionType.KEYWORD);
     computer._addRegion_token(node.finallyKeyword, HighlightRegionType.KEYWORD);
diff --git a/pkg/analysis_server/lib/src/services/completion/dart/keyword_contributor.dart b/pkg/analysis_server/lib/src/services/completion/dart/keyword_contributor.dart
index e71a230..443caa9 100644
--- a/pkg/analysis_server/lib/src/services/completion/dart/keyword_contributor.dart
+++ b/pkg/analysis_server/lib/src/services/completion/dart/keyword_contributor.dart
@@ -677,6 +677,29 @@
   }
 
   @override
+  void visitTopLevelVariableDeclaration(TopLevelVariableDeclaration node) {
+    var variableDeclarationList = node.variables;
+    if (entity != variableDeclarationList) return;
+    var variables = variableDeclarationList.variables;
+    if (variables.isEmpty || request.offset > variables.first.beginToken.end) {
+      return;
+    }
+    if (node.externalKeyword == null) {
+      _addSuggestion(Keyword.EXTERNAL);
+    }
+    if (variableDeclarationList.lateKeyword == null &&
+        request.featureSet.isEnabled(Feature.non_nullable)) {
+      _addSuggestion(Keyword.LATE);
+    }
+    if (!variables.first.isConst) {
+      _addSuggestion(Keyword.CONST);
+    }
+    if (!variables.first.isFinal) {
+      _addSuggestion(Keyword.FINAL);
+    }
+  }
+
+  @override
   void visitTryStatement(TryStatement node) {
     var obj = entity;
     if (obj is CatchClause ||
diff --git a/pkg/analysis_server/tool/completion_metrics/code_metrics.dart b/pkg/analysis_server/tool/completion_metrics/code_metrics.dart
index ec01128..fec950b 100644
--- a/pkg/analysis_server/tool/completion_metrics/code_metrics.dart
+++ b/pkg/analysis_server/tool/completion_metrics/code_metrics.dart
@@ -1196,6 +1196,7 @@
     _visitChildren(node, {
       'documentationComment': node.documentationComment,
       'metadata': node.metadata,
+      'externalKeyword': node.externalKeyword,
       'variables': node.variables,
     });
     super.visitTopLevelVariableDeclaration(node);
diff --git a/pkg/analysis_server/tool/completion_metrics/visitors.dart b/pkg/analysis_server/tool/completion_metrics/visitors.dart
index eab5c66..b234a9b 100644
--- a/pkg/analysis_server/tool/completion_metrics/visitors.dart
+++ b/pkg/analysis_server/tool/completion_metrics/visitors.dart
@@ -666,6 +666,12 @@
   }
 
   @override
+  void visitTopLevelVariableDeclaration(TopLevelVariableDeclaration node) {
+    safelyRecordKeywordCompletion(node.externalKeyword);
+    return super.visitTopLevelVariableDeclaration(node);
+  }
+
+  @override
   void visitTryStatement(TryStatement node) {
     safelyRecordKeywordCompletion(node.tryKeyword);
     safelyRecordKeywordCompletion(node.finallyKeyword);
diff --git a/pkg/analyzer/lib/dart/ast/ast.dart b/pkg/analyzer/lib/dart/ast/ast.dart
index a566079..2e621bc 100644
--- a/pkg/analyzer/lib/dart/ast/ast.dart
+++ b/pkg/analyzer/lib/dart/ast/ast.dart
@@ -4959,11 +4959,21 @@
 /// The declaration of one or more top-level variables of the same type.
 ///
 ///    topLevelVariableDeclaration ::=
-///        ('final' | 'const') type? staticFinalDeclarationList ';'
-///      | variableDeclaration ';'
+///        ('final' | 'const') <type>? <staticFinalDeclarationList> ';'
+///      | 'late' 'final' <type>? <initializedIdentifierList> ';'
+///      | 'late'? <varOrType> <initializedIdentifierList> ';'
+///      | 'external' <finalVarOrType> <identifierList> ';'
+///
+/// (Note: there is no <topLevelVariableDeclaration> production in the grammar;
+/// this is a subset of the grammar production <topLevelDeclaration>, which
+/// encompasses everything that can appear inside a Dart file after part
+/// directives).
 ///
 /// Clients may not extend, implement or mix-in this class.
 abstract class TopLevelVariableDeclaration implements CompilationUnitMember {
+  /// The `external` keyword, or `null` if the keyword was not used.
+  Token get externalKeyword;
+
   /// Return the semicolon terminating the declaration.
   Token get semicolon;
 
diff --git a/pkg/analyzer/lib/dart/ast/ast_factory.dart b/pkg/analyzer/lib/dart/ast/ast_factory.dart
index e58279d..632484c 100644
--- a/pkg/analyzer/lib/dart/ast/ast_factory.dart
+++ b/pkg/analyzer/lib/dart/ast/ast_factory.dart
@@ -909,7 +909,8 @@
       Comment comment,
       List<Annotation> metadata,
       VariableDeclarationList variableList,
-      Token semicolon);
+      Token semicolon,
+      {Token externalKeyword});
 
   /// Returns a newly created try statement. The list of [catchClauses] can be
   /// `null` if there are no catch clauses. The [finallyKeyword] and
diff --git a/pkg/analyzer/lib/dart/element/element.dart b/pkg/analyzer/lib/dart/element/element.dart
index efce469..a2e9d64 100644
--- a/pkg/analyzer/lib/dart/element/element.dart
+++ b/pkg/analyzer/lib/dart/element/element.dart
@@ -1694,6 +1694,9 @@
 abstract class TopLevelVariableElement implements PropertyInducingElement {
   @override
   TopLevelVariableElement get declaration;
+
+  /// Return `true` if this field was explicitly marked as being external.
+  bool get isExternal;
 }
 
 /// An element that defines a type.
diff --git a/pkg/analyzer/lib/src/dart/ast/ast.dart b/pkg/analyzer/lib/src/dart/ast/ast.dart
index 7307fca..5033a79 100644
--- a/pkg/analyzer/lib/src/dart/ast/ast.dart
+++ b/pkg/analyzer/lib/src/dart/ast/ast.dart
@@ -9796,6 +9796,9 @@
   /// The top-level variables being declared.
   VariableDeclarationListImpl _variableList;
 
+  @override
+  Token externalKeyword;
+
   /// The semicolon terminating the declaration.
   @override
   Token semicolon;
@@ -9806,6 +9809,7 @@
   TopLevelVariableDeclarationImpl(
       CommentImpl comment,
       List<Annotation> metadata,
+      this.externalKeyword,
       VariableDeclarationListImpl variableList,
       this.semicolon)
       : super(comment, metadata) {
@@ -9823,7 +9827,8 @@
   Token get endToken => semicolon;
 
   @override
-  Token get firstTokenAfterCommentAndMetadata => _variableList.beginToken;
+  Token get firstTokenAfterCommentAndMetadata =>
+      externalKeyword ?? _variableList.beginToken;
 
   @override
   VariableDeclarationList get variables => _variableList;
diff --git a/pkg/analyzer/lib/src/dart/ast/ast_factory.dart b/pkg/analyzer/lib/src/dart/ast/ast_factory.dart
index aca1cb1..c51e550 100644
--- a/pkg/analyzer/lib/src/dart/ast/ast_factory.dart
+++ b/pkg/analyzer/lib/src/dart/ast/ast_factory.dart
@@ -1020,9 +1020,10 @@
           Comment comment,
           List<Annotation> metadata,
           VariableDeclarationList variableList,
-          Token semicolon) =>
+          Token semicolon,
+          {Token externalKeyword}) =>
       TopLevelVariableDeclarationImpl(
-          comment, metadata, variableList, semicolon);
+          comment, metadata, externalKeyword, variableList, semicolon);
 
   @override
   TryStatement tryStatement(
diff --git a/pkg/analyzer/lib/src/dart/ast/to_source_visitor.dart b/pkg/analyzer/lib/src/dart/ast/to_source_visitor.dart
index 7261b61..5f5e191 100644
--- a/pkg/analyzer/lib/src/dart/ast/to_source_visitor.dart
+++ b/pkg/analyzer/lib/src/dart/ast/to_source_visitor.dart
@@ -1075,6 +1075,7 @@
 
   @override
   void visitTopLevelVariableDeclaration(TopLevelVariableDeclaration node) {
+    safelyVisitTokenWithSuffix(node.externalKeyword, " ");
     safelyVisitNodeWithSuffix(node.variables, ";");
   }
 
diff --git a/pkg/analyzer/lib/src/dart/ast/utilities.dart b/pkg/analyzer/lib/src/dart/ast/utilities.dart
index e4f39b1..d407077 100644
--- a/pkg/analyzer/lib/src/dart/ast/utilities.dart
+++ b/pkg/analyzer/lib/src/dart/ast/utilities.dart
@@ -975,7 +975,8 @@
           cloneNode(node.documentationComment),
           cloneNodeList(node.metadata),
           cloneNode(node.variables),
-          cloneToken(node.semicolon));
+          cloneToken(node.semicolon),
+          externalKeyword: cloneToken(node.externalKeyword));
 
   @override
   TryStatement visitTryStatement(TryStatement node) => astFactory.tryStatement(
@@ -2193,6 +2194,7 @@
     return isEqualNodes(
             node.documentationComment, other.documentationComment) &&
         _isEqualNodeLists(node.metadata, other.metadata) &&
+        isEqualTokens(node.externalKeyword, other.externalKeyword) &&
         isEqualNodes(node.variables, other.variables) &&
         isEqualTokens(node.semicolon, other.semicolon);
   }
@@ -5266,6 +5268,7 @@
     return _and(
         _isEqualNodes(node.documentationComment, toNode.documentationComment),
         _isEqualNodeLists(node.metadata, toNode.metadata),
+        _isEqualTokens(node.externalKeyword, toNode.externalKeyword),
         _isEqualNodes(node.variables, toNode.variables),
         _isEqualTokens(node.semicolon, toNode.semicolon));
   }
diff --git a/pkg/analyzer/lib/src/dart/element/element.dart b/pkg/analyzer/lib/src/dart/element/element.dart
index 0c7c239..2456a92 100644
--- a/pkg/analyzer/lib/src/dart/element/element.dart
+++ b/pkg/analyzer/lib/src/dart/element/element.dart
@@ -7473,6 +7473,14 @@
   TopLevelVariableElement get declaration => this;
 
   @override
+  bool get isExternal {
+    if (linkedNode != null) {
+      return enclosingUnit.linkedContext.isExternal(linkedNode);
+    }
+    return hasModifier(Modifier.EXTERNAL);
+  }
+
+  @override
   bool get isStatic => true;
 
   @override
diff --git a/pkg/analyzer/lib/src/dart/element/member.dart b/pkg/analyzer/lib/src/dart/element/member.dart
index b62f341..c699cd0 100644
--- a/pkg/analyzer/lib/src/dart/element/member.dart
+++ b/pkg/analyzer/lib/src/dart/element/member.dart
@@ -955,6 +955,9 @@
   }
 
   @override
+  bool get isExternal => declaration.isExternal;
+
+  @override
   PropertyAccessorElement get setter {
     var baseSetter = declaration.setter;
     if (baseSetter == null) {
diff --git a/pkg/analyzer/lib/src/fasta/ast_builder.dart b/pkg/analyzer/lib/src/fasta/ast_builder.dart
index 1f2383c..8ababeb 100644
--- a/pkg/analyzer/lib/src/fasta/ast_builder.dart
+++ b/pkg/analyzer/lib/src/fasta/ast_builder.dart
@@ -2153,7 +2153,7 @@
     assert(optional(';', semicolon));
     debugEvent("TopLevelFields");
 
-    if (externalToken != null) {
+    if (externalToken != null && !enableNonNullable) {
       handleRecoverableError(
           messageExternalField, externalToken, externalToken);
     }
@@ -2169,7 +2169,8 @@
     List<Annotation> metadata = pop();
     Comment comment = _findComment(metadata, beginToken);
     declarations.add(ast.topLevelVariableDeclaration(
-        comment, metadata, variableList, semicolon));
+        comment, metadata, variableList, semicolon,
+        externalKeyword: externalToken));
   }
 
   @override
diff --git a/pkg/analyzer/lib/src/generated/testing/ast_test_factory.dart b/pkg/analyzer/lib/src/generated/testing/ast_test_factory.dart
index fc24212..81d60f6 100644
--- a/pkg/analyzer/lib/src/generated/testing/ast_test_factory.dart
+++ b/pkg/analyzer/lib/src/generated/testing/ast_test_factory.dart
@@ -1296,12 +1296,16 @@
           TokenFactory.tokenFromType(TokenType.SEMICOLON));
 
   static TopLevelVariableDeclaration topLevelVariableDeclaration2(
-          Keyword keyword, List<VariableDeclaration> variables) =>
+          Keyword keyword, List<VariableDeclaration> variables,
+          {bool isExternal = false}) =>
       astFactory.topLevelVariableDeclaration(
           null,
           null,
           variableDeclarationList(keyword, null, variables),
-          TokenFactory.tokenFromType(TokenType.SEMICOLON));
+          TokenFactory.tokenFromType(TokenType.SEMICOLON),
+          externalKeyword: isExternal
+              ? TokenFactory.tokenFromKeyword(Keyword.EXTERNAL)
+              : null);
 
   static TryStatement tryStatement(Block body, Block finallyClause) =>
       tryStatement3(body, <CatchClause>[], finallyClause);
diff --git a/pkg/analyzer/lib/src/summary2/ast_binary_reader.dart b/pkg/analyzer/lib/src/summary2/ast_binary_reader.dart
index d77bb19..f79f45d 100644
--- a/pkg/analyzer/lib/src/summary2/ast_binary_reader.dart
+++ b/pkg/analyzer/lib/src/summary2/ast_binary_reader.dart
@@ -1548,6 +1548,8 @@
         _readNodeListLazy(data.annotatedNode_metadata),
         _readNode(data.topLevelVariableDeclaration_variableList),
         _Tokens.SEMICOLON,
+        externalKeyword:
+            AstBinaryFlags.isExternal(data.flags) ? _Tokens.EXTERNAL : null,
       );
       LazyTopLevelVariableDeclaration.setData(node, data);
       return node;
diff --git a/pkg/analyzer/lib/src/summary2/ast_binary_writer.dart b/pkg/analyzer/lib/src/summary2/ast_binary_writer.dart
index e1401dd..7a71a14 100644
--- a/pkg/analyzer/lib/src/summary2/ast_binary_writer.dart
+++ b/pkg/analyzer/lib/src/summary2/ast_binary_writer.dart
@@ -1328,6 +1328,9 @@
         informativeId: getInformativeId(node),
         topLevelVariableDeclaration_variableList: node.variables?.accept(this),
       );
+      builder.flags = AstBinaryFlags.encode(
+        isExternal: node.externalKeyword != null,
+      );
       _storeCompilationUnitMember(builder, node);
 
       return builder;
diff --git a/pkg/analyzer/lib/src/summary2/ast_text_printer.dart b/pkg/analyzer/lib/src/summary2/ast_text_printer.dart
index ca115cc..995916b 100644
--- a/pkg/analyzer/lib/src/summary2/ast_text_printer.dart
+++ b/pkg/analyzer/lib/src/summary2/ast_text_printer.dart
@@ -906,6 +906,7 @@
   @override
   void visitTopLevelVariableDeclaration(TopLevelVariableDeclaration node) {
     _compilationUnitMember(node);
+    _token(node.externalKeyword);
     node.variables.accept(this);
     _token(node.semicolon);
   }
diff --git a/pkg/analyzer/lib/src/summary2/linked_unit_context.dart b/pkg/analyzer/lib/src/summary2/linked_unit_context.dart
index 740d4ff..527c5de 100644
--- a/pkg/analyzer/lib/src/summary2/linked_unit_context.dart
+++ b/pkg/analyzer/lib/src/summary2/linked_unit_context.dart
@@ -841,6 +841,8 @@
         var grandParent = parent.parent;
         if (grandParent is FieldDeclaration) {
           return grandParent.externalKeyword != null;
+        } else if (grandParent is TopLevelVariableDeclaration) {
+          return grandParent.externalKeyword != null;
         } else {
           throw UnimplementedError('${grandParent.runtimeType}');
         }
diff --git a/pkg/analyzer/test/generated/parser_fasta_test.dart b/pkg/analyzer/test/generated/parser_fasta_test.dart
index ff14226..7a398a2 100644
--- a/pkg/analyzer/test/generated/parser_fasta_test.dart
+++ b/pkg/analyzer/test/generated/parser_fasta_test.dart
@@ -4621,6 +4621,12 @@
     expectCommentText(declaration.documentationComment, '/// Doc');
   }
 
+  void test_parseTopLevelVariable_external() {
+    var unit = parseCompilationUnit('external int i;', featureSet: nonNullable);
+    var declaration = unit.declarations[0] as TopLevelVariableDeclaration;
+    expect(declaration.externalKeyword, isNotNull);
+  }
+
   void test_parseTopLevelVariable_final_late() {
     var unit = parseCompilationUnit('final late a;',
         featureSet: nonNullable,
@@ -4676,6 +4682,12 @@
     expect(declarationList.type, isNotNull);
     expect(declarationList.variables, hasLength(1));
   }
+
+  void test_parseTopLevelVariable_non_external() {
+    var unit = parseCompilationUnit('int i;', featureSet: nonNullable);
+    var declaration = unit.declarations[0] as TopLevelVariableDeclaration;
+    expect(declaration.externalKeyword, isNull);
+  }
 }
 
 @reflectiveTest
diff --git a/pkg/analyzer/test/src/dart/ast/to_source_visitor_test.dart b/pkg/analyzer/test/src/dart/ast/to_source_visitor_test.dart
index 6218912..4fe02d3 100644
--- a/pkg/analyzer/test/src/dart/ast/to_source_visitor_test.dart
+++ b/pkg/analyzer/test/src/dart/ast/to_source_visitor_test.dart
@@ -2616,6 +2616,14 @@
         AstTestFactory.throwExpression2(AstTestFactory.identifier3("e")));
   }
 
+  void test_visitTopLevelVariableDeclaration_external() {
+    _assertSource(
+        "external var a;",
+        AstTestFactory.topLevelVariableDeclaration2(
+            Keyword.VAR, [AstTestFactory.variableDeclaration("a")],
+            isExternal: true));
+  }
+
   void test_visitTopLevelVariableDeclaration_multiple() {
     _assertSource(
         "var a;",
diff --git a/pkg/analyzer/test/src/dart/ast/utilities_test.dart b/pkg/analyzer/test/src/dart/ast/utilities_test.dart
index f08bb30..311e888 100644
--- a/pkg/analyzer/test/src/dart/ast/utilities_test.dart
+++ b/pkg/analyzer/test/src/dart/ast/utilities_test.dart
@@ -132,6 +132,29 @@
   @override
   final TypeProvider typeProvider = TestTypeProvider();
 
+  void test_topLevelVariableDeclaration_external() {
+    TopLevelVariableDeclaration fromNode =
+        AstTestFactory.topLevelVariableDeclaration2(
+            Keyword.VAR, [AstTestFactory.variableDeclaration('x')],
+            isExternal: false);
+    TopLevelVariableElement element = TopLevelVariableElementImpl('x', -1);
+    fromNode.variables.variables[0].name.staticElement = element;
+    TopLevelVariableDeclaration toNode1 =
+        AstTestFactory.topLevelVariableDeclaration2(
+            Keyword.VAR, [AstTestFactory.variableDeclaration('x')],
+            isExternal: false);
+    ResolutionCopier.copyResolutionData(fromNode, toNode1);
+    // Nodes matched so resolution data should have been copied.
+    expect(toNode1.variables.variables[0].declaredElement, same(element));
+    TopLevelVariableDeclaration toNode2 =
+        AstTestFactory.topLevelVariableDeclaration2(
+            Keyword.VAR, [AstTestFactory.variableDeclaration('x')],
+            isExternal: true);
+    ResolutionCopier.copyResolutionData(fromNode, toNode1);
+    // Nodes didn't match so resolution data should not have been copied.
+    expect(toNode2.variables.variables[0].declaredElement, isNull);
+  }
+
   void test_visitAdjacentStrings() {
     AdjacentStrings createNode() => astFactory.adjacentStrings([
           astFactory.simpleStringLiteral(null, 'hello'),
diff --git a/pkg/analyzer/test/src/summary/element_text.dart b/pkg/analyzer/test/src/summary/element_text.dart
index cfdb167..6d6be56 100644
--- a/pkg/analyzer/test/src/summary/element_text.dart
+++ b/pkg/analyzer/test/src/summary/element_text.dart
@@ -971,6 +971,7 @@
     } else {
       writeDocumentation(e);
       writeMetadata(e, '', '\n');
+      writeIf(e is TopLevelVariableElementImpl && e.isExternal, 'external ');
     }
 
     writeIf(e.isLate, 'late ');
diff --git a/pkg/analyzer/test/src/summary/resolved_ast_printer.dart b/pkg/analyzer/test/src/summary/resolved_ast_printer.dart
index ae2c9b6..365aac0 100644
--- a/pkg/analyzer/test/src/summary/resolved_ast_printer.dart
+++ b/pkg/analyzer/test/src/summary/resolved_ast_printer.dart
@@ -1269,6 +1269,7 @@
     _writeln('TopLevelVariableDeclaration');
     _withIndent(() {
       var properties = _Properties();
+      properties.addToken('externalKeyword', node.externalKeyword);
       properties.addToken('semicolon', node.semicolon);
       properties.addNode('variables', node.variables);
       _addCompilationUnitMember(properties, node);
diff --git a/pkg/analyzer/test/src/summary/resynthesize_common.dart b/pkg/analyzer/test/src/summary/resynthesize_common.dart
index e3ee762..83bfa1f 100644
--- a/pkg/analyzer/test/src/summary/resynthesize_common.dart
+++ b/pkg/analyzer/test/src/summary/resynthesize_common.dart
@@ -10261,6 +10261,16 @@
 ''');
   }
 
+  test_top_level_variable_external() async {
+    featureSet = enableNnbd;
+    var library = await checkLibrary('''
+external int i;
+''');
+    checkElementText(library, '''
+external int i;
+''');
+  }
+
   test_type_arguments_explicit_dynamic_dynamic() async {
     var library = await checkLibrary('Map<dynamic, dynamic> m;');
     checkElementText(library, r'''
diff --git a/pkg/dds/CHANGELOG.md b/pkg/dds/CHANGELOG.md
index 77142a4..52b7282 100644
--- a/pkg/dds/CHANGELOG.md
+++ b/pkg/dds/CHANGELOG.md
@@ -1,3 +1,7 @@
+# 1.3.2-dev
+
+- Fix handling of requests that are outstanding when a client channel is closed.
+
 # 1.3.1
 
 - Fixed issue where an exception could be thrown during startup if the target
diff --git a/pkg/dds/lib/src/client.dart b/pkg/dds/lib/src/client.dart
index 3d796fc..79e4233 100644
--- a/pkg/dds/lib/src/client.dart
+++ b/pkg/dds/lib/src/client.dart
@@ -215,7 +215,11 @@
         return await Future.any(
           [
             // Forward the request to the service client or...
-            serviceClient.sendRequest(method, parameters.asMap),
+            serviceClient.sendRequest(method, parameters.asMap).catchError((_) {
+              throw _RpcErrorCodes.buildRpcException(
+                _RpcErrorCodes.kServiceDisappeared,
+              );
+            }, test: (error) => error is StateError),
             // if the service client closes, return an error response.
             serviceClient._clientPeer.done.then(
               (_) => throw _RpcErrorCodes.buildRpcException(
diff --git a/pkg/dds/pubspec.yaml b/pkg/dds/pubspec.yaml
index a4bccc8..3a8364c 100644
--- a/pkg/dds/pubspec.yaml
+++ b/pkg/dds/pubspec.yaml
@@ -3,7 +3,7 @@
   A library used to spawn the Dart Developer Service, used to communicate with
   a Dart VM Service instance.
 
-version: 1.3.1
+version: 1.3.2-dev
 
 homepage: https://github.com/dart-lang/sdk/tree/master/pkg/dds
 
diff --git a/pkg/front_end/lib/src/fasta/builder/procedure_builder.dart b/pkg/front_end/lib/src/fasta/builder/procedure_builder.dart
index 1e90de3..75c8ba1 100644
--- a/pkg/front_end/lib/src/fasta/builder/procedure_builder.dart
+++ b/pkg/front_end/lib/src/fasta/builder/procedure_builder.dart
@@ -565,13 +565,16 @@
     return null;
   }
 
+  List<ClassMember> _localMembers;
+  List<ClassMember> _localSetters;
+
   @override
-  List<ClassMember> get localMembers => isSetter
+  List<ClassMember> get localMembers => _localMembers ??= isSetter
       ? const <ClassMember>[]
       : <ClassMember>[new SourceProcedureMember(this)];
 
   @override
-  List<ClassMember> get localSetters => isSetter
+  List<ClassMember> get localSetters => _localSetters ??= isSetter
       ? <ClassMember>[new SourceProcedureMember(this)]
       : const <ClassMember>[];
 }
diff --git a/pkg/front_end/lib/src/fasta/dill/dill_member_builder.dart b/pkg/front_end/lib/src/fasta/dill/dill_member_builder.dart
index 93becfc..2426266 100644
--- a/pkg/front_end/lib/src/fasta/dill/dill_member_builder.dart
+++ b/pkg/front_end/lib/src/fasta/dill/dill_member_builder.dart
@@ -130,14 +130,17 @@
     throw new UnsupportedError('DillMemberBuilder.buildMembers');
   }
 
+  List<ClassMember> _localMembers;
+  List<ClassMember> _localSetters;
+
   @override
-  List<ClassMember> get localMembers => isSetter
+  List<ClassMember> get localMembers => _localMembers ??= isSetter
       ? const <ClassMember>[]
       : <ClassMember>[new DillClassMember(this, forSetter: false)];
 
   @override
   List<ClassMember> get localSetters =>
-      isSetter || member is Field && member.hasSetter
+      _localSetters ??= isSetter || member is Field && member.hasSetter
           ? <ClassMember>[new DillClassMember(this, forSetter: true)]
           : const <ClassMember>[];
 }
diff --git a/pkg/front_end/lib/src/fasta/kernel/class_hierarchy_builder.dart b/pkg/front_end/lib/src/fasta/kernel/class_hierarchy_builder.dart
index e6a04b2..76b47a0 100644
--- a/pkg/front_end/lib/src/fasta/kernel/class_hierarchy_builder.dart
+++ b/pkg/front_end/lib/src/fasta/kernel/class_hierarchy_builder.dart
@@ -2056,6 +2056,30 @@
         checkMemberVsSetter(classSetter, interfaceMember);
       }
 
+      if (classMember != null &&
+          interfaceMember != null &&
+          classMember != interfaceMember) {
+        if (classMember.isAbstract == interfaceMember.isAbstract) {
+          // TODO(johnniwinther): Ensure that we don't have both class and
+          //  interface members that can give rise to a forwarding stub in
+          //  the current class. We might already have registered a delayed
+          //  member computation for the [classMember] that we're replacing
+          //  and therefore create two stubs for this member.
+          classMember = interfaceMember;
+        }
+      }
+      if (classSetter != null &&
+          interfaceSetter != null &&
+          classSetter != interfaceSetter) {
+        if (classSetter.isAbstract == interfaceSetter.isAbstract) {
+          // TODO(johnniwinther): Ensure that we don't have both class and
+          //  interface members that can give rise to a forwarding stub in
+          //  the current class. We might already have registered a delayed
+          //  member computation for the [classMember] that we're replacing
+          //  and therefore create two stubs for this member.
+          classSetter = interfaceSetter;
+        }
+      }
       if (classMember != null) {
         classMemberMap[name] = classMember;
       }
@@ -2767,12 +2791,14 @@
 /// implementation is the first element of [declarations].
 class InheritedImplementationInterfaceConflict extends DelayedMember {
   Member combinedMemberSignatureResult;
+  final ClassMember concreteMember;
 
   @override
   final bool isInheritableConflict;
 
   InheritedImplementationInterfaceConflict(
       ClassBuilder parent,
+      this.concreteMember,
       List<ClassMember> declarations,
       bool isProperty,
       bool isSetter,
@@ -2780,29 +2806,34 @@
       bool isAbstract,
       Name name,
       {this.isInheritableConflict = true})
-      : super(parent, declarations, isProperty, isSetter, modifyKernel,
+      : assert(!concreteMember.isAbstract),
+        super(parent, declarations, isProperty, isSetter, modifyKernel,
             isAbstract, name);
 
   @override
   bool isObjectMember(ClassBuilder objectClass) {
-    return declarations.first.isObjectMember(objectClass);
+    return concreteMember.isObjectMember(objectClass);
   }
 
   @override
   String toString() {
     return "InheritedImplementationInterfaceConflict("
-        "${classBuilder.fullNameForErrors}, "
+        "${classBuilder.fullNameForErrors}, $concreteMember, "
         "[${declarations.join(', ')}])";
   }
 
   @override
-  int get hashCode => super.hashCode + isInheritableConflict.hashCode * 11;
+  int get hashCode =>
+      super.hashCode +
+      concreteMember.hashCode * 11 +
+      isInheritableConflict.hashCode * 13;
 
   @override
   bool operator ==(Object other) {
     if (identical(this, other)) return true;
     return super == other &&
         other is InheritedImplementationInterfaceConflict &&
+        concreteMember == other.concreteMember &&
         isInheritableConflict == other.isInheritableConflict;
   }
 
@@ -2812,11 +2843,12 @@
       return combinedMemberSignatureResult;
     }
     if (!classBuilder.isAbstract) {
-      ClassMember concreteImplementation = declarations.first;
-      for (int i = 1; i < declarations.length; i++) {
-        new DelayedOverrideCheck(
-                classBuilder, concreteImplementation, declarations[i])
-            .check(hierarchy);
+      for (int i = 0; i < declarations.length; i++) {
+        if (concreteMember != declarations[i]) {
+          new DelayedOverrideCheck(
+                  classBuilder, concreteMember, declarations[i])
+              .check(hierarchy);
+        }
       }
     }
     return combinedMemberSignatureResult = new InterfaceConflict(classBuilder,
@@ -2828,14 +2860,8 @@
   DelayedMember withParent(ClassBuilder parent) {
     return parent == this.classBuilder
         ? this
-        : new InheritedImplementationInterfaceConflict(
-            parent,
-            declarations.toList(),
-            isProperty,
-            isSetter,
-            modifyKernel,
-            isAbstract,
-            name);
+        : new InheritedImplementationInterfaceConflict(parent, concreteMember,
+            [this], isProperty, isSetter, modifyKernel, isAbstract, name);
   }
 
   static ClassMember combined(
@@ -2864,6 +2890,7 @@
     } else {
       return new InheritedImplementationInterfaceConflict(
           parent,
+          concreteImplementation.concrete,
           declarations,
           concreteImplementation.isProperty,
           isSetter,
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 7bcc233..6a0a8a9 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
@@ -533,7 +533,7 @@
           handleIdentifier(Foo, fieldDeclaration)
           handleRecoverableError(MemberWithSameNameAsClass, Foo, Foo)
           handleNoFieldInitializer(;)
-        endClassFields(null, null, null, null, 1, int, ;)
+        endClassFields(null, null, null, null, null, null, 1, int, ;)
       endMember()
       beginMetadataStar(int)
       endMetadataStar(0)
@@ -548,7 +548,7 @@
         handleNoFieldInitializer(,)
         handleIdentifier(B, fieldDeclaration)
         handleNoFieldInitializer(;)
-      endClassFields(null, null, null, null, 3, int, ;)
+      endClassFields(null, null, null, null, null, null, 3, int, ;)
     endMember()
   endClassOrMixinBody(DeclarationKind.Class, 19, {, })
 endClassDeclaration(class, })
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 a6f2bc7..f3d8756 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
@@ -1000,7 +1000,7 @@
                   reportRecoverableError(Foo, MemberWithSameNameAsClass)
                     listener: handleRecoverableError(MemberWithSameNameAsClass, Foo, Foo)
                   listener: handleNoFieldInitializer(;)
-                listener: endClassFields(null, null, null, null, 1, int, ;)
+                listener: endClassFields(null, null, null, null, null, null, 1, int, ;)
               listener: endMember()
             notEofOrValue(}, int)
             parseClassOrMixinOrExtensionMemberImpl(;, DeclarationKind.Class, Foo)
@@ -1026,7 +1026,7 @@
                   listener: handleIdentifier(B, fieldDeclaration)
                 parseFieldInitializerOpt(B, B, null, null, null, null, DeclarationKind.Class, Foo)
                   listener: handleNoFieldInitializer(;)
-                listener: endClassFields(null, null, null, null, 3, int, ;)
+                listener: endClassFields(null, null, null, null, null, null, 3, int, ;)
               listener: endMember()
             notEofOrValue(}, })
             listener: endClassOrMixinBody(DeclarationKind.Class, 19, {, })
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 1f51f02..f33c1aa 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
@@ -75,6 +75,6 @@
     handleIdentifier(, topLevelVariableDeclaration)
     handleNoFieldInitializer()
     handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], , )
-  endTopLevelFields(null, null, null, null, 1, b, ;)
+  endTopLevelFields(null, null, null, null, null, 1, b, ;)
 endTopLevelDeclaration()
 endCompilationUnit(4, )
diff --git a/pkg/front_end/parser_testcases/error_recovery/issue_39202.crash_dart.intertwined.expect b/pkg/front_end/parser_testcases/error_recovery/issue_39202.crash_dart.intertwined.expect
index 7bc6caa..8ae34cca 100644
--- a/pkg/front_end/parser_testcases/error_recovery/issue_39202.crash_dart.intertwined.expect
+++ b/pkg/front_end/parser_testcases/error_recovery/issue_39202.crash_dart.intertwined.expect
@@ -98,7 +98,7 @@
           reportRecoverableError(, Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}])
             listener: handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], , )
           rewriter()
-        listener: endTopLevelFields(null, null, null, null, 1, b, ;)
+        listener: endTopLevelFields(null, null, null, null, null, 1, b, ;)
   listener: endTopLevelDeclaration()
   reportAllErrorTokens(()
   listener: endCompilationUnit(4, )
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 3b46efd..c905844 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
@@ -155,7 +155,7 @@
           beginFieldInitializer(=)
             handleLiteralInt(42)
           endFieldInitializer(=, ;)
-        endClassFields(null, null, null, null, 1, int, ;)
+        endClassFields(null, null, null, null, null, null, 1, int, ;)
       endMember()
       beginMetadataStar(int)
       endMetadataStar(0)
@@ -167,7 +167,7 @@
         beginFieldInitializer(=)
           handleLiteralInt(42)
         endFieldInitializer(=, ;)
-      endClassFields(null, null, null, null, 1, int, ;)
+      endClassFields(null, null, null, null, null, null, 1, int, ;)
     endMember()
     beginMetadataStar(int)
     endMetadataStar(0)
@@ -180,7 +180,7 @@
       beginFieldInitializer(=)
         handleLiteralInt(42)
       endFieldInitializer(=, ;)
-    endClassFields(null, null, null, null, 1, int, ;)
+    endClassFields(null, null, null, null, null, null, 1, int, ;)
   endMember()
   beginMetadataStar(int)
   endMetadataStar(0)
@@ -192,7 +192,7 @@
     beginFieldInitializer(=)
       handleLiteralInt(42)
     endFieldInitializer(=, ;)
-  endClassFields(null, null, null, null, 1, int, ;)
+  endClassFields(null, null, null, null, null, null, 1, int, ;)
 endMember()
 beginMetadataStar(int)
 endMetadataStar(0)
@@ -204,7 +204,7 @@
   beginFieldInitializer(=)
     handleLiteralInt(42)
   endFieldInitializer(=, ;)
-endClassFields(null, null, null, null, 1, int, ;)
+endClassFields(null, null, null, null, null, null, 1, int, ;)
 endMember()
 beginMetadataStar(int)
 endMetadataStar(0)
@@ -217,7 +217,7 @@
 beginFieldInitializer(=)
   handleLiteralInt(42)
 endFieldInitializer(=, ;)
-endClassFields(null, null, null, null, 1, int, ;)
+endClassFields(null, null, null, null, null, null, 1, int, ;)
 endMember()
 beginMetadataStar(int)
 endMetadataStar(0)
@@ -230,7 +230,7 @@
 beginFieldInitializer(=)
 handleLiteralInt(42)
 endFieldInitializer(=, ;)
-endClassFields(null, null, null, null, 1, int, ;)
+endClassFields(null, null, null, null, null, null, 1, int, ;)
 endMember()
 beginMetadataStar(int)
 endMetadataStar(0)
@@ -243,7 +243,7 @@
 beginFieldInitializer(=)
 handleLiteralInt(42)
 endFieldInitializer(=, ;)
-endClassFields(null, null, null, null, 1, int, ;)
+endClassFields(null, null, null, null, null, null, 1, int, ;)
 endMember()
 beginMetadataStar(int)
 endMetadataStar(0)
@@ -256,7 +256,7 @@
 beginFieldInitializer(=)
 handleLiteralInt(42)
 endFieldInitializer(=, ;)
-endClassFields(null, null, null, null, 1, int, ;)
+endClassFields(null, null, null, null, null, null, 1, int, ;)
 endMember()
 beginMetadataStar(int)
 endMetadataStar(0)
@@ -269,7 +269,7 @@
 beginFieldInitializer(=)
 handleLiteralInt(42)
 endFieldInitializer(=, ;)
-endClassFields(null, null, null, null, 1, int, ;)
+endClassFields(null, null, null, null, null, null, 1, int, ;)
 endMember()
 beginMetadataStar(int)
 endMetadataStar(0)
@@ -282,7 +282,7 @@
 beginFieldInitializer(=)
 handleLiteralInt(42)
 endFieldInitializer(=, ;)
-endClassFields(null, null, null, null, 1, int, ;)
+endClassFields(null, null, null, null, null, null, 1, int, ;)
 endMember()
 beginMetadataStar(int)
 endMetadataStar(0)
@@ -294,7 +294,7 @@
 beginFieldInitializer(=)
 handleLiteralInt(42)
 endFieldInitializer(=, ;)
-endClassFields(null, null, null, null, 1, int, ;)
+endClassFields(null, null, null, null, null, null, 1, int, ;)
 endMember()
 beginMetadataStar(int)
 endMetadataStar(0)
@@ -307,7 +307,7 @@
 beginFieldInitializer(=)
 handleLiteralInt(42)
 endFieldInitializer(=, ;)
-endClassFields(null, null, null, null, 1, int, ;)
+endClassFields(null, null, null, null, null, null, 1, int, ;)
 endMember()
 beginMetadataStar(int)
 endMetadataStar(0)
@@ -319,7 +319,7 @@
 beginFieldInitializer(=)
 handleLiteralInt(42)
 endFieldInitializer(=, ;)
-endClassFields(null, null, null, null, 1, int, ;)
+endClassFields(null, null, null, null, null, null, 1, int, ;)
 endMember()
 beginMetadataStar(int)
 endMetadataStar(0)
@@ -332,7 +332,7 @@
 beginFieldInitializer(=)
 handleLiteralInt(42)
 endFieldInitializer(=, ;)
-endClassFields(null, null, null, null, 1, int, ;)
+endClassFields(null, null, null, null, null, null, 1, int, ;)
 endMember()
 beginMetadataStar(int)
 endMetadataStar(0)
@@ -344,7 +344,7 @@
 beginFieldInitializer(=)
 handleLiteralInt(42)
 endFieldInitializer(=, ;)
-endClassFields(null, null, null, null, 1, int, ;)
+endClassFields(null, null, null, null, null, null, 1, int, ;)
 endMember()
 beginMetadataStar(int)
 endMetadataStar(0)
@@ -357,7 +357,7 @@
 beginFieldInitializer(=)
 handleLiteralInt(42)
 endFieldInitializer(=, ;)
-endClassFields(null, null, null, null, 1, int, ;)
+endClassFields(null, null, null, null, null, null, 1, int, ;)
 endMember()
 beginMetadataStar(int)
 endMetadataStar(0)
@@ -370,7 +370,7 @@
 beginFieldInitializer(=)
 handleLiteralInt(42)
 endFieldInitializer(=, ;)
-endClassFields(null, null, null, null, 1, int, ;)
+endClassFields(null, null, null, null, null, null, 1, int, ;)
 endMember()
 beginMetadataStar(int)
 endMetadataStar(0)
@@ -382,7 +382,7 @@
 beginFieldInitializer(=)
 handleLiteralInt(42)
 endFieldInitializer(=, ;)
-endClassFields(null, null, null, null, 1, int, ;)
+endClassFields(null, null, null, null, null, null, 1, int, ;)
 endMember()
 beginMetadataStar(int)
 endMetadataStar(0)
@@ -395,7 +395,7 @@
 beginFieldInitializer(=)
 handleLiteralInt(42)
 endFieldInitializer(=, ;)
-endClassFields(null, null, null, null, 1, int, ;)
+endClassFields(null, null, null, null, null, null, 1, int, ;)
 endMember()
 beginMetadataStar(int)
 endMetadataStar(0)
@@ -407,7 +407,7 @@
 beginFieldInitializer(=)
 handleLiteralInt(42)
 endFieldInitializer(=, ;)
-endClassFields(null, null, null, null, 1, int, ;)
+endClassFields(null, null, null, null, null, null, 1, int, ;)
 endMember()
 beginMetadataStar(int)
 endMetadataStar(0)
@@ -419,7 +419,7 @@
 beginFieldInitializer(=)
 handleLiteralInt(42)
 endFieldInitializer(=, ;)
-endClassFields(null, null, null, null, 1, int, ;)
+endClassFields(null, null, null, null, null, null, 1, int, ;)
 endMember()
 beginMetadataStar(int)
 endMetadataStar(0)
@@ -431,7 +431,7 @@
 beginFieldInitializer(=)
 handleLiteralInt(42)
 endFieldInitializer(=, ;)
-endClassFields(null, null, null, null, 1, int, ;)
+endClassFields(null, null, null, null, null, null, 1, int, ;)
 endMember()
 beginMetadataStar(int)
 endMetadataStar(0)
@@ -444,7 +444,7 @@
 beginFieldInitializer(=)
 handleLiteralInt(42)
 endFieldInitializer(=, ;)
-endClassFields(null, null, null, null, 1, int, ;)
+endClassFields(null, null, null, null, null, null, 1, int, ;)
 endMember()
 beginMetadataStar(int)
 endMetadataStar(0)
@@ -457,7 +457,7 @@
 beginFieldInitializer(=)
 handleLiteralInt(42)
 endFieldInitializer(=, ;)
-endClassFields(null, null, null, null, 1, int, ;)
+endClassFields(null, null, null, null, null, null, 1, int, ;)
 endMember()
 beginMetadataStar(int)
 endMetadataStar(0)
@@ -470,7 +470,7 @@
 beginFieldInitializer(=)
 handleLiteralInt(42)
 endFieldInitializer(=, ;)
-endClassFields(null, null, null, null, 1, int, ;)
+endClassFields(null, null, null, null, null, null, 1, int, ;)
 endMember()
 beginMetadataStar(int)
 endMetadataStar(0)
@@ -483,7 +483,7 @@
 beginFieldInitializer(=)
 handleLiteralInt(42)
 endFieldInitializer(=, ;)
-endClassFields(null, null, null, null, 1, int, ;)
+endClassFields(null, null, null, null, null, null, 1, int, ;)
 endMember()
 beginMetadataStar(int)
 endMetadataStar(0)
@@ -495,7 +495,7 @@
 beginFieldInitializer(=)
 handleLiteralInt(42)
 endFieldInitializer(=, ;)
-endClassFields(null, null, null, null, 1, int, ;)
+endClassFields(null, null, null, null, null, null, 1, int, ;)
 endMember()
 beginMetadataStar(int)
 endMetadataStar(0)
@@ -507,7 +507,7 @@
 beginFieldInitializer(=)
 handleLiteralInt(42)
 endFieldInitializer(=, ;)
-endClassFields(null, null, null, null, 1, int, ;)
+endClassFields(null, null, null, null, null, null, 1, int, ;)
 endMember()
 beginMetadataStar(int)
 endMetadataStar(0)
@@ -519,7 +519,7 @@
 beginFieldInitializer(=)
 handleLiteralInt(42)
 endFieldInitializer(=, ;)
-endClassFields(null, null, null, null, 1, int, ;)
+endClassFields(null, null, null, null, null, null, 1, int, ;)
 endMember()
 beginMetadataStar(int)
 endMetadataStar(0)
@@ -532,7 +532,7 @@
 beginFieldInitializer(=)
 handleLiteralInt(42)
 endFieldInitializer(=, ;)
-endClassFields(null, null, null, null, 1, int, ;)
+endClassFields(null, null, null, null, null, null, 1, int, ;)
 endMember()
 beginMetadataStar(int)
 endMetadataStar(0)
@@ -544,7 +544,7 @@
 beginFieldInitializer(=)
 handleLiteralInt(42)
 endFieldInitializer(=, ;)
-endClassFields(null, null, null, null, 1, int, ;)
+endClassFields(null, null, null, null, null, null, 1, int, ;)
 endMember()
 beginMetadataStar(int)
 endMetadataStar(0)
@@ -556,7 +556,7 @@
 beginFieldInitializer(=)
 handleLiteralInt(42)
 endFieldInitializer(=, ;)
-endClassFields(null, null, null, null, 1, int, ;)
+endClassFields(null, null, null, null, null, null, 1, int, ;)
 endMember()
 beginMetadataStar(int)
 endMetadataStar(0)
@@ -569,7 +569,7 @@
 beginFieldInitializer(=)
 handleLiteralInt(42)
 endFieldInitializer(=, ;)
-endClassFields(null, null, null, null, 1, int, ;)
+endClassFields(null, null, null, null, null, null, 1, int, ;)
 endMember()
 beginMetadataStar(int)
 endMetadataStar(0)
@@ -581,7 +581,7 @@
 beginFieldInitializer(=)
 handleLiteralInt(42)
 endFieldInitializer(=, ;)
-endClassFields(null, null, null, null, 1, int, ;)
+endClassFields(null, null, null, null, null, null, 1, int, ;)
 endMember()
 beginMetadataStar(int)
 endMetadataStar(0)
@@ -593,7 +593,7 @@
 beginFieldInitializer(=)
 handleLiteralInt(42)
 endFieldInitializer(=, ;)
-endClassFields(null, null, null, null, 1, int, ;)
+endClassFields(null, null, null, null, null, null, 1, int, ;)
 endMember()
 beginMetadataStar(int)
 endMetadataStar(0)
@@ -606,7 +606,7 @@
 beginFieldInitializer(=)
 handleLiteralInt(42)
 endFieldInitializer(=, ;)
-endClassFields(null, null, null, null, 1, int, ;)
+endClassFields(null, null, null, null, null, null, 1, int, ;)
 endMember()
 beginMetadataStar(int)
 endMetadataStar(0)
@@ -618,7 +618,7 @@
 beginFieldInitializer(=)
 handleLiteralInt(42)
 endFieldInitializer(=, ;)
-endClassFields(null, null, null, null, 1, int, ;)
+endClassFields(null, null, null, null, null, null, 1, int, ;)
 endMember()
 beginMetadataStar(int)
 endMetadataStar(0)
@@ -630,7 +630,7 @@
 beginFieldInitializer(=)
 handleLiteralInt(42)
 endFieldInitializer(=, ;)
-endClassFields(null, null, null, null, 1, int, ;)
+endClassFields(null, null, null, null, null, null, 1, int, ;)
 endMember()
 beginMetadataStar(int)
 endMetadataStar(0)
@@ -642,7 +642,7 @@
 beginFieldInitializer(=)
 handleLiteralInt(42)
 endFieldInitializer(=, ;)
-endClassFields(null, null, null, null, 1, int, ;)
+endClassFields(null, null, null, null, null, null, 1, int, ;)
 endMember()
 beginMetadataStar(int)
 endMetadataStar(0)
@@ -654,7 +654,7 @@
 beginFieldInitializer(=)
 handleLiteralInt(42)
 endFieldInitializer(=, ;)
-endClassFields(null, null, null, null, 1, int, ;)
+endClassFields(null, null, null, null, null, null, 1, int, ;)
 endMember()
 beginMetadataStar(int)
 endMetadataStar(0)
@@ -667,7 +667,7 @@
 beginFieldInitializer(=)
 handleLiteralInt(42)
 endFieldInitializer(=, ;)
-endClassFields(null, null, null, null, 1, int, ;)
+endClassFields(null, null, null, null, null, null, 1, int, ;)
 endMember()
 beginMetadataStar(int)
 endMetadataStar(0)
@@ -680,7 +680,7 @@
 beginFieldInitializer(=)
 handleLiteralInt(42)
 endFieldInitializer(=, ;)
-endClassFields(null, null, null, null, 1, int, ;)
+endClassFields(null, null, null, null, null, null, 1, int, ;)
 endMember()
 beginMetadataStar(int)
 endMetadataStar(0)
@@ -692,7 +692,7 @@
 beginFieldInitializer(=)
 handleLiteralInt(42)
 endFieldInitializer(=, ;)
-endClassFields(null, null, null, null, 1, int, ;)
+endClassFields(null, null, null, null, null, null, 1, int, ;)
 endMember()
 beginMetadataStar(int)
 endMetadataStar(0)
@@ -704,7 +704,7 @@
 beginFieldInitializer(=)
 handleLiteralInt(42)
 endFieldInitializer(=, ;)
-endClassFields(null, null, null, null, 1, int, ;)
+endClassFields(null, null, null, null, null, null, 1, int, ;)
 endMember()
 beginMetadataStar(int)
 endMetadataStar(0)
@@ -716,7 +716,7 @@
 beginFieldInitializer(=)
 handleLiteralInt(42)
 endFieldInitializer(=, ;)
-endClassFields(null, null, null, null, 1, int, ;)
+endClassFields(null, null, null, null, null, null, 1, int, ;)
 endMember()
 beginMetadataStar(int)
 endMetadataStar(0)
@@ -728,7 +728,7 @@
 beginFieldInitializer(=)
 handleLiteralInt(42)
 endFieldInitializer(=, ;)
-endClassFields(null, null, null, null, 1, int, ;)
+endClassFields(null, null, null, null, null, null, 1, int, ;)
 endMember()
 beginMetadataStar(int)
 endMetadataStar(0)
@@ -740,7 +740,7 @@
 beginFieldInitializer(=)
 handleLiteralInt(42)
 endFieldInitializer(=, ;)
-endClassFields(null, null, null, null, 1, int, ;)
+endClassFields(null, null, null, null, null, null, 1, int, ;)
 endMember()
 beginMetadataStar(int)
 endMetadataStar(0)
@@ -752,7 +752,7 @@
 beginFieldInitializer(=)
 handleLiteralInt(42)
 endFieldInitializer(=, ;)
-endClassFields(null, null, null, null, 1, int, ;)
+endClassFields(null, null, null, null, null, null, 1, int, ;)
 endMember()
 beginMetadataStar(int)
 endMetadataStar(0)
@@ -764,7 +764,7 @@
 beginFieldInitializer(=)
 handleLiteralInt(42)
 endFieldInitializer(=, ;)
-endClassFields(null, null, null, null, 1, int, ;)
+endClassFields(null, null, null, null, null, null, 1, int, ;)
 endMember()
 beginMetadataStar(int)
 endMetadataStar(0)
@@ -777,7 +777,7 @@
 beginFieldInitializer(=)
 handleLiteralInt(42)
 endFieldInitializer(=, ;)
-endClassFields(null, null, null, null, 1, int, ;)
+endClassFields(null, null, null, null, null, null, 1, int, ;)
 endMember()
 beginMetadataStar(int)
 endMetadataStar(0)
@@ -790,7 +790,7 @@
 beginFieldInitializer(=)
 handleLiteralInt(42)
 endFieldInitializer(=, ;)
-endClassFields(null, null, null, null, 1, int, ;)
+endClassFields(null, null, null, null, null, null, 1, int, ;)
 endMember()
 beginMetadataStar(int)
 endMetadataStar(0)
@@ -802,7 +802,7 @@
 beginFieldInitializer(=)
 handleLiteralInt(42)
 endFieldInitializer(=, ;)
-endClassFields(null, null, null, null, 1, int, ;)
+endClassFields(null, null, null, null, null, null, 1, int, ;)
 endMember()
 beginMetadataStar(int)
 endMetadataStar(0)
@@ -814,7 +814,7 @@
 beginFieldInitializer(=)
 handleLiteralInt(42)
 endFieldInitializer(=, ;)
-endClassFields(null, null, null, null, 1, int, ;)
+endClassFields(null, null, null, null, null, null, 1, int, ;)
 endMember()
 beginMetadataStar(int)
 endMetadataStar(0)
@@ -826,7 +826,7 @@
 beginFieldInitializer(=)
 handleLiteralInt(42)
 endFieldInitializer(=, ;)
-endClassFields(null, null, null, null, 1, int, ;)
+endClassFields(null, null, null, null, null, null, 1, int, ;)
 endMember()
 beginMetadataStar(int)
 endMetadataStar(0)
@@ -838,7 +838,7 @@
 beginFieldInitializer(=)
 handleLiteralInt(42)
 endFieldInitializer(=, ;)
-endClassFields(null, null, null, null, 1, int, ;)
+endClassFields(null, null, null, null, null, null, 1, int, ;)
 endMember()
 beginMetadataStar(int)
 endMetadataStar(0)
@@ -851,7 +851,7 @@
 beginFieldInitializer(=)
 handleLiteralInt(42)
 endFieldInitializer(=, ;)
-endClassFields(null, null, null, null, 1, int, ;)
+endClassFields(null, null, null, null, null, null, 1, int, ;)
 endMember()
 beginMetadataStar(int)
 endMetadataStar(0)
@@ -864,7 +864,7 @@
 beginFieldInitializer(=)
 handleLiteralInt(42)
 endFieldInitializer(=, ;)
-endClassFields(null, null, null, null, 1, int, ;)
+endClassFields(null, null, null, null, null, null, 1, int, ;)
 endMember()
 beginMetadataStar(int)
 endMetadataStar(0)
@@ -876,7 +876,7 @@
 beginFieldInitializer(=)
 handleLiteralInt(42)
 endFieldInitializer(=, ;)
-endClassFields(null, null, null, null, 1, int, ;)
+endClassFields(null, null, null, null, null, null, 1, int, ;)
 endMember()
 beginMetadataStar(int)
 endMetadataStar(0)
@@ -889,7 +889,7 @@
 beginFieldInitializer(=)
 handleLiteralInt(42)
 endFieldInitializer(=, ;)
-endClassFields(null, null, null, null, 1, int, ;)
+endClassFields(null, null, null, null, null, null, 1, int, ;)
 endMember()
 beginMetadataStar(int)
 endMetadataStar(0)
@@ -902,7 +902,7 @@
 beginFieldInitializer(=)
 handleLiteralInt(42)
 endFieldInitializer(=, ;)
-endClassFields(null, null, null, null, 1, int, ;)
+endClassFields(null, null, null, null, null, null, 1, int, ;)
 endMember()
 beginMetadataStar(int)
 endMetadataStar(0)
@@ -915,7 +915,7 @@
 beginFieldInitializer(=)
 handleLiteralInt(42)
 endFieldInitializer(=, ;)
-endClassFields(null, null, null, null, 1, int, ;)
+endClassFields(null, null, null, null, null, null, 1, int, ;)
 endMember()
 beginMetadataStar(int)
 endMetadataStar(0)
@@ -928,7 +928,7 @@
 beginFieldInitializer(=)
 handleLiteralInt(42)
 endFieldInitializer(=, ;)
-endClassFields(null, null, null, null, 1, int, ;)
+endClassFields(null, null, null, null, null, null, 1, int, ;)
 endMember()
 beginMetadataStar(int)
 endMetadataStar(0)
@@ -940,7 +940,7 @@
 beginFieldInitializer(=)
 handleLiteralInt(42)
 endFieldInitializer(=, ;)
-endClassFields(null, null, null, null, 1, int, ;)
+endClassFields(null, null, null, null, null, null, 1, int, ;)
 endMember()
 beginMetadataStar(int)
 endMetadataStar(0)
@@ -953,7 +953,7 @@
 beginFieldInitializer(=)
 handleLiteralInt(42)
 endFieldInitializer(=, ;)
-endClassFields(null, null, null, null, 1, int, ;)
+endClassFields(null, null, null, null, null, null, 1, int, ;)
 endMember()
 beginMetadataStar(int)
 endMetadataStar(0)
@@ -966,7 +966,7 @@
 beginFieldInitializer(=)
 handleLiteralInt(42)
 endFieldInitializer(=, ;)
-endClassFields(null, null, null, null, 1, int, ;)
+endClassFields(null, null, null, null, null, null, 1, int, ;)
 endMember()
 beginMetadataStar(int)
 endMetadataStar(0)
@@ -979,7 +979,7 @@
 beginFieldInitializer(=)
 handleLiteralInt(42)
 endFieldInitializer(=, ;)
-endClassFields(null, null, null, null, 1, int, ;)
+endClassFields(null, null, null, null, null, null, 1, int, ;)
 endMember()
 beginMetadataStar(int)
 endMetadataStar(0)
@@ -992,7 +992,7 @@
 beginFieldInitializer(=)
 handleLiteralInt(42)
 endFieldInitializer(=, ;)
-endClassFields(null, null, null, null, 1, int, ;)
+endClassFields(null, null, null, null, null, null, 1, int, ;)
 endMember()
 beginMetadataStar(int)
 endMetadataStar(0)
@@ -1004,7 +1004,7 @@
 beginFieldInitializer(=)
 handleLiteralInt(42)
 endFieldInitializer(=, ;)
-endClassFields(null, null, null, null, 1, int, ;)
+endClassFields(null, null, null, null, null, null, 1, int, ;)
 endMember()
 endClassOrMixinBody(DeclarationKind.Class, 69, {, })
 endClassDeclaration(class, })
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 71e5c0c..8235cd1 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
@@ -47,7 +47,7 @@
                           parseLiteralInt(=)
                             listener: handleLiteralInt(42)
                   listener: endFieldInitializer(=, ;)
-                listener: endClassFields(null, null, null, null, 1, int, ;)
+                listener: endClassFields(null, null, null, null, null, null, 1, int, ;)
               listener: endMember()
             notEofOrValue(}, int)
             parseClassOrMixinOrExtensionMemberImpl(;, DeclarationKind.Class, WrapperClass)
@@ -70,7 +70,7 @@
                           parseLiteralInt(=)
                             listener: handleLiteralInt(42)
                   listener: endFieldInitializer(=, ;)
-                listener: endClassFields(null, null, null, null, 1, int, ;)
+                listener: endClassFields(null, null, null, null, null, null, 1, int, ;)
               listener: endMember()
             notEofOrValue(}, int)
             parseClassOrMixinOrExtensionMemberImpl(;, DeclarationKind.Class, WrapperClass)
@@ -97,7 +97,7 @@
                           parseLiteralInt(=)
                             listener: handleLiteralInt(42)
                   listener: endFieldInitializer(=, ;)
-                listener: endClassFields(null, null, null, null, 1, int, ;)
+                listener: endClassFields(null, null, null, null, null, null, 1, int, ;)
               listener: endMember()
             notEofOrValue(}, int)
             parseClassOrMixinOrExtensionMemberImpl(;, DeclarationKind.Class, WrapperClass)
@@ -120,7 +120,7 @@
                           parseLiteralInt(=)
                             listener: handleLiteralInt(42)
                   listener: endFieldInitializer(=, ;)
-                listener: endClassFields(null, null, null, null, 1, int, ;)
+                listener: endClassFields(null, null, null, null, null, null, 1, int, ;)
               listener: endMember()
             notEofOrValue(}, int)
             parseClassOrMixinOrExtensionMemberImpl(;, DeclarationKind.Class, WrapperClass)
@@ -143,7 +143,7 @@
                           parseLiteralInt(=)
                             listener: handleLiteralInt(42)
                   listener: endFieldInitializer(=, ;)
-                listener: endClassFields(null, null, null, null, 1, int, ;)
+                listener: endClassFields(null, null, null, null, null, null, 1, int, ;)
               listener: endMember()
             notEofOrValue(}, int)
             parseClassOrMixinOrExtensionMemberImpl(;, DeclarationKind.Class, WrapperClass)
@@ -170,7 +170,7 @@
                           parseLiteralInt(=)
                             listener: handleLiteralInt(42)
                   listener: endFieldInitializer(=, ;)
-                listener: endClassFields(null, null, null, null, 1, int, ;)
+                listener: endClassFields(null, null, null, null, null, null, 1, int, ;)
               listener: endMember()
             notEofOrValue(}, int)
             parseClassOrMixinOrExtensionMemberImpl(;, DeclarationKind.Class, WrapperClass)
@@ -197,7 +197,7 @@
                           parseLiteralInt(=)
                             listener: handleLiteralInt(42)
                   listener: endFieldInitializer(=, ;)
-                listener: endClassFields(null, null, null, null, 1, int, ;)
+                listener: endClassFields(null, null, null, null, null, null, 1, int, ;)
               listener: endMember()
             notEofOrValue(}, int)
             parseClassOrMixinOrExtensionMemberImpl(;, DeclarationKind.Class, WrapperClass)
@@ -224,7 +224,7 @@
                           parseLiteralInt(=)
                             listener: handleLiteralInt(42)
                   listener: endFieldInitializer(=, ;)
-                listener: endClassFields(null, null, null, null, 1, int, ;)
+                listener: endClassFields(null, null, null, null, null, null, 1, int, ;)
               listener: endMember()
             notEofOrValue(}, int)
             parseClassOrMixinOrExtensionMemberImpl(;, DeclarationKind.Class, WrapperClass)
@@ -251,7 +251,7 @@
                           parseLiteralInt(=)
                             listener: handleLiteralInt(42)
                   listener: endFieldInitializer(=, ;)
-                listener: endClassFields(null, null, null, null, 1, int, ;)
+                listener: endClassFields(null, null, null, null, null, null, 1, int, ;)
               listener: endMember()
             notEofOrValue(}, int)
             parseClassOrMixinOrExtensionMemberImpl(;, DeclarationKind.Class, WrapperClass)
@@ -278,7 +278,7 @@
                           parseLiteralInt(=)
                             listener: handleLiteralInt(42)
                   listener: endFieldInitializer(=, ;)
-                listener: endClassFields(null, null, null, null, 1, int, ;)
+                listener: endClassFields(null, null, null, null, null, null, 1, int, ;)
               listener: endMember()
             notEofOrValue(}, int)
             parseClassOrMixinOrExtensionMemberImpl(;, DeclarationKind.Class, WrapperClass)
@@ -305,7 +305,7 @@
                           parseLiteralInt(=)
                             listener: handleLiteralInt(42)
                   listener: endFieldInitializer(=, ;)
-                listener: endClassFields(null, null, null, null, 1, int, ;)
+                listener: endClassFields(null, null, null, null, null, null, 1, int, ;)
               listener: endMember()
             notEofOrValue(}, int)
             parseClassOrMixinOrExtensionMemberImpl(;, DeclarationKind.Class, WrapperClass)
@@ -328,7 +328,7 @@
                           parseLiteralInt(=)
                             listener: handleLiteralInt(42)
                   listener: endFieldInitializer(=, ;)
-                listener: endClassFields(null, null, null, null, 1, int, ;)
+                listener: endClassFields(null, null, null, null, null, null, 1, int, ;)
               listener: endMember()
             notEofOrValue(}, int)
             parseClassOrMixinOrExtensionMemberImpl(;, DeclarationKind.Class, WrapperClass)
@@ -355,7 +355,7 @@
                           parseLiteralInt(=)
                             listener: handleLiteralInt(42)
                   listener: endFieldInitializer(=, ;)
-                listener: endClassFields(null, null, null, null, 1, int, ;)
+                listener: endClassFields(null, null, null, null, null, null, 1, int, ;)
               listener: endMember()
             notEofOrValue(}, int)
             parseClassOrMixinOrExtensionMemberImpl(;, DeclarationKind.Class, WrapperClass)
@@ -378,7 +378,7 @@
                           parseLiteralInt(=)
                             listener: handleLiteralInt(42)
                   listener: endFieldInitializer(=, ;)
-                listener: endClassFields(null, null, null, null, 1, int, ;)
+                listener: endClassFields(null, null, null, null, null, null, 1, int, ;)
               listener: endMember()
             notEofOrValue(}, int)
             parseClassOrMixinOrExtensionMemberImpl(;, DeclarationKind.Class, WrapperClass)
@@ -405,7 +405,7 @@
                           parseLiteralInt(=)
                             listener: handleLiteralInt(42)
                   listener: endFieldInitializer(=, ;)
-                listener: endClassFields(null, null, null, null, 1, int, ;)
+                listener: endClassFields(null, null, null, null, null, null, 1, int, ;)
               listener: endMember()
             notEofOrValue(}, int)
             parseClassOrMixinOrExtensionMemberImpl(;, DeclarationKind.Class, WrapperClass)
@@ -428,7 +428,7 @@
                           parseLiteralInt(=)
                             listener: handleLiteralInt(42)
                   listener: endFieldInitializer(=, ;)
-                listener: endClassFields(null, null, null, null, 1, int, ;)
+                listener: endClassFields(null, null, null, null, null, null, 1, int, ;)
               listener: endMember()
             notEofOrValue(}, int)
             parseClassOrMixinOrExtensionMemberImpl(;, DeclarationKind.Class, WrapperClass)
@@ -455,7 +455,7 @@
                           parseLiteralInt(=)
                             listener: handleLiteralInt(42)
                   listener: endFieldInitializer(=, ;)
-                listener: endClassFields(null, null, null, null, 1, int, ;)
+                listener: endClassFields(null, null, null, null, null, null, 1, int, ;)
               listener: endMember()
             notEofOrValue(}, int)
             parseClassOrMixinOrExtensionMemberImpl(;, DeclarationKind.Class, WrapperClass)
@@ -482,7 +482,7 @@
                           parseLiteralInt(=)
                             listener: handleLiteralInt(42)
                   listener: endFieldInitializer(=, ;)
-                listener: endClassFields(null, null, null, null, 1, int, ;)
+                listener: endClassFields(null, null, null, null, null, null, 1, int, ;)
               listener: endMember()
             notEofOrValue(}, int)
             parseClassOrMixinOrExtensionMemberImpl(;, DeclarationKind.Class, WrapperClass)
@@ -505,7 +505,7 @@
                           parseLiteralInt(=)
                             listener: handleLiteralInt(42)
                   listener: endFieldInitializer(=, ;)
-                listener: endClassFields(null, null, null, null, 1, int, ;)
+                listener: endClassFields(null, null, null, null, null, null, 1, int, ;)
               listener: endMember()
             notEofOrValue(}, int)
             parseClassOrMixinOrExtensionMemberImpl(;, DeclarationKind.Class, WrapperClass)
@@ -532,7 +532,7 @@
                           parseLiteralInt(=)
                             listener: handleLiteralInt(42)
                   listener: endFieldInitializer(=, ;)
-                listener: endClassFields(null, null, null, null, 1, int, ;)
+                listener: endClassFields(null, null, null, null, null, null, 1, int, ;)
               listener: endMember()
             notEofOrValue(}, int)
             parseClassOrMixinOrExtensionMemberImpl(;, DeclarationKind.Class, WrapperClass)
@@ -555,7 +555,7 @@
                           parseLiteralInt(=)
                             listener: handleLiteralInt(42)
                   listener: endFieldInitializer(=, ;)
-                listener: endClassFields(null, null, null, null, 1, int, ;)
+                listener: endClassFields(null, null, null, null, null, null, 1, int, ;)
               listener: endMember()
             notEofOrValue(}, int)
             parseClassOrMixinOrExtensionMemberImpl(;, DeclarationKind.Class, WrapperClass)
@@ -578,7 +578,7 @@
                           parseLiteralInt(=)
                             listener: handleLiteralInt(42)
                   listener: endFieldInitializer(=, ;)
-                listener: endClassFields(null, null, null, null, 1, int, ;)
+                listener: endClassFields(null, null, null, null, null, null, 1, int, ;)
               listener: endMember()
             notEofOrValue(}, int)
             parseClassOrMixinOrExtensionMemberImpl(;, DeclarationKind.Class, WrapperClass)
@@ -601,7 +601,7 @@
                           parseLiteralInt(=)
                             listener: handleLiteralInt(42)
                   listener: endFieldInitializer(=, ;)
-                listener: endClassFields(null, null, null, null, 1, int, ;)
+                listener: endClassFields(null, null, null, null, null, null, 1, int, ;)
               listener: endMember()
             notEofOrValue(}, int)
             parseClassOrMixinOrExtensionMemberImpl(;, DeclarationKind.Class, WrapperClass)
@@ -628,7 +628,7 @@
                           parseLiteralInt(=)
                             listener: handleLiteralInt(42)
                   listener: endFieldInitializer(=, ;)
-                listener: endClassFields(null, null, null, null, 1, int, ;)
+                listener: endClassFields(null, null, null, null, null, null, 1, int, ;)
               listener: endMember()
             notEofOrValue(}, int)
             parseClassOrMixinOrExtensionMemberImpl(;, DeclarationKind.Class, WrapperClass)
@@ -655,7 +655,7 @@
                           parseLiteralInt(=)
                             listener: handleLiteralInt(42)
                   listener: endFieldInitializer(=, ;)
-                listener: endClassFields(null, null, null, null, 1, int, ;)
+                listener: endClassFields(null, null, null, null, null, null, 1, int, ;)
               listener: endMember()
             notEofOrValue(}, int)
             parseClassOrMixinOrExtensionMemberImpl(;, DeclarationKind.Class, WrapperClass)
@@ -682,7 +682,7 @@
                           parseLiteralInt(=)
                             listener: handleLiteralInt(42)
                   listener: endFieldInitializer(=, ;)
-                listener: endClassFields(null, null, null, null, 1, int, ;)
+                listener: endClassFields(null, null, null, null, null, null, 1, int, ;)
               listener: endMember()
             notEofOrValue(}, int)
             parseClassOrMixinOrExtensionMemberImpl(;, DeclarationKind.Class, WrapperClass)
@@ -709,7 +709,7 @@
                           parseLiteralInt(=)
                             listener: handleLiteralInt(42)
                   listener: endFieldInitializer(=, ;)
-                listener: endClassFields(null, null, null, null, 1, int, ;)
+                listener: endClassFields(null, null, null, null, null, null, 1, int, ;)
               listener: endMember()
             notEofOrValue(}, int)
             parseClassOrMixinOrExtensionMemberImpl(;, DeclarationKind.Class, WrapperClass)
@@ -732,7 +732,7 @@
                           parseLiteralInt(=)
                             listener: handleLiteralInt(42)
                   listener: endFieldInitializer(=, ;)
-                listener: endClassFields(null, null, null, null, 1, int, ;)
+                listener: endClassFields(null, null, null, null, null, null, 1, int, ;)
               listener: endMember()
             notEofOrValue(}, int)
             parseClassOrMixinOrExtensionMemberImpl(;, DeclarationKind.Class, WrapperClass)
@@ -756,7 +756,7 @@
                           parseLiteralInt(=)
                             listener: handleLiteralInt(42)
                   listener: endFieldInitializer(=, ;)
-                listener: endClassFields(null, null, null, null, 1, int, ;)
+                listener: endClassFields(null, null, null, null, null, null, 1, int, ;)
               listener: endMember()
             notEofOrValue(}, int)
             parseClassOrMixinOrExtensionMemberImpl(;, DeclarationKind.Class, WrapperClass)
@@ -779,7 +779,7 @@
                           parseLiteralInt(=)
                             listener: handleLiteralInt(42)
                   listener: endFieldInitializer(=, ;)
-                listener: endClassFields(null, null, null, null, 1, int, ;)
+                listener: endClassFields(null, null, null, null, null, null, 1, int, ;)
               listener: endMember()
             notEofOrValue(}, int)
             parseClassOrMixinOrExtensionMemberImpl(;, DeclarationKind.Class, WrapperClass)
@@ -806,7 +806,7 @@
                           parseLiteralInt(=)
                             listener: handleLiteralInt(42)
                   listener: endFieldInitializer(=, ;)
-                listener: endClassFields(null, null, null, null, 1, int, ;)
+                listener: endClassFields(null, null, null, null, null, null, 1, int, ;)
               listener: endMember()
             notEofOrValue(}, int)
             parseClassOrMixinOrExtensionMemberImpl(;, DeclarationKind.Class, WrapperClass)
@@ -829,7 +829,7 @@
                           parseLiteralInt(=)
                             listener: handleLiteralInt(42)
                   listener: endFieldInitializer(=, ;)
-                listener: endClassFields(null, null, null, null, 1, int, ;)
+                listener: endClassFields(null, null, null, null, null, null, 1, int, ;)
               listener: endMember()
             notEofOrValue(}, int)
             parseClassOrMixinOrExtensionMemberImpl(;, DeclarationKind.Class, WrapperClass)
@@ -852,7 +852,7 @@
                           parseLiteralInt(=)
                             listener: handleLiteralInt(42)
                   listener: endFieldInitializer(=, ;)
-                listener: endClassFields(null, null, null, null, 1, int, ;)
+                listener: endClassFields(null, null, null, null, null, null, 1, int, ;)
               listener: endMember()
             notEofOrValue(}, int)
             parseClassOrMixinOrExtensionMemberImpl(;, DeclarationKind.Class, WrapperClass)
@@ -879,7 +879,7 @@
                           parseLiteralInt(=)
                             listener: handleLiteralInt(42)
                   listener: endFieldInitializer(=, ;)
-                listener: endClassFields(null, null, null, null, 1, int, ;)
+                listener: endClassFields(null, null, null, null, null, null, 1, int, ;)
               listener: endMember()
             notEofOrValue(}, int)
             parseClassOrMixinOrExtensionMemberImpl(;, DeclarationKind.Class, WrapperClass)
@@ -902,7 +902,7 @@
                           parseLiteralInt(=)
                             listener: handleLiteralInt(42)
                   listener: endFieldInitializer(=, ;)
-                listener: endClassFields(null, null, null, null, 1, int, ;)
+                listener: endClassFields(null, null, null, null, null, null, 1, int, ;)
               listener: endMember()
             notEofOrValue(}, int)
             parseClassOrMixinOrExtensionMemberImpl(;, DeclarationKind.Class, WrapperClass)
@@ -925,7 +925,7 @@
                           parseLiteralInt(=)
                             listener: handleLiteralInt(42)
                   listener: endFieldInitializer(=, ;)
-                listener: endClassFields(null, null, null, null, 1, int, ;)
+                listener: endClassFields(null, null, null, null, null, null, 1, int, ;)
               listener: endMember()
             notEofOrValue(}, int)
             parseClassOrMixinOrExtensionMemberImpl(;, DeclarationKind.Class, WrapperClass)
@@ -952,7 +952,7 @@
                           parseLiteralInt(=)
                             listener: handleLiteralInt(42)
                   listener: endFieldInitializer(=, ;)
-                listener: endClassFields(null, null, null, null, 1, int, ;)
+                listener: endClassFields(null, null, null, null, null, null, 1, int, ;)
               listener: endMember()
             notEofOrValue(}, int)
             parseClassOrMixinOrExtensionMemberImpl(;, DeclarationKind.Class, WrapperClass)
@@ -975,7 +975,7 @@
                           parseLiteralInt(=)
                             listener: handleLiteralInt(42)
                   listener: endFieldInitializer(=, ;)
-                listener: endClassFields(null, null, null, null, 1, int, ;)
+                listener: endClassFields(null, null, null, null, null, null, 1, int, ;)
               listener: endMember()
             notEofOrValue(}, int)
             parseClassOrMixinOrExtensionMemberImpl(;, DeclarationKind.Class, WrapperClass)
@@ -998,7 +998,7 @@
                           parseLiteralInt(=)
                             listener: handleLiteralInt(42)
                   listener: endFieldInitializer(=, ;)
-                listener: endClassFields(null, null, null, null, 1, int, ;)
+                listener: endClassFields(null, null, null, null, null, null, 1, int, ;)
               listener: endMember()
             notEofOrValue(}, int)
             parseClassOrMixinOrExtensionMemberImpl(;, DeclarationKind.Class, WrapperClass)
@@ -1021,7 +1021,7 @@
                           parseLiteralInt(=)
                             listener: handleLiteralInt(42)
                   listener: endFieldInitializer(=, ;)
-                listener: endClassFields(null, null, null, null, 1, int, ;)
+                listener: endClassFields(null, null, null, null, null, null, 1, int, ;)
               listener: endMember()
             notEofOrValue(}, int)
             parseClassOrMixinOrExtensionMemberImpl(;, DeclarationKind.Class, WrapperClass)
@@ -1044,7 +1044,7 @@
                           parseLiteralInt(=)
                             listener: handleLiteralInt(42)
                   listener: endFieldInitializer(=, ;)
-                listener: endClassFields(null, null, null, null, 1, int, ;)
+                listener: endClassFields(null, null, null, null, null, null, 1, int, ;)
               listener: endMember()
             notEofOrValue(}, int)
             parseClassOrMixinOrExtensionMemberImpl(;, DeclarationKind.Class, WrapperClass)
@@ -1071,7 +1071,7 @@
                           parseLiteralInt(=)
                             listener: handleLiteralInt(42)
                   listener: endFieldInitializer(=, ;)
-                listener: endClassFields(null, null, null, null, 1, int, ;)
+                listener: endClassFields(null, null, null, null, null, null, 1, int, ;)
               listener: endMember()
             notEofOrValue(}, int)
             parseClassOrMixinOrExtensionMemberImpl(;, DeclarationKind.Class, WrapperClass)
@@ -1098,7 +1098,7 @@
                           parseLiteralInt(=)
                             listener: handleLiteralInt(42)
                   listener: endFieldInitializer(=, ;)
-                listener: endClassFields(null, null, null, null, 1, int, ;)
+                listener: endClassFields(null, null, null, null, null, null, 1, int, ;)
               listener: endMember()
             notEofOrValue(}, int)
             parseClassOrMixinOrExtensionMemberImpl(;, DeclarationKind.Class, WrapperClass)
@@ -1121,7 +1121,7 @@
                           parseLiteralInt(=)
                             listener: handleLiteralInt(42)
                   listener: endFieldInitializer(=, ;)
-                listener: endClassFields(null, null, null, null, 1, int, ;)
+                listener: endClassFields(null, null, null, null, null, null, 1, int, ;)
               listener: endMember()
             notEofOrValue(}, int)
             parseClassOrMixinOrExtensionMemberImpl(;, DeclarationKind.Class, WrapperClass)
@@ -1144,7 +1144,7 @@
                           parseLiteralInt(=)
                             listener: handleLiteralInt(42)
                   listener: endFieldInitializer(=, ;)
-                listener: endClassFields(null, null, null, null, 1, int, ;)
+                listener: endClassFields(null, null, null, null, null, null, 1, int, ;)
               listener: endMember()
             notEofOrValue(}, int)
             parseClassOrMixinOrExtensionMemberImpl(;, DeclarationKind.Class, WrapperClass)
@@ -1168,7 +1168,7 @@
                           parseLiteralInt(=)
                             listener: handleLiteralInt(42)
                   listener: endFieldInitializer(=, ;)
-                listener: endClassFields(null, null, null, null, 1, int, ;)
+                listener: endClassFields(null, null, null, null, null, null, 1, int, ;)
               listener: endMember()
             notEofOrValue(}, int)
             parseClassOrMixinOrExtensionMemberImpl(;, DeclarationKind.Class, WrapperClass)
@@ -1191,7 +1191,7 @@
                           parseLiteralInt(=)
                             listener: handleLiteralInt(42)
                   listener: endFieldInitializer(=, ;)
-                listener: endClassFields(null, null, null, null, 1, int, ;)
+                listener: endClassFields(null, null, null, null, null, null, 1, int, ;)
               listener: endMember()
             notEofOrValue(}, int)
             parseClassOrMixinOrExtensionMemberImpl(;, DeclarationKind.Class, WrapperClass)
@@ -1214,7 +1214,7 @@
                           parseLiteralInt(=)
                             listener: handleLiteralInt(42)
                   listener: endFieldInitializer(=, ;)
-                listener: endClassFields(null, null, null, null, 1, int, ;)
+                listener: endClassFields(null, null, null, null, null, null, 1, int, ;)
               listener: endMember()
             notEofOrValue(}, int)
             parseClassOrMixinOrExtensionMemberImpl(;, DeclarationKind.Class, WrapperClass)
@@ -1237,7 +1237,7 @@
                           parseLiteralInt(=)
                             listener: handleLiteralInt(42)
                   listener: endFieldInitializer(=, ;)
-                listener: endClassFields(null, null, null, null, 1, int, ;)
+                listener: endClassFields(null, null, null, null, null, null, 1, int, ;)
               listener: endMember()
             notEofOrValue(}, int)
             parseClassOrMixinOrExtensionMemberImpl(;, DeclarationKind.Class, WrapperClass)
@@ -1260,7 +1260,7 @@
                           parseLiteralInt(=)
                             listener: handleLiteralInt(42)
                   listener: endFieldInitializer(=, ;)
-                listener: endClassFields(null, null, null, null, 1, int, ;)
+                listener: endClassFields(null, null, null, null, null, null, 1, int, ;)
               listener: endMember()
             notEofOrValue(}, int)
             parseClassOrMixinOrExtensionMemberImpl(;, DeclarationKind.Class, WrapperClass)
@@ -1287,7 +1287,7 @@
                           parseLiteralInt(=)
                             listener: handleLiteralInt(42)
                   listener: endFieldInitializer(=, ;)
-                listener: endClassFields(null, null, null, null, 1, int, ;)
+                listener: endClassFields(null, null, null, null, null, null, 1, int, ;)
               listener: endMember()
             notEofOrValue(}, int)
             parseClassOrMixinOrExtensionMemberImpl(;, DeclarationKind.Class, WrapperClass)
@@ -1314,7 +1314,7 @@
                           parseLiteralInt(=)
                             listener: handleLiteralInt(42)
                   listener: endFieldInitializer(=, ;)
-                listener: endClassFields(null, null, null, null, 1, int, ;)
+                listener: endClassFields(null, null, null, null, null, null, 1, int, ;)
               listener: endMember()
             notEofOrValue(}, int)
             parseClassOrMixinOrExtensionMemberImpl(;, DeclarationKind.Class, WrapperClass)
@@ -1338,7 +1338,7 @@
                           parseLiteralInt(=)
                             listener: handleLiteralInt(42)
                   listener: endFieldInitializer(=, ;)
-                listener: endClassFields(null, null, null, null, 1, int, ;)
+                listener: endClassFields(null, null, null, null, null, null, 1, int, ;)
               listener: endMember()
             notEofOrValue(}, int)
             parseClassOrMixinOrExtensionMemberImpl(;, DeclarationKind.Class, WrapperClass)
@@ -1361,7 +1361,7 @@
                           parseLiteralInt(=)
                             listener: handleLiteralInt(42)
                   listener: endFieldInitializer(=, ;)
-                listener: endClassFields(null, null, null, null, 1, int, ;)
+                listener: endClassFields(null, null, null, null, null, null, 1, int, ;)
               listener: endMember()
             notEofOrValue(}, int)
             parseClassOrMixinOrExtensionMemberImpl(;, DeclarationKind.Class, WrapperClass)
@@ -1384,7 +1384,7 @@
                           parseLiteralInt(=)
                             listener: handleLiteralInt(42)
                   listener: endFieldInitializer(=, ;)
-                listener: endClassFields(null, null, null, null, 1, int, ;)
+                listener: endClassFields(null, null, null, null, null, null, 1, int, ;)
               listener: endMember()
             notEofOrValue(}, int)
             parseClassOrMixinOrExtensionMemberImpl(;, DeclarationKind.Class, WrapperClass)
@@ -1407,7 +1407,7 @@
                           parseLiteralInt(=)
                             listener: handleLiteralInt(42)
                   listener: endFieldInitializer(=, ;)
-                listener: endClassFields(null, null, null, null, 1, int, ;)
+                listener: endClassFields(null, null, null, null, null, null, 1, int, ;)
               listener: endMember()
             notEofOrValue(}, int)
             parseClassOrMixinOrExtensionMemberImpl(;, DeclarationKind.Class, WrapperClass)
@@ -1434,7 +1434,7 @@
                           parseLiteralInt(=)
                             listener: handleLiteralInt(42)
                   listener: endFieldInitializer(=, ;)
-                listener: endClassFields(null, null, null, null, 1, int, ;)
+                listener: endClassFields(null, null, null, null, null, null, 1, int, ;)
               listener: endMember()
             notEofOrValue(}, int)
             parseClassOrMixinOrExtensionMemberImpl(;, DeclarationKind.Class, WrapperClass)
@@ -1461,7 +1461,7 @@
                           parseLiteralInt(=)
                             listener: handleLiteralInt(42)
                   listener: endFieldInitializer(=, ;)
-                listener: endClassFields(null, null, null, null, 1, int, ;)
+                listener: endClassFields(null, null, null, null, null, null, 1, int, ;)
               listener: endMember()
             notEofOrValue(}, int)
             parseClassOrMixinOrExtensionMemberImpl(;, DeclarationKind.Class, WrapperClass)
@@ -1484,7 +1484,7 @@
                           parseLiteralInt(=)
                             listener: handleLiteralInt(42)
                   listener: endFieldInitializer(=, ;)
-                listener: endClassFields(null, null, null, null, 1, int, ;)
+                listener: endClassFields(null, null, null, null, null, null, 1, int, ;)
               listener: endMember()
             notEofOrValue(}, int)
             parseClassOrMixinOrExtensionMemberImpl(;, DeclarationKind.Class, WrapperClass)
@@ -1510,7 +1510,7 @@
                             parseLiteralInt(=)
                               listener: handleLiteralInt(42)
                     listener: endFieldInitializer(=, ;)
-                  listener: endClassFields(null, null, null, null, 1, int, ;)
+                  listener: endClassFields(null, null, null, null, null, null, 1, int, ;)
                 listener: endMember()
             notEofOrValue(}, int)
             parseClassOrMixinOrExtensionMemberImpl(;, DeclarationKind.Class, WrapperClass)
@@ -1537,7 +1537,7 @@
                           parseLiteralInt(=)
                             listener: handleLiteralInt(42)
                   listener: endFieldInitializer(=, ;)
-                listener: endClassFields(null, null, null, null, 1, int, ;)
+                listener: endClassFields(null, null, null, null, null, null, 1, int, ;)
               listener: endMember()
             notEofOrValue(}, int)
             parseClassOrMixinOrExtensionMemberImpl(;, DeclarationKind.Class, WrapperClass)
@@ -1564,7 +1564,7 @@
                           parseLiteralInt(=)
                             listener: handleLiteralInt(42)
                   listener: endFieldInitializer(=, ;)
-                listener: endClassFields(null, null, null, null, 1, int, ;)
+                listener: endClassFields(null, null, null, null, null, null, 1, int, ;)
               listener: endMember()
             notEofOrValue(}, int)
             parseClassOrMixinOrExtensionMemberImpl(;, DeclarationKind.Class, WrapperClass)
@@ -1591,7 +1591,7 @@
                           parseLiteralInt(=)
                             listener: handleLiteralInt(42)
                   listener: endFieldInitializer(=, ;)
-                listener: endClassFields(null, null, null, null, 1, int, ;)
+                listener: endClassFields(null, null, null, null, null, null, 1, int, ;)
               listener: endMember()
             notEofOrValue(}, int)
             parseClassOrMixinOrExtensionMemberImpl(;, DeclarationKind.Class, WrapperClass)
@@ -1614,7 +1614,7 @@
                           parseLiteralInt(=)
                             listener: handleLiteralInt(42)
                   listener: endFieldInitializer(=, ;)
-                listener: endClassFields(null, null, null, null, 1, int, ;)
+                listener: endClassFields(null, null, null, null, null, null, 1, int, ;)
               listener: endMember()
             notEofOrValue(}, int)
             parseClassOrMixinOrExtensionMemberImpl(;, DeclarationKind.Class, WrapperClass)
@@ -1641,7 +1641,7 @@
                           parseLiteralInt(=)
                             listener: handleLiteralInt(42)
                   listener: endFieldInitializer(=, ;)
-                listener: endClassFields(null, null, null, null, 1, int, ;)
+                listener: endClassFields(null, null, null, null, null, null, 1, int, ;)
               listener: endMember()
             notEofOrValue(}, int)
             parseClassOrMixinOrExtensionMemberImpl(;, DeclarationKind.Class, WrapperClass)
@@ -1668,7 +1668,7 @@
                           parseLiteralInt(=)
                             listener: handleLiteralInt(42)
                   listener: endFieldInitializer(=, ;)
-                listener: endClassFields(null, null, null, null, 1, int, ;)
+                listener: endClassFields(null, null, null, null, null, null, 1, int, ;)
               listener: endMember()
             notEofOrValue(}, int)
             parseClassOrMixinOrExtensionMemberImpl(;, DeclarationKind.Class, WrapperClass)
@@ -1695,7 +1695,7 @@
                           parseLiteralInt(=)
                             listener: handleLiteralInt(42)
                   listener: endFieldInitializer(=, ;)
-                listener: endClassFields(null, null, null, null, 1, int, ;)
+                listener: endClassFields(null, null, null, null, null, null, 1, int, ;)
               listener: endMember()
             notEofOrValue(}, int)
             parseClassOrMixinOrExtensionMemberImpl(;, DeclarationKind.Class, WrapperClass)
@@ -1722,7 +1722,7 @@
                           parseLiteralInt(=)
                             listener: handleLiteralInt(42)
                   listener: endFieldInitializer(=, ;)
-                listener: endClassFields(null, null, null, null, 1, int, ;)
+                listener: endClassFields(null, null, null, null, null, null, 1, int, ;)
               listener: endMember()
             notEofOrValue(}, int)
             parseClassOrMixinOrExtensionMemberImpl(;, DeclarationKind.Class, WrapperClass)
@@ -1745,7 +1745,7 @@
                           parseLiteralInt(=)
                             listener: handleLiteralInt(42)
                   listener: endFieldInitializer(=, ;)
-                listener: endClassFields(null, null, null, null, 1, int, ;)
+                listener: endClassFields(null, null, null, null, null, null, 1, int, ;)
               listener: endMember()
             notEofOrValue(}, })
             listener: endClassOrMixinBody(DeclarationKind.Class, 69, {, })
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 d64400c..c19c42d 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
@@ -4079,7 +4079,7 @@
           handleIdentifier(this, fieldDeclaration)
           handleNoFieldInitializer(()
           handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], this, this)
-        endClassFields(null, null, null, null, 1, int, ;)
+        endClassFields(null, null, null, null, null, null, 1, int, ;)
       endMember()
       beginMetadataStar(()
       endMetadataStar(0)
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 eccfc71..561f3c5 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
@@ -8875,7 +8875,7 @@
                     reportRecoverableError(this, Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}])
                       listener: handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], this, this)
                     rewriter()
-                  listener: endClassFields(null, null, null, null, 1, int, ;)
+                  listener: endClassFields(null, null, null, null, null, null, 1, int, ;)
                 listener: endMember()
             notEofOrValue(}, ()
             parseClassOrMixinOrExtensionMemberImpl(;, DeclarationKind.Class, WrapperClass)
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 2d7d7f0..544e865 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
@@ -143,7 +143,7 @@
     beginFieldInitializer(=)
       handleLiteralInt(42)
     endFieldInitializer(=, ;)
-  endTopLevelFields(null, null, null, null, 1, int, ;)
+  endTopLevelFields(null, null, null, null, null, 1, int, ;)
 endTopLevelDeclaration(int)
 beginMetadataStar(int)
 endMetadataStar(0)
@@ -155,7 +155,7 @@
   beginFieldInitializer(=)
     handleLiteralInt(42)
   endFieldInitializer(=, ;)
-endTopLevelFields(null, null, null, null, 1, int, ;)
+endTopLevelFields(null, null, null, null, null, 1, int, ;)
 endTopLevelDeclaration(int)
 beginMetadataStar(int)
 endMetadataStar(0)
@@ -168,7 +168,7 @@
 beginFieldInitializer(=)
   handleLiteralInt(42)
 endFieldInitializer(=, ;)
-endTopLevelFields(null, null, null, null, 1, int, ;)
+endTopLevelFields(null, null, null, null, null, 1, int, ;)
 endTopLevelDeclaration(int)
 beginMetadataStar(int)
 endMetadataStar(0)
@@ -180,7 +180,7 @@
 beginFieldInitializer(=)
 handleLiteralInt(42)
 endFieldInitializer(=, ;)
-endTopLevelFields(null, null, null, null, 1, int, ;)
+endTopLevelFields(null, null, null, null, null, 1, int, ;)
 endTopLevelDeclaration(int)
 beginMetadataStar(int)
 endMetadataStar(0)
@@ -192,7 +192,7 @@
 beginFieldInitializer(=)
 handleLiteralInt(42)
 endFieldInitializer(=, ;)
-endTopLevelFields(null, null, null, null, 1, int, ;)
+endTopLevelFields(null, null, null, null, null, 1, int, ;)
 endTopLevelDeclaration(int)
 beginMetadataStar(int)
 endMetadataStar(0)
@@ -205,7 +205,7 @@
 beginFieldInitializer(=)
 handleLiteralInt(42)
 endFieldInitializer(=, ;)
-endTopLevelFields(null, null, null, null, 1, int, ;)
+endTopLevelFields(null, null, null, null, null, 1, int, ;)
 endTopLevelDeclaration(int)
 beginMetadataStar(int)
 endMetadataStar(0)
@@ -218,7 +218,7 @@
 beginFieldInitializer(=)
 handleLiteralInt(42)
 endFieldInitializer(=, ;)
-endTopLevelFields(null, null, null, null, 1, int, ;)
+endTopLevelFields(null, null, null, null, null, 1, int, ;)
 endTopLevelDeclaration(int)
 beginMetadataStar(int)
 endMetadataStar(0)
@@ -231,7 +231,7 @@
 beginFieldInitializer(=)
 handleLiteralInt(42)
 endFieldInitializer(=, ;)
-endTopLevelFields(null, null, null, null, 1, int, ;)
+endTopLevelFields(null, null, null, null, null, 1, int, ;)
 endTopLevelDeclaration(int)
 beginMetadataStar(int)
 endMetadataStar(0)
@@ -244,7 +244,7 @@
 beginFieldInitializer(=)
 handleLiteralInt(42)
 endFieldInitializer(=, ;)
-endTopLevelFields(null, null, null, null, 1, int, ;)
+endTopLevelFields(null, null, null, null, null, 1, int, ;)
 endTopLevelDeclaration(int)
 beginMetadataStar(int)
 endMetadataStar(0)
@@ -257,7 +257,7 @@
 beginFieldInitializer(=)
 handleLiteralInt(42)
 endFieldInitializer(=, ;)
-endTopLevelFields(null, null, null, null, 1, int, ;)
+endTopLevelFields(null, null, null, null, null, 1, int, ;)
 endTopLevelDeclaration(int)
 beginMetadataStar(int)
 endMetadataStar(0)
@@ -270,7 +270,7 @@
 beginFieldInitializer(=)
 handleLiteralInt(42)
 endFieldInitializer(=, ;)
-endTopLevelFields(null, null, null, null, 1, int, ;)
+endTopLevelFields(null, null, null, null, null, 1, int, ;)
 endTopLevelDeclaration(int)
 beginMetadataStar(int)
 endMetadataStar(0)
@@ -282,7 +282,7 @@
 beginFieldInitializer(=)
 handleLiteralInt(42)
 endFieldInitializer(=, ;)
-endTopLevelFields(null, null, null, null, 1, int, ;)
+endTopLevelFields(null, null, null, null, null, 1, int, ;)
 endTopLevelDeclaration(int)
 beginMetadataStar(int)
 endMetadataStar(0)
@@ -295,7 +295,7 @@
 beginFieldInitializer(=)
 handleLiteralInt(42)
 endFieldInitializer(=, ;)
-endTopLevelFields(null, null, null, null, 1, int, ;)
+endTopLevelFields(null, null, null, null, null, 1, int, ;)
 endTopLevelDeclaration(int)
 beginMetadataStar(int)
 endMetadataStar(0)
@@ -307,7 +307,7 @@
 beginFieldInitializer(=)
 handleLiteralInt(42)
 endFieldInitializer(=, ;)
-endTopLevelFields(null, null, null, null, 1, int, ;)
+endTopLevelFields(null, null, null, null, null, 1, int, ;)
 endTopLevelDeclaration(int)
 beginMetadataStar(int)
 endMetadataStar(0)
@@ -320,7 +320,7 @@
 beginFieldInitializer(=)
 handleLiteralInt(42)
 endFieldInitializer(=, ;)
-endTopLevelFields(null, null, null, null, 1, int, ;)
+endTopLevelFields(null, null, null, null, null, 1, int, ;)
 endTopLevelDeclaration(int)
 beginMetadataStar(int)
 endMetadataStar(0)
@@ -332,7 +332,7 @@
 beginFieldInitializer(=)
 handleLiteralInt(42)
 endFieldInitializer(=, ;)
-endTopLevelFields(null, null, null, null, 1, int, ;)
+endTopLevelFields(null, null, null, null, null, 1, int, ;)
 endTopLevelDeclaration(int)
 beginMetadataStar(int)
 endMetadataStar(0)
@@ -345,7 +345,7 @@
 beginFieldInitializer(=)
 handleLiteralInt(42)
 endFieldInitializer(=, ;)
-endTopLevelFields(null, null, null, null, 1, int, ;)
+endTopLevelFields(null, null, null, null, null, 1, int, ;)
 endTopLevelDeclaration(int)
 beginMetadataStar(int)
 endMetadataStar(0)
@@ -358,7 +358,7 @@
 beginFieldInitializer(=)
 handleLiteralInt(42)
 endFieldInitializer(=, ;)
-endTopLevelFields(null, null, null, null, 1, int, ;)
+endTopLevelFields(null, null, null, null, null, 1, int, ;)
 endTopLevelDeclaration(int)
 beginMetadataStar(int)
 endMetadataStar(0)
@@ -370,7 +370,7 @@
 beginFieldInitializer(=)
 handleLiteralInt(42)
 endFieldInitializer(=, ;)
-endTopLevelFields(null, null, null, null, 1, int, ;)
+endTopLevelFields(null, null, null, null, null, 1, int, ;)
 endTopLevelDeclaration(int)
 beginMetadataStar(int)
 endMetadataStar(0)
@@ -383,7 +383,7 @@
 beginFieldInitializer(=)
 handleLiteralInt(42)
 endFieldInitializer(=, ;)
-endTopLevelFields(null, null, null, null, 1, int, ;)
+endTopLevelFields(null, null, null, null, null, 1, int, ;)
 endTopLevelDeclaration(int)
 beginMetadataStar(int)
 endMetadataStar(0)
@@ -395,7 +395,7 @@
 beginFieldInitializer(=)
 handleLiteralInt(42)
 endFieldInitializer(=, ;)
-endTopLevelFields(null, null, null, null, 1, int, ;)
+endTopLevelFields(null, null, null, null, null, 1, int, ;)
 endTopLevelDeclaration(int)
 beginMetadataStar(int)
 endMetadataStar(0)
@@ -407,7 +407,7 @@
 beginFieldInitializer(=)
 handleLiteralInt(42)
 endFieldInitializer(=, ;)
-endTopLevelFields(null, null, null, null, 1, int, ;)
+endTopLevelFields(null, null, null, null, null, 1, int, ;)
 endTopLevelDeclaration(int)
 beginMetadataStar(int)
 endMetadataStar(0)
@@ -419,7 +419,7 @@
 beginFieldInitializer(=)
 handleLiteralInt(42)
 endFieldInitializer(=, ;)
-endTopLevelFields(null, null, null, null, 1, int, ;)
+endTopLevelFields(null, null, null, null, null, 1, int, ;)
 endTopLevelDeclaration(int)
 beginMetadataStar(int)
 endMetadataStar(0)
@@ -432,7 +432,7 @@
 beginFieldInitializer(=)
 handleLiteralInt(42)
 endFieldInitializer(=, ;)
-endTopLevelFields(null, null, null, null, 1, int, ;)
+endTopLevelFields(null, null, null, null, null, 1, int, ;)
 endTopLevelDeclaration(int)
 beginMetadataStar(int)
 endMetadataStar(0)
@@ -445,7 +445,7 @@
 beginFieldInitializer(=)
 handleLiteralInt(42)
 endFieldInitializer(=, ;)
-endTopLevelFields(null, null, null, null, 1, int, ;)
+endTopLevelFields(null, null, null, null, null, 1, int, ;)
 endTopLevelDeclaration(int)
 beginMetadataStar(int)
 endMetadataStar(0)
@@ -458,7 +458,7 @@
 beginFieldInitializer(=)
 handleLiteralInt(42)
 endFieldInitializer(=, ;)
-endTopLevelFields(null, null, null, null, 1, int, ;)
+endTopLevelFields(null, null, null, null, null, 1, int, ;)
 endTopLevelDeclaration(int)
 beginMetadataStar(int)
 endMetadataStar(0)
@@ -471,7 +471,7 @@
 beginFieldInitializer(=)
 handleLiteralInt(42)
 endFieldInitializer(=, ;)
-endTopLevelFields(null, null, null, null, 1, int, ;)
+endTopLevelFields(null, null, null, null, null, 1, int, ;)
 endTopLevelDeclaration(int)
 beginMetadataStar(int)
 endMetadataStar(0)
@@ -483,7 +483,7 @@
 beginFieldInitializer(=)
 handleLiteralInt(42)
 endFieldInitializer(=, ;)
-endTopLevelFields(null, null, null, null, 1, int, ;)
+endTopLevelFields(null, null, null, null, null, 1, int, ;)
 endTopLevelDeclaration(int)
 beginMetadataStar(int)
 endMetadataStar(0)
@@ -495,7 +495,7 @@
 beginFieldInitializer(=)
 handleLiteralInt(42)
 endFieldInitializer(=, ;)
-endTopLevelFields(null, null, null, null, 1, int, ;)
+endTopLevelFields(null, null, null, null, null, 1, int, ;)
 endTopLevelDeclaration(int)
 beginMetadataStar(int)
 endMetadataStar(0)
@@ -507,7 +507,7 @@
 beginFieldInitializer(=)
 handleLiteralInt(42)
 endFieldInitializer(=, ;)
-endTopLevelFields(null, null, null, null, 1, int, ;)
+endTopLevelFields(null, null, null, null, null, 1, int, ;)
 endTopLevelDeclaration(int)
 beginMetadataStar(int)
 endMetadataStar(0)
@@ -520,7 +520,7 @@
 beginFieldInitializer(=)
 handleLiteralInt(42)
 endFieldInitializer(=, ;)
-endTopLevelFields(null, null, null, null, 1, int, ;)
+endTopLevelFields(null, null, null, null, null, 1, int, ;)
 endTopLevelDeclaration(int)
 beginMetadataStar(int)
 endMetadataStar(0)
@@ -532,7 +532,7 @@
 beginFieldInitializer(=)
 handleLiteralInt(42)
 endFieldInitializer(=, ;)
-endTopLevelFields(null, null, null, null, 1, int, ;)
+endTopLevelFields(null, null, null, null, null, 1, int, ;)
 endTopLevelDeclaration(int)
 beginMetadataStar(int)
 endMetadataStar(0)
@@ -544,7 +544,7 @@
 beginFieldInitializer(=)
 handleLiteralInt(42)
 endFieldInitializer(=, ;)
-endTopLevelFields(null, null, null, null, 1, int, ;)
+endTopLevelFields(null, null, null, null, null, 1, int, ;)
 endTopLevelDeclaration(int)
 beginMetadataStar(int)
 endMetadataStar(0)
@@ -557,7 +557,7 @@
 beginFieldInitializer(=)
 handleLiteralInt(42)
 endFieldInitializer(=, ;)
-endTopLevelFields(null, null, null, null, 1, int, ;)
+endTopLevelFields(null, null, null, null, null, 1, int, ;)
 endTopLevelDeclaration(int)
 beginMetadataStar(int)
 endMetadataStar(0)
@@ -569,7 +569,7 @@
 beginFieldInitializer(=)
 handleLiteralInt(42)
 endFieldInitializer(=, ;)
-endTopLevelFields(null, null, null, null, 1, int, ;)
+endTopLevelFields(null, null, null, null, null, 1, int, ;)
 endTopLevelDeclaration(int)
 beginMetadataStar(int)
 endMetadataStar(0)
@@ -581,7 +581,7 @@
 beginFieldInitializer(=)
 handleLiteralInt(42)
 endFieldInitializer(=, ;)
-endTopLevelFields(null, null, null, null, 1, int, ;)
+endTopLevelFields(null, null, null, null, null, 1, int, ;)
 endTopLevelDeclaration(int)
 beginMetadataStar(int)
 endMetadataStar(0)
@@ -594,7 +594,7 @@
 beginFieldInitializer(=)
 handleLiteralInt(42)
 endFieldInitializer(=, ;)
-endTopLevelFields(null, null, null, null, 1, int, ;)
+endTopLevelFields(null, null, null, null, null, 1, int, ;)
 endTopLevelDeclaration(int)
 beginMetadataStar(int)
 endMetadataStar(0)
@@ -606,7 +606,7 @@
 beginFieldInitializer(=)
 handleLiteralInt(42)
 endFieldInitializer(=, ;)
-endTopLevelFields(null, null, null, null, 1, int, ;)
+endTopLevelFields(null, null, null, null, null, 1, int, ;)
 endTopLevelDeclaration(int)
 beginMetadataStar(int)
 endMetadataStar(0)
@@ -618,7 +618,7 @@
 beginFieldInitializer(=)
 handleLiteralInt(42)
 endFieldInitializer(=, ;)
-endTopLevelFields(null, null, null, null, 1, int, ;)
+endTopLevelFields(null, null, null, null, null, 1, int, ;)
 endTopLevelDeclaration(int)
 beginMetadataStar(int)
 endMetadataStar(0)
@@ -630,7 +630,7 @@
 beginFieldInitializer(=)
 handleLiteralInt(42)
 endFieldInitializer(=, ;)
-endTopLevelFields(null, null, null, null, 1, int, ;)
+endTopLevelFields(null, null, null, null, null, 1, int, ;)
 endTopLevelDeclaration(int)
 beginMetadataStar(int)
 endMetadataStar(0)
@@ -642,7 +642,7 @@
 beginFieldInitializer(=)
 handleLiteralInt(42)
 endFieldInitializer(=, ;)
-endTopLevelFields(null, null, null, null, 1, int, ;)
+endTopLevelFields(null, null, null, null, null, 1, int, ;)
 endTopLevelDeclaration(int)
 beginMetadataStar(int)
 endMetadataStar(0)
@@ -655,7 +655,7 @@
 beginFieldInitializer(=)
 handleLiteralInt(42)
 endFieldInitializer(=, ;)
-endTopLevelFields(null, null, null, null, 1, int, ;)
+endTopLevelFields(null, null, null, null, null, 1, int, ;)
 endTopLevelDeclaration(int)
 beginMetadataStar(int)
 endMetadataStar(0)
@@ -668,7 +668,7 @@
 beginFieldInitializer(=)
 handleLiteralInt(42)
 endFieldInitializer(=, ;)
-endTopLevelFields(null, null, null, null, 1, int, ;)
+endTopLevelFields(null, null, null, null, null, 1, int, ;)
 endTopLevelDeclaration(int)
 beginMetadataStar(int)
 endMetadataStar(0)
@@ -680,7 +680,7 @@
 beginFieldInitializer(=)
 handleLiteralInt(42)
 endFieldInitializer(=, ;)
-endTopLevelFields(null, null, null, null, 1, int, ;)
+endTopLevelFields(null, null, null, null, null, 1, int, ;)
 endTopLevelDeclaration(int)
 beginMetadataStar(int)
 endMetadataStar(0)
@@ -692,7 +692,7 @@
 beginFieldInitializer(=)
 handleLiteralInt(42)
 endFieldInitializer(=, ;)
-endTopLevelFields(null, null, null, null, 1, int, ;)
+endTopLevelFields(null, null, null, null, null, 1, int, ;)
 endTopLevelDeclaration(int)
 beginMetadataStar(int)
 endMetadataStar(0)
@@ -704,7 +704,7 @@
 beginFieldInitializer(=)
 handleLiteralInt(42)
 endFieldInitializer(=, ;)
-endTopLevelFields(null, null, null, null, 1, int, ;)
+endTopLevelFields(null, null, null, null, null, 1, int, ;)
 endTopLevelDeclaration(int)
 beginMetadataStar(int)
 endMetadataStar(0)
@@ -716,7 +716,7 @@
 beginFieldInitializer(=)
 handleLiteralInt(42)
 endFieldInitializer(=, ;)
-endTopLevelFields(null, null, null, null, 1, int, ;)
+endTopLevelFields(null, null, null, null, null, 1, int, ;)
 endTopLevelDeclaration(int)
 beginMetadataStar(int)
 endMetadataStar(0)
@@ -728,7 +728,7 @@
 beginFieldInitializer(=)
 handleLiteralInt(42)
 endFieldInitializer(=, ;)
-endTopLevelFields(null, null, null, null, 1, int, ;)
+endTopLevelFields(null, null, null, null, null, 1, int, ;)
 endTopLevelDeclaration(int)
 beginMetadataStar(int)
 endMetadataStar(0)
@@ -740,7 +740,7 @@
 beginFieldInitializer(=)
 handleLiteralInt(42)
 endFieldInitializer(=, ;)
-endTopLevelFields(null, null, null, null, 1, int, ;)
+endTopLevelFields(null, null, null, null, null, 1, int, ;)
 endTopLevelDeclaration(int)
 beginMetadataStar(int)
 endMetadataStar(0)
@@ -752,7 +752,7 @@
 beginFieldInitializer(=)
 handleLiteralInt(42)
 endFieldInitializer(=, ;)
-endTopLevelFields(null, null, null, null, 1, int, ;)
+endTopLevelFields(null, null, null, null, null, 1, int, ;)
 endTopLevelDeclaration(int)
 beginMetadataStar(int)
 endMetadataStar(0)
@@ -765,7 +765,7 @@
 beginFieldInitializer(=)
 handleLiteralInt(42)
 endFieldInitializer(=, ;)
-endTopLevelFields(null, null, null, null, 1, int, ;)
+endTopLevelFields(null, null, null, null, null, 1, int, ;)
 endTopLevelDeclaration(int)
 beginMetadataStar(int)
 endMetadataStar(0)
@@ -778,7 +778,7 @@
 beginFieldInitializer(=)
 handleLiteralInt(42)
 endFieldInitializer(=, ;)
-endTopLevelFields(null, null, null, null, 1, int, ;)
+endTopLevelFields(null, null, null, null, null, 1, int, ;)
 endTopLevelDeclaration(int)
 beginMetadataStar(int)
 endMetadataStar(0)
@@ -790,7 +790,7 @@
 beginFieldInitializer(=)
 handleLiteralInt(42)
 endFieldInitializer(=, ;)
-endTopLevelFields(null, null, null, null, 1, int, ;)
+endTopLevelFields(null, null, null, null, null, 1, int, ;)
 endTopLevelDeclaration(int)
 beginMetadataStar(int)
 endMetadataStar(0)
@@ -802,7 +802,7 @@
 beginFieldInitializer(=)
 handleLiteralInt(42)
 endFieldInitializer(=, ;)
-endTopLevelFields(null, null, null, null, 1, int, ;)
+endTopLevelFields(null, null, null, null, null, 1, int, ;)
 endTopLevelDeclaration(int)
 beginMetadataStar(int)
 endMetadataStar(0)
@@ -814,7 +814,7 @@
 beginFieldInitializer(=)
 handleLiteralInt(42)
 endFieldInitializer(=, ;)
-endTopLevelFields(null, null, null, null, 1, int, ;)
+endTopLevelFields(null, null, null, null, null, 1, int, ;)
 endTopLevelDeclaration(int)
 beginMetadataStar(int)
 endMetadataStar(0)
@@ -826,7 +826,7 @@
 beginFieldInitializer(=)
 handleLiteralInt(42)
 endFieldInitializer(=, ;)
-endTopLevelFields(null, null, null, null, 1, int, ;)
+endTopLevelFields(null, null, null, null, null, 1, int, ;)
 endTopLevelDeclaration(int)
 beginMetadataStar(int)
 endMetadataStar(0)
@@ -839,7 +839,7 @@
 beginFieldInitializer(=)
 handleLiteralInt(42)
 endFieldInitializer(=, ;)
-endTopLevelFields(null, null, null, null, 1, int, ;)
+endTopLevelFields(null, null, null, null, null, 1, int, ;)
 endTopLevelDeclaration(int)
 beginMetadataStar(int)
 endMetadataStar(0)
@@ -852,7 +852,7 @@
 beginFieldInitializer(=)
 handleLiteralInt(42)
 endFieldInitializer(=, ;)
-endTopLevelFields(null, null, null, null, 1, int, ;)
+endTopLevelFields(null, null, null, null, null, 1, int, ;)
 endTopLevelDeclaration(int)
 beginMetadataStar(int)
 endMetadataStar(0)
@@ -864,7 +864,7 @@
 beginFieldInitializer(=)
 handleLiteralInt(42)
 endFieldInitializer(=, ;)
-endTopLevelFields(null, null, null, null, 1, int, ;)
+endTopLevelFields(null, null, null, null, null, 1, int, ;)
 endTopLevelDeclaration(int)
 beginMetadataStar(int)
 endMetadataStar(0)
@@ -877,7 +877,7 @@
 beginFieldInitializer(=)
 handleLiteralInt(42)
 endFieldInitializer(=, ;)
-endTopLevelFields(null, null, null, null, 1, int, ;)
+endTopLevelFields(null, null, null, null, null, 1, int, ;)
 endTopLevelDeclaration(int)
 beginMetadataStar(int)
 endMetadataStar(0)
@@ -890,7 +890,7 @@
 beginFieldInitializer(=)
 handleLiteralInt(42)
 endFieldInitializer(=, ;)
-endTopLevelFields(null, null, null, null, 1, int, ;)
+endTopLevelFields(null, null, null, null, null, 1, int, ;)
 endTopLevelDeclaration(int)
 beginMetadataStar(int)
 endMetadataStar(0)
@@ -903,7 +903,7 @@
 beginFieldInitializer(=)
 handleLiteralInt(42)
 endFieldInitializer(=, ;)
-endTopLevelFields(null, null, null, null, 1, int, ;)
+endTopLevelFields(null, null, null, null, null, 1, int, ;)
 endTopLevelDeclaration(int)
 beginMetadataStar(int)
 endMetadataStar(0)
@@ -916,7 +916,7 @@
 beginFieldInitializer(=)
 handleLiteralInt(42)
 endFieldInitializer(=, ;)
-endTopLevelFields(null, null, null, null, 1, int, ;)
+endTopLevelFields(null, null, null, null, null, 1, int, ;)
 endTopLevelDeclaration(int)
 beginMetadataStar(int)
 endMetadataStar(0)
@@ -928,7 +928,7 @@
 beginFieldInitializer(=)
 handleLiteralInt(42)
 endFieldInitializer(=, ;)
-endTopLevelFields(null, null, null, null, 1, int, ;)
+endTopLevelFields(null, null, null, null, null, 1, int, ;)
 endTopLevelDeclaration(int)
 beginMetadataStar(int)
 endMetadataStar(0)
@@ -941,7 +941,7 @@
 beginFieldInitializer(=)
 handleLiteralInt(42)
 endFieldInitializer(=, ;)
-endTopLevelFields(null, null, null, null, 1, int, ;)
+endTopLevelFields(null, null, null, null, null, 1, int, ;)
 endTopLevelDeclaration(int)
 beginMetadataStar(int)
 endMetadataStar(0)
@@ -954,7 +954,7 @@
 beginFieldInitializer(=)
 handleLiteralInt(42)
 endFieldInitializer(=, ;)
-endTopLevelFields(null, null, null, null, 1, int, ;)
+endTopLevelFields(null, null, null, null, null, 1, int, ;)
 endTopLevelDeclaration(int)
 beginMetadataStar(int)
 endMetadataStar(0)
@@ -967,7 +967,7 @@
 beginFieldInitializer(=)
 handleLiteralInt(42)
 endFieldInitializer(=, ;)
-endTopLevelFields(null, null, null, null, 1, int, ;)
+endTopLevelFields(null, null, null, null, null, 1, int, ;)
 endTopLevelDeclaration(int)
 beginMetadataStar(int)
 endMetadataStar(0)
@@ -980,7 +980,7 @@
 beginFieldInitializer(=)
 handleLiteralInt(42)
 endFieldInitializer(=, ;)
-endTopLevelFields(null, null, null, null, 1, int, ;)
+endTopLevelFields(null, null, null, null, null, 1, int, ;)
 endTopLevelDeclaration(int)
 beginMetadataStar(int)
 endMetadataStar(0)
@@ -992,6 +992,6 @@
 beginFieldInitializer(=)
 handleLiteralInt(42)
 endFieldInitializer(=, ;)
-endTopLevelFields(null, null, null, null, 1, int, ;)
+endTopLevelFields(null, null, null, null, null, 1, int, ;)
 endTopLevelDeclaration()
 endCompilationUnit(69, )
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 cf78306..0c129c8 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
@@ -23,7 +23,7 @@
                   parseLiteralInt(=)
                     listener: handleLiteralInt(42)
           listener: endFieldInitializer(=, ;)
-        listener: endTopLevelFields(null, null, null, null, 1, int, ;)
+        listener: endTopLevelFields(null, null, null, null, null, 1, int, ;)
   listener: endTopLevelDeclaration(int)
   parseTopLevelDeclarationImpl(;, Instance of 'DirectiveContext')
     parseMetadataStar(;)
@@ -46,7 +46,7 @@
                   parseLiteralInt(=)
                     listener: handleLiteralInt(42)
           listener: endFieldInitializer(=, ;)
-        listener: endTopLevelFields(null, null, null, null, 1, int, ;)
+        listener: endTopLevelFields(null, null, null, null, null, 1, int, ;)
   listener: endTopLevelDeclaration(int)
   parseTopLevelDeclarationImpl(;, Instance of 'DirectiveContext')
     parseMetadataStar(;)
@@ -73,7 +73,7 @@
                   parseLiteralInt(=)
                     listener: handleLiteralInt(42)
           listener: endFieldInitializer(=, ;)
-        listener: endTopLevelFields(null, null, null, null, 1, int, ;)
+        listener: endTopLevelFields(null, null, null, null, null, 1, int, ;)
   listener: endTopLevelDeclaration(int)
   parseTopLevelDeclarationImpl(;, Instance of 'DirectiveContext')
     parseMetadataStar(;)
@@ -96,7 +96,7 @@
                   parseLiteralInt(=)
                     listener: handleLiteralInt(42)
           listener: endFieldInitializer(=, ;)
-        listener: endTopLevelFields(null, null, null, null, 1, int, ;)
+        listener: endTopLevelFields(null, null, null, null, null, 1, int, ;)
   listener: endTopLevelDeclaration(int)
   parseTopLevelDeclarationImpl(;, Instance of 'DirectiveContext')
     parseMetadataStar(;)
@@ -119,7 +119,7 @@
                   parseLiteralInt(=)
                     listener: handleLiteralInt(42)
           listener: endFieldInitializer(=, ;)
-        listener: endTopLevelFields(null, null, null, null, 1, int, ;)
+        listener: endTopLevelFields(null, null, null, null, null, 1, int, ;)
   listener: endTopLevelDeclaration(int)
   parseTopLevelDeclarationImpl(;, Instance of 'DirectiveContext')
     parseMetadataStar(;)
@@ -146,7 +146,7 @@
                   parseLiteralInt(=)
                     listener: handleLiteralInt(42)
           listener: endFieldInitializer(=, ;)
-        listener: endTopLevelFields(null, null, null, null, 1, int, ;)
+        listener: endTopLevelFields(null, null, null, null, null, 1, int, ;)
   listener: endTopLevelDeclaration(int)
   parseTopLevelDeclarationImpl(;, Instance of 'DirectiveContext')
     parseMetadataStar(;)
@@ -173,7 +173,7 @@
                   parseLiteralInt(=)
                     listener: handleLiteralInt(42)
           listener: endFieldInitializer(=, ;)
-        listener: endTopLevelFields(null, null, null, null, 1, int, ;)
+        listener: endTopLevelFields(null, null, null, null, null, 1, int, ;)
   listener: endTopLevelDeclaration(int)
   parseTopLevelDeclarationImpl(;, Instance of 'DirectiveContext')
     parseMetadataStar(;)
@@ -200,7 +200,7 @@
                   parseLiteralInt(=)
                     listener: handleLiteralInt(42)
           listener: endFieldInitializer(=, ;)
-        listener: endTopLevelFields(null, null, null, null, 1, int, ;)
+        listener: endTopLevelFields(null, null, null, null, null, 1, int, ;)
   listener: endTopLevelDeclaration(int)
   parseTopLevelDeclarationImpl(;, Instance of 'DirectiveContext')
     parseMetadataStar(;)
@@ -227,7 +227,7 @@
                   parseLiteralInt(=)
                     listener: handleLiteralInt(42)
           listener: endFieldInitializer(=, ;)
-        listener: endTopLevelFields(null, null, null, null, 1, int, ;)
+        listener: endTopLevelFields(null, null, null, null, null, 1, int, ;)
   listener: endTopLevelDeclaration(int)
   parseTopLevelDeclarationImpl(;, Instance of 'DirectiveContext')
     parseMetadataStar(;)
@@ -254,7 +254,7 @@
                   parseLiteralInt(=)
                     listener: handleLiteralInt(42)
           listener: endFieldInitializer(=, ;)
-        listener: endTopLevelFields(null, null, null, null, 1, int, ;)
+        listener: endTopLevelFields(null, null, null, null, null, 1, int, ;)
   listener: endTopLevelDeclaration(int)
   parseTopLevelDeclarationImpl(;, Instance of 'DirectiveContext')
     parseMetadataStar(;)
@@ -281,7 +281,7 @@
                   parseLiteralInt(=)
                     listener: handleLiteralInt(42)
           listener: endFieldInitializer(=, ;)
-        listener: endTopLevelFields(null, null, null, null, 1, int, ;)
+        listener: endTopLevelFields(null, null, null, null, null, 1, int, ;)
   listener: endTopLevelDeclaration(int)
   parseTopLevelDeclarationImpl(;, Instance of 'DirectiveContext')
     parseMetadataStar(;)
@@ -304,7 +304,7 @@
                   parseLiteralInt(=)
                     listener: handleLiteralInt(42)
           listener: endFieldInitializer(=, ;)
-        listener: endTopLevelFields(null, null, null, null, 1, int, ;)
+        listener: endTopLevelFields(null, null, null, null, null, 1, int, ;)
   listener: endTopLevelDeclaration(int)
   parseTopLevelDeclarationImpl(;, Instance of 'DirectiveContext')
     parseMetadataStar(;)
@@ -331,7 +331,7 @@
                   parseLiteralInt(=)
                     listener: handleLiteralInt(42)
           listener: endFieldInitializer(=, ;)
-        listener: endTopLevelFields(null, null, null, null, 1, int, ;)
+        listener: endTopLevelFields(null, null, null, null, null, 1, int, ;)
   listener: endTopLevelDeclaration(int)
   parseTopLevelDeclarationImpl(;, Instance of 'DirectiveContext')
     parseMetadataStar(;)
@@ -354,7 +354,7 @@
                   parseLiteralInt(=)
                     listener: handleLiteralInt(42)
           listener: endFieldInitializer(=, ;)
-        listener: endTopLevelFields(null, null, null, null, 1, int, ;)
+        listener: endTopLevelFields(null, null, null, null, null, 1, int, ;)
   listener: endTopLevelDeclaration(int)
   parseTopLevelDeclarationImpl(;, Instance of 'DirectiveContext')
     parseMetadataStar(;)
@@ -381,7 +381,7 @@
                   parseLiteralInt(=)
                     listener: handleLiteralInt(42)
           listener: endFieldInitializer(=, ;)
-        listener: endTopLevelFields(null, null, null, null, 1, int, ;)
+        listener: endTopLevelFields(null, null, null, null, null, 1, int, ;)
   listener: endTopLevelDeclaration(int)
   parseTopLevelDeclarationImpl(;, Instance of 'DirectiveContext')
     parseMetadataStar(;)
@@ -404,7 +404,7 @@
                   parseLiteralInt(=)
                     listener: handleLiteralInt(42)
           listener: endFieldInitializer(=, ;)
-        listener: endTopLevelFields(null, null, null, null, 1, int, ;)
+        listener: endTopLevelFields(null, null, null, null, null, 1, int, ;)
   listener: endTopLevelDeclaration(int)
   parseTopLevelDeclarationImpl(;, Instance of 'DirectiveContext')
     parseMetadataStar(;)
@@ -431,7 +431,7 @@
                   parseLiteralInt(=)
                     listener: handleLiteralInt(42)
           listener: endFieldInitializer(=, ;)
-        listener: endTopLevelFields(null, null, null, null, 1, int, ;)
+        listener: endTopLevelFields(null, null, null, null, null, 1, int, ;)
   listener: endTopLevelDeclaration(int)
   parseTopLevelDeclarationImpl(;, Instance of 'DirectiveContext')
     parseMetadataStar(;)
@@ -458,7 +458,7 @@
                   parseLiteralInt(=)
                     listener: handleLiteralInt(42)
           listener: endFieldInitializer(=, ;)
-        listener: endTopLevelFields(null, null, null, null, 1, int, ;)
+        listener: endTopLevelFields(null, null, null, null, null, 1, int, ;)
   listener: endTopLevelDeclaration(int)
   parseTopLevelDeclarationImpl(;, Instance of 'DirectiveContext')
     parseMetadataStar(;)
@@ -481,7 +481,7 @@
                   parseLiteralInt(=)
                     listener: handleLiteralInt(42)
           listener: endFieldInitializer(=, ;)
-        listener: endTopLevelFields(null, null, null, null, 1, int, ;)
+        listener: endTopLevelFields(null, null, null, null, null, 1, int, ;)
   listener: endTopLevelDeclaration(int)
   parseTopLevelDeclarationImpl(;, Instance of 'DirectiveContext')
     parseMetadataStar(;)
@@ -508,7 +508,7 @@
                   parseLiteralInt(=)
                     listener: handleLiteralInt(42)
           listener: endFieldInitializer(=, ;)
-        listener: endTopLevelFields(null, null, null, null, 1, int, ;)
+        listener: endTopLevelFields(null, null, null, null, null, 1, int, ;)
   listener: endTopLevelDeclaration(int)
   parseTopLevelDeclarationImpl(;, Instance of 'DirectiveContext')
     parseMetadataStar(;)
@@ -531,7 +531,7 @@
                   parseLiteralInt(=)
                     listener: handleLiteralInt(42)
           listener: endFieldInitializer(=, ;)
-        listener: endTopLevelFields(null, null, null, null, 1, int, ;)
+        listener: endTopLevelFields(null, null, null, null, null, 1, int, ;)
   listener: endTopLevelDeclaration(int)
   parseTopLevelDeclarationImpl(;, Instance of 'DirectiveContext')
     parseMetadataStar(;)
@@ -554,7 +554,7 @@
                   parseLiteralInt(=)
                     listener: handleLiteralInt(42)
           listener: endFieldInitializer(=, ;)
-        listener: endTopLevelFields(null, null, null, null, 1, int, ;)
+        listener: endTopLevelFields(null, null, null, null, null, 1, int, ;)
   listener: endTopLevelDeclaration(int)
   parseTopLevelDeclarationImpl(;, Instance of 'DirectiveContext')
     parseMetadataStar(;)
@@ -577,7 +577,7 @@
                   parseLiteralInt(=)
                     listener: handleLiteralInt(42)
           listener: endFieldInitializer(=, ;)
-        listener: endTopLevelFields(null, null, null, null, 1, int, ;)
+        listener: endTopLevelFields(null, null, null, null, null, 1, int, ;)
   listener: endTopLevelDeclaration(int)
   parseTopLevelDeclarationImpl(;, Instance of 'DirectiveContext')
     parseMetadataStar(;)
@@ -604,7 +604,7 @@
                   parseLiteralInt(=)
                     listener: handleLiteralInt(42)
           listener: endFieldInitializer(=, ;)
-        listener: endTopLevelFields(null, null, null, null, 1, int, ;)
+        listener: endTopLevelFields(null, null, null, null, null, 1, int, ;)
   listener: endTopLevelDeclaration(int)
   parseTopLevelDeclarationImpl(;, Instance of 'DirectiveContext')
     parseMetadataStar(;)
@@ -631,7 +631,7 @@
                   parseLiteralInt(=)
                     listener: handleLiteralInt(42)
           listener: endFieldInitializer(=, ;)
-        listener: endTopLevelFields(null, null, null, null, 1, int, ;)
+        listener: endTopLevelFields(null, null, null, null, null, 1, int, ;)
   listener: endTopLevelDeclaration(int)
   parseTopLevelDeclarationImpl(;, Instance of 'DirectiveContext')
     parseMetadataStar(;)
@@ -658,7 +658,7 @@
                   parseLiteralInt(=)
                     listener: handleLiteralInt(42)
           listener: endFieldInitializer(=, ;)
-        listener: endTopLevelFields(null, null, null, null, 1, int, ;)
+        listener: endTopLevelFields(null, null, null, null, null, 1, int, ;)
   listener: endTopLevelDeclaration(int)
   parseTopLevelDeclarationImpl(;, Instance of 'DirectiveContext')
     parseMetadataStar(;)
@@ -685,7 +685,7 @@
                   parseLiteralInt(=)
                     listener: handleLiteralInt(42)
           listener: endFieldInitializer(=, ;)
-        listener: endTopLevelFields(null, null, null, null, 1, int, ;)
+        listener: endTopLevelFields(null, null, null, null, null, 1, int, ;)
   listener: endTopLevelDeclaration(int)
   parseTopLevelDeclarationImpl(;, Instance of 'DirectiveContext')
     parseMetadataStar(;)
@@ -708,7 +708,7 @@
                   parseLiteralInt(=)
                     listener: handleLiteralInt(42)
           listener: endFieldInitializer(=, ;)
-        listener: endTopLevelFields(null, null, null, null, 1, int, ;)
+        listener: endTopLevelFields(null, null, null, null, null, 1, int, ;)
   listener: endTopLevelDeclaration(int)
   parseTopLevelDeclarationImpl(;, Instance of 'DirectiveContext')
     parseMetadataStar(;)
@@ -731,7 +731,7 @@
                   parseLiteralInt(=)
                     listener: handleLiteralInt(42)
           listener: endFieldInitializer(=, ;)
-        listener: endTopLevelFields(null, null, null, null, 1, int, ;)
+        listener: endTopLevelFields(null, null, null, null, null, 1, int, ;)
   listener: endTopLevelDeclaration(int)
   parseTopLevelDeclarationImpl(;, Instance of 'DirectiveContext')
     parseMetadataStar(;)
@@ -754,7 +754,7 @@
                   parseLiteralInt(=)
                     listener: handleLiteralInt(42)
           listener: endFieldInitializer(=, ;)
-        listener: endTopLevelFields(null, null, null, null, 1, int, ;)
+        listener: endTopLevelFields(null, null, null, null, null, 1, int, ;)
   listener: endTopLevelDeclaration(int)
   parseTopLevelDeclarationImpl(;, Instance of 'DirectiveContext')
     parseMetadataStar(;)
@@ -781,7 +781,7 @@
                   parseLiteralInt(=)
                     listener: handleLiteralInt(42)
           listener: endFieldInitializer(=, ;)
-        listener: endTopLevelFields(null, null, null, null, 1, int, ;)
+        listener: endTopLevelFields(null, null, null, null, null, 1, int, ;)
   listener: endTopLevelDeclaration(int)
   parseTopLevelDeclarationImpl(;, Instance of 'DirectiveContext')
     parseMetadataStar(;)
@@ -804,7 +804,7 @@
                   parseLiteralInt(=)
                     listener: handleLiteralInt(42)
           listener: endFieldInitializer(=, ;)
-        listener: endTopLevelFields(null, null, null, null, 1, int, ;)
+        listener: endTopLevelFields(null, null, null, null, null, 1, int, ;)
   listener: endTopLevelDeclaration(int)
   parseTopLevelDeclarationImpl(;, Instance of 'DirectiveContext')
     parseMetadataStar(;)
@@ -827,7 +827,7 @@
                   parseLiteralInt(=)
                     listener: handleLiteralInt(42)
           listener: endFieldInitializer(=, ;)
-        listener: endTopLevelFields(null, null, null, null, 1, int, ;)
+        listener: endTopLevelFields(null, null, null, null, null, 1, int, ;)
   listener: endTopLevelDeclaration(int)
   parseTopLevelDeclarationImpl(;, Instance of 'DirectiveContext')
     parseMetadataStar(;)
@@ -854,7 +854,7 @@
                   parseLiteralInt(=)
                     listener: handleLiteralInt(42)
           listener: endFieldInitializer(=, ;)
-        listener: endTopLevelFields(null, null, null, null, 1, int, ;)
+        listener: endTopLevelFields(null, null, null, null, null, 1, int, ;)
   listener: endTopLevelDeclaration(int)
   parseTopLevelDeclarationImpl(;, Instance of 'DirectiveContext')
     parseMetadataStar(;)
@@ -877,7 +877,7 @@
                   parseLiteralInt(=)
                     listener: handleLiteralInt(42)
           listener: endFieldInitializer(=, ;)
-        listener: endTopLevelFields(null, null, null, null, 1, int, ;)
+        listener: endTopLevelFields(null, null, null, null, null, 1, int, ;)
   listener: endTopLevelDeclaration(int)
   parseTopLevelDeclarationImpl(;, Instance of 'DirectiveContext')
     parseMetadataStar(;)
@@ -900,7 +900,7 @@
                   parseLiteralInt(=)
                     listener: handleLiteralInt(42)
           listener: endFieldInitializer(=, ;)
-        listener: endTopLevelFields(null, null, null, null, 1, int, ;)
+        listener: endTopLevelFields(null, null, null, null, null, 1, int, ;)
   listener: endTopLevelDeclaration(int)
   parseTopLevelDeclarationImpl(;, Instance of 'DirectiveContext')
     parseMetadataStar(;)
@@ -927,7 +927,7 @@
                   parseLiteralInt(=)
                     listener: handleLiteralInt(42)
           listener: endFieldInitializer(=, ;)
-        listener: endTopLevelFields(null, null, null, null, 1, int, ;)
+        listener: endTopLevelFields(null, null, null, null, null, 1, int, ;)
   listener: endTopLevelDeclaration(int)
   parseTopLevelDeclarationImpl(;, Instance of 'DirectiveContext')
     parseMetadataStar(;)
@@ -950,7 +950,7 @@
                   parseLiteralInt(=)
                     listener: handleLiteralInt(42)
           listener: endFieldInitializer(=, ;)
-        listener: endTopLevelFields(null, null, null, null, 1, int, ;)
+        listener: endTopLevelFields(null, null, null, null, null, 1, int, ;)
   listener: endTopLevelDeclaration(int)
   parseTopLevelDeclarationImpl(;, Instance of 'DirectiveContext')
     parseMetadataStar(;)
@@ -973,7 +973,7 @@
                   parseLiteralInt(=)
                     listener: handleLiteralInt(42)
           listener: endFieldInitializer(=, ;)
-        listener: endTopLevelFields(null, null, null, null, 1, int, ;)
+        listener: endTopLevelFields(null, null, null, null, null, 1, int, ;)
   listener: endTopLevelDeclaration(int)
   parseTopLevelDeclarationImpl(;, Instance of 'DirectiveContext')
     parseMetadataStar(;)
@@ -996,7 +996,7 @@
                   parseLiteralInt(=)
                     listener: handleLiteralInt(42)
           listener: endFieldInitializer(=, ;)
-        listener: endTopLevelFields(null, null, null, null, 1, int, ;)
+        listener: endTopLevelFields(null, null, null, null, null, 1, int, ;)
   listener: endTopLevelDeclaration(int)
   parseTopLevelDeclarationImpl(;, Instance of 'DirectiveContext')
     parseMetadataStar(;)
@@ -1019,7 +1019,7 @@
                   parseLiteralInt(=)
                     listener: handleLiteralInt(42)
           listener: endFieldInitializer(=, ;)
-        listener: endTopLevelFields(null, null, null, null, 1, int, ;)
+        listener: endTopLevelFields(null, null, null, null, null, 1, int, ;)
   listener: endTopLevelDeclaration(int)
   parseTopLevelDeclarationImpl(;, Instance of 'DirectiveContext')
     parseMetadataStar(;)
@@ -1046,7 +1046,7 @@
                   parseLiteralInt(=)
                     listener: handleLiteralInt(42)
           listener: endFieldInitializer(=, ;)
-        listener: endTopLevelFields(null, null, null, null, 1, int, ;)
+        listener: endTopLevelFields(null, null, null, null, null, 1, int, ;)
   listener: endTopLevelDeclaration(int)
   parseTopLevelDeclarationImpl(;, Instance of 'DirectiveContext')
     parseMetadataStar(;)
@@ -1073,7 +1073,7 @@
                   parseLiteralInt(=)
                     listener: handleLiteralInt(42)
           listener: endFieldInitializer(=, ;)
-        listener: endTopLevelFields(null, null, null, null, 1, int, ;)
+        listener: endTopLevelFields(null, null, null, null, null, 1, int, ;)
   listener: endTopLevelDeclaration(int)
   parseTopLevelDeclarationImpl(;, Instance of 'DirectiveContext')
     parseMetadataStar(;)
@@ -1096,7 +1096,7 @@
                   parseLiteralInt(=)
                     listener: handleLiteralInt(42)
           listener: endFieldInitializer(=, ;)
-        listener: endTopLevelFields(null, null, null, null, 1, int, ;)
+        listener: endTopLevelFields(null, null, null, null, null, 1, int, ;)
   listener: endTopLevelDeclaration(int)
   parseTopLevelDeclarationImpl(;, Instance of 'DirectiveContext')
     parseMetadataStar(;)
@@ -1119,7 +1119,7 @@
                   parseLiteralInt(=)
                     listener: handleLiteralInt(42)
           listener: endFieldInitializer(=, ;)
-        listener: endTopLevelFields(null, null, null, null, 1, int, ;)
+        listener: endTopLevelFields(null, null, null, null, null, 1, int, ;)
   listener: endTopLevelDeclaration(int)
   parseTopLevelDeclarationImpl(;, Instance of 'DirectiveContext')
     parseMetadataStar(;)
@@ -1142,7 +1142,7 @@
                   parseLiteralInt(=)
                     listener: handleLiteralInt(42)
           listener: endFieldInitializer(=, ;)
-        listener: endTopLevelFields(null, null, null, null, 1, int, ;)
+        listener: endTopLevelFields(null, null, null, null, null, 1, int, ;)
   listener: endTopLevelDeclaration(int)
   parseTopLevelDeclarationImpl(;, Instance of 'DirectiveContext')
     parseMetadataStar(;)
@@ -1165,7 +1165,7 @@
                   parseLiteralInt(=)
                     listener: handleLiteralInt(42)
           listener: endFieldInitializer(=, ;)
-        listener: endTopLevelFields(null, null, null, null, 1, int, ;)
+        listener: endTopLevelFields(null, null, null, null, null, 1, int, ;)
   listener: endTopLevelDeclaration(int)
   parseTopLevelDeclarationImpl(;, Instance of 'DirectiveContext')
     parseMetadataStar(;)
@@ -1188,7 +1188,7 @@
                   parseLiteralInt(=)
                     listener: handleLiteralInt(42)
           listener: endFieldInitializer(=, ;)
-        listener: endTopLevelFields(null, null, null, null, 1, int, ;)
+        listener: endTopLevelFields(null, null, null, null, null, 1, int, ;)
   listener: endTopLevelDeclaration(int)
   parseTopLevelDeclarationImpl(;, Instance of 'DirectiveContext')
     parseMetadataStar(;)
@@ -1211,7 +1211,7 @@
                   parseLiteralInt(=)
                     listener: handleLiteralInt(42)
           listener: endFieldInitializer(=, ;)
-        listener: endTopLevelFields(null, null, null, null, 1, int, ;)
+        listener: endTopLevelFields(null, null, null, null, null, 1, int, ;)
   listener: endTopLevelDeclaration(int)
   parseTopLevelDeclarationImpl(;, Instance of 'DirectiveContext')
     parseMetadataStar(;)
@@ -1234,7 +1234,7 @@
                   parseLiteralInt(=)
                     listener: handleLiteralInt(42)
           listener: endFieldInitializer(=, ;)
-        listener: endTopLevelFields(null, null, null, null, 1, int, ;)
+        listener: endTopLevelFields(null, null, null, null, null, 1, int, ;)
   listener: endTopLevelDeclaration(int)
   parseTopLevelDeclarationImpl(;, Instance of 'DirectiveContext')
     parseMetadataStar(;)
@@ -1261,7 +1261,7 @@
                   parseLiteralInt(=)
                     listener: handleLiteralInt(42)
           listener: endFieldInitializer(=, ;)
-        listener: endTopLevelFields(null, null, null, null, 1, int, ;)
+        listener: endTopLevelFields(null, null, null, null, null, 1, int, ;)
   listener: endTopLevelDeclaration(int)
   parseTopLevelDeclarationImpl(;, Instance of 'DirectiveContext')
     parseMetadataStar(;)
@@ -1288,7 +1288,7 @@
                   parseLiteralInt(=)
                     listener: handleLiteralInt(42)
           listener: endFieldInitializer(=, ;)
-        listener: endTopLevelFields(null, null, null, null, 1, int, ;)
+        listener: endTopLevelFields(null, null, null, null, null, 1, int, ;)
   listener: endTopLevelDeclaration(int)
   parseTopLevelDeclarationImpl(;, Instance of 'DirectiveContext')
     parseMetadataStar(;)
@@ -1311,7 +1311,7 @@
                   parseLiteralInt(=)
                     listener: handleLiteralInt(42)
           listener: endFieldInitializer(=, ;)
-        listener: endTopLevelFields(null, null, null, null, 1, int, ;)
+        listener: endTopLevelFields(null, null, null, null, null, 1, int, ;)
   listener: endTopLevelDeclaration(int)
   parseTopLevelDeclarationImpl(;, Instance of 'DirectiveContext')
     parseMetadataStar(;)
@@ -1334,7 +1334,7 @@
                   parseLiteralInt(=)
                     listener: handleLiteralInt(42)
           listener: endFieldInitializer(=, ;)
-        listener: endTopLevelFields(null, null, null, null, 1, int, ;)
+        listener: endTopLevelFields(null, null, null, null, null, 1, int, ;)
   listener: endTopLevelDeclaration(int)
   parseTopLevelDeclarationImpl(;, Instance of 'DirectiveContext')
     parseMetadataStar(;)
@@ -1357,7 +1357,7 @@
                   parseLiteralInt(=)
                     listener: handleLiteralInt(42)
           listener: endFieldInitializer(=, ;)
-        listener: endTopLevelFields(null, null, null, null, 1, int, ;)
+        listener: endTopLevelFields(null, null, null, null, null, 1, int, ;)
   listener: endTopLevelDeclaration(int)
   parseTopLevelDeclarationImpl(;, Instance of 'DirectiveContext')
     parseMetadataStar(;)
@@ -1380,7 +1380,7 @@
                   parseLiteralInt(=)
                     listener: handleLiteralInt(42)
           listener: endFieldInitializer(=, ;)
-        listener: endTopLevelFields(null, null, null, null, 1, int, ;)
+        listener: endTopLevelFields(null, null, null, null, null, 1, int, ;)
   listener: endTopLevelDeclaration(int)
   parseTopLevelDeclarationImpl(;, Instance of 'DirectiveContext')
     parseMetadataStar(;)
@@ -1407,7 +1407,7 @@
                   parseLiteralInt(=)
                     listener: handleLiteralInt(42)
           listener: endFieldInitializer(=, ;)
-        listener: endTopLevelFields(null, null, null, null, 1, int, ;)
+        listener: endTopLevelFields(null, null, null, null, null, 1, int, ;)
   listener: endTopLevelDeclaration(int)
   parseTopLevelDeclarationImpl(;, Instance of 'DirectiveContext')
     parseMetadataStar(;)
@@ -1434,7 +1434,7 @@
                   parseLiteralInt(=)
                     listener: handleLiteralInt(42)
           listener: endFieldInitializer(=, ;)
-        listener: endTopLevelFields(null, null, null, null, 1, int, ;)
+        listener: endTopLevelFields(null, null, null, null, null, 1, int, ;)
   listener: endTopLevelDeclaration(int)
   parseTopLevelDeclarationImpl(;, Instance of 'DirectiveContext')
     parseMetadataStar(;)
@@ -1457,7 +1457,7 @@
                   parseLiteralInt(=)
                     listener: handleLiteralInt(42)
           listener: endFieldInitializer(=, ;)
-        listener: endTopLevelFields(null, null, null, null, 1, int, ;)
+        listener: endTopLevelFields(null, null, null, null, null, 1, int, ;)
   listener: endTopLevelDeclaration(int)
   parseTopLevelDeclarationImpl(;, Instance of 'DirectiveContext')
     parseMetadataStar(;)
@@ -1482,7 +1482,7 @@
                   parseLiteralInt(=)
                     listener: handleLiteralInt(42)
           listener: endFieldInitializer(=, ;)
-        listener: endTopLevelFields(null, null, null, null, 1, int, ;)
+        listener: endTopLevelFields(null, null, null, null, null, 1, int, ;)
   listener: endTopLevelDeclaration(int)
   parseTopLevelDeclarationImpl(;, Instance of 'DirectiveContext')
     parseMetadataStar(;)
@@ -1509,7 +1509,7 @@
                   parseLiteralInt(=)
                     listener: handleLiteralInt(42)
           listener: endFieldInitializer(=, ;)
-        listener: endTopLevelFields(null, null, null, null, 1, int, ;)
+        listener: endTopLevelFields(null, null, null, null, null, 1, int, ;)
   listener: endTopLevelDeclaration(int)
   parseTopLevelDeclarationImpl(;, Instance of 'DirectiveContext')
     parseMetadataStar(;)
@@ -1536,7 +1536,7 @@
                   parseLiteralInt(=)
                     listener: handleLiteralInt(42)
           listener: endFieldInitializer(=, ;)
-        listener: endTopLevelFields(null, null, null, null, 1, int, ;)
+        listener: endTopLevelFields(null, null, null, null, null, 1, int, ;)
   listener: endTopLevelDeclaration(int)
   parseTopLevelDeclarationImpl(;, Instance of 'DirectiveContext')
     parseMetadataStar(;)
@@ -1563,7 +1563,7 @@
                   parseLiteralInt(=)
                     listener: handleLiteralInt(42)
           listener: endFieldInitializer(=, ;)
-        listener: endTopLevelFields(null, null, null, null, 1, int, ;)
+        listener: endTopLevelFields(null, null, null, null, null, 1, int, ;)
   listener: endTopLevelDeclaration(int)
   parseTopLevelDeclarationImpl(;, Instance of 'DirectiveContext')
     parseMetadataStar(;)
@@ -1586,7 +1586,7 @@
                   parseLiteralInt(=)
                     listener: handleLiteralInt(42)
           listener: endFieldInitializer(=, ;)
-        listener: endTopLevelFields(null, null, null, null, 1, int, ;)
+        listener: endTopLevelFields(null, null, null, null, null, 1, int, ;)
   listener: endTopLevelDeclaration(int)
   parseTopLevelDeclarationImpl(;, Instance of 'DirectiveContext')
     parseMetadataStar(;)
@@ -1613,7 +1613,7 @@
                   parseLiteralInt(=)
                     listener: handleLiteralInt(42)
           listener: endFieldInitializer(=, ;)
-        listener: endTopLevelFields(null, null, null, null, 1, int, ;)
+        listener: endTopLevelFields(null, null, null, null, null, 1, int, ;)
   listener: endTopLevelDeclaration(int)
   parseTopLevelDeclarationImpl(;, Instance of 'DirectiveContext')
     parseMetadataStar(;)
@@ -1640,7 +1640,7 @@
                   parseLiteralInt(=)
                     listener: handleLiteralInt(42)
           listener: endFieldInitializer(=, ;)
-        listener: endTopLevelFields(null, null, null, null, 1, int, ;)
+        listener: endTopLevelFields(null, null, null, null, null, 1, int, ;)
   listener: endTopLevelDeclaration(int)
   parseTopLevelDeclarationImpl(;, Instance of 'DirectiveContext')
     parseMetadataStar(;)
@@ -1667,7 +1667,7 @@
                   parseLiteralInt(=)
                     listener: handleLiteralInt(42)
           listener: endFieldInitializer(=, ;)
-        listener: endTopLevelFields(null, null, null, null, 1, int, ;)
+        listener: endTopLevelFields(null, null, null, null, null, 1, int, ;)
   listener: endTopLevelDeclaration(int)
   parseTopLevelDeclarationImpl(;, Instance of 'DirectiveContext')
     parseMetadataStar(;)
@@ -1694,7 +1694,7 @@
                   parseLiteralInt(=)
                     listener: handleLiteralInt(42)
           listener: endFieldInitializer(=, ;)
-        listener: endTopLevelFields(null, null, null, null, 1, int, ;)
+        listener: endTopLevelFields(null, null, null, null, null, 1, int, ;)
   listener: endTopLevelDeclaration(int)
   parseTopLevelDeclarationImpl(;, Instance of 'DirectiveContext')
     parseMetadataStar(;)
@@ -1717,7 +1717,7 @@
                   parseLiteralInt(=)
                     listener: handleLiteralInt(42)
           listener: endFieldInitializer(=, ;)
-        listener: endTopLevelFields(null, null, null, null, 1, int, ;)
+        listener: endTopLevelFields(null, null, null, null, null, 1, int, ;)
   listener: endTopLevelDeclaration()
   reportAllErrorTokens(int)
   listener: endCompilationUnit(69, )
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 f04da6b..78a35b1 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
@@ -66,7 +66,7 @@
           beginFieldInitializer(=)
             handleLiteralInt(7)
           endFieldInitializer(=, ;)
-        endClassFields(null, null, null, null, 1, int, ;)
+        endClassFields(null, null, null, null, null, null, 1, int, ;)
       endMember()
       beginMetadataStar(int)
       endMetadataStar(0)
@@ -141,6 +141,6 @@
   beginFieldInitializer(=)
     handleLiteralInt(7)
   endFieldInitializer(=, ;)
-endTopLevelFields(null, null, null, null, 1, int, ;)
+endTopLevelFields(null, null, null, null, null, 1, int, ;)
 endTopLevelDeclaration()
 endCompilationUnit(3, )
diff --git a/pkg/front_end/parser_testcases/error_recovery/method_called_with.dart.intertwined.expect b/pkg/front_end/parser_testcases/error_recovery/method_called_with.dart.intertwined.expect
index f865ff8..ac132e0 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
@@ -95,7 +95,7 @@
                           parseLiteralInt(=)
                             listener: handleLiteralInt(7)
                   listener: endFieldInitializer(=, ;)
-                listener: endClassFields(null, null, null, null, 1, int, ;)
+                listener: endClassFields(null, null, null, null, null, null, 1, int, ;)
               listener: endMember()
             notEofOrValue(}, int)
             parseClassOrMixinOrExtensionMemberImpl(;, DeclarationKind.Class, C)
@@ -254,7 +254,7 @@
                   parseLiteralInt(=)
                     listener: handleLiteralInt(7)
           listener: endFieldInitializer(=, ;)
-        listener: endTopLevelFields(null, null, null, null, 1, int, ;)
+        listener: endTopLevelFields(null, null, null, null, null, 1, int, ;)
   listener: endTopLevelDeclaration()
   reportAllErrorTokens(class)
   listener: endCompilationUnit(3, )
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 5dd0a88..aba18fb 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
@@ -38,7 +38,7 @@
           beginFieldInitializer(=)
             handleLiteralInt(7)
           endFieldInitializer(=, ;)
-        endClassFields(null, null, null, null, 1, int, ;)
+        endClassFields(null, null, null, null, null, null, 1, int, ;)
       endMember()
       beginMetadataStar(int)
       endMetadataStar(0)
@@ -109,6 +109,6 @@
   beginFieldInitializer(=)
     handleLiteralInt(7)
   endFieldInitializer(=, ;)
-endTopLevelFields(null, null, null, null, 1, int, ;)
+endTopLevelFields(null, null, null, null, null, 1, int, ;)
 endTopLevelDeclaration()
 endCompilationUnit(3, )
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 06a6ce3..07e7ab5 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
@@ -87,7 +87,7 @@
                           parseLiteralInt(=)
                             listener: handleLiteralInt(7)
                   listener: endFieldInitializer(=, ;)
-                listener: endClassFields(null, null, null, null, 1, int, ;)
+                listener: endClassFields(null, null, null, null, null, null, 1, int, ;)
               listener: endMember()
             notEofOrValue(}, int)
             parseClassOrMixinOrExtensionMemberImpl(;, DeclarationKind.Class, C)
@@ -230,7 +230,7 @@
                   parseLiteralInt(=)
                     listener: handleLiteralInt(7)
           listener: endFieldInitializer(=, ;)
-        listener: endTopLevelFields(null, null, null, null, 1, int, ;)
+        listener: endTopLevelFields(null, null, null, null, null, 1, int, ;)
   listener: endTopLevelDeclaration()
   reportAllErrorTokens(class)
   listener: endCompilationUnit(3, )
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 e98991a..662eec3 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
@@ -44,7 +44,7 @@
     handleIdentifier(foo, topLevelVariableDeclaration)
     handleNoFieldInitializer(class)
     handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], foo, foo)
-  endTopLevelFields(null, null, null, null, 1, foo, ;)
+  endTopLevelFields(null, null, null, null, null, 1, foo, ;)
 endTopLevelDeclaration(class)
 beginMetadataStar(class)
 endMetadataStar(0)
@@ -66,7 +66,7 @@
         handleIdentifier(foo, fieldDeclaration)
         handleNoFieldInitializer(class)
         handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], foo, foo)
-      endClassFields(null, null, null, null, 1, foo, ;)
+      endClassFields(null, null, null, null, null, null, 1, foo, ;)
     endMember()
     beginMetadataStar(class)
     endMetadataStar(0)
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 c7abc22..1b4821c 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
@@ -50,7 +50,7 @@
           reportRecoverableError(foo, Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}])
             listener: handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], foo, foo)
           rewriter()
-        listener: endTopLevelFields(null, null, null, null, 1, foo, ;)
+        listener: endTopLevelFields(null, null, null, null, null, 1, foo, ;)
   listener: endTopLevelDeclaration(class)
   parseTopLevelDeclarationImpl(;, Instance of 'DirectiveContext')
     parseMetadataStar(;)
@@ -96,7 +96,7 @@
                   reportRecoverableError(foo, Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}])
                     listener: handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], foo, foo)
                   rewriter()
-                listener: endClassFields(null, null, null, null, 1, foo, ;)
+                listener: endClassFields(null, null, null, null, null, null, 1, foo, ;)
               listener: endMember()
             notEofOrValue(}, class)
             parseClassOrMixinOrExtensionMemberImpl(;, DeclarationKind.Class, M1)
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 15abefb..5df1db7 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 4e3a324..3b6dbdb 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
@@ -40,7 +40,7 @@
           reportRecoverableError(o, Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}])
             listener: handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], o, o)
           rewriter()
-        listener: endTopLevelFields(null, null, null, null, 1, C, ;)
+        listener: endTopLevelFields(null, null, null, null, null, 1, C, ;)
   listener: endTopLevelDeclaration(p)
   parseTopLevelDeclarationImpl(;, Instance of 'DirectiveContext')
     parseMetadataStar(;)
@@ -60,7 +60,7 @@
           reportRecoverableError(y, Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}])
             listener: handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], y, y)
           rewriter()
-        listener: endTopLevelFields(null, null, null, null, 1, p, ;)
+        listener: endTopLevelFields(null, null, null, null, null, 1, p, ;)
   listener: endTopLevelDeclaration(r)
   parseTopLevelDeclarationImpl(;, Instance of 'DirectiveContext')
     parseMetadataStar(;)
@@ -80,7 +80,7 @@
           reportRecoverableError(i, Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}])
             listener: handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], i, i)
           rewriter()
-        listener: endTopLevelFields(null, null, null, null, 1, r, ;)
+        listener: endTopLevelFields(null, null, null, null, null, 1, r, ;)
   listener: endTopLevelDeclaration(g)
   parseTopLevelDeclarationImpl(;, Instance of 'DirectiveContext')
     parseMetadataStar(;)
@@ -100,7 +100,7 @@
           reportRecoverableError(h, Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}])
             listener: handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], h, h)
           rewriter()
-        listener: endTopLevelFields(null, null, null, null, 1, g, ;)
+        listener: endTopLevelFields(null, null, null, null, null, 1, g, ;)
   listener: endTopLevelDeclaration(t)
   parseTopLevelDeclarationImpl(;, Instance of 'DirectiveContext')
     parseMetadataStar(;)
@@ -212,7 +212,7 @@
           reportRecoverableError(h, Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}])
             listener: handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], h, h)
           rewriter()
-        listener: endTopLevelFields(null, null, null, null, 1, t, ;)
+        listener: endTopLevelFields(null, null, null, null, null, 1, t, ;)
   listener: endTopLevelDeclaration(e)
   parseTopLevelDeclarationImpl(;, Instance of 'DirectiveContext')
     parseMetadataStar(;)
@@ -232,7 +232,7 @@
           reportRecoverableError(D, Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}])
             listener: handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], D, D)
           rewriter()
-        listener: endTopLevelFields(null, null, null, null, 1, e, ;)
+        listener: endTopLevelFields(null, null, null, null, null, 1, e, ;)
   listener: endTopLevelDeclaration(a)
   parseTopLevelDeclarationImpl(;, Instance of 'DirectiveContext')
     parseMetadataStar(;)
@@ -252,7 +252,7 @@
           reportRecoverableError(r, Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}])
             listener: handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], r, r)
           rewriter()
-        listener: endTopLevelFields(null, null, null, null, 1, a, ;)
+        listener: endTopLevelFields(null, null, null, null, null, 1, a, ;)
   listener: endTopLevelDeclaration(t)
   parseTopLevelDeclarationImpl(;, Instance of 'DirectiveContext')
     parseMetadataStar(;)
@@ -272,7 +272,7 @@
           reportRecoverableError(p, Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}])
             listener: handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], p, p)
           rewriter()
-        listener: endTopLevelFields(null, null, null, null, 1, t, ;)
+        listener: endTopLevelFields(null, null, null, null, null, 1, t, ;)
   listener: endTopLevelDeclaration(r)
   parseTopLevelDeclarationImpl(;, Instance of 'DirectiveContext')
     parseMetadataStar(;)
@@ -292,7 +292,7 @@
           reportRecoverableError(o, Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}])
             listener: handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], o, o)
           rewriter()
-        listener: endTopLevelFields(null, null, null, null, 1, r, ;)
+        listener: endTopLevelFields(null, null, null, null, null, 1, r, ;)
   listener: endTopLevelDeclaration(j)
   parseTopLevelDeclarationImpl(;, Instance of 'DirectiveContext')
     parseMetadataStar(;)
@@ -312,7 +312,7 @@
           reportRecoverableError(e, Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}])
             listener: handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], e, e)
           rewriter()
-        listener: endTopLevelFields(null, null, null, null, 1, j, ;)
+        listener: endTopLevelFields(null, null, null, null, null, 1, j, ;)
   listener: endTopLevelDeclaration(c)
   parseTopLevelDeclarationImpl(;, Instance of 'DirectiveContext')
     parseMetadataStar(;)
@@ -332,7 +332,7 @@
           reportRecoverableError(t, Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}])
             listener: handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], t, t)
           rewriter()
-        listener: endTopLevelFields(null, null, null, null, 1, c, ;)
+        listener: endTopLevelFields(null, null, null, null, null, 1, c, ;)
   listener: endTopLevelDeclaration(a)
   parseTopLevelDeclarationImpl(;, Instance of 'DirectiveContext')
     parseMetadataStar(;)
@@ -352,7 +352,7 @@
           reportRecoverableError(u, Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}])
             listener: handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], u, u)
           rewriter()
-        listener: endTopLevelFields(null, null, null, null, 1, a, ;)
+        listener: endTopLevelFields(null, null, null, null, null, 1, a, ;)
   listener: endTopLevelDeclaration(t)
   parseTopLevelDeclarationImpl(;, Instance of 'DirectiveContext')
     parseMetadataStar(;)
@@ -372,7 +372,7 @@
           reportRecoverableError(h, Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}])
             listener: handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], h, h)
           rewriter()
-        listener: endTopLevelFields(null, null, null, null, 1, t, ;)
+        listener: endTopLevelFields(null, null, null, null, null, 1, t, ;)
   listener: endTopLevelDeclaration(o)
   parseTopLevelDeclarationImpl(;, Instance of 'DirectiveContext')
     parseMetadataStar(;)
@@ -392,7 +392,7 @@
           reportRecoverableError(r, Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}])
             listener: handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], r, r)
           rewriter()
-        listener: endTopLevelFields(null, null, null, null, 1, o, ;)
+        listener: endTopLevelFields(null, null, null, null, null, 1, o, ;)
   listener: endTopLevelDeclaration(s)
   parseTopLevelDeclarationImpl(;, Instance of 'DirectiveContext')
     parseMetadataStar(;)
@@ -414,7 +414,7 @@
           reportRecoverableError(l, Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}])
             listener: handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], l, l)
           rewriter()
-        listener: endTopLevelFields(null, null, null, null, 1, s, ;)
+        listener: endTopLevelFields(null, null, null, null, null, 1, s, ;)
   listener: endTopLevelDeclaration(e)
   parseTopLevelDeclarationImpl(;, Instance of 'DirectiveContext')
     parseMetadataStar(;)
@@ -434,7 +434,7 @@
           reportRecoverableError(a, Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}])
             listener: handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], a, a)
           rewriter()
-        listener: endTopLevelFields(null, null, null, null, 1, e, ;)
+        listener: endTopLevelFields(null, null, null, null, null, 1, e, ;)
   listener: endTopLevelDeclaration(s)
   parseTopLevelDeclarationImpl(;, Instance of 'DirectiveContext')
     parseMetadataStar(;)
@@ -454,7 +454,7 @@
           reportRecoverableError(e, Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}])
             listener: handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], e, e)
           rewriter()
-        listener: endTopLevelFields(null, null, null, null, 1, s, ;)
+        listener: endTopLevelFields(null, null, null, null, null, 1, s, ;)
   listener: endTopLevelDeclaration(s)
   parseTopLevelDeclarationImpl(;, Instance of 'DirectiveContext')
     parseMetadataStar(;)
@@ -474,7 +474,7 @@
           reportRecoverableError(e, Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}])
             listener: handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], e, e)
           rewriter()
-        listener: endTopLevelFields(null, null, null, null, 1, s, ;)
+        listener: endTopLevelFields(null, null, null, null, null, 1, s, ;)
   listener: endTopLevelDeclaration(e)
   parseTopLevelDeclarationImpl(;, Instance of 'DirectiveContext')
     parseMetadataStar(;)
@@ -494,7 +494,7 @@
           reportRecoverableError(t, Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}])
             listener: handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], t, t)
           rewriter()
-        listener: endTopLevelFields(null, null, null, null, 1, e, ;)
+        listener: endTopLevelFields(null, null, null, null, null, 1, e, ;)
   listener: endTopLevelDeclaration(h)
   parseTopLevelDeclarationImpl(;, Instance of 'DirectiveContext')
     parseMetadataStar(;)
@@ -514,7 +514,7 @@
           reportRecoverableError(e, Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}])
             listener: handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], e, e)
           rewriter()
-        listener: endTopLevelFields(null, null, null, null, 1, h, ;)
+        listener: endTopLevelFields(null, null, null, null, null, 1, h, ;)
   listener: endTopLevelDeclaration(A)
   parseTopLevelDeclarationImpl(;, Instance of 'DirectiveContext')
     parseMetadataStar(;)
@@ -534,7 +534,7 @@
           reportRecoverableError(U, Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}])
             listener: handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], U, U)
           rewriter()
-        listener: endTopLevelFields(null, null, null, null, 1, A, ;)
+        listener: endTopLevelFields(null, null, null, null, null, 1, A, ;)
   listener: endTopLevelDeclaration(T)
   parseTopLevelDeclarationImpl(;, Instance of 'DirectiveContext')
     parseMetadataStar(;)
@@ -554,7 +554,7 @@
           reportRecoverableError(H, Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}])
             listener: handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], H, H)
           rewriter()
-        listener: endTopLevelFields(null, null, null, null, 1, T, ;)
+        listener: endTopLevelFields(null, null, null, null, null, 1, T, ;)
   listener: endTopLevelDeclaration(O)
   parseTopLevelDeclarationImpl(;, Instance of 'DirectiveContext')
     parseMetadataStar(;)
@@ -574,7 +574,7 @@
           reportRecoverableError(R, Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}])
             listener: handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], R, R)
           rewriter()
-        listener: endTopLevelFields(null, null, null, null, 1, O, ;)
+        listener: endTopLevelFields(null, null, null, null, null, 1, O, ;)
   listener: endTopLevelDeclaration(S)
   parseTopLevelDeclarationImpl(;, Instance of 'DirectiveContext')
     parseMetadataStar(;)
@@ -594,7 +594,7 @@
           reportRecoverableError(f, Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}])
             listener: handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], f, f)
           rewriter()
-        listener: endTopLevelFields(null, null, null, null, 1, S, ;)
+        listener: endTopLevelFields(null, null, null, null, null, 1, S, ;)
   listener: endTopLevelDeclaration(i)
   parseTopLevelDeclarationImpl(;, Instance of 'DirectiveContext')
     parseMetadataStar(;)
@@ -614,7 +614,7 @@
           reportRecoverableError(l, Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}])
             listener: handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], l, l)
           rewriter()
-        listener: endTopLevelFields(null, null, null, null, 1, i, ;)
+        listener: endTopLevelFields(null, null, null, null, null, 1, i, ;)
   listener: endTopLevelDeclaration(e)
   parseTopLevelDeclarationImpl(;, Instance of 'DirectiveContext')
     parseMetadataStar(;)
@@ -635,7 +635,7 @@
           reportRecoverableError(e, Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}])
             listener: handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], e, e)
           rewriter()
-        listener: endTopLevelFields(null, null, null, null, 1, e, ;)
+        listener: endTopLevelFields(null, null, null, null, null, 1, e, ;)
   listener: endTopLevelDeclaration(/)
   parseTopLevelDeclarationImpl(;, Instance of 'DirectiveContext')
     parseMetadataStar(;)
@@ -675,7 +675,7 @@
           reportRecoverableError(o, Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}])
             listener: handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], o, o)
           rewriter()
-        listener: endTopLevelFields(null, null, null, null, 1, f, ;)
+        listener: endTopLevelFields(null, null, null, null, null, 1, f, ;)
   listener: endTopLevelDeclaration(r)
   parseTopLevelDeclarationImpl(;, Instance of 'DirectiveContext')
     parseMetadataStar(;)
@@ -695,7 +695,7 @@
           reportRecoverableError(d, Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}])
             listener: handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], d, d)
           rewriter()
-        listener: endTopLevelFields(null, null, null, null, 1, r, ;)
+        listener: endTopLevelFields(null, null, null, null, null, 1, r, ;)
   listener: endTopLevelDeclaration(e)
   parseTopLevelDeclarationImpl(;, Instance of 'DirectiveContext')
     parseMetadataStar(;)
@@ -715,7 +715,7 @@
           reportRecoverableError(t, Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}])
             listener: handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], t, t)
           rewriter()
-        listener: endTopLevelFields(null, null, null, null, 1, e, ;)
+        listener: endTopLevelFields(null, null, null, null, null, 1, e, ;)
   listener: endTopLevelDeclaration(a)
   parseTopLevelDeclarationImpl(;, Instance of 'DirectiveContext')
     parseMetadataStar(;)
@@ -735,7 +735,7 @@
           reportRecoverableError(i, Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}])
             listener: handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], i, i)
           rewriter()
-        listener: endTopLevelFields(null, null, null, null, 1, a, ;)
+        listener: endTopLevelFields(null, null, null, null, null, 1, a, ;)
   listener: endTopLevelDeclaration(l)
   parseTopLevelDeclarationImpl(;, Instance of 'DirectiveContext')
     parseMetadataStar(;)
@@ -801,7 +801,7 @@
           reportRecoverableError(l, Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}])
             listener: handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], l, l)
           rewriter()
-        listener: endTopLevelFields(null, null, null, null, 1, A, ;)
+        listener: endTopLevelFields(null, null, null, null, null, 1, A, ;)
   listener: endTopLevelDeclaration(l)
   parseTopLevelDeclarationImpl(;, Instance of 'DirectiveContext')
     parseMetadataStar(;)
@@ -821,7 +821,7 @@
           reportRecoverableError(r, Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}])
             listener: handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], r, r)
           rewriter()
-        listener: endTopLevelFields(null, null, null, null, 1, l, ;)
+        listener: endTopLevelFields(null, null, null, null, null, 1, l, ;)
   listener: endTopLevelDeclaration(i)
   parseTopLevelDeclarationImpl(;, Instance of 'DirectiveContext')
     parseMetadataStar(;)
@@ -841,7 +841,7 @@
           reportRecoverableError(g, Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}])
             listener: handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], g, g)
           rewriter()
-        listener: endTopLevelFields(null, null, null, null, 1, i, ;)
+        listener: endTopLevelFields(null, null, null, null, null, 1, i, ;)
   listener: endTopLevelDeclaration(h)
   parseTopLevelDeclarationImpl(;, Instance of 'DirectiveContext')
     parseMetadataStar(;)
@@ -861,7 +861,7 @@
           reportRecoverableError(t, Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}])
             listener: handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], t, t)
           rewriter()
-        listener: endTopLevelFields(null, null, null, null, 1, h, ;)
+        listener: endTopLevelFields(null, null, null, null, null, 1, h, ;)
   listener: endTopLevelDeclaration(s)
   parseTopLevelDeclarationImpl(;, Instance of 'DirectiveContext')
     parseMetadataStar(;)
@@ -881,7 +881,7 @@
           reportRecoverableError(r, Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}])
             listener: handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], r, r)
           rewriter()
-        listener: endTopLevelFields(null, null, null, null, 1, s, ;)
+        listener: endTopLevelFields(null, null, null, null, null, 1, s, ;)
   listener: endTopLevelDeclaration(e)
   parseTopLevelDeclarationImpl(;, Instance of 'DirectiveContext')
     parseMetadataStar(;)
@@ -901,7 +901,7 @@
           reportRecoverableError(s, Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}])
             listener: handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], s, s)
           rewriter()
-        listener: endTopLevelFields(null, null, null, null, 1, e, ;)
+        listener: endTopLevelFields(null, null, null, null, null, 1, e, ;)
   listener: endTopLevelDeclaration(e)
   parseTopLevelDeclarationImpl(;, Instance of 'DirectiveContext')
     parseMetadataStar(;)
@@ -921,7 +921,7 @@
           reportRecoverableError(r, Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}])
             listener: handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], r, r)
           rewriter()
-        listener: endTopLevelFields(null, null, null, null, 1, e, ;)
+        listener: endTopLevelFields(null, null, null, null, null, 1, e, ;)
   listener: endTopLevelDeclaration(v)
   parseTopLevelDeclarationImpl(;, Instance of 'DirectiveContext')
     parseMetadataStar(;)
@@ -941,7 +941,7 @@
           reportRecoverableError(e, Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}])
             listener: handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], e, e)
           rewriter()
-        listener: endTopLevelFields(null, null, null, null, 1, v, ;)
+        listener: endTopLevelFields(null, null, null, null, null, 1, v, ;)
   listener: endTopLevelDeclaration(d)
   parseTopLevelDeclarationImpl(;, Instance of 'DirectiveContext')
     parseMetadataStar(;)
@@ -963,7 +963,7 @@
           reportRecoverableError(s, Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}])
             listener: handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], s, s)
           rewriter()
-        listener: endTopLevelFields(null, null, null, null, 1, d, ;)
+        listener: endTopLevelFields(null, null, null, null, null, 1, d, ;)
   listener: endTopLevelDeclaration(e)
   parseTopLevelDeclarationImpl(;, Instance of 'DirectiveContext')
     parseMetadataStar(;)
@@ -983,7 +983,7 @@
           reportRecoverableError(o, Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}])
             listener: handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], o, o)
           rewriter()
-        listener: endTopLevelFields(null, null, null, null, 1, e, ;)
+        listener: endTopLevelFields(null, null, null, null, null, 1, e, ;)
   listener: endTopLevelDeclaration(f)
   parseTopLevelDeclarationImpl(;, Instance of 'DirectiveContext')
     parseMetadataStar(;)
@@ -1003,7 +1003,7 @@
           reportRecoverableError(t, Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}])
             listener: handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], t, t)
           rewriter()
-        listener: endTopLevelFields(null, null, null, null, 1, f, ;)
+        listener: endTopLevelFields(null, null, null, null, null, 1, f, ;)
   listener: endTopLevelDeclaration(h)
   parseTopLevelDeclarationImpl(;, Instance of 'DirectiveContext')
     parseMetadataStar(;)
@@ -1023,7 +1023,7 @@
           reportRecoverableError(i, Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}])
             listener: handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], i, i)
           rewriter()
-        listener: endTopLevelFields(null, null, null, null, 1, h, ;)
+        listener: endTopLevelFields(null, null, null, null, null, 1, h, ;)
   listener: endTopLevelDeclaration(s)
   parseTopLevelDeclarationImpl(;, Instance of 'DirectiveContext')
     parseMetadataStar(;)
@@ -1043,7 +1043,7 @@
           reportRecoverableError(s, Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}])
             listener: handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], s, s)
           rewriter()
-        listener: endTopLevelFields(null, null, null, null, 1, s, ;)
+        listener: endTopLevelFields(null, null, null, null, null, 1, s, ;)
   listener: endTopLevelDeclaration(o)
   parseTopLevelDeclarationImpl(;, Instance of 'DirectiveContext')
     parseMetadataStar(;)
@@ -1063,7 +1063,7 @@
           reportRecoverableError(u, Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}])
             listener: handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], u, u)
           rewriter()
-        listener: endTopLevelFields(null, null, null, null, 1, o, ;)
+        listener: endTopLevelFields(null, null, null, null, null, 1, o, ;)
   listener: endTopLevelDeclaration(r)
   parseTopLevelDeclarationImpl(;, Instance of 'DirectiveContext')
     parseMetadataStar(;)
@@ -1083,7 +1083,7 @@
           reportRecoverableError(c, Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}])
             listener: handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], c, c)
           rewriter()
-        listener: endTopLevelFields(null, null, null, null, 1, r, ;)
+        listener: endTopLevelFields(null, null, null, null, null, 1, r, ;)
   listener: endTopLevelDeclaration(e)
   parseTopLevelDeclarationImpl(;, Instance of 'DirectiveContext')
     parseMetadataStar(;)
@@ -1103,7 +1103,7 @@
           reportRecoverableError(c, Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}])
             listener: handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], c, c)
           rewriter()
-        listener: endTopLevelFields(null, null, null, null, 1, e, ;)
+        listener: endTopLevelFields(null, null, null, null, null, 1, e, ;)
   listener: endTopLevelDeclaration(o)
   parseTopLevelDeclarationImpl(;, Instance of 'DirectiveContext')
     parseMetadataStar(;)
@@ -1123,7 +1123,7 @@
           reportRecoverableError(d, Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}])
             listener: handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], d, d)
           rewriter()
-        listener: endTopLevelFields(null, null, null, null, 1, o, ;)
+        listener: endTopLevelFields(null, null, null, null, null, 1, o, ;)
   listener: endTopLevelDeclaration(e)
   parseTopLevelDeclarationImpl(;, Instance of 'DirectiveContext')
     parseMetadataStar(;)
@@ -1143,7 +1143,7 @@
           reportRecoverableError(i, Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}])
             listener: handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], i, i)
           rewriter()
-        listener: endTopLevelFields(null, null, null, null, 1, e, ;)
+        listener: endTopLevelFields(null, null, null, null, null, 1, e, ;)
   listener: endTopLevelDeclaration(s)
   parseTopLevelDeclarationImpl(;, Instance of 'DirectiveContext')
     parseMetadataStar(;)
@@ -1163,7 +1163,7 @@
           reportRecoverableError(g, Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}])
             listener: handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], g, g)
           rewriter()
-        listener: endTopLevelFields(null, null, null, null, 1, s, ;)
+        listener: endTopLevelFields(null, null, null, null, null, 1, s, ;)
   listener: endTopLevelDeclaration(o)
   parseTopLevelDeclarationImpl(;, Instance of 'DirectiveContext')
     parseMetadataStar(;)
@@ -1183,7 +1183,7 @@
           reportRecoverableError(v, Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}])
             listener: handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], v, v)
           rewriter()
-        listener: endTopLevelFields(null, null, null, null, 1, o, ;)
+        listener: endTopLevelFields(null, null, null, null, null, 1, o, ;)
   listener: endTopLevelDeclaration(e)
   parseTopLevelDeclarationImpl(;, Instance of 'DirectiveContext')
     parseMetadataStar(;)
@@ -1203,7 +1203,7 @@
           reportRecoverableError(r, Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}])
             listener: handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], r, r)
           rewriter()
-        listener: endTopLevelFields(null, null, null, null, 1, e, ;)
+        listener: endTopLevelFields(null, null, null, null, null, 1, e, ;)
   listener: endTopLevelDeclaration(n)
   parseTopLevelDeclarationImpl(;, Instance of 'DirectiveContext')
     parseMetadataStar(;)
@@ -1223,7 +1223,7 @@
           reportRecoverableError(e, Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}])
             listener: handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], e, e)
           rewriter()
-        listener: endTopLevelFields(null, null, null, null, 1, n, ;)
+        listener: endTopLevelFields(null, null, null, null, null, 1, n, ;)
   listener: endTopLevelDeclaration(d)
   parseTopLevelDeclarationImpl(;, Instance of 'DirectiveContext')
     parseMetadataStar(;)
@@ -1243,7 +1243,7 @@
           reportRecoverableError(b, Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}])
             listener: handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], b, b)
           rewriter()
-        listener: endTopLevelFields(null, null, null, null, 1, d, ;)
+        listener: endTopLevelFields(null, null, null, null, null, 1, d, ;)
   listener: endTopLevelDeclaration(y)
   parseTopLevelDeclarationImpl(;, Instance of 'DirectiveContext')
     parseMetadataStar(;)
@@ -1263,7 +1263,7 @@
           reportRecoverableError(a, Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}])
             listener: handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], a, a)
           rewriter()
-        listener: endTopLevelFields(null, null, null, null, 1, y, ;)
+        listener: endTopLevelFields(null, null, null, null, null, 1, y, ;)
   listener: endTopLevelDeclaration(/)
   parseTopLevelDeclarationImpl(;, Instance of 'DirectiveContext')
     parseMetadataStar(;)
@@ -1303,7 +1303,7 @@
           reportRecoverableError(S, Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}])
             listener: handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], S, S)
           rewriter()
-        listener: endTopLevelFields(null, null, null, null, 1, B, ;)
+        listener: endTopLevelFields(null, null, null, null, null, 1, B, ;)
   listener: endTopLevelDeclaration(D)
   parseTopLevelDeclarationImpl(;, Instance of 'DirectiveContext')
     parseMetadataStar(;)
@@ -1324,7 +1324,7 @@
           reportRecoverableError(D, Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}])
             listener: handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], D, D)
           rewriter()
-        listener: endTopLevelFields(null, null, null, null, 1, D, ;)
+        listener: endTopLevelFields(null, null, null, null, null, 1, D, ;)
   listener: endTopLevelDeclaration(-)
   parseTopLevelDeclarationImpl(;, Instance of 'DirectiveContext')
     parseMetadataStar(;)
@@ -1354,7 +1354,7 @@
           reportRecoverableError(t, Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}])
             listener: handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], t, t)
           rewriter()
-        listener: endTopLevelFields(null, null, null, null, 1, s, ;)
+        listener: endTopLevelFields(null, null, null, null, null, 1, s, ;)
   listener: endTopLevelDeclaration(y)
   parseTopLevelDeclarationImpl(;, Instance of 'DirectiveContext')
     parseMetadataStar(;)
@@ -1374,7 +1374,7 @@
           reportRecoverableError(l, Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}])
             listener: handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], l, l)
           rewriter()
-        listener: endTopLevelFields(null, null, null, null, 1, y, ;)
+        listener: endTopLevelFields(null, null, null, null, null, 1, y, ;)
   listener: endTopLevelDeclaration(e)
   parseTopLevelDeclarationImpl(;, Instance of 'DirectiveContext')
     parseMetadataStar(;)
@@ -1394,7 +1394,7 @@
           reportRecoverableError(l, Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}])
             listener: handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], l, l)
           rewriter()
-        listener: endTopLevelFields(null, null, null, null, 1, e, ;)
+        listener: endTopLevelFields(null, null, null, null, null, 1, e, ;)
   listener: endTopLevelDeclaration(i)
   parseTopLevelDeclarationImpl(;, Instance of 'DirectiveContext')
     parseMetadataStar(;)
@@ -1414,7 +1414,7 @@
           reportRecoverableError(c, Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}])
             listener: handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], c, c)
           rewriter()
-        listener: endTopLevelFields(null, null, null, null, 1, i, ;)
+        listener: endTopLevelFields(null, null, null, null, null, 1, i, ;)
   listener: endTopLevelDeclaration(e)
   parseTopLevelDeclarationImpl(;, Instance of 'DirectiveContext')
     parseMetadataStar(;)
@@ -1434,7 +1434,7 @@
           reportRecoverableError(n, Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}])
             listener: handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], n, n)
           rewriter()
-        listener: endTopLevelFields(null, null, null, null, 1, e, ;)
+        listener: endTopLevelFields(null, null, null, null, null, 1, e, ;)
   listener: endTopLevelDeclaration(s)
   parseTopLevelDeclarationImpl(;, Instance of 'DirectiveContext')
     parseMetadataStar(;)
@@ -1454,7 +1454,7 @@
           reportRecoverableError(e, Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}])
             listener: handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], e, e)
           rewriter()
-        listener: endTopLevelFields(null, null, null, null, 1, s, ;)
+        listener: endTopLevelFields(null, null, null, null, null, 1, s, ;)
   listener: endTopLevelDeclaration(t)
   parseTopLevelDeclarationImpl(;, Instance of 'DirectiveContext')
     parseMetadataStar(;)
@@ -1474,7 +1474,7 @@
           reportRecoverableError(h, Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}])
             listener: handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], h, h)
           rewriter()
-        listener: endTopLevelFields(null, null, null, null, 1, t, ;)
+        listener: endTopLevelFields(null, null, null, null, null, 1, t, ;)
   listener: endTopLevelDeclaration(a)
   parseTopLevelDeclarationImpl(;, Instance of 'DirectiveContext')
     parseMetadataStar(;)
@@ -1494,7 +1494,7 @@
           reportRecoverableError(t, Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}])
             listener: handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], t, t)
           rewriter()
-        listener: endTopLevelFields(null, null, null, null, 1, a, ;)
+        listener: endTopLevelFields(null, null, null, null, null, 1, a, ;)
   listener: endTopLevelDeclaration(c)
   parseTopLevelDeclarationImpl(;, Instance of 'DirectiveContext')
     parseMetadataStar(;)
@@ -1514,7 +1514,7 @@
           reportRecoverableError(a, Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}])
             listener: handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], a, a)
           rewriter()
-        listener: endTopLevelFields(null, null, null, null, 1, c, ;)
+        listener: endTopLevelFields(null, null, null, null, null, 1, c, ;)
   listener: endTopLevelDeclaration(n)
   parseTopLevelDeclarationImpl(;, Instance of 'DirectiveContext')
     parseMetadataStar(;)
@@ -1534,7 +1534,7 @@
           reportRecoverableError(b, Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}])
             listener: handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], b, b)
           rewriter()
-        listener: endTopLevelFields(null, null, null, null, 1, n, ;)
+        listener: endTopLevelFields(null, null, null, null, null, 1, n, ;)
   listener: endTopLevelDeclaration(e)
   parseTopLevelDeclarationImpl(;, Instance of 'DirectiveContext')
     parseMetadataStar(;)
@@ -1554,7 +1554,7 @@
           reportRecoverableError(f, Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}])
             listener: handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], f, f)
           rewriter()
-        listener: endTopLevelFields(null, null, null, null, 1, e, ;)
+        listener: endTopLevelFields(null, null, null, null, null, 1, e, ;)
   listener: endTopLevelDeclaration(o)
   parseTopLevelDeclarationImpl(;, Instance of 'DirectiveContext')
     parseMetadataStar(;)
@@ -1574,7 +1574,7 @@
           reportRecoverableError(u, Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}])
             listener: handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], u, u)
           rewriter()
-        listener: endTopLevelFields(null, null, null, null, 1, o, ;)
+        listener: endTopLevelFields(null, null, null, null, null, 1, o, ;)
   listener: endTopLevelDeclaration(n)
   parseTopLevelDeclarationImpl(;, Instance of 'DirectiveContext')
     parseMetadataStar(;)
@@ -1594,7 +1594,7 @@
           reportRecoverableError(d, Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}])
             listener: handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], d, d)
           rewriter()
-        listener: endTopLevelFields(null, null, null, null, 1, n, ;)
+        listener: endTopLevelFields(null, null, null, null, null, 1, n, ;)
   listener: endTopLevelDeclaration(i)
   parseTopLevelDeclarationImpl(;, Instance of 'DirectiveContext')
     parseMetadataStar(;)
@@ -1614,7 +1614,7 @@
           reportRecoverableError(n, Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}])
             listener: handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], n, n)
           rewriter()
-        listener: endTopLevelFields(null, null, null, null, 1, i, ;)
+        listener: endTopLevelFields(null, null, null, null, null, 1, i, ;)
   listener: endTopLevelDeclaration(t)
   parseTopLevelDeclarationImpl(;, Instance of 'DirectiveContext')
     parseMetadataStar(;)
@@ -1634,7 +1634,7 @@
           reportRecoverableError(h, Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}])
             listener: handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], h, h)
           rewriter()
-        listener: endTopLevelFields(null, null, null, null, 1, t, ;)
+        listener: endTopLevelFields(null, null, null, null, null, 1, t, ;)
   listener: endTopLevelDeclaration(e)
   parseTopLevelDeclarationImpl(;, Instance of 'DirectiveContext')
     parseMetadataStar(;)
@@ -1654,7 +1654,7 @@
           reportRecoverableError(L, Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}])
             listener: handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], L, L)
           rewriter()
-        listener: endTopLevelFields(null, null, null, null, 1, e, ;)
+        listener: endTopLevelFields(null, null, null, null, null, 1, e, ;)
   listener: endTopLevelDeclaration(I)
   parseTopLevelDeclarationImpl(;, Instance of 'DirectiveContext')
     parseMetadataStar(;)
@@ -1674,7 +1674,7 @@
           reportRecoverableError(C, Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}])
             listener: handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], C, C)
           rewriter()
-        listener: endTopLevelFields(null, null, null, null, 1, I, ;)
+        listener: endTopLevelFields(null, null, null, null, null, 1, I, ;)
   listener: endTopLevelDeclaration(E)
   parseTopLevelDeclarationImpl(;, Instance of 'DirectiveContext')
     parseMetadataStar(;)
@@ -1694,7 +1694,7 @@
           reportRecoverableError(N, Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}])
             listener: handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], N, N)
           rewriter()
-        listener: endTopLevelFields(null, null, null, null, 1, E, ;)
+        listener: endTopLevelFields(null, null, null, null, null, 1, E, ;)
   listener: endTopLevelDeclaration(S)
   parseTopLevelDeclarationImpl(;, Instance of 'DirectiveContext')
     parseMetadataStar(;)
@@ -1760,7 +1760,7 @@
           reportRecoverableError(d, Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}])
             listener: handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], d, d)
           rewriter()
-        listener: endTopLevelFields(null, null, null, null, 1, m, ;)
+        listener: endTopLevelFields(null, null, null, null, null, 1, m, ;)
   listener: endTopLevelDeclaration(f)
   parseTopLevelDeclarationImpl(;, Instance of 'DirectiveContext')
     parseMetadataStar(;)
@@ -1780,7 +1780,7 @@
           reportRecoverableError(i, Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}])
             listener: handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], i, i)
           rewriter()
-        listener: endTopLevelFields(null, null, null, null, 1, f, ;)
+        listener: endTopLevelFields(null, null, null, null, null, 1, f, ;)
   listener: endTopLevelDeclaration(l)
   parseTopLevelDeclarationImpl(;, Instance of 'DirectiveContext')
     parseMetadataStar(;)
@@ -1866,7 +1866,7 @@
           reportRecoverableError(h, Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}])
             listener: handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], h, h)
           rewriter()
-        listener: endTopLevelFields(null, null, null, null, 1, T, ;)
+        listener: endTopLevelFields(null, null, null, null, null, 1, T, ;)
   listener: endTopLevelDeclaration(i)
   parseTopLevelDeclarationImpl(;, Instance of 'DirectiveContext')
     parseMetadataStar(;)
@@ -1886,7 +1886,7 @@
           reportRecoverableError(s, Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}])
             listener: handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], s, s)
           rewriter()
-        listener: endTopLevelFields(null, null, null, null, 1, i, ;)
+        listener: endTopLevelFields(null, null, null, null, null, 1, i, ;)
   listener: endTopLevelDeclaration(f)
   parseTopLevelDeclarationImpl(;, Instance of 'DirectiveContext')
     parseMetadataStar(;)
@@ -1906,7 +1906,7 @@
           reportRecoverableError(i, Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}])
             listener: handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], i, i)
           rewriter()
-        listener: endTopLevelFields(null, null, null, null, 1, f, ;)
+        listener: endTopLevelFields(null, null, null, null, null, 1, f, ;)
   listener: endTopLevelDeclaration(l)
   parseTopLevelDeclarationImpl(;, Instance of 'DirectiveContext')
     parseMetadataStar(;)
@@ -1926,7 +1926,7 @@
           reportRecoverableError(e, Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}])
             listener: handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], e, e)
           rewriter()
-        listener: endTopLevelFields(null, null, null, null, 1, l, ;)
+        listener: endTopLevelFields(null, null, null, null, null, 1, l, ;)
   listener: endTopLevelDeclaration(i)
   parseTopLevelDeclarationImpl(;, Instance of 'DirectiveContext')
     parseMetadataStar(;)
@@ -1946,7 +1946,7 @@
           reportRecoverableError(s, Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}])
             listener: handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], s, s)
           rewriter()
-        listener: endTopLevelFields(null, null, null, null, 1, i, ;)
+        listener: endTopLevelFields(null, null, null, null, null, 1, i, ;)
   listener: endTopLevelDeclaration(s)
   parseTopLevelDeclarationImpl(;, Instance of 'DirectiveContext')
     parseMetadataStar(;)
@@ -1966,7 +1966,7 @@
           reportRecoverableError(a, Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}])
             listener: handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], a, a)
           rewriter()
-        listener: endTopLevelFields(null, null, null, null, 1, s, ;)
+        listener: endTopLevelFields(null, null, null, null, null, 1, s, ;)
   listener: endTopLevelDeclaration(v)
   parseTopLevelDeclarationImpl(;, Instance of 'DirectiveContext')
     parseMetadataStar(;)
@@ -1986,7 +1986,7 @@
           reportRecoverableError(e, Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}])
             listener: handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], e, e)
           rewriter()
-        listener: endTopLevelFields(null, null, null, null, 1, v, ;)
+        listener: endTopLevelFields(null, null, null, null, null, 1, v, ;)
   listener: endTopLevelDeclaration(d)
   parseTopLevelDeclarationImpl(;, Instance of 'DirectiveContext')
     parseMetadataStar(;)
@@ -2006,7 +2006,7 @@
           reportRecoverableError(a, Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}])
             listener: handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], a, a)
           rewriter()
-        listener: endTopLevelFields(null, null, null, null, 1, d, ;)
+        listener: endTopLevelFields(null, null, null, null, null, 1, d, ;)
   listener: endTopLevelDeclaration(s)
   parseTopLevelDeclarationImpl(;, Instance of 'DirectiveContext')
     parseMetadataStar(;)
@@ -2026,7 +2026,7 @@
           reportRecoverableError(U, Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}])
             listener: handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], U, U)
           rewriter()
-        listener: endTopLevelFields(null, null, null, null, 1, s, ;)
+        listener: endTopLevelFields(null, null, null, null, null, 1, s, ;)
   listener: endTopLevelDeclaration(T)
   parseTopLevelDeclarationImpl(;, Instance of 'DirectiveContext')
     parseMetadataStar(;)
@@ -2046,7 +2046,7 @@
           reportRecoverableError(F, Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}])
             listener: handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], F, F)
           rewriter()
-        listener: endTopLevelFields(null, null, null, null, 1, T, ;)
+        listener: endTopLevelFields(null, null, null, null, null, 1, T, ;)
   listener: endTopLevelDeclaration(-)
   parseTopLevelDeclarationImpl(;, Instance of 'DirectiveContext')
     parseMetadataStar(;)
@@ -2142,7 +2142,7 @@
           reportRecoverableError(a, Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}])
             listener: handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], a, a)
           rewriter()
-        listener: endTopLevelFields(null, null, null, null, 1, m, ;)
+        listener: endTopLevelFields(null, null, null, null, null, 1, m, ;)
   listener: endTopLevelDeclaration(i)
   parseTopLevelDeclarationImpl(;, Instance of 'DirectiveContext')
     parseMetadataStar(;)
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 9b87e15..aa10717 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
@@ -63,7 +63,7 @@
     beginFieldInitializer(=)
       handleLiteralInt(42)
     endFieldInitializer(=, ;)
-  endTopLevelFields(null, null, null, null, 1, y, ;)
+  endTopLevelFields(null, null, null, null, null, 1, y, ;)
 endTopLevelDeclaration(x)
 beginMetadataStar(x)
 endMetadataStar(0)
@@ -95,7 +95,7 @@
   beginFieldInitializer(=)
     handleLiteralBool(true)
   endFieldInitializer(=, ;)
-endTopLevelFields(null, null, null, null, 1, z, ;)
+endTopLevelFields(null, null, null, null, null, 1, z, ;)
 endTopLevelDeclaration(void)
 beginMetadataStar(void)
 endMetadataStar(0)
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 5a9bafc..10197c8 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
@@ -69,7 +69,7 @@
                   parseLiteralInt(=)
                     listener: handleLiteralInt(42)
           listener: endFieldInitializer(=, ;)
-        listener: endTopLevelFields(null, null, null, null, 1, y, ;)
+        listener: endTopLevelFields(null, null, null, null, null, 1, y, ;)
   listener: endTopLevelDeclaration(x)
   parseTopLevelDeclarationImpl(;, Instance of 'DirectiveContext')
     parseMetadataStar(;)
@@ -138,7 +138,7 @@
                   parseLiteralBool(=)
                     listener: handleLiteralBool(true)
           listener: endFieldInitializer(=, ;)
-        listener: endTopLevelFields(null, null, null, null, 1, z, ;)
+        listener: endTopLevelFields(null, null, null, null, null, 1, z, ;)
   listener: endTopLevelDeclaration(void)
   parseTopLevelDeclarationImpl(;, Instance of 'DirectiveContext')
     parseMetadataStar(;)
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 3b9db40..12a9f7e 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
@@ -21,7 +21,7 @@
           beginFieldInitializer(=)
             handleLiteralInt(42)
           endFieldInitializer(=, ;)
-        endClassFields(null, null, null, null, 1, int, ;)
+        endClassFields(null, null, null, null, null, null, 1, int, ;)
       endMember()
       beginMetadataStar(int)
       endMetadataStar(0)
@@ -33,7 +33,7 @@
         beginFieldInitializer(=)
           handleLiteralInt(42)
         endFieldInitializer(=, ;)
-      endClassFields(null, null, null, null, 1, int, ;)
+      endClassFields(null, null, null, null, null, null, 1, int, ;)
     endMember()
     beginMetadataStar(int)
     endMetadataStar(0)
@@ -45,7 +45,7 @@
       beginFieldInitializer(=)
         handleLiteralInt(42)
       endFieldInitializer(=, ;)
-    endClassFields(null, null, null, null, 1, int, ;)
+    endClassFields(null, null, null, null, null, null, 1, int, ;)
   endMember()
   beginMetadataStar(int)
   endMetadataStar(0)
@@ -57,7 +57,7 @@
     beginFieldInitializer(=)
       handleLiteralInt(42)
     endFieldInitializer(=, ;)
-  endClassFields(null, null, null, null, 1, int, ;)
+  endClassFields(null, null, null, null, null, null, 1, int, ;)
 endMember()
 beginMetadataStar(int)
 endMetadataStar(0)
@@ -69,7 +69,7 @@
   beginFieldInitializer(=)
     handleLiteralInt(42)
   endFieldInitializer(=, ;)
-endClassFields(null, null, null, null, 1, int, ;)
+endClassFields(null, null, null, null, null, null, 1, int, ;)
 endMember()
 beginMetadataStar(int)
 endMetadataStar(0)
@@ -81,7 +81,7 @@
 beginFieldInitializer(=)
   handleLiteralInt(42)
 endFieldInitializer(=, ;)
-endClassFields(null, null, null, null, 1, int, ;)
+endClassFields(null, null, null, null, null, null, 1, int, ;)
 endMember()
 beginMetadataStar(int)
 endMetadataStar(0)
@@ -93,7 +93,7 @@
 beginFieldInitializer(=)
 handleLiteralInt(42)
 endFieldInitializer(=, ;)
-endClassFields(null, null, null, null, 1, int, ;)
+endClassFields(null, null, null, null, null, null, 1, int, ;)
 endMember()
 beginMetadataStar(int)
 endMetadataStar(0)
@@ -105,7 +105,7 @@
 beginFieldInitializer(=)
 handleLiteralInt(42)
 endFieldInitializer(=, ;)
-endClassFields(null, null, null, null, 1, int, ;)
+endClassFields(null, null, null, null, null, null, 1, int, ;)
 endMember()
 beginMetadataStar(int)
 endMetadataStar(0)
@@ -117,7 +117,7 @@
 beginFieldInitializer(=)
 handleLiteralInt(42)
 endFieldInitializer(=, ;)
-endClassFields(null, null, null, null, 1, int, ;)
+endClassFields(null, null, null, null, null, null, 1, int, ;)
 endMember()
 beginMetadataStar(int)
 endMetadataStar(0)
@@ -129,7 +129,7 @@
 beginFieldInitializer(=)
 handleLiteralInt(42)
 endFieldInitializer(=, ;)
-endClassFields(null, null, null, null, 1, int, ;)
+endClassFields(null, null, null, null, null, null, 1, int, ;)
 endMember()
 beginMetadataStar(int)
 endMetadataStar(0)
@@ -141,7 +141,7 @@
 beginFieldInitializer(=)
 handleLiteralInt(42)
 endFieldInitializer(=, ;)
-endClassFields(null, null, null, null, 1, int, ;)
+endClassFields(null, null, null, null, null, null, 1, int, ;)
 endMember()
 beginMetadataStar(int)
 endMetadataStar(0)
@@ -153,7 +153,7 @@
 beginFieldInitializer(=)
 handleLiteralInt(42)
 endFieldInitializer(=, ;)
-endClassFields(null, null, null, null, 1, int, ;)
+endClassFields(null, null, null, null, null, null, 1, int, ;)
 endMember()
 beginMetadataStar(int)
 endMetadataStar(0)
@@ -165,7 +165,7 @@
 beginFieldInitializer(=)
 handleLiteralInt(42)
 endFieldInitializer(=, ;)
-endClassFields(null, null, null, null, 1, int, ;)
+endClassFields(null, null, null, null, null, null, 1, int, ;)
 endMember()
 beginMetadataStar(int)
 endMetadataStar(0)
@@ -177,7 +177,7 @@
 beginFieldInitializer(=)
 handleLiteralInt(42)
 endFieldInitializer(=, ;)
-endClassFields(null, null, null, null, 1, int, ;)
+endClassFields(null, null, null, null, null, null, 1, int, ;)
 endMember()
 beginMetadataStar(int)
 endMetadataStar(0)
@@ -189,7 +189,7 @@
 beginFieldInitializer(=)
 handleLiteralInt(42)
 endFieldInitializer(=, ;)
-endClassFields(null, null, null, null, 1, int, ;)
+endClassFields(null, null, null, null, null, null, 1, int, ;)
 endMember()
 beginMetadataStar(int)
 endMetadataStar(0)
@@ -201,7 +201,7 @@
 beginFieldInitializer(=)
 handleLiteralInt(42)
 endFieldInitializer(=, ;)
-endClassFields(null, null, null, null, 1, int, ;)
+endClassFields(null, null, null, null, null, null, 1, int, ;)
 endMember()
 beginMetadataStar(int)
 endMetadataStar(0)
@@ -213,7 +213,7 @@
 beginFieldInitializer(=)
 handleLiteralInt(42)
 endFieldInitializer(=, ;)
-endClassFields(null, null, null, null, 1, int, ;)
+endClassFields(null, null, null, null, null, null, 1, int, ;)
 endMember()
 beginMetadataStar(int)
 endMetadataStar(0)
@@ -225,7 +225,7 @@
 beginFieldInitializer(=)
 handleLiteralInt(42)
 endFieldInitializer(=, ;)
-endClassFields(null, null, null, null, 1, int, ;)
+endClassFields(null, null, null, null, null, null, 1, int, ;)
 endMember()
 beginMetadataStar(int)
 endMetadataStar(0)
@@ -237,7 +237,7 @@
 beginFieldInitializer(=)
 handleLiteralInt(42)
 endFieldInitializer(=, ;)
-endClassFields(null, null, null, null, 1, int, ;)
+endClassFields(null, null, null, null, null, null, 1, int, ;)
 endMember()
 beginMetadataStar(int)
 endMetadataStar(0)
@@ -249,7 +249,7 @@
 beginFieldInitializer(=)
 handleLiteralInt(42)
 endFieldInitializer(=, ;)
-endClassFields(null, null, null, null, 1, int, ;)
+endClassFields(null, null, null, null, null, null, 1, int, ;)
 endMember()
 endClassOrMixinBody(DeclarationKind.Class, 20, {, })
 endClassDeclaration(class, })
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 4f0fae4..5a37e7f 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
@@ -47,7 +47,7 @@
                           parseLiteralInt(=)
                             listener: handleLiteralInt(42)
                   listener: endFieldInitializer(=, ;)
-                listener: endClassFields(null, null, null, null, 1, int, ;)
+                listener: endClassFields(null, null, null, null, null, null, 1, int, ;)
               listener: endMember()
             notEofOrValue(}, int)
             parseClassOrMixinOrExtensionMemberImpl(;, DeclarationKind.Class, WrapperClass)
@@ -70,7 +70,7 @@
                           parseLiteralInt(=)
                             listener: handleLiteralInt(42)
                   listener: endFieldInitializer(=, ;)
-                listener: endClassFields(null, null, null, null, 1, int, ;)
+                listener: endClassFields(null, null, null, null, null, null, 1, int, ;)
               listener: endMember()
             notEofOrValue(}, int)
             parseClassOrMixinOrExtensionMemberImpl(;, DeclarationKind.Class, WrapperClass)
@@ -93,7 +93,7 @@
                           parseLiteralInt(=)
                             listener: handleLiteralInt(42)
                   listener: endFieldInitializer(=, ;)
-                listener: endClassFields(null, null, null, null, 1, int, ;)
+                listener: endClassFields(null, null, null, null, null, null, 1, int, ;)
               listener: endMember()
             notEofOrValue(}, int)
             parseClassOrMixinOrExtensionMemberImpl(;, DeclarationKind.Class, WrapperClass)
@@ -116,7 +116,7 @@
                           parseLiteralInt(=)
                             listener: handleLiteralInt(42)
                   listener: endFieldInitializer(=, ;)
-                listener: endClassFields(null, null, null, null, 1, int, ;)
+                listener: endClassFields(null, null, null, null, null, null, 1, int, ;)
               listener: endMember()
             notEofOrValue(}, int)
             parseClassOrMixinOrExtensionMemberImpl(;, DeclarationKind.Class, WrapperClass)
@@ -139,7 +139,7 @@
                           parseLiteralInt(=)
                             listener: handleLiteralInt(42)
                   listener: endFieldInitializer(=, ;)
-                listener: endClassFields(null, null, null, null, 1, int, ;)
+                listener: endClassFields(null, null, null, null, null, null, 1, int, ;)
               listener: endMember()
             notEofOrValue(}, int)
             parseClassOrMixinOrExtensionMemberImpl(;, DeclarationKind.Class, WrapperClass)
@@ -162,7 +162,7 @@
                           parseLiteralInt(=)
                             listener: handleLiteralInt(42)
                   listener: endFieldInitializer(=, ;)
-                listener: endClassFields(null, null, null, null, 1, int, ;)
+                listener: endClassFields(null, null, null, null, null, null, 1, int, ;)
               listener: endMember()
             notEofOrValue(}, int)
             parseClassOrMixinOrExtensionMemberImpl(;, DeclarationKind.Class, WrapperClass)
@@ -185,7 +185,7 @@
                           parseLiteralInt(=)
                             listener: handleLiteralInt(42)
                   listener: endFieldInitializer(=, ;)
-                listener: endClassFields(null, null, null, null, 1, int, ;)
+                listener: endClassFields(null, null, null, null, null, null, 1, int, ;)
               listener: endMember()
             notEofOrValue(}, int)
             parseClassOrMixinOrExtensionMemberImpl(;, DeclarationKind.Class, WrapperClass)
@@ -208,7 +208,7 @@
                           parseLiteralInt(=)
                             listener: handleLiteralInt(42)
                   listener: endFieldInitializer(=, ;)
-                listener: endClassFields(null, null, null, null, 1, int, ;)
+                listener: endClassFields(null, null, null, null, null, null, 1, int, ;)
               listener: endMember()
             notEofOrValue(}, int)
             parseClassOrMixinOrExtensionMemberImpl(;, DeclarationKind.Class, WrapperClass)
@@ -231,7 +231,7 @@
                           parseLiteralInt(=)
                             listener: handleLiteralInt(42)
                   listener: endFieldInitializer(=, ;)
-                listener: endClassFields(null, null, null, null, 1, int, ;)
+                listener: endClassFields(null, null, null, null, null, null, 1, int, ;)
               listener: endMember()
             notEofOrValue(}, int)
             parseClassOrMixinOrExtensionMemberImpl(;, DeclarationKind.Class, WrapperClass)
@@ -255,7 +255,7 @@
                           parseLiteralInt(=)
                             listener: handleLiteralInt(42)
                   listener: endFieldInitializer(=, ;)
-                listener: endClassFields(null, null, null, null, 1, int, ;)
+                listener: endClassFields(null, null, null, null, null, null, 1, int, ;)
               listener: endMember()
             notEofOrValue(}, int)
             parseClassOrMixinOrExtensionMemberImpl(;, DeclarationKind.Class, WrapperClass)
@@ -278,7 +278,7 @@
                           parseLiteralInt(=)
                             listener: handleLiteralInt(42)
                   listener: endFieldInitializer(=, ;)
-                listener: endClassFields(null, null, null, null, 1, int, ;)
+                listener: endClassFields(null, null, null, null, null, null, 1, int, ;)
               listener: endMember()
             notEofOrValue(}, int)
             parseClassOrMixinOrExtensionMemberImpl(;, DeclarationKind.Class, WrapperClass)
@@ -301,7 +301,7 @@
                           parseLiteralInt(=)
                             listener: handleLiteralInt(42)
                   listener: endFieldInitializer(=, ;)
-                listener: endClassFields(null, null, null, null, 1, int, ;)
+                listener: endClassFields(null, null, null, null, null, null, 1, int, ;)
               listener: endMember()
             notEofOrValue(}, int)
             parseClassOrMixinOrExtensionMemberImpl(;, DeclarationKind.Class, WrapperClass)
@@ -324,7 +324,7 @@
                           parseLiteralInt(=)
                             listener: handleLiteralInt(42)
                   listener: endFieldInitializer(=, ;)
-                listener: endClassFields(null, null, null, null, 1, int, ;)
+                listener: endClassFields(null, null, null, null, null, null, 1, int, ;)
               listener: endMember()
             notEofOrValue(}, int)
             parseClassOrMixinOrExtensionMemberImpl(;, DeclarationKind.Class, WrapperClass)
@@ -347,7 +347,7 @@
                           parseLiteralInt(=)
                             listener: handleLiteralInt(42)
                   listener: endFieldInitializer(=, ;)
-                listener: endClassFields(null, null, null, null, 1, int, ;)
+                listener: endClassFields(null, null, null, null, null, null, 1, int, ;)
               listener: endMember()
             notEofOrValue(}, int)
             parseClassOrMixinOrExtensionMemberImpl(;, DeclarationKind.Class, WrapperClass)
@@ -371,7 +371,7 @@
                           parseLiteralInt(=)
                             listener: handleLiteralInt(42)
                   listener: endFieldInitializer(=, ;)
-                listener: endClassFields(null, null, null, null, 1, int, ;)
+                listener: endClassFields(null, null, null, null, null, null, 1, int, ;)
               listener: endMember()
             notEofOrValue(}, int)
             parseClassOrMixinOrExtensionMemberImpl(;, DeclarationKind.Class, WrapperClass)
@@ -394,7 +394,7 @@
                           parseLiteralInt(=)
                             listener: handleLiteralInt(42)
                   listener: endFieldInitializer(=, ;)
-                listener: endClassFields(null, null, null, null, 1, int, ;)
+                listener: endClassFields(null, null, null, null, null, null, 1, int, ;)
               listener: endMember()
             notEofOrValue(}, int)
             parseClassOrMixinOrExtensionMemberImpl(;, DeclarationKind.Class, WrapperClass)
@@ -417,7 +417,7 @@
                           parseLiteralInt(=)
                             listener: handleLiteralInt(42)
                   listener: endFieldInitializer(=, ;)
-                listener: endClassFields(null, null, null, null, 1, int, ;)
+                listener: endClassFields(null, null, null, null, null, null, 1, int, ;)
               listener: endMember()
             notEofOrValue(}, int)
             parseClassOrMixinOrExtensionMemberImpl(;, DeclarationKind.Class, WrapperClass)
@@ -441,7 +441,7 @@
                           parseLiteralInt(=)
                             listener: handleLiteralInt(42)
                   listener: endFieldInitializer(=, ;)
-                listener: endClassFields(null, null, null, null, 1, int, ;)
+                listener: endClassFields(null, null, null, null, null, null, 1, int, ;)
               listener: endMember()
             notEofOrValue(}, int)
             parseClassOrMixinOrExtensionMemberImpl(;, DeclarationKind.Class, WrapperClass)
@@ -464,7 +464,7 @@
                           parseLiteralInt(=)
                             listener: handleLiteralInt(42)
                   listener: endFieldInitializer(=, ;)
-                listener: endClassFields(null, null, null, null, 1, int, ;)
+                listener: endClassFields(null, null, null, null, null, null, 1, int, ;)
               listener: endMember()
             notEofOrValue(}, int)
             parseClassOrMixinOrExtensionMemberImpl(;, DeclarationKind.Class, WrapperClass)
@@ -487,7 +487,7 @@
                           parseLiteralInt(=)
                             listener: handleLiteralInt(42)
                   listener: endFieldInitializer(=, ;)
-                listener: endClassFields(null, null, null, null, 1, int, ;)
+                listener: endClassFields(null, null, null, null, null, null, 1, int, ;)
               listener: endMember()
             notEofOrValue(}, })
             listener: endClassOrMixinBody(DeclarationKind.Class, 20, {, })
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 77809be..5276e05 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
@@ -9,7 +9,7 @@
     beginFieldInitializer(=)
       handleLiteralInt(42)
     endFieldInitializer(=, ;)
-  endTopLevelFields(null, null, null, null, 1, int, ;)
+  endTopLevelFields(null, null, null, null, null, 1, int, ;)
 endTopLevelDeclaration(int)
 beginMetadataStar(int)
 endMetadataStar(0)
@@ -21,7 +21,7 @@
   beginFieldInitializer(=)
     handleLiteralInt(42)
   endFieldInitializer(=, ;)
-endTopLevelFields(null, null, null, null, 1, int, ;)
+endTopLevelFields(null, null, null, null, null, 1, int, ;)
 endTopLevelDeclaration(int)
 beginMetadataStar(int)
 endMetadataStar(0)
@@ -33,7 +33,7 @@
 beginFieldInitializer(=)
   handleLiteralInt(42)
 endFieldInitializer(=, ;)
-endTopLevelFields(null, null, null, null, 1, int, ;)
+endTopLevelFields(null, null, null, null, null, 1, int, ;)
 endTopLevelDeclaration(int)
 beginMetadataStar(int)
 endMetadataStar(0)
@@ -45,7 +45,7 @@
 beginFieldInitializer(=)
 handleLiteralInt(42)
 endFieldInitializer(=, ;)
-endTopLevelFields(null, null, null, null, 1, int, ;)
+endTopLevelFields(null, null, null, null, null, 1, int, ;)
 endTopLevelDeclaration(int)
 beginMetadataStar(int)
 endMetadataStar(0)
@@ -57,7 +57,7 @@
 beginFieldInitializer(=)
 handleLiteralInt(42)
 endFieldInitializer(=, ;)
-endTopLevelFields(null, null, null, null, 1, int, ;)
+endTopLevelFields(null, null, null, null, null, 1, int, ;)
 endTopLevelDeclaration(int)
 beginMetadataStar(int)
 endMetadataStar(0)
@@ -69,7 +69,7 @@
 beginFieldInitializer(=)
 handleLiteralInt(42)
 endFieldInitializer(=, ;)
-endTopLevelFields(null, null, null, null, 1, int, ;)
+endTopLevelFields(null, null, null, null, null, 1, int, ;)
 endTopLevelDeclaration(int)
 beginMetadataStar(int)
 endMetadataStar(0)
@@ -81,7 +81,7 @@
 beginFieldInitializer(=)
 handleLiteralInt(42)
 endFieldInitializer(=, ;)
-endTopLevelFields(null, null, null, null, 1, int, ;)
+endTopLevelFields(null, null, null, null, null, 1, int, ;)
 endTopLevelDeclaration(int)
 beginMetadataStar(int)
 endMetadataStar(0)
@@ -93,7 +93,7 @@
 beginFieldInitializer(=)
 handleLiteralInt(42)
 endFieldInitializer(=, ;)
-endTopLevelFields(null, null, null, null, 1, int, ;)
+endTopLevelFields(null, null, null, null, null, 1, int, ;)
 endTopLevelDeclaration(int)
 beginMetadataStar(int)
 endMetadataStar(0)
@@ -105,7 +105,7 @@
 beginFieldInitializer(=)
 handleLiteralInt(42)
 endFieldInitializer(=, ;)
-endTopLevelFields(null, null, null, null, 1, int, ;)
+endTopLevelFields(null, null, null, null, null, 1, int, ;)
 endTopLevelDeclaration(int)
 beginMetadataStar(int)
 endMetadataStar(0)
@@ -117,7 +117,7 @@
 beginFieldInitializer(=)
 handleLiteralInt(42)
 endFieldInitializer(=, ;)
-endTopLevelFields(null, null, null, null, 1, int, ;)
+endTopLevelFields(null, null, null, null, null, 1, int, ;)
 endTopLevelDeclaration(int)
 beginMetadataStar(int)
 endMetadataStar(0)
@@ -129,7 +129,7 @@
 beginFieldInitializer(=)
 handleLiteralInt(42)
 endFieldInitializer(=, ;)
-endTopLevelFields(null, null, null, null, 1, int, ;)
+endTopLevelFields(null, null, null, null, null, 1, int, ;)
 endTopLevelDeclaration(int)
 beginMetadataStar(int)
 endMetadataStar(0)
@@ -141,7 +141,7 @@
 beginFieldInitializer(=)
 handleLiteralInt(42)
 endFieldInitializer(=, ;)
-endTopLevelFields(null, null, null, null, 1, int, ;)
+endTopLevelFields(null, null, null, null, null, 1, int, ;)
 endTopLevelDeclaration(int)
 beginMetadataStar(int)
 endMetadataStar(0)
@@ -153,7 +153,7 @@
 beginFieldInitializer(=)
 handleLiteralInt(42)
 endFieldInitializer(=, ;)
-endTopLevelFields(null, null, null, null, 1, int, ;)
+endTopLevelFields(null, null, null, null, null, 1, int, ;)
 endTopLevelDeclaration(int)
 beginMetadataStar(int)
 endMetadataStar(0)
@@ -165,7 +165,7 @@
 beginFieldInitializer(=)
 handleLiteralInt(42)
 endFieldInitializer(=, ;)
-endTopLevelFields(null, null, null, null, 1, int, ;)
+endTopLevelFields(null, null, null, null, null, 1, int, ;)
 endTopLevelDeclaration(int)
 beginMetadataStar(int)
 endMetadataStar(0)
@@ -177,7 +177,7 @@
 beginFieldInitializer(=)
 handleLiteralInt(42)
 endFieldInitializer(=, ;)
-endTopLevelFields(null, null, null, null, 1, int, ;)
+endTopLevelFields(null, null, null, null, null, 1, int, ;)
 endTopLevelDeclaration(int)
 beginMetadataStar(int)
 endMetadataStar(0)
@@ -189,7 +189,7 @@
 beginFieldInitializer(=)
 handleLiteralInt(42)
 endFieldInitializer(=, ;)
-endTopLevelFields(null, null, null, null, 1, int, ;)
+endTopLevelFields(null, null, null, null, null, 1, int, ;)
 endTopLevelDeclaration(int)
 beginMetadataStar(int)
 endMetadataStar(0)
@@ -201,7 +201,7 @@
 beginFieldInitializer(=)
 handleLiteralInt(42)
 endFieldInitializer(=, ;)
-endTopLevelFields(null, null, null, null, 1, int, ;)
+endTopLevelFields(null, null, null, null, null, 1, int, ;)
 endTopLevelDeclaration(int)
 beginMetadataStar(int)
 endMetadataStar(0)
@@ -213,7 +213,7 @@
 beginFieldInitializer(=)
 handleLiteralInt(42)
 endFieldInitializer(=, ;)
-endTopLevelFields(null, null, null, null, 1, int, ;)
+endTopLevelFields(null, null, null, null, null, 1, int, ;)
 endTopLevelDeclaration(int)
 beginMetadataStar(int)
 endMetadataStar(0)
@@ -225,7 +225,7 @@
 beginFieldInitializer(=)
 handleLiteralInt(42)
 endFieldInitializer(=, ;)
-endTopLevelFields(null, null, null, null, 1, int, ;)
+endTopLevelFields(null, null, null, null, null, 1, int, ;)
 endTopLevelDeclaration(int)
 beginMetadataStar(int)
 endMetadataStar(0)
@@ -237,6 +237,6 @@
 beginFieldInitializer(=)
 handleLiteralInt(42)
 endFieldInitializer(=, ;)
-endTopLevelFields(null, null, null, null, 1, int, ;)
+endTopLevelFields(null, null, null, null, null, 1, int, ;)
 endTopLevelDeclaration()
 endCompilationUnit(20, )
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 4ab6b44..bc882c3 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
@@ -23,7 +23,7 @@
                   parseLiteralInt(=)
                     listener: handleLiteralInt(42)
           listener: endFieldInitializer(=, ;)
-        listener: endTopLevelFields(null, null, null, null, 1, int, ;)
+        listener: endTopLevelFields(null, null, null, null, null, 1, int, ;)
   listener: endTopLevelDeclaration(int)
   parseTopLevelDeclarationImpl(;, Instance of 'DirectiveContext')
     parseMetadataStar(;)
@@ -46,7 +46,7 @@
                   parseLiteralInt(=)
                     listener: handleLiteralInt(42)
           listener: endFieldInitializer(=, ;)
-        listener: endTopLevelFields(null, null, null, null, 1, int, ;)
+        listener: endTopLevelFields(null, null, null, null, null, 1, int, ;)
   listener: endTopLevelDeclaration(int)
   parseTopLevelDeclarationImpl(;, Instance of 'DirectiveContext')
     parseMetadataStar(;)
@@ -69,7 +69,7 @@
                   parseLiteralInt(=)
                     listener: handleLiteralInt(42)
           listener: endFieldInitializer(=, ;)
-        listener: endTopLevelFields(null, null, null, null, 1, int, ;)
+        listener: endTopLevelFields(null, null, null, null, null, 1, int, ;)
   listener: endTopLevelDeclaration(int)
   parseTopLevelDeclarationImpl(;, Instance of 'DirectiveContext')
     parseMetadataStar(;)
@@ -92,7 +92,7 @@
                   parseLiteralInt(=)
                     listener: handleLiteralInt(42)
           listener: endFieldInitializer(=, ;)
-        listener: endTopLevelFields(null, null, null, null, 1, int, ;)
+        listener: endTopLevelFields(null, null, null, null, null, 1, int, ;)
   listener: endTopLevelDeclaration(int)
   parseTopLevelDeclarationImpl(;, Instance of 'DirectiveContext')
     parseMetadataStar(;)
@@ -115,7 +115,7 @@
                   parseLiteralInt(=)
                     listener: handleLiteralInt(42)
           listener: endFieldInitializer(=, ;)
-        listener: endTopLevelFields(null, null, null, null, 1, int, ;)
+        listener: endTopLevelFields(null, null, null, null, null, 1, int, ;)
   listener: endTopLevelDeclaration(int)
   parseTopLevelDeclarationImpl(;, Instance of 'DirectiveContext')
     parseMetadataStar(;)
@@ -138,7 +138,7 @@
                   parseLiteralInt(=)
                     listener: handleLiteralInt(42)
           listener: endFieldInitializer(=, ;)
-        listener: endTopLevelFields(null, null, null, null, 1, int, ;)
+        listener: endTopLevelFields(null, null, null, null, null, 1, int, ;)
   listener: endTopLevelDeclaration(int)
   parseTopLevelDeclarationImpl(;, Instance of 'DirectiveContext')
     parseMetadataStar(;)
@@ -161,7 +161,7 @@
                   parseLiteralInt(=)
                     listener: handleLiteralInt(42)
           listener: endFieldInitializer(=, ;)
-        listener: endTopLevelFields(null, null, null, null, 1, int, ;)
+        listener: endTopLevelFields(null, null, null, null, null, 1, int, ;)
   listener: endTopLevelDeclaration(int)
   parseTopLevelDeclarationImpl(;, Instance of 'DirectiveContext')
     parseMetadataStar(;)
@@ -184,7 +184,7 @@
                   parseLiteralInt(=)
                     listener: handleLiteralInt(42)
           listener: endFieldInitializer(=, ;)
-        listener: endTopLevelFields(null, null, null, null, 1, int, ;)
+        listener: endTopLevelFields(null, null, null, null, null, 1, int, ;)
   listener: endTopLevelDeclaration(int)
   parseTopLevelDeclarationImpl(;, Instance of 'DirectiveContext')
     parseMetadataStar(;)
@@ -207,7 +207,7 @@
                   parseLiteralInt(=)
                     listener: handleLiteralInt(42)
           listener: endFieldInitializer(=, ;)
-        listener: endTopLevelFields(null, null, null, null, 1, int, ;)
+        listener: endTopLevelFields(null, null, null, null, null, 1, int, ;)
   listener: endTopLevelDeclaration(int)
   parseTopLevelDeclarationImpl(;, Instance of 'DirectiveContext')
     parseMetadataStar(;)
@@ -230,7 +230,7 @@
                   parseLiteralInt(=)
                     listener: handleLiteralInt(42)
           listener: endFieldInitializer(=, ;)
-        listener: endTopLevelFields(null, null, null, null, 1, int, ;)
+        listener: endTopLevelFields(null, null, null, null, null, 1, int, ;)
   listener: endTopLevelDeclaration(int)
   parseTopLevelDeclarationImpl(;, Instance of 'DirectiveContext')
     parseMetadataStar(;)
@@ -253,7 +253,7 @@
                   parseLiteralInt(=)
                     listener: handleLiteralInt(42)
           listener: endFieldInitializer(=, ;)
-        listener: endTopLevelFields(null, null, null, null, 1, int, ;)
+        listener: endTopLevelFields(null, null, null, null, null, 1, int, ;)
   listener: endTopLevelDeclaration(int)
   parseTopLevelDeclarationImpl(;, Instance of 'DirectiveContext')
     parseMetadataStar(;)
@@ -276,7 +276,7 @@
                   parseLiteralInt(=)
                     listener: handleLiteralInt(42)
           listener: endFieldInitializer(=, ;)
-        listener: endTopLevelFields(null, null, null, null, 1, int, ;)
+        listener: endTopLevelFields(null, null, null, null, null, 1, int, ;)
   listener: endTopLevelDeclaration(int)
   parseTopLevelDeclarationImpl(;, Instance of 'DirectiveContext')
     parseMetadataStar(;)
@@ -299,7 +299,7 @@
                   parseLiteralInt(=)
                     listener: handleLiteralInt(42)
           listener: endFieldInitializer(=, ;)
-        listener: endTopLevelFields(null, null, null, null, 1, int, ;)
+        listener: endTopLevelFields(null, null, null, null, null, 1, int, ;)
   listener: endTopLevelDeclaration(int)
   parseTopLevelDeclarationImpl(;, Instance of 'DirectiveContext')
     parseMetadataStar(;)
@@ -322,7 +322,7 @@
                   parseLiteralInt(=)
                     listener: handleLiteralInt(42)
           listener: endFieldInitializer(=, ;)
-        listener: endTopLevelFields(null, null, null, null, 1, int, ;)
+        listener: endTopLevelFields(null, null, null, null, null, 1, int, ;)
   listener: endTopLevelDeclaration(int)
   parseTopLevelDeclarationImpl(;, Instance of 'DirectiveContext')
     parseMetadataStar(;)
@@ -345,7 +345,7 @@
                   parseLiteralInt(=)
                     listener: handleLiteralInt(42)
           listener: endFieldInitializer(=, ;)
-        listener: endTopLevelFields(null, null, null, null, 1, int, ;)
+        listener: endTopLevelFields(null, null, null, null, null, 1, int, ;)
   listener: endTopLevelDeclaration(int)
   parseTopLevelDeclarationImpl(;, Instance of 'DirectiveContext')
     parseMetadataStar(;)
@@ -368,7 +368,7 @@
                   parseLiteralInt(=)
                     listener: handleLiteralInt(42)
           listener: endFieldInitializer(=, ;)
-        listener: endTopLevelFields(null, null, null, null, 1, int, ;)
+        listener: endTopLevelFields(null, null, null, null, null, 1, int, ;)
   listener: endTopLevelDeclaration(int)
   parseTopLevelDeclarationImpl(;, Instance of 'DirectiveContext')
     parseMetadataStar(;)
@@ -391,7 +391,7 @@
                   parseLiteralInt(=)
                     listener: handleLiteralInt(42)
           listener: endFieldInitializer(=, ;)
-        listener: endTopLevelFields(null, null, null, null, 1, int, ;)
+        listener: endTopLevelFields(null, null, null, null, null, 1, int, ;)
   listener: endTopLevelDeclaration(int)
   parseTopLevelDeclarationImpl(;, Instance of 'DirectiveContext')
     parseMetadataStar(;)
@@ -414,7 +414,7 @@
                   parseLiteralInt(=)
                     listener: handleLiteralInt(42)
           listener: endFieldInitializer(=, ;)
-        listener: endTopLevelFields(null, null, null, null, 1, int, ;)
+        listener: endTopLevelFields(null, null, null, null, null, 1, int, ;)
   listener: endTopLevelDeclaration(int)
   parseTopLevelDeclarationImpl(;, Instance of 'DirectiveContext')
     parseMetadataStar(;)
@@ -437,7 +437,7 @@
                   parseLiteralInt(=)
                     listener: handleLiteralInt(42)
           listener: endFieldInitializer(=, ;)
-        listener: endTopLevelFields(null, null, null, null, 1, int, ;)
+        listener: endTopLevelFields(null, null, null, null, null, 1, int, ;)
   listener: endTopLevelDeclaration(int)
   parseTopLevelDeclarationImpl(;, Instance of 'DirectiveContext')
     parseMetadataStar(;)
@@ -460,7 +460,7 @@
                   parseLiteralInt(=)
                     listener: handleLiteralInt(42)
           listener: endFieldInitializer(=, ;)
-        listener: endTopLevelFields(null, null, null, null, 1, int, ;)
+        listener: endTopLevelFields(null, null, null, null, null, 1, int, ;)
   listener: endTopLevelDeclaration()
   reportAllErrorTokens(int)
   listener: endCompilationUnit(20, )
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 e210455..695f582 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
@@ -822,7 +822,7 @@
 endFunctionType(Function, null)
 handleIdentifier(f1, topLevelVariableDeclaration)
 handleNoFieldInitializer(;)
-endTopLevelFields(null, null, null, null, 1, void, ;)
+endTopLevelFields(null, null, null, null, null, 1, void, ;)
 endTopLevelDeclaration(void)
 beginMetadataStar(void)
 endMetadataStar(0)
@@ -845,7 +845,7 @@
 endFunctionType(Function, null)
 handleIdentifier(f2, topLevelVariableDeclaration)
 handleNoFieldInitializer(;)
-endTopLevelFields(null, null, null, null, 1, void, ;)
+endTopLevelFields(null, null, null, null, null, 1, void, ;)
 endTopLevelDeclaration(void)
 beginMetadataStar(void)
 endMetadataStar(0)
@@ -872,7 +872,7 @@
 endFunctionType(Function, null)
 handleIdentifier(f3, topLevelVariableDeclaration)
 handleNoFieldInitializer(;)
-endTopLevelFields(null, null, null, null, 1, void, ;)
+endTopLevelFields(null, null, null, null, null, 1, void, ;)
 endTopLevelDeclaration(void)
 beginMetadataStar(void)
 endMetadataStar(0)
@@ -903,7 +903,7 @@
 endFunctionType(Function, null)
 handleIdentifier(f4, topLevelVariableDeclaration)
 handleNoFieldInitializer(;)
-endTopLevelFields(null, null, null, null, 1, void, ;)
+endTopLevelFields(null, null, null, null, null, 1, void, ;)
 endTopLevelDeclaration(void)
 beginMetadataStar(void)
 endMetadataStar(0)
@@ -934,7 +934,7 @@
 endFunctionType(Function, null)
 handleIdentifier(f5, topLevelVariableDeclaration)
 handleNoFieldInitializer(;)
-endTopLevelFields(null, null, null, null, 1, void, ;)
+endTopLevelFields(null, null, null, null, null, 1, void, ;)
 endTopLevelDeclaration(void)
 beginMetadataStar(void)
 endMetadataStar(0)
@@ -965,7 +965,7 @@
 endFunctionType(Function, null)
 handleIdentifier(f6, topLevelVariableDeclaration)
 handleNoFieldInitializer(;)
-endTopLevelFields(null, null, null, null, 1, void, ;)
+endTopLevelFields(null, null, null, null, null, 1, void, ;)
 endTopLevelDeclaration(main)
 beginMetadataStar(main)
 endMetadataStar(0)
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 b6c6730..7cb72fd 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
@@ -1161,7 +1161,7 @@
           listener: handleIdentifier(f1, topLevelVariableDeclaration)
         parseFieldInitializerOpt(f1, f1, null, null, null, null, DeclarationKind.TopLevel, null)
           listener: handleNoFieldInitializer(;)
-        listener: endTopLevelFields(null, null, null, null, 1, void, ;)
+        listener: endTopLevelFields(null, null, null, null, null, 1, void, ;)
   listener: endTopLevelDeclaration(void)
   parseTopLevelDeclarationImpl(;, Instance of 'DirectiveContext')
     parseMetadataStar(;)
@@ -1194,7 +1194,7 @@
           listener: handleIdentifier(f2, topLevelVariableDeclaration)
         parseFieldInitializerOpt(f2, f2, null, null, null, null, DeclarationKind.TopLevel, null)
           listener: handleNoFieldInitializer(;)
-        listener: endTopLevelFields(null, null, null, null, 1, void, ;)
+        listener: endTopLevelFields(null, null, null, null, null, 1, void, ;)
   listener: endTopLevelDeclaration(void)
   parseTopLevelDeclarationImpl(;, Instance of 'DirectiveContext')
     parseMetadataStar(;)
@@ -1233,7 +1233,7 @@
           listener: handleIdentifier(f3, topLevelVariableDeclaration)
         parseFieldInitializerOpt(f3, f3, null, null, null, null, DeclarationKind.TopLevel, null)
           listener: handleNoFieldInitializer(;)
-        listener: endTopLevelFields(null, null, null, null, 1, void, ;)
+        listener: endTopLevelFields(null, null, null, null, null, 1, void, ;)
   listener: endTopLevelDeclaration(void)
   parseTopLevelDeclarationImpl(;, Instance of 'DirectiveContext')
     parseMetadataStar(;)
@@ -1276,7 +1276,7 @@
           listener: handleIdentifier(f4, topLevelVariableDeclaration)
         parseFieldInitializerOpt(f4, f4, null, null, null, null, DeclarationKind.TopLevel, null)
           listener: handleNoFieldInitializer(;)
-        listener: endTopLevelFields(null, null, null, null, 1, void, ;)
+        listener: endTopLevelFields(null, null, null, null, null, 1, void, ;)
   listener: endTopLevelDeclaration(void)
   parseTopLevelDeclarationImpl(;, Instance of 'DirectiveContext')
     parseMetadataStar(;)
@@ -1319,7 +1319,7 @@
           listener: handleIdentifier(f5, topLevelVariableDeclaration)
         parseFieldInitializerOpt(f5, f5, null, null, null, null, DeclarationKind.TopLevel, null)
           listener: handleNoFieldInitializer(;)
-        listener: endTopLevelFields(null, null, null, null, 1, void, ;)
+        listener: endTopLevelFields(null, null, null, null, null, 1, void, ;)
   listener: endTopLevelDeclaration(void)
   parseTopLevelDeclarationImpl(;, Instance of 'DirectiveContext')
     parseMetadataStar(;)
@@ -1362,7 +1362,7 @@
           listener: handleIdentifier(f6, topLevelVariableDeclaration)
         parseFieldInitializerOpt(f6, f6, null, null, null, null, DeclarationKind.TopLevel, null)
           listener: handleNoFieldInitializer(;)
-        listener: endTopLevelFields(null, null, null, null, 1, void, ;)
+        listener: endTopLevelFields(null, null, null, null, null, 1, void, ;)
   listener: endTopLevelDeclaration(main)
   parseTopLevelDeclarationImpl(;, Instance of 'DirectiveContext')
     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 fbe9696..bda3eda 100644
--- a/pkg/front_end/parser_testcases/general/issue_41121.dart.expect
+++ b/pkg/front_end/parser_testcases/general/issue_41121.dart.expect
@@ -61,7 +61,7 @@
           handleType(Configuration, null)
           handleIdentifier(_configuration, fieldDeclaration)
           handleNoFieldInitializer(;)
-        endClassFields(null, null, null, null, 1, Configuration, ;)
+        endClassFields(null, null, null, null, null, null, 1, Configuration, ;)
       endMember()
       beginMetadataStar(ConfigurationService)
       endMetadataStar(0)
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 f010597..3adc87e 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
@@ -40,7 +40,7 @@
                   listener: handleIdentifier(_configuration, fieldDeclaration)
                 parseFieldInitializerOpt(_configuration, _configuration, null, null, null, null, DeclarationKind.Class, ConfigurationService)
                   listener: handleNoFieldInitializer(;)
-                listener: endClassFields(null, null, null, null, 1, Configuration, ;)
+                listener: endClassFields(null, null, null, null, null, null, 1, Configuration, ;)
               listener: endMember()
             notEofOrValue(}, ConfigurationService)
             parseClassOrMixinOrExtensionMemberImpl(;, DeclarationKind.Class, ConfigurationService)
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 65df0a7..20f0ebf 100644
--- a/pkg/front_end/parser_testcases/nnbd/issue_39858.dart.expect
+++ b/pkg/front_end/parser_testcases/nnbd/issue_39858.dart.expect
@@ -44,7 +44,7 @@
           handleNoType(late)
           handleIdentifier(x1, fieldDeclaration)
           handleNoFieldInitializer(;)
-        endClassFields(null, null, late, null, 1, late, ;)
+        endClassFields(null, null, null, null, late, null, 1, late, ;)
       endMember()
       beginMetadataStar(static)
       endMetadataStar(0)
@@ -53,7 +53,7 @@
         handleNoType(late)
         handleIdentifier(x2, fieldDeclaration)
         handleNoFieldInitializer(;)
-      endClassFields(static, null, late, null, 1, static, ;)
+      endClassFields(null, null, static, null, late, null, 1, static, ;)
     endMember()
     beginMetadataStar(covariant)
     endMetadataStar(0)
@@ -62,7 +62,7 @@
       handleNoType(late)
       handleIdentifier(x3, fieldDeclaration)
       handleNoFieldInitializer(;)
-    endClassFields(null, covariant, late, null, 1, covariant, ;)
+    endClassFields(null, null, null, covariant, late, null, 1, covariant, ;)
   endMember()
   beginMetadataStar(late)
   endMetadataStar(0)
@@ -73,7 +73,7 @@
     beginFieldInitializer(=)
       handleLiteralInt(0)
     endFieldInitializer(=, ;)
-  endClassFields(null, null, late, null, 1, late, ;)
+  endClassFields(null, null, null, null, late, null, 1, late, ;)
 endMember()
 beginMetadataStar(static)
 endMetadataStar(0)
@@ -84,7 +84,7 @@
   beginFieldInitializer(=)
     handleLiteralInt(0)
   endFieldInitializer(=, ;)
-endClassFields(static, null, late, null, 1, static, ;)
+endClassFields(null, null, static, null, late, null, 1, static, ;)
 endMember()
 beginMetadataStar(covariant)
 endMetadataStar(0)
@@ -95,7 +95,7 @@
 beginFieldInitializer(=)
   handleLiteralInt(0)
 endFieldInitializer(=, ;)
-endClassFields(null, covariant, late, null, 1, covariant, ;)
+endClassFields(null, null, null, covariant, late, null, 1, covariant, ;)
 endMember()
 endClassOrMixinBody(DeclarationKind.Class, 6, {, })
 endClassDeclaration(class, })
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 8162b63..32130fd 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
@@ -41,7 +41,7 @@
                   listener: handleIdentifier(x1, fieldDeclaration)
                 parseFieldInitializerOpt(x1, x1, late, null, null, null, DeclarationKind.Class, X)
                   listener: handleNoFieldInitializer(;)
-                listener: endClassFields(null, null, late, null, 1, late, ;)
+                listener: endClassFields(null, null, null, null, late, null, 1, late, ;)
               listener: endMember()
             notEofOrValue(}, static)
             parseClassOrMixinOrExtensionMemberImpl(;, DeclarationKind.Class, X)
@@ -58,7 +58,7 @@
                   listener: handleIdentifier(x2, fieldDeclaration)
                 parseFieldInitializerOpt(x2, x2, late, null, null, null, DeclarationKind.Class, X)
                   listener: handleNoFieldInitializer(;)
-                listener: endClassFields(static, null, late, null, 1, static, ;)
+                listener: endClassFields(null, null, static, null, late, null, 1, static, ;)
               listener: endMember()
             notEofOrValue(}, covariant)
             parseClassOrMixinOrExtensionMemberImpl(;, DeclarationKind.Class, X)
@@ -75,7 +75,7 @@
                   listener: handleIdentifier(x3, fieldDeclaration)
                 parseFieldInitializerOpt(x3, x3, late, null, null, null, DeclarationKind.Class, X)
                   listener: handleNoFieldInitializer(;)
-                listener: endClassFields(null, covariant, late, null, 1, covariant, ;)
+                listener: endClassFields(null, null, null, covariant, late, null, 1, covariant, ;)
               listener: endMember()
             notEofOrValue(}, late)
             parseClassOrMixinOrExtensionMemberImpl(;, DeclarationKind.Class, X)
@@ -99,7 +99,7 @@
                           parseLiteralInt(=)
                             listener: handleLiteralInt(0)
                   listener: endFieldInitializer(=, ;)
-                listener: endClassFields(null, null, late, null, 1, late, ;)
+                listener: endClassFields(null, null, null, null, late, null, 1, late, ;)
               listener: endMember()
             notEofOrValue(}, static)
             parseClassOrMixinOrExtensionMemberImpl(;, DeclarationKind.Class, X)
@@ -123,7 +123,7 @@
                           parseLiteralInt(=)
                             listener: handleLiteralInt(0)
                   listener: endFieldInitializer(=, ;)
-                listener: endClassFields(static, null, late, null, 1, static, ;)
+                listener: endClassFields(null, null, static, null, late, null, 1, static, ;)
               listener: endMember()
             notEofOrValue(}, covariant)
             parseClassOrMixinOrExtensionMemberImpl(;, DeclarationKind.Class, X)
@@ -147,7 +147,7 @@
                           parseLiteralInt(=)
                             listener: handleLiteralInt(0)
                   listener: endFieldInitializer(=, ;)
-                listener: endClassFields(null, covariant, late, null, 1, covariant, ;)
+                listener: endClassFields(null, null, null, covariant, late, null, 1, covariant, ;)
               listener: endMember()
             notEofOrValue(}, })
             listener: endClassOrMixinBody(DeclarationKind.Class, 6, {, })
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 d41f4e7..af2a1c3 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
@@ -17,7 +17,7 @@
           handleNoType(var)
           handleIdentifier(x1, fieldDeclaration)
           handleNoFieldInitializer(;)
-        endClassFields(null, null, null, var, 1, var, ;)
+        endClassFields(null, null, null, null, null, var, 1, var, ;)
       endMember()
       beginMetadataStar(static)
       endMetadataStar(0)
@@ -25,7 +25,7 @@
         handleNoType(var)
         handleIdentifier(x2, fieldDeclaration)
         handleNoFieldInitializer(;)
-      endClassFields(static, null, null, var, 1, static, ;)
+      endClassFields(null, null, static, null, null, var, 1, static, ;)
     endMember()
     beginMetadataStar(covariant)
     endMetadataStar(0)
@@ -33,7 +33,7 @@
       handleNoType(var)
       handleIdentifier(x3, fieldDeclaration)
       handleNoFieldInitializer(;)
-    endClassFields(null, covariant, null, var, 1, covariant, ;)
+    endClassFields(null, null, null, covariant, null, var, 1, covariant, ;)
   endMember()
   beginMetadataStar(var)
   endMetadataStar(0)
@@ -43,7 +43,7 @@
     beginFieldInitializer(=)
       handleLiteralInt(0)
     endFieldInitializer(=, ;)
-  endClassFields(null, null, null, var, 1, var, ;)
+  endClassFields(null, null, null, null, null, var, 1, var, ;)
 endMember()
 beginMetadataStar(static)
 endMetadataStar(0)
@@ -53,7 +53,7 @@
   beginFieldInitializer(=)
     handleLiteralInt(0)
   endFieldInitializer(=, ;)
-endClassFields(static, null, null, var, 1, static, ;)
+endClassFields(null, null, static, null, null, var, 1, static, ;)
 endMember()
 beginMetadataStar(covariant)
 endMetadataStar(0)
@@ -63,7 +63,7 @@
 beginFieldInitializer(=)
   handleLiteralInt(0)
 endFieldInitializer(=, ;)
-endClassFields(null, covariant, null, var, 1, covariant, ;)
+endClassFields(null, null, null, covariant, null, var, 1, covariant, ;)
 endMember()
 endClassOrMixinBody(DeclarationKind.Class, 6, {, })
 endClassDeclaration(class, })
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 c807ed8..11a7f1d 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
@@ -38,7 +38,7 @@
                   listener: handleIdentifier(x1, fieldDeclaration)
                 parseFieldInitializerOpt(x1, x1, null, null, null, var, DeclarationKind.Class, X)
                   listener: handleNoFieldInitializer(;)
-                listener: endClassFields(null, null, null, var, 1, var, ;)
+                listener: endClassFields(null, null, null, null, null, var, 1, var, ;)
               listener: endMember()
             notEofOrValue(}, static)
             parseClassOrMixinOrExtensionMemberImpl(;, DeclarationKind.Class, X)
@@ -52,7 +52,7 @@
                   listener: handleIdentifier(x2, fieldDeclaration)
                 parseFieldInitializerOpt(x2, x2, null, null, null, var, DeclarationKind.Class, X)
                   listener: handleNoFieldInitializer(;)
-                listener: endClassFields(static, null, null, var, 1, static, ;)
+                listener: endClassFields(null, null, static, null, null, var, 1, static, ;)
               listener: endMember()
             notEofOrValue(}, covariant)
             parseClassOrMixinOrExtensionMemberImpl(;, DeclarationKind.Class, X)
@@ -66,7 +66,7 @@
                   listener: handleIdentifier(x3, fieldDeclaration)
                 parseFieldInitializerOpt(x3, x3, null, null, null, var, DeclarationKind.Class, X)
                   listener: handleNoFieldInitializer(;)
-                listener: endClassFields(null, covariant, null, var, 1, covariant, ;)
+                listener: endClassFields(null, null, null, covariant, null, var, 1, covariant, ;)
               listener: endMember()
             notEofOrValue(}, var)
             parseClassOrMixinOrExtensionMemberImpl(;, DeclarationKind.Class, X)
@@ -87,7 +87,7 @@
                           parseLiteralInt(=)
                             listener: handleLiteralInt(0)
                   listener: endFieldInitializer(=, ;)
-                listener: endClassFields(null, null, null, var, 1, var, ;)
+                listener: endClassFields(null, null, null, null, null, var, 1, var, ;)
               listener: endMember()
             notEofOrValue(}, static)
             parseClassOrMixinOrExtensionMemberImpl(;, DeclarationKind.Class, X)
@@ -108,7 +108,7 @@
                           parseLiteralInt(=)
                             listener: handleLiteralInt(0)
                   listener: endFieldInitializer(=, ;)
-                listener: endClassFields(static, null, null, var, 1, static, ;)
+                listener: endClassFields(null, null, static, null, null, var, 1, static, ;)
               listener: endMember()
             notEofOrValue(}, covariant)
             parseClassOrMixinOrExtensionMemberImpl(;, DeclarationKind.Class, X)
@@ -129,7 +129,7 @@
                           parseLiteralInt(=)
                             listener: handleLiteralInt(0)
                   listener: endFieldInitializer(=, ;)
-                listener: endClassFields(null, covariant, null, var, 1, covariant, ;)
+                listener: endClassFields(null, null, null, covariant, null, var, 1, covariant, ;)
               listener: endMember()
             notEofOrValue(}, })
             listener: endClassOrMixinBody(DeclarationKind.Class, 6, {, })
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 a76d3f8..839d117 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
@@ -19,7 +19,7 @@
           handleType(int, null)
           handleIdentifier(x, fieldDeclaration)
           handleNoFieldInitializer(;)
-        endClassFields(null, covariant, late, final, 1, covariant, ;)
+        endClassFields(null, null, null, covariant, late, final, 1, covariant, ;)
       endMember()
     endClassOrMixinBody(DeclarationKind.Class, 1, {, })
   endClassDeclaration(class, })
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 abe076a..c2748ff9 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
@@ -40,7 +40,7 @@
                   listener: handleIdentifier(x, fieldDeclaration)
                 parseFieldInitializerOpt(x, x, late, null, null, final, DeclarationKind.Class, C)
                   listener: handleNoFieldInitializer(;)
-                listener: endClassFields(null, covariant, late, final, 1, covariant, ;)
+                listener: endClassFields(null, null, null, covariant, late, final, 1, covariant, ;)
               listener: endMember()
             notEofOrValue(}, })
             listener: endClassOrMixinBody(DeclarationKind.Class, 1, {, })
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 bf41922..15a8d14 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
@@ -28,7 +28,7 @@
           beginFieldInitializer(=)
             handleLiteralInt(42)
           endFieldInitializer(=, ;)
-        endClassFields(null, null, late, final, 1, covariant, ;)
+        endClassFields(null, null, null, null, late, final, 1, covariant, ;)
       endMember()
     endClassOrMixinBody(DeclarationKind.Class, 1, {, })
   endClassDeclaration(class, })
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 73d8eb0..f654dbd 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
@@ -49,7 +49,7 @@
                           parseLiteralInt(=)
                             listener: handleLiteralInt(42)
                   listener: endFieldInitializer(=, ;)
-                listener: endClassFields(null, null, late, final, 1, covariant, ;)
+                listener: endClassFields(null, null, null, null, late, final, 1, covariant, ;)
               listener: endMember()
             notEofOrValue(}, })
             listener: endClassOrMixinBody(DeclarationKind.Class, 1, {, })
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 91cc4ca..5d46ab3 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
@@ -28,7 +28,7 @@
           beginFieldInitializer(=)
             handleLiteralInt(42)
           endFieldInitializer(=, ;)
-        endClassFields(null, null, null, final, 1, covariant, ;)
+        endClassFields(null, null, null, null, null, final, 1, covariant, ;)
       endMember()
     endClassOrMixinBody(DeclarationKind.Class, 1, {, })
   endClassDeclaration(class, })
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 a73b460..97b6f75 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
@@ -49,7 +49,7 @@
                           parseLiteralInt(=)
                             listener: handleLiteralInt(42)
                   listener: endFieldInitializer(=, ;)
-                listener: endClassFields(null, null, null, final, 1, covariant, ;)
+                listener: endClassFields(null, null, null, null, null, final, 1, covariant, ;)
               listener: endMember()
             notEofOrValue(}, })
             listener: endClassOrMixinBody(DeclarationKind.Class, 1, {, })
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 ba78b91..8427048 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
@@ -19,7 +19,7 @@
           handleType(String, ?)
           handleIdentifier(x, fieldDeclaration)
           handleNoFieldInitializer(;)
-        endClassFields(null, null, null, null, 1, String, ;)
+        endClassFields(null, null, null, null, null, null, 1, String, ;)
       endMember()
       beginMetadataStar(int)
       endMetadataStar(0)
@@ -29,7 +29,7 @@
         handleType(int, null)
         handleIdentifier(y, fieldDeclaration)
         handleNoFieldInitializer(;)
-      endClassFields(null, null, null, null, 1, int, ;)
+      endClassFields(null, null, null, null, null, null, 1, int, ;)
     endMember()
     beginMetadataStar(Foo)
     endMetadataStar(0)
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 490e20d..1dc1fd0 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
@@ -40,7 +40,7 @@
                   listener: handleIdentifier(x, fieldDeclaration)
                 parseFieldInitializerOpt(x, x, null, null, null, null, DeclarationKind.Class, Foo)
                   listener: handleNoFieldInitializer(;)
-                listener: endClassFields(null, null, null, null, 1, String, ;)
+                listener: endClassFields(null, null, null, null, null, null, 1, String, ;)
               listener: endMember()
             notEofOrValue(}, int)
             parseClassOrMixinOrExtensionMemberImpl(;, DeclarationKind.Class, Foo)
@@ -56,7 +56,7 @@
                   listener: handleIdentifier(y, fieldDeclaration)
                 parseFieldInitializerOpt(y, y, null, null, null, null, DeclarationKind.Class, Foo)
                   listener: handleNoFieldInitializer(;)
-                listener: endClassFields(null, null, null, null, 1, int, ;)
+                listener: endClassFields(null, null, null, null, null, null, 1, int, ;)
               listener: endMember()
             notEofOrValue(}, Foo)
             parseClassOrMixinOrExtensionMemberImpl(;, DeclarationKind.Class, Foo)
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 188a65b..2302dd7 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
@@ -19,7 +19,7 @@
           handleType(String, ?)
           handleIdentifier(x, fieldDeclaration)
           handleNoFieldInitializer(;)
-        endClassFields(null, null, null, null, 1, String, ;)
+        endClassFields(null, null, null, null, null, null, 1, String, ;)
       endMember()
       beginMetadataStar(int)
       endMetadataStar(0)
@@ -29,7 +29,7 @@
         handleType(int, null)
         handleIdentifier(y, fieldDeclaration)
         handleNoFieldInitializer(;)
-      endClassFields(null, null, null, null, 1, int, ;)
+      endClassFields(null, null, null, null, null, null, 1, int, ;)
     endMember()
     beginMetadataStar(Foo)
     endMetadataStar(0)
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 3354446..8d144f8 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
@@ -40,7 +40,7 @@
                   listener: handleIdentifier(x, fieldDeclaration)
                 parseFieldInitializerOpt(x, x, null, null, null, null, DeclarationKind.Class, Foo)
                   listener: handleNoFieldInitializer(;)
-                listener: endClassFields(null, null, null, null, 1, String, ;)
+                listener: endClassFields(null, null, null, null, null, null, 1, String, ;)
               listener: endMember()
             notEofOrValue(}, int)
             parseClassOrMixinOrExtensionMemberImpl(;, DeclarationKind.Class, Foo)
@@ -56,7 +56,7 @@
                   listener: handleIdentifier(y, fieldDeclaration)
                 parseFieldInitializerOpt(y, y, null, null, null, null, DeclarationKind.Class, Foo)
                   listener: handleNoFieldInitializer(;)
-                listener: endClassFields(null, null, null, null, 1, int, ;)
+                listener: endClassFields(null, null, null, null, null, null, 1, int, ;)
               listener: endMember()
             notEofOrValue(}, Foo)
             parseClassOrMixinOrExtensionMemberImpl(;, DeclarationKind.Class, Foo)
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 d54c20a..9aac61a 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
@@ -19,7 +19,7 @@
           handleType(String, ?)
           handleIdentifier(x, fieldDeclaration)
           handleNoFieldInitializer(;)
-        endClassFields(null, null, null, null, 1, String, ;)
+        endClassFields(null, null, null, null, null, null, 1, String, ;)
       endMember()
       beginMetadataStar(int)
       endMetadataStar(0)
@@ -29,7 +29,7 @@
         handleType(int, null)
         handleIdentifier(y, fieldDeclaration)
         handleNoFieldInitializer(;)
-      endClassFields(null, null, null, null, 1, int, ;)
+      endClassFields(null, null, null, null, null, null, 1, int, ;)
     endMember()
     beginMetadataStar(Foo)
     endMetadataStar(0)
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 830eaf7..c80682c 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
@@ -40,7 +40,7 @@
                   listener: handleIdentifier(x, fieldDeclaration)
                 parseFieldInitializerOpt(x, x, null, null, null, null, DeclarationKind.Class, Foo)
                   listener: handleNoFieldInitializer(;)
-                listener: endClassFields(null, null, null, null, 1, String, ;)
+                listener: endClassFields(null, null, null, null, null, null, 1, String, ;)
               listener: endMember()
             notEofOrValue(}, int)
             parseClassOrMixinOrExtensionMemberImpl(;, DeclarationKind.Class, Foo)
@@ -56,7 +56,7 @@
                   listener: handleIdentifier(y, fieldDeclaration)
                 parseFieldInitializerOpt(y, y, null, null, null, null, DeclarationKind.Class, Foo)
                   listener: handleNoFieldInitializer(;)
-                listener: endClassFields(null, null, null, null, 1, int, ;)
+                listener: endClassFields(null, null, null, null, null, null, 1, int, ;)
               listener: endMember()
             notEofOrValue(}, Foo)
             parseClassOrMixinOrExtensionMemberImpl(;, DeclarationKind.Class, Foo)
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 b56f22d..9f7ec29 100644
--- a/pkg/front_end/parser_testcases/nnbd/issue_41597.dart.expect
+++ b/pkg/front_end/parser_testcases/nnbd/issue_41597.dart.expect
@@ -7,7 +7,7 @@
     handleType(bool, null)
     handleIdentifier(x, topLevelVariableDeclaration)
     handleNoFieldInitializer(;)
-  endTopLevelFields(null, null, null, null, 1, bool, ;)
+  endTopLevelFields(null, null, null, null, null, 1, bool, ;)
 endTopLevelDeclaration(bool)
 beginMetadataStar(bool)
 endMetadataStar(0)
@@ -17,7 +17,7 @@
   handleType(bool, null)
   handleIdentifier(x, topLevelVariableDeclaration)
   handleNoFieldInitializer(;)
-endTopLevelFields(null, null, null, null, 1, bool, ;)
+endTopLevelFields(null, null, null, null, null, 1, bool, ;)
 endTopLevelDeclaration(errors)
 beginMetadataStar(errors)
 endMetadataStar(0)
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 4d70eea..c37975a 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
@@ -16,7 +16,7 @@
           listener: handleIdentifier(x, topLevelVariableDeclaration)
         parseFieldInitializerOpt(x, x, null, null, null, null, DeclarationKind.TopLevel, null)
           listener: handleNoFieldInitializer(;)
-        listener: endTopLevelFields(null, null, null, null, 1, bool, ;)
+        listener: endTopLevelFields(null, null, null, null, null, 1, bool, ;)
   listener: endTopLevelDeclaration(bool)
   parseTopLevelDeclarationImpl(;, Instance of 'DirectiveContext')
     parseMetadataStar(;)
@@ -32,7 +32,7 @@
           listener: handleIdentifier(x, topLevelVariableDeclaration)
         parseFieldInitializerOpt(x, x, null, null, null, null, DeclarationKind.TopLevel, null)
           listener: handleNoFieldInitializer(;)
-        listener: endTopLevelFields(null, null, null, null, 1, bool, ;)
+        listener: endTopLevelFields(null, null, null, null, null, 1, bool, ;)
   listener: endTopLevelDeclaration(errors)
   parseTopLevelDeclarationImpl(;, Instance of 'DirectiveContext')
     parseMetadataStar(;)
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 616be0b..533eec5 100644
--- a/pkg/front_end/parser_testcases/nnbd/issue_42621.dart.expect
+++ b/pkg/front_end/parser_testcases/nnbd/issue_42621.dart.expect
@@ -323,7 +323,7 @@
           handleType(List, ?)
           handleIdentifier(x, fieldDeclaration)
           handleNoFieldInitializer(;)
-        endClassFields(null, null, null, null, 1, List, ;)
+        endClassFields(null, null, null, null, null, null, 1, List, ;)
       endMember()
       beginMetadataStar(int)
       endMetadataStar(0)
@@ -333,7 +333,7 @@
         handleType(int, ?)
         handleIdentifier(y, fieldDeclaration)
         handleNoFieldInitializer(;)
-      endClassFields(null, null, null, null, 1, int, ;)
+      endClassFields(null, null, null, null, null, null, 1, int, ;)
     endMember()
   endClassOrMixinBody(DeclarationKind.Class, 2, {, })
 endClassDeclaration(class, })
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 536f1f7..15743a9 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
@@ -650,7 +650,7 @@
                   listener: handleIdentifier(x, fieldDeclaration)
                 parseFieldInitializerOpt(x, x, null, null, null, null, DeclarationKind.Class, Order)
                   listener: handleNoFieldInitializer(;)
-                listener: endClassFields(null, null, null, null, 1, List, ;)
+                listener: endClassFields(null, null, null, null, null, null, 1, List, ;)
               listener: endMember()
             notEofOrValue(}, int)
             parseClassOrMixinOrExtensionMemberImpl(;, DeclarationKind.Class, Order)
@@ -666,7 +666,7 @@
                   listener: handleIdentifier(y, fieldDeclaration)
                 parseFieldInitializerOpt(y, y, null, null, null, null, DeclarationKind.Class, Order)
                   listener: handleNoFieldInitializer(;)
-                listener: endClassFields(null, null, null, null, 1, int, ;)
+                listener: endClassFields(null, null, null, null, null, null, 1, int, ;)
               listener: endMember()
             notEofOrValue(}, })
             listener: endClassOrMixinBody(DeclarationKind.Class, 2, {, })
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 75e34a4..1a7d7f8 100644
--- a/pkg/front_end/parser_testcases/nnbd/late_member.dart.expect
+++ b/pkg/front_end/parser_testcases/nnbd/late_member.dart.expect
@@ -178,7 +178,7 @@
           beginFieldInitializer(=)
             handleLiteralInt(42)
           endFieldInitializer(=, ;)
-        endClassFields(null, null, null, null, 1, int, ;)
+        endClassFields(null, null, null, null, null, null, 1, int, ;)
       endMember()
     endClassOrMixinBody(DeclarationKind.Class, 1, {, })
   endClassDeclaration(class, })
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 0824b96..f6800aa 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
@@ -447,7 +447,7 @@
                           parseLiteralInt(=)
                             listener: handleLiteralInt(42)
                   listener: endFieldInitializer(=, ;)
-                listener: endClassFields(null, null, null, null, 1, int, ;)
+                listener: endClassFields(null, null, null, null, null, null, 1, int, ;)
               listener: endMember()
             notEofOrValue(}, })
             listener: endClassOrMixinBody(DeclarationKind.Class, 1, {, })
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 155bdd0..50fcc6a 100644
--- a/pkg/front_end/parser_testcases/nnbd/late_modifier.dart.expect
+++ b/pkg/front_end/parser_testcases/nnbd/late_modifier.dart.expect
@@ -196,7 +196,7 @@
           beginFieldInitializer(=)
             handleLiteralInt(42)
           endFieldInitializer(=, ;)
-        endClassFields(null, null, null, null, 1, int, ;)
+        endClassFields(null, null, null, null, null, null, 1, int, ;)
       endMember()
     endClassOrMixinBody(DeclarationKind.Class, 1, {, })
   endClassDeclaration(class, })
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 42ff91b..275889e 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
@@ -495,7 +495,7 @@
                           parseLiteralInt(=)
                             listener: handleLiteralInt(42)
                   listener: endFieldInitializer(=, ;)
-                listener: endClassFields(null, null, null, null, 1, int, ;)
+                listener: endClassFields(null, null, null, null, null, null, 1, int, ;)
               listener: endMember()
             notEofOrValue(}, })
             listener: endClassOrMixinBody(DeclarationKind.Class, 1, {, })
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 a0ae83e..aa7af99 100644
--- a/pkg/front_end/parser_testcases/nnbd/required_member.dart.expect
+++ b/pkg/front_end/parser_testcases/nnbd/required_member.dart.expect
@@ -178,7 +178,7 @@
           beginFieldInitializer(=)
             handleLiteralInt(42)
           endFieldInitializer(=, ;)
-        endClassFields(null, null, null, null, 1, int, ;)
+        endClassFields(null, null, null, null, null, null, 1, int, ;)
       endMember()
     endClassOrMixinBody(DeclarationKind.Class, 1, {, })
   endClassDeclaration(class, })
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 d96a3c0..1cacfb4 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
@@ -447,7 +447,7 @@
                           parseLiteralInt(=)
                             listener: handleLiteralInt(42)
                   listener: endFieldInitializer(=, ;)
-                listener: endClassFields(null, null, null, null, 1, int, ;)
+                listener: endClassFields(null, null, null, null, null, null, 1, int, ;)
               listener: endMember()
             notEofOrValue(}, })
             listener: endClassOrMixinBody(DeclarationKind.Class, 1, {, })
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 83b3b6b..ea95318 100644
--- a/pkg/front_end/parser_testcases/nnbd/required_modifier.dart.expect
+++ b/pkg/front_end/parser_testcases/nnbd/required_modifier.dart.expect
@@ -189,7 +189,7 @@
           beginFieldInitializer(=)
             handleLiteralInt(42)
           endFieldInitializer(=, ;)
-        endClassFields(null, null, null, null, 1, int, ;)
+        endClassFields(null, null, null, null, null, null, 1, int, ;)
       endMember()
     endClassOrMixinBody(DeclarationKind.Class, 1, {, })
   endClassDeclaration(class, })
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 dce54ab..6d72b6d 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
@@ -463,7 +463,7 @@
                           parseLiteralInt(=)
                             listener: handleLiteralInt(42)
                   listener: endFieldInitializer(=, ;)
-                listener: endClassFields(null, null, null, null, 1, int, ;)
+                listener: endClassFields(null, null, null, null, null, null, 1, int, ;)
               listener: endMember()
             notEofOrValue(}, })
             listener: endClassOrMixinBody(DeclarationKind.Class, 1, {, })
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 302c411..00b2f6a 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
@@ -13,7 +13,7 @@
     handleNoFieldInitializer(,)
     handleIdentifier(e, topLevelVariableDeclaration)
     handleNoFieldInitializer(;)
-  endTopLevelFields(null, null, null, var, 5, var, ;)
+  endTopLevelFields(null, null, null, null, var, 5, var, ;)
 endTopLevelDeclaration(List)
 beginMetadataStar(List)
 endMetadataStar(0)
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 5f46730..8be1d99 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
@@ -30,7 +30,7 @@
           listener: handleIdentifier(e, topLevelVariableDeclaration)
         parseFieldInitializerOpt(e, e, null, null, null, var, DeclarationKind.TopLevel, null)
           listener: handleNoFieldInitializer(;)
-        listener: endTopLevelFields(null, null, null, var, 5, var, ;)
+        listener: endTopLevelFields(null, null, null, null, var, 5, var, ;)
   listener: endTopLevelDeclaration(List)
   parseTopLevelDeclarationImpl(;, Instance of 'DirectiveContext')
     parseMetadataStar(;)
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 fa5b46a..80a4e35 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
@@ -87,7 +87,7 @@
             endArguments(0, (, ))
             handleSend(late, ;)
           endFieldInitializer(=, ;)
-        endClassFields(null, null, null, null, 1, late, ;)
+        endClassFields(null, null, null, null, null, null, 1, late, ;)
       endMember()
       beginMetadataStar(required)
       endMetadataStar(0)
@@ -103,7 +103,7 @@
           endArguments(0, (, ))
           handleSend(required, ;)
         endFieldInitializer(=, ;)
-      endClassFields(null, null, null, null, 1, required, ;)
+      endClassFields(null, null, null, null, null, null, 1, required, ;)
     endMember()
   endClassOrMixinBody(DeclarationKind.Class, 2, {, })
 endClassDeclaration(class, })
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 4d741e9..686b0f5 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
@@ -187,7 +187,7 @@
                                     listener: endArguments(0, (, ))
                               listener: handleSend(late, ;)
                   listener: endFieldInitializer(=, ;)
-                listener: endClassFields(null, null, null, null, 1, late, ;)
+                listener: endClassFields(null, null, null, null, null, null, 1, late, ;)
               listener: endMember()
             notEofOrValue(}, required)
             parseClassOrMixinOrExtensionMemberImpl(;, DeclarationKind.Class, C)
@@ -220,7 +220,7 @@
                                     listener: endArguments(0, (, ))
                               listener: handleSend(required, ;)
                   listener: endFieldInitializer(=, ;)
-                listener: endClassFields(null, null, null, null, 1, required, ;)
+                listener: endClassFields(null, null, null, null, null, null, 1, required, ;)
               listener: endMember()
             notEofOrValue(}, })
             listener: endClassOrMixinBody(DeclarationKind.Class, 2, {, })
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 7d97c5e..ea0ece2 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
@@ -87,7 +87,7 @@
             endArguments(0, (, ))
             handleSend(Xlate, ;)
           endFieldInitializer(=, ;)
-        endClassFields(null, null, null, null, 1, Xlate, ;)
+        endClassFields(null, null, null, null, null, null, 1, Xlate, ;)
       endMember()
       beginMetadataStar(Xrequired)
       endMetadataStar(0)
@@ -103,7 +103,7 @@
           endArguments(0, (, ))
           handleSend(Xrequired, ;)
         endFieldInitializer(=, ;)
-      endClassFields(null, null, null, null, 1, Xrequired, ;)
+      endClassFields(null, null, null, null, null, null, 1, Xrequired, ;)
     endMember()
   endClassOrMixinBody(DeclarationKind.Class, 2, {, })
 endClassDeclaration(class, })
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 5e5e660..66943ef 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
@@ -187,7 +187,7 @@
                                     listener: endArguments(0, (, ))
                               listener: handleSend(Xlate, ;)
                   listener: endFieldInitializer(=, ;)
-                listener: endClassFields(null, null, null, null, 1, Xlate, ;)
+                listener: endClassFields(null, null, null, null, null, null, 1, Xlate, ;)
               listener: endMember()
             notEofOrValue(}, Xrequired)
             parseClassOrMixinOrExtensionMemberImpl(;, DeclarationKind.Class, C)
@@ -220,7 +220,7 @@
                                     listener: endArguments(0, (, ))
                               listener: handleSend(Xrequired, ;)
                   listener: endFieldInitializer(=, ;)
-                listener: endClassFields(null, null, null, null, 1, Xrequired, ;)
+                listener: endClassFields(null, null, null, null, null, null, 1, Xrequired, ;)
               listener: endMember()
             notEofOrValue(}, })
             listener: endClassOrMixinBody(DeclarationKind.Class, 2, {, })
diff --git a/pkg/front_end/test/parser_test_listener.dart b/pkg/front_end/test/parser_test_listener.dart
index 620cdef..f49b00a 100644
--- a/pkg/front_end/test/parser_test_listener.dart
+++ b/pkg/front_end/test/parser_test_listener.dart
@@ -531,6 +531,7 @@
       Token endToken) {
     indent--;
     seen(abstractToken);
+    seen(externalToken);
     seen(staticToken);
     seen(covariantToken);
     seen(lateToken);
@@ -538,6 +539,8 @@
     seen(beginToken);
     seen(endToken);
     doPrint('endClassFields('
+        '$abstractToken, '
+        '$externalToken, '
         '$staticToken, '
         '$covariantToken, '
         '$lateToken, '
@@ -559,6 +562,7 @@
       Token endToken) {
     indent--;
     seen(abstractToken);
+    seen(externalToken);
     seen(staticToken);
     seen(covariantToken);
     seen(lateToken);
@@ -566,6 +570,8 @@
     seen(beginToken);
     seen(endToken);
     doPrint('endMixinFields('
+        '$abstractToken, '
+        '$externalToken, '
         '$staticToken, '
         '$covariantToken, '
         '$lateToken, '
@@ -586,6 +592,8 @@
       Token beginToken,
       Token endToken) {
     indent--;
+    seen(abstractToken);
+    seen(externalToken);
     seen(staticToken);
     seen(covariantToken);
     seen(lateToken);
@@ -593,6 +601,8 @@
     seen(beginToken);
     seen(endToken);
     doPrint('endExtensionFields('
+        '$abstractToken, '
+        '$externalToken, '
         '$staticToken, '
         '$covariantToken, '
         '$lateToken, '
@@ -1452,6 +1462,7 @@
       Token beginToken,
       Token endToken) {
     indent--;
+    seen(externalToken);
     seen(staticToken);
     seen(covariantToken);
     seen(lateToken);
@@ -1459,6 +1470,7 @@
     seen(beginToken);
     seen(endToken);
     doPrint('endTopLevelFields('
+        '$externalToken, '
         '$staticToken, '
         '$covariantToken, '
         '$lateToken, '
diff --git a/pkg/front_end/test/spell_checking_list_tests.txt b/pkg/front_end/test/spell_checking_list_tests.txt
index b348828..c74ced0 100644
--- a/pkg/front_end/test/spell_checking_list_tests.txt
+++ b/pkg/front_end/test/spell_checking_list_tests.txt
@@ -612,6 +612,7 @@
 unassignment
 unawaited
 unbreak
+unconverted
 unpacked
 unpaused
 unregistered
diff --git a/pkg/front_end/test/vm_service_heap_helper.dart b/pkg/front_end/test/vm_service_heap_helper.dart
index 74e92c4..d801f3d 100644
--- a/pkg/front_end/test/vm_service_heap_helper.dart
+++ b/pkg/front_end/test/vm_service_heap_helper.dart
@@ -365,42 +365,12 @@
       vmService.HeapSnapshotGraph heapSnapshotGraph =
           await vmService.HeapSnapshotGraph.getSnapshot(
               _serviceClient, _isolateRef);
-      // TODO: Considering the single source shortest path algorithm
-      // doesn't seem to give a useful trace anymore (the snapshot seems to
-      // have changed) and that converting the graph is very costly,
-      // maybe don't do that...
-      HeapGraph graph = convertHeapGraph(heapSnapshotGraph);
 
-      Set<String> seenPrints = {};
       Set<String> duplicatePrints = {};
-      Map<String, List<HeapGraphElement>> groupedByToString = {};
-      for (HeapGraphClassActual c in graph.classes) {
-        Map<String, List<String>> interests = _interests[c.libraryUri];
-        if (interests != null && interests.isNotEmpty) {
-          List<String> fieldsToUse = interests[c.name];
-          if (fieldsToUse != null && fieldsToUse.isNotEmpty) {
-            for (HeapGraphElement instance in c.getInstances(graph)) {
-              StringBuffer sb = new StringBuffer();
-              sb.writeln("Instance: ${instance}");
-              if (instance is HeapGraphElementActual) {
-                for (String fieldName in fieldsToUse) {
-                  String prettyPrinted = instance
-                      .getField(fieldName)
-                      .getPrettyPrint(_prettyPrints);
-                  sb.writeln("  $fieldName: "
-                      "${prettyPrinted}");
-                }
-              }
-              String sbToString = sb.toString();
-              if (!seenPrints.add(sbToString)) {
-                duplicatePrints.add(sbToString);
-              }
-              groupedByToString[sbToString] ??= [];
-              groupedByToString[sbToString].add(instance);
-            }
-          }
-        }
-      }
+      Map<String, List<vmService.HeapSnapshotObject>> groupedByToString = {};
+      _usingUnconvertedGraph(
+          heapSnapshotGraph, duplicatePrints, groupedByToString);
+
       if (duplicatePrints.isNotEmpty) {
         print("======================================");
         print("WARNING: Duplicated pretty prints of objects.");
@@ -409,45 +379,16 @@
         for (String s in duplicatePrints) {
           int count = groupedByToString[s].length;
           print("$s ($count)");
-          for (HeapGraphElement duplicate in groupedByToString[s]) {
-            print(" => ${duplicate.getPrettyPrint(_prettyPrints)}");
+          for (vmService.HeapSnapshotObject duplicate in groupedByToString[s]) {
+            String prettyPrint = _heapObjectPrettyPrint(
+                duplicate, heapSnapshotGraph, _prettyPrints);
+            print(" => ${prettyPrint}");
           }
           print("");
         }
+
         if (tryToFindShortestPathToLeaks) {
-          print("======================================");
-          for (String duplicateString in duplicatePrints) {
-            print("$duplicateString:");
-            List<HeapGraphElement> Function(HeapGraphElement target)
-                dijkstraTarget = dijkstra(graph.elements.first, graph);
-            for (HeapGraphElement duplicate
-                in groupedByToString[duplicateString]) {
-              print("${duplicate} pointed to from:");
-              print(duplicate.getPrettyPrint(_prettyPrints));
-              List<HeapGraphElement> shortestPath = dijkstraTarget(duplicate);
-              for (int i = 0; i < shortestPath.length - 1; i++) {
-                HeapGraphElement thisOne = shortestPath[i];
-                HeapGraphElement nextOne = shortestPath[i + 1];
-                String indexFieldName;
-                if (thisOne is HeapGraphElementActual) {
-                  HeapGraphClass c = thisOne.class_;
-                  if (c is HeapGraphClassActual) {
-                    for (vmService.HeapSnapshotField field in c.origin.fields) {
-                      if (thisOne.references[field.index] == nextOne) {
-                        indexFieldName = field.name;
-                      }
-                    }
-                  }
-                }
-                if (indexFieldName == null) {
-                  indexFieldName = "no field found; index "
-                      "${thisOne.references.indexOf(nextOne)}";
-                }
-                print("  $thisOne -> $nextOne ($indexFieldName)");
-              }
-              print("---------------------------");
-            }
-          }
+          _tryToFindShortestPath(heapSnapshotGraph);
         }
 
         if (throwOnPossibleLeak) {
@@ -460,6 +401,214 @@
     }
   }
 
+  void _tryToFindShortestPath(vmService.HeapSnapshotGraph heapSnapshotGraph) {
+    HeapGraph graph = convertHeapGraph(heapSnapshotGraph);
+    Set<String> duplicatePrints = {};
+    Map<String, List<HeapGraphElement>> groupedByToString = {};
+    _usingConvertedGraph(graph, duplicatePrints, groupedByToString);
+
+    print("======================================");
+
+    for (String duplicateString in duplicatePrints) {
+      print("$duplicateString:");
+      List<HeapGraphElement> Function(HeapGraphElement target) dijkstraTarget =
+          dijkstra(graph.elements.first, graph);
+      for (HeapGraphElement duplicate in groupedByToString[duplicateString]) {
+        print("${duplicate} pointed to from:");
+        print(duplicate.getPrettyPrint(_prettyPrints));
+        List<HeapGraphElement> shortestPath = dijkstraTarget(duplicate);
+        for (int i = 0; i < shortestPath.length - 1; i++) {
+          HeapGraphElement thisOne = shortestPath[i];
+          HeapGraphElement nextOne = shortestPath[i + 1];
+          String indexFieldName;
+          if (thisOne is HeapGraphElementActual) {
+            HeapGraphClass c = thisOne.class_;
+            if (c is HeapGraphClassActual) {
+              for (vmService.HeapSnapshotField field in c.origin.fields) {
+                if (thisOne.references[field.index] == nextOne) {
+                  indexFieldName = field.name;
+                }
+              }
+            }
+          }
+          if (indexFieldName == null) {
+            indexFieldName = "no field found; index "
+                "${thisOne.references.indexOf(nextOne)}";
+          }
+          print("  $thisOne -> $nextOne ($indexFieldName)");
+        }
+        print("---------------------------");
+      }
+    }
+  }
+
+  void _usingConvertedGraph(HeapGraph graph, Set<String> duplicatePrints,
+      Map<String, List<HeapGraphElement>> groupedByToString) {
+    Set<String> seenPrints = {};
+    for (HeapGraphClassActual c in graph.classes) {
+      Map<String, List<String>> interests = _interests[c.libraryUri];
+      if (interests != null && interests.isNotEmpty) {
+        List<String> fieldsToUse = interests[c.name];
+        if (fieldsToUse != null && fieldsToUse.isNotEmpty) {
+          for (HeapGraphElement instance in c.getInstances(graph)) {
+            StringBuffer sb = new StringBuffer();
+            sb.writeln("Instance: ${instance}");
+            if (instance is HeapGraphElementActual) {
+              for (String fieldName in fieldsToUse) {
+                String prettyPrinted =
+                    instance.getField(fieldName).getPrettyPrint(_prettyPrints);
+                sb.writeln("  $fieldName: "
+                    "${prettyPrinted}");
+              }
+            }
+            String sbToString = sb.toString();
+            if (!seenPrints.add(sbToString)) {
+              duplicatePrints.add(sbToString);
+            }
+            groupedByToString[sbToString] ??= [];
+            groupedByToString[sbToString].add(instance);
+          }
+        }
+      }
+    }
+  }
+
+  String _heapObjectToString(
+      vmService.HeapSnapshotObject o, vmService.HeapSnapshotClass class_) {
+    if (o == null) return "Sentinel";
+    if (o.data is vmService.HeapSnapshotObjectNoData) {
+      return "Instance of ${class_.name}";
+    }
+    if (o.data is vmService.HeapSnapshotObjectLengthData) {
+      vmService.HeapSnapshotObjectLengthData data = o.data;
+      return "Instance of ${class_.name} length = ${data.length}";
+    }
+    return "Instance of ${class_.name}; data: '${o.data}'";
+  }
+
+  vmService.HeapSnapshotObject _heapObjectGetField(
+      String name,
+      vmService.HeapSnapshotObject o,
+      vmService.HeapSnapshotClass class_,
+      vmService.HeapSnapshotGraph graph) {
+    for (vmService.HeapSnapshotField field in class_.fields) {
+      if (field.name == name) {
+        int index = o.references[field.index] - 1;
+        if (index < 0) {
+          // Sentinel object.
+          return null;
+        }
+        return graph.objects[index];
+      }
+    }
+    return null;
+  }
+
+  String _heapObjectPrettyPrint(
+      vmService.HeapSnapshotObject o,
+      vmService.HeapSnapshotGraph graph,
+      Map<Uri, Map<String, List<String>>> prettyPrints) {
+    if (o.classId == 0) {
+      return "Class sentinel";
+    }
+    vmService.HeapSnapshotClass class_ = graph.classes[o.classId - 1];
+
+    if (class_.name == "_OneByteString") {
+      return '"${o.data}"';
+    }
+
+    if (class_.name == "_SimpleUri") {
+      vmService.HeapSnapshotObject fieldValueObject =
+          _heapObjectGetField("_uri", o, class_, graph);
+      String prettyPrinted =
+          _heapObjectPrettyPrint(fieldValueObject, graph, prettyPrints);
+      return "_SimpleUri[${prettyPrinted}]";
+    }
+
+    if (class_.name == "_Uri") {
+      vmService.HeapSnapshotObject schemeValueObject =
+          _heapObjectGetField("scheme", o, class_, graph);
+      String schemePrettyPrinted =
+          _heapObjectPrettyPrint(schemeValueObject, graph, prettyPrints);
+
+      vmService.HeapSnapshotObject pathValueObject =
+          _heapObjectGetField("path", o, class_, graph);
+      String pathPrettyPrinted =
+          _heapObjectPrettyPrint(pathValueObject, graph, prettyPrints);
+
+      return "_Uri[${schemePrettyPrinted}:${pathPrettyPrinted}]";
+    }
+
+    Map<String, List<String>> classToFields = prettyPrints[class_.libraryUri];
+    if (classToFields != null) {
+      List<String> fields = classToFields[class_.name];
+      if (fields != null) {
+        return "${class_.name}[" +
+            fields.map((field) {
+              vmService.HeapSnapshotObject fieldValueObject =
+                  _heapObjectGetField(field, o, class_, graph);
+              String prettyPrinted = fieldValueObject == null
+                  ? null
+                  : _heapObjectPrettyPrint(
+                      fieldValueObject, graph, prettyPrints);
+              return "$field: ${prettyPrinted}";
+            }).join(", ") +
+            "]";
+      }
+    }
+    return _heapObjectToString(o, class_);
+  }
+
+  void _usingUnconvertedGraph(
+      vmService.HeapSnapshotGraph graph,
+      Set<String> duplicatePrints,
+      Map<String, List<vmService.HeapSnapshotObject>> groupedByToString) {
+    Set<String> seenPrints = {};
+    List<bool> ignoredClasses =
+        new List<bool>.filled(graph.classes.length, false);
+    for (int i = 0; i < graph.objects.length; i++) {
+      vmService.HeapSnapshotObject o = graph.objects[i];
+      if (o.classId == 0) {
+        // Sentinel.
+        continue;
+      }
+      if (ignoredClasses[o.classId - 1]) {
+        // Class is not interesting.
+        continue;
+      }
+      vmService.HeapSnapshotClass c = graph.classes[o.classId - 1];
+      Map<String, List<String>> interests = _interests[c.libraryUri];
+      if (interests == null || interests.isEmpty) {
+        // Not an object we care about.
+        ignoredClasses[o.classId - 1] = true;
+        continue;
+      }
+
+      List<String> fieldsToUse = interests[c.name];
+      if (fieldsToUse == null || fieldsToUse.isEmpty) {
+        // Not an object we care about.
+        ignoredClasses[o.classId - 1] = true;
+        continue;
+      }
+
+      StringBuffer sb = new StringBuffer();
+      sb.writeln("Instance: ${_heapObjectToString(o, c)}");
+      for (String fieldName in fieldsToUse) {
+        vmService.HeapSnapshotObject fieldValueObject =
+            _heapObjectGetField(fieldName, o, c, graph);
+        String prettyPrinted =
+            _heapObjectPrettyPrint(fieldValueObject, graph, _prettyPrints);
+        sb.writeln("  $fieldName: ${prettyPrinted}");
+      }
+      String sbToString = sb.toString();
+      if (!seenPrints.add(sbToString)) {
+        duplicatePrints.add(sbToString);
+      }
+      groupedByToString[sbToString] ??= [];
+      groupedByToString[sbToString].add(o);
+    }
+  }
+
   List<HeapGraphElement> Function(HeapGraphElement target) dijkstra(
       HeapGraphElement source, HeapGraph heapGraph) {
     Map<HeapGraphElement, int> elementNum = {};
@@ -678,17 +827,6 @@
     return null;
   }
 
-  List<MapEntry<String, HeapGraphElement>> getFields() {
-    List<MapEntry<String, HeapGraphElement>> result = [];
-    if (class_ is HeapGraphClassActual) {
-      HeapGraphClassActual c = class_;
-      for (vmService.HeapSnapshotField field in c.origin.fields) {
-        result.add(new MapEntry(field.name, references[field.index]));
-      }
-    }
-    return result;
-  }
-
   String toString() {
     if (origin.data is vmService.HeapSnapshotObjectNoData) {
       return "Instance of $class_";
diff --git a/pkg/front_end/testcases/general/abstract_overrides_concrete.dart b/pkg/front_end/testcases/general/abstract_overrides_concrete.dart
new file mode 100644
index 0000000..8a0f040
--- /dev/null
+++ b/pkg/front_end/testcases/general/abstract_overrides_concrete.dart
@@ -0,0 +1,25 @@
+// Copyright (c) 2020, the Dart project authors.  Please see the AUTHORS file
+// for details. All rights reserved. Use of this source code is governed by a
+// BSD-style license that can be found in the LICENSE file.
+
+class A {
+  void foo() {}
+}
+
+abstract class I {
+  void foo([a]);
+}
+
+abstract class B extends A {
+  void foo([a]);
+}
+
+class C extends B {}
+
+class D extends A implements I {}
+
+abstract class E extends A implements I {}
+
+class F extends E {}
+
+main() {}
diff --git a/pkg/front_end/testcases/general/abstract_overrides_concrete.dart.outline.expect b/pkg/front_end/testcases/general/abstract_overrides_concrete.dart.outline.expect
new file mode 100644
index 0000000..0d17070
--- /dev/null
+++ b/pkg/front_end/testcases/general/abstract_overrides_concrete.dart.outline.expect
@@ -0,0 +1,93 @@
+library;
+//
+// Problems in library:
+//
+// pkg/front_end/testcases/general/abstract_overrides_concrete.dart:17:7: Error: The implementation of 'foo' in the non-abstract class 'C' does not conform to its interface.
+// class C extends B {}
+//       ^
+// pkg/front_end/testcases/general/abstract_overrides_concrete.dart:6:8: Context: The method 'A.foo' has fewer positional arguments than those of overridden method 'B.foo'.
+//   void foo() {}
+//        ^
+// pkg/front_end/testcases/general/abstract_overrides_concrete.dart:14:8: Context: This is the overridden method ('foo').
+//   void foo([a]);
+//        ^
+//
+// pkg/front_end/testcases/general/abstract_overrides_concrete.dart:19:7: Error: The implementation of 'foo' in the non-abstract class 'D' does not conform to its interface.
+// class D extends A implements I {}
+//       ^
+// pkg/front_end/testcases/general/abstract_overrides_concrete.dart:6:8: Context: The method 'A.foo' has fewer positional arguments than those of overridden method 'I.foo'.
+//   void foo() {}
+//        ^
+// pkg/front_end/testcases/general/abstract_overrides_concrete.dart:10:8: Context: This is the overridden method ('foo').
+//   void foo([a]);
+//        ^
+//
+// pkg/front_end/testcases/general/abstract_overrides_concrete.dart:23:7: Error: The implementation of 'foo' in the non-abstract class 'F' does not conform to its interface.
+// class F extends E {}
+//       ^
+// pkg/front_end/testcases/general/abstract_overrides_concrete.dart:6:8: Context: The method 'A.foo' has fewer positional arguments than those of overridden method 'E.foo'.
+//   void foo() {}
+//        ^
+// pkg/front_end/testcases/general/abstract_overrides_concrete.dart:21:16: Context: This is the overridden method ('foo').
+// abstract class E extends A implements I {}
+//                ^
+//
+import self as self;
+import "dart:core" as core;
+
+class A extends core::Object {
+  synthetic constructor •() → self::A*
+    ;
+  method foo() → void
+    ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
+}
+abstract class I extends core::Object {
+  synthetic constructor •() → self::I*
+    ;
+  abstract method foo([dynamic a]) → void;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
+}
+abstract class B extends self::A {
+  synthetic constructor •() → self::B*
+    ;
+  abstract method foo([dynamic a]) → void;
+}
+class C extends self::B {
+  synthetic constructor •() → self::C*
+    ;
+}
+class D extends self::A implements self::I {
+  synthetic constructor •() → self::D*
+    ;
+  abstract forwarding-stub method foo([dynamic a]) → void;
+}
+abstract class E extends self::A implements self::I {
+  synthetic constructor •() → self::E*
+    ;
+  abstract forwarding-stub method foo([dynamic a]) → void;
+}
+class F extends self::E {
+  synthetic constructor •() → self::F*
+    ;
+}
+static method main() → dynamic
+  ;
diff --git a/pkg/front_end/testcases/general/abstract_overrides_concrete.dart.strong.expect b/pkg/front_end/testcases/general/abstract_overrides_concrete.dart.strong.expect
new file mode 100644
index 0000000..65a5901
--- /dev/null
+++ b/pkg/front_end/testcases/general/abstract_overrides_concrete.dart.strong.expect
@@ -0,0 +1,102 @@
+library;
+//
+// Problems in library:
+//
+// pkg/front_end/testcases/general/abstract_overrides_concrete.dart:17:7: Error: The implementation of 'foo' in the non-abstract class 'C' does not conform to its interface.
+// class C extends B {}
+//       ^
+// pkg/front_end/testcases/general/abstract_overrides_concrete.dart:6:8: Context: The method 'A.foo' has fewer positional arguments than those of overridden method 'B.foo'.
+//   void foo() {}
+//        ^
+// pkg/front_end/testcases/general/abstract_overrides_concrete.dart:14:8: Context: This is the overridden method ('foo').
+//   void foo([a]);
+//        ^
+//
+// pkg/front_end/testcases/general/abstract_overrides_concrete.dart:19:7: Error: The implementation of 'foo' in the non-abstract class 'D' does not conform to its interface.
+// class D extends A implements I {}
+//       ^
+// pkg/front_end/testcases/general/abstract_overrides_concrete.dart:6:8: Context: The method 'A.foo' has fewer positional arguments than those of overridden method 'I.foo'.
+//   void foo() {}
+//        ^
+// pkg/front_end/testcases/general/abstract_overrides_concrete.dart:10:8: Context: This is the overridden method ('foo').
+//   void foo([a]);
+//        ^
+//
+// pkg/front_end/testcases/general/abstract_overrides_concrete.dart:23:7: Error: The implementation of 'foo' in the non-abstract class 'F' does not conform to its interface.
+// class F extends E {}
+//       ^
+// pkg/front_end/testcases/general/abstract_overrides_concrete.dart:6:8: Context: The method 'A.foo' has fewer positional arguments than those of overridden method 'E.foo'.
+//   void foo() {}
+//        ^
+// pkg/front_end/testcases/general/abstract_overrides_concrete.dart:21:16: Context: This is the overridden method ('foo').
+// abstract class E extends A implements I {}
+//                ^
+//
+import self as self;
+import "dart:core" as core;
+
+class A extends core::Object {
+  synthetic constructor •() → self::A*
+    : super core::Object::•()
+    ;
+  method foo() → void {}
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
+}
+abstract class I extends core::Object {
+  synthetic constructor •() → self::I*
+    : super core::Object::•()
+    ;
+  abstract method foo([dynamic a = #C1]) → void;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
+}
+abstract class B extends self::A {
+  synthetic constructor •() → self::B*
+    : super self::A::•()
+    ;
+  abstract method foo([dynamic a = #C1]) → void;
+}
+class C extends self::B {
+  synthetic constructor •() → self::C*
+    : super self::B::•()
+    ;
+}
+class D extends self::A implements self::I {
+  synthetic constructor •() → self::D*
+    : super self::A::•()
+    ;
+  abstract forwarding-stub method foo([dynamic a = #C1]) → void;
+}
+abstract class E extends self::A implements self::I {
+  synthetic constructor •() → self::E*
+    : super self::A::•()
+    ;
+  abstract forwarding-stub method foo([dynamic a = #C1]) → void;
+}
+class F extends self::E {
+  synthetic constructor •() → self::F*
+    : super self::E::•()
+    ;
+}
+static method main() → dynamic {}
+
+constants  {
+  #C1 = null
+}
diff --git a/pkg/front_end/testcases/general/abstract_overrides_concrete.dart.strong.transformed.expect b/pkg/front_end/testcases/general/abstract_overrides_concrete.dart.strong.transformed.expect
new file mode 100644
index 0000000..65a5901
--- /dev/null
+++ b/pkg/front_end/testcases/general/abstract_overrides_concrete.dart.strong.transformed.expect
@@ -0,0 +1,102 @@
+library;
+//
+// Problems in library:
+//
+// pkg/front_end/testcases/general/abstract_overrides_concrete.dart:17:7: Error: The implementation of 'foo' in the non-abstract class 'C' does not conform to its interface.
+// class C extends B {}
+//       ^
+// pkg/front_end/testcases/general/abstract_overrides_concrete.dart:6:8: Context: The method 'A.foo' has fewer positional arguments than those of overridden method 'B.foo'.
+//   void foo() {}
+//        ^
+// pkg/front_end/testcases/general/abstract_overrides_concrete.dart:14:8: Context: This is the overridden method ('foo').
+//   void foo([a]);
+//        ^
+//
+// pkg/front_end/testcases/general/abstract_overrides_concrete.dart:19:7: Error: The implementation of 'foo' in the non-abstract class 'D' does not conform to its interface.
+// class D extends A implements I {}
+//       ^
+// pkg/front_end/testcases/general/abstract_overrides_concrete.dart:6:8: Context: The method 'A.foo' has fewer positional arguments than those of overridden method 'I.foo'.
+//   void foo() {}
+//        ^
+// pkg/front_end/testcases/general/abstract_overrides_concrete.dart:10:8: Context: This is the overridden method ('foo').
+//   void foo([a]);
+//        ^
+//
+// pkg/front_end/testcases/general/abstract_overrides_concrete.dart:23:7: Error: The implementation of 'foo' in the non-abstract class 'F' does not conform to its interface.
+// class F extends E {}
+//       ^
+// pkg/front_end/testcases/general/abstract_overrides_concrete.dart:6:8: Context: The method 'A.foo' has fewer positional arguments than those of overridden method 'E.foo'.
+//   void foo() {}
+//        ^
+// pkg/front_end/testcases/general/abstract_overrides_concrete.dart:21:16: Context: This is the overridden method ('foo').
+// abstract class E extends A implements I {}
+//                ^
+//
+import self as self;
+import "dart:core" as core;
+
+class A extends core::Object {
+  synthetic constructor •() → self::A*
+    : super core::Object::•()
+    ;
+  method foo() → void {}
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
+}
+abstract class I extends core::Object {
+  synthetic constructor •() → self::I*
+    : super core::Object::•()
+    ;
+  abstract method foo([dynamic a = #C1]) → void;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
+}
+abstract class B extends self::A {
+  synthetic constructor •() → self::B*
+    : super self::A::•()
+    ;
+  abstract method foo([dynamic a = #C1]) → void;
+}
+class C extends self::B {
+  synthetic constructor •() → self::C*
+    : super self::B::•()
+    ;
+}
+class D extends self::A implements self::I {
+  synthetic constructor •() → self::D*
+    : super self::A::•()
+    ;
+  abstract forwarding-stub method foo([dynamic a = #C1]) → void;
+}
+abstract class E extends self::A implements self::I {
+  synthetic constructor •() → self::E*
+    : super self::A::•()
+    ;
+  abstract forwarding-stub method foo([dynamic a = #C1]) → void;
+}
+class F extends self::E {
+  synthetic constructor •() → self::F*
+    : super self::E::•()
+    ;
+}
+static method main() → dynamic {}
+
+constants  {
+  #C1 = null
+}
diff --git a/pkg/front_end/testcases/general/abstract_overrides_concrete.dart.textual_outline.expect b/pkg/front_end/testcases/general/abstract_overrides_concrete.dart.textual_outline.expect
new file mode 100644
index 0000000..5b023fe
--- /dev/null
+++ b/pkg/front_end/testcases/general/abstract_overrides_concrete.dart.textual_outline.expect
@@ -0,0 +1,21 @@
+class A {
+  void foo() {}
+}
+
+abstract class I {
+  void foo([a]);
+}
+
+abstract class B extends A {
+  void foo([a]);
+}
+
+class C extends B {}
+
+class D extends A implements I {}
+
+abstract class E extends A implements I {}
+
+class F extends E {}
+
+main() {}
diff --git a/pkg/front_end/testcases/general/abstract_overrides_concrete.dart.textual_outline_modelled.expect b/pkg/front_end/testcases/general/abstract_overrides_concrete.dart.textual_outline_modelled.expect
new file mode 100644
index 0000000..7f52cec
--- /dev/null
+++ b/pkg/front_end/testcases/general/abstract_overrides_concrete.dart.textual_outline_modelled.expect
@@ -0,0 +1,21 @@
+abstract class B extends A {
+  void foo([a]);
+}
+
+abstract class E extends A implements I {}
+
+abstract class I {
+  void foo([a]);
+}
+
+class A {
+  void foo() {}
+}
+
+class C extends B {}
+
+class D extends A implements I {}
+
+class F extends E {}
+
+main() {}
diff --git a/pkg/front_end/testcases/general/implicit_covariance.dart b/pkg/front_end/testcases/general/implicit_covariance.dart
new file mode 100644
index 0000000..90b9dfc
--- /dev/null
+++ b/pkg/front_end/testcases/general/implicit_covariance.dart
@@ -0,0 +1,19 @@
+// Copyright (c) 2020, the Dart project authors.  Please see the AUTHORS file
+// for details. All rights reserved. Use of this source code is governed by a
+// BSD-style license that can be found in the LICENSE file.
+
+abstract class A<T> {
+  foo(T x);
+}
+
+abstract class B<T> implements A<T> {}
+
+class C {
+  foo(num x) {}
+}
+
+class D<T extends num> extends C with B<T> {}
+
+class E<T extends num> = C with B<T>;
+
+main() {}
diff --git a/pkg/front_end/testcases/general/implicit_covariance.dart.outline.expect b/pkg/front_end/testcases/general/implicit_covariance.dart.outline.expect
new file mode 100644
index 0000000..43c24e3
--- /dev/null
+++ b/pkg/front_end/testcases/general/implicit_covariance.dart.outline.expect
@@ -0,0 +1,69 @@
+library;
+import self as self;
+import "dart:core" as core;
+
+abstract class A<T extends core::Object* = dynamic> extends core::Object {
+  synthetic constructor •() → self::A<self::A::T*>*
+    ;
+  abstract method foo(generic-covariant-impl self::A::T* x) → dynamic;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
+}
+abstract class B<T extends core::Object* = dynamic> extends core::Object implements self::A<self::B::T*> {
+  synthetic constructor •() → self::B<self::B::T*>*
+    ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
+}
+class C extends core::Object {
+  synthetic constructor •() → self::C*
+    ;
+  method foo(core::num* x) → dynamic
+    ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
+}
+abstract class _D&C&B<T extends core::num* = core::num*> = self::C with self::B<self::_D&C&B::T*> /*isAnonymousMixin*/  {
+  synthetic constructor •() → self::_D&C&B<self::_D&C&B::T*>*
+    : super self::C::•()
+    ;
+  forwarding-stub method foo(generic-covariant-impl core::num* x) → dynamic
+    return super.{self::C::foo}(x);
+}
+class D<T extends core::num* = core::num*> extends self::_D&C&B<self::D::T*> {
+  synthetic constructor •() → self::D<self::D::T*>*
+    ;
+}
+class E<T extends core::num* = core::num*> = self::C with self::B<self::E::T*> {
+  synthetic constructor •() → self::E<self::E::T*>*
+    : super self::C::•()
+    ;
+  forwarding-stub method foo(generic-covariant-impl core::num* x) → dynamic
+    return super.{self::C::foo}(x);
+}
+static method main() → dynamic
+  ;
diff --git a/pkg/front_end/testcases/general/implicit_covariance.dart.strong.expect b/pkg/front_end/testcases/general/implicit_covariance.dart.strong.expect
new file mode 100644
index 0000000..e103b72
--- /dev/null
+++ b/pkg/front_end/testcases/general/implicit_covariance.dart.strong.expect
@@ -0,0 +1,71 @@
+library;
+import self as self;
+import "dart:core" as core;
+
+abstract class A<T extends core::Object* = dynamic> extends core::Object {
+  synthetic constructor •() → self::A<self::A::T*>*
+    : super core::Object::•()
+    ;
+  abstract method foo(generic-covariant-impl self::A::T* x) → dynamic;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
+}
+abstract class B<T extends core::Object* = dynamic> extends core::Object implements self::A<self::B::T*> {
+  synthetic constructor •() → self::B<self::B::T*>*
+    : super core::Object::•()
+    ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
+}
+class C extends core::Object {
+  synthetic constructor •() → self::C*
+    : super core::Object::•()
+    ;
+  method foo(core::num* x) → dynamic {}
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
+}
+abstract class _D&C&B<T extends core::num* = core::num*> = self::C with self::B<self::_D&C&B::T*> /*isAnonymousMixin*/  {
+  synthetic constructor •() → self::_D&C&B<self::_D&C&B::T*>*
+    : super self::C::•()
+    ;
+  forwarding-stub method foo(generic-covariant-impl core::num* x) → dynamic
+    return super.{self::C::foo}(x);
+}
+class D<T extends core::num* = core::num*> extends self::_D&C&B<self::D::T*> {
+  synthetic constructor •() → self::D<self::D::T*>*
+    : super self::_D&C&B::•()
+    ;
+}
+class E<T extends core::num* = core::num*> = self::C with self::B<self::E::T*> {
+  synthetic constructor •() → self::E<self::E::T*>*
+    : super self::C::•()
+    ;
+  forwarding-stub method foo(generic-covariant-impl core::num* x) → dynamic
+    return super.{self::C::foo}(x);
+}
+static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/general/implicit_covariance.dart.strong.transformed.expect b/pkg/front_end/testcases/general/implicit_covariance.dart.strong.transformed.expect
new file mode 100644
index 0000000..9ce9f3f
--- /dev/null
+++ b/pkg/front_end/testcases/general/implicit_covariance.dart.strong.transformed.expect
@@ -0,0 +1,91 @@
+library;
+import self as self;
+import "dart:core" as core;
+
+abstract class A<T extends core::Object* = dynamic> extends core::Object {
+  synthetic constructor •() → self::A<self::A::T*>*
+    : super core::Object::•()
+    ;
+  abstract method foo(generic-covariant-impl self::A::T* x) → dynamic;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
+}
+abstract class B<T extends core::Object* = dynamic> extends core::Object implements self::A<self::B::T*> {
+  synthetic constructor •() → self::B<self::B::T*>*
+    : super core::Object::•()
+    ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
+}
+class C extends core::Object {
+  synthetic constructor •() → self::C*
+    : super core::Object::•()
+    ;
+  method foo(core::num* x) → dynamic {}
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
+}
+abstract class _D&C&B<T extends core::num* = core::num*> extends self::C implements self::B<self::_D&C&B::T*> /*isAnonymousMixin,isEliminatedMixin*/  {
+  synthetic constructor •() → self::_D&C&B<self::_D&C&B::T*>*
+    : super self::C::•()
+    ;
+  forwarding-stub method foo(generic-covariant-impl core::num* x) → dynamic
+    return super.{self::C::foo}(x);
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
+}
+class D<T extends core::num* = core::num*> extends self::_D&C&B<self::D::T*> {
+  synthetic constructor •() → self::D<self::D::T*>*
+    : super self::_D&C&B::•()
+    ;
+}
+class E<T extends core::num* = core::num*> extends self::C implements self::B<self::E::T*> /*isEliminatedMixin*/  {
+  synthetic constructor •() → self::E<self::E::T*>*
+    : super self::C::•()
+    ;
+  forwarding-stub method foo(generic-covariant-impl core::num* x) → dynamic
+    return super.{self::C::foo}(x);
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
+}
+static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/general/implicit_covariance.dart.textual_outline.expect b/pkg/front_end/testcases/general/implicit_covariance.dart.textual_outline.expect
new file mode 100644
index 0000000..764181a
--- /dev/null
+++ b/pkg/front_end/testcases/general/implicit_covariance.dart.textual_outline.expect
@@ -0,0 +1,14 @@
+abstract class A<T> {
+  foo(T x);
+}
+
+abstract class B<T> implements A<T> {}
+
+class C {
+  foo(num x) {}
+}
+
+class D<T extends num> extends C with B<T> {}
+
+class E<T extends num> = C with B<T>;
+main() {}
diff --git a/pkg/front_end/testcases/general/implicit_covariance.dart.textual_outline_modelled.expect b/pkg/front_end/testcases/general/implicit_covariance.dart.textual_outline_modelled.expect
new file mode 100644
index 0000000..764181a
--- /dev/null
+++ b/pkg/front_end/testcases/general/implicit_covariance.dart.textual_outline_modelled.expect
@@ -0,0 +1,14 @@
+abstract class A<T> {
+  foo(T x);
+}
+
+abstract class B<T> implements A<T> {}
+
+class C {
+  foo(num x) {}
+}
+
+class D<T extends num> extends C with B<T> {}
+
+class E<T extends num> = C with B<T>;
+main() {}
diff --git a/pkg/front_end/testcases/general/issue41210a.dart.outline.expect b/pkg/front_end/testcases/general/issue41210a.dart.outline.expect
index bd1ec3c..0258b21 100644
--- a/pkg/front_end/testcases/general/issue41210a.dart.outline.expect
+++ b/pkg/front_end/testcases/general/issue41210a.dart.outline.expect
@@ -140,8 +140,6 @@
 class E extends self::_E&Object&A&D {
   synthetic constructor •() → self::E*
     ;
-  forwarding-stub method method(covariant core::num* i, {core::String* s}) → core::String*
-    return super.{self::A::method}(i, s: s);
 }
 static method main() → dynamic
   ;
diff --git a/pkg/front_end/testcases/general/issue41210a.dart.strong.expect b/pkg/front_end/testcases/general/issue41210a.dart.strong.expect
index 14eb392..6117f4a 100644
--- a/pkg/front_end/testcases/general/issue41210a.dart.strong.expect
+++ b/pkg/front_end/testcases/general/issue41210a.dart.strong.expect
@@ -146,8 +146,6 @@
   synthetic constructor •() → self::E*
     : super self::_E&Object&A&D::•()
     ;
-  forwarding-stub method method(covariant core::num* i, {core::String* s = #C1}) → core::String*
-    return super.{self::A::method}(i, s: s);
 }
 static method main() → dynamic {
   core::print(new self::C::•().{self::C::method}(0));
diff --git a/pkg/front_end/testcases/general/with_dependencies/stub_or_not/stub_or_not.no_link.dart.outline.expect b/pkg/front_end/testcases/general/with_dependencies/stub_or_not/stub_or_not.no_link.dart.outline.expect
index 2d74190..35b37a6 100644
--- a/pkg/front_end/testcases/general/with_dependencies/stub_or_not/stub_or_not.no_link.dart.outline.expect
+++ b/pkg/front_end/testcases/general/with_dependencies/stub_or_not/stub_or_not.no_link.dart.outline.expect
@@ -1,14 +1,12 @@
 library;
 import self as self;
 import "stub_or_not_lib1.dart" as stu;
-import "stub_or_not_lib2.dart" as stu2;
 
 import "org-dartlang-testcase:///stub_or_not_lib1.dart";
 
 class ProblemClass extends stu::Foo {
   synthetic constructor •() → self::ProblemClass*
     ;
-  abstract forwarding-stub method handleEvent(covariant stu2::EvenFileB* entry) → void;
 }
 static method main() → dynamic
   ;
diff --git a/pkg/front_end/testcases/general/with_dependencies/stub_or_not/stub_or_not.no_link.dart.strong.expect b/pkg/front_end/testcases/general/with_dependencies/stub_or_not/stub_or_not.no_link.dart.strong.expect
index 077097a..e5802ab 100644
--- a/pkg/front_end/testcases/general/with_dependencies/stub_or_not/stub_or_not.no_link.dart.strong.expect
+++ b/pkg/front_end/testcases/general/with_dependencies/stub_or_not/stub_or_not.no_link.dart.strong.expect
@@ -1,7 +1,6 @@
 library;
 import self as self;
 import "stub_or_not_lib1.dart" as stu;
-import "stub_or_not_lib2.dart" as stu2;
 
 import "org-dartlang-testcase:///stub_or_not_lib1.dart";
 
@@ -9,7 +8,6 @@
   synthetic constructor •() → self::ProblemClass*
     : super stu::Foo::•()
     ;
-  abstract forwarding-stub method handleEvent(covariant stu2::EvenFileB* entry) → void;
 }
 static method main() → dynamic {}
 
diff --git a/pkg/front_end/testcases/general/with_dependencies/stub_or_not/stub_or_not.no_link.dart.strong.transformed.expect b/pkg/front_end/testcases/general/with_dependencies/stub_or_not/stub_or_not.no_link.dart.strong.transformed.expect
index 077097a..e5802ab 100644
--- a/pkg/front_end/testcases/general/with_dependencies/stub_or_not/stub_or_not.no_link.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/general/with_dependencies/stub_or_not/stub_or_not.no_link.dart.strong.transformed.expect
@@ -1,7 +1,6 @@
 library;
 import self as self;
 import "stub_or_not_lib1.dart" as stu;
-import "stub_or_not_lib2.dart" as stu2;
 
 import "org-dartlang-testcase:///stub_or_not_lib1.dart";
 
@@ -9,7 +8,6 @@
   synthetic constructor •() → self::ProblemClass*
     : super stu::Foo::•()
     ;
-  abstract forwarding-stub method handleEvent(covariant stu2::EvenFileB* entry) → void;
 }
 static method main() → dynamic {}
 
diff --git a/pkg/front_end/testcases/incremental_initialize_from_dill/flutter_mixin_failure_1.yaml.world.1.expect b/pkg/front_end/testcases/incremental_initialize_from_dill/flutter_mixin_failure_1.yaml.world.1.expect
index 6ff4557..649f761 100644
--- a/pkg/front_end/testcases/incremental_initialize_from_dill/flutter_mixin_failure_1.yaml.world.1.expect
+++ b/pkg/front_end/testcases/incremental_initialize_from_dill/flutter_mixin_failure_1.yaml.world.1.expect
@@ -71,7 +71,6 @@
     synthetic constructor •() → lib::Quux*
       : super lib::_Quux&Qux&MyMixin::•()
       ;
-    abstract forwarding-stub method hello(covariant lib::FooEntry* entry) → void;
   }
 }
 library from "org-dartlang-test:///main.dart" as main {
diff --git a/pkg/front_end/testcases/incremental_initialize_from_dill/flutter_mixin_failure_1.yaml.world.2.expect b/pkg/front_end/testcases/incremental_initialize_from_dill/flutter_mixin_failure_1.yaml.world.2.expect
index f0860a0..077d9cb 100644
--- a/pkg/front_end/testcases/incremental_initialize_from_dill/flutter_mixin_failure_1.yaml.world.2.expect
+++ b/pkg/front_end/testcases/incremental_initialize_from_dill/flutter_mixin_failure_1.yaml.world.2.expect
@@ -71,7 +71,6 @@
     synthetic constructor •() → lib::Quux*
       : super lib::_Quux&Qux&MyMixin::•()
       ;
-    abstract forwarding-stub method hello(covariant lib::FooEntry* entry) → void;
   }
 }
 library from "org-dartlang-test:///main.dart" as main {
diff --git a/pkg/front_end/testcases/incremental_initialize_from_dill/no_outline_change_22.yaml.world.1.expect b/pkg/front_end/testcases/incremental_initialize_from_dill/no_outline_change_22.yaml.world.1.expect
index 2e894e1..29a46f9 100644
--- a/pkg/front_end/testcases/incremental_initialize_from_dill/no_outline_change_22.yaml.world.1.expect
+++ b/pkg/front_end/testcases/incremental_initialize_from_dill/no_outline_change_22.yaml.world.1.expect
@@ -10,6 +10,18 @@
     abstract member-signature get length() → dart.core::int*;
     abstract member-signature operator [](dart.core::int* index) → dart.core::int*;
     abstract member-signature operator []=(dart.core::int* index, generic-covariant-impl dart.core::int* value) → void;
+    method /*isNonNullableByDefault, from org-dartlang-sdk:///sdk/lib/collection/list.dart */ toString() → dart.core::String
+      return dart.collection::IterableBase::iterableToFullString(this, "[", "]");
+    abstract member-signature get _identityHashCode() → dart.core::int*;
+    abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → dart.core::bool*;
+    abstract member-signature method _simpleInstanceOf(dynamic type) → dart.core::bool*;
+    abstract member-signature method _simpleInstanceOfTrue(dynamic type) → dart.core::bool*;
+    abstract member-signature method _simpleInstanceOfFalse(dynamic type) → dart.core::bool*;
+    abstract member-signature operator ==(dynamic other) → dart.core::bool*;
+    abstract member-signature get hashCode() → dart.core::int*;
+    abstract member-signature method noSuchMethod(dart.core::Invocation* invocation) → dynamic;
+    abstract member-signature get runtimeType() → dart.core::Type*;
+    abstract member-signature set length(dart.core::int* newLength) → void;
     get /*isNonNullableByDefault, from org-dartlang-sdk:///sdk/lib/collection/list.dart */ iterator() → dart.core::Iterator<dart.core::int*>
       return new dart._internal::ListIterator::•<dart.core::int*>(this);
     method /*isNonNullableByDefault, from org-dartlang-sdk:///sdk/lib/collection/list.dart */ elementAt(dart.core::int index) → dart.core::int*
@@ -30,6 +42,33 @@
       return this.{dart.core::List::length}.{dart.core::num::==}(0);
     get /*isNonNullableByDefault, from org-dartlang-sdk:///sdk/lib/collection/list.dart */ isNotEmpty() → dart.core::bool
       return !this.{dart.collection::ListMixin::isEmpty};
+    get /*isNonNullableByDefault, from org-dartlang-sdk:///sdk/lib/collection/list.dart */ first() → dart.core::int* {
+      if(this.{dart.core::List::length}.{dart.core::num::==}(0))
+        throw dart._internal::IterableElementError::noElement();
+      return this.{dart.core::List::[]}(0);
+    }
+    set /*isNonNullableByDefault, from org-dartlang-sdk:///sdk/lib/collection/list.dart */ first(generic-covariant-impl dart.core::int* value) → void {
+      if(this.{dart.core::List::length}.{dart.core::num::==}(0))
+        throw dart._internal::IterableElementError::noElement();
+      this.{dart.core::List::[]=}(0, value);
+    }
+    get /*isNonNullableByDefault, from org-dartlang-sdk:///sdk/lib/collection/list.dart */ last() → dart.core::int* {
+      if(this.{dart.core::List::length}.{dart.core::num::==}(0))
+        throw dart._internal::IterableElementError::noElement();
+      return this.{dart.core::List::[]}(this.{dart.core::List::length}.{dart.core::num::-}(1));
+    }
+    set /*isNonNullableByDefault, from org-dartlang-sdk:///sdk/lib/collection/list.dart */ last(generic-covariant-impl dart.core::int* value) → void {
+      if(this.{dart.core::List::length}.{dart.core::num::==}(0))
+        throw dart._internal::IterableElementError::noElement();
+      this.{dart.core::List::[]=}(this.{dart.core::List::length}.{dart.core::num::-}(1), value);
+    }
+    get /*isNonNullableByDefault, from org-dartlang-sdk:///sdk/lib/collection/list.dart */ single() → dart.core::int* {
+      if(this.{dart.core::List::length}.{dart.core::num::==}(0))
+        throw dart._internal::IterableElementError::noElement();
+      if(this.{dart.core::List::length}.{dart.core::num::>}(1))
+        throw dart._internal::IterableElementError::tooMany();
+      return this.{dart.core::List::[]}(0);
+    }
     method /*isNonNullableByDefault, from org-dartlang-sdk:///sdk/lib/collection/list.dart */ contains(dart.core::Object? element) → dart.core::bool {
       dart.core::int length = this.{dart.core::List::length};
       for (dart.core::int i = 0; i.{dart.core::num::<}(length); i = i.{dart.core::num::+}(1)) {
@@ -181,6 +220,9 @@
       }
       return result;
     }
+    method /*isNonNullableByDefault, from org-dartlang-sdk:///sdk/lib/collection/list.dart */ add(generic-covariant-impl dart.core::int* element) → void {
+      this.{dart.core::List::[]=}(let final dart.core::int #t2 = this.{dart.core::List::length} in let final dart.core::int #t3 = this.{dart.core::List::length} = #t2.{dart.core::num::+}(1) in #t2, element);
+    }
     method /*isNonNullableByDefault, from org-dartlang-sdk:///sdk/lib/collection/list.dart */ addAll(generic-covariant-impl dart.core::Iterable<dart.core::int*> iterable) → void {
       dart.core::int i = this.{dart.core::List::length};
       {
@@ -238,10 +280,24 @@
         this.{dart.core::List::length} = retained.{dart.core::List::length};
       }
     }
+    method /*isNonNullableByDefault, from org-dartlang-sdk:///sdk/lib/collection/list.dart */ clear() → void {
+      this.{dart.core::List::length} = 0;
+    }
     method /*isNonNullableByDefault, from org-dartlang-sdk:///sdk/lib/collection/list.dart */ cast<R extends dart.core::Object? = dynamic>() → dart.core::List<main::_WithListMixin&Object&ListMixin::cast::R%>
       return dart.core::List::castFrom<dart.core::int*, main::_WithListMixin&Object&ListMixin::cast::R%>(this);
+    method /*isNonNullableByDefault, from org-dartlang-sdk:///sdk/lib/collection/list.dart */ removeLast() → dart.core::int* {
+      if(this.{dart.core::List::length}.{dart.core::num::==}(0)) {
+        throw dart._internal::IterableElementError::noElement();
+      }
+      dart.core::int* result = this.{dart.core::List::[]}(this.{dart.core::List::length}.{dart.core::num::-}(1));
+      this.{dart.core::List::length} = this.{dart.core::List::length}.{dart.core::num::-}(1);
+      return result;
+    }
     method /*isNonNullableByDefault, from org-dartlang-sdk:///sdk/lib/collection/list.dart */ sort([(dart.core::int*, dart.core::int*) →? dart.core::int compare = #C2]) → void {
-      dart._internal::Sort::sort<dart.core::int*>(this, let final (dart.core::int*, dart.core::int*) →? dart.core::int #t2 = compare in #t2.{dart.core::Object::==}(null) ?{(dart.core::int*, dart.core::int*) → dart.core::int} #C6 : #t2{(dart.core::int*, dart.core::int*) → dart.core::int});
+      dart._internal::Sort::sort<dart.core::int*>(this, let final (dart.core::int*, dart.core::int*) →? dart.core::int #t4 = compare in #t4.{dart.core::Object::==}(null) ?{(dart.core::int*, dart.core::int*) → dart.core::int} #C6 : #t4{(dart.core::int*, dart.core::int*) → dart.core::int});
+    }
+    static method /*isNonNullableByDefault, from org-dartlang-sdk:///sdk/lib/collection/list.dart */ _compareAny(dynamic a, dynamic b) → dart.core::int {
+      return dart.core::Comparable::compare(a as{ForNonNullableByDefault} dart.core::Comparable<dynamic>, b as{ForNonNullableByDefault} dart.core::Comparable<dynamic>);
     }
     method /*isNonNullableByDefault, from org-dartlang-sdk:///sdk/lib/collection/list.dart */ shuffle([dart.math::Random? random = #C2]) → void {
       random.{dart.core::Object::==}(null) ?{dart.math::Random} random = dart.math::Random::•() : null;
@@ -261,22 +317,22 @@
     }
     operator /*isNonNullableByDefault, from org-dartlang-sdk:///sdk/lib/collection/list.dart */ +(generic-covariant-impl dart.core::List<dart.core::int*> other) → dart.core::List<dart.core::int*>
       return block {
-        final dart.core::List<dart.core::int*> #t3 = <dart.core::int*>[];
+        final dart.core::List<dart.core::int*> #t5 = <dart.core::int*>[];
         {
           dart.core::Iterator<dart.core::int*> :sync-for-iterator = this.{dart.core::Iterable::iterator};
           for (; :sync-for-iterator.{dart.core::Iterator::moveNext}(); ) {
-            final dart.core::int* #t4 = :sync-for-iterator.{dart.core::Iterator::current};
-            #t3.{dart.core::List::add}(#t4);
+            final dart.core::int* #t6 = :sync-for-iterator.{dart.core::Iterator::current};
+            #t5.{dart.core::List::add}(#t6);
           }
         }
         {
           dart.core::Iterator<dart.core::int*> :sync-for-iterator = other.{dart.core::Iterable::iterator};
           for (; :sync-for-iterator.{dart.core::Iterator::moveNext}(); ) {
-            final dart.core::int* #t5 = :sync-for-iterator.{dart.core::Iterator::current};
-            #t3.{dart.core::List::add}(#t5);
+            final dart.core::int* #t7 = :sync-for-iterator.{dart.core::Iterator::current};
+            #t5.{dart.core::List::add}(#t7);
           }
         }
-      } =>#t3;
+      } =>#t5;
     method /*isNonNullableByDefault, from org-dartlang-sdk:///sdk/lib/collection/list.dart */ sublist(dart.core::int start, [dart.core::int? end = #C2]) → dart.core::List<dart.core::int*> {
       dart.core::int listLength = this.{dart.core::List::length};
       end.{dart.core::num::==}(null) ?{dart.core::int} end = listLength : null;
@@ -296,7 +352,7 @@
       }
     }
     method /*isNonNullableByDefault, from org-dartlang-sdk:///sdk/lib/collection/list.dart */ fillRange(dart.core::int start, dart.core::int end, [generic-covariant-impl dart.core::int? fill = #C2]) → void {
-      dart.core::int* value = let dart.core::int? #t6 = fill in #t6.==(null) ?{dart.core::int*} #t6 : #t6{dart.core::int*};
+      dart.core::int* value = let dart.core::int? #t8 = fill in #t8.==(null) ?{dart.core::int*} #t8 : #t8{dart.core::int*};
       dart.core::RangeError::checkValidRange(start, end, this.{dart.core::List::length});
       for (dart.core::int i = start; i.{dart.core::num::<}(end); i = i.{dart.core::num::+}(1)) {
         this.{dart.core::List::[]=}(i, value);
@@ -474,7 +530,7 @@
           for (; :sync-for-iterator.{dart.core::Iterator::moveNext}(); ) {
             dart.core::int* element = :sync-for-iterator.{dart.core::Iterator::current};
             {
-              this.{dart.core::List::[]=}(let final dart.core::int #t7 = index in let final dart.core::int #t8 = index = #t7.{dart.core::num::+}(1) in #t7, element);
+              this.{dart.core::List::[]=}(let final dart.core::int #t9 = index in let final dart.core::int #t10 = index = #t9.{dart.core::num::+}(1) in #t9, element);
             }
           }
         }
@@ -482,62 +538,6 @@
     }
     get /*isNonNullableByDefault, from org-dartlang-sdk:///sdk/lib/collection/list.dart */ reversed() → dart.core::Iterable<dart.core::int*>
       return new dart._internal::ReversedListIterable::•<dart.core::int*>(this);
-    method /*isNonNullableByDefault, from org-dartlang-sdk:///sdk/lib/collection/list.dart */ toString() → dart.core::String
-      return dart.collection::IterableBase::iterableToFullString(this, "[", "]");
-    abstract member-signature get _identityHashCode() → dart.core::int*;
-    abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → dart.core::bool*;
-    abstract member-signature method _simpleInstanceOf(dynamic type) → dart.core::bool*;
-    abstract member-signature method _simpleInstanceOfTrue(dynamic type) → dart.core::bool*;
-    abstract member-signature method _simpleInstanceOfFalse(dynamic type) → dart.core::bool*;
-    abstract member-signature operator ==(dynamic other) → dart.core::bool*;
-    abstract member-signature get hashCode() → dart.core::int*;
-    abstract member-signature method noSuchMethod(dart.core::Invocation* invocation) → dynamic;
-    abstract member-signature get runtimeType() → dart.core::Type*;
-    abstract member-signature set length(dart.core::int* newLength) → void;
-    get /*isNonNullableByDefault, from org-dartlang-sdk:///sdk/lib/collection/list.dart */ first() → dart.core::int* {
-      if(this.{dart.core::List::length}.{dart.core::num::==}(0))
-        throw dart._internal::IterableElementError::noElement();
-      return this.{dart.core::List::[]}(0);
-    }
-    set /*isNonNullableByDefault, from org-dartlang-sdk:///sdk/lib/collection/list.dart */ first(generic-covariant-impl dart.core::int* value) → void {
-      if(this.{dart.core::List::length}.{dart.core::num::==}(0))
-        throw dart._internal::IterableElementError::noElement();
-      this.{dart.core::List::[]=}(0, value);
-    }
-    get /*isNonNullableByDefault, from org-dartlang-sdk:///sdk/lib/collection/list.dart */ last() → dart.core::int* {
-      if(this.{dart.core::List::length}.{dart.core::num::==}(0))
-        throw dart._internal::IterableElementError::noElement();
-      return this.{dart.core::List::[]}(this.{dart.core::List::length}.{dart.core::num::-}(1));
-    }
-    set /*isNonNullableByDefault, from org-dartlang-sdk:///sdk/lib/collection/list.dart */ last(generic-covariant-impl dart.core::int* value) → void {
-      if(this.{dart.core::List::length}.{dart.core::num::==}(0))
-        throw dart._internal::IterableElementError::noElement();
-      this.{dart.core::List::[]=}(this.{dart.core::List::length}.{dart.core::num::-}(1), value);
-    }
-    get /*isNonNullableByDefault, from org-dartlang-sdk:///sdk/lib/collection/list.dart */ single() → dart.core::int* {
-      if(this.{dart.core::List::length}.{dart.core::num::==}(0))
-        throw dart._internal::IterableElementError::noElement();
-      if(this.{dart.core::List::length}.{dart.core::num::>}(1))
-        throw dart._internal::IterableElementError::tooMany();
-      return this.{dart.core::List::[]}(0);
-    }
-    method /*isNonNullableByDefault, from org-dartlang-sdk:///sdk/lib/collection/list.dart */ add(generic-covariant-impl dart.core::int* element) → void {
-      this.{dart.core::List::[]=}(let final dart.core::int #t9 = this.{dart.core::List::length} in let final dart.core::int #t10 = this.{dart.core::List::length} = #t9.{dart.core::num::+}(1) in #t9, element);
-    }
-    method /*isNonNullableByDefault, from org-dartlang-sdk:///sdk/lib/collection/list.dart */ clear() → void {
-      this.{dart.core::List::length} = 0;
-    }
-    method /*isNonNullableByDefault, from org-dartlang-sdk:///sdk/lib/collection/list.dart */ removeLast() → dart.core::int* {
-      if(this.{dart.core::List::length}.{dart.core::num::==}(0)) {
-        throw dart._internal::IterableElementError::noElement();
-      }
-      dart.core::int* result = this.{dart.core::List::[]}(this.{dart.core::List::length}.{dart.core::num::-}(1));
-      this.{dart.core::List::length} = this.{dart.core::List::length}.{dart.core::num::-}(1);
-      return result;
-    }
-    static method /*isNonNullableByDefault, from org-dartlang-sdk:///sdk/lib/collection/list.dart */ _compareAny(dynamic a, dynamic b) → dart.core::int {
-      return dart.core::Comparable::compare(a as{ForNonNullableByDefault} dart.core::Comparable<dynamic>, b as{ForNonNullableByDefault} dart.core::Comparable<dynamic>);
-    }
   }
   class WithListMixin extends main::_WithListMixin&Object&ListMixin {
     field dart.core::int* length = 2;
diff --git a/pkg/front_end/testcases/incremental_initialize_from_dill/no_outline_change_22.yaml.world.2.expect b/pkg/front_end/testcases/incremental_initialize_from_dill/no_outline_change_22.yaml.world.2.expect
index 2e894e1..29a46f9 100644
--- a/pkg/front_end/testcases/incremental_initialize_from_dill/no_outline_change_22.yaml.world.2.expect
+++ b/pkg/front_end/testcases/incremental_initialize_from_dill/no_outline_change_22.yaml.world.2.expect
@@ -10,6 +10,18 @@
     abstract member-signature get length() → dart.core::int*;
     abstract member-signature operator [](dart.core::int* index) → dart.core::int*;
     abstract member-signature operator []=(dart.core::int* index, generic-covariant-impl dart.core::int* value) → void;
+    method /*isNonNullableByDefault, from org-dartlang-sdk:///sdk/lib/collection/list.dart */ toString() → dart.core::String
+      return dart.collection::IterableBase::iterableToFullString(this, "[", "]");
+    abstract member-signature get _identityHashCode() → dart.core::int*;
+    abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → dart.core::bool*;
+    abstract member-signature method _simpleInstanceOf(dynamic type) → dart.core::bool*;
+    abstract member-signature method _simpleInstanceOfTrue(dynamic type) → dart.core::bool*;
+    abstract member-signature method _simpleInstanceOfFalse(dynamic type) → dart.core::bool*;
+    abstract member-signature operator ==(dynamic other) → dart.core::bool*;
+    abstract member-signature get hashCode() → dart.core::int*;
+    abstract member-signature method noSuchMethod(dart.core::Invocation* invocation) → dynamic;
+    abstract member-signature get runtimeType() → dart.core::Type*;
+    abstract member-signature set length(dart.core::int* newLength) → void;
     get /*isNonNullableByDefault, from org-dartlang-sdk:///sdk/lib/collection/list.dart */ iterator() → dart.core::Iterator<dart.core::int*>
       return new dart._internal::ListIterator::•<dart.core::int*>(this);
     method /*isNonNullableByDefault, from org-dartlang-sdk:///sdk/lib/collection/list.dart */ elementAt(dart.core::int index) → dart.core::int*
@@ -30,6 +42,33 @@
       return this.{dart.core::List::length}.{dart.core::num::==}(0);
     get /*isNonNullableByDefault, from org-dartlang-sdk:///sdk/lib/collection/list.dart */ isNotEmpty() → dart.core::bool
       return !this.{dart.collection::ListMixin::isEmpty};
+    get /*isNonNullableByDefault, from org-dartlang-sdk:///sdk/lib/collection/list.dart */ first() → dart.core::int* {
+      if(this.{dart.core::List::length}.{dart.core::num::==}(0))
+        throw dart._internal::IterableElementError::noElement();
+      return this.{dart.core::List::[]}(0);
+    }
+    set /*isNonNullableByDefault, from org-dartlang-sdk:///sdk/lib/collection/list.dart */ first(generic-covariant-impl dart.core::int* value) → void {
+      if(this.{dart.core::List::length}.{dart.core::num::==}(0))
+        throw dart._internal::IterableElementError::noElement();
+      this.{dart.core::List::[]=}(0, value);
+    }
+    get /*isNonNullableByDefault, from org-dartlang-sdk:///sdk/lib/collection/list.dart */ last() → dart.core::int* {
+      if(this.{dart.core::List::length}.{dart.core::num::==}(0))
+        throw dart._internal::IterableElementError::noElement();
+      return this.{dart.core::List::[]}(this.{dart.core::List::length}.{dart.core::num::-}(1));
+    }
+    set /*isNonNullableByDefault, from org-dartlang-sdk:///sdk/lib/collection/list.dart */ last(generic-covariant-impl dart.core::int* value) → void {
+      if(this.{dart.core::List::length}.{dart.core::num::==}(0))
+        throw dart._internal::IterableElementError::noElement();
+      this.{dart.core::List::[]=}(this.{dart.core::List::length}.{dart.core::num::-}(1), value);
+    }
+    get /*isNonNullableByDefault, from org-dartlang-sdk:///sdk/lib/collection/list.dart */ single() → dart.core::int* {
+      if(this.{dart.core::List::length}.{dart.core::num::==}(0))
+        throw dart._internal::IterableElementError::noElement();
+      if(this.{dart.core::List::length}.{dart.core::num::>}(1))
+        throw dart._internal::IterableElementError::tooMany();
+      return this.{dart.core::List::[]}(0);
+    }
     method /*isNonNullableByDefault, from org-dartlang-sdk:///sdk/lib/collection/list.dart */ contains(dart.core::Object? element) → dart.core::bool {
       dart.core::int length = this.{dart.core::List::length};
       for (dart.core::int i = 0; i.{dart.core::num::<}(length); i = i.{dart.core::num::+}(1)) {
@@ -181,6 +220,9 @@
       }
       return result;
     }
+    method /*isNonNullableByDefault, from org-dartlang-sdk:///sdk/lib/collection/list.dart */ add(generic-covariant-impl dart.core::int* element) → void {
+      this.{dart.core::List::[]=}(let final dart.core::int #t2 = this.{dart.core::List::length} in let final dart.core::int #t3 = this.{dart.core::List::length} = #t2.{dart.core::num::+}(1) in #t2, element);
+    }
     method /*isNonNullableByDefault, from org-dartlang-sdk:///sdk/lib/collection/list.dart */ addAll(generic-covariant-impl dart.core::Iterable<dart.core::int*> iterable) → void {
       dart.core::int i = this.{dart.core::List::length};
       {
@@ -238,10 +280,24 @@
         this.{dart.core::List::length} = retained.{dart.core::List::length};
       }
     }
+    method /*isNonNullableByDefault, from org-dartlang-sdk:///sdk/lib/collection/list.dart */ clear() → void {
+      this.{dart.core::List::length} = 0;
+    }
     method /*isNonNullableByDefault, from org-dartlang-sdk:///sdk/lib/collection/list.dart */ cast<R extends dart.core::Object? = dynamic>() → dart.core::List<main::_WithListMixin&Object&ListMixin::cast::R%>
       return dart.core::List::castFrom<dart.core::int*, main::_WithListMixin&Object&ListMixin::cast::R%>(this);
+    method /*isNonNullableByDefault, from org-dartlang-sdk:///sdk/lib/collection/list.dart */ removeLast() → dart.core::int* {
+      if(this.{dart.core::List::length}.{dart.core::num::==}(0)) {
+        throw dart._internal::IterableElementError::noElement();
+      }
+      dart.core::int* result = this.{dart.core::List::[]}(this.{dart.core::List::length}.{dart.core::num::-}(1));
+      this.{dart.core::List::length} = this.{dart.core::List::length}.{dart.core::num::-}(1);
+      return result;
+    }
     method /*isNonNullableByDefault, from org-dartlang-sdk:///sdk/lib/collection/list.dart */ sort([(dart.core::int*, dart.core::int*) →? dart.core::int compare = #C2]) → void {
-      dart._internal::Sort::sort<dart.core::int*>(this, let final (dart.core::int*, dart.core::int*) →? dart.core::int #t2 = compare in #t2.{dart.core::Object::==}(null) ?{(dart.core::int*, dart.core::int*) → dart.core::int} #C6 : #t2{(dart.core::int*, dart.core::int*) → dart.core::int});
+      dart._internal::Sort::sort<dart.core::int*>(this, let final (dart.core::int*, dart.core::int*) →? dart.core::int #t4 = compare in #t4.{dart.core::Object::==}(null) ?{(dart.core::int*, dart.core::int*) → dart.core::int} #C6 : #t4{(dart.core::int*, dart.core::int*) → dart.core::int});
+    }
+    static method /*isNonNullableByDefault, from org-dartlang-sdk:///sdk/lib/collection/list.dart */ _compareAny(dynamic a, dynamic b) → dart.core::int {
+      return dart.core::Comparable::compare(a as{ForNonNullableByDefault} dart.core::Comparable<dynamic>, b as{ForNonNullableByDefault} dart.core::Comparable<dynamic>);
     }
     method /*isNonNullableByDefault, from org-dartlang-sdk:///sdk/lib/collection/list.dart */ shuffle([dart.math::Random? random = #C2]) → void {
       random.{dart.core::Object::==}(null) ?{dart.math::Random} random = dart.math::Random::•() : null;
@@ -261,22 +317,22 @@
     }
     operator /*isNonNullableByDefault, from org-dartlang-sdk:///sdk/lib/collection/list.dart */ +(generic-covariant-impl dart.core::List<dart.core::int*> other) → dart.core::List<dart.core::int*>
       return block {
-        final dart.core::List<dart.core::int*> #t3 = <dart.core::int*>[];
+        final dart.core::List<dart.core::int*> #t5 = <dart.core::int*>[];
         {
           dart.core::Iterator<dart.core::int*> :sync-for-iterator = this.{dart.core::Iterable::iterator};
           for (; :sync-for-iterator.{dart.core::Iterator::moveNext}(); ) {
-            final dart.core::int* #t4 = :sync-for-iterator.{dart.core::Iterator::current};
-            #t3.{dart.core::List::add}(#t4);
+            final dart.core::int* #t6 = :sync-for-iterator.{dart.core::Iterator::current};
+            #t5.{dart.core::List::add}(#t6);
           }
         }
         {
           dart.core::Iterator<dart.core::int*> :sync-for-iterator = other.{dart.core::Iterable::iterator};
           for (; :sync-for-iterator.{dart.core::Iterator::moveNext}(); ) {
-            final dart.core::int* #t5 = :sync-for-iterator.{dart.core::Iterator::current};
-            #t3.{dart.core::List::add}(#t5);
+            final dart.core::int* #t7 = :sync-for-iterator.{dart.core::Iterator::current};
+            #t5.{dart.core::List::add}(#t7);
           }
         }
-      } =>#t3;
+      } =>#t5;
     method /*isNonNullableByDefault, from org-dartlang-sdk:///sdk/lib/collection/list.dart */ sublist(dart.core::int start, [dart.core::int? end = #C2]) → dart.core::List<dart.core::int*> {
       dart.core::int listLength = this.{dart.core::List::length};
       end.{dart.core::num::==}(null) ?{dart.core::int} end = listLength : null;
@@ -296,7 +352,7 @@
       }
     }
     method /*isNonNullableByDefault, from org-dartlang-sdk:///sdk/lib/collection/list.dart */ fillRange(dart.core::int start, dart.core::int end, [generic-covariant-impl dart.core::int? fill = #C2]) → void {
-      dart.core::int* value = let dart.core::int? #t6 = fill in #t6.==(null) ?{dart.core::int*} #t6 : #t6{dart.core::int*};
+      dart.core::int* value = let dart.core::int? #t8 = fill in #t8.==(null) ?{dart.core::int*} #t8 : #t8{dart.core::int*};
       dart.core::RangeError::checkValidRange(start, end, this.{dart.core::List::length});
       for (dart.core::int i = start; i.{dart.core::num::<}(end); i = i.{dart.core::num::+}(1)) {
         this.{dart.core::List::[]=}(i, value);
@@ -474,7 +530,7 @@
           for (; :sync-for-iterator.{dart.core::Iterator::moveNext}(); ) {
             dart.core::int* element = :sync-for-iterator.{dart.core::Iterator::current};
             {
-              this.{dart.core::List::[]=}(let final dart.core::int #t7 = index in let final dart.core::int #t8 = index = #t7.{dart.core::num::+}(1) in #t7, element);
+              this.{dart.core::List::[]=}(let final dart.core::int #t9 = index in let final dart.core::int #t10 = index = #t9.{dart.core::num::+}(1) in #t9, element);
             }
           }
         }
@@ -482,62 +538,6 @@
     }
     get /*isNonNullableByDefault, from org-dartlang-sdk:///sdk/lib/collection/list.dart */ reversed() → dart.core::Iterable<dart.core::int*>
       return new dart._internal::ReversedListIterable::•<dart.core::int*>(this);
-    method /*isNonNullableByDefault, from org-dartlang-sdk:///sdk/lib/collection/list.dart */ toString() → dart.core::String
-      return dart.collection::IterableBase::iterableToFullString(this, "[", "]");
-    abstract member-signature get _identityHashCode() → dart.core::int*;
-    abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → dart.core::bool*;
-    abstract member-signature method _simpleInstanceOf(dynamic type) → dart.core::bool*;
-    abstract member-signature method _simpleInstanceOfTrue(dynamic type) → dart.core::bool*;
-    abstract member-signature method _simpleInstanceOfFalse(dynamic type) → dart.core::bool*;
-    abstract member-signature operator ==(dynamic other) → dart.core::bool*;
-    abstract member-signature get hashCode() → dart.core::int*;
-    abstract member-signature method noSuchMethod(dart.core::Invocation* invocation) → dynamic;
-    abstract member-signature get runtimeType() → dart.core::Type*;
-    abstract member-signature set length(dart.core::int* newLength) → void;
-    get /*isNonNullableByDefault, from org-dartlang-sdk:///sdk/lib/collection/list.dart */ first() → dart.core::int* {
-      if(this.{dart.core::List::length}.{dart.core::num::==}(0))
-        throw dart._internal::IterableElementError::noElement();
-      return this.{dart.core::List::[]}(0);
-    }
-    set /*isNonNullableByDefault, from org-dartlang-sdk:///sdk/lib/collection/list.dart */ first(generic-covariant-impl dart.core::int* value) → void {
-      if(this.{dart.core::List::length}.{dart.core::num::==}(0))
-        throw dart._internal::IterableElementError::noElement();
-      this.{dart.core::List::[]=}(0, value);
-    }
-    get /*isNonNullableByDefault, from org-dartlang-sdk:///sdk/lib/collection/list.dart */ last() → dart.core::int* {
-      if(this.{dart.core::List::length}.{dart.core::num::==}(0))
-        throw dart._internal::IterableElementError::noElement();
-      return this.{dart.core::List::[]}(this.{dart.core::List::length}.{dart.core::num::-}(1));
-    }
-    set /*isNonNullableByDefault, from org-dartlang-sdk:///sdk/lib/collection/list.dart */ last(generic-covariant-impl dart.core::int* value) → void {
-      if(this.{dart.core::List::length}.{dart.core::num::==}(0))
-        throw dart._internal::IterableElementError::noElement();
-      this.{dart.core::List::[]=}(this.{dart.core::List::length}.{dart.core::num::-}(1), value);
-    }
-    get /*isNonNullableByDefault, from org-dartlang-sdk:///sdk/lib/collection/list.dart */ single() → dart.core::int* {
-      if(this.{dart.core::List::length}.{dart.core::num::==}(0))
-        throw dart._internal::IterableElementError::noElement();
-      if(this.{dart.core::List::length}.{dart.core::num::>}(1))
-        throw dart._internal::IterableElementError::tooMany();
-      return this.{dart.core::List::[]}(0);
-    }
-    method /*isNonNullableByDefault, from org-dartlang-sdk:///sdk/lib/collection/list.dart */ add(generic-covariant-impl dart.core::int* element) → void {
-      this.{dart.core::List::[]=}(let final dart.core::int #t9 = this.{dart.core::List::length} in let final dart.core::int #t10 = this.{dart.core::List::length} = #t9.{dart.core::num::+}(1) in #t9, element);
-    }
-    method /*isNonNullableByDefault, from org-dartlang-sdk:///sdk/lib/collection/list.dart */ clear() → void {
-      this.{dart.core::List::length} = 0;
-    }
-    method /*isNonNullableByDefault, from org-dartlang-sdk:///sdk/lib/collection/list.dart */ removeLast() → dart.core::int* {
-      if(this.{dart.core::List::length}.{dart.core::num::==}(0)) {
-        throw dart._internal::IterableElementError::noElement();
-      }
-      dart.core::int* result = this.{dart.core::List::[]}(this.{dart.core::List::length}.{dart.core::num::-}(1));
-      this.{dart.core::List::length} = this.{dart.core::List::length}.{dart.core::num::-}(1);
-      return result;
-    }
-    static method /*isNonNullableByDefault, from org-dartlang-sdk:///sdk/lib/collection/list.dart */ _compareAny(dynamic a, dynamic b) → dart.core::int {
-      return dart.core::Comparable::compare(a as{ForNonNullableByDefault} dart.core::Comparable<dynamic>, b as{ForNonNullableByDefault} dart.core::Comparable<dynamic>);
-    }
   }
   class WithListMixin extends main::_WithListMixin&Object&ListMixin {
     field dart.core::int* length = 2;
diff --git a/pkg/front_end/testcases/nnbd/mix_in_field.dart b/pkg/front_end/testcases/nnbd/mix_in_field.dart
new file mode 100644
index 0000000..e225fd7
--- /dev/null
+++ b/pkg/front_end/testcases/nnbd/mix_in_field.dart
@@ -0,0 +1,17 @@
+// Copyright (c) 2020, the Dart project authors.  Please see the AUTHORS file
+// for details. All rights reserved. Use of this source code is governed by a
+// BSD-style license that can be found in the LICENSE file.
+
+import "dart:async";
+
+class Mixin {
+  FutureOr<Null> m;
+}
+
+class Class extends Object with Mixin {
+  test(dynamic t1) {
+    m = t1;
+  }
+}
+
+main() {}
diff --git a/pkg/front_end/testcases/nnbd/mix_in_field.dart.outline.expect b/pkg/front_end/testcases/nnbd/mix_in_field.dart.outline.expect
new file mode 100644
index 0000000..8ff567c
--- /dev/null
+++ b/pkg/front_end/testcases/nnbd/mix_in_field.dart.outline.expect
@@ -0,0 +1,24 @@
+library /*isNonNullableByDefault*/;
+import self as self;
+import "dart:core" as core;
+
+import "dart:async";
+
+class Mixin extends core::Object {
+  field FutureOr<core::Null?>m;
+  synthetic constructor •() → self::Mixin
+    ;
+}
+abstract class _Class&Object&Mixin = core::Object with self::Mixin /*isAnonymousMixin*/  {
+  synthetic constructor •() → self::_Class&Object&Mixin
+    : super core::Object::•()
+    ;
+}
+class Class extends self::_Class&Object&Mixin {
+  synthetic constructor •() → self::Class
+    ;
+  method test(dynamic t1) → dynamic
+    ;
+}
+static method main() → dynamic
+  ;
diff --git a/pkg/front_end/testcases/nnbd/mix_in_field.dart.strong.expect b/pkg/front_end/testcases/nnbd/mix_in_field.dart.strong.expect
new file mode 100644
index 0000000..41252e1
--- /dev/null
+++ b/pkg/front_end/testcases/nnbd/mix_in_field.dart.strong.expect
@@ -0,0 +1,26 @@
+library /*isNonNullableByDefault*/;
+import self as self;
+import "dart:core" as core;
+
+import "dart:async";
+
+class Mixin extends core::Object {
+  field FutureOr<core::Null?>m = null;
+  synthetic constructor •() → self::Mixin
+    : super core::Object::•()
+    ;
+}
+abstract class _Class&Object&Mixin = core::Object with self::Mixin /*isAnonymousMixin*/  {
+  synthetic constructor •() → self::_Class&Object&Mixin
+    : super core::Object::•()
+    ;
+}
+class Class extends self::_Class&Object&Mixin {
+  synthetic constructor •() → self::Class
+    : super self::_Class&Object&Mixin::•()
+    ;
+  method test(dynamic t1) → dynamic {
+    this.{self::Mixin::m} = t1 as{TypeError,ForDynamic,ForNonNullableByDefault} FutureOr<core::Null?>;
+  }
+}
+static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/nnbd/mix_in_field.dart.strong.transformed.expect b/pkg/front_end/testcases/nnbd/mix_in_field.dart.strong.transformed.expect
new file mode 100644
index 0000000..002d4b2
--- /dev/null
+++ b/pkg/front_end/testcases/nnbd/mix_in_field.dart.strong.transformed.expect
@@ -0,0 +1,27 @@
+library /*isNonNullableByDefault*/;
+import self as self;
+import "dart:core" as core;
+
+import "dart:async";
+
+class Mixin extends core::Object {
+  field FutureOr<core::Null?>m = null;
+  synthetic constructor •() → self::Mixin
+    : super core::Object::•()
+    ;
+}
+abstract class _Class&Object&Mixin extends core::Object implements self::Mixin /*isAnonymousMixin,isEliminatedMixin*/  {
+  field FutureOr<core::Null?>m = null;
+  synthetic constructor •() → self::_Class&Object&Mixin
+    : super core::Object::•()
+    ;
+}
+class Class extends self::_Class&Object&Mixin {
+  synthetic constructor •() → self::Class
+    : super self::_Class&Object&Mixin::•()
+    ;
+  method test(dynamic t1) → dynamic {
+    this.{self::Mixin::m} = t1 as{TypeError,ForDynamic,ForNonNullableByDefault} FutureOr<core::Null?>;
+  }
+}
+static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/nnbd/mix_in_field.dart.textual_outline.expect b/pkg/front_end/testcases/nnbd/mix_in_field.dart.textual_outline.expect
new file mode 100644
index 0000000..4abf4aa
--- /dev/null
+++ b/pkg/front_end/testcases/nnbd/mix_in_field.dart.textual_outline.expect
@@ -0,0 +1,11 @@
+import "dart:async";
+
+class Mixin {
+  FutureOr<Null> m;
+}
+
+class Class extends Object with Mixin {
+  test(dynamic t1) {}
+}
+
+main() {}
diff --git a/pkg/front_end/testcases/nnbd/mix_in_field.dart.textual_outline_modelled.expect b/pkg/front_end/testcases/nnbd/mix_in_field.dart.textual_outline_modelled.expect
new file mode 100644
index 0000000..48243fb
--- /dev/null
+++ b/pkg/front_end/testcases/nnbd/mix_in_field.dart.textual_outline_modelled.expect
@@ -0,0 +1,11 @@
+import "dart:async";
+
+class Class extends Object with Mixin {
+  test(dynamic t1) {}
+}
+
+class Mixin {
+  FutureOr<Null> m;
+}
+
+main() {}
diff --git a/pkg/front_end/testcases/nnbd/mix_in_field.dart.weak.expect b/pkg/front_end/testcases/nnbd/mix_in_field.dart.weak.expect
new file mode 100644
index 0000000..41252e1
--- /dev/null
+++ b/pkg/front_end/testcases/nnbd/mix_in_field.dart.weak.expect
@@ -0,0 +1,26 @@
+library /*isNonNullableByDefault*/;
+import self as self;
+import "dart:core" as core;
+
+import "dart:async";
+
+class Mixin extends core::Object {
+  field FutureOr<core::Null?>m = null;
+  synthetic constructor •() → self::Mixin
+    : super core::Object::•()
+    ;
+}
+abstract class _Class&Object&Mixin = core::Object with self::Mixin /*isAnonymousMixin*/  {
+  synthetic constructor •() → self::_Class&Object&Mixin
+    : super core::Object::•()
+    ;
+}
+class Class extends self::_Class&Object&Mixin {
+  synthetic constructor •() → self::Class
+    : super self::_Class&Object&Mixin::•()
+    ;
+  method test(dynamic t1) → dynamic {
+    this.{self::Mixin::m} = t1 as{TypeError,ForDynamic,ForNonNullableByDefault} FutureOr<core::Null?>;
+  }
+}
+static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/nnbd/mix_in_field.dart.weak.transformed.expect b/pkg/front_end/testcases/nnbd/mix_in_field.dart.weak.transformed.expect
new file mode 100644
index 0000000..002d4b2
--- /dev/null
+++ b/pkg/front_end/testcases/nnbd/mix_in_field.dart.weak.transformed.expect
@@ -0,0 +1,27 @@
+library /*isNonNullableByDefault*/;
+import self as self;
+import "dart:core" as core;
+
+import "dart:async";
+
+class Mixin extends core::Object {
+  field FutureOr<core::Null?>m = null;
+  synthetic constructor •() → self::Mixin
+    : super core::Object::•()
+    ;
+}
+abstract class _Class&Object&Mixin extends core::Object implements self::Mixin /*isAnonymousMixin,isEliminatedMixin*/  {
+  field FutureOr<core::Null?>m = null;
+  synthetic constructor •() → self::_Class&Object&Mixin
+    : super core::Object::•()
+    ;
+}
+class Class extends self::_Class&Object&Mixin {
+  synthetic constructor •() → self::Class
+    : super self::_Class&Object&Mixin::•()
+    ;
+  method test(dynamic t1) → dynamic {
+    this.{self::Mixin::m} = t1 as{TypeError,ForDynamic,ForNonNullableByDefault} FutureOr<core::Null?>;
+  }
+}
+static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/nnbd_mixed/flutter_issue_63029/flutter_issue_63029.dart.weak.expect b/pkg/front_end/testcases/nnbd_mixed/flutter_issue_63029/flutter_issue_63029.dart.weak.expect
index 01c3d59..b915c3f 100644
--- a/pkg/front_end/testcases/nnbd_mixed/flutter_issue_63029/flutter_issue_63029.dart.weak.expect
+++ b/pkg/front_end/testcases/nnbd_mixed/flutter_issue_63029/flutter_issue_63029.dart.weak.expect
@@ -22,7 +22,6 @@
   synthetic constructor •() → self::F
     : super self::_F&B&D::•()
     ;
-  abstract forwarding-stub operator ==(dynamic other) → core::bool*;
 }
 static method main() → dynamic {}
 
diff --git a/pkg/front_end/testcases/nnbd_mixed/flutter_issue_63029/flutter_issue_63029.dart.weak.transformed.expect b/pkg/front_end/testcases/nnbd_mixed/flutter_issue_63029/flutter_issue_63029.dart.weak.transformed.expect
index 2e167fd..891d0f2 100644
--- a/pkg/front_end/testcases/nnbd_mixed/flutter_issue_63029/flutter_issue_63029.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/nnbd_mixed/flutter_issue_63029/flutter_issue_63029.dart.weak.transformed.expect
@@ -31,7 +31,6 @@
   synthetic constructor •() → self::F
     : super self::_F&B&D::•()
     ;
-  abstract forwarding-stub operator ==(dynamic other) → core::bool*;
 }
 static method main() → dynamic {}
 
diff --git a/pkg/front_end/testcases/nnbd_mixed/mixed_mixin.dart b/pkg/front_end/testcases/nnbd_mixed/mixed_mixin.dart
new file mode 100644
index 0000000..e9e928a
--- /dev/null
+++ b/pkg/front_end/testcases/nnbd_mixed/mixed_mixin.dart
@@ -0,0 +1,11 @@
+// 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.7
+
+import 'mixed_mixin_lib.dart';
+
+class C1 with B {}
+
+main() {}
diff --git a/pkg/front_end/testcases/nnbd_mixed/mixed_mixin.dart.textual_outline.expect b/pkg/front_end/testcases/nnbd_mixed/mixed_mixin.dart.textual_outline.expect
new file mode 100644
index 0000000..da386d8
--- /dev/null
+++ b/pkg/front_end/testcases/nnbd_mixed/mixed_mixin.dart.textual_outline.expect
@@ -0,0 +1,6 @@
+// @dart = 2.7
+import 'mixed_mixin_lib.dart';
+
+class C1 with B {}
+
+main() {}
diff --git a/pkg/front_end/testcases/nnbd_mixed/mixed_mixin.dart.textual_outline_modelled.expect b/pkg/front_end/testcases/nnbd_mixed/mixed_mixin.dart.textual_outline_modelled.expect
new file mode 100644
index 0000000..da386d8
--- /dev/null
+++ b/pkg/front_end/testcases/nnbd_mixed/mixed_mixin.dart.textual_outline_modelled.expect
@@ -0,0 +1,6 @@
+// @dart = 2.7
+import 'mixed_mixin_lib.dart';
+
+class C1 with B {}
+
+main() {}
diff --git a/pkg/front_end/testcases/nnbd_mixed/mixed_mixin.dart.weak.expect b/pkg/front_end/testcases/nnbd_mixed/mixed_mixin.dart.weak.expect
new file mode 100644
index 0000000..d7ec8d8
--- /dev/null
+++ b/pkg/front_end/testcases/nnbd_mixed/mixed_mixin.dart.weak.expect
@@ -0,0 +1,76 @@
+library;
+import self as self;
+import "dart:core" as core;
+import "mixed_mixin_lib.dart" as mix;
+
+import "org-dartlang-testcase:///mixed_mixin_lib.dart";
+
+abstract class _C1&Object&B = core::Object with mix::B /*isAnonymousMixin,hasConstConstructor*/  {
+  const synthetic constructor •() → self::_C1&Object&B*
+    : super core::Object::•()
+    ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
+}
+class C1 extends self::_C1&Object&B {
+  synthetic constructor •() → self::C1*
+    : super self::_C1&Object&B::•()
+    ;
+  abstract member-signature get a() → core::List<(core::int*) →* core::int*>*;
+  abstract member-signature set a(core::List<(core::int*) →* core::int*>* _) → void;
+  abstract member-signature method m((core::int*) →* core::int* x) → (core::int*) →* core::int*;
+}
+static method main() → dynamic {}
+
+library /*isNonNullableByDefault*/;
+import self as mix;
+import "dart:core" as core;
+import "mixed_mixin.dart" as self;
+
+import "org-dartlang-testcase:///mixed_mixin.dart";
+
+class B extends core::Object {
+  synthetic constructor •() → mix::B
+    : super core::Object::•()
+    ;
+  get a() → core::List<(core::int) → core::int>
+    return <(core::int) → core::int>[];
+  set a(core::List<(core::int) → core::int> _) → void {}
+  method m((core::int) → core::int x) → (core::int) → core::int
+    return x;
+}
+class Bq extends core::Object {
+  synthetic constructor •() → mix::Bq
+    : super core::Object::•()
+    ;
+  get a() → core::List<(core::int?) → core::int?>
+    return <(core::int?) → core::int?>[];
+  set a(core::List<(core::int?) → core::int?> _) → void {}
+  method m((core::int?) → core::int? x) → (core::int?) → core::int?
+    return x;
+}
+class DiBq1 extends self::C1 implements mix::Bq {
+  synthetic constructor •() → mix::DiBq1
+    : super self::C1::•()
+    ;
+  abstract member-signature get a() → core::List<(core::int?) → core::int?>;
+  abstract member-signature set a(core::List<(core::int?) → core::int?> _) → void;
+  abstract member-signature method m((core::int?) → core::int? x) → (core::int?) → core::int?;
+  abstract member-signature get _identityHashCode() → core::int;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool;
+  abstract member-signature get hashCode() → core::int;
+  abstract member-signature method toString() → core::String;
+  abstract member-signature method noSuchMethod(core::Invocation invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type;
+}
diff --git a/pkg/front_end/testcases/nnbd_mixed/mixed_mixin.dart.weak.transformed.expect b/pkg/front_end/testcases/nnbd_mixed/mixed_mixin.dart.weak.transformed.expect
new file mode 100644
index 0000000..04a978d
--- /dev/null
+++ b/pkg/front_end/testcases/nnbd_mixed/mixed_mixin.dart.weak.transformed.expect
@@ -0,0 +1,81 @@
+library;
+import self as self;
+import "dart:core" as core;
+import "mixed_mixin_lib.dart" as mix;
+
+import "org-dartlang-testcase:///mixed_mixin_lib.dart";
+
+abstract class _C1&Object&B extends core::Object implements mix::B /*isAnonymousMixin,isEliminatedMixin,hasConstConstructor*/  {
+  const synthetic constructor •() → self::_C1&Object&B*
+    : super core::Object::•()
+    ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
+  get /*isNonNullableByDefault, from org-dartlang-testcase:///mixed_mixin_lib.dart */ a() → core::List<(core::int) → core::int>
+    return <(core::int) → core::int>[];
+  set /*isNonNullableByDefault, from org-dartlang-testcase:///mixed_mixin_lib.dart */ a(core::List<(core::int) → core::int> _) → void {}
+  method /*isNonNullableByDefault, from org-dartlang-testcase:///mixed_mixin_lib.dart */ m((core::int) → core::int x) → (core::int) → core::int
+    return x;
+}
+class C1 extends self::_C1&Object&B {
+  synthetic constructor •() → self::C1*
+    : super self::_C1&Object&B::•()
+    ;
+  abstract member-signature get a() → core::List<(core::int*) →* core::int*>*;
+  abstract member-signature set a(core::List<(core::int*) →* core::int*>* _) → void;
+  abstract member-signature method m((core::int*) →* core::int* x) → (core::int*) →* core::int*;
+}
+static method main() → dynamic {}
+
+library /*isNonNullableByDefault*/;
+import self as mix;
+import "dart:core" as core;
+import "mixed_mixin.dart" as self;
+
+import "org-dartlang-testcase:///mixed_mixin.dart";
+
+class B extends core::Object {
+  synthetic constructor •() → mix::B
+    : super core::Object::•()
+    ;
+  get a() → core::List<(core::int) → core::int>
+    return <(core::int) → core::int>[];
+  set a(core::List<(core::int) → core::int> _) → void {}
+  method m((core::int) → core::int x) → (core::int) → core::int
+    return x;
+}
+class Bq extends core::Object {
+  synthetic constructor •() → mix::Bq
+    : super core::Object::•()
+    ;
+  get a() → core::List<(core::int?) → core::int?>
+    return <(core::int?) → core::int?>[];
+  set a(core::List<(core::int?) → core::int?> _) → void {}
+  method m((core::int?) → core::int? x) → (core::int?) → core::int?
+    return x;
+}
+class DiBq1 extends self::C1 implements mix::Bq {
+  synthetic constructor •() → mix::DiBq1
+    : super self::C1::•()
+    ;
+  abstract member-signature get a() → core::List<(core::int?) → core::int?>;
+  abstract member-signature set a(core::List<(core::int?) → core::int?> _) → void;
+  abstract member-signature method m((core::int?) → core::int? x) → (core::int?) → core::int?;
+  abstract member-signature get _identityHashCode() → core::int;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool;
+  abstract member-signature get hashCode() → core::int;
+  abstract member-signature method toString() → core::String;
+  abstract member-signature method noSuchMethod(core::Invocation invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type;
+}
diff --git a/pkg/front_end/testcases/nnbd_mixed/mixed_mixin_lib.dart b/pkg/front_end/testcases/nnbd_mixed/mixed_mixin_lib.dart
new file mode 100644
index 0000000..e16f262
--- /dev/null
+++ b/pkg/front_end/testcases/nnbd_mixed/mixed_mixin_lib.dart
@@ -0,0 +1,19 @@
+// Copyright (c) 2020, the Dart project authors. Please see the AUTHORS file
+// for details. All rights reserved. Use of this source code is governed by a
+// BSD-style license that can be found in the LICENSE file.
+
+import 'mixed_mixin.dart';
+
+class B {
+  List<int Function(int)> get a => [];
+  set a(List<int Function(int)> _) {}
+  int Function(int) m(int Function(int) x) => x;
+}
+
+class Bq {
+  List<int? Function(int?)> get a => [];
+  set a(List<int? Function(int?)> _) {}
+  int? Function(int?) m(int? Function(int?) x) => x;
+}
+
+class DiBq1 extends C1 implements Bq {}
diff --git a/pkg/front_end/testcases/nnbd_mixed/mixin_from_opt_in.dart.weak.expect b/pkg/front_end/testcases/nnbd_mixed/mixin_from_opt_in.dart.weak.expect
index c61a894..fcc25dd 100644
--- a/pkg/front_end/testcases/nnbd_mixed/mixin_from_opt_in.dart.weak.expect
+++ b/pkg/front_end/testcases/nnbd_mixed/mixin_from_opt_in.dart.weak.expect
@@ -9,7 +9,6 @@
   const synthetic constructor •() → self::_Class&Object&Mixin*
     : super core::Object::•()
     ;
-  abstract member-signature method method(core::int* i) → core::int*;
   abstract member-signature get _identityHashCode() → core::int*;
   abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
   abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
diff --git a/pkg/front_end/testcases/nnbd_mixed/mixin_from_opt_in.dart.weak.transformed.expect b/pkg/front_end/testcases/nnbd_mixed/mixin_from_opt_in.dart.weak.transformed.expect
index 6379057..a57c491 100644
--- a/pkg/front_end/testcases/nnbd_mixed/mixin_from_opt_in.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/nnbd_mixed/mixin_from_opt_in.dart.weak.transformed.expect
@@ -9,8 +9,6 @@
   const synthetic constructor •() → self::_Class&Object&Mixin*
     : super core::Object::•()
     ;
-  method /*isNonNullableByDefault, from org-dartlang-testcase:///mixin_from_opt_in_lib.dart */ method(core::int? i) → core::int
-    return let final core::int? #t1 = i in #t1.{core::num::==}(null) ?{core::int} 0 : #t1{core::int};
   abstract member-signature get _identityHashCode() → core::int*;
   abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
   abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
@@ -21,6 +19,8 @@
   abstract member-signature method toString() → core::String*;
   abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
   abstract member-signature get runtimeType() → core::Type*;
+  method /*isNonNullableByDefault, from org-dartlang-testcase:///mixin_from_opt_in_lib.dart */ method(core::int? i) → core::int
+    return let final core::int? #t1 = i in #t1.{core::num::==}(null) ?{core::int} 0 : #t1{core::int};
 }
 class Class extends self::_Class&Object&Mixin {
   synthetic constructor •() → self::Class*
diff --git a/pkg/front_end/testcases/nnbd_mixed/mixin_from_opt_out.dart.weak.expect b/pkg/front_end/testcases/nnbd_mixed/mixin_from_opt_out.dart.weak.expect
index cf985f7..5cb5315 100644
--- a/pkg/front_end/testcases/nnbd_mixed/mixin_from_opt_out.dart.weak.expect
+++ b/pkg/front_end/testcases/nnbd_mixed/mixin_from_opt_out.dart.weak.expect
@@ -15,7 +15,6 @@
   synthetic constructor •() → self::Class
     : super self::_Class&Object&Mixin::•()
     ;
-  abstract forwarding-stub operator ==(dynamic other) → core::bool*;
 }
 static method main() → dynamic {
   core::print(new self::Class::•().{mix::Mixin::method}(null));
diff --git a/pkg/front_end/testcases/nnbd_mixed/mixin_from_opt_out.dart.weak.transformed.expect b/pkg/front_end/testcases/nnbd_mixed/mixin_from_opt_out.dart.weak.transformed.expect
index 1cfd5c0..7da8b41 100644
--- a/pkg/front_end/testcases/nnbd_mixed/mixin_from_opt_out.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/nnbd_mixed/mixin_from_opt_out.dart.weak.transformed.expect
@@ -26,7 +26,6 @@
   synthetic constructor •() → self::Class
     : super self::_Class&Object&Mixin::•()
     ;
-  abstract forwarding-stub operator ==(dynamic other) → core::bool*;
 }
 static method main() → dynamic {
   core::print(new self::Class::•().{mix::Mixin::method}(null));
diff --git a/runtime/observatory/tests/service/get_retaining_path_rpc_test.dart b/runtime/observatory/tests/service/get_retaining_path_rpc_test.dart
index 1a036e5..73ac5bd 100644
--- a/runtime/observatory/tests/service/get_retaining_path_rpc_test.dart
+++ b/runtime/observatory/tests/service/get_retaining_path_rpc_test.dart
@@ -196,7 +196,10 @@
       'limit': 100,
     };
     var result = await isolate.invokeRpcNoUpgrade('getRetainingPath', params);
-    expect(result['gcRootType'], 'isolate_object store');
+    expect(
+        result['gcRootType'] == 'class table' ||
+            result['gcRootType'] == 'isolate_object store',
+        true);
     expect(result['elements'].length, 0);
   },
 ];
diff --git a/runtime/vm/clustered_snapshot.cc b/runtime/vm/clustered_snapshot.cc
index 637cf2e..956b5ee 100644
--- a/runtime/vm/clustered_snapshot.cc
+++ b/runtime/vm/clustered_snapshot.cc
@@ -3366,6 +3366,10 @@
   }
 };
 
+// Used to pack nullability into other serialized values.
+static constexpr intptr_t kNullabilityBitSize = 2;
+static constexpr intptr_t kNullabilityBitMask = (1 << kNullabilityBitSize) - 1;
+
 #if !defined(DART_PRECOMPILED_RUNTIME)
 class TypeSerializationCluster : public SerializationCluster {
  public:
@@ -3412,31 +3416,31 @@
   void WriteFill(Serializer* s) {
     intptr_t count = canonical_objects_.length();
     for (intptr_t i = 0; i < count; i++) {
-      TypePtr type = canonical_objects_[i];
-      AutoTraceObject(type);
-      WriteFromTo(type);
-      s->WriteTokenPosition(type->ptr()->token_pos_);
-      const uint8_t combined =
-          (type->ptr()->type_state_ << 4) | type->ptr()->nullability_;
-      ASSERT(type->ptr()->type_state_ == (combined >> 4));
-      ASSERT(type->ptr()->nullability_ == (combined & 0xf));
-      s->Write<uint8_t>(combined);
+      WriteType(s, canonical_objects_[i]);
     }
     count = objects_.length();
     for (intptr_t i = 0; i < count; i++) {
-      TypePtr type = objects_[i];
-      AutoTraceObject(type);
-      WriteFromTo(type);
-      s->WriteTokenPosition(type->ptr()->token_pos_);
-      const uint8_t combined =
-          (type->ptr()->type_state_ << 4) | type->ptr()->nullability_;
-      ASSERT(type->ptr()->type_state_ == (combined >> 4));
-      ASSERT(type->ptr()->nullability_ == (combined & 0xf));
-      s->Write<uint8_t>(combined);
+      WriteType(s, objects_[i]);
     }
   }
 
  private:
+  void WriteType(Serializer* s, TypePtr type) {
+    AutoTraceObject(type);
+    WriteFromTo(type);
+    s->WriteTokenPosition(type->ptr()->token_pos_);
+    ASSERT(type->ptr()->type_state_ < (1 << TypeLayout::kTypeStateBitSize));
+    ASSERT(type->ptr()->nullability_ < (1 << kNullabilityBitSize));
+    static_assert(TypeLayout::kTypeStateBitSize + kNullabilityBitSize <=
+                      kBitsPerByte * sizeof(uint8_t),
+                  "Cannot pack type_state_ and nullability_ into a uint8_t");
+    const uint8_t combined = (type->ptr()->type_state_ << kNullabilityBitSize) |
+                             type->ptr()->nullability_;
+    ASSERT_EQUAL(type->ptr()->type_state_, combined >> kNullabilityBitSize);
+    ASSERT_EQUAL(type->ptr()->nullability_, combined & kNullabilityBitMask);
+    s->Write<uint8_t>(combined);
+  }
+
   GrowableArray<TypePtr> canonical_objects_;
   GrowableArray<TypePtr> objects_;
 };
@@ -3468,26 +3472,12 @@
     for (intptr_t id = canonical_start_index_; id < canonical_stop_index_;
          id++) {
       TypePtr type = static_cast<TypePtr>(d->Ref(id));
-      bool is_canonical = true;
-      Deserializer::InitializeHeader(type, kTypeCid, Type::InstanceSize(),
-                                     is_canonical);
-      ReadFromTo(type);
-      type->ptr()->token_pos_ = d->ReadTokenPosition();
-      const uint8_t combined = d->Read<uint8_t>();
-      type->ptr()->type_state_ = combined >> 4;
-      type->ptr()->nullability_ = combined & 0xf;
+      ReadType(d, type, /*is_canonical=*/true);
     }
 
     for (intptr_t id = start_index_; id < stop_index_; id++) {
       TypePtr type = static_cast<TypePtr>(d->Ref(id));
-      bool is_canonical = false;
-      Deserializer::InitializeHeader(type, kTypeCid, Type::InstanceSize(),
-                                     is_canonical);
-      ReadFromTo(type);
-      type->ptr()->token_pos_ = d->ReadTokenPosition();
-      const uint8_t combined = d->Read<uint8_t>();
-      type->ptr()->type_state_ = combined >> 4;
-      type->ptr()->nullability_ = combined & 0xf;
+      ReadType(d, type, /*is_canonical=*/false);
     }
   }
 
@@ -3523,6 +3513,16 @@
   }
 
  private:
+  void ReadType(Deserializer* d, TypePtr type, bool is_canonical) {
+    Deserializer::InitializeHeader(type, kTypeCid, Type::InstanceSize(),
+                                   is_canonical);
+    ReadFromTo(type);
+    type->ptr()->token_pos_ = d->ReadTokenPosition();
+    const uint8_t combined = d->Read<uint8_t>();
+    type->ptr()->type_state_ = combined >> kNullabilityBitSize;
+    type->ptr()->nullability_ = combined & kNullabilityBitMask;
+  }
+
   intptr_t canonical_start_index_;
   intptr_t canonical_stop_index_;
 };
@@ -3659,10 +3659,15 @@
     s->Write<int32_t>(type->ptr()->parameterized_class_id_);
     s->WriteTokenPosition(type->ptr()->token_pos_);
     s->Write<int16_t>(type->ptr()->index_);
-    const uint8_t combined =
-        (type->ptr()->flags_ << 4) | type->ptr()->nullability_;
-    ASSERT(type->ptr()->flags_ == (combined >> 4));
-    ASSERT(type->ptr()->nullability_ == (combined & 0xf));
+    ASSERT(type->ptr()->flags_ < (1 << TypeParameterLayout::kFlagsBitSize));
+    ASSERT(type->ptr()->nullability_ < (1 << kNullabilityBitSize));
+    static_assert(TypeParameterLayout::kFlagsBitSize + kNullabilityBitSize <=
+                      kBitsPerByte * sizeof(uint8_t),
+                  "Cannot pack flags_ and nullability_ into a uint8_t");
+    const uint8_t combined = (type->ptr()->flags_ << kNullabilityBitSize) |
+                             type->ptr()->nullability_;
+    ASSERT_EQUAL(type->ptr()->flags_, combined >> kNullabilityBitSize);
+    ASSERT_EQUAL(type->ptr()->nullability_, combined & kNullabilityBitMask);
     s->Write<uint8_t>(combined);
   }
 
@@ -3752,8 +3757,8 @@
     type->ptr()->token_pos_ = d->ReadTokenPosition();
     type->ptr()->index_ = d->Read<int16_t>();
     const uint8_t combined = d->Read<uint8_t>();
-    type->ptr()->flags_ = combined >> 4;
-    type->ptr()->nullability_ = combined & 0xf;
+    type->ptr()->flags_ = combined >> kNullabilityBitSize;
+    type->ptr()->nullability_ = combined & kNullabilityBitMask;
   }
 
   intptr_t canonical_start_index_;
diff --git a/runtime/vm/isolate.cc b/runtime/vm/isolate.cc
index 5d87370..edeb8db 100644
--- a/runtime/vm/isolate.cc
+++ b/runtime/vm/isolate.cc
@@ -2729,8 +2729,11 @@
     isolate_object_store()->VisitObjectPointers(visitor);
   }
 
-  // Visit objects in the class table.
-  class_table()->VisitObjectPointers(visitor);
+  // Visit objects in the class table unless it's shared by the group.
+  // If it is shared, it is visited by IsolateGroup::VisitObjectPointers
+  if (group()->class_table() != class_table()) {
+    class_table()->VisitObjectPointers(visitor);
+  }
 
   // Visit objects in the field table.
   field_table()->VisitObjectPointers(visitor);
@@ -2895,6 +2898,11 @@
 
 void IsolateGroup::VisitObjectPointers(ObjectPointerVisitor* visitor,
                                        ValidationPolicy validate_frames) {
+  // if class table is shared, it's stored on isolate group
+  if (class_table() != nullptr) {
+    // Visit objects in the class table.
+    class_table()->VisitObjectPointers(visitor);
+  }
   for (Isolate* isolate : isolates_) {
     isolate->VisitObjectPointers(visitor, validate_frames);
   }
diff --git a/runtime/vm/object.h b/runtime/vm/object.h
index cd1e1f0..2be3ae6 100644
--- a/runtime/vm/object.h
+++ b/runtime/vm/object.h
@@ -900,6 +900,7 @@
   kNullable = 0,
   kNonNullable = 1,
   kLegacy = 2,
+  // Adjust kNullabilityBitSize in clustered_snapshot.cc if adding new values.
 };
 
 // Equality kind between types.
diff --git a/runtime/vm/raw_object.h b/runtime/vm/raw_object.h
index afcf33d..b410841 100644
--- a/runtime/vm/raw_object.h
+++ b/runtime/vm/raw_object.h
@@ -2190,9 +2190,12 @@
     kBeingFinalized,           // In the process of being finalized.
     kFinalizedInstantiated,    // Instantiated type ready for use.
     kFinalizedUninstantiated,  // Uninstantiated type ready for use.
+    // Adjust kTypeStateBitSize if more are added.
   };
 
  protected:
+  static constexpr intptr_t kTypeStateBitSize = 2;
+
   uword type_test_stub_entry_point_;  // Accessed from generated code.
   CodePtr type_test_stub_;  // Must be the last field, since subclasses use it
                             // in their VISIT_FROM.
@@ -2237,17 +2240,6 @@
 };
 
 class TypeParameterLayout : public AbstractTypeLayout {
- public:
-  enum {
-    kFinalizedBit = 0,
-    kGenericCovariantImplBit,
-    kDeclarationBit,
-  };
-  class FinalizedBit : public BitField<uint8_t, bool, kFinalizedBit, 1> {};
-  class GenericCovariantImplBit
-      : public BitField<uint8_t, bool, kGenericCovariantImplBit, 1> {};
-  class DeclarationBit : public BitField<uint8_t, bool, kDeclarationBit, 1> {};
-
  private:
   RAW_HEAP_OBJECT_IMPLEMENTATION(TypeParameter);
 
@@ -2263,6 +2255,13 @@
   uint8_t flags_;
   int8_t nullability_;
 
+  using FinalizedBit = BitField<decltype(flags_), bool, 0, 1>;
+  using GenericCovariantImplBit =
+      BitField<decltype(flags_), bool, FinalizedBit::kNextBit, 1>;
+  using DeclarationBit =
+      BitField<decltype(flags_), bool, GenericCovariantImplBit::kNextBit, 1>;
+  static constexpr intptr_t kFlagsBitSize = DeclarationBit::kNextBit;
+
   ObjectPtr* to_snapshot(Snapshot::Kind kind) { return to(); }
 
   friend class CidRewriteVisitor;
diff --git a/tests/language/language.status b/tests/language/language.status
index 3764b4c..277066a 100644
--- a/tests/language/language.status
+++ b/tests/language/language.status
@@ -7,6 +7,7 @@
 
 [ $compiler != fasta ]
 nonfunction_type_aliases/*: Skip # github.com/dart-lang/language/issues/115
+value_class/*: Skip # Internship, jlcontreras
 
 [ $compiler == none ]
 invalid_returns/*: Skip # https://github.com/dart-lang/sdk/issues/34013
diff --git a/tests/language/value_class/creates_constructor_test.dart b/tests/language/value_class/creates_constructor_test.dart
new file mode 100644
index 0000000..3ad9379
--- /dev/null
+++ b/tests/language/value_class/creates_constructor_test.dart
@@ -0,0 +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.
+
+// A value class will automatically create an empty constructor if there is none yet
+
+const String valueClass = "valueClass";
+
+@valueClass
+class Animal {
+  final int numberOfLegs;
+}
+
+main() {
+  var cat = Animal(numberOfLegs: 4);
+}
diff --git a/tests/language/value_class/creates_equals_test.dart b/tests/language/value_class/creates_equals_test.dart
new file mode 100644
index 0000000..c62683f
--- /dev/null
+++ b/tests/language/value_class/creates_equals_test.dart
@@ -0,0 +1,25 @@
+// Copyright (c) 2020, the Dart project authors.  Please see the AUTHORS file
+// for details. All rights reserved. Use of this source code is governed by a
+// BSD-style license that can be found in the LICENSE file.
+
+// Equals operator == by value should be implicitly created
+
+import 'package:expect/expect.dart';
+
+// A value class will automatically create an == operator if there is none yet
+
+const String valueClass = "valueClass";
+
+@valueClass
+class Animal {
+  final int numberOfLegs;
+}
+
+main() {
+  var cat = Animal(numberOfLegs: 4);
+  var dog = Animal(numberOfLegs: 4);
+  var human = Animal(numberOfLegs: 2);
+
+  Expect.equals(true, cat == dog);
+  Expect.equals(false, cat == human);
+}
diff --git a/tests/language/value_class/has_non_final_field_error_test.dart b/tests/language/value_class/has_non_final_field_error_test.dart
new file mode 100644
index 0000000..148471e
--- /dev/null
+++ b/tests/language/value_class/has_non_final_field_error_test.dart
@@ -0,0 +1,14 @@
+// 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.
+
+// It is a compile-time error if a value class has a non-final instance variable.
+
+const String valueClass = "valueClass";
+
+@valueClass
+class Animal {
+  int numberOfLegs;
+  //^
+  // [cfe] unspecified
+}
diff --git a/tests/language/value_class/inherits_non_value_class_error_test.dart b/tests/language/value_class/inherits_non_value_class_error_test.dart
new file mode 100644
index 0000000..9f65fca
--- /dev/null
+++ b/tests/language/value_class/inherits_non_value_class_error_test.dart
@@ -0,0 +1,14 @@
+// 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.
+
+// Value classes are always leaves in the tree of types
+
+const String valueClass = "valueClass";
+
+@valueClass
+class Animal {}
+
+class Cat implements Animal {}
+//                   ^^^^^^
+// [cfe] unspecified
diff --git a/tools/VERSION b/tools/VERSION
index 4340efe..937cb75 100644
--- a/tools/VERSION
+++ b/tools/VERSION
@@ -27,5 +27,5 @@
 MAJOR 2
 MINOR 10
 PATCH 0
-PRERELEASE 17
+PRERELEASE 18
 PRERELEASE_PATCH 0
\ No newline at end of file
