Add parser support for `for (var pattern = expression; ...; ...)`

Bug: https://github.com/dart-lang/sdk/issues/50035
Change-Id: I5f07b848ba06be403e56538a4cc64f6de51bd668
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/273005
Reviewed-by: Konstantin Shcheglov <scheglov@google.com>
Commit-Queue: Paul Berry <paulberry@google.com>
diff --git a/pkg/_fe_analyzer_shared/lib/src/parser/forwarding_listener.dart b/pkg/_fe_analyzer_shared/lib/src/parser/forwarding_listener.dart
index 73945fd..7772f37 100644
--- a/pkg/_fe_analyzer_shared/lib/src/parser/forwarding_listener.dart
+++ b/pkg/_fe_analyzer_shared/lib/src/parser/forwarding_listener.dart
@@ -1481,6 +1481,12 @@
   }
 
   @override
+  void handleForInitializerPatternVariableAssignment(
+      Token keyword, Token equals) {
+    listener?.handleForInitializerPatternVariableAssignment(keyword, equals);
+  }
+
+  @override
   void handleForInLoopParts(Token? awaitToken, Token forToken,
       Token leftParenthesis, Token inKeyword) {
     listener?.handleForInLoopParts(
diff --git a/pkg/_fe_analyzer_shared/lib/src/parser/listener.dart b/pkg/_fe_analyzer_shared/lib/src/parser/listener.dart
index f71600a..3d98163 100644
--- a/pkg/_fe_analyzer_shared/lib/src/parser/listener.dart
+++ b/pkg/_fe_analyzer_shared/lib/src/parser/listener.dart
@@ -585,11 +585,20 @@
   }
 
   /// Marks that the grammar term `forInitializerStatement` has been parsed and
-  /// it was a `localVariableDeclaration`.
+  /// it was a `localVariableDeclaration` of the form
+  /// `metadata initializedVariableDeclaration ';'`.
   void handleForInitializerLocalVariableDeclaration(Token token, bool forIn) {
     logEvent("ForInitializerLocalVariableDeclaration");
   }
 
+  /// Marks that the grammar term `forInitializerStatement` has been parsed and
+  /// it was a `localVariableDeclaration` of the form
+  /// `metadata patternVariableDeclaration ';'`.
+  void handleForInitializerPatternVariableAssignment(
+      Token keyword, Token equals) {
+    logEvent("handleForInitializerPatternVariableAssignment");
+  }
+
   /// Marks the start of a for statement which is ended by either
   /// [endForStatement] or [endForIn].
   void beginForStatement(Token token) {}
diff --git a/pkg/_fe_analyzer_shared/lib/src/parser/literal_entry_info_impl.dart b/pkg/_fe_analyzer_shared/lib/src/parser/literal_entry_info_impl.dart
index bb0c2ec..ec0362e 100644
--- a/pkg/_fe_analyzer_shared/lib/src/parser/literal_entry_info_impl.dart
+++ b/pkg/_fe_analyzer_shared/lib/src/parser/literal_entry_info_impl.dart
@@ -33,7 +33,24 @@
     assert(optional('for', forToken));
     parser.listener.beginForControlFlow(awaitToken, forToken);
 
-    token = parser.parseForLoopPartsStart(awaitToken, forToken);
+    ForPartsContext forPartsContext = new ForPartsContext();
+    token =
+        parser.parseForLoopPartsStart(awaitToken, forToken, forPartsContext);
+    Token? patternKeyword = forPartsContext.patternKeyword;
+    if (patternKeyword != null) {
+      if (optional('=', token.next!)) {
+        // Process `for ( pattern = expression ; ... ; ... )`
+        Token equals = token.next!;
+        token = parser.parseExpression(equals);
+        parser.listener.handleForInitializerPatternVariableAssignment(
+            patternKeyword, equals);
+        _inStyle = false;
+        return parser.parseForLoopPartsRest(token, forToken, awaitToken);
+      } else {
+        // Process `for ( pattern in expression )`
+        throw new UnimplementedError('TODO(paulberry)');
+      }
+    }
     Token identifier = token.next!;
     token = parser.parseForLoopPartsMid(token, awaitToken, forToken);
 
diff --git a/pkg/_fe_analyzer_shared/lib/src/parser/parser_impl.dart b/pkg/_fe_analyzer_shared/lib/src/parser/parser_impl.dart
index 38eb541..0b803fa 100644
--- a/pkg/_fe_analyzer_shared/lib/src/parser/parser_impl.dart
+++ b/pkg/_fe_analyzer_shared/lib/src/parser/parser_impl.dart
@@ -5234,8 +5234,7 @@
           token,
           /* lateToken = */ null,
           /* varFinalOrConst = */ null,
-          /* typeInfo = */ null,
-          /* onlyParseVariableDeclarationStart = */ false);
+          /* typeInfo = */ null);
     }
     final String? value = token.next!.stringValue;
     if (identical(value, '{')) {
@@ -5251,13 +5250,8 @@
     } else if (identical(value, 'var') || identical(value, 'final')) {
       Token varOrFinal = token.next!;
       if (!isModifier(varOrFinal.next!)) {
-        return parseExpressionStatementOrDeclarationAfterModifiers(
-            varOrFinal,
-            token,
-            /* lateToken = */ null,
-            varOrFinal,
-            /* typeInfo = */ null,
-            /* onlyParseVariableDeclarationStart = */ false);
+        return parseExpressionStatementOrDeclarationAfterModifiers(varOrFinal,
+            token, /* lateToken = */ null, varOrFinal, /* typeInfo = */ null);
       }
       return parseExpressionStatementOrDeclaration(token);
     } else if (identical(value, 'if')) {
@@ -7358,30 +7352,30 @@
         }
       }
       return parseExpressionStatementOrDeclarationAfterModifiers(
-          constToken,
-          start,
-          /* lateToken = */ null,
-          constToken,
-          typeInfo,
-          /* onlyParseVariableDeclarationStart = */ false);
+          constToken, start, /* lateToken = */ null, constToken, typeInfo);
     }
     return parseExpressionStatementOrDeclaration(start);
   }
 
   /// This method has two modes based upon [onlyParseVariableDeclarationStart].
   ///
-  /// If [onlyParseVariableDeclarationStart] is `false` (the default) then this
-  /// method will parse a local variable declaration, a local function,
-  /// or an expression statement, and then return the last consumed token.
+  /// If [forPartsContext] is `null` (the default), then the parser is currently
+  /// processing a statement or declaration.  This method will parse a local
+  /// variable declaration, a local function, or an expression statement, and
+  /// then return the last consumed token.
   ///
-  /// If [onlyParseVariableDeclarationStart] is `true` then this method
-  /// will only parse the metadata, modifiers, and type of a local variable
-  /// declaration if it exists. It is the responsibility of the caller to
-  /// call [parseVariablesDeclarationRest] to finish parsing the local variable
-  /// declaration. If a local variable declaration is not found then this
-  /// method will return [start].
+  /// If [forPartsContext] is non-null, then this method will only parse the
+  /// metadata, modifiers, and type of a local variable declaration if it
+  /// exists; it is the responsibility of the caller to call
+  /// [parseVariablesDeclarationRest] to finish parsing the local variable
+  /// declaration.  Or it will parse the metadata, `var` or `final` keyword, and
+  /// pattern of a pattern variable declaration, and store the `var` or `final`
+  /// keyword in [forPartsContext]; it is the responsibility of the caller to
+  /// consume the rest of the pattern variable declaration.  Or, if neither a
+  /// local variable declaration nor a pattern variable declaration is found,
+  /// then this method will return [start].
   Token parseExpressionStatementOrDeclaration(final Token start,
-      [bool onlyParseVariableDeclarationStart = false]) {
+      [ForPartsContext? forPartsContext]) {
     Token token = start;
     Token next = token.next!;
     if (optional('@', next)) {
@@ -7424,13 +7418,8 @@
       }
     }
 
-    return parseExpressionStatementOrDeclarationAfterModifiers(
-        token,
-        start,
-        lateToken,
-        varFinalOrConst,
-        /* typeInfo = */ null,
-        onlyParseVariableDeclarationStart);
+    return parseExpressionStatementOrDeclarationAfterModifiers(token, start,
+        lateToken, varFinalOrConst, /* typeInfo = */ null, forPartsContext);
   }
 
   /// See [parseExpressionStatementOrDeclaration].
@@ -7438,13 +7427,9 @@
   /// If `start.next` is an `@` token (i.e. this is a declaration with metadata)
   /// then the caller should parse it before calling this method; otherwise,
   /// this method will handle the lack of metadata appropriately.
-  Token parseExpressionStatementOrDeclarationAfterModifiers(
-      Token beforeType,
-      Token start,
-      Token? lateToken,
-      Token? varFinalOrConst,
-      TypeInfo? typeInfo,
-      bool onlyParseVariableDeclarationStart) {
+  Token parseExpressionStatementOrDeclarationAfterModifiers(Token beforeType,
+      Token start, Token? lateToken, Token? varFinalOrConst, TypeInfo? typeInfo,
+      [ForPartsContext? forPartsContext]) {
     // In simple cases check for bad 'late' modifier in non-nnbd-mode.
     if (typeInfo == null &&
         lateToken == null &&
@@ -7470,7 +7455,6 @@
         varFinalOrConst != null &&
         (optional('var', varFinalOrConst) ||
             optional('final', varFinalOrConst)) &&
-        !onlyParseVariableDeclarationStart &&
         looksLikeOuterPatternEquals(beforeType)) {
       // If there was any metadata, then the caller was responsible for parsing
       // it; if not, then we need to let the listener know there wasn't any.
@@ -7478,8 +7462,13 @@
         listener.beginMetadataStar(start.next!);
         listener.endMetadataStar(/* count = */ 0);
       }
-      return parsePatternVariableDeclarationStatement(
-          beforeType, start, varFinalOrConst);
+      if (forPartsContext != null) {
+        forPartsContext.patternKeyword = varFinalOrConst;
+        return parsePattern(beforeType, isRefutableContext: false);
+      } else {
+        return parsePatternVariableDeclarationStatement(
+            beforeType, start, varFinalOrConst);
+      }
     }
 
     typeInfo ??= computeType(beforeType, /* required = */ false);
@@ -7487,7 +7476,7 @@
     Token token = typeInfo.skipType(beforeType);
     Token next = token.next!;
 
-    if (onlyParseVariableDeclarationStart) {
+    if (forPartsContext != null) {
       if (lateToken != null) {
         reportRecoverableErrorWithToken(
             lateToken, codes.templateExtraneousModifier);
@@ -7575,7 +7564,7 @@
     if (token == start) {
       // If no annotation, modifier, or type, and this is not a local function
       // then this must be an expression statement.
-      if (onlyParseVariableDeclarationStart) {
+      if (forPartsContext != null) {
         return start;
       } else {
         return parseExpressionStatement(start);
@@ -7592,7 +7581,7 @@
         if (EQ_TOKEN != kind &&
             SEMICOLON_TOKEN != kind &&
             COMMA_TOKEN != kind) {
-          if (onlyParseVariableDeclarationStart) {
+          if (forPartsContext != null) {
             if (!optional('in', next.next!)) {
               return start;
             }
@@ -7627,7 +7616,7 @@
     token = typeInfo.parseType(beforeType, this);
     next = token.next!;
     listener.beginVariablesDeclaration(next, lateToken, varFinalOrConst);
-    if (!onlyParseVariableDeclarationStart) {
+    if (forPartsContext == null) {
       token =
           parseVariablesDeclarationRest(token, /* endWithSemicolon = */ true);
     }
@@ -7707,7 +7696,22 @@
     assert(optional('for', token));
     listener.beginForStatement(forToken);
 
-    token = parseForLoopPartsStart(awaitToken, forToken);
+    ForPartsContext forPartsContext = new ForPartsContext();
+    token = parseForLoopPartsStart(awaitToken, forToken, forPartsContext);
+    Token? patternKeyword = forPartsContext.patternKeyword;
+    if (patternKeyword != null) {
+      if (optional('=', token.next!)) {
+        // Process `for ( pattern = expression ; ... ; ... )`
+        Token equals = token.next!;
+        token = parseExpression(equals);
+        listener.handleForInitializerPatternVariableAssignment(
+            patternKeyword, equals);
+        return parseForRest(awaitToken, token, forToken);
+      } else {
+        // Process `for ( pattern in expression )`
+        throw new UnimplementedError('TODO(paulberry)');
+      }
+    }
     Token identifier = token.next!;
     token = parseForLoopPartsMid(token, awaitToken, forToken);
     if (optional('in', token.next!) || optional(':', token.next!)) {
@@ -7721,7 +7725,8 @@
 
   /// Parse the start of a for loop control structure
   /// from the open parenthesis up to but not including the identifier.
-  Token parseForLoopPartsStart(Token? awaitToken, Token forToken) {
+  Token parseForLoopPartsStart(
+      Token? awaitToken, Token forToken, ForPartsContext forPartsContext) {
     Token leftParenthesis = forToken.next!;
     if (!optional('(', leftParenthesis)) {
       // Recovery
@@ -7757,7 +7762,7 @@
     // declaration if it exists. This enables capturing [beforeIdentifier]
     // for later error reporting.
     return parseExpressionStatementOrDeclaration(
-        leftParenthesis, /* onlyParseVariableDeclarationStart = */ true);
+        leftParenthesis, forPartsContext);
   }
 
   /// Parse the remainder of the local variable declaration
@@ -9953,3 +9958,14 @@
 typedef _MessageWithArgument<T> = codes.Message Function(T);
 
 enum AwaitOrYieldContext { Statement, UnaryExpression }
+
+/// Data structure tracking additional information when parsing the
+/// `forLoopParts` grammar production.
+class ForPartsContext {
+  /// If `forLoopParts` began with `( 'final' | 'var' ) outerPattern`, followed
+  /// by `=`, the `final` or `var` keyword.  Otherwise `null`.
+  Token? patternKeyword;
+
+  @override
+  String toString() => 'ForPartsContext($patternKeyword)';
+}
diff --git a/pkg/analyzer/lib/src/dart/ast/ast.dart b/pkg/analyzer/lib/src/dart/ast/ast.dart
index fb23217..c44302a 100644
--- a/pkg/analyzer/lib/src/dart/ast/ast.dart
+++ b/pkg/analyzer/lib/src/dart/ast/ast.dart
@@ -5511,8 +5511,9 @@
   Token get beginToken => variables.beginToken;
 
   @override
-  ChildEntities get _childEntities =>
-      super._childEntities..addNode('variables', variables);
+  ChildEntities get _childEntities => ChildEntities()
+    ..addNode('variables', variables)
+    ..addAll(super._childEntities);
 
   @override
   E? accept<E>(AstVisitor<E> visitor) => visitor.visitForPartsWithPattern(this);
diff --git a/pkg/analyzer/lib/src/fasta/ast_builder.dart b/pkg/analyzer/lib/src/fasta/ast_builder.dart
index a1468e0..662c914 100644
--- a/pkg/analyzer/lib/src/fasta/ast_builder.dart
+++ b/pkg/analyzer/lib/src/fasta/ast_builder.dart
@@ -4027,6 +4027,21 @@
   }
 
   @override
+  void handleForInitializerPatternVariableAssignment(
+      Token keyword, Token equals) {
+    var expression = pop() as ExpressionImpl;
+    var pattern = pop() as DartPatternImpl;
+    var metadata = pop() as List<AnnotationImpl>?;
+    push(PatternVariableDeclarationImpl(
+        keyword: keyword,
+        pattern: pattern,
+        equals: equals,
+        expression: expression,
+        comment: null,
+        metadata: metadata));
+  }
+
+  @override
   void handleForInLoopParts(Token? awaitToken, Token forToken,
       Token leftParenthesis, Token inKeyword) {
     assert(optionalOrNull('await', awaitToken));
@@ -4102,6 +4117,13 @@
         rightSeparator: rightSeparator,
         updaters: updates,
       );
+    } else if (initializerPart is PatternVariableDeclarationImpl) {
+      forLoopParts = ForPartsWithPatternImpl(
+          variables: initializerPart,
+          leftSeparator: leftSeparator,
+          condition: condition,
+          rightSeparator: rightSeparator,
+          updaters: updates);
     } else {
       forLoopParts = ForPartsWithExpressionImpl(
         initialization: initializerPart as ExpressionImpl?,
diff --git a/pkg/analyzer/test/generated/patterns_parser_test.dart b/pkg/analyzer/test/generated/patterns_parser_test.dart
index 1078124..e4ff756 100644
--- a/pkg/analyzer/test/generated/patterns_parser_test.dart
+++ b/pkg/analyzer/test/generated/patterns_parser_test.dart
@@ -5995,6 +5995,75 @@
 ''');
   }
 
+  test_pattern_inForInitializer_element() {
+    _parse('''
+void f(x) => [for (var (a, b) = x; ;) 0];
+''');
+    var node = findNode.forElement('for');
+    assertParsedNodeText(node, r'''
+ForElement
+  forKeyword: for
+  leftParenthesis: (
+  forLoopParts: ForPartsWithPattern
+    variables: PatternVariableDeclaration
+      keyword: var
+      pattern: RecordPattern
+        leftParenthesis: (
+        fields
+          RecordPatternField
+            pattern: VariablePattern
+              name: a
+          RecordPatternField
+            pattern: VariablePattern
+              name: b
+        rightParenthesis: )
+      equals: =
+      expression: SimpleIdentifier
+        token: x
+    leftSeparator: ;
+    rightSeparator: ;
+  rightParenthesis: )
+  body: IntegerLiteral
+    literal: 0
+''');
+  }
+
+  test_pattern_inForInitializer_statement() {
+    _parse('''
+void f(x) {
+  for (var (a, b) = x; ;) {}
+}
+''');
+    var node = findNode.forStatement('for');
+    assertParsedNodeText(node, r'''
+ForStatement
+  forKeyword: for
+  leftParenthesis: (
+  forLoopParts: ForPartsWithPattern
+    variables: PatternVariableDeclaration
+      keyword: var
+      pattern: RecordPattern
+        leftParenthesis: (
+        fields
+          RecordPatternField
+            pattern: VariablePattern
+              name: a
+          RecordPatternField
+            pattern: VariablePattern
+              name: b
+        rightParenthesis: )
+      equals: =
+      expression: SimpleIdentifier
+        token: x
+    leftSeparator: ;
+    rightSeparator: ;
+  rightParenthesis: )
+  body: Block
+    leftBracket: {
+    rightBracket: }
+''');
+  }
+
   test_patternVariableDeclarationStatement_disallowsLate() {
     // TODO(paulberry): do better error recovery.
     _parse('''
diff --git a/pkg/analyzer/test/src/summary/resolved_ast_printer.dart b/pkg/analyzer/test/src/summary/resolved_ast_printer.dart
index 0800b5d..d0bb2c0 100644
--- a/pkg/analyzer/test/src/summary/resolved_ast_printer.dart
+++ b/pkg/analyzer/test/src/summary/resolved_ast_printer.dart
@@ -551,6 +551,14 @@
   }
 
   @override
+  void visitForElement(ForElement node) {
+    _writeln('ForElement');
+    _withIndent(() {
+      _writeNamedChildEntities(node);
+    });
+  }
+
+  @override
   void visitFormalParameterList(FormalParameterList node) {
     _writeln('FormalParameterList');
     _withIndent(() {
@@ -575,6 +583,14 @@
   }
 
   @override
+  void visitForPartsWithPattern(ForPartsWithPattern node) {
+    _writeln('ForPartsWithPattern');
+    _withIndent(() {
+      _writeNamedChildEntities(node);
+    });
+  }
+
+  @override
   void visitForStatement(ForStatement node) {
     _writeln('ForStatement');
     _withIndent(() {
diff --git a/pkg/front_end/lib/src/fasta/kernel/macro/annotation_parser.dart b/pkg/front_end/lib/src/fasta/kernel/macro/annotation_parser.dart
index 55182d8..1af8ac7 100644
--- a/pkg/front_end/lib/src/fasta/kernel/macro/annotation_parser.dart
+++ b/pkg/front_end/lib/src/fasta/kernel/macro/annotation_parser.dart
@@ -1787,6 +1787,12 @@
   }
 
   @override
+  void handleForInitializerPatternVariableAssignment(
+      Token keyword, Token equals) {
+    _unsupported();
+  }
+
+  @override
   void handleForLoopParts(Token forKeyword, Token leftParen,
       Token leftSeparator, int updateExpressionCount) {
     _unsupported();
diff --git a/pkg/front_end/lib/src/fasta/util/parser_ast_helper.dart b/pkg/front_end/lib/src/fasta/util/parser_ast_helper.dart
index a13d52c..fb11094 100644
--- a/pkg/front_end/lib/src/fasta/util/parser_ast_helper.dart
+++ b/pkg/front_end/lib/src/fasta/util/parser_ast_helper.dart
@@ -757,6 +757,15 @@
   }
 
   @override
+  void handleForInitializerPatternVariableAssignment(
+      Token keyword, Token equals) {
+    ForInitializerPatternVariableAssignmentHandle data =
+        new ForInitializerPatternVariableAssignmentHandle(ParserAstType.HANDLE,
+            keyword: keyword, equals: equals);
+    seen(data);
+  }
+
+  @override
   void beginForStatement(Token token) {
     ForStatementBegin data =
         new ForStatementBegin(ParserAstType.BEGIN, token: token);
@@ -4231,6 +4240,21 @@
       };
 }
 
+class ForInitializerPatternVariableAssignmentHandle extends ParserAstNode {
+  final Token keyword;
+  final Token equals;
+
+  ForInitializerPatternVariableAssignmentHandle(ParserAstType type,
+      {required this.keyword, required this.equals})
+      : super("ForInitializerPatternVariableAssignment", type);
+
+  @override
+  Map<String, Object?> get deprecatedArguments => {
+        "keyword": keyword,
+        "equals": equals,
+      };
+}
+
 class ForStatementBegin extends ParserAstNode {
   final Token token;
 
diff --git a/pkg/front_end/parser_testcases/augmentation/augment_super.dart.intertwined.expect b/pkg/front_end/parser_testcases/augmentation/augment_super.dart.intertwined.expect
index cd25468..4895683 100644
--- a/pkg/front_end/parser_testcases/augmentation/augment_super.dart.intertwined.expect
+++ b/pkg/front_end/parser_testcases/augmentation/augment_super.dart.intertwined.expect
@@ -28,7 +28,7 @@
           notEofOrValue(}, augment)
           parseStatement({)
             parseStatementX({)
-              parseExpressionStatementOrDeclaration({, false)
+              parseExpressionStatementOrDeclaration({, null)
                 parseExpressionStatement({)
                   parseExpression({)
                     parsePrecedenceExpression({, 1, true)
@@ -74,10 +74,10 @@
           notEofOrValue(}, augment)
           parseStatement({)
             parseStatementX({)
-              parseExpressionStatementOrDeclaration({, false)
+              parseExpressionStatementOrDeclaration({, null)
                 reportRecoverableErrorWithToken(augment, Instance of 'Template<(Token) => Message>')
                   listener: handleRecoverableError(Message[ExtraneousModifier, Can't have modifier 'augment' here., Try removing 'augment'., {lexeme: augment}], augment, augment)
-                parseExpressionStatementOrDeclarationAfterModifiers(augment, {, null, null, null, false)
+                parseExpressionStatementOrDeclarationAfterModifiers(augment, {, null, null, null, null)
                   looksLikeLocalFunction(local)
                   listener: beginMetadataStar(augment)
                   listener: endMetadataStar(0)
@@ -98,8 +98,8 @@
           notEofOrValue(}, augment)
           parseStatement(;)
             parseStatementX(;)
-              parseExpressionStatementOrDeclaration(;, false)
-                parseExpressionStatementOrDeclarationAfterModifiers(;, ;, null, null, null, false)
+              parseExpressionStatementOrDeclaration(;, null)
+                parseExpressionStatementOrDeclarationAfterModifiers(;, ;, null, null, null, null)
                   looksLikeLocalFunction(augment)
                   parseExpressionStatement(;)
                     parseExpression(;)
@@ -231,7 +231,7 @@
           notEofOrValue(}, augment)
           parseStatement({)
             parseStatementX({)
-              parseExpressionStatementOrDeclaration({, false)
+              parseExpressionStatementOrDeclaration({, null)
                 parseExpressionStatement({)
                   parseExpression({)
                     parsePrecedenceExpression({, 1, true)
@@ -273,7 +273,7 @@
           notEofOrValue(}, augment)
           parseStatement(;)
             parseStatementX(;)
-              parseExpressionStatementOrDeclaration(;, false)
+              parseExpressionStatementOrDeclaration(;, null)
                 parseExpressionStatement(;)
                   parseExpression(;)
                     parsePrecedenceExpression(;, 1, true)
@@ -326,7 +326,7 @@
           notEofOrValue(}, augment)
           parseStatement({)
             parseStatementX({)
-              parseExpressionStatementOrDeclaration({, false)
+              parseExpressionStatementOrDeclaration({, null)
                 parseExpressionStatement({)
                   parseExpression({)
                     parsePrecedenceExpression({, 1, true)
@@ -345,7 +345,7 @@
           notEofOrValue(}, augment)
           parseStatement(;)
             parseStatementX(;)
-              parseExpressionStatementOrDeclaration(;, false)
+              parseExpressionStatementOrDeclaration(;, null)
                 parseExpressionStatement(;)
                   parseExpression(;)
                     parsePrecedenceExpression(;, 1, true)
@@ -358,10 +358,10 @@
           notEofOrValue(}, augment)
           parseStatement(;)
             parseStatementX(;)
-              parseExpressionStatementOrDeclaration(;, false)
+              parseExpressionStatementOrDeclaration(;, null)
                 reportRecoverableErrorWithToken(augment, Instance of 'Template<(Token) => Message>')
                   listener: handleRecoverableError(Message[ExtraneousModifier, Can't have modifier 'augment' here., Try removing 'augment'., {lexeme: augment}], augment, augment)
-                parseExpressionStatementOrDeclarationAfterModifiers(augment, ;, null, null, null, false)
+                parseExpressionStatementOrDeclarationAfterModifiers(augment, ;, null, null, null, null)
                   looksLikeLocalFunction(local)
                   listener: beginMetadataStar(augment)
                   listener: endMetadataStar(0)
@@ -382,8 +382,8 @@
           notEofOrValue(}, augment)
           parseStatement(;)
             parseStatementX(;)
-              parseExpressionStatementOrDeclaration(;, false)
-                parseExpressionStatementOrDeclarationAfterModifiers(;, ;, null, null, null, false)
+              parseExpressionStatementOrDeclaration(;, null)
+                parseExpressionStatementOrDeclarationAfterModifiers(;, ;, null, null, null, null)
                   looksLikeLocalFunction(augment)
                   parseExpressionStatement(;)
                     parseExpression(;)
@@ -460,7 +460,7 @@
                   notEofOrValue(}, augment)
                   parseStatement({)
                     parseStatementX({)
-                      parseExpressionStatementOrDeclaration({, false)
+                      parseExpressionStatementOrDeclaration({, null)
                         parseExpressionStatement({)
                           parseExpression({)
                             parsePrecedenceExpression({, 1, true)
@@ -510,10 +510,10 @@
                   notEofOrValue(}, augment)
                   parseStatement({)
                     parseStatementX({)
-                      parseExpressionStatementOrDeclaration({, false)
+                      parseExpressionStatementOrDeclaration({, null)
                         reportRecoverableErrorWithToken(augment, Instance of 'Template<(Token) => Message>')
                           listener: handleRecoverableError(Message[ExtraneousModifier, Can't have modifier 'augment' here., Try removing 'augment'., {lexeme: augment}], augment, augment)
-                        parseExpressionStatementOrDeclarationAfterModifiers(augment, {, null, null, null, false)
+                        parseExpressionStatementOrDeclarationAfterModifiers(augment, {, null, null, null, null)
                           looksLikeLocalFunction(local)
                           listener: beginMetadataStar(augment)
                           listener: endMetadataStar(0)
@@ -534,8 +534,8 @@
                   notEofOrValue(}, augment)
                   parseStatement(;)
                     parseStatementX(;)
-                      parseExpressionStatementOrDeclaration(;, false)
-                        parseExpressionStatementOrDeclarationAfterModifiers(;, ;, null, null, null, false)
+                      parseExpressionStatementOrDeclaration(;, null)
+                        parseExpressionStatementOrDeclarationAfterModifiers(;, ;, null, null, null, null)
                           looksLikeLocalFunction(augment)
                           parseExpressionStatement(;)
                             parseExpression(;)
@@ -588,7 +588,7 @@
                   notEofOrValue(}, augment)
                   parseStatement({)
                     parseStatementX({)
-                      parseExpressionStatementOrDeclaration({, false)
+                      parseExpressionStatementOrDeclaration({, null)
                         parseExpressionStatement({)
                           parseExpression({)
                             parsePrecedenceExpression({, 1, true)
@@ -602,8 +602,8 @@
                   notEofOrValue(}, --)
                   parseStatement(;)
                     parseStatementX(;)
-                      parseExpressionStatementOrDeclaration(;, false)
-                        parseExpressionStatementOrDeclarationAfterModifiers(;, ;, null, null, null, false)
+                      parseExpressionStatementOrDeclaration(;, null)
+                        parseExpressionStatementOrDeclarationAfterModifiers(;, ;, null, null, null, null)
                           looksLikeLocalFunction(--)
                           parseExpressionStatement(;)
                             parseExpression(;)
@@ -680,7 +680,7 @@
                   notEofOrValue(}, augment)
                   parseStatement({)
                     parseStatementX({)
-                      parseExpressionStatementOrDeclaration({, false)
+                      parseExpressionStatementOrDeclaration({, null)
                         parseExpressionStatement({)
                           parseExpression({)
                             parsePrecedenceExpression({, 1, true)
@@ -737,7 +737,7 @@
                   notEofOrValue(}, augment)
                   parseStatement({)
                     parseStatementX({)
-                      parseExpressionStatementOrDeclaration({, false)
+                      parseExpressionStatementOrDeclaration({, null)
                         parseExpressionStatement({)
                           parseExpression({)
                             parsePrecedenceExpression({, 1, true)
@@ -756,7 +756,7 @@
                   notEofOrValue(}, augment)
                   parseStatement(;)
                     parseStatementX(;)
-                      parseExpressionStatementOrDeclaration(;, false)
+                      parseExpressionStatementOrDeclaration(;, null)
                         parseExpressionStatement(;)
                           parseExpression(;)
                             parsePrecedenceExpression(;, 1, true)
@@ -769,10 +769,10 @@
                   notEofOrValue(}, augment)
                   parseStatement(;)
                     parseStatementX(;)
-                      parseExpressionStatementOrDeclaration(;, false)
+                      parseExpressionStatementOrDeclaration(;, null)
                         reportRecoverableErrorWithToken(augment, Instance of 'Template<(Token) => Message>')
                           listener: handleRecoverableError(Message[ExtraneousModifier, Can't have modifier 'augment' here., Try removing 'augment'., {lexeme: augment}], augment, augment)
-                        parseExpressionStatementOrDeclarationAfterModifiers(augment, ;, null, null, null, false)
+                        parseExpressionStatementOrDeclarationAfterModifiers(augment, ;, null, null, null, null)
                           looksLikeLocalFunction(local)
                           listener: beginMetadataStar(augment)
                           listener: endMetadataStar(0)
@@ -793,8 +793,8 @@
                   notEofOrValue(}, augment)
                   parseStatement(;)
                     parseStatementX(;)
-                      parseExpressionStatementOrDeclaration(;, false)
-                        parseExpressionStatementOrDeclarationAfterModifiers(;, ;, null, null, null, false)
+                      parseExpressionStatementOrDeclaration(;, null)
+                        parseExpressionStatementOrDeclarationAfterModifiers(;, ;, null, null, null, null)
                           looksLikeLocalFunction(augment)
                           parseExpressionStatement(;)
                             parseExpression(;)
diff --git a/pkg/front_end/parser_testcases/error_recovery/bracket_mismatch_00.dart.intertwined.expect b/pkg/front_end/parser_testcases/error_recovery/bracket_mismatch_00.dart.intertwined.expect
index b385061..ad8fc74 100644
--- a/pkg/front_end/parser_testcases/error_recovery/bracket_mismatch_00.dart.intertwined.expect
+++ b/pkg/front_end/parser_testcases/error_recovery/bracket_mismatch_00.dart.intertwined.expect
@@ -28,8 +28,8 @@
           notEofOrValue(}, [)
           parseStatement({)
             parseStatementX({)
-              parseExpressionStatementOrDeclaration({, false)
-                parseExpressionStatementOrDeclarationAfterModifiers({, {, null, null, null, false)
+              parseExpressionStatementOrDeclaration({, null)
+                parseExpressionStatementOrDeclarationAfterModifiers({, {, null, null, null, null)
                   looksLikeLocalFunction([)
                   parseExpressionStatement({)
                     parseExpression({)
@@ -87,8 +87,8 @@
           notEofOrValue(}, [)
           parseStatement({)
             parseStatementX({)
-              parseExpressionStatementOrDeclaration({, false)
-                parseExpressionStatementOrDeclarationAfterModifiers({, {, null, null, null, false)
+              parseExpressionStatementOrDeclaration({, null)
+                parseExpressionStatementOrDeclarationAfterModifiers({, {, null, null, null, null)
                   looksLikeLocalFunction([)
                   parseExpressionStatement({)
                     parseExpression({)
diff --git a/pkg/front_end/parser_testcases/error_recovery/bracket_mismatch_02.dart.intertwined.expect b/pkg/front_end/parser_testcases/error_recovery/bracket_mismatch_02.dart.intertwined.expect
index 1d02334..d1371b4 100644
--- a/pkg/front_end/parser_testcases/error_recovery/bracket_mismatch_02.dart.intertwined.expect
+++ b/pkg/front_end/parser_testcases/error_recovery/bracket_mismatch_02.dart.intertwined.expect
@@ -34,8 +34,8 @@
                 notEofOrValue(}, [)
                 parseStatement({)
                   parseStatementX({)
-                    parseExpressionStatementOrDeclaration({, false)
-                      parseExpressionStatementOrDeclarationAfterModifiers({, {, null, null, null, false)
+                    parseExpressionStatementOrDeclaration({, null)
+                      parseExpressionStatementOrDeclarationAfterModifiers({, {, null, null, null, null)
                         looksLikeLocalFunction([)
                         parseExpressionStatement({)
                           parseExpression({)
diff --git a/pkg/front_end/parser_testcases/error_recovery/bracket_mismatch_03.dart.intertwined.expect b/pkg/front_end/parser_testcases/error_recovery/bracket_mismatch_03.dart.intertwined.expect
index 03de5d4..39fee7c 100644
--- a/pkg/front_end/parser_testcases/error_recovery/bracket_mismatch_03.dart.intertwined.expect
+++ b/pkg/front_end/parser_testcases/error_recovery/bracket_mismatch_03.dart.intertwined.expect
@@ -34,7 +34,7 @@
                 notEofOrValue(}, foo)
                 parseStatement({)
                   parseStatementX({)
-                    parseExpressionStatementOrDeclarationAfterModifiers({, {, null, null, null, false)
+                    parseExpressionStatementOrDeclarationAfterModifiers({, {, null, null, null, null)
                       looksLikeLocalFunction(foo)
                       parseExpressionStatement({)
                         parseExpression({)
@@ -62,8 +62,8 @@
                 notEofOrValue(}, ))
                 parseStatement(;)
                   parseStatementX(;)
-                    parseExpressionStatementOrDeclaration(;, false)
-                      parseExpressionStatementOrDeclarationAfterModifiers(;, ;, null, null, null, false)
+                    parseExpressionStatementOrDeclaration(;, null)
+                      parseExpressionStatementOrDeclarationAfterModifiers(;, ;, null, null, null, null)
                         looksLikeLocalFunction())
                         parseExpressionStatement(;)
                           parseExpression(;)
diff --git a/pkg/front_end/parser_testcases/error_recovery/bracket_mismatch_04.dart.intertwined.expect b/pkg/front_end/parser_testcases/error_recovery/bracket_mismatch_04.dart.intertwined.expect
index 9bab235..e5e8db9 100644
--- a/pkg/front_end/parser_testcases/error_recovery/bracket_mismatch_04.dart.intertwined.expect
+++ b/pkg/front_end/parser_testcases/error_recovery/bracket_mismatch_04.dart.intertwined.expect
@@ -28,7 +28,7 @@
           notEofOrValue(}, foo)
           parseStatement({)
             parseStatementX({)
-              parseExpressionStatementOrDeclarationAfterModifiers({, {, null, null, null, false)
+              parseExpressionStatementOrDeclarationAfterModifiers({, {, null, null, null, null)
                 looksLikeLocalFunction(foo)
                 parseExpressionStatement({)
                   parseExpression({)
@@ -67,7 +67,7 @@
                                                     notEofOrValue(}, bar)
                                                     parseStatement({)
                                                       parseStatementX({)
-                                                        parseExpressionStatementOrDeclarationAfterModifiers({, {, null, null, null, false)
+                                                        parseExpressionStatementOrDeclarationAfterModifiers({, {, null, null, null, null)
                                                           looksLikeLocalFunction(bar)
                                                           parseExpressionStatement({)
                                                             parseExpression({)
@@ -95,8 +95,8 @@
                                                     notEofOrValue(}, ))
                                                     parseStatement(;)
                                                       parseStatementX(;)
-                                                        parseExpressionStatementOrDeclaration(;, false)
-                                                          parseExpressionStatementOrDeclarationAfterModifiers(;, ;, null, null, null, false)
+                                                        parseExpressionStatementOrDeclaration(;, null)
+                                                          parseExpressionStatementOrDeclarationAfterModifiers(;, ;, null, null, null, null)
                                                             looksLikeLocalFunction())
                                                             parseExpressionStatement(;)
                                                               parseExpression(;)
diff --git a/pkg/front_end/parser_testcases/error_recovery/bracket_mismatch_05.dart.intertwined.expect b/pkg/front_end/parser_testcases/error_recovery/bracket_mismatch_05.dart.intertwined.expect
index d0d524e..84329b0 100644
--- a/pkg/front_end/parser_testcases/error_recovery/bracket_mismatch_05.dart.intertwined.expect
+++ b/pkg/front_end/parser_testcases/error_recovery/bracket_mismatch_05.dart.intertwined.expect
@@ -34,8 +34,8 @@
                 notEofOrValue(}, [)
                 parseStatement({)
                   parseStatementX({)
-                    parseExpressionStatementOrDeclaration({, false)
-                      parseExpressionStatementOrDeclarationAfterModifiers({, {, null, null, null, false)
+                    parseExpressionStatementOrDeclaration({, null)
+                      parseExpressionStatementOrDeclarationAfterModifiers({, {, null, null, null, null)
                         looksLikeLocalFunction([)
                         parseExpressionStatement({)
                           parseExpression({)
diff --git a/pkg/front_end/parser_testcases/error_recovery/bracket_mismatch_06.dart.intertwined.expect b/pkg/front_end/parser_testcases/error_recovery/bracket_mismatch_06.dart.intertwined.expect
index 050a0b9..6d6a27b 100644
--- a/pkg/front_end/parser_testcases/error_recovery/bracket_mismatch_06.dart.intertwined.expect
+++ b/pkg/front_end/parser_testcases/error_recovery/bracket_mismatch_06.dart.intertwined.expect
@@ -29,8 +29,8 @@
           notEofOrValue(}, new)
           parseStatement({)
             parseStatementX({)
-              parseExpressionStatementOrDeclaration({, false)
-                parseExpressionStatementOrDeclarationAfterModifiers({, {, null, null, null, false)
+              parseExpressionStatementOrDeclaration({, null)
+                parseExpressionStatementOrDeclarationAfterModifiers({, {, null, null, null, null)
                   looksLikeLocalFunction(new)
                   parseExpressionStatement({)
                     parseExpression({)
diff --git a/pkg/front_end/parser_testcases/error_recovery/comment_on_non_ascii_identifier.dart.intertwined.expect b/pkg/front_end/parser_testcases/error_recovery/comment_on_non_ascii_identifier.dart.intertwined.expect
index 0e97664..a84a466 100644
--- a/pkg/front_end/parser_testcases/error_recovery/comment_on_non_ascii_identifier.dart.intertwined.expect
+++ b/pkg/front_end/parser_testcases/error_recovery/comment_on_non_ascii_identifier.dart.intertwined.expect
@@ -29,7 +29,7 @@
           notEofOrValue(}, int)
           parseStatement({)
             parseStatementX({)
-              parseExpressionStatementOrDeclarationAfterModifiers({, {, null, null, null, false)
+              parseExpressionStatementOrDeclarationAfterModifiers({, {, null, null, null, null)
                 looksLikeLocalFunction(æFoo)
                 listener: beginMetadataStar(int)
                 listener: endMetadataStar(0)
@@ -57,7 +57,7 @@
           notEofOrValue(}, int)
           parseStatement(;)
             parseStatementX(;)
-              parseExpressionStatementOrDeclarationAfterModifiers(;, ;, null, null, null, false)
+              parseExpressionStatementOrDeclarationAfterModifiers(;, ;, null, null, null, null)
                 looksLikeLocalFunction(fooÆ)
                 listener: beginMetadataStar(int)
                 listener: endMetadataStar(0)
@@ -85,7 +85,7 @@
           notEofOrValue(}, int)
           parseStatement(;)
             parseStatementX(;)
-              parseExpressionStatementOrDeclarationAfterModifiers(;, ;, null, null, null, false)
+              parseExpressionStatementOrDeclarationAfterModifiers(;, ;, null, null, null, null)
                 looksLikeLocalFunction(foo)
                 listener: beginMetadataStar(int)
                 listener: endMetadataStar(0)
@@ -113,7 +113,7 @@
           notEofOrValue(}, print)
           parseStatement(;)
             parseStatementX(;)
-              parseExpressionStatementOrDeclarationAfterModifiers(;, ;, null, null, null, false)
+              parseExpressionStatementOrDeclarationAfterModifiers(;, ;, null, null, null, null)
                 looksLikeLocalFunction(print)
                 parseExpressionStatement(;)
                   parseExpression(;)
@@ -151,7 +151,7 @@
           notEofOrValue(}, print)
           parseStatement(;)
             parseStatementX(;)
-              parseExpressionStatementOrDeclarationAfterModifiers(;, ;, null, null, null, false)
+              parseExpressionStatementOrDeclarationAfterModifiers(;, ;, null, null, null, null)
                 looksLikeLocalFunction(print)
                 parseExpressionStatement(;)
                   parseExpression(;)
@@ -189,7 +189,7 @@
           notEofOrValue(}, print)
           parseStatement(;)
             parseStatementX(;)
-              parseExpressionStatementOrDeclarationAfterModifiers(;, ;, null, null, null, false)
+              parseExpressionStatementOrDeclarationAfterModifiers(;, ;, null, null, null, null)
                 looksLikeLocalFunction(print)
                 parseExpressionStatement(;)
                   parseExpression(;)
diff --git a/pkg/front_end/parser_testcases/error_recovery/empty_await_for.dart.intertwined.expect b/pkg/front_end/parser_testcases/error_recovery/empty_await_for.dart.intertwined.expect
index 32971a6..cd4e45c 100644
--- a/pkg/front_end/parser_testcases/error_recovery/empty_await_for.dart.intertwined.expect
+++ b/pkg/front_end/parser_testcases/error_recovery/empty_await_for.dart.intertwined.expect
@@ -31,9 +31,9 @@
             parseStatementX({)
               parseForStatement(await, await)
                 listener: beginForStatement(for)
-                parseForLoopPartsStart(await, for)
-                  parseExpressionStatementOrDeclaration((, true)
-                    parseExpressionStatementOrDeclarationAfterModifiers((, (, null, null, null, true)
+                parseForLoopPartsStart(await, for, ForPartsContext(null))
+                  parseExpressionStatementOrDeclaration((, ForPartsContext(null))
+                    parseExpressionStatementOrDeclarationAfterModifiers((, (, null, null, null, ForPartsContext(null))
                 parseForLoopPartsMid((, await, for)
                   parseExpression(()
                     parsePrecedenceExpression((, 1, true)
diff --git a/pkg/front_end/parser_testcases/error_recovery/empty_for.dart.intertwined.expect b/pkg/front_end/parser_testcases/error_recovery/empty_for.dart.intertwined.expect
index fb0bab6..a2fda33 100644
--- a/pkg/front_end/parser_testcases/error_recovery/empty_for.dart.intertwined.expect
+++ b/pkg/front_end/parser_testcases/error_recovery/empty_for.dart.intertwined.expect
@@ -31,9 +31,9 @@
             parseStatementX({)
               parseForStatement({, null)
                 listener: beginForStatement(for)
-                parseForLoopPartsStart(null, for)
-                  parseExpressionStatementOrDeclaration((, true)
-                    parseExpressionStatementOrDeclarationAfterModifiers((, (, null, null, null, true)
+                parseForLoopPartsStart(null, for, ForPartsContext(null))
+                  parseExpressionStatementOrDeclaration((, ForPartsContext(null))
+                    parseExpressionStatementOrDeclarationAfterModifiers((, (, null, null, null, ForPartsContext(null))
                 parseForLoopPartsMid((, null, for)
                   parseExpression(()
                     parsePrecedenceExpression((, 1, true)
diff --git a/pkg/front_end/parser_testcases/error_recovery/extension_member_contributor_test_completion.dart.intertwined.expect b/pkg/front_end/parser_testcases/error_recovery/extension_member_contributor_test_completion.dart.intertwined.expect
index 41327a0..be4dcf8 100644
--- a/pkg/front_end/parser_testcases/error_recovery/extension_member_contributor_test_completion.dart.intertwined.expect
+++ b/pkg/front_end/parser_testcases/error_recovery/extension_member_contributor_test_completion.dart.intertwined.expect
@@ -216,7 +216,7 @@
           notEofOrValue(}, l)
           parseStatement({)
             parseStatementX({)
-              parseExpressionStatementOrDeclarationAfterModifiers({, {, null, null, null, false)
+              parseExpressionStatementOrDeclarationAfterModifiers({, {, null, null, null, null)
                 looksLikeLocalFunction(l)
                 parseExpressionStatement({)
                   parseExpression({)
@@ -294,7 +294,7 @@
           notEofOrValue(}, l)
           parseStatement({)
             parseStatementX({)
-              parseExpressionStatementOrDeclarationAfterModifiers({, {, null, null, null, false)
+              parseExpressionStatementOrDeclarationAfterModifiers({, {, null, null, null, null)
                 looksLikeLocalFunction(print)
                 listener: beginMetadataStar(l)
                 listener: endMetadataStar(0)
@@ -320,8 +320,8 @@
           notEofOrValue(}, ()
           parseStatement(;)
             parseStatementX(;)
-              parseExpressionStatementOrDeclaration(;, false)
-                parseExpressionStatementOrDeclarationAfterModifiers(;, ;, null, null, null, false)
+              parseExpressionStatementOrDeclaration(;, null)
+                parseExpressionStatementOrDeclarationAfterModifiers(;, ;, null, null, null, null)
                   looksLikeLocalFunction(()
                   parseExpressionStatement(;)
                     parseExpression(;)
diff --git a/pkg/front_end/parser_testcases/error_recovery/for_in_with_colon.dart.intertwined.expect b/pkg/front_end/parser_testcases/error_recovery/for_in_with_colon.dart.intertwined.expect
index bcc5d77..7b27c79 100644
--- a/pkg/front_end/parser_testcases/error_recovery/for_in_with_colon.dart.intertwined.expect
+++ b/pkg/front_end/parser_testcases/error_recovery/for_in_with_colon.dart.intertwined.expect
@@ -31,9 +31,9 @@
             parseStatementX({)
               parseForStatement({, null)
                 listener: beginForStatement(for)
-                parseForLoopPartsStart(null, for)
-                  parseExpressionStatementOrDeclaration((, true)
-                    parseExpressionStatementOrDeclarationAfterModifiers((, (, null, null, null, true)
+                parseForLoopPartsStart(null, for, ForPartsContext(null))
+                  parseExpressionStatementOrDeclaration((, ForPartsContext(null))
+                    parseExpressionStatementOrDeclarationAfterModifiers((, (, null, null, null, ForPartsContext(null))
                       listener: beginMetadataStar(int)
                       listener: endMetadataStar(0)
                       listener: handleIdentifier(int, typeReference)
@@ -93,7 +93,7 @@
                         notEofOrValue(}, print)
                         parseStatement({)
                           parseStatementX({)
-                            parseExpressionStatementOrDeclarationAfterModifiers({, {, null, null, null, false)
+                            parseExpressionStatementOrDeclarationAfterModifiers({, {, null, null, null, null)
                               looksLikeLocalFunction(print)
                               parseExpressionStatement({)
                                 parseExpression({)
diff --git a/pkg/front_end/parser_testcases/error_recovery/issue_000032.dart.intertwined.expect b/pkg/front_end/parser_testcases/error_recovery/issue_000032.dart.intertwined.expect
index 40e0b54..6fcb355 100644
--- a/pkg/front_end/parser_testcases/error_recovery/issue_000032.dart.intertwined.expect
+++ b/pkg/front_end/parser_testcases/error_recovery/issue_000032.dart.intertwined.expect
@@ -90,7 +90,7 @@
           notEofOrValue(}, C)
           parseStatement({)
             parseStatementX({)
-              parseExpressionStatementOrDeclarationAfterModifiers({, {, null, null, null, false)
+              parseExpressionStatementOrDeclarationAfterModifiers({, {, null, null, null, null)
                 looksLikeLocalFunction(C)
                 parseExpressionStatement({)
                   parseExpression({)
diff --git a/pkg/front_end/parser_testcases/error_recovery/issue_26810.dart.intertwined.expect b/pkg/front_end/parser_testcases/error_recovery/issue_26810.dart.intertwined.expect
index 0f7328a..a247363 100644
--- a/pkg/front_end/parser_testcases/error_recovery/issue_26810.dart.intertwined.expect
+++ b/pkg/front_end/parser_testcases/error_recovery/issue_26810.dart.intertwined.expect
@@ -1193,7 +1193,7 @@
                   notEofOrValue(}, int)
                   parseStatement({)
                     parseStatementX({)
-                      parseExpressionStatementOrDeclarationAfterModifiers({, {, null, null, null, false)
+                      parseExpressionStatementOrDeclarationAfterModifiers({, {, null, null, null, null)
                         looksLikeLocalFunction(z)
                         listener: beginMetadataStar(int)
                         listener: endMetadataStar(0)
@@ -1332,7 +1332,7 @@
                   notEofOrValue(}, int)
                   parseStatement({)
                     parseStatementX({)
-                      parseExpressionStatementOrDeclarationAfterModifiers({, {, null, null, null, false)
+                      parseExpressionStatementOrDeclarationAfterModifiers({, {, null, null, null, null)
                         looksLikeLocalFunction(z)
                         listener: beginMetadataStar(int)
                         listener: endMetadataStar(0)
@@ -1902,7 +1902,7 @@
                   notEofOrValue(}, s)
                   parseStatement({)
                     parseStatementX({)
-                      parseExpressionStatementOrDeclarationAfterModifiers({, {, null, null, null, false)
+                      parseExpressionStatementOrDeclarationAfterModifiers({, {, null, null, null, null)
                         looksLikeLocalFunction(s)
                         parseExpressionStatement({)
                           parseExpression({)
@@ -2005,7 +2005,7 @@
                   notEofOrValue(}, s)
                   parseStatement(;)
                     parseStatementX(;)
-                      parseExpressionStatementOrDeclarationAfterModifiers(;, ;, null, null, null, false)
+                      parseExpressionStatementOrDeclarationAfterModifiers(;, ;, null, null, null, null)
                         looksLikeLocalFunction(s)
                         parseExpressionStatement(;)
                           parseExpression(;)
@@ -2254,7 +2254,7 @@
                   notEofOrValue(}, print)
                   parseStatement({)
                     parseStatementX({)
-                      parseExpressionStatementOrDeclarationAfterModifiers({, {, null, null, null, false)
+                      parseExpressionStatementOrDeclarationAfterModifiers({, {, null, null, null, null)
                         looksLikeLocalFunction(print)
                         parseExpressionStatement({)
                           parseExpression({)
@@ -2475,7 +2475,7 @@
                   notEofOrValue(}, print)
                   parseStatement({)
                     parseStatementX({)
-                      parseExpressionStatementOrDeclarationAfterModifiers({, {, null, null, null, false)
+                      parseExpressionStatementOrDeclarationAfterModifiers({, {, null, null, null, null)
                         looksLikeLocalFunction(print)
                         parseExpressionStatement({)
                           parseExpression({)
@@ -2594,7 +2594,7 @@
                   notEofOrValue(}, x)
                   parseStatement({)
                     parseStatementX({)
-                      parseExpressionStatementOrDeclarationAfterModifiers({, {, null, null, null, false)
+                      parseExpressionStatementOrDeclarationAfterModifiers({, {, null, null, null, null)
                         looksLikeLocalFunction(xor)
                         listener: beginMetadataStar(x)
                         listener: endMetadataStar(0)
@@ -2618,7 +2618,7 @@
                   notEofOrValue(}, y)
                   parseStatement(;)
                     parseStatementX(;)
-                      parseExpressionStatementOrDeclarationAfterModifiers(;, ;, null, null, null, false)
+                      parseExpressionStatementOrDeclarationAfterModifiers(;, ;, null, null, null, null)
                         looksLikeLocalFunction(y)
                         parseExpressionStatement(;)
                           parseExpression(;)
@@ -2639,7 +2639,7 @@
                   notEofOrValue(}, x)
                   parseStatement(;)
                     parseStatementX(;)
-                      parseExpressionStatementOrDeclarationAfterModifiers(;, ;, null, null, null, false)
+                      parseExpressionStatementOrDeclarationAfterModifiers(;, ;, null, null, null, null)
                         looksLikeLocalFunction(x)
                         parseExpressionStatement(;)
                           parseExpression(;)
diff --git a/pkg/front_end/parser_testcases/error_recovery/issue_26810_and.dart.intertwined.expect b/pkg/front_end/parser_testcases/error_recovery/issue_26810_and.dart.intertwined.expect
index bb27e99..f274a55 100644
--- a/pkg/front_end/parser_testcases/error_recovery/issue_26810_and.dart.intertwined.expect
+++ b/pkg/front_end/parser_testcases/error_recovery/issue_26810_and.dart.intertwined.expect
@@ -1195,7 +1195,7 @@
                   notEofOrValue(}, int)
                   parseStatement({)
                     parseStatementX({)
-                      parseExpressionStatementOrDeclarationAfterModifiers({, {, null, null, null, false)
+                      parseExpressionStatementOrDeclarationAfterModifiers({, {, null, null, null, null)
                         looksLikeLocalFunction(z)
                         listener: beginMetadataStar(int)
                         listener: endMetadataStar(0)
@@ -1334,7 +1334,7 @@
                   notEofOrValue(}, int)
                   parseStatement({)
                     parseStatementX({)
-                      parseExpressionStatementOrDeclarationAfterModifiers({, {, null, null, null, false)
+                      parseExpressionStatementOrDeclarationAfterModifiers({, {, null, null, null, null)
                         looksLikeLocalFunction(z)
                         listener: beginMetadataStar(int)
                         listener: endMetadataStar(0)
@@ -1906,7 +1906,7 @@
                   notEofOrValue(}, s)
                   parseStatement({)
                     parseStatementX({)
-                      parseExpressionStatementOrDeclarationAfterModifiers({, {, null, null, null, false)
+                      parseExpressionStatementOrDeclarationAfterModifiers({, {, null, null, null, null)
                         looksLikeLocalFunction(s)
                         parseExpressionStatement({)
                           parseExpression({)
@@ -2009,7 +2009,7 @@
                   notEofOrValue(}, s)
                   parseStatement(;)
                     parseStatementX(;)
-                      parseExpressionStatementOrDeclarationAfterModifiers(;, ;, null, null, null, false)
+                      parseExpressionStatementOrDeclarationAfterModifiers(;, ;, null, null, null, null)
                         looksLikeLocalFunction(s)
                         parseExpressionStatement(;)
                           parseExpression(;)
@@ -2258,7 +2258,7 @@
                   notEofOrValue(}, print)
                   parseStatement({)
                     parseStatementX({)
-                      parseExpressionStatementOrDeclarationAfterModifiers({, {, null, null, null, false)
+                      parseExpressionStatementOrDeclarationAfterModifiers({, {, null, null, null, null)
                         looksLikeLocalFunction(print)
                         parseExpressionStatement({)
                           parseExpression({)
@@ -2479,7 +2479,7 @@
                   notEofOrValue(}, print)
                   parseStatement({)
                     parseStatementX({)
-                      parseExpressionStatementOrDeclarationAfterModifiers({, {, null, null, null, false)
+                      parseExpressionStatementOrDeclarationAfterModifiers({, {, null, null, null, null)
                         looksLikeLocalFunction(print)
                         parseExpressionStatement({)
                           parseExpression({)
@@ -2598,7 +2598,7 @@
                   notEofOrValue(}, x)
                   parseStatement({)
                     parseStatementX({)
-                      parseExpressionStatementOrDeclarationAfterModifiers({, {, null, null, null, false)
+                      parseExpressionStatementOrDeclarationAfterModifiers({, {, null, null, null, null)
                         looksLikeLocalFunction(and)
                         listener: beginMetadataStar(x)
                         listener: endMetadataStar(0)
@@ -2622,7 +2622,7 @@
                   notEofOrValue(}, y)
                   parseStatement(;)
                     parseStatementX(;)
-                      parseExpressionStatementOrDeclarationAfterModifiers(;, ;, null, null, null, false)
+                      parseExpressionStatementOrDeclarationAfterModifiers(;, ;, null, null, null, null)
                         looksLikeLocalFunction(y)
                         parseExpressionStatement(;)
                           parseExpression(;)
@@ -2643,7 +2643,7 @@
                   notEofOrValue(}, x)
                   parseStatement(;)
                     parseStatementX(;)
-                      parseExpressionStatementOrDeclarationAfterModifiers(;, ;, null, null, null, false)
+                      parseExpressionStatementOrDeclarationAfterModifiers(;, ;, null, null, null, null)
                         looksLikeLocalFunction(x)
                         parseExpressionStatement(;)
                           parseExpression(;)
diff --git a/pkg/front_end/parser_testcases/error_recovery/issue_26810_or.dart.intertwined.expect b/pkg/front_end/parser_testcases/error_recovery/issue_26810_or.dart.intertwined.expect
index 544b261..d59bb5e 100644
--- a/pkg/front_end/parser_testcases/error_recovery/issue_26810_or.dart.intertwined.expect
+++ b/pkg/front_end/parser_testcases/error_recovery/issue_26810_or.dart.intertwined.expect
@@ -1195,7 +1195,7 @@
                   notEofOrValue(}, int)
                   parseStatement({)
                     parseStatementX({)
-                      parseExpressionStatementOrDeclarationAfterModifiers({, {, null, null, null, false)
+                      parseExpressionStatementOrDeclarationAfterModifiers({, {, null, null, null, null)
                         looksLikeLocalFunction(z)
                         listener: beginMetadataStar(int)
                         listener: endMetadataStar(0)
@@ -1334,7 +1334,7 @@
                   notEofOrValue(}, int)
                   parseStatement({)
                     parseStatementX({)
-                      parseExpressionStatementOrDeclarationAfterModifiers({, {, null, null, null, false)
+                      parseExpressionStatementOrDeclarationAfterModifiers({, {, null, null, null, null)
                         looksLikeLocalFunction(z)
                         listener: beginMetadataStar(int)
                         listener: endMetadataStar(0)
@@ -1906,7 +1906,7 @@
                   notEofOrValue(}, s)
                   parseStatement({)
                     parseStatementX({)
-                      parseExpressionStatementOrDeclarationAfterModifiers({, {, null, null, null, false)
+                      parseExpressionStatementOrDeclarationAfterModifiers({, {, null, null, null, null)
                         looksLikeLocalFunction(s)
                         parseExpressionStatement({)
                           parseExpression({)
@@ -2009,7 +2009,7 @@
                   notEofOrValue(}, s)
                   parseStatement(;)
                     parseStatementX(;)
-                      parseExpressionStatementOrDeclarationAfterModifiers(;, ;, null, null, null, false)
+                      parseExpressionStatementOrDeclarationAfterModifiers(;, ;, null, null, null, null)
                         looksLikeLocalFunction(s)
                         parseExpressionStatement(;)
                           parseExpression(;)
@@ -2258,7 +2258,7 @@
                   notEofOrValue(}, print)
                   parseStatement({)
                     parseStatementX({)
-                      parseExpressionStatementOrDeclarationAfterModifiers({, {, null, null, null, false)
+                      parseExpressionStatementOrDeclarationAfterModifiers({, {, null, null, null, null)
                         looksLikeLocalFunction(print)
                         parseExpressionStatement({)
                           parseExpression({)
@@ -2479,7 +2479,7 @@
                   notEofOrValue(}, print)
                   parseStatement({)
                     parseStatementX({)
-                      parseExpressionStatementOrDeclarationAfterModifiers({, {, null, null, null, false)
+                      parseExpressionStatementOrDeclarationAfterModifiers({, {, null, null, null, null)
                         looksLikeLocalFunction(print)
                         parseExpressionStatement({)
                           parseExpression({)
@@ -2598,7 +2598,7 @@
                   notEofOrValue(}, x)
                   parseStatement({)
                     parseStatementX({)
-                      parseExpressionStatementOrDeclarationAfterModifiers({, {, null, null, null, false)
+                      parseExpressionStatementOrDeclarationAfterModifiers({, {, null, null, null, null)
                         looksLikeLocalFunction(or)
                         listener: beginMetadataStar(x)
                         listener: endMetadataStar(0)
@@ -2622,7 +2622,7 @@
                   notEofOrValue(}, y)
                   parseStatement(;)
                     parseStatementX(;)
-                      parseExpressionStatementOrDeclarationAfterModifiers(;, ;, null, null, null, false)
+                      parseExpressionStatementOrDeclarationAfterModifiers(;, ;, null, null, null, null)
                         looksLikeLocalFunction(y)
                         parseExpressionStatement(;)
                           parseExpression(;)
@@ -2643,7 +2643,7 @@
                   notEofOrValue(}, x)
                   parseStatement(;)
                     parseStatementX(;)
-                      parseExpressionStatementOrDeclarationAfterModifiers(;, ;, null, null, null, false)
+                      parseExpressionStatementOrDeclarationAfterModifiers(;, ;, null, null, null, null)
                         looksLikeLocalFunction(x)
                         parseExpressionStatement(;)
                           parseExpression(;)
diff --git a/pkg/front_end/parser_testcases/error_recovery/issue_38415.crash_dart.intertwined.expect b/pkg/front_end/parser_testcases/error_recovery/issue_38415.crash_dart.intertwined.expect
index dc4c233..57cb219 100644
--- a/pkg/front_end/parser_testcases/error_recovery/issue_38415.crash_dart.intertwined.expect
+++ b/pkg/front_end/parser_testcases/error_recovery/issue_38415.crash_dart.intertwined.expect
@@ -29,7 +29,7 @@
           notEofOrValue(}, m)
           parseStatement({)
             parseStatementX({)
-              parseExpressionStatementOrDeclarationAfterModifiers({, {, null, null, null, false)
+              parseExpressionStatementOrDeclarationAfterModifiers({, {, null, null, null, null)
                 looksLikeLocalFunction(m)
                 parseExpressionStatement({)
                   parseExpression({)
diff --git a/pkg/front_end/parser_testcases/error_recovery/issue_39058.crash_dart.intertwined.expect b/pkg/front_end/parser_testcases/error_recovery/issue_39058.crash_dart.intertwined.expect
index 4bbd143..584fcc0 100644
--- a/pkg/front_end/parser_testcases/error_recovery/issue_39058.crash_dart.intertwined.expect
+++ b/pkg/front_end/parser_testcases/error_recovery/issue_39058.crash_dart.intertwined.expect
@@ -17,8 +17,8 @@
           notEofOrValue(}, <)
           parseStatement({)
             parseStatementX({)
-              parseExpressionStatementOrDeclaration({, false)
-                parseExpressionStatementOrDeclarationAfterModifiers({, {, null, null, null, false)
+              parseExpressionStatementOrDeclaration({, null)
+                parseExpressionStatementOrDeclarationAfterModifiers({, {, null, null, null, null)
                   looksLikeLocalFunction(<)
                   parseExpressionStatement({)
                     parseExpression({)
diff --git a/pkg/front_end/parser_testcases/error_recovery/issue_39058_prime.crash_dart.intertwined.expect b/pkg/front_end/parser_testcases/error_recovery/issue_39058_prime.crash_dart.intertwined.expect
index 4ed5364..5b3514d 100644
--- a/pkg/front_end/parser_testcases/error_recovery/issue_39058_prime.crash_dart.intertwined.expect
+++ b/pkg/front_end/parser_testcases/error_recovery/issue_39058_prime.crash_dart.intertwined.expect
@@ -17,8 +17,8 @@
           notEofOrValue(}, <)
           parseStatement({)
             parseStatementX({)
-              parseExpressionStatementOrDeclaration({, false)
-                parseExpressionStatementOrDeclarationAfterModifiers({, {, null, null, null, false)
+              parseExpressionStatementOrDeclaration({, null)
+                parseExpressionStatementOrDeclarationAfterModifiers({, {, null, null, null, null)
                   looksLikeLocalFunction(<)
                   parseExpressionStatement({)
                     parseExpression({)
diff --git a/pkg/front_end/parser_testcases/error_recovery/issue_39060.dart.intertwined.expect b/pkg/front_end/parser_testcases/error_recovery/issue_39060.dart.intertwined.expect
index 0764dff..d28fdff 100644
--- a/pkg/front_end/parser_testcases/error_recovery/issue_39060.dart.intertwined.expect
+++ b/pkg/front_end/parser_testcases/error_recovery/issue_39060.dart.intertwined.expect
@@ -35,7 +35,7 @@
                 notEofOrValue(}, s)
                 parseStatement({)
                   parseStatementX({)
-                    parseExpressionStatementOrDeclarationAfterModifiers({, {, null, null, null, false)
+                    parseExpressionStatementOrDeclarationAfterModifiers({, {, null, null, null, null)
                       looksLikeLocalFunction(A)
                       listener: beginMetadataStar(s)
                       listener: endMetadataStar(0)
@@ -59,8 +59,8 @@
                 notEofOrValue(}, <)
                 parseStatement(;)
                   parseStatementX(;)
-                    parseExpressionStatementOrDeclaration(;, false)
-                      parseExpressionStatementOrDeclarationAfterModifiers(;, ;, null, null, null, false)
+                    parseExpressionStatementOrDeclaration(;, null)
+                      parseExpressionStatementOrDeclarationAfterModifiers(;, ;, null, null, null, null)
                         looksLikeLocalFunction(<)
                         parseExpressionStatement(;)
                           parseExpression(;)
diff --git a/pkg/front_end/parser_testcases/error_recovery/issue_42267.dart.intertwined.expect b/pkg/front_end/parser_testcases/error_recovery/issue_42267.dart.intertwined.expect
index ef58d44..ab72ecb 100644
--- a/pkg/front_end/parser_testcases/error_recovery/issue_42267.dart.intertwined.expect
+++ b/pkg/front_end/parser_testcases/error_recovery/issue_42267.dart.intertwined.expect
@@ -28,7 +28,7 @@
           notEofOrValue(}, builder)
           parseStatement({)
             parseStatementX({)
-              parseExpressionStatementOrDeclarationAfterModifiers({, {, null, null, null, false)
+              parseExpressionStatementOrDeclarationAfterModifiers({, {, null, null, null, null)
                 looksLikeLocalFunction(builder)
                 parseExpressionStatement({)
                   parseExpression({)
@@ -77,7 +77,7 @@
           notEofOrValue(}, FilterSet)
           parseStatement(;)
             parseStatementX(;)
-              parseExpressionStatementOrDeclarationAfterModifiers(;, ;, null, null, null, false)
+              parseExpressionStatementOrDeclarationAfterModifiers(;, ;, null, null, null, null)
                 looksLikeLocalFunction(FilterSet)
                 parseExpressionStatement(;)
                   parseExpression(;)
@@ -174,7 +174,7 @@
           notEofOrValue(}, builder)
           parseStatement(;)
             parseStatementX(;)
-              parseExpressionStatementOrDeclarationAfterModifiers(;, ;, null, null, null, false)
+              parseExpressionStatementOrDeclarationAfterModifiers(;, ;, null, null, null, null)
                 looksLikeLocalFunction(builder)
                 parseExpressionStatement(;)
                   parseExpression(;)
@@ -228,7 +228,7 @@
           notEofOrValue(}, FilterSet)
           parseStatement(;)
             parseStatementX(;)
-              parseExpressionStatementOrDeclarationAfterModifiers(;, ;, null, null, null, false)
+              parseExpressionStatementOrDeclarationAfterModifiers(;, ;, null, null, null, null)
                 looksLikeLocalFunction(FilterSet)
                 parseExpressionStatement(;)
                   parseExpression(;)
@@ -330,7 +330,7 @@
           notEofOrValue(}, builder)
           parseStatement(;)
             parseStatementX(;)
-              parseExpressionStatementOrDeclarationAfterModifiers(;, ;, null, null, null, false)
+              parseExpressionStatementOrDeclarationAfterModifiers(;, ;, null, null, null, null)
                 looksLikeLocalFunction(builder)
                 parseExpressionStatement(;)
                   parseExpression(;)
@@ -381,7 +381,7 @@
           notEofOrValue(}, FilterSet)
           parseStatement(;)
             parseStatementX(;)
-              parseExpressionStatementOrDeclarationAfterModifiers(;, ;, null, null, null, false)
+              parseExpressionStatementOrDeclarationAfterModifiers(;, ;, null, null, null, null)
                 looksLikeLocalFunction(FilterSet)
                 parseExpressionStatement(;)
                   parseExpression(;)
diff --git a/pkg/front_end/parser_testcases/error_recovery/issue_45327.crash_dart.intertwined.expect b/pkg/front_end/parser_testcases/error_recovery/issue_45327.crash_dart.intertwined.expect
index ac7b8a7..928bc96 100644
--- a/pkg/front_end/parser_testcases/error_recovery/issue_45327.crash_dart.intertwined.expect
+++ b/pkg/front_end/parser_testcases/error_recovery/issue_45327.crash_dart.intertwined.expect
@@ -71,7 +71,7 @@
                 listener: beginThenStatement(or)
                 parseStatement())
                   parseStatementX())
-                    parseExpressionStatementOrDeclarationAfterModifiers(), ), null, null, null, false)
+                    parseExpressionStatementOrDeclarationAfterModifiers(), ), null, null, null, null)
                       looksLikeLocalFunction(or)
                       parseExpressionStatement())
                         parseExpression())
diff --git a/pkg/front_end/parser_testcases/error_recovery/issue_45327_prime_1.crash_dart.intertwined.expect b/pkg/front_end/parser_testcases/error_recovery/issue_45327_prime_1.crash_dart.intertwined.expect
index cce9a3c0..b842e8f 100644
--- a/pkg/front_end/parser_testcases/error_recovery/issue_45327_prime_1.crash_dart.intertwined.expect
+++ b/pkg/front_end/parser_testcases/error_recovery/issue_45327_prime_1.crash_dart.intertwined.expect
@@ -118,7 +118,7 @@
                         listener: beginThenStatement(or)
                         parseStatement())
                           parseStatementX())
-                            parseExpressionStatementOrDeclarationAfterModifiers(), ), null, null, null, false)
+                            parseExpressionStatementOrDeclarationAfterModifiers(), ), null, null, null, null)
                               looksLikeLocalFunction(or)
                               parseExpressionStatement())
                                 parseExpression())
diff --git a/pkg/front_end/parser_testcases/error_recovery/issue_48288.dart.intertwined.expect b/pkg/front_end/parser_testcases/error_recovery/issue_48288.dart.intertwined.expect
index 3c69aee..7d75e4f 100644
--- a/pkg/front_end/parser_testcases/error_recovery/issue_48288.dart.intertwined.expect
+++ b/pkg/front_end/parser_testcases/error_recovery/issue_48288.dart.intertwined.expect
@@ -40,7 +40,7 @@
           notEofOrValue(}, g)
           parseStatement({)
             parseStatementX({)
-              parseExpressionStatementOrDeclarationAfterModifiers({, {, null, null, null, false)
+              parseExpressionStatementOrDeclarationAfterModifiers({, {, null, null, null, null)
                 looksLikeLocalFunction(g)
                 parseExpressionStatement({)
                   parseExpression({)
diff --git a/pkg/front_end/parser_testcases/error_recovery/issue_48288_prime.dart.intertwined.expect b/pkg/front_end/parser_testcases/error_recovery/issue_48288_prime.dart.intertwined.expect
index e7e4c1e..dec0289 100644
--- a/pkg/front_end/parser_testcases/error_recovery/issue_48288_prime.dart.intertwined.expect
+++ b/pkg/front_end/parser_testcases/error_recovery/issue_48288_prime.dart.intertwined.expect
@@ -40,7 +40,7 @@
           notEofOrValue(}, g)
           parseStatement({)
             parseStatementX({)
-              parseExpressionStatementOrDeclarationAfterModifiers({, {, null, null, null, false)
+              parseExpressionStatementOrDeclarationAfterModifiers({, {, null, null, null, null)
                 looksLikeLocalFunction(g)
                 parseExpressionStatement({)
                   parseExpression({)
diff --git a/pkg/front_end/parser_testcases/error_recovery/issue_48371_prime3.dart.intertwined.expect b/pkg/front_end/parser_testcases/error_recovery/issue_48371_prime3.dart.intertwined.expect
index e01f55a..f17501b 100644
--- a/pkg/front_end/parser_testcases/error_recovery/issue_48371_prime3.dart.intertwined.expect
+++ b/pkg/front_end/parser_testcases/error_recovery/issue_48371_prime3.dart.intertwined.expect
@@ -103,7 +103,7 @@
                   notEofOrValue(}, print)
                   parseStatement({)
                     parseStatementX({)
-                      parseExpressionStatementOrDeclarationAfterModifiers({, {, null, null, null, false)
+                      parseExpressionStatementOrDeclarationAfterModifiers({, {, null, null, null, null)
                         looksLikeLocalFunction(print)
                         parseExpressionStatement({)
                           parseExpression({)
diff --git a/pkg/front_end/parser_testcases/error_recovery/issue_48380_4.dart.intertwined.expect b/pkg/front_end/parser_testcases/error_recovery/issue_48380_4.dart.intertwined.expect
index d8ae319..e626106 100644
--- a/pkg/front_end/parser_testcases/error_recovery/issue_48380_4.dart.intertwined.expect
+++ b/pkg/front_end/parser_testcases/error_recovery/issue_48380_4.dart.intertwined.expect
@@ -65,7 +65,7 @@
               notEofOrValue(}, print)
               parseStatement({)
                 parseStatementX({)
-                  parseExpressionStatementOrDeclarationAfterModifiers({, {, null, null, null, false)
+                  parseExpressionStatementOrDeclarationAfterModifiers({, {, null, null, null, null)
                     looksLikeLocalFunction(print)
                     parseExpressionStatement({)
                       parseExpression({)
diff --git a/pkg/front_end/parser_testcases/error_recovery/issue_49116.dart.intertwined.expect b/pkg/front_end/parser_testcases/error_recovery/issue_49116.dart.intertwined.expect
index 3146004..4fcdde8 100644
--- a/pkg/front_end/parser_testcases/error_recovery/issue_49116.dart.intertwined.expect
+++ b/pkg/front_end/parser_testcases/error_recovery/issue_49116.dart.intertwined.expect
@@ -227,7 +227,7 @@
           notEofOrValue(}, print)
           parseStatement(})
             parseStatementX(})
-              parseExpressionStatementOrDeclarationAfterModifiers(}, }, null, null, null, false)
+              parseExpressionStatementOrDeclarationAfterModifiers(}, }, null, null, null, null)
                 looksLikeLocalFunction(print)
                 parseExpressionStatement(})
                   parseExpression(})
@@ -280,7 +280,7 @@
           notEofOrValue(}, xor)
           parseStatement(;)
             parseStatementX(;)
-              parseExpressionStatementOrDeclarationAfterModifiers(;, ;, null, null, null, false)
+              parseExpressionStatementOrDeclarationAfterModifiers(;, ;, null, null, null, null)
                 looksLikeLocalFunction(xor)
                 parseExpressionStatement(;)
                   parseExpression(;)
@@ -455,7 +455,7 @@
           notEofOrValue(}, print)
           parseStatement(;)
             parseStatementX(;)
-              parseExpressionStatementOrDeclarationAfterModifiers(;, ;, null, null, null, false)
+              parseExpressionStatementOrDeclarationAfterModifiers(;, ;, null, null, null, null)
                 looksLikeLocalFunction(print)
                 parseExpressionStatement(;)
                   parseExpression(;)
@@ -603,7 +603,7 @@
           notEofOrValue(}, print)
           parseStatement(;)
             parseStatementX(;)
-              parseExpressionStatementOrDeclarationAfterModifiers(;, ;, null, null, null, false)
+              parseExpressionStatementOrDeclarationAfterModifiers(;, ;, null, null, null, null)
                 looksLikeLocalFunction(print)
                 parseExpressionStatement(;)
                   parseExpression(;)
@@ -751,7 +751,7 @@
           notEofOrValue(}, print)
           parseStatement(;)
             parseStatementX(;)
-              parseExpressionStatementOrDeclarationAfterModifiers(;, ;, null, null, null, false)
+              parseExpressionStatementOrDeclarationAfterModifiers(;, ;, null, null, null, null)
                 looksLikeLocalFunction(print)
                 parseExpressionStatement(;)
                   parseExpression(;)
@@ -833,8 +833,8 @@
           notEofOrValue(}, !)
           parseStatement(;)
             parseStatementX(;)
-              parseExpressionStatementOrDeclaration(;, false)
-                parseExpressionStatementOrDeclarationAfterModifiers(;, ;, null, null, null, false)
+              parseExpressionStatementOrDeclaration(;, null)
+                parseExpressionStatementOrDeclarationAfterModifiers(;, ;, null, null, null, null)
                   looksLikeLocalFunction(!)
                   parseExpressionStatement(;)
                     parseExpression(;)
@@ -905,7 +905,7 @@
           notEofOrValue(}, print)
           parseStatement(;)
             parseStatementX(;)
-              parseExpressionStatementOrDeclarationAfterModifiers(;, ;, null, null, null, false)
+              parseExpressionStatementOrDeclarationAfterModifiers(;, ;, null, null, null, null)
                 looksLikeLocalFunction(print)
                 parseExpressionStatement(;)
                   parseExpression(;)
@@ -993,7 +993,7 @@
           notEofOrValue(}, var)
           parseStatement(;)
             parseStatementX(;)
-              parseExpressionStatementOrDeclarationAfterModifiers(var, ;, null, var, null, false)
+              parseExpressionStatementOrDeclarationAfterModifiers(var, ;, null, var, null, null)
                 looksLikeLocalFunction(f)
                 listener: beginMetadataStar(var)
                 listener: endMetadataStar(0)
@@ -1033,8 +1033,8 @@
               inPlainSync()
               looksLikeAwaitExpression(;, AwaitOrYieldContext.Statement)
                 looksLikeExpressionAfterAwaitOrYield(await, AwaitOrYieldContext.Statement)
-              parseExpressionStatementOrDeclaration(;, false)
-                parseExpressionStatementOrDeclarationAfterModifiers(;, ;, null, null, null, false)
+              parseExpressionStatementOrDeclaration(;, null)
+                parseExpressionStatementOrDeclarationAfterModifiers(;, ;, null, null, null, null)
                   looksLikeLocalFunction(f)
                   listener: beginMetadataStar(await)
                   listener: endMetadataStar(0)
@@ -1145,7 +1145,7 @@
           notEofOrValue(}, print)
           parseStatement(})
             parseStatementX(})
-              parseExpressionStatementOrDeclarationAfterModifiers(}, }, null, null, null, false)
+              parseExpressionStatementOrDeclarationAfterModifiers(}, }, null, null, null, null)
                 looksLikeLocalFunction(print)
                 parseExpressionStatement(})
                   parseExpression(})
@@ -1194,7 +1194,7 @@
           notEofOrValue(}, xor)
           parseStatement(;)
             parseStatementX(;)
-              parseExpressionStatementOrDeclarationAfterModifiers(;, ;, null, null, null, false)
+              parseExpressionStatementOrDeclarationAfterModifiers(;, ;, null, null, null, null)
                 looksLikeLocalFunction(xor)
                 parseExpressionStatement(;)
                   parseExpression(;)
@@ -1349,7 +1349,7 @@
           notEofOrValue(}, print)
           parseStatement(;)
             parseStatementX(;)
-              parseExpressionStatementOrDeclarationAfterModifiers(;, ;, null, null, null, false)
+              parseExpressionStatementOrDeclarationAfterModifiers(;, ;, null, null, null, null)
                 looksLikeLocalFunction(print)
                 parseExpressionStatement(;)
                   parseExpression(;)
@@ -1481,7 +1481,7 @@
           notEofOrValue(}, print)
           parseStatement(;)
             parseStatementX(;)
-              parseExpressionStatementOrDeclarationAfterModifiers(;, ;, null, null, null, false)
+              parseExpressionStatementOrDeclarationAfterModifiers(;, ;, null, null, null, null)
                 looksLikeLocalFunction(print)
                 parseExpressionStatement(;)
                   parseExpression(;)
@@ -1613,7 +1613,7 @@
           notEofOrValue(}, print)
           parseStatement(;)
             parseStatementX(;)
-              parseExpressionStatementOrDeclarationAfterModifiers(;, ;, null, null, null, false)
+              parseExpressionStatementOrDeclarationAfterModifiers(;, ;, null, null, null, null)
                 looksLikeLocalFunction(print)
                 parseExpressionStatement(;)
                   parseExpression(;)
@@ -1687,8 +1687,8 @@
           notEofOrValue(}, !)
           parseStatement(;)
             parseStatementX(;)
-              parseExpressionStatementOrDeclaration(;, false)
-                parseExpressionStatementOrDeclarationAfterModifiers(;, ;, null, null, null, false)
+              parseExpressionStatementOrDeclaration(;, null)
+                parseExpressionStatementOrDeclarationAfterModifiers(;, ;, null, null, null, null)
                   looksLikeLocalFunction(!)
                   parseExpressionStatement(;)
                     parseExpression(;)
@@ -1751,7 +1751,7 @@
           notEofOrValue(}, print)
           parseStatement(;)
             parseStatementX(;)
-              parseExpressionStatementOrDeclarationAfterModifiers(;, ;, null, null, null, false)
+              parseExpressionStatementOrDeclarationAfterModifiers(;, ;, null, null, null, null)
                 looksLikeLocalFunction(print)
                 parseExpressionStatement(;)
                   parseExpression(;)
@@ -1834,8 +1834,8 @@
               inPlainSync()
               looksLikeAwaitExpression(;, AwaitOrYieldContext.Statement)
                 looksLikeExpressionAfterAwaitOrYield(await, AwaitOrYieldContext.Statement)
-              parseExpressionStatementOrDeclaration(;, false)
-                parseExpressionStatementOrDeclarationAfterModifiers(;, ;, null, null, null, false)
+              parseExpressionStatementOrDeclaration(;, null)
+                parseExpressionStatementOrDeclarationAfterModifiers(;, ;, null, null, null, null)
                   looksLikeLocalFunction(x)
                   listener: beginMetadataStar(await)
                   listener: endMetadataStar(0)
@@ -1859,8 +1859,8 @@
               inPlainSync()
               looksLikeAwaitExpression(;, AwaitOrYieldContext.Statement)
                 looksLikeExpressionAfterAwaitOrYield(await, AwaitOrYieldContext.Statement)
-              parseExpressionStatementOrDeclaration(;, false)
-                parseExpressionStatementOrDeclarationAfterModifiers(;, ;, null, null, null, false)
+              parseExpressionStatementOrDeclaration(;, null)
+                parseExpressionStatementOrDeclarationAfterModifiers(;, ;, null, null, null, null)
                   looksLikeLocalFunction(y)
                   listener: beginMetadataStar(await)
                   listener: endMetadataStar(0)
@@ -1891,8 +1891,8 @@
               inPlainSync()
               looksLikeAwaitExpression(;, AwaitOrYieldContext.Statement)
                 looksLikeExpressionAfterAwaitOrYield(await, AwaitOrYieldContext.Statement)
-              parseExpressionStatementOrDeclaration(;, false)
-                parseExpressionStatementOrDeclarationAfterModifiers(;, ;, null, null, null, false)
+              parseExpressionStatementOrDeclaration(;, null)
+                parseExpressionStatementOrDeclarationAfterModifiers(;, ;, null, null, null, null)
                   looksLikeLocalFunction(x2)
                   listener: beginMetadataStar(await)
                   listener: endMetadataStar(0)
@@ -1935,8 +1935,8 @@
               inPlainSync()
               looksLikeAwaitExpression(;, AwaitOrYieldContext.Statement)
                 looksLikeExpressionAfterAwaitOrYield(await, AwaitOrYieldContext.Statement)
-              parseExpressionStatementOrDeclaration(;, false)
-                parseExpressionStatementOrDeclarationAfterModifiers(;, ;, null, null, null, false)
+              parseExpressionStatementOrDeclaration(;, null)
+                parseExpressionStatementOrDeclarationAfterModifiers(;, ;, null, null, null, null)
                   looksLikeLocalFunction(y2)
                   listener: beginMetadataStar(await)
                   listener: endMetadataStar(0)
@@ -2005,8 +2005,8 @@
               inPlainSync()
               looksLikeAwaitExpression(;, AwaitOrYieldContext.Statement)
                 looksLikeExpressionAfterAwaitOrYield(await, AwaitOrYieldContext.Statement)
-              parseExpressionStatementOrDeclaration(;, false)
-                parseExpressionStatementOrDeclarationAfterModifiers(;, ;, null, null, null, false)
+              parseExpressionStatementOrDeclaration(;, null)
+                parseExpressionStatementOrDeclarationAfterModifiers(;, ;, null, null, null, null)
                   looksLikeLocalFunction(foo)
                   listener: beginMetadataStar(await)
                   listener: endMetadataStar(0)
@@ -2082,8 +2082,8 @@
               inPlainSync()
               looksLikeAwaitExpression(}, AwaitOrYieldContext.Statement)
                 looksLikeExpressionAfterAwaitOrYield(await, AwaitOrYieldContext.Statement)
-              parseExpressionStatementOrDeclaration(}, false)
-                parseExpressionStatementOrDeclarationAfterModifiers(}, }, null, null, null, false)
+              parseExpressionStatementOrDeclaration(}, null)
+                parseExpressionStatementOrDeclarationAfterModifiers(}, }, null, null, null, null)
                   looksLikeLocalFunction(bar)
                   listener: beginMetadataStar(await)
                   listener: 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 1f67238..04e3dcc9 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
@@ -875,8 +875,8 @@
                   notEofOrValue(}, ()
                   parseStatement(;)
                     parseStatementX(;)
-                      parseExpressionStatementOrDeclaration(;, false)
-                        parseExpressionStatementOrDeclarationAfterModifiers(;, ;, null, null, null, false)
+                      parseExpressionStatementOrDeclaration(;, null)
+                        parseExpressionStatementOrDeclarationAfterModifiers(;, ;, null, null, null, null)
                           looksLikeLocalFunction(()
                           parseExpressionStatement(;)
                             parseExpression(;)
@@ -1636,8 +1636,8 @@
                   notEofOrValue(}, ()
                   parseStatement(;)
                     parseStatementX(;)
-                      parseExpressionStatementOrDeclaration(;, false)
-                        parseExpressionStatementOrDeclarationAfterModifiers(;, ;, null, null, null, false)
+                      parseExpressionStatementOrDeclaration(;, null)
+                        parseExpressionStatementOrDeclarationAfterModifiers(;, ;, null, null, null, null)
                           looksLikeLocalFunction(()
                           parseExpressionStatement(;)
                             parseExpression(;)
@@ -2242,8 +2242,8 @@
                         listener: beginDoWhileStatementBody(()
                         parseStatement(do)
                           parseStatementX(do)
-                            parseExpressionStatementOrDeclaration(do, false)
-                              parseExpressionStatementOrDeclarationAfterModifiers(do, do, null, null, null, false)
+                            parseExpressionStatementOrDeclaration(do, null)
+                              parseExpressionStatementOrDeclarationAfterModifiers(do, do, null, null, null, null)
                                 looksLikeLocalFunction(()
                                 parseExpressionStatement(do)
                                   parseExpression(do)
@@ -2583,8 +2583,8 @@
                   notEofOrValue(}, else)
                   parseStatement(;)
                     parseStatementX(;)
-                      parseExpressionStatementOrDeclaration(;, false)
-                        parseExpressionStatementOrDeclarationAfterModifiers(;, ;, null, null, null, false)
+                      parseExpressionStatementOrDeclaration(;, null)
+                        parseExpressionStatementOrDeclarationAfterModifiers(;, ;, null, null, null, null)
                           looksLikeLocalFunction(else)
                           parseExpressionStatement(;)
                             parseExpression(;)
@@ -2613,8 +2613,8 @@
                   notEofOrValue(}, ()
                   parseStatement(else)
                     parseStatementX(else)
-                      parseExpressionStatementOrDeclaration(else, false)
-                        parseExpressionStatementOrDeclarationAfterModifiers(else, else, null, null, null, false)
+                      parseExpressionStatementOrDeclaration(else, null)
+                        parseExpressionStatementOrDeclarationAfterModifiers(else, else, null, null, null, null)
                           looksLikeLocalFunction(()
                           parseExpressionStatement(else)
                             parseExpression(else)
@@ -3791,7 +3791,7 @@
                   notEofOrValue(}, final)
                   parseStatement(;)
                     parseStatementX(;)
-                      parseExpressionStatementOrDeclarationAfterModifiers(final, ;, null, final, null, false)
+                      parseExpressionStatementOrDeclarationAfterModifiers(final, ;, null, final, null, null)
                         looksLikeLocalFunction(()
                         listener: beginMetadataStar(final)
                         listener: endMetadataStar(0)
@@ -3816,7 +3816,7 @@
                   notEofOrValue(}, x)
                   parseStatement(;)
                     parseStatementX(;)
-                      parseExpressionStatementOrDeclarationAfterModifiers(;, ;, null, null, null, false)
+                      parseExpressionStatementOrDeclarationAfterModifiers(;, ;, null, null, null, null)
                         looksLikeLocalFunction(x)
                         parseExpressionStatement(;)
                           parseExpression(;)
@@ -3847,8 +3847,8 @@
                   notEofOrValue(}, ))
                   parseStatement(;)
                     parseStatementX(;)
-                      parseExpressionStatementOrDeclaration(;, false)
-                        parseExpressionStatementOrDeclarationAfterModifiers(;, ;, null, null, null, false)
+                      parseExpressionStatementOrDeclaration(;, null)
+                        parseExpressionStatementOrDeclarationAfterModifiers(;, ;, null, null, null, null)
                           looksLikeLocalFunction())
                           parseExpressionStatement(;)
                             parseExpression(;)
@@ -3876,8 +3876,8 @@
                   notEofOrValue(}, +)
                   parseStatement())
                     parseStatementX())
-                      parseExpressionStatementOrDeclaration(), false)
-                        parseExpressionStatementOrDeclarationAfterModifiers(), ), null, null, null, false)
+                      parseExpressionStatementOrDeclaration(), null)
+                        parseExpressionStatementOrDeclarationAfterModifiers(), ), null, null, null, null)
                           looksLikeLocalFunction(+)
                           parseExpressionStatement())
                             parseExpression())
@@ -4179,9 +4179,9 @@
                     parseStatementX(;)
                       parseForStatement(;, null)
                         listener: beginForStatement(for)
-                        parseForLoopPartsStart(null, for)
-                          parseExpressionStatementOrDeclaration((, true)
-                            parseExpressionStatementOrDeclarationAfterModifiers((, (, null, null, null, true)
+                        parseForLoopPartsStart(null, for, ForPartsContext(null))
+                          parseExpressionStatementOrDeclaration((, ForPartsContext(null))
+                            parseExpressionStatementOrDeclarationAfterModifiers((, (, null, null, null, ForPartsContext(null))
                         parseForLoopPartsMid((, null, for)
                           parseExpression(()
                             parsePrecedenceExpression((, 1, true)
@@ -4235,8 +4235,8 @@
                           listener: beginForStatementBody(+)
                           parseStatement())
                             parseStatementX())
-                              parseExpressionStatementOrDeclaration(), false)
-                                parseExpressionStatementOrDeclarationAfterModifiers(), ), null, null, null, false)
+                              parseExpressionStatementOrDeclaration(), null)
+                                parseExpressionStatementOrDeclarationAfterModifiers(), ), null, null, null, null)
                                   looksLikeLocalFunction(+)
                                   parseExpressionStatement())
                                     parseExpression())
@@ -4853,8 +4853,8 @@
                         listener: beginThenStatement(+)
                         parseStatement())
                           parseStatementX())
-                            parseExpressionStatementOrDeclaration(), false)
-                              parseExpressionStatementOrDeclarationAfterModifiers(), ), null, null, null, false)
+                            parseExpressionStatementOrDeclaration(), null)
+                              parseExpressionStatementOrDeclarationAfterModifiers(), ), null, null, null, null)
                                 looksLikeLocalFunction(+)
                                 parseExpressionStatement())
                                   parseExpression())
@@ -5756,8 +5756,8 @@
                   notEofOrValue(}, +)
                   parseStatement(;)
                     parseStatementX(;)
-                      parseExpressionStatementOrDeclaration(;, false)
-                        parseExpressionStatementOrDeclarationAfterModifiers(;, ;, null, null, null, false)
+                      parseExpressionStatementOrDeclaration(;, null)
+                        parseExpressionStatementOrDeclarationAfterModifiers(;, ;, null, null, null, null)
                           looksLikeLocalFunction(+)
                           parseExpressionStatement(;)
                             parseExpression(;)
@@ -8861,8 +8861,8 @@
                   notEofOrValue(}, +)
                   parseStatement(})
                     parseStatementX(})
-                      parseExpressionStatementOrDeclaration(}, false)
-                        parseExpressionStatementOrDeclarationAfterModifiers(}, }, null, null, null, false)
+                      parseExpressionStatementOrDeclaration(}, null)
+                        parseExpressionStatementOrDeclarationAfterModifiers(}, }, null, null, null, null)
                           looksLikeLocalFunction(+)
                           parseExpressionStatement(})
                             parseExpression(})
@@ -9624,8 +9624,8 @@
                   notEofOrValue(}, ()
                   parseStatement(})
                     parseStatementX(})
-                      parseExpressionStatementOrDeclaration(}, false)
-                        parseExpressionStatementOrDeclarationAfterModifiers(}, }, null, null, null, false)
+                      parseExpressionStatementOrDeclaration(}, null)
+                        parseExpressionStatementOrDeclarationAfterModifiers(}, }, null, null, null, null)
                           looksLikeLocalFunction(()
                           parseExpressionStatement(})
                             parseExpression(})
@@ -9934,7 +9934,7 @@
                   notEofOrValue(}, var)
                   parseStatement(;)
                     parseStatementX(;)
-                      parseExpressionStatementOrDeclarationAfterModifiers(var, ;, null, var, null, false)
+                      parseExpressionStatementOrDeclarationAfterModifiers(var, ;, null, var, null, null)
                         looksLikeLocalFunction(()
                         listener: beginMetadataStar(var)
                         listener: endMetadataStar(0)
@@ -9959,7 +9959,7 @@
                   notEofOrValue(}, x)
                   parseStatement(;)
                     parseStatementX(;)
-                      parseExpressionStatementOrDeclarationAfterModifiers(;, ;, null, null, null, false)
+                      parseExpressionStatementOrDeclarationAfterModifiers(;, ;, null, null, null, null)
                         looksLikeLocalFunction(x)
                         parseExpressionStatement(;)
                           parseExpression(;)
@@ -9990,8 +9990,8 @@
                   notEofOrValue(}, ))
                   parseStatement(;)
                     parseStatementX(;)
-                      parseExpressionStatementOrDeclaration(;, false)
-                        parseExpressionStatementOrDeclarationAfterModifiers(;, ;, null, null, null, false)
+                      parseExpressionStatementOrDeclaration(;, null)
+                        parseExpressionStatementOrDeclarationAfterModifiers(;, ;, null, null, null, null)
                           looksLikeLocalFunction())
                           parseExpressionStatement(;)
                             parseExpression(;)
@@ -10019,8 +10019,8 @@
                   notEofOrValue(}, +)
                   parseStatement())
                     parseStatementX())
-                      parseExpressionStatementOrDeclaration(), false)
-                        parseExpressionStatementOrDeclarationAfterModifiers(), ), null, null, null, false)
+                      parseExpressionStatementOrDeclaration(), null)
+                        parseExpressionStatementOrDeclarationAfterModifiers(), ), null, null, null, null)
                           looksLikeLocalFunction(+)
                           parseExpressionStatement())
                             parseExpression())
@@ -10173,8 +10173,8 @@
                   notEofOrValue(}, void)
                   parseStatement(;)
                     parseStatementX(;)
-                      parseExpressionStatementOrDeclaration(;, false)
-                        parseExpressionStatementOrDeclarationAfterModifiers(;, ;, null, null, null, false)
+                      parseExpressionStatementOrDeclaration(;, null)
+                        parseExpressionStatementOrDeclarationAfterModifiers(;, ;, null, null, null, null)
                           looksLikeLocalFunction(()
                           listener: beginMetadataStar(void)
                           listener: endMetadataStar(0)
@@ -10199,7 +10199,7 @@
                   notEofOrValue(}, x)
                   parseStatement(;)
                     parseStatementX(;)
-                      parseExpressionStatementOrDeclarationAfterModifiers(;, ;, null, null, null, false)
+                      parseExpressionStatementOrDeclarationAfterModifiers(;, ;, null, null, null, null)
                         looksLikeLocalFunction(x)
                         parseExpressionStatement(;)
                           parseExpression(;)
@@ -10230,8 +10230,8 @@
                   notEofOrValue(}, ))
                   parseStatement(;)
                     parseStatementX(;)
-                      parseExpressionStatementOrDeclaration(;, false)
-                        parseExpressionStatementOrDeclarationAfterModifiers(;, ;, null, null, null, false)
+                      parseExpressionStatementOrDeclaration(;, null)
+                        parseExpressionStatementOrDeclarationAfterModifiers(;, ;, null, null, null, null)
                           looksLikeLocalFunction())
                           parseExpressionStatement(;)
                             parseExpression(;)
@@ -10259,8 +10259,8 @@
                   notEofOrValue(}, +)
                   parseStatement())
                     parseStatementX())
-                      parseExpressionStatementOrDeclaration(), false)
-                        parseExpressionStatementOrDeclarationAfterModifiers(), ), null, null, null, false)
+                      parseExpressionStatementOrDeclaration(), null)
+                        parseExpressionStatementOrDeclarationAfterModifiers(), ), null, null, null, null)
                           looksLikeLocalFunction(+)
                           parseExpressionStatement())
                             parseExpression())
@@ -10442,8 +10442,8 @@
                         listener: beginWhileStatementBody(+)
                         parseStatement())
                           parseStatementX())
-                            parseExpressionStatementOrDeclaration(), false)
-                              parseExpressionStatementOrDeclarationAfterModifiers(), ), null, null, null, false)
+                            parseExpressionStatementOrDeclaration(), null)
+                              parseExpressionStatementOrDeclarationAfterModifiers(), ), null, null, null, null)
                                 looksLikeLocalFunction(+)
                                 parseExpressionStatement())
                                   parseExpression())
diff --git a/pkg/front_end/parser_testcases/error_recovery/keyword_named_top_level_methods.dart.intertwined.expect b/pkg/front_end/parser_testcases/error_recovery/keyword_named_top_level_methods.dart.intertwined.expect
index 7360e53..7542220 100644
--- a/pkg/front_end/parser_testcases/error_recovery/keyword_named_top_level_methods.dart.intertwined.expect
+++ b/pkg/front_end/parser_testcases/error_recovery/keyword_named_top_level_methods.dart.intertwined.expect
@@ -828,8 +828,8 @@
           notEofOrValue(}, ()
           parseStatement(;)
             parseStatementX(;)
-              parseExpressionStatementOrDeclaration(;, false)
-                parseExpressionStatementOrDeclarationAfterModifiers(;, ;, null, null, null, false)
+              parseExpressionStatementOrDeclaration(;, null)
+                parseExpressionStatementOrDeclarationAfterModifiers(;, ;, null, null, null, null)
                   looksLikeLocalFunction(()
                   parseExpressionStatement(;)
                     parseExpression(;)
@@ -1569,8 +1569,8 @@
           notEofOrValue(}, ()
           parseStatement(;)
             parseStatementX(;)
-              parseExpressionStatementOrDeclaration(;, false)
-                parseExpressionStatementOrDeclarationAfterModifiers(;, ;, null, null, null, false)
+              parseExpressionStatementOrDeclaration(;, null)
+                parseExpressionStatementOrDeclarationAfterModifiers(;, ;, null, null, null, null)
                   looksLikeLocalFunction(()
                   parseExpressionStatement(;)
                     parseExpression(;)
@@ -2159,8 +2159,8 @@
                 listener: beginDoWhileStatementBody(()
                 parseStatement(do)
                   parseStatementX(do)
-                    parseExpressionStatementOrDeclaration(do, false)
-                      parseExpressionStatementOrDeclarationAfterModifiers(do, do, null, null, null, false)
+                    parseExpressionStatementOrDeclaration(do, null)
+                      parseExpressionStatementOrDeclarationAfterModifiers(do, do, null, null, null, null)
                         looksLikeLocalFunction(()
                         parseExpressionStatement(do)
                           parseExpression(do)
@@ -2492,8 +2492,8 @@
           notEofOrValue(}, else)
           parseStatement(;)
             parseStatementX(;)
-              parseExpressionStatementOrDeclaration(;, false)
-                parseExpressionStatementOrDeclarationAfterModifiers(;, ;, null, null, null, false)
+              parseExpressionStatementOrDeclaration(;, null)
+                parseExpressionStatementOrDeclarationAfterModifiers(;, ;, null, null, null, null)
                   looksLikeLocalFunction(else)
                   parseExpressionStatement(;)
                     parseExpression(;)
@@ -2522,8 +2522,8 @@
           notEofOrValue(}, ()
           parseStatement(else)
             parseStatementX(else)
-              parseExpressionStatementOrDeclaration(else, false)
-                parseExpressionStatementOrDeclarationAfterModifiers(else, else, null, null, null, false)
+              parseExpressionStatementOrDeclaration(else, null)
+                parseExpressionStatementOrDeclarationAfterModifiers(else, else, null, null, null, null)
                   looksLikeLocalFunction(()
                   parseExpressionStatement(else)
                     parseExpression(else)
@@ -3668,7 +3668,7 @@
           notEofOrValue(}, final)
           parseStatement(;)
             parseStatementX(;)
-              parseExpressionStatementOrDeclarationAfterModifiers(final, ;, null, final, null, false)
+              parseExpressionStatementOrDeclarationAfterModifiers(final, ;, null, final, null, null)
                 looksLikeLocalFunction(()
                 listener: beginMetadataStar(final)
                 listener: endMetadataStar(0)
@@ -3693,7 +3693,7 @@
           notEofOrValue(}, x)
           parseStatement(;)
             parseStatementX(;)
-              parseExpressionStatementOrDeclarationAfterModifiers(;, ;, null, null, null, false)
+              parseExpressionStatementOrDeclarationAfterModifiers(;, ;, null, null, null, null)
                 looksLikeLocalFunction(x)
                 parseExpressionStatement(;)
                   parseExpression(;)
@@ -3724,8 +3724,8 @@
           notEofOrValue(}, ))
           parseStatement(;)
             parseStatementX(;)
-              parseExpressionStatementOrDeclaration(;, false)
-                parseExpressionStatementOrDeclarationAfterModifiers(;, ;, null, null, null, false)
+              parseExpressionStatementOrDeclaration(;, null)
+                parseExpressionStatementOrDeclarationAfterModifiers(;, ;, null, null, null, null)
                   looksLikeLocalFunction())
                   parseExpressionStatement(;)
                     parseExpression(;)
@@ -3753,8 +3753,8 @@
           notEofOrValue(}, +)
           parseStatement())
             parseStatementX())
-              parseExpressionStatementOrDeclaration(), false)
-                parseExpressionStatementOrDeclarationAfterModifiers(), ), null, null, null, false)
+              parseExpressionStatementOrDeclaration(), null)
+                parseExpressionStatementOrDeclarationAfterModifiers(), ), null, null, null, null)
                   looksLikeLocalFunction(+)
                   parseExpressionStatement())
                     parseExpression())
@@ -4048,9 +4048,9 @@
             parseStatementX(;)
               parseForStatement(;, null)
                 listener: beginForStatement(for)
-                parseForLoopPartsStart(null, for)
-                  parseExpressionStatementOrDeclaration((, true)
-                    parseExpressionStatementOrDeclarationAfterModifiers((, (, null, null, null, true)
+                parseForLoopPartsStart(null, for, ForPartsContext(null))
+                  parseExpressionStatementOrDeclaration((, ForPartsContext(null))
+                    parseExpressionStatementOrDeclarationAfterModifiers((, (, null, null, null, ForPartsContext(null))
                 parseForLoopPartsMid((, null, for)
                   parseExpression(()
                     parsePrecedenceExpression((, 1, true)
@@ -4104,8 +4104,8 @@
                   listener: beginForStatementBody(+)
                   parseStatement())
                     parseStatementX())
-                      parseExpressionStatementOrDeclaration(), false)
-                        parseExpressionStatementOrDeclarationAfterModifiers(), ), null, null, null, false)
+                      parseExpressionStatementOrDeclaration(), null)
+                        parseExpressionStatementOrDeclarationAfterModifiers(), ), null, null, null, null)
                           looksLikeLocalFunction(+)
                           parseExpressionStatement())
                             parseExpression())
@@ -4705,8 +4705,8 @@
                 listener: beginThenStatement(+)
                 parseStatement())
                   parseStatementX())
-                    parseExpressionStatementOrDeclaration(), false)
-                      parseExpressionStatementOrDeclarationAfterModifiers(), ), null, null, null, false)
+                    parseExpressionStatementOrDeclaration(), null)
+                      parseExpressionStatementOrDeclarationAfterModifiers(), ), null, null, null, null)
                         looksLikeLocalFunction(+)
                         parseExpressionStatement())
                           parseExpression())
@@ -5584,8 +5584,8 @@
           notEofOrValue(}, +)
           parseStatement(;)
             parseStatementX(;)
-              parseExpressionStatementOrDeclaration(;, false)
-                parseExpressionStatementOrDeclarationAfterModifiers(;, ;, null, null, null, false)
+              parseExpressionStatementOrDeclaration(;, null)
+                parseExpressionStatementOrDeclarationAfterModifiers(;, ;, null, null, null, null)
                   looksLikeLocalFunction(+)
                   parseExpressionStatement(;)
                     parseExpression(;)
@@ -8577,8 +8577,8 @@
           notEofOrValue(}, +)
           parseStatement(})
             parseStatementX(})
-              parseExpressionStatementOrDeclaration(}, false)
-                parseExpressionStatementOrDeclarationAfterModifiers(}, }, null, null, null, false)
+              parseExpressionStatementOrDeclaration(}, null)
+                parseExpressionStatementOrDeclarationAfterModifiers(}, }, null, null, null, null)
                   looksLikeLocalFunction(+)
                   parseExpressionStatement(})
                     parseExpression(})
@@ -9295,8 +9295,8 @@
           notEofOrValue(}, ()
           parseStatement(})
             parseStatementX(})
-              parseExpressionStatementOrDeclaration(}, false)
-                parseExpressionStatementOrDeclarationAfterModifiers(}, }, null, null, null, false)
+              parseExpressionStatementOrDeclaration(}, null)
+                parseExpressionStatementOrDeclarationAfterModifiers(}, }, null, null, null, null)
                   looksLikeLocalFunction(()
                   parseExpressionStatement(})
                     parseExpression(})
@@ -9597,7 +9597,7 @@
           notEofOrValue(}, var)
           parseStatement(;)
             parseStatementX(;)
-              parseExpressionStatementOrDeclarationAfterModifiers(var, ;, null, var, null, false)
+              parseExpressionStatementOrDeclarationAfterModifiers(var, ;, null, var, null, null)
                 looksLikeLocalFunction(()
                 listener: beginMetadataStar(var)
                 listener: endMetadataStar(0)
@@ -9622,7 +9622,7 @@
           notEofOrValue(}, x)
           parseStatement(;)
             parseStatementX(;)
-              parseExpressionStatementOrDeclarationAfterModifiers(;, ;, null, null, null, false)
+              parseExpressionStatementOrDeclarationAfterModifiers(;, ;, null, null, null, null)
                 looksLikeLocalFunction(x)
                 parseExpressionStatement(;)
                   parseExpression(;)
@@ -9653,8 +9653,8 @@
           notEofOrValue(}, ))
           parseStatement(;)
             parseStatementX(;)
-              parseExpressionStatementOrDeclaration(;, false)
-                parseExpressionStatementOrDeclarationAfterModifiers(;, ;, null, null, null, false)
+              parseExpressionStatementOrDeclaration(;, null)
+                parseExpressionStatementOrDeclarationAfterModifiers(;, ;, null, null, null, null)
                   looksLikeLocalFunction())
                   parseExpressionStatement(;)
                     parseExpression(;)
@@ -9682,8 +9682,8 @@
           notEofOrValue(}, +)
           parseStatement())
             parseStatementX())
-              parseExpressionStatementOrDeclaration(), false)
-                parseExpressionStatementOrDeclarationAfterModifiers(), ), null, null, null, false)
+              parseExpressionStatementOrDeclaration(), null)
+                parseExpressionStatementOrDeclarationAfterModifiers(), ), null, null, null, null)
                   looksLikeLocalFunction(+)
                   parseExpressionStatement())
                     parseExpression())
@@ -9832,8 +9832,8 @@
           notEofOrValue(}, void)
           parseStatement(;)
             parseStatementX(;)
-              parseExpressionStatementOrDeclaration(;, false)
-                parseExpressionStatementOrDeclarationAfterModifiers(;, ;, null, null, null, false)
+              parseExpressionStatementOrDeclaration(;, null)
+                parseExpressionStatementOrDeclarationAfterModifiers(;, ;, null, null, null, null)
                   looksLikeLocalFunction(()
                   listener: beginMetadataStar(void)
                   listener: endMetadataStar(0)
@@ -9858,7 +9858,7 @@
           notEofOrValue(}, x)
           parseStatement(;)
             parseStatementX(;)
-              parseExpressionStatementOrDeclarationAfterModifiers(;, ;, null, null, null, false)
+              parseExpressionStatementOrDeclarationAfterModifiers(;, ;, null, null, null, null)
                 looksLikeLocalFunction(x)
                 parseExpressionStatement(;)
                   parseExpression(;)
@@ -9889,8 +9889,8 @@
           notEofOrValue(}, ))
           parseStatement(;)
             parseStatementX(;)
-              parseExpressionStatementOrDeclaration(;, false)
-                parseExpressionStatementOrDeclarationAfterModifiers(;, ;, null, null, null, false)
+              parseExpressionStatementOrDeclaration(;, null)
+                parseExpressionStatementOrDeclarationAfterModifiers(;, ;, null, null, null, null)
                   looksLikeLocalFunction())
                   parseExpressionStatement(;)
                     parseExpression(;)
@@ -9918,8 +9918,8 @@
           notEofOrValue(}, +)
           parseStatement())
             parseStatementX())
-              parseExpressionStatementOrDeclaration(), false)
-                parseExpressionStatementOrDeclarationAfterModifiers(), ), null, null, null, false)
+              parseExpressionStatementOrDeclaration(), null)
+                parseExpressionStatementOrDeclarationAfterModifiers(), ), null, null, null, null)
                   looksLikeLocalFunction(+)
                   parseExpressionStatement())
                     parseExpression())
@@ -10097,8 +10097,8 @@
                 listener: beginWhileStatementBody(+)
                 parseStatement())
                   parseStatementX())
-                    parseExpressionStatementOrDeclaration(), false)
-                      parseExpressionStatementOrDeclarationAfterModifiers(), ), null, null, null, false)
+                    parseExpressionStatementOrDeclaration(), null)
+                      parseExpressionStatementOrDeclarationAfterModifiers(), ), null, null, null, null)
                         looksLikeLocalFunction(+)
                         parseExpressionStatement())
                           parseExpression())
diff --git a/pkg/front_end/parser_testcases/error_recovery/symbols.dart.intertwined.expect b/pkg/front_end/parser_testcases/error_recovery/symbols.dart.intertwined.expect
index 50019dd..5223cb1 100644
--- a/pkg/front_end/parser_testcases/error_recovery/symbols.dart.intertwined.expect
+++ b/pkg/front_end/parser_testcases/error_recovery/symbols.dart.intertwined.expect
@@ -29,8 +29,8 @@
           notEofOrValue(}, #)
           parseStatement({)
             parseStatementX({)
-              parseExpressionStatementOrDeclaration({, false)
-                parseExpressionStatementOrDeclarationAfterModifiers({, {, null, null, null, false)
+              parseExpressionStatementOrDeclaration({, null)
+                parseExpressionStatementOrDeclarationAfterModifiers({, {, null, null, null, null)
                   looksLikeLocalFunction(#)
                   parseExpressionStatement({)
                     parseExpression({)
@@ -46,8 +46,8 @@
           notEofOrValue(}, #)
           parseStatement(;)
             parseStatementX(;)
-              parseExpressionStatementOrDeclaration(;, false)
-                parseExpressionStatementOrDeclarationAfterModifiers(;, ;, null, null, null, false)
+              parseExpressionStatementOrDeclaration(;, null)
+                parseExpressionStatementOrDeclarationAfterModifiers(;, ;, null, null, null, null)
                   looksLikeLocalFunction(#)
                   parseExpressionStatement(;)
                     parseExpression(;)
@@ -74,8 +74,8 @@
           notEofOrValue(}, #)
           parseStatement(;)
             parseStatementX(;)
-              parseExpressionStatementOrDeclaration(;, false)
-                parseExpressionStatementOrDeclarationAfterModifiers(;, ;, null, null, null, false)
+              parseExpressionStatementOrDeclaration(;, null)
+                parseExpressionStatementOrDeclarationAfterModifiers(;, ;, null, null, null, null)
                   looksLikeLocalFunction(#)
                   parseExpressionStatement(;)
                     parseExpression(;)
@@ -96,8 +96,8 @@
           notEofOrValue(}, #)
           parseStatement(;)
             parseStatementX(;)
-              parseExpressionStatementOrDeclaration(;, false)
-                parseExpressionStatementOrDeclarationAfterModifiers(;, ;, null, null, null, false)
+              parseExpressionStatementOrDeclaration(;, null)
+                parseExpressionStatementOrDeclarationAfterModifiers(;, ;, null, null, null, null)
                   looksLikeLocalFunction(#)
                   parseExpressionStatement(;)
                     parseExpression(;)
@@ -116,8 +116,8 @@
           notEofOrValue(}, #)
           parseStatement(;)
             parseStatementX(;)
-              parseExpressionStatementOrDeclaration(;, false)
-                parseExpressionStatementOrDeclarationAfterModifiers(;, ;, null, null, null, false)
+              parseExpressionStatementOrDeclaration(;, null)
+                parseExpressionStatementOrDeclarationAfterModifiers(;, ;, null, null, null, null)
                   looksLikeLocalFunction(#)
                   parseExpressionStatement(;)
                     parseExpression(;)
@@ -136,8 +136,8 @@
           notEofOrValue(}, #)
           parseStatement(;)
             parseStatementX(;)
-              parseExpressionStatementOrDeclaration(;, false)
-                parseExpressionStatementOrDeclarationAfterModifiers(;, ;, null, null, null, false)
+              parseExpressionStatementOrDeclaration(;, null)
+                parseExpressionStatementOrDeclarationAfterModifiers(;, ;, null, null, null, null)
                   looksLikeLocalFunction(#)
                   parseExpressionStatement(;)
                     parseExpression(;)
@@ -156,8 +156,8 @@
           notEofOrValue(}, #)
           parseStatement(;)
             parseStatementX(;)
-              parseExpressionStatementOrDeclaration(;, false)
-                parseExpressionStatementOrDeclarationAfterModifiers(;, ;, null, null, null, false)
+              parseExpressionStatementOrDeclaration(;, null)
+                parseExpressionStatementOrDeclarationAfterModifiers(;, ;, null, null, null, null)
                   looksLikeLocalFunction(#)
                   parseExpressionStatement(;)
                     parseExpression(;)
@@ -176,8 +176,8 @@
           notEofOrValue(}, #)
           parseStatement(;)
             parseStatementX(;)
-              parseExpressionStatementOrDeclaration(;, false)
-                parseExpressionStatementOrDeclarationAfterModifiers(;, ;, null, null, null, false)
+              parseExpressionStatementOrDeclaration(;, null)
+                parseExpressionStatementOrDeclarationAfterModifiers(;, ;, null, null, null, null)
                   looksLikeLocalFunction(#)
                   parseExpressionStatement(;)
                     parseExpression(;)
@@ -196,8 +196,8 @@
           notEofOrValue(}, #)
           parseStatement(;)
             parseStatementX(;)
-              parseExpressionStatementOrDeclaration(;, false)
-                parseExpressionStatementOrDeclarationAfterModifiers(;, ;, null, null, null, false)
+              parseExpressionStatementOrDeclaration(;, null)
+                parseExpressionStatementOrDeclarationAfterModifiers(;, ;, null, null, null, null)
                   looksLikeLocalFunction(#)
                   parseExpressionStatement(;)
                     parseExpression(;)
@@ -216,8 +216,8 @@
           notEofOrValue(}, #)
           parseStatement(;)
             parseStatementX(;)
-              parseExpressionStatementOrDeclaration(;, false)
-                parseExpressionStatementOrDeclarationAfterModifiers(;, ;, null, null, null, false)
+              parseExpressionStatementOrDeclaration(;, null)
+                parseExpressionStatementOrDeclarationAfterModifiers(;, ;, null, null, null, null)
                   looksLikeLocalFunction(#)
                   parseExpressionStatement(;)
                     parseExpression(;)
@@ -236,8 +236,8 @@
           notEofOrValue(}, #)
           parseStatement(;)
             parseStatementX(;)
-              parseExpressionStatementOrDeclaration(;, false)
-                parseExpressionStatementOrDeclarationAfterModifiers(;, ;, null, null, null, false)
+              parseExpressionStatementOrDeclaration(;, null)
+                parseExpressionStatementOrDeclarationAfterModifiers(;, ;, null, null, null, null)
                   looksLikeLocalFunction(#)
                   parseExpressionStatement(;)
                     parseExpression(;)
@@ -256,8 +256,8 @@
           notEofOrValue(}, #)
           parseStatement(;)
             parseStatementX(;)
-              parseExpressionStatementOrDeclaration(;, false)
-                parseExpressionStatementOrDeclarationAfterModifiers(;, ;, null, null, null, false)
+              parseExpressionStatementOrDeclaration(;, null)
+                parseExpressionStatementOrDeclarationAfterModifiers(;, ;, null, null, null, null)
                   looksLikeLocalFunction(#)
                   parseExpressionStatement(;)
                     parseExpression(;)
@@ -276,8 +276,8 @@
           notEofOrValue(}, #)
           parseStatement(;)
             parseStatementX(;)
-              parseExpressionStatementOrDeclaration(;, false)
-                parseExpressionStatementOrDeclarationAfterModifiers(;, ;, null, null, null, false)
+              parseExpressionStatementOrDeclaration(;, null)
+                parseExpressionStatementOrDeclarationAfterModifiers(;, ;, null, null, null, null)
                   looksLikeLocalFunction(#)
                   parseExpressionStatement(;)
                     parseExpression(;)
@@ -296,8 +296,8 @@
           notEofOrValue(}, #)
           parseStatement(;)
             parseStatementX(;)
-              parseExpressionStatementOrDeclaration(;, false)
-                parseExpressionStatementOrDeclarationAfterModifiers(;, ;, null, null, null, false)
+              parseExpressionStatementOrDeclaration(;, null)
+                parseExpressionStatementOrDeclarationAfterModifiers(;, ;, null, null, null, null)
                   looksLikeLocalFunction(#)
                   parseExpressionStatement(;)
                     parseExpression(;)
@@ -316,8 +316,8 @@
           notEofOrValue(}, #)
           parseStatement(;)
             parseStatementX(;)
-              parseExpressionStatementOrDeclaration(;, false)
-                parseExpressionStatementOrDeclarationAfterModifiers(;, ;, null, null, null, false)
+              parseExpressionStatementOrDeclaration(;, null)
+                parseExpressionStatementOrDeclarationAfterModifiers(;, ;, null, null, null, null)
                   looksLikeLocalFunction(#)
                   parseExpressionStatement(;)
                     parseExpression(;)
@@ -336,8 +336,8 @@
           notEofOrValue(}, #)
           parseStatement(;)
             parseStatementX(;)
-              parseExpressionStatementOrDeclaration(;, false)
-                parseExpressionStatementOrDeclarationAfterModifiers(;, ;, null, null, null, false)
+              parseExpressionStatementOrDeclaration(;, null)
+                parseExpressionStatementOrDeclarationAfterModifiers(;, ;, null, null, null, null)
                   looksLikeLocalFunction(#)
                   parseExpressionStatement(;)
                     parseExpression(;)
@@ -356,8 +356,8 @@
           notEofOrValue(}, #)
           parseStatement(;)
             parseStatementX(;)
-              parseExpressionStatementOrDeclaration(;, false)
-                parseExpressionStatementOrDeclarationAfterModifiers(;, ;, null, null, null, false)
+              parseExpressionStatementOrDeclaration(;, null)
+                parseExpressionStatementOrDeclarationAfterModifiers(;, ;, null, null, null, null)
                   looksLikeLocalFunction(#)
                   parseExpressionStatement(;)
                     parseExpression(;)
@@ -376,8 +376,8 @@
           notEofOrValue(}, #)
           parseStatement(;)
             parseStatementX(;)
-              parseExpressionStatementOrDeclaration(;, false)
-                parseExpressionStatementOrDeclarationAfterModifiers(;, ;, null, null, null, false)
+              parseExpressionStatementOrDeclaration(;, null)
+                parseExpressionStatementOrDeclarationAfterModifiers(;, ;, null, null, null, null)
                   looksLikeLocalFunction(#)
                   parseExpressionStatement(;)
                     parseExpression(;)
@@ -396,8 +396,8 @@
           notEofOrValue(}, #)
           parseStatement(;)
             parseStatementX(;)
-              parseExpressionStatementOrDeclaration(;, false)
-                parseExpressionStatementOrDeclarationAfterModifiers(;, ;, null, null, null, false)
+              parseExpressionStatementOrDeclaration(;, null)
+                parseExpressionStatementOrDeclarationAfterModifiers(;, ;, null, null, null, null)
                   looksLikeLocalFunction(#)
                   parseExpressionStatement(;)
                     parseExpression(;)
@@ -416,8 +416,8 @@
           notEofOrValue(}, #)
           parseStatement(;)
             parseStatementX(;)
-              parseExpressionStatementOrDeclaration(;, false)
-                parseExpressionStatementOrDeclarationAfterModifiers(;, ;, null, null, null, false)
+              parseExpressionStatementOrDeclaration(;, null)
+                parseExpressionStatementOrDeclarationAfterModifiers(;, ;, null, null, null, null)
                   looksLikeLocalFunction(#)
                   parseExpressionStatement(;)
                     parseExpression(;)
@@ -436,8 +436,8 @@
           notEofOrValue(}, #)
           parseStatement(;)
             parseStatementX(;)
-              parseExpressionStatementOrDeclaration(;, false)
-                parseExpressionStatementOrDeclarationAfterModifiers(;, ;, null, null, null, false)
+              parseExpressionStatementOrDeclaration(;, null)
+                parseExpressionStatementOrDeclarationAfterModifiers(;, ;, null, null, null, null)
                   looksLikeLocalFunction(#)
                   parseExpressionStatement(;)
                     parseExpression(;)
@@ -456,8 +456,8 @@
           notEofOrValue(}, #)
           parseStatement(;)
             parseStatementX(;)
-              parseExpressionStatementOrDeclaration(;, false)
-                parseExpressionStatementOrDeclarationAfterModifiers(;, ;, null, null, null, false)
+              parseExpressionStatementOrDeclaration(;, null)
+                parseExpressionStatementOrDeclarationAfterModifiers(;, ;, null, null, null, null)
                   looksLikeLocalFunction(#)
                   parseExpressionStatement(;)
                     parseExpression(;)
@@ -476,8 +476,8 @@
           notEofOrValue(}, #)
           parseStatement(;)
             parseStatementX(;)
-              parseExpressionStatementOrDeclaration(;, false)
-                parseExpressionStatementOrDeclarationAfterModifiers(;, ;, null, null, null, false)
+              parseExpressionStatementOrDeclaration(;, null)
+                parseExpressionStatementOrDeclarationAfterModifiers(;, ;, null, null, null, null)
                   looksLikeLocalFunction(#)
                   parseExpressionStatement(;)
                     parseExpression(;)
@@ -496,8 +496,8 @@
           notEofOrValue(}, #)
           parseStatement(;)
             parseStatementX(;)
-              parseExpressionStatementOrDeclaration(;, false)
-                parseExpressionStatementOrDeclarationAfterModifiers(;, ;, null, null, null, false)
+              parseExpressionStatementOrDeclaration(;, null)
+                parseExpressionStatementOrDeclarationAfterModifiers(;, ;, null, null, null, null)
                   looksLikeLocalFunction(#)
                   parseExpressionStatement(;)
                     parseExpression(;)
@@ -516,8 +516,8 @@
           notEofOrValue(}, #)
           parseStatement(;)
             parseStatementX(;)
-              parseExpressionStatementOrDeclaration(;, false)
-                parseExpressionStatementOrDeclarationAfterModifiers(;, ;, null, null, null, false)
+              parseExpressionStatementOrDeclaration(;, null)
+                parseExpressionStatementOrDeclarationAfterModifiers(;, ;, null, null, null, null)
                   looksLikeLocalFunction(#)
                   parseExpressionStatement(;)
                     parseExpression(;)
@@ -536,8 +536,8 @@
           notEofOrValue(}, #)
           parseStatement(;)
             parseStatementX(;)
-              parseExpressionStatementOrDeclaration(;, false)
-                parseExpressionStatementOrDeclarationAfterModifiers(;, ;, null, null, null, false)
+              parseExpressionStatementOrDeclaration(;, null)
+                parseExpressionStatementOrDeclarationAfterModifiers(;, ;, null, null, null, null)
                   looksLikeLocalFunction(#)
                   parseExpressionStatement(;)
                     parseExpression(;)
@@ -556,8 +556,8 @@
           notEofOrValue(}, #)
           parseStatement(;)
             parseStatementX(;)
-              parseExpressionStatementOrDeclaration(;, false)
-                parseExpressionStatementOrDeclarationAfterModifiers(;, ;, null, null, null, false)
+              parseExpressionStatementOrDeclaration(;, null)
+                parseExpressionStatementOrDeclarationAfterModifiers(;, ;, null, null, null, null)
                   looksLikeLocalFunction(#)
                   parseExpressionStatement(;)
                     parseExpression(;)
@@ -576,8 +576,8 @@
           notEofOrValue(}, #)
           parseStatement(;)
             parseStatementX(;)
-              parseExpressionStatementOrDeclaration(;, false)
-                parseExpressionStatementOrDeclarationAfterModifiers(;, ;, null, null, null, false)
+              parseExpressionStatementOrDeclaration(;, null)
+                parseExpressionStatementOrDeclarationAfterModifiers(;, ;, null, null, null, null)
                   looksLikeLocalFunction(#)
                   parseExpressionStatement(;)
                     parseExpression(;)
@@ -596,8 +596,8 @@
           notEofOrValue(}, #)
           parseStatement(;)
             parseStatementX(;)
-              parseExpressionStatementOrDeclaration(;, false)
-                parseExpressionStatementOrDeclarationAfterModifiers(;, ;, null, null, null, false)
+              parseExpressionStatementOrDeclaration(;, null)
+                parseExpressionStatementOrDeclarationAfterModifiers(;, ;, null, null, null, null)
                   looksLikeLocalFunction(#)
                   parseExpressionStatement(;)
                     parseExpression(;)
@@ -616,8 +616,8 @@
           notEofOrValue(}, #)
           parseStatement(;)
             parseStatementX(;)
-              parseExpressionStatementOrDeclaration(;, false)
-                parseExpressionStatementOrDeclarationAfterModifiers(;, ;, null, null, null, false)
+              parseExpressionStatementOrDeclaration(;, null)
+                parseExpressionStatementOrDeclarationAfterModifiers(;, ;, null, null, null, null)
                   looksLikeLocalFunction(#)
                   parseExpressionStatement(;)
                     parseExpression(;)
@@ -636,8 +636,8 @@
           notEofOrValue(}, #)
           parseStatement(;)
             parseStatementX(;)
-              parseExpressionStatementOrDeclaration(;, false)
-                parseExpressionStatementOrDeclarationAfterModifiers(;, ;, null, null, null, false)
+              parseExpressionStatementOrDeclaration(;, null)
+                parseExpressionStatementOrDeclarationAfterModifiers(;, ;, null, null, null, null)
                   looksLikeLocalFunction(#)
                   parseExpressionStatement(;)
                     parseExpression(;)
@@ -656,8 +656,8 @@
           notEofOrValue(}, #)
           parseStatement(;)
             parseStatementX(;)
-              parseExpressionStatementOrDeclaration(;, false)
-                parseExpressionStatementOrDeclarationAfterModifiers(;, ;, null, null, null, false)
+              parseExpressionStatementOrDeclaration(;, null)
+                parseExpressionStatementOrDeclarationAfterModifiers(;, ;, null, null, null, null)
                   looksLikeLocalFunction(#)
                   parseExpressionStatement(;)
                     parseExpression(;)
@@ -676,8 +676,8 @@
           notEofOrValue(}, #)
           parseStatement(;)
             parseStatementX(;)
-              parseExpressionStatementOrDeclaration(;, false)
-                parseExpressionStatementOrDeclarationAfterModifiers(;, ;, null, null, null, false)
+              parseExpressionStatementOrDeclaration(;, null)
+                parseExpressionStatementOrDeclarationAfterModifiers(;, ;, null, null, null, null)
                   looksLikeLocalFunction(#)
                   parseExpressionStatement(;)
                     parseExpression(;)
@@ -696,8 +696,8 @@
           notEofOrValue(}, #)
           parseStatement(;)
             parseStatementX(;)
-              parseExpressionStatementOrDeclaration(;, false)
-                parseExpressionStatementOrDeclarationAfterModifiers(;, ;, null, null, null, false)
+              parseExpressionStatementOrDeclaration(;, null)
+                parseExpressionStatementOrDeclarationAfterModifiers(;, ;, null, null, null, null)
                   looksLikeLocalFunction(#)
                   parseExpressionStatement(;)
                     parseExpression(;)
@@ -716,8 +716,8 @@
           notEofOrValue(}, #)
           parseStatement(;)
             parseStatementX(;)
-              parseExpressionStatementOrDeclaration(;, false)
-                parseExpressionStatementOrDeclarationAfterModifiers(;, ;, null, null, null, false)
+              parseExpressionStatementOrDeclaration(;, null)
+                parseExpressionStatementOrDeclarationAfterModifiers(;, ;, null, null, null, null)
                   looksLikeLocalFunction(#)
                   parseExpressionStatement(;)
                     parseExpression(;)
@@ -736,8 +736,8 @@
           notEofOrValue(}, #)
           parseStatement(;)
             parseStatementX(;)
-              parseExpressionStatementOrDeclaration(;, false)
-                parseExpressionStatementOrDeclarationAfterModifiers(;, ;, null, null, null, false)
+              parseExpressionStatementOrDeclaration(;, null)
+                parseExpressionStatementOrDeclarationAfterModifiers(;, ;, null, null, null, null)
                   looksLikeLocalFunction(#)
                   parseExpressionStatement(;)
                     parseExpression(;)
@@ -758,8 +758,8 @@
           notEofOrValue(}, #)
           parseStatement(;)
             parseStatementX(;)
-              parseExpressionStatementOrDeclaration(;, false)
-                parseExpressionStatementOrDeclarationAfterModifiers(;, ;, null, null, null, false)
+              parseExpressionStatementOrDeclaration(;, null)
+                parseExpressionStatementOrDeclarationAfterModifiers(;, ;, null, null, null, null)
                   looksLikeLocalFunction(#)
                   parseExpressionStatement(;)
                     parseExpression(;)
@@ -780,8 +780,8 @@
           notEofOrValue(}, #)
           parseStatement(;)
             parseStatementX(;)
-              parseExpressionStatementOrDeclaration(;, false)
-                parseExpressionStatementOrDeclarationAfterModifiers(;, ;, null, null, null, false)
+              parseExpressionStatementOrDeclaration(;, null)
+                parseExpressionStatementOrDeclarationAfterModifiers(;, ;, null, null, null, null)
                   looksLikeLocalFunction(#)
                   parseExpressionStatement(;)
                     parseExpression(;)
@@ -802,8 +802,8 @@
           notEofOrValue(}, #)
           parseStatement(;)
             parseStatementX(;)
-              parseExpressionStatementOrDeclaration(;, false)
-                parseExpressionStatementOrDeclarationAfterModifiers(;, ;, null, null, null, false)
+              parseExpressionStatementOrDeclaration(;, null)
+                parseExpressionStatementOrDeclarationAfterModifiers(;, ;, null, null, null, null)
                   looksLikeLocalFunction(#)
                   parseExpressionStatement(;)
                     parseExpression(;)
@@ -824,8 +824,8 @@
           notEofOrValue(}, #)
           parseStatement(;)
             parseStatementX(;)
-              parseExpressionStatementOrDeclaration(;, false)
-                parseExpressionStatementOrDeclarationAfterModifiers(;, ;, null, null, null, false)
+              parseExpressionStatementOrDeclaration(;, null)
+                parseExpressionStatementOrDeclarationAfterModifiers(;, ;, null, null, null, null)
                   looksLikeLocalFunction(#)
                   parseExpressionStatement(;)
                     parseExpression(;)
@@ -846,8 +846,8 @@
           notEofOrValue(}, #)
           parseStatement(;)
             parseStatementX(;)
-              parseExpressionStatementOrDeclaration(;, false)
-                parseExpressionStatementOrDeclarationAfterModifiers(;, ;, null, null, null, false)
+              parseExpressionStatementOrDeclaration(;, null)
+                parseExpressionStatementOrDeclarationAfterModifiers(;, ;, null, null, null, null)
                   looksLikeLocalFunction(#)
                   parseExpressionStatement(;)
                     parseExpression(;)
@@ -868,8 +868,8 @@
           notEofOrValue(}, #)
           parseStatement(;)
             parseStatementX(;)
-              parseExpressionStatementOrDeclaration(;, false)
-                parseExpressionStatementOrDeclarationAfterModifiers(;, ;, null, null, null, false)
+              parseExpressionStatementOrDeclaration(;, null)
+                parseExpressionStatementOrDeclarationAfterModifiers(;, ;, null, null, null, null)
                   looksLikeLocalFunction(#)
                   parseExpressionStatement(;)
                     parseExpression(;)
@@ -890,8 +890,8 @@
           notEofOrValue(}, #)
           parseStatement(;)
             parseStatementX(;)
-              parseExpressionStatementOrDeclaration(;, false)
-                parseExpressionStatementOrDeclarationAfterModifiers(;, ;, null, null, null, false)
+              parseExpressionStatementOrDeclaration(;, null)
+                parseExpressionStatementOrDeclarationAfterModifiers(;, ;, null, null, null, null)
                   looksLikeLocalFunction(#)
                   parseExpressionStatement(;)
                     parseExpression(;)
@@ -912,8 +912,8 @@
           notEofOrValue(}, #)
           parseStatement(;)
             parseStatementX(;)
-              parseExpressionStatementOrDeclaration(;, false)
-                parseExpressionStatementOrDeclarationAfterModifiers(;, ;, null, null, null, false)
+              parseExpressionStatementOrDeclaration(;, null)
+                parseExpressionStatementOrDeclarationAfterModifiers(;, ;, null, null, null, null)
                   looksLikeLocalFunction(#)
                   parseExpressionStatement(;)
                     parseExpression(;)
@@ -934,8 +934,8 @@
           notEofOrValue(}, #)
           parseStatement(;)
             parseStatementX(;)
-              parseExpressionStatementOrDeclaration(;, false)
-                parseExpressionStatementOrDeclarationAfterModifiers(;, ;, null, null, null, false)
+              parseExpressionStatementOrDeclaration(;, null)
+                parseExpressionStatementOrDeclarationAfterModifiers(;, ;, null, null, null, null)
                   looksLikeLocalFunction(#)
                   parseExpressionStatement(;)
                     parseExpression(;)
@@ -956,8 +956,8 @@
           notEofOrValue(}, #)
           parseStatement(;)
             parseStatementX(;)
-              parseExpressionStatementOrDeclaration(;, false)
-                parseExpressionStatementOrDeclarationAfterModifiers(;, ;, null, null, null, false)
+              parseExpressionStatementOrDeclaration(;, null)
+                parseExpressionStatementOrDeclarationAfterModifiers(;, ;, null, null, null, null)
                   looksLikeLocalFunction(#)
                   parseExpressionStatement(;)
                     parseExpression(;)
@@ -978,8 +978,8 @@
           notEofOrValue(}, #)
           parseStatement(;)
             parseStatementX(;)
-              parseExpressionStatementOrDeclaration(;, false)
-                parseExpressionStatementOrDeclarationAfterModifiers(;, ;, null, null, null, false)
+              parseExpressionStatementOrDeclaration(;, null)
+                parseExpressionStatementOrDeclarationAfterModifiers(;, ;, null, null, null, null)
                   looksLikeLocalFunction(#)
                   parseExpressionStatement(;)
                     parseExpression(;)
@@ -1000,8 +1000,8 @@
           notEofOrValue(}, #)
           parseStatement(;)
             parseStatementX(;)
-              parseExpressionStatementOrDeclaration(;, false)
-                parseExpressionStatementOrDeclarationAfterModifiers(;, ;, null, null, null, false)
+              parseExpressionStatementOrDeclaration(;, null)
+                parseExpressionStatementOrDeclarationAfterModifiers(;, ;, null, null, null, null)
                   looksLikeLocalFunction(#)
                   parseExpressionStatement(;)
                     parseExpression(;)
@@ -1022,8 +1022,8 @@
           notEofOrValue(}, #)
           parseStatement(;)
             parseStatementX(;)
-              parseExpressionStatementOrDeclaration(;, false)
-                parseExpressionStatementOrDeclarationAfterModifiers(;, ;, null, null, null, false)
+              parseExpressionStatementOrDeclaration(;, null)
+                parseExpressionStatementOrDeclarationAfterModifiers(;, ;, null, null, null, null)
                   looksLikeLocalFunction(#)
                   parseExpressionStatement(;)
                     parseExpression(;)
@@ -1044,8 +1044,8 @@
           notEofOrValue(}, #)
           parseStatement(;)
             parseStatementX(;)
-              parseExpressionStatementOrDeclaration(;, false)
-                parseExpressionStatementOrDeclarationAfterModifiers(;, ;, null, null, null, false)
+              parseExpressionStatementOrDeclaration(;, null)
+                parseExpressionStatementOrDeclarationAfterModifiers(;, ;, null, null, null, null)
                   looksLikeLocalFunction(#)
                   parseExpressionStatement(;)
                     parseExpression(;)
@@ -1066,8 +1066,8 @@
           notEofOrValue(}, #)
           parseStatement(;)
             parseStatementX(;)
-              parseExpressionStatementOrDeclaration(;, false)
-                parseExpressionStatementOrDeclarationAfterModifiers(;, ;, null, null, null, false)
+              parseExpressionStatementOrDeclaration(;, null)
+                parseExpressionStatementOrDeclarationAfterModifiers(;, ;, null, null, null, null)
                   looksLikeLocalFunction(#)
                   parseExpressionStatement(;)
                     parseExpression(;)
@@ -1088,8 +1088,8 @@
           notEofOrValue(}, #)
           parseStatement(;)
             parseStatementX(;)
-              parseExpressionStatementOrDeclaration(;, false)
-                parseExpressionStatementOrDeclarationAfterModifiers(;, ;, null, null, null, false)
+              parseExpressionStatementOrDeclaration(;, null)
+                parseExpressionStatementOrDeclarationAfterModifiers(;, ;, null, null, null, null)
                   looksLikeLocalFunction(#)
                   parseExpressionStatement(;)
                     parseExpression(;)
@@ -1110,8 +1110,8 @@
           notEofOrValue(}, #)
           parseStatement(;)
             parseStatementX(;)
-              parseExpressionStatementOrDeclaration(;, false)
-                parseExpressionStatementOrDeclarationAfterModifiers(;, ;, null, null, null, false)
+              parseExpressionStatementOrDeclaration(;, null)
+                parseExpressionStatementOrDeclarationAfterModifiers(;, ;, null, null, null, null)
                   looksLikeLocalFunction(#)
                   parseExpressionStatement(;)
                     parseExpression(;)
@@ -1132,8 +1132,8 @@
           notEofOrValue(}, #)
           parseStatement(;)
             parseStatementX(;)
-              parseExpressionStatementOrDeclaration(;, false)
-                parseExpressionStatementOrDeclarationAfterModifiers(;, ;, null, null, null, false)
+              parseExpressionStatementOrDeclaration(;, null)
+                parseExpressionStatementOrDeclarationAfterModifiers(;, ;, null, null, null, null)
                   looksLikeLocalFunction(#)
                   parseExpressionStatement(;)
                     parseExpression(;)
@@ -1154,8 +1154,8 @@
           notEofOrValue(}, #)
           parseStatement(;)
             parseStatementX(;)
-              parseExpressionStatementOrDeclaration(;, false)
-                parseExpressionStatementOrDeclarationAfterModifiers(;, ;, null, null, null, false)
+              parseExpressionStatementOrDeclaration(;, null)
+                parseExpressionStatementOrDeclarationAfterModifiers(;, ;, null, null, null, null)
                   looksLikeLocalFunction(#)
                   parseExpressionStatement(;)
                     parseExpression(;)
@@ -1176,8 +1176,8 @@
           notEofOrValue(}, #)
           parseStatement(;)
             parseStatementX(;)
-              parseExpressionStatementOrDeclaration(;, false)
-                parseExpressionStatementOrDeclarationAfterModifiers(;, ;, null, null, null, false)
+              parseExpressionStatementOrDeclaration(;, null)
+                parseExpressionStatementOrDeclarationAfterModifiers(;, ;, null, null, null, null)
                   looksLikeLocalFunction(#)
                   parseExpressionStatement(;)
                     parseExpression(;)
@@ -1198,8 +1198,8 @@
           notEofOrValue(}, #)
           parseStatement(;)
             parseStatementX(;)
-              parseExpressionStatementOrDeclaration(;, false)
-                parseExpressionStatementOrDeclarationAfterModifiers(;, ;, null, null, null, false)
+              parseExpressionStatementOrDeclaration(;, null)
+                parseExpressionStatementOrDeclarationAfterModifiers(;, ;, null, null, null, null)
                   looksLikeLocalFunction(#)
                   parseExpressionStatement(;)
                     parseExpression(;)
@@ -1220,8 +1220,8 @@
           notEofOrValue(}, #)
           parseStatement(;)
             parseStatementX(;)
-              parseExpressionStatementOrDeclaration(;, false)
-                parseExpressionStatementOrDeclarationAfterModifiers(;, ;, null, null, null, false)
+              parseExpressionStatementOrDeclaration(;, null)
+                parseExpressionStatementOrDeclarationAfterModifiers(;, ;, null, null, null, null)
                   looksLikeLocalFunction(#)
                   parseExpressionStatement(;)
                     parseExpression(;)
@@ -1242,8 +1242,8 @@
           notEofOrValue(}, #)
           parseStatement(;)
             parseStatementX(;)
-              parseExpressionStatementOrDeclaration(;, false)
-                parseExpressionStatementOrDeclarationAfterModifiers(;, ;, null, null, null, false)
+              parseExpressionStatementOrDeclaration(;, null)
+                parseExpressionStatementOrDeclarationAfterModifiers(;, ;, null, null, null, null)
                   looksLikeLocalFunction(#)
                   parseExpressionStatement(;)
                     parseExpression(;)
@@ -1264,8 +1264,8 @@
           notEofOrValue(}, #)
           parseStatement(;)
             parseStatementX(;)
-              parseExpressionStatementOrDeclaration(;, false)
-                parseExpressionStatementOrDeclarationAfterModifiers(;, ;, null, null, null, false)
+              parseExpressionStatementOrDeclaration(;, null)
+                parseExpressionStatementOrDeclarationAfterModifiers(;, ;, null, null, null, null)
                   looksLikeLocalFunction(#)
                   parseExpressionStatement(;)
                     parseExpression(;)
@@ -1286,8 +1286,8 @@
           notEofOrValue(}, #)
           parseStatement(;)
             parseStatementX(;)
-              parseExpressionStatementOrDeclaration(;, false)
-                parseExpressionStatementOrDeclarationAfterModifiers(;, ;, null, null, null, false)
+              parseExpressionStatementOrDeclaration(;, null)
+                parseExpressionStatementOrDeclarationAfterModifiers(;, ;, null, null, null, null)
                   looksLikeLocalFunction(#)
                   parseExpressionStatement(;)
                     parseExpression(;)
@@ -1308,8 +1308,8 @@
           notEofOrValue(}, #)
           parseStatement(;)
             parseStatementX(;)
-              parseExpressionStatementOrDeclaration(;, false)
-                parseExpressionStatementOrDeclarationAfterModifiers(;, ;, null, null, null, false)
+              parseExpressionStatementOrDeclaration(;, null)
+                parseExpressionStatementOrDeclarationAfterModifiers(;, ;, null, null, null, null)
                   looksLikeLocalFunction(#)
                   parseExpressionStatement(;)
                     parseExpression(;)
@@ -1330,8 +1330,8 @@
           notEofOrValue(}, #)
           parseStatement(;)
             parseStatementX(;)
-              parseExpressionStatementOrDeclaration(;, false)
-                parseExpressionStatementOrDeclarationAfterModifiers(;, ;, null, null, null, false)
+              parseExpressionStatementOrDeclaration(;, null)
+                parseExpressionStatementOrDeclarationAfterModifiers(;, ;, null, null, null, null)
                   looksLikeLocalFunction(#)
                   parseExpressionStatement(;)
                     parseExpression(;)
@@ -1352,8 +1352,8 @@
           notEofOrValue(}, #)
           parseStatement(;)
             parseStatementX(;)
-              parseExpressionStatementOrDeclaration(;, false)
-                parseExpressionStatementOrDeclarationAfterModifiers(;, ;, null, null, null, false)
+              parseExpressionStatementOrDeclaration(;, null)
+                parseExpressionStatementOrDeclarationAfterModifiers(;, ;, null, null, null, null)
                   looksLikeLocalFunction(#)
                   parseExpressionStatement(;)
                     parseExpression(;)
@@ -1374,8 +1374,8 @@
           notEofOrValue(}, #)
           parseStatement(;)
             parseStatementX(;)
-              parseExpressionStatementOrDeclaration(;, false)
-                parseExpressionStatementOrDeclarationAfterModifiers(;, ;, null, null, null, false)
+              parseExpressionStatementOrDeclaration(;, null)
+                parseExpressionStatementOrDeclarationAfterModifiers(;, ;, null, null, null, null)
                   looksLikeLocalFunction(#)
                   parseExpressionStatement(;)
                     parseExpression(;)
@@ -1396,8 +1396,8 @@
           notEofOrValue(}, #)
           parseStatement(;)
             parseStatementX(;)
-              parseExpressionStatementOrDeclaration(;, false)
-                parseExpressionStatementOrDeclarationAfterModifiers(;, ;, null, null, null, false)
+              parseExpressionStatementOrDeclaration(;, null)
+                parseExpressionStatementOrDeclarationAfterModifiers(;, ;, null, null, null, null)
                   looksLikeLocalFunction(#)
                   parseExpressionStatement(;)
                     parseExpression(;)
@@ -1418,8 +1418,8 @@
           notEofOrValue(}, #)
           parseStatement(;)
             parseStatementX(;)
-              parseExpressionStatementOrDeclaration(;, false)
-                parseExpressionStatementOrDeclarationAfterModifiers(;, ;, null, null, null, false)
+              parseExpressionStatementOrDeclaration(;, null)
+                parseExpressionStatementOrDeclarationAfterModifiers(;, ;, null, null, null, null)
                   looksLikeLocalFunction(#)
                   parseExpressionStatement(;)
                     parseExpression(;)
@@ -1440,8 +1440,8 @@
           notEofOrValue(}, #)
           parseStatement(;)
             parseStatementX(;)
-              parseExpressionStatementOrDeclaration(;, false)
-                parseExpressionStatementOrDeclarationAfterModifiers(;, ;, null, null, null, false)
+              parseExpressionStatementOrDeclaration(;, null)
+                parseExpressionStatementOrDeclarationAfterModifiers(;, ;, null, null, null, null)
                   looksLikeLocalFunction(#)
                   parseExpressionStatement(;)
                     parseExpression(;)
@@ -1462,8 +1462,8 @@
           notEofOrValue(}, #)
           parseStatement(;)
             parseStatementX(;)
-              parseExpressionStatementOrDeclaration(;, false)
-                parseExpressionStatementOrDeclarationAfterModifiers(;, ;, null, null, null, false)
+              parseExpressionStatementOrDeclaration(;, null)
+                parseExpressionStatementOrDeclarationAfterModifiers(;, ;, null, null, null, null)
                   looksLikeLocalFunction(#)
                   parseExpressionStatement(;)
                     parseExpression(;)
@@ -1484,8 +1484,8 @@
           notEofOrValue(}, #)
           parseStatement(;)
             parseStatementX(;)
-              parseExpressionStatementOrDeclaration(;, false)
-                parseExpressionStatementOrDeclarationAfterModifiers(;, ;, null, null, null, false)
+              parseExpressionStatementOrDeclaration(;, null)
+                parseExpressionStatementOrDeclarationAfterModifiers(;, ;, null, null, null, null)
                   looksLikeLocalFunction(#)
                   parseExpressionStatement(;)
                     parseExpression(;)
@@ -1506,8 +1506,8 @@
           notEofOrValue(}, #)
           parseStatement(;)
             parseStatementX(;)
-              parseExpressionStatementOrDeclaration(;, false)
-                parseExpressionStatementOrDeclarationAfterModifiers(;, ;, null, null, null, false)
+              parseExpressionStatementOrDeclaration(;, null)
+                parseExpressionStatementOrDeclarationAfterModifiers(;, ;, null, null, null, null)
                   looksLikeLocalFunction(#)
                   parseExpressionStatement(;)
                     parseExpression(;)
@@ -1528,8 +1528,8 @@
           notEofOrValue(}, #)
           parseStatement(;)
             parseStatementX(;)
-              parseExpressionStatementOrDeclaration(;, false)
-                parseExpressionStatementOrDeclarationAfterModifiers(;, ;, null, null, null, false)
+              parseExpressionStatementOrDeclaration(;, null)
+                parseExpressionStatementOrDeclarationAfterModifiers(;, ;, null, null, null, null)
                   looksLikeLocalFunction(#)
                   parseExpressionStatement(;)
                     parseExpression(;)
@@ -1550,8 +1550,8 @@
           notEofOrValue(}, #)
           parseStatement(;)
             parseStatementX(;)
-              parseExpressionStatementOrDeclaration(;, false)
-                parseExpressionStatementOrDeclarationAfterModifiers(;, ;, null, null, null, false)
+              parseExpressionStatementOrDeclaration(;, null)
+                parseExpressionStatementOrDeclarationAfterModifiers(;, ;, null, null, null, null)
                   looksLikeLocalFunction(#)
                   parseExpressionStatement(;)
                     parseExpression(;)
@@ -1572,8 +1572,8 @@
           notEofOrValue(}, #)
           parseStatement(;)
             parseStatementX(;)
-              parseExpressionStatementOrDeclaration(;, false)
-                parseExpressionStatementOrDeclarationAfterModifiers(;, ;, null, null, null, false)
+              parseExpressionStatementOrDeclaration(;, null)
+                parseExpressionStatementOrDeclarationAfterModifiers(;, ;, null, null, null, null)
                   looksLikeLocalFunction(#)
                   parseExpressionStatement(;)
                     parseExpression(;)
@@ -1594,8 +1594,8 @@
           notEofOrValue(}, #)
           parseStatement(;)
             parseStatementX(;)
-              parseExpressionStatementOrDeclaration(;, false)
-                parseExpressionStatementOrDeclarationAfterModifiers(;, ;, null, null, null, false)
+              parseExpressionStatementOrDeclaration(;, null)
+                parseExpressionStatementOrDeclarationAfterModifiers(;, ;, null, null, null, null)
                   looksLikeLocalFunction(#)
                   parseExpressionStatement(;)
                     parseExpression(;)
@@ -1616,8 +1616,8 @@
           notEofOrValue(}, #)
           parseStatement(;)
             parseStatementX(;)
-              parseExpressionStatementOrDeclaration(;, false)
-                parseExpressionStatementOrDeclarationAfterModifiers(;, ;, null, null, null, false)
+              parseExpressionStatementOrDeclaration(;, null)
+                parseExpressionStatementOrDeclarationAfterModifiers(;, ;, null, null, null, null)
                   looksLikeLocalFunction(#)
                   parseExpressionStatement(;)
                     parseExpression(;)
@@ -1638,8 +1638,8 @@
           notEofOrValue(}, #)
           parseStatement(;)
             parseStatementX(;)
-              parseExpressionStatementOrDeclaration(;, false)
-                parseExpressionStatementOrDeclarationAfterModifiers(;, ;, null, null, null, false)
+              parseExpressionStatementOrDeclaration(;, null)
+                parseExpressionStatementOrDeclarationAfterModifiers(;, ;, null, null, null, null)
                   looksLikeLocalFunction(#)
                   parseExpressionStatement(;)
                     parseExpression(;)
@@ -1660,8 +1660,8 @@
           notEofOrValue(}, #)
           parseStatement(;)
             parseStatementX(;)
-              parseExpressionStatementOrDeclaration(;, false)
-                parseExpressionStatementOrDeclarationAfterModifiers(;, ;, null, null, null, false)
+              parseExpressionStatementOrDeclaration(;, null)
+                parseExpressionStatementOrDeclarationAfterModifiers(;, ;, null, null, null, null)
                   looksLikeLocalFunction(#)
                   parseExpressionStatement(;)
                     parseExpression(;)
@@ -1682,8 +1682,8 @@
           notEofOrValue(}, #)
           parseStatement(;)
             parseStatementX(;)
-              parseExpressionStatementOrDeclaration(;, false)
-                parseExpressionStatementOrDeclarationAfterModifiers(;, ;, null, null, null, false)
+              parseExpressionStatementOrDeclaration(;, null)
+                parseExpressionStatementOrDeclarationAfterModifiers(;, ;, null, null, null, null)
                   looksLikeLocalFunction(#)
                   parseExpressionStatement(;)
                     parseExpression(;)
@@ -1704,8 +1704,8 @@
           notEofOrValue(}, #)
           parseStatement(;)
             parseStatementX(;)
-              parseExpressionStatementOrDeclaration(;, false)
-                parseExpressionStatementOrDeclarationAfterModifiers(;, ;, null, null, null, false)
+              parseExpressionStatementOrDeclaration(;, null)
+                parseExpressionStatementOrDeclarationAfterModifiers(;, ;, null, null, null, null)
                   looksLikeLocalFunction(#)
                   parseExpressionStatement(;)
                     parseExpression(;)
@@ -1726,8 +1726,8 @@
           notEofOrValue(}, #)
           parseStatement(;)
             parseStatementX(;)
-              parseExpressionStatementOrDeclaration(;, false)
-                parseExpressionStatementOrDeclarationAfterModifiers(;, ;, null, null, null, false)
+              parseExpressionStatementOrDeclaration(;, null)
+                parseExpressionStatementOrDeclarationAfterModifiers(;, ;, null, null, null, null)
                   looksLikeLocalFunction(#)
                   parseExpressionStatement(;)
                     parseExpression(;)
@@ -1748,8 +1748,8 @@
           notEofOrValue(}, #)
           parseStatement(;)
             parseStatementX(;)
-              parseExpressionStatementOrDeclaration(;, false)
-                parseExpressionStatementOrDeclarationAfterModifiers(;, ;, null, null, null, false)
+              parseExpressionStatementOrDeclaration(;, null)
+                parseExpressionStatementOrDeclarationAfterModifiers(;, ;, null, null, null, null)
                   looksLikeLocalFunction(#)
                   parseExpressionStatement(;)
                     parseExpression(;)
@@ -1770,8 +1770,8 @@
           notEofOrValue(}, #)
           parseStatement(;)
             parseStatementX(;)
-              parseExpressionStatementOrDeclaration(;, false)
-                parseExpressionStatementOrDeclarationAfterModifiers(;, ;, null, null, null, false)
+              parseExpressionStatementOrDeclaration(;, null)
+                parseExpressionStatementOrDeclarationAfterModifiers(;, ;, null, null, null, null)
                   looksLikeLocalFunction(#)
                   parseExpressionStatement(;)
                     parseExpression(;)
@@ -1792,8 +1792,8 @@
           notEofOrValue(}, #)
           parseStatement(;)
             parseStatementX(;)
-              parseExpressionStatementOrDeclaration(;, false)
-                parseExpressionStatementOrDeclarationAfterModifiers(;, ;, null, null, null, false)
+              parseExpressionStatementOrDeclaration(;, null)
+                parseExpressionStatementOrDeclarationAfterModifiers(;, ;, null, null, null, null)
                   looksLikeLocalFunction(#)
                   parseExpressionStatement(;)
                     parseExpression(;)
@@ -1814,8 +1814,8 @@
           notEofOrValue(}, #)
           parseStatement(;)
             parseStatementX(;)
-              parseExpressionStatementOrDeclaration(;, false)
-                parseExpressionStatementOrDeclarationAfterModifiers(;, ;, null, null, null, false)
+              parseExpressionStatementOrDeclaration(;, null)
+                parseExpressionStatementOrDeclarationAfterModifiers(;, ;, null, null, null, null)
                   looksLikeLocalFunction(#)
                   parseExpressionStatement(;)
                     parseExpression(;)
@@ -1836,8 +1836,8 @@
           notEofOrValue(}, #)
           parseStatement(;)
             parseStatementX(;)
-              parseExpressionStatementOrDeclaration(;, false)
-                parseExpressionStatementOrDeclarationAfterModifiers(;, ;, null, null, null, false)
+              parseExpressionStatementOrDeclaration(;, null)
+                parseExpressionStatementOrDeclarationAfterModifiers(;, ;, null, null, null, null)
                   looksLikeLocalFunction(#)
                   parseExpressionStatement(;)
                     parseExpression(;)
@@ -1858,8 +1858,8 @@
           notEofOrValue(}, #)
           parseStatement(;)
             parseStatementX(;)
-              parseExpressionStatementOrDeclaration(;, false)
-                parseExpressionStatementOrDeclarationAfterModifiers(;, ;, null, null, null, false)
+              parseExpressionStatementOrDeclaration(;, null)
+                parseExpressionStatementOrDeclarationAfterModifiers(;, ;, null, null, null, null)
                   looksLikeLocalFunction(#)
                   parseExpressionStatement(;)
                     parseExpression(;)
@@ -1880,8 +1880,8 @@
           notEofOrValue(}, #)
           parseStatement(;)
             parseStatementX(;)
-              parseExpressionStatementOrDeclaration(;, false)
-                parseExpressionStatementOrDeclarationAfterModifiers(;, ;, null, null, null, false)
+              parseExpressionStatementOrDeclaration(;, null)
+                parseExpressionStatementOrDeclarationAfterModifiers(;, ;, null, null, null, null)
                   looksLikeLocalFunction(#)
                   parseExpressionStatement(;)
                     parseExpression(;)
@@ -1902,8 +1902,8 @@
           notEofOrValue(}, #)
           parseStatement(;)
             parseStatementX(;)
-              parseExpressionStatementOrDeclaration(;, false)
-                parseExpressionStatementOrDeclarationAfterModifiers(;, ;, null, null, null, false)
+              parseExpressionStatementOrDeclaration(;, null)
+                parseExpressionStatementOrDeclarationAfterModifiers(;, ;, null, null, null, null)
                   looksLikeLocalFunction(#)
                   parseExpressionStatement(;)
                     parseExpression(;)
@@ -1924,8 +1924,8 @@
           notEofOrValue(}, #)
           parseStatement(;)
             parseStatementX(;)
-              parseExpressionStatementOrDeclaration(;, false)
-                parseExpressionStatementOrDeclarationAfterModifiers(;, ;, null, null, null, false)
+              parseExpressionStatementOrDeclaration(;, null)
+                parseExpressionStatementOrDeclarationAfterModifiers(;, ;, null, null, null, null)
                   looksLikeLocalFunction(#)
                   parseExpressionStatement(;)
                     parseExpression(;)
@@ -1946,8 +1946,8 @@
           notEofOrValue(}, #)
           parseStatement(;)
             parseStatementX(;)
-              parseExpressionStatementOrDeclaration(;, false)
-                parseExpressionStatementOrDeclarationAfterModifiers(;, ;, null, null, null, false)
+              parseExpressionStatementOrDeclaration(;, null)
+                parseExpressionStatementOrDeclarationAfterModifiers(;, ;, null, null, null, null)
                   looksLikeLocalFunction(#)
                   parseExpressionStatement(;)
                     parseExpression(;)
@@ -1968,8 +1968,8 @@
           notEofOrValue(}, #)
           parseStatement(;)
             parseStatementX(;)
-              parseExpressionStatementOrDeclaration(;, false)
-                parseExpressionStatementOrDeclarationAfterModifiers(;, ;, null, null, null, false)
+              parseExpressionStatementOrDeclaration(;, null)
+                parseExpressionStatementOrDeclarationAfterModifiers(;, ;, null, null, null, null)
                   looksLikeLocalFunction(#)
                   parseExpressionStatement(;)
                     parseExpression(;)
@@ -1990,8 +1990,8 @@
           notEofOrValue(}, #)
           parseStatement(;)
             parseStatementX(;)
-              parseExpressionStatementOrDeclaration(;, false)
-                parseExpressionStatementOrDeclarationAfterModifiers(;, ;, null, null, null, false)
+              parseExpressionStatementOrDeclaration(;, null)
+                parseExpressionStatementOrDeclarationAfterModifiers(;, ;, null, null, null, null)
                   looksLikeLocalFunction(#)
                   parseExpressionStatement(;)
                     parseExpression(;)
@@ -2012,8 +2012,8 @@
           notEofOrValue(}, #)
           parseStatement(;)
             parseStatementX(;)
-              parseExpressionStatementOrDeclaration(;, false)
-                parseExpressionStatementOrDeclarationAfterModifiers(;, ;, null, null, null, false)
+              parseExpressionStatementOrDeclaration(;, null)
+                parseExpressionStatementOrDeclarationAfterModifiers(;, ;, null, null, null, null)
                   looksLikeLocalFunction(#)
                   parseExpressionStatement(;)
                     parseExpression(;)
@@ -2034,8 +2034,8 @@
           notEofOrValue(}, #)
           parseStatement(;)
             parseStatementX(;)
-              parseExpressionStatementOrDeclaration(;, false)
-                parseExpressionStatementOrDeclarationAfterModifiers(;, ;, null, null, null, false)
+              parseExpressionStatementOrDeclaration(;, null)
+                parseExpressionStatementOrDeclarationAfterModifiers(;, ;, null, null, null, null)
                   looksLikeLocalFunction(#)
                   parseExpressionStatement(;)
                     parseExpression(;)
@@ -2056,8 +2056,8 @@
           notEofOrValue(}, #)
           parseStatement(;)
             parseStatementX(;)
-              parseExpressionStatementOrDeclaration(;, false)
-                parseExpressionStatementOrDeclarationAfterModifiers(;, ;, null, null, null, false)
+              parseExpressionStatementOrDeclaration(;, null)
+                parseExpressionStatementOrDeclarationAfterModifiers(;, ;, null, null, null, null)
                   looksLikeLocalFunction(#)
                   parseExpressionStatement(;)
                     parseExpression(;)
@@ -2078,8 +2078,8 @@
           notEofOrValue(}, #)
           parseStatement(;)
             parseStatementX(;)
-              parseExpressionStatementOrDeclaration(;, false)
-                parseExpressionStatementOrDeclarationAfterModifiers(;, ;, null, null, null, false)
+              parseExpressionStatementOrDeclaration(;, null)
+                parseExpressionStatementOrDeclarationAfterModifiers(;, ;, null, null, null, null)
                   looksLikeLocalFunction(#)
                   parseExpressionStatement(;)
                     parseExpression(;)
@@ -2100,8 +2100,8 @@
           notEofOrValue(}, #)
           parseStatement(;)
             parseStatementX(;)
-              parseExpressionStatementOrDeclaration(;, false)
-                parseExpressionStatementOrDeclarationAfterModifiers(;, ;, null, null, null, false)
+              parseExpressionStatementOrDeclaration(;, null)
+                parseExpressionStatementOrDeclarationAfterModifiers(;, ;, null, null, null, null)
                   looksLikeLocalFunction(#)
                   parseExpressionStatement(;)
                     parseExpression(;)
@@ -2122,8 +2122,8 @@
           notEofOrValue(}, #)
           parseStatement(;)
             parseStatementX(;)
-              parseExpressionStatementOrDeclaration(;, false)
-                parseExpressionStatementOrDeclarationAfterModifiers(;, ;, null, null, null, false)
+              parseExpressionStatementOrDeclaration(;, null)
+                parseExpressionStatementOrDeclarationAfterModifiers(;, ;, null, null, null, null)
                   looksLikeLocalFunction(#)
                   parseExpressionStatement(;)
                     parseExpression(;)
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 35df62b..ac90ea4 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
@@ -2259,7 +2259,7 @@
           notEofOrValue(}, p)
           parseStatement({)
             parseStatementX({)
-              parseExpressionStatementOrDeclarationAfterModifiers({, {, null, null, null, false)
+              parseExpressionStatementOrDeclarationAfterModifiers({, {, null, null, null, null)
                 looksLikeLocalFunction(r)
                 listener: beginMetadataStar(p)
                 listener: endMetadataStar(0)
@@ -2283,7 +2283,7 @@
           notEofOrValue(}, i)
           parseStatement(;)
             parseStatementX(;)
-              parseExpressionStatementOrDeclarationAfterModifiers(;, ;, null, null, null, false)
+              parseExpressionStatementOrDeclarationAfterModifiers(;, ;, null, null, null, null)
                 looksLikeLocalFunction(n)
                 listener: beginMetadataStar(i)
                 listener: endMetadataStar(0)
@@ -2307,7 +2307,7 @@
           notEofOrValue(}, t)
           parseStatement(;)
             parseStatementX(;)
-              parseExpressionStatementOrDeclarationAfterModifiers(;, ;, null, null, null, false)
+              parseExpressionStatementOrDeclarationAfterModifiers(;, ;, null, null, null, null)
                 looksLikeLocalFunction(t)
                 parseExpressionStatement(;)
                   parseExpression(;)
diff --git a/pkg/front_end/parser_testcases/general/assignment.dart.intertwined.expect b/pkg/front_end/parser_testcases/general/assignment.dart.intertwined.expect
index 0005bed..72f3f28 100644
--- a/pkg/front_end/parser_testcases/general/assignment.dart.intertwined.expect
+++ b/pkg/front_end/parser_testcases/general/assignment.dart.intertwined.expect
@@ -29,7 +29,7 @@
           notEofOrValue(}, foo)
           parseStatement({)
             parseStatementX({)
-              parseExpressionStatementOrDeclarationAfterModifiers({, {, null, null, null, false)
+              parseExpressionStatementOrDeclarationAfterModifiers({, {, null, null, null, null)
                 looksLikeLocalFunction(foo)
                 parseExpressionStatement({)
                   parseExpression({)
diff --git a/pkg/front_end/parser_testcases/general/augment_super.dart.intertwined.expect b/pkg/front_end/parser_testcases/general/augment_super.dart.intertwined.expect
index 1a3fb52..3a018c9 100644
--- a/pkg/front_end/parser_testcases/general/augment_super.dart.intertwined.expect
+++ b/pkg/front_end/parser_testcases/general/augment_super.dart.intertwined.expect
@@ -51,7 +51,7 @@
           notEofOrValue(}, augment)
           parseStatement({)
             parseStatementX({)
-              parseExpressionStatementOrDeclarationAfterModifiers({, {, null, null, null, false)
+              parseExpressionStatementOrDeclarationAfterModifiers({, {, null, null, null, null)
                 looksLikeLocalFunction(super)
                 listener: beginMetadataStar(augment)
                 listener: endMetadataStar(0)
@@ -77,8 +77,8 @@
           notEofOrValue(}, ()
           parseStatement(;)
             parseStatementX(;)
-              parseExpressionStatementOrDeclaration(;, false)
-                parseExpressionStatementOrDeclarationAfterModifiers(;, ;, null, null, null, false)
+              parseExpressionStatementOrDeclaration(;, null)
+                parseExpressionStatementOrDeclarationAfterModifiers(;, ;, null, null, null, null)
                   looksLikeLocalFunction(()
                   parseExpressionStatement(;)
                     parseExpression(;)
@@ -145,7 +145,7 @@
           notEofOrValue(}, augment)
           parseStatement({)
             parseStatementX({)
-              parseExpressionStatementOrDeclarationAfterModifiers({, {, null, null, null, false)
+              parseExpressionStatementOrDeclarationAfterModifiers({, {, null, null, null, null)
                 looksLikeLocalFunction(int)
                 listener: beginMetadataStar(augment)
                 listener: endMetadataStar(0)
@@ -169,7 +169,7 @@
           notEofOrValue(}, local)
           parseStatement(;)
             parseStatementX(;)
-              parseExpressionStatementOrDeclarationAfterModifiers(;, ;, null, null, null, false)
+              parseExpressionStatementOrDeclarationAfterModifiers(;, ;, null, null, null, null)
                 looksLikeLocalFunction(local)
                 parseExpressionStatement(;)
                   parseExpression(;)
@@ -190,7 +190,7 @@
           notEofOrValue(}, augment)
           parseStatement(;)
             parseStatementX(;)
-              parseExpressionStatementOrDeclarationAfterModifiers(;, ;, null, null, null, false)
+              parseExpressionStatementOrDeclarationAfterModifiers(;, ;, null, null, null, null)
                 looksLikeLocalFunction(augment)
                 parseExpressionStatement(;)
                   parseExpression(;)
@@ -416,7 +416,7 @@
           notEofOrValue(}, augment)
           parseStatement({)
             parseStatementX({)
-              parseExpressionStatementOrDeclarationAfterModifiers({, {, null, null, null, false)
+              parseExpressionStatementOrDeclarationAfterModifiers({, {, null, null, null, null)
                 looksLikeLocalFunction(super)
                 listener: beginMetadataStar(augment)
                 listener: endMetadataStar(0)
@@ -442,8 +442,8 @@
           notEofOrValue(}, [)
           parseStatement(;)
             parseStatementX(;)
-              parseExpressionStatementOrDeclaration(;, false)
-                parseExpressionStatementOrDeclarationAfterModifiers(;, ;, null, null, null, false)
+              parseExpressionStatementOrDeclaration(;, null)
+                parseExpressionStatementOrDeclarationAfterModifiers(;, ;, null, null, null, null)
                   looksLikeLocalFunction([)
                   parseExpressionStatement(;)
                     parseExpression(;)
@@ -485,7 +485,7 @@
           notEofOrValue(}, augment)
           parseStatement(;)
             parseStatementX(;)
-              parseExpressionStatementOrDeclarationAfterModifiers(;, ;, null, null, null, false)
+              parseExpressionStatementOrDeclarationAfterModifiers(;, ;, null, null, null, null)
                 looksLikeLocalFunction(super)
                 listener: beginMetadataStar(augment)
                 listener: endMetadataStar(0)
@@ -549,7 +549,7 @@
           notEofOrValue(}, augment)
           parseStatement({)
             parseStatementX({)
-              parseExpressionStatementOrDeclarationAfterModifiers({, {, null, null, null, false)
+              parseExpressionStatementOrDeclarationAfterModifiers({, {, null, null, null, null)
                 looksLikeLocalFunction(super)
                 listener: beginMetadataStar(augment)
                 listener: endMetadataStar(0)
@@ -575,8 +575,8 @@
           notEofOrValue(}, ()
           parseStatement(;)
             parseStatementX(;)
-              parseExpressionStatementOrDeclaration(;, false)
-                parseExpressionStatementOrDeclarationAfterModifiers(;, ;, null, null, null, false)
+              parseExpressionStatementOrDeclaration(;, null)
+                parseExpressionStatementOrDeclarationAfterModifiers(;, ;, null, null, null, null)
                   looksLikeLocalFunction(()
                   parseExpressionStatement(;)
                     parseExpression(;)
@@ -593,7 +593,7 @@
           notEofOrValue(}, augment)
           parseStatement(;)
             parseStatementX(;)
-              parseExpressionStatementOrDeclarationAfterModifiers(;, ;, null, null, null, false)
+              parseExpressionStatementOrDeclarationAfterModifiers(;, ;, null, null, null, null)
                 looksLikeLocalFunction(super)
                 listener: beginMetadataStar(augment)
                 listener: endMetadataStar(0)
@@ -616,7 +616,7 @@
           notEofOrValue(}, augment)
           parseStatement(;)
             parseStatementX(;)
-              parseExpressionStatementOrDeclarationAfterModifiers(;, ;, null, null, null, false)
+              parseExpressionStatementOrDeclarationAfterModifiers(;, ;, null, null, null, null)
                 looksLikeLocalFunction(int)
                 listener: beginMetadataStar(augment)
                 listener: endMetadataStar(0)
@@ -640,7 +640,7 @@
           notEofOrValue(}, local)
           parseStatement(;)
             parseStatementX(;)
-              parseExpressionStatementOrDeclarationAfterModifiers(;, ;, null, null, null, false)
+              parseExpressionStatementOrDeclarationAfterModifiers(;, ;, null, null, null, null)
                 looksLikeLocalFunction(local)
                 parseExpressionStatement(;)
                   parseExpression(;)
@@ -661,7 +661,7 @@
           notEofOrValue(}, augment)
           parseStatement(;)
             parseStatementX(;)
-              parseExpressionStatementOrDeclarationAfterModifiers(;, ;, null, null, null, false)
+              parseExpressionStatementOrDeclarationAfterModifiers(;, ;, null, null, null, null)
                 looksLikeLocalFunction(augment)
                 parseExpressionStatement(;)
                   parseExpression(;)
@@ -782,7 +782,7 @@
                   notEofOrValue(}, augment)
                   parseStatement({)
                     parseStatementX({)
-                      parseExpressionStatementOrDeclarationAfterModifiers({, {, null, null, null, false)
+                      parseExpressionStatementOrDeclarationAfterModifiers({, {, null, null, null, null)
                         looksLikeLocalFunction(super)
                         listener: beginMetadataStar(augment)
                         listener: endMetadataStar(0)
@@ -808,8 +808,8 @@
                   notEofOrValue(}, ()
                   parseStatement(;)
                     parseStatementX(;)
-                      parseExpressionStatementOrDeclaration(;, false)
-                        parseExpressionStatementOrDeclarationAfterModifiers(;, ;, null, null, null, false)
+                      parseExpressionStatementOrDeclaration(;, null)
+                        parseExpressionStatementOrDeclarationAfterModifiers(;, ;, null, null, null, null)
                           looksLikeLocalFunction(()
                           parseExpressionStatement(;)
                             parseExpression(;)
@@ -880,7 +880,7 @@
                   notEofOrValue(}, augment)
                   parseStatement({)
                     parseStatementX({)
-                      parseExpressionStatementOrDeclarationAfterModifiers({, {, null, null, null, false)
+                      parseExpressionStatementOrDeclarationAfterModifiers({, {, null, null, null, null)
                         looksLikeLocalFunction(int)
                         listener: beginMetadataStar(augment)
                         listener: endMetadataStar(0)
@@ -904,7 +904,7 @@
                   notEofOrValue(}, local)
                   parseStatement(;)
                     parseStatementX(;)
-                      parseExpressionStatementOrDeclarationAfterModifiers(;, ;, null, null, null, false)
+                      parseExpressionStatementOrDeclarationAfterModifiers(;, ;, null, null, null, null)
                         looksLikeLocalFunction(local)
                         parseExpressionStatement(;)
                           parseExpression(;)
@@ -925,7 +925,7 @@
                   notEofOrValue(}, augment)
                   parseStatement(;)
                     parseStatementX(;)
-                      parseExpressionStatementOrDeclarationAfterModifiers(;, ;, null, null, null, false)
+                      parseExpressionStatementOrDeclarationAfterModifiers(;, ;, null, null, null, null)
                         looksLikeLocalFunction(augment)
                         parseExpressionStatement(;)
                           parseExpression(;)
@@ -995,7 +995,7 @@
                   notEofOrValue(}, augment)
                   parseStatement({)
                     parseStatementX({)
-                      parseExpressionStatementOrDeclarationAfterModifiers({, {, null, null, null, false)
+                      parseExpressionStatementOrDeclarationAfterModifiers({, {, null, null, null, null)
                         looksLikeLocalFunction(super)
                         listener: beginMetadataStar(augment)
                         listener: endMetadataStar(0)
@@ -1021,8 +1021,8 @@
                   notEofOrValue(}, ++)
                   parseStatement(;)
                     parseStatementX(;)
-                      parseExpressionStatementOrDeclaration(;, false)
-                        parseExpressionStatementOrDeclarationAfterModifiers(;, ;, null, null, null, false)
+                      parseExpressionStatementOrDeclaration(;, null)
+                        parseExpressionStatementOrDeclarationAfterModifiers(;, ;, null, null, null, null)
                           looksLikeLocalFunction(++)
                           parseExpressionStatement(;)
                             parseExpression(;)
@@ -1048,8 +1048,8 @@
                   notEofOrValue(}, --)
                   parseStatement(;)
                     parseStatementX(;)
-                      parseExpressionStatementOrDeclaration(;, false)
-                        parseExpressionStatementOrDeclarationAfterModifiers(;, ;, null, null, null, false)
+                      parseExpressionStatementOrDeclaration(;, null)
+                        parseExpressionStatementOrDeclarationAfterModifiers(;, ;, null, null, null, null)
                           looksLikeLocalFunction(--)
                           parseExpressionStatement(;)
                             parseExpression(;)
@@ -1076,8 +1076,8 @@
                   notEofOrValue(}, super)
                   parseStatement(;)
                     parseStatementX(;)
-                      parseExpressionStatementOrDeclaration(;, false)
-                        parseExpressionStatementOrDeclarationAfterModifiers(;, ;, null, null, null, false)
+                      parseExpressionStatementOrDeclaration(;, null)
+                        parseExpressionStatementOrDeclarationAfterModifiers(;, ;, null, null, null, null)
                           looksLikeLocalFunction(super)
                           parseExpressionStatement(;)
                             parseExpression(;)
@@ -1118,8 +1118,8 @@
                   notEofOrValue(}, super)
                   parseStatement(;)
                     parseStatementX(;)
-                      parseExpressionStatementOrDeclaration(;, false)
-                        parseExpressionStatementOrDeclarationAfterModifiers(;, ;, null, null, null, false)
+                      parseExpressionStatementOrDeclaration(;, null)
+                        parseExpressionStatementOrDeclarationAfterModifiers(;, ;, null, null, null, null)
                           looksLikeLocalFunction(super)
                           parseExpressionStatement(;)
                             parseExpression(;)
@@ -1199,7 +1199,7 @@
                   notEofOrValue(}, augment)
                   parseStatement({)
                     parseStatementX({)
-                      parseExpressionStatementOrDeclarationAfterModifiers({, {, null, null, null, false)
+                      parseExpressionStatementOrDeclarationAfterModifiers({, {, null, null, null, null)
                         looksLikeLocalFunction(super)
                         listener: beginMetadataStar(augment)
                         listener: endMetadataStar(0)
@@ -1267,7 +1267,7 @@
                   notEofOrValue(}, augment)
                   parseStatement({)
                     parseStatementX({)
-                      parseExpressionStatementOrDeclarationAfterModifiers({, {, null, null, null, false)
+                      parseExpressionStatementOrDeclarationAfterModifiers({, {, null, null, null, null)
                         looksLikeLocalFunction(super)
                         listener: beginMetadataStar(augment)
                         listener: endMetadataStar(0)
@@ -1293,8 +1293,8 @@
                   notEofOrValue(}, ()
                   parseStatement(;)
                     parseStatementX(;)
-                      parseExpressionStatementOrDeclaration(;, false)
-                        parseExpressionStatementOrDeclarationAfterModifiers(;, ;, null, null, null, false)
+                      parseExpressionStatementOrDeclaration(;, null)
+                        parseExpressionStatementOrDeclarationAfterModifiers(;, ;, null, null, null, null)
                           looksLikeLocalFunction(()
                           parseExpressionStatement(;)
                             parseExpression(;)
@@ -1311,7 +1311,7 @@
                   notEofOrValue(}, augment)
                   parseStatement(;)
                     parseStatementX(;)
-                      parseExpressionStatementOrDeclarationAfterModifiers(;, ;, null, null, null, false)
+                      parseExpressionStatementOrDeclarationAfterModifiers(;, ;, null, null, null, null)
                         looksLikeLocalFunction(super)
                         listener: beginMetadataStar(augment)
                         listener: endMetadataStar(0)
@@ -1334,7 +1334,7 @@
                   notEofOrValue(}, augment)
                   parseStatement(;)
                     parseStatementX(;)
-                      parseExpressionStatementOrDeclarationAfterModifiers(;, ;, null, null, null, false)
+                      parseExpressionStatementOrDeclarationAfterModifiers(;, ;, null, null, null, null)
                         looksLikeLocalFunction(int)
                         listener: beginMetadataStar(augment)
                         listener: endMetadataStar(0)
@@ -1358,7 +1358,7 @@
                   notEofOrValue(}, local)
                   parseStatement(;)
                     parseStatementX(;)
-                      parseExpressionStatementOrDeclarationAfterModifiers(;, ;, null, null, null, false)
+                      parseExpressionStatementOrDeclarationAfterModifiers(;, ;, null, null, null, null)
                         looksLikeLocalFunction(local)
                         parseExpressionStatement(;)
                           parseExpression(;)
@@ -1379,7 +1379,7 @@
                   notEofOrValue(}, augment)
                   parseStatement(;)
                     parseStatementX(;)
-                      parseExpressionStatementOrDeclarationAfterModifiers(;, ;, null, null, null, false)
+                      parseExpressionStatementOrDeclarationAfterModifiers(;, ;, null, null, null, null)
                         looksLikeLocalFunction(augment)
                         parseExpressionStatement(;)
                           parseExpression(;)
diff --git a/pkg/front_end/parser_testcases/general/call_on_after_try_block.dart.intertwined.expect b/pkg/front_end/parser_testcases/general/call_on_after_try_block.dart.intertwined.expect
index 84387f2..8ad2bfa 100644
--- a/pkg/front_end/parser_testcases/general/call_on_after_try_block.dart.intertwined.expect
+++ b/pkg/front_end/parser_testcases/general/call_on_after_try_block.dart.intertwined.expect
@@ -87,8 +87,8 @@
           notEofOrValue(}, on)
           parseStatement(})
             parseStatementX(})
-              parseExpressionStatementOrDeclaration(}, false)
-                parseExpressionStatementOrDeclarationAfterModifiers(}, }, null, null, null, false)
+              parseExpressionStatementOrDeclaration(}, null)
+                parseExpressionStatementOrDeclarationAfterModifiers(}, }, null, null, null, null)
                   looksLikeLocalFunction(on)
                   parseExpressionStatement(})
                     parseExpression(})
diff --git a/pkg/front_end/parser_testcases/general/call_on_after_try_block2.dart.intertwined.expect b/pkg/front_end/parser_testcases/general/call_on_after_try_block2.dart.intertwined.expect
index c07d0c6..3208d4e 100644
--- a/pkg/front_end/parser_testcases/general/call_on_after_try_block2.dart.intertwined.expect
+++ b/pkg/front_end/parser_testcases/general/call_on_after_try_block2.dart.intertwined.expect
@@ -87,8 +87,8 @@
           notEofOrValue(}, on)
           parseStatement(})
             parseStatementX(})
-              parseExpressionStatementOrDeclaration(}, false)
-                parseExpressionStatementOrDeclarationAfterModifiers(}, }, null, null, null, false)
+              parseExpressionStatementOrDeclaration(}, null)
+                parseExpressionStatementOrDeclarationAfterModifiers(}, }, null, null, null, null)
                   looksLikeLocalFunction(on)
                   listener: beginMetadataStar(on)
                   listener: endMetadataStar(0)
@@ -134,8 +134,8 @@
           notEofOrValue(}, on)
           parseStatement(})
             parseStatementX(})
-              parseExpressionStatementOrDeclaration(}, false)
-                parseExpressionStatementOrDeclarationAfterModifiers(}, }, null, null, null, false)
+              parseExpressionStatementOrDeclaration(}, null)
+                parseExpressionStatementOrDeclarationAfterModifiers(}, }, null, null, null, null)
                   looksLikeLocalFunction(on)
                   parseExpressionStatement(})
                     parseExpression(})
diff --git a/pkg/front_end/parser_testcases/general/call_on_after_try_block2_prime.dart.intertwined.expect b/pkg/front_end/parser_testcases/general/call_on_after_try_block2_prime.dart.intertwined.expect
index f97eb71..e294ba2 100644
--- a/pkg/front_end/parser_testcases/general/call_on_after_try_block2_prime.dart.intertwined.expect
+++ b/pkg/front_end/parser_testcases/general/call_on_after_try_block2_prime.dart.intertwined.expect
@@ -87,7 +87,7 @@
           notEofOrValue(}, onX)
           parseStatement(})
             parseStatementX(})
-              parseExpressionStatementOrDeclarationAfterModifiers(}, }, null, null, null, false)
+              parseExpressionStatementOrDeclarationAfterModifiers(}, }, null, null, null, null)
                 looksLikeLocalFunction(onX)
                 listener: beginMetadataStar(onX)
                 listener: endMetadataStar(0)
@@ -132,7 +132,7 @@
           notEofOrValue(}, onX)
           parseStatement(})
             parseStatementX(})
-              parseExpressionStatementOrDeclarationAfterModifiers(}, }, null, null, null, false)
+              parseExpressionStatementOrDeclarationAfterModifiers(}, }, null, null, null, null)
                 looksLikeLocalFunction(onX)
                 parseExpressionStatement(})
                   parseExpression(})
diff --git a/pkg/front_end/parser_testcases/general/call_on_after_try_block3.dart.intertwined.expect b/pkg/front_end/parser_testcases/general/call_on_after_try_block3.dart.intertwined.expect
index d336933..f51d486 100644
--- a/pkg/front_end/parser_testcases/general/call_on_after_try_block3.dart.intertwined.expect
+++ b/pkg/front_end/parser_testcases/general/call_on_after_try_block3.dart.intertwined.expect
@@ -100,8 +100,8 @@
           notEofOrValue(}, on)
           parseStatement(})
             parseStatementX(})
-              parseExpressionStatementOrDeclaration(}, false)
-                parseExpressionStatementOrDeclarationAfterModifiers(}, }, null, null, null, false)
+              parseExpressionStatementOrDeclaration(}, null)
+                parseExpressionStatementOrDeclarationAfterModifiers(}, }, null, null, null, null)
                   looksLikeLocalFunction(on)
                   parseExpressionStatement(})
                     parseExpression(})
diff --git a/pkg/front_end/parser_testcases/general/call_on_after_try_block3_prime.dart.intertwined.expect b/pkg/front_end/parser_testcases/general/call_on_after_try_block3_prime.dart.intertwined.expect
index 610ebd6..9ef1f00 100644
--- a/pkg/front_end/parser_testcases/general/call_on_after_try_block3_prime.dart.intertwined.expect
+++ b/pkg/front_end/parser_testcases/general/call_on_after_try_block3_prime.dart.intertwined.expect
@@ -99,7 +99,7 @@
           notEofOrValue(}, onX)
           parseStatement(})
             parseStatementX(})
-              parseExpressionStatementOrDeclarationAfterModifiers(}, }, null, null, null, false)
+              parseExpressionStatementOrDeclarationAfterModifiers(}, }, null, null, null, null)
                 looksLikeLocalFunction(onX)
                 parseExpressionStatement(})
                   parseExpression(})
diff --git a/pkg/front_end/parser_testcases/general/call_on_after_try_block4.dart.intertwined.expect b/pkg/front_end/parser_testcases/general/call_on_after_try_block4.dart.intertwined.expect
index e47aced..cf1839f 100644
--- a/pkg/front_end/parser_testcases/general/call_on_after_try_block4.dart.intertwined.expect
+++ b/pkg/front_end/parser_testcases/general/call_on_after_try_block4.dart.intertwined.expect
@@ -100,8 +100,8 @@
           notEofOrValue(}, on)
           parseStatement(})
             parseStatementX(})
-              parseExpressionStatementOrDeclaration(}, false)
-                parseExpressionStatementOrDeclarationAfterModifiers(}, }, null, null, null, false)
+              parseExpressionStatementOrDeclaration(}, null)
+                parseExpressionStatementOrDeclarationAfterModifiers(}, }, null, null, null, null)
                   looksLikeLocalFunction(on)
                   parseExpressionStatement(})
                     parseExpression(})
diff --git a/pkg/front_end/parser_testcases/general/call_on_after_try_block4_prime.dart.intertwined.expect b/pkg/front_end/parser_testcases/general/call_on_after_try_block4_prime.dart.intertwined.expect
index f7336c4..fc2c38f 100644
--- a/pkg/front_end/parser_testcases/general/call_on_after_try_block4_prime.dart.intertwined.expect
+++ b/pkg/front_end/parser_testcases/general/call_on_after_try_block4_prime.dart.intertwined.expect
@@ -99,7 +99,7 @@
           notEofOrValue(}, onX)
           parseStatement(})
             parseStatementX(})
-              parseExpressionStatementOrDeclarationAfterModifiers(}, }, null, null, null, false)
+              parseExpressionStatementOrDeclarationAfterModifiers(}, }, null, null, null, null)
                 looksLikeLocalFunction(onX)
                 parseExpressionStatement(})
                   parseExpression(})
diff --git a/pkg/front_end/parser_testcases/general/call_on_after_try_block5.dart.intertwined.expect b/pkg/front_end/parser_testcases/general/call_on_after_try_block5.dart.intertwined.expect
index 1c3467c..1be4403 100644
--- a/pkg/front_end/parser_testcases/general/call_on_after_try_block5.dart.intertwined.expect
+++ b/pkg/front_end/parser_testcases/general/call_on_after_try_block5.dart.intertwined.expect
@@ -100,8 +100,8 @@
           notEofOrValue(}, on)
           parseStatement(})
             parseStatementX(})
-              parseExpressionStatementOrDeclaration(}, false)
-                parseExpressionStatementOrDeclarationAfterModifiers(}, }, null, null, null, false)
+              parseExpressionStatementOrDeclaration(}, null)
+                parseExpressionStatementOrDeclarationAfterModifiers(}, }, null, null, null, null)
                   looksLikeLocalFunction(on)
                   parseExpressionStatement(})
                     parseExpression(})
diff --git a/pkg/front_end/parser_testcases/general/call_on_after_try_block5_prime.dart.intertwined.expect b/pkg/front_end/parser_testcases/general/call_on_after_try_block5_prime.dart.intertwined.expect
index de467a3..52a2ffb 100644
--- a/pkg/front_end/parser_testcases/general/call_on_after_try_block5_prime.dart.intertwined.expect
+++ b/pkg/front_end/parser_testcases/general/call_on_after_try_block5_prime.dart.intertwined.expect
@@ -99,7 +99,7 @@
           notEofOrValue(}, onX)
           parseStatement(})
             parseStatementX(})
-              parseExpressionStatementOrDeclarationAfterModifiers(}, }, null, null, null, false)
+              parseExpressionStatementOrDeclarationAfterModifiers(}, }, null, null, null, null)
                 looksLikeLocalFunction(onX)
                 parseExpressionStatement(})
                   parseExpression(})
diff --git a/pkg/front_end/parser_testcases/general/call_on_after_try_block_prime.dart.intertwined.expect b/pkg/front_end/parser_testcases/general/call_on_after_try_block_prime.dart.intertwined.expect
index b7b15a2..6432eec 100644
--- a/pkg/front_end/parser_testcases/general/call_on_after_try_block_prime.dart.intertwined.expect
+++ b/pkg/front_end/parser_testcases/general/call_on_after_try_block_prime.dart.intertwined.expect
@@ -87,7 +87,7 @@
           notEofOrValue(}, onX)
           parseStatement(})
             parseStatementX(})
-              parseExpressionStatementOrDeclarationAfterModifiers(}, }, null, null, null, false)
+              parseExpressionStatementOrDeclarationAfterModifiers(}, }, null, null, null, null)
                 looksLikeLocalFunction(onX)
                 parseExpressionStatement(})
                   parseExpression(})
diff --git a/pkg/front_end/parser_testcases/general/chained_call_01.dart.intertwined.expect b/pkg/front_end/parser_testcases/general/chained_call_01.dart.intertwined.expect
index fce21ba..ab09879 100644
--- a/pkg/front_end/parser_testcases/general/chained_call_01.dart.intertwined.expect
+++ b/pkg/front_end/parser_testcases/general/chained_call_01.dart.intertwined.expect
@@ -40,7 +40,7 @@
           notEofOrValue(}, e)
           parseStatement({)
             parseStatementX({)
-              parseExpressionStatementOrDeclarationAfterModifiers({, {, null, null, null, false)
+              parseExpressionStatementOrDeclarationAfterModifiers({, {, null, null, null, null)
                 looksLikeLocalFunction(e)
                 parseExpressionStatement({)
                   parseExpression({)
diff --git a/pkg/front_end/parser_testcases/general/chained_call_02.dart.intertwined.expect b/pkg/front_end/parser_testcases/general/chained_call_02.dart.intertwined.expect
index 9579bc0..b701a34 100644
--- a/pkg/front_end/parser_testcases/general/chained_call_02.dart.intertwined.expect
+++ b/pkg/front_end/parser_testcases/general/chained_call_02.dart.intertwined.expect
@@ -40,7 +40,7 @@
           notEofOrValue(}, e)
           parseStatement({)
             parseStatementX({)
-              parseExpressionStatementOrDeclarationAfterModifiers({, {, null, null, null, false)
+              parseExpressionStatementOrDeclarationAfterModifiers({, {, null, null, null, null)
                 looksLikeLocalFunction(e)
                 parseExpressionStatement({)
                   parseExpression({)
diff --git a/pkg/front_end/parser_testcases/general/chained_call_03.dart.intertwined.expect b/pkg/front_end/parser_testcases/general/chained_call_03.dart.intertwined.expect
index 4807443..29a09de 100644
--- a/pkg/front_end/parser_testcases/general/chained_call_03.dart.intertwined.expect
+++ b/pkg/front_end/parser_testcases/general/chained_call_03.dart.intertwined.expect
@@ -40,7 +40,7 @@
           notEofOrValue(}, e)
           parseStatement({)
             parseStatementX({)
-              parseExpressionStatementOrDeclarationAfterModifiers({, {, null, null, null, false)
+              parseExpressionStatementOrDeclarationAfterModifiers({, {, null, null, null, null)
                 looksLikeLocalFunction(e)
                 parseExpressionStatement({)
                   parseExpression({)
diff --git a/pkg/front_end/parser_testcases/general/chained_call_04.dart.intertwined.expect b/pkg/front_end/parser_testcases/general/chained_call_04.dart.intertwined.expect
index cf46e41..a3d0c08 100644
--- a/pkg/front_end/parser_testcases/general/chained_call_04.dart.intertwined.expect
+++ b/pkg/front_end/parser_testcases/general/chained_call_04.dart.intertwined.expect
@@ -40,7 +40,7 @@
           notEofOrValue(}, e)
           parseStatement({)
             parseStatementX({)
-              parseExpressionStatementOrDeclarationAfterModifiers({, {, null, null, null, false)
+              parseExpressionStatementOrDeclarationAfterModifiers({, {, null, null, null, null)
                 looksLikeLocalFunction(e)
                 parseExpressionStatement({)
                   parseExpression({)
diff --git a/pkg/front_end/parser_testcases/general/chained_call_05.dart.intertwined.expect b/pkg/front_end/parser_testcases/general/chained_call_05.dart.intertwined.expect
index e0381e7b..f7753b8 100644
--- a/pkg/front_end/parser_testcases/general/chained_call_05.dart.intertwined.expect
+++ b/pkg/front_end/parser_testcases/general/chained_call_05.dart.intertwined.expect
@@ -40,8 +40,8 @@
           notEofOrValue(}, ()
           parseStatement({)
             parseStatementX({)
-              parseExpressionStatementOrDeclaration({, false)
-                parseExpressionStatementOrDeclarationAfterModifiers({, {, null, null, null, false)
+              parseExpressionStatementOrDeclaration({, null)
+                parseExpressionStatementOrDeclarationAfterModifiers({, {, null, null, null, null)
                   looksLikeLocalFunction(()
                   parseExpressionStatement({)
                     parseExpression({)
diff --git a/pkg/front_end/parser_testcases/general/chained_call_06.dart.intertwined.expect b/pkg/front_end/parser_testcases/general/chained_call_06.dart.intertwined.expect
index ac7ecb6..f3d1fd6 100644
--- a/pkg/front_end/parser_testcases/general/chained_call_06.dart.intertwined.expect
+++ b/pkg/front_end/parser_testcases/general/chained_call_06.dart.intertwined.expect
@@ -40,8 +40,8 @@
           notEofOrValue(}, ()
           parseStatement({)
             parseStatementX({)
-              parseExpressionStatementOrDeclaration({, false)
-                parseExpressionStatementOrDeclarationAfterModifiers({, {, null, null, null, false)
+              parseExpressionStatementOrDeclaration({, null)
+                parseExpressionStatementOrDeclarationAfterModifiers({, {, null, null, null, null)
                   looksLikeLocalFunction(()
                   parseExpressionStatement({)
                     parseExpression({)
diff --git a/pkg/front_end/parser_testcases/general/chained_call_07.dart.intertwined.expect b/pkg/front_end/parser_testcases/general/chained_call_07.dart.intertwined.expect
index 9129a71..526bd00 100644
--- a/pkg/front_end/parser_testcases/general/chained_call_07.dart.intertwined.expect
+++ b/pkg/front_end/parser_testcases/general/chained_call_07.dart.intertwined.expect
@@ -40,7 +40,7 @@
           notEofOrValue(}, e)
           parseStatement({)
             parseStatementX({)
-              parseExpressionStatementOrDeclarationAfterModifiers({, {, null, null, null, false)
+              parseExpressionStatementOrDeclarationAfterModifiers({, {, null, null, null, null)
                 looksLikeLocalFunction(e)
                 parseExpressionStatement({)
                   parseExpression({)
diff --git a/pkg/front_end/parser_testcases/general/for.dart.intertwined.expect b/pkg/front_end/parser_testcases/general/for.dart.intertwined.expect
index e71f836..007c484 100644
--- a/pkg/front_end/parser_testcases/general/for.dart.intertwined.expect
+++ b/pkg/front_end/parser_testcases/general/for.dart.intertwined.expect
@@ -31,9 +31,9 @@
             parseStatementX({)
               parseForStatement({, null)
                 listener: beginForStatement(for)
-                parseForLoopPartsStart(null, for)
-                  parseExpressionStatementOrDeclaration((, true)
-                    parseExpressionStatementOrDeclarationAfterModifiers((, (, null, null, null, true)
+                parseForLoopPartsStart(null, for, ForPartsContext(null))
+                  parseExpressionStatementOrDeclaration((, ForPartsContext(null))
+                    parseExpressionStatementOrDeclarationAfterModifiers((, (, null, null, null, ForPartsContext(null))
                       listener: beginMetadataStar(int)
                       listener: endMetadataStar(0)
                       listener: handleIdentifier(int, typeReference)
diff --git a/pkg/front_end/parser_testcases/general/for_in.dart.intertwined.expect b/pkg/front_end/parser_testcases/general/for_in.dart.intertwined.expect
index c58995c..937b10b 100644
--- a/pkg/front_end/parser_testcases/general/for_in.dart.intertwined.expect
+++ b/pkg/front_end/parser_testcases/general/for_in.dart.intertwined.expect
@@ -31,9 +31,9 @@
             parseStatementX({)
               parseForStatement({, null)
                 listener: beginForStatement(for)
-                parseForLoopPartsStart(null, for)
-                  parseExpressionStatementOrDeclaration((, true)
-                    parseExpressionStatementOrDeclarationAfterModifiers(var, (, null, var, null, true)
+                parseForLoopPartsStart(null, for, ForPartsContext(null))
+                  parseExpressionStatementOrDeclaration((, ForPartsContext(null))
+                    parseExpressionStatementOrDeclarationAfterModifiers(var, (, null, var, null, ForPartsContext(null))
                       listener: beginMetadataStar(var)
                       listener: endMetadataStar(0)
                       listener: handleNoType(var)
diff --git a/pkg/front_end/parser_testcases/general/for_in_no_decl.dart.intertwined.expect b/pkg/front_end/parser_testcases/general/for_in_no_decl.dart.intertwined.expect
index 4fea17d..762a480 100644
--- a/pkg/front_end/parser_testcases/general/for_in_no_decl.dart.intertwined.expect
+++ b/pkg/front_end/parser_testcases/general/for_in_no_decl.dart.intertwined.expect
@@ -29,7 +29,7 @@
           notEofOrValue(}, var)
           parseStatement({)
             parseStatementX({)
-              parseExpressionStatementOrDeclarationAfterModifiers(var, {, null, var, null, false)
+              parseExpressionStatementOrDeclarationAfterModifiers(var, {, null, var, null, null)
                 looksLikeLocalFunction(i)
                 listener: beginMetadataStar(var)
                 listener: endMetadataStar(0)
@@ -50,9 +50,9 @@
             parseStatementX(;)
               parseForStatement(;, null)
                 listener: beginForStatement(for)
-                parseForLoopPartsStart(null, for)
-                  parseExpressionStatementOrDeclaration((, true)
-                    parseExpressionStatementOrDeclarationAfterModifiers((, (, null, null, null, true)
+                parseForLoopPartsStart(null, for, ForPartsContext(null))
+                  parseExpressionStatementOrDeclaration((, ForPartsContext(null))
+                    parseExpressionStatementOrDeclarationAfterModifiers((, (, null, null, null, ForPartsContext(null))
                 parseForLoopPartsMid((, null, for)
                   parseExpression(()
                     parsePrecedenceExpression((, 1, true)
diff --git a/pkg/front_end/parser_testcases/general/for_no_decl.dart.intertwined.expect b/pkg/front_end/parser_testcases/general/for_no_decl.dart.intertwined.expect
index 07adb6d..8263197 100644
--- a/pkg/front_end/parser_testcases/general/for_no_decl.dart.intertwined.expect
+++ b/pkg/front_end/parser_testcases/general/for_no_decl.dart.intertwined.expect
@@ -29,7 +29,7 @@
           notEofOrValue(}, int)
           parseStatement({)
             parseStatementX({)
-              parseExpressionStatementOrDeclarationAfterModifiers({, {, null, null, null, false)
+              parseExpressionStatementOrDeclarationAfterModifiers({, {, null, null, null, null)
                 looksLikeLocalFunction(i)
                 listener: beginMetadataStar(int)
                 listener: endMetadataStar(0)
@@ -52,9 +52,9 @@
             parseStatementX(;)
               parseForStatement(;, null)
                 listener: beginForStatement(for)
-                parseForLoopPartsStart(null, for)
-                  parseExpressionStatementOrDeclaration((, true)
-                    parseExpressionStatementOrDeclarationAfterModifiers((, (, null, null, null, true)
+                parseForLoopPartsStart(null, for, ForPartsContext(null))
+                  parseExpressionStatementOrDeclaration((, ForPartsContext(null))
+                    parseExpressionStatementOrDeclarationAfterModifiers((, (, null, null, null, ForPartsContext(null))
                 parseForLoopPartsMid((, null, for)
                   parseExpression(()
                     parsePrecedenceExpression((, 1, true)
diff --git a/pkg/front_end/parser_testcases/general/function_declaration.dart.intertwined.expect b/pkg/front_end/parser_testcases/general/function_declaration.dart.intertwined.expect
index 1413759..22b22dc 100644
--- a/pkg/front_end/parser_testcases/general/function_declaration.dart.intertwined.expect
+++ b/pkg/front_end/parser_testcases/general/function_declaration.dart.intertwined.expect
@@ -29,7 +29,7 @@
           notEofOrValue(}, local)
           parseStatement({)
             parseStatementX({)
-              parseExpressionStatementOrDeclarationAfterModifiers({, {, null, null, null, false)
+              parseExpressionStatementOrDeclarationAfterModifiers({, {, null, null, null, null)
                 looksLikeLocalFunction(local)
                 listener: beginMetadataStar(local)
                 listener: endMetadataStar(0)
diff --git a/pkg/front_end/parser_testcases/general/function_expression.dart.intertwined.expect b/pkg/front_end/parser_testcases/general/function_expression.dart.intertwined.expect
index 1cb2ded..5b4e3bf 100644
--- a/pkg/front_end/parser_testcases/general/function_expression.dart.intertwined.expect
+++ b/pkg/front_end/parser_testcases/general/function_expression.dart.intertwined.expect
@@ -29,8 +29,8 @@
           notEofOrValue(}, ()
           parseStatement({)
             parseStatementX({)
-              parseExpressionStatementOrDeclaration({, false)
-                parseExpressionStatementOrDeclarationAfterModifiers({, {, null, null, null, false)
+              parseExpressionStatementOrDeclaration({, null)
+                parseExpressionStatementOrDeclarationAfterModifiers({, {, null, null, null, null)
                   looksLikeLocalFunction(()
                   parseExpressionStatement({)
                     parseExpression({)
diff --git a/pkg/front_end/parser_testcases/general/issue_45120.dart.intertwined.expect b/pkg/front_end/parser_testcases/general/issue_45120.dart.intertwined.expect
index b4631e2..7a2569a 100644
--- a/pkg/front_end/parser_testcases/general/issue_45120.dart.intertwined.expect
+++ b/pkg/front_end/parser_testcases/general/issue_45120.dart.intertwined.expect
@@ -172,7 +172,7 @@
           notEofOrValue(}, @)
           parseStatement({)
             parseStatementX({)
-              parseExpressionStatementOrDeclaration({, false)
+              parseExpressionStatementOrDeclaration({, null)
                 parseMetadataStar({)
                   listener: beginMetadataStar(@)
                   parseMetadata({)
@@ -198,7 +198,7 @@
                           listener: endArguments(1, (, ))
                     listener: endMetadata(@, null, void)
                   listener: endMetadataStar(1)
-                parseExpressionStatementOrDeclarationAfterModifiers(), {, null, null, null, false)
+                parseExpressionStatementOrDeclarationAfterModifiers(), {, null, null, null, null)
                   looksLikeLocalFunction(f)
                   listener: beginFunctionType(void)
                   listener: beginTypeVariables(<)
diff --git a/pkg/front_end/parser_testcases/general/issue_45703.dart.intertwined.expect b/pkg/front_end/parser_testcases/general/issue_45703.dart.intertwined.expect
index ef31b04..b914ab3 100644
--- a/pkg/front_end/parser_testcases/general/issue_45703.dart.intertwined.expect
+++ b/pkg/front_end/parser_testcases/general/issue_45703.dart.intertwined.expect
@@ -269,8 +269,8 @@
           notEofOrValue(}, Function)
           parseStatement({)
             parseStatementX({)
-              parseExpressionStatementOrDeclaration({, false)
-                parseExpressionStatementOrDeclarationAfterModifiers({, {, null, null, null, false)
+              parseExpressionStatementOrDeclaration({, null)
+                parseExpressionStatementOrDeclarationAfterModifiers({, {, null, null, null, null)
                   looksLikeLocalFunction(ok)
                   listener: beginMetadataStar(Function)
                   listener: endMetadataStar(0)
@@ -291,8 +291,8 @@
           notEofOrValue(}, dynamic)
           parseStatement(;)
             parseStatementX(;)
-              parseExpressionStatementOrDeclaration(;, false)
-                parseExpressionStatementOrDeclarationAfterModifiers(;, ;, null, null, null, false)
+              parseExpressionStatementOrDeclaration(;, null)
+                parseExpressionStatementOrDeclarationAfterModifiers(;, ;, null, null, null, null)
                   looksLikeLocalFunction(okToo)
                   listener: beginMetadataStar(dynamic)
                   listener: endMetadataStar(0)
diff --git a/pkg/front_end/parser_testcases/general/issue_45848_01.dart.intertwined.expect b/pkg/front_end/parser_testcases/general/issue_45848_01.dart.intertwined.expect
index 16cf5a7..87b74a9 100644
--- a/pkg/front_end/parser_testcases/general/issue_45848_01.dart.intertwined.expect
+++ b/pkg/front_end/parser_testcases/general/issue_45848_01.dart.intertwined.expect
@@ -52,7 +52,7 @@
           notEofOrValue(}, print)
           parseStatement({)
             parseStatementX({)
-              parseExpressionStatementOrDeclarationAfterModifiers({, {, null, null, null, false)
+              parseExpressionStatementOrDeclarationAfterModifiers({, {, null, null, null, null)
                 looksLikeLocalFunction(print)
                 parseExpressionStatement({)
                   parseExpression({)
@@ -173,7 +173,7 @@
           notEofOrValue(}, f)
           parseStatement({)
             parseStatementX({)
-              parseExpressionStatementOrDeclarationAfterModifiers({, {, null, null, null, false)
+              parseExpressionStatementOrDeclarationAfterModifiers({, {, null, null, null, null)
                 looksLikeLocalFunction(f)
                 parseExpressionStatement({)
                   parseExpression({)
@@ -291,7 +291,7 @@
           notEofOrValue(}, g)
           parseStatement({)
             parseStatementX({)
-              parseExpressionStatementOrDeclarationAfterModifiers({, {, null, null, null, false)
+              parseExpressionStatementOrDeclarationAfterModifiers({, {, null, null, null, null)
                 looksLikeLocalFunction(g)
                 parseExpressionStatement({)
                   parseExpression({)
diff --git a/pkg/front_end/parser_testcases/general/issue_45848_01_prime.dart.intertwined.expect b/pkg/front_end/parser_testcases/general/issue_45848_01_prime.dart.intertwined.expect
index 4c8a941..c3ca3d3 100644
--- a/pkg/front_end/parser_testcases/general/issue_45848_01_prime.dart.intertwined.expect
+++ b/pkg/front_end/parser_testcases/general/issue_45848_01_prime.dart.intertwined.expect
@@ -52,7 +52,7 @@
           notEofOrValue(}, print)
           parseStatement({)
             parseStatementX({)
-              parseExpressionStatementOrDeclarationAfterModifiers({, {, null, null, null, false)
+              parseExpressionStatementOrDeclarationAfterModifiers({, {, null, null, null, null)
                 looksLikeLocalFunction(print)
                 parseExpressionStatement({)
                   parseExpression({)
@@ -173,7 +173,7 @@
           notEofOrValue(}, f)
           parseStatement({)
             parseStatementX({)
-              parseExpressionStatementOrDeclarationAfterModifiers({, {, null, null, null, false)
+              parseExpressionStatementOrDeclarationAfterModifiers({, {, null, null, null, null)
                 looksLikeLocalFunction(f)
                 parseExpressionStatement({)
                   parseExpression({)
@@ -300,7 +300,7 @@
           notEofOrValue(}, g)
           parseStatement({)
             parseStatementX({)
-              parseExpressionStatementOrDeclarationAfterModifiers({, {, null, null, null, false)
+              parseExpressionStatementOrDeclarationAfterModifiers({, {, null, null, null, null)
                 looksLikeLocalFunction(g)
                 parseExpressionStatement({)
                   parseExpression({)
diff --git a/pkg/front_end/parser_testcases/general/issue_45848_02.dart.intertwined.expect b/pkg/front_end/parser_testcases/general/issue_45848_02.dart.intertwined.expect
index a5f25b7..b3f8fb2 100644
--- a/pkg/front_end/parser_testcases/general/issue_45848_02.dart.intertwined.expect
+++ b/pkg/front_end/parser_testcases/general/issue_45848_02.dart.intertwined.expect
@@ -52,7 +52,7 @@
           notEofOrValue(}, print)
           parseStatement({)
             parseStatementX({)
-              parseExpressionStatementOrDeclarationAfterModifiers({, {, null, null, null, false)
+              parseExpressionStatementOrDeclarationAfterModifiers({, {, null, null, null, null)
                 looksLikeLocalFunction(print)
                 parseExpressionStatement({)
                   parseExpression({)
@@ -173,7 +173,7 @@
           notEofOrValue(}, f)
           parseStatement({)
             parseStatementX({)
-              parseExpressionStatementOrDeclarationAfterModifiers({, {, null, null, null, false)
+              parseExpressionStatementOrDeclarationAfterModifiers({, {, null, null, null, null)
                 looksLikeLocalFunction(f)
                 parseExpressionStatement({)
                   parseExpression({)
@@ -292,7 +292,7 @@
           notEofOrValue(}, g)
           parseStatement({)
             parseStatementX({)
-              parseExpressionStatementOrDeclarationAfterModifiers({, {, null, null, null, false)
+              parseExpressionStatementOrDeclarationAfterModifiers({, {, null, null, null, null)
                 looksLikeLocalFunction(g)
                 parseExpressionStatement({)
                   parseExpression({)
diff --git a/pkg/front_end/parser_testcases/general/issue_45848_02_prime.dart.intertwined.expect b/pkg/front_end/parser_testcases/general/issue_45848_02_prime.dart.intertwined.expect
index 9fccf81..f1f40c1 100644
--- a/pkg/front_end/parser_testcases/general/issue_45848_02_prime.dart.intertwined.expect
+++ b/pkg/front_end/parser_testcases/general/issue_45848_02_prime.dart.intertwined.expect
@@ -52,7 +52,7 @@
           notEofOrValue(}, print)
           parseStatement({)
             parseStatementX({)
-              parseExpressionStatementOrDeclarationAfterModifiers({, {, null, null, null, false)
+              parseExpressionStatementOrDeclarationAfterModifiers({, {, null, null, null, null)
                 looksLikeLocalFunction(print)
                 parseExpressionStatement({)
                   parseExpression({)
@@ -173,7 +173,7 @@
           notEofOrValue(}, f)
           parseStatement({)
             parseStatementX({)
-              parseExpressionStatementOrDeclarationAfterModifiers({, {, null, null, null, false)
+              parseExpressionStatementOrDeclarationAfterModifiers({, {, null, null, null, null)
                 looksLikeLocalFunction(f)
                 parseExpressionStatement({)
                   parseExpression({)
@@ -300,7 +300,7 @@
           notEofOrValue(}, g)
           parseStatement({)
             parseStatementX({)
-              parseExpressionStatementOrDeclarationAfterModifiers({, {, null, null, null, false)
+              parseExpressionStatementOrDeclarationAfterModifiers({, {, null, null, null, null)
                 looksLikeLocalFunction(g)
                 parseExpressionStatement({)
                   parseExpression({)
diff --git a/pkg/front_end/parser_testcases/general/issue_45848_03.dart.intertwined.expect b/pkg/front_end/parser_testcases/general/issue_45848_03.dart.intertwined.expect
index f4edee7..5b8efa6 100644
--- a/pkg/front_end/parser_testcases/general/issue_45848_03.dart.intertwined.expect
+++ b/pkg/front_end/parser_testcases/general/issue_45848_03.dart.intertwined.expect
@@ -52,7 +52,7 @@
           notEofOrValue(}, print)
           parseStatement({)
             parseStatementX({)
-              parseExpressionStatementOrDeclarationAfterModifiers({, {, null, null, null, false)
+              parseExpressionStatementOrDeclarationAfterModifiers({, {, null, null, null, null)
                 looksLikeLocalFunction(print)
                 parseExpressionStatement({)
                   parseExpression({)
@@ -185,7 +185,7 @@
           notEofOrValue(}, f)
           parseStatement({)
             parseStatementX({)
-              parseExpressionStatementOrDeclarationAfterModifiers({, {, null, null, null, false)
+              parseExpressionStatementOrDeclarationAfterModifiers({, {, null, null, null, null)
                 looksLikeLocalFunction(f)
                 parseExpressionStatement({)
                   parseExpression({)
@@ -329,7 +329,7 @@
           notEofOrValue(}, g)
           parseStatement({)
             parseStatementX({)
-              parseExpressionStatementOrDeclarationAfterModifiers({, {, null, null, null, false)
+              parseExpressionStatementOrDeclarationAfterModifiers({, {, null, null, null, null)
                 looksLikeLocalFunction(g)
                 parseExpressionStatement({)
                   parseExpression({)
diff --git a/pkg/front_end/parser_testcases/general/issue_45848_03_prime.dart.intertwined.expect b/pkg/front_end/parser_testcases/general/issue_45848_03_prime.dart.intertwined.expect
index 37ea9f9..b8a7446 100644
--- a/pkg/front_end/parser_testcases/general/issue_45848_03_prime.dart.intertwined.expect
+++ b/pkg/front_end/parser_testcases/general/issue_45848_03_prime.dart.intertwined.expect
@@ -52,7 +52,7 @@
           notEofOrValue(}, print)
           parseStatement({)
             parseStatementX({)
-              parseExpressionStatementOrDeclarationAfterModifiers({, {, null, null, null, false)
+              parseExpressionStatementOrDeclarationAfterModifiers({, {, null, null, null, null)
                 looksLikeLocalFunction(print)
                 parseExpressionStatement({)
                   parseExpression({)
@@ -185,7 +185,7 @@
           notEofOrValue(}, f)
           parseStatement({)
             parseStatementX({)
-              parseExpressionStatementOrDeclarationAfterModifiers({, {, null, null, null, false)
+              parseExpressionStatementOrDeclarationAfterModifiers({, {, null, null, null, null)
                 looksLikeLocalFunction(f)
                 parseExpressionStatement({)
                   parseExpression({)
@@ -337,7 +337,7 @@
           notEofOrValue(}, g)
           parseStatement({)
             parseStatementX({)
-              parseExpressionStatementOrDeclarationAfterModifiers({, {, null, null, null, false)
+              parseExpressionStatementOrDeclarationAfterModifiers({, {, null, null, null, null)
                 looksLikeLocalFunction(g)
                 parseExpressionStatement({)
                   parseExpression({)
diff --git a/pkg/front_end/parser_testcases/general/issue_45848_04.dart.intertwined.expect b/pkg/front_end/parser_testcases/general/issue_45848_04.dart.intertwined.expect
index c2d87c4..bb3a329 100644
--- a/pkg/front_end/parser_testcases/general/issue_45848_04.dart.intertwined.expect
+++ b/pkg/front_end/parser_testcases/general/issue_45848_04.dart.intertwined.expect
@@ -63,7 +63,7 @@
           notEofOrValue(}, f)
           parseStatement({)
             parseStatementX({)
-              parseExpressionStatementOrDeclarationAfterModifiers({, {, null, null, null, false)
+              parseExpressionStatementOrDeclarationAfterModifiers({, {, null, null, null, null)
                 looksLikeLocalFunction(f)
                 parseExpressionStatement({)
                   parseExpression({)
diff --git a/pkg/front_end/parser_testcases/general/issue_45848_04_prime.dart.intertwined.expect b/pkg/front_end/parser_testcases/general/issue_45848_04_prime.dart.intertwined.expect
index 31583f3..f102562 100644
--- a/pkg/front_end/parser_testcases/general/issue_45848_04_prime.dart.intertwined.expect
+++ b/pkg/front_end/parser_testcases/general/issue_45848_04_prime.dart.intertwined.expect
@@ -63,7 +63,7 @@
           notEofOrValue(}, f)
           parseStatement({)
             parseStatementX({)
-              parseExpressionStatementOrDeclarationAfterModifiers({, {, null, null, null, false)
+              parseExpressionStatementOrDeclarationAfterModifiers({, {, null, null, null, null)
                 looksLikeLocalFunction(f)
                 parseExpressionStatement({)
                   parseExpression({)
diff --git a/pkg/front_end/parser_testcases/general/issue_45848_05.dart.intertwined.expect b/pkg/front_end/parser_testcases/general/issue_45848_05.dart.intertwined.expect
index 75525e9..d2f5029 100644
--- a/pkg/front_end/parser_testcases/general/issue_45848_05.dart.intertwined.expect
+++ b/pkg/front_end/parser_testcases/general/issue_45848_05.dart.intertwined.expect
@@ -52,7 +52,7 @@
           notEofOrValue(}, print)
           parseStatement({)
             parseStatementX({)
-              parseExpressionStatementOrDeclarationAfterModifiers({, {, null, null, null, false)
+              parseExpressionStatementOrDeclarationAfterModifiers({, {, null, null, null, null)
                 looksLikeLocalFunction(print)
                 parseExpressionStatement({)
                   parseExpression({)
@@ -185,7 +185,7 @@
           notEofOrValue(}, f)
           parseStatement({)
             parseStatementX({)
-              parseExpressionStatementOrDeclarationAfterModifiers({, {, null, null, null, false)
+              parseExpressionStatementOrDeclarationAfterModifiers({, {, null, null, null, null)
                 looksLikeLocalFunction(f)
                 parseExpressionStatement({)
                   parseExpression({)
@@ -332,7 +332,7 @@
           notEofOrValue(}, f)
           parseStatement({)
             parseStatementX({)
-              parseExpressionStatementOrDeclarationAfterModifiers({, {, null, null, null, false)
+              parseExpressionStatementOrDeclarationAfterModifiers({, {, null, null, null, null)
                 looksLikeLocalFunction(f)
                 parseExpressionStatement({)
                   parseExpression({)
@@ -422,7 +422,7 @@
           notEofOrValue(}, g1)
           parseStatement({)
             parseStatementX({)
-              parseExpressionStatementOrDeclarationAfterModifiers({, {, null, null, null, false)
+              parseExpressionStatementOrDeclarationAfterModifiers({, {, null, null, null, null)
                 looksLikeLocalFunction(g1)
                 parseExpressionStatement({)
                   parseExpression({)
@@ -471,7 +471,7 @@
           notEofOrValue(}, g2)
           parseStatement(;)
             parseStatementX(;)
-              parseExpressionStatementOrDeclarationAfterModifiers(;, ;, null, null, null, false)
+              parseExpressionStatementOrDeclarationAfterModifiers(;, ;, null, null, null, null)
                 looksLikeLocalFunction(g2)
                 parseExpressionStatement(;)
                   parseExpression(;)
diff --git a/pkg/front_end/parser_testcases/general/issue_45848_06.dart.intertwined.expect b/pkg/front_end/parser_testcases/general/issue_45848_06.dart.intertwined.expect
index e7e65a4..ac9b486 100644
--- a/pkg/front_end/parser_testcases/general/issue_45848_06.dart.intertwined.expect
+++ b/pkg/front_end/parser_testcases/general/issue_45848_06.dart.intertwined.expect
@@ -52,7 +52,7 @@
           notEofOrValue(}, print)
           parseStatement({)
             parseStatementX({)
-              parseExpressionStatementOrDeclarationAfterModifiers({, {, null, null, null, false)
+              parseExpressionStatementOrDeclarationAfterModifiers({, {, null, null, null, null)
                 looksLikeLocalFunction(print)
                 parseExpressionStatement({)
                   parseExpression({)
@@ -184,7 +184,7 @@
           notEofOrValue(}, f)
           parseStatement({)
             parseStatementX({)
-              parseExpressionStatementOrDeclarationAfterModifiers({, {, null, null, null, false)
+              parseExpressionStatementOrDeclarationAfterModifiers({, {, null, null, null, null)
                 looksLikeLocalFunction(f)
                 parseExpressionStatement({)
                   parseExpression({)
@@ -293,7 +293,7 @@
           notEofOrValue(}, g)
           parseStatement({)
             parseStatementX({)
-              parseExpressionStatementOrDeclarationAfterModifiers({, {, null, null, null, false)
+              parseExpressionStatementOrDeclarationAfterModifiers({, {, null, null, null, null)
                 looksLikeLocalFunction(g)
                 parseExpressionStatement({)
                   parseExpression({)
diff --git a/pkg/front_end/parser_testcases/general/issue_45848_07.dart.intertwined.expect b/pkg/front_end/parser_testcases/general/issue_45848_07.dart.intertwined.expect
index 98b9014..a360e74 100644
--- a/pkg/front_end/parser_testcases/general/issue_45848_07.dart.intertwined.expect
+++ b/pkg/front_end/parser_testcases/general/issue_45848_07.dart.intertwined.expect
@@ -52,7 +52,7 @@
           notEofOrValue(}, print)
           parseStatement({)
             parseStatementX({)
-              parseExpressionStatementOrDeclarationAfterModifiers({, {, null, null, null, false)
+              parseExpressionStatementOrDeclarationAfterModifiers({, {, null, null, null, null)
                 looksLikeLocalFunction(print)
                 parseExpressionStatement({)
                   parseExpression({)
@@ -209,7 +209,7 @@
           notEofOrValue(}, f)
           parseStatement({)
             parseStatementX({)
-              parseExpressionStatementOrDeclarationAfterModifiers({, {, null, null, null, false)
+              parseExpressionStatementOrDeclarationAfterModifiers({, {, null, null, null, null)
                 looksLikeLocalFunction(f)
                 parseExpressionStatement({)
                   parseExpression({)
@@ -332,7 +332,7 @@
           notEofOrValue(}, g)
           parseStatement({)
             parseStatementX({)
-              parseExpressionStatementOrDeclarationAfterModifiers({, {, null, null, null, false)
+              parseExpressionStatementOrDeclarationAfterModifiers({, {, null, null, null, null)
                 looksLikeLocalFunction(g)
                 parseExpressionStatement({)
                   parseExpression({)
diff --git a/pkg/front_end/parser_testcases/general/issue_47008_01.dart.intertwined.expect b/pkg/front_end/parser_testcases/general/issue_47008_01.dart.intertwined.expect
index 02414f3..ab5fbf7 100644
--- a/pkg/front_end/parser_testcases/general/issue_47008_01.dart.intertwined.expect
+++ b/pkg/front_end/parser_testcases/general/issue_47008_01.dart.intertwined.expect
@@ -29,7 +29,7 @@
           notEofOrValue(}, a)
           parseStatement({)
             parseStatementX({)
-              parseExpressionStatementOrDeclarationAfterModifiers({, {, null, null, null, false)
+              parseExpressionStatementOrDeclarationAfterModifiers({, {, null, null, null, null)
                 looksLikeLocalFunction(a)
                 parseExpressionStatement({)
                   parseExpression({)
diff --git a/pkg/front_end/parser_testcases/general/issue_47008_02.dart.intertwined.expect b/pkg/front_end/parser_testcases/general/issue_47008_02.dart.intertwined.expect
index bd6c970..8d6d4c3 100644
--- a/pkg/front_end/parser_testcases/general/issue_47008_02.dart.intertwined.expect
+++ b/pkg/front_end/parser_testcases/general/issue_47008_02.dart.intertwined.expect
@@ -29,7 +29,7 @@
           notEofOrValue(}, a)
           parseStatement({)
             parseStatementX({)
-              parseExpressionStatementOrDeclarationAfterModifiers({, {, null, null, null, false)
+              parseExpressionStatementOrDeclarationAfterModifiers({, {, null, null, null, null)
                 looksLikeLocalFunction(a)
                 parseExpressionStatement({)
                   parseExpression({)
diff --git a/pkg/front_end/parser_testcases/general/issue_47009_01.dart.intertwined.expect b/pkg/front_end/parser_testcases/general/issue_47009_01.dart.intertwined.expect
index e823422..d1b5921 100644
--- a/pkg/front_end/parser_testcases/general/issue_47009_01.dart.intertwined.expect
+++ b/pkg/front_end/parser_testcases/general/issue_47009_01.dart.intertwined.expect
@@ -29,7 +29,7 @@
           notEofOrValue(}, a)
           parseStatement({)
             parseStatementX({)
-              parseExpressionStatementOrDeclarationAfterModifiers({, {, null, null, null, false)
+              parseExpressionStatementOrDeclarationAfterModifiers({, {, null, null, null, null)
                 looksLikeLocalFunction(a)
                 parseExpressionStatement({)
                   parseExpression({)
diff --git a/pkg/front_end/parser_testcases/general/issue_47009_02.dart.intertwined.expect b/pkg/front_end/parser_testcases/general/issue_47009_02.dart.intertwined.expect
index c97747b..db0cda0 100644
--- a/pkg/front_end/parser_testcases/general/issue_47009_02.dart.intertwined.expect
+++ b/pkg/front_end/parser_testcases/general/issue_47009_02.dart.intertwined.expect
@@ -29,7 +29,7 @@
           notEofOrValue(}, a)
           parseStatement({)
             parseStatementX({)
-              parseExpressionStatementOrDeclarationAfterModifiers({, {, null, null, null, false)
+              parseExpressionStatementOrDeclarationAfterModifiers({, {, null, null, null, null)
                 looksLikeLocalFunction(a)
                 parseExpressionStatement({)
                   parseExpression({)
diff --git a/pkg/front_end/parser_testcases/general/issue_47009_03.dart.intertwined.expect b/pkg/front_end/parser_testcases/general/issue_47009_03.dart.intertwined.expect
index 2c56e4e..bf2114a 100644
--- a/pkg/front_end/parser_testcases/general/issue_47009_03.dart.intertwined.expect
+++ b/pkg/front_end/parser_testcases/general/issue_47009_03.dart.intertwined.expect
@@ -29,7 +29,7 @@
           notEofOrValue(}, a)
           parseStatement({)
             parseStatementX({)
-              parseExpressionStatementOrDeclarationAfterModifiers({, {, null, null, null, false)
+              parseExpressionStatementOrDeclarationAfterModifiers({, {, null, null, null, null)
                 looksLikeLocalFunction(a)
                 parseExpressionStatement({)
                   parseExpression({)
diff --git a/pkg/front_end/parser_testcases/general/missing_end_bracket.dart.intertwined.expect b/pkg/front_end/parser_testcases/general/missing_end_bracket.dart.intertwined.expect
index 2fec437..b481b7a 100644
--- a/pkg/front_end/parser_testcases/general/missing_end_bracket.dart.intertwined.expect
+++ b/pkg/front_end/parser_testcases/general/missing_end_bracket.dart.intertwined.expect
@@ -29,7 +29,7 @@
           notEofOrValue(}, print)
           parseStatement({)
             parseStatementX({)
-              parseExpressionStatementOrDeclarationAfterModifiers({, {, null, null, null, false)
+              parseExpressionStatementOrDeclarationAfterModifiers({, {, null, null, null, null)
                 looksLikeLocalFunction(print)
                 parseExpressionStatement({)
                   parseExpression({)
diff --git a/pkg/front_end/parser_testcases/general/toplevel_get_called_get.dart.intertwined.expect b/pkg/front_end/parser_testcases/general/toplevel_get_called_get.dart.intertwined.expect
index a37da3f..27765cc 100644
--- a/pkg/front_end/parser_testcases/general/toplevel_get_called_get.dart.intertwined.expect
+++ b/pkg/front_end/parser_testcases/general/toplevel_get_called_get.dart.intertwined.expect
@@ -65,8 +65,8 @@
           notEofOrValue(}, throw)
           parseStatement({)
             parseStatementX({)
-              parseExpressionStatementOrDeclaration({, false)
-                parseExpressionStatementOrDeclarationAfterModifiers({, {, null, null, null, false)
+              parseExpressionStatementOrDeclaration({, null)
+                parseExpressionStatementOrDeclarationAfterModifiers({, {, null, null, null, null)
                   looksLikeLocalFunction(throw)
                   parseExpressionStatement({)
                     parseExpression({)
@@ -149,8 +149,8 @@
           notEofOrValue(}, throw)
           parseStatement({)
             parseStatementX({)
-              parseExpressionStatementOrDeclaration({, false)
-                parseExpressionStatementOrDeclarationAfterModifiers({, {, null, null, null, false)
+              parseExpressionStatementOrDeclaration({, null)
+                parseExpressionStatementOrDeclarationAfterModifiers({, {, null, null, null, null)
                   looksLikeLocalFunction(throw)
                   parseExpressionStatement({)
                     parseExpression({)
@@ -234,8 +234,8 @@
           notEofOrValue(}, throw)
           parseStatement({)
             parseStatementX({)
-              parseExpressionStatementOrDeclaration({, false)
-                parseExpressionStatementOrDeclarationAfterModifiers({, {, null, null, null, false)
+              parseExpressionStatementOrDeclaration({, null)
+                parseExpressionStatementOrDeclarationAfterModifiers({, {, null, null, null, null)
                   looksLikeLocalFunction(throw)
                   parseExpressionStatement({)
                     parseExpression({)
@@ -319,8 +319,8 @@
           notEofOrValue(}, throw)
           parseStatement({)
             parseStatementX({)
-              parseExpressionStatementOrDeclaration({, false)
-                parseExpressionStatementOrDeclarationAfterModifiers({, {, null, null, null, false)
+              parseExpressionStatementOrDeclaration({, null)
+                parseExpressionStatementOrDeclarationAfterModifiers({, {, null, null, null, null)
                   looksLikeLocalFunction(throw)
                   parseExpressionStatement({)
                     parseExpression({)
diff --git a/pkg/front_end/parser_testcases/nnbd/chained_call_01.dart.intertwined.expect b/pkg/front_end/parser_testcases/nnbd/chained_call_01.dart.intertwined.expect
index 96a8d67..29edd5a 100644
--- a/pkg/front_end/parser_testcases/nnbd/chained_call_01.dart.intertwined.expect
+++ b/pkg/front_end/parser_testcases/nnbd/chained_call_01.dart.intertwined.expect
@@ -40,7 +40,7 @@
           notEofOrValue(}, e)
           parseStatement({)
             parseStatementX({)
-              parseExpressionStatementOrDeclarationAfterModifiers({, {, null, null, null, false)
+              parseExpressionStatementOrDeclarationAfterModifiers({, {, null, null, null, null)
                 looksLikeLocalFunction(e)
                 parseExpressionStatement({)
                   parseExpression({)
diff --git a/pkg/front_end/parser_testcases/nnbd/chained_call_02.dart.intertwined.expect b/pkg/front_end/parser_testcases/nnbd/chained_call_02.dart.intertwined.expect
index 115149e..3dd4671 100644
--- a/pkg/front_end/parser_testcases/nnbd/chained_call_02.dart.intertwined.expect
+++ b/pkg/front_end/parser_testcases/nnbd/chained_call_02.dart.intertwined.expect
@@ -40,7 +40,7 @@
           notEofOrValue(}, e)
           parseStatement({)
             parseStatementX({)
-              parseExpressionStatementOrDeclarationAfterModifiers({, {, null, null, null, false)
+              parseExpressionStatementOrDeclarationAfterModifiers({, {, null, null, null, null)
                 looksLikeLocalFunction(e)
                 parseExpressionStatement({)
                   parseExpression({)
diff --git a/pkg/front_end/parser_testcases/nnbd/chained_call_03.dart.intertwined.expect b/pkg/front_end/parser_testcases/nnbd/chained_call_03.dart.intertwined.expect
index 69052ee..cadd54f 100644
--- a/pkg/front_end/parser_testcases/nnbd/chained_call_03.dart.intertwined.expect
+++ b/pkg/front_end/parser_testcases/nnbd/chained_call_03.dart.intertwined.expect
@@ -40,7 +40,7 @@
           notEofOrValue(}, e)
           parseStatement({)
             parseStatementX({)
-              parseExpressionStatementOrDeclarationAfterModifiers({, {, null, null, null, false)
+              parseExpressionStatementOrDeclarationAfterModifiers({, {, null, null, null, null)
                 looksLikeLocalFunction(e)
                 parseExpressionStatement({)
                   parseExpression({)
diff --git a/pkg/front_end/parser_testcases/nnbd/chained_call_04.dart.intertwined.expect b/pkg/front_end/parser_testcases/nnbd/chained_call_04.dart.intertwined.expect
index 5a3d80b..5971d1e 100644
--- a/pkg/front_end/parser_testcases/nnbd/chained_call_04.dart.intertwined.expect
+++ b/pkg/front_end/parser_testcases/nnbd/chained_call_04.dart.intertwined.expect
@@ -40,7 +40,7 @@
           notEofOrValue(}, e)
           parseStatement({)
             parseStatementX({)
-              parseExpressionStatementOrDeclarationAfterModifiers({, {, null, null, null, false)
+              parseExpressionStatementOrDeclarationAfterModifiers({, {, null, null, null, null)
                 looksLikeLocalFunction(e)
                 parseExpressionStatement({)
                   parseExpression({)
diff --git a/pkg/front_end/parser_testcases/nnbd/chained_call_05.dart.intertwined.expect b/pkg/front_end/parser_testcases/nnbd/chained_call_05.dart.intertwined.expect
index 668b441..d54a621 100644
--- a/pkg/front_end/parser_testcases/nnbd/chained_call_05.dart.intertwined.expect
+++ b/pkg/front_end/parser_testcases/nnbd/chained_call_05.dart.intertwined.expect
@@ -40,8 +40,8 @@
           notEofOrValue(}, ()
           parseStatement({)
             parseStatementX({)
-              parseExpressionStatementOrDeclaration({, false)
-                parseExpressionStatementOrDeclarationAfterModifiers({, {, null, null, null, false)
+              parseExpressionStatementOrDeclaration({, null)
+                parseExpressionStatementOrDeclarationAfterModifiers({, {, null, null, null, null)
                   looksLikeLocalFunction(()
                   parseExpressionStatement({)
                     parseExpression({)
@@ -92,8 +92,8 @@
           notEofOrValue(}, ()
           parseStatement(;)
             parseStatementX(;)
-              parseExpressionStatementOrDeclaration(;, false)
-                parseExpressionStatementOrDeclarationAfterModifiers(;, ;, null, null, null, false)
+              parseExpressionStatementOrDeclaration(;, null)
+                parseExpressionStatementOrDeclarationAfterModifiers(;, ;, null, null, null, null)
                   looksLikeLocalFunction(()
                   parseExpressionStatement(;)
                     parseExpression(;)
diff --git a/pkg/front_end/parser_testcases/nnbd/chained_call_06.dart.intertwined.expect b/pkg/front_end/parser_testcases/nnbd/chained_call_06.dart.intertwined.expect
index e6a48a4..ed97a48 100644
--- a/pkg/front_end/parser_testcases/nnbd/chained_call_06.dart.intertwined.expect
+++ b/pkg/front_end/parser_testcases/nnbd/chained_call_06.dart.intertwined.expect
@@ -40,8 +40,8 @@
           notEofOrValue(}, ()
           parseStatement({)
             parseStatementX({)
-              parseExpressionStatementOrDeclaration({, false)
-                parseExpressionStatementOrDeclarationAfterModifiers({, {, null, null, null, false)
+              parseExpressionStatementOrDeclaration({, null)
+                parseExpressionStatementOrDeclarationAfterModifiers({, {, null, null, null, null)
                   looksLikeLocalFunction(()
                   parseExpressionStatement({)
                     parseExpression({)
@@ -99,8 +99,8 @@
           notEofOrValue(}, ()
           parseStatement(;)
             parseStatementX(;)
-              parseExpressionStatementOrDeclaration(;, false)
-                parseExpressionStatementOrDeclarationAfterModifiers(;, ;, null, null, null, false)
+              parseExpressionStatementOrDeclaration(;, null)
+                parseExpressionStatementOrDeclarationAfterModifiers(;, ;, null, null, null, null)
                   looksLikeLocalFunction(()
                   parseExpressionStatement(;)
                     parseExpression(;)
diff --git a/pkg/front_end/parser_testcases/nnbd/chained_call_07.dart.intertwined.expect b/pkg/front_end/parser_testcases/nnbd/chained_call_07.dart.intertwined.expect
index f87b938..0d9261a 100644
--- a/pkg/front_end/parser_testcases/nnbd/chained_call_07.dart.intertwined.expect
+++ b/pkg/front_end/parser_testcases/nnbd/chained_call_07.dart.intertwined.expect
@@ -40,7 +40,7 @@
           notEofOrValue(}, e)
           parseStatement({)
             parseStatementX({)
-              parseExpressionStatementOrDeclarationAfterModifiers({, {, null, null, null, false)
+              parseExpressionStatementOrDeclarationAfterModifiers({, {, null, null, null, null)
                 looksLikeLocalFunction(e)
                 parseExpressionStatement({)
                   parseExpression({)
diff --git a/pkg/front_end/parser_testcases/nnbd/chained_call_08.dart.intertwined.expect b/pkg/front_end/parser_testcases/nnbd/chained_call_08.dart.intertwined.expect
index 100b30b..430fd1a 100644
--- a/pkg/front_end/parser_testcases/nnbd/chained_call_08.dart.intertwined.expect
+++ b/pkg/front_end/parser_testcases/nnbd/chained_call_08.dart.intertwined.expect
@@ -40,7 +40,7 @@
           notEofOrValue(}, e)
           parseStatement({)
             parseStatementX({)
-              parseExpressionStatementOrDeclarationAfterModifiers({, {, null, null, null, false)
+              parseExpressionStatementOrDeclarationAfterModifiers({, {, null, null, null, null)
                 looksLikeLocalFunction(e)
                 parseExpressionStatement({)
                   parseExpression({)
diff --git a/pkg/front_end/parser_testcases/nnbd/chained_call_with_index_01.dart.dart.intertwined.expect b/pkg/front_end/parser_testcases/nnbd/chained_call_with_index_01.dart.dart.intertwined.expect
index 03b5b3a..ead9c0c 100644
--- a/pkg/front_end/parser_testcases/nnbd/chained_call_with_index_01.dart.dart.intertwined.expect
+++ b/pkg/front_end/parser_testcases/nnbd/chained_call_with_index_01.dart.dart.intertwined.expect
@@ -40,7 +40,7 @@
           notEofOrValue(}, e)
           parseStatement({)
             parseStatementX({)
-              parseExpressionStatementOrDeclarationAfterModifiers({, {, null, null, null, false)
+              parseExpressionStatementOrDeclarationAfterModifiers({, {, null, null, null, null)
                 looksLikeLocalFunction(e)
                 parseExpressionStatement({)
                   parseExpression({)
@@ -99,7 +99,7 @@
           notEofOrValue(}, e)
           parseStatement(;)
             parseStatementX(;)
-              parseExpressionStatementOrDeclarationAfterModifiers(;, ;, null, null, null, false)
+              parseExpressionStatementOrDeclarationAfterModifiers(;, ;, null, null, null, null)
                 looksLikeLocalFunction(e)
                 parseExpressionStatement(;)
                   parseExpression(;)
diff --git a/pkg/front_end/parser_testcases/nnbd/error_recovery/late_without_var_etc.dart.intertwined.expect b/pkg/front_end/parser_testcases/nnbd/error_recovery/late_without_var_etc.dart.intertwined.expect
index dc08aae..b3436fa 100644
--- a/pkg/front_end/parser_testcases/nnbd/error_recovery/late_without_var_etc.dart.intertwined.expect
+++ b/pkg/front_end/parser_testcases/nnbd/error_recovery/late_without_var_etc.dart.intertwined.expect
@@ -28,8 +28,8 @@
           notEofOrValue(}, late)
           parseStatement({)
             parseStatementX({)
-              parseExpressionStatementOrDeclaration({, false)
-                parseExpressionStatementOrDeclarationAfterModifiers(late, {, late, null, null, false)
+              parseExpressionStatementOrDeclaration({, null)
+                parseExpressionStatementOrDeclarationAfterModifiers(late, {, late, null, null, null)
                   looksLikeLocalFunction(x)
                   reportRecoverableError(x, MissingConstFinalVarOrType)
                     listener: handleRecoverableError(MissingConstFinalVarOrType, x, x)
@@ -140,8 +140,8 @@
                   notEofOrValue(}, late)
                   parseStatement({)
                     parseStatementX({)
-                      parseExpressionStatementOrDeclaration({, false)
-                        parseExpressionStatementOrDeclarationAfterModifiers(late, {, late, null, null, false)
+                      parseExpressionStatementOrDeclaration({, null)
+                        parseExpressionStatementOrDeclarationAfterModifiers(late, {, late, null, null, null)
                           looksLikeLocalFunction(x)
                           reportRecoverableError(x, MissingConstFinalVarOrType)
                             listener: handleRecoverableError(MissingConstFinalVarOrType, x, x)
@@ -192,8 +192,8 @@
                   notEofOrValue(}, late)
                   parseStatement({)
                     parseStatementX({)
-                      parseExpressionStatementOrDeclaration({, false)
-                        parseExpressionStatementOrDeclarationAfterModifiers(late, {, late, null, null, false)
+                      parseExpressionStatementOrDeclaration({, null)
+                        parseExpressionStatementOrDeclarationAfterModifiers(late, {, late, null, null, null)
                           looksLikeLocalFunction(x)
                           reportRecoverableError(x, MissingConstFinalVarOrType)
                             listener: handleRecoverableError(MissingConstFinalVarOrType, x, x)
diff --git a/pkg/front_end/parser_testcases/nnbd/issue_39286.dart.intertwined.expect b/pkg/front_end/parser_testcases/nnbd/issue_39286.dart.intertwined.expect
index f18ffcf..aff6bab 100644
--- a/pkg/front_end/parser_testcases/nnbd/issue_39286.dart.intertwined.expect
+++ b/pkg/front_end/parser_testcases/nnbd/issue_39286.dart.intertwined.expect
@@ -40,7 +40,7 @@
           notEofOrValue(}, x)
           parseStatement({)
             parseStatementX({)
-              parseExpressionStatementOrDeclarationAfterModifiers({, {, null, null, null, false)
+              parseExpressionStatementOrDeclarationAfterModifiers({, {, null, null, null, null)
                 looksLikeLocalFunction(x)
                 parseExpressionStatement({)
                   parseExpression({)
diff --git a/pkg/front_end/parser_testcases/nnbd/issue_39286_2.dart.intertwined.expect b/pkg/front_end/parser_testcases/nnbd/issue_39286_2.dart.intertwined.expect
index 66561d9..ded0c9c 100644
--- a/pkg/front_end/parser_testcases/nnbd/issue_39286_2.dart.intertwined.expect
+++ b/pkg/front_end/parser_testcases/nnbd/issue_39286_2.dart.intertwined.expect
@@ -40,7 +40,7 @@
           notEofOrValue(}, x)
           parseStatement({)
             parseStatementX({)
-              parseExpressionStatementOrDeclarationAfterModifiers({, {, null, null, null, false)
+              parseExpressionStatementOrDeclarationAfterModifiers({, {, null, null, null, null)
                 looksLikeLocalFunction(x)
                 parseExpressionStatement({)
                   parseExpression({)
diff --git a/pkg/front_end/parser_testcases/nnbd/issue_39286_2_prime.dart.intertwined.expect b/pkg/front_end/parser_testcases/nnbd/issue_39286_2_prime.dart.intertwined.expect
index c16692e..d53d81c 100644
--- a/pkg/front_end/parser_testcases/nnbd/issue_39286_2_prime.dart.intertwined.expect
+++ b/pkg/front_end/parser_testcases/nnbd/issue_39286_2_prime.dart.intertwined.expect
@@ -40,7 +40,7 @@
           notEofOrValue(}, x)
           parseStatement({)
             parseStatementX({)
-              parseExpressionStatementOrDeclarationAfterModifiers({, {, null, null, null, false)
+              parseExpressionStatementOrDeclarationAfterModifiers({, {, null, null, null, null)
                 looksLikeLocalFunction(x)
                 parseExpressionStatement({)
                   parseExpression({)
diff --git a/pkg/front_end/parser_testcases/nnbd/issue_39286_prime.dart.intertwined.expect b/pkg/front_end/parser_testcases/nnbd/issue_39286_prime.dart.intertwined.expect
index 7a91e01..4fa031c 100644
--- a/pkg/front_end/parser_testcases/nnbd/issue_39286_prime.dart.intertwined.expect
+++ b/pkg/front_end/parser_testcases/nnbd/issue_39286_prime.dart.intertwined.expect
@@ -40,7 +40,7 @@
           notEofOrValue(}, x)
           parseStatement({)
             parseStatementX({)
-              parseExpressionStatementOrDeclarationAfterModifiers({, {, null, null, null, false)
+              parseExpressionStatementOrDeclarationAfterModifiers({, {, null, null, null, null)
                 looksLikeLocalFunction(x)
                 parseExpressionStatement({)
                   parseExpression({)
diff --git a/pkg/front_end/parser_testcases/nnbd/issue_39326.dart.intertwined.expect b/pkg/front_end/parser_testcases/nnbd/issue_39326.dart.intertwined.expect
index fa230b5..c9ecdbc 100644
--- a/pkg/front_end/parser_testcases/nnbd/issue_39326.dart.intertwined.expect
+++ b/pkg/front_end/parser_testcases/nnbd/issue_39326.dart.intertwined.expect
@@ -29,7 +29,7 @@
           notEofOrValue(}, var)
           parseStatement({)
             parseStatementX({)
-              parseExpressionStatementOrDeclarationAfterModifiers(var, {, null, var, null, false)
+              parseExpressionStatementOrDeclarationAfterModifiers(var, {, null, var, null, null)
                 looksLikeLocalFunction(c)
                 listener: beginMetadataStar(var)
                 listener: endMetadataStar(0)
@@ -48,7 +48,7 @@
           notEofOrValue(}, c)
           parseStatement(;)
             parseStatementX(;)
-              parseExpressionStatementOrDeclarationAfterModifiers(;, ;, null, null, null, false)
+              parseExpressionStatementOrDeclarationAfterModifiers(;, ;, null, null, null, null)
                 looksLikeLocalFunction(c)
                 parseExpressionStatement(;)
                   parseExpression(;)
@@ -86,7 +86,7 @@
           notEofOrValue(}, c)
           parseStatement(;)
             parseStatementX(;)
-              parseExpressionStatementOrDeclarationAfterModifiers(;, ;, null, null, null, false)
+              parseExpressionStatementOrDeclarationAfterModifiers(;, ;, null, null, null, null)
                 looksLikeLocalFunction(c)
                 parseExpressionStatement(;)
                   parseExpression(;)
@@ -136,7 +136,7 @@
           notEofOrValue(}, c)
           parseStatement(;)
             parseStatementX(;)
-              parseExpressionStatementOrDeclarationAfterModifiers(;, ;, null, null, null, false)
+              parseExpressionStatementOrDeclarationAfterModifiers(;, ;, null, null, null, null)
                 looksLikeLocalFunction(c)
                 parseExpressionStatement(;)
                   parseExpression(;)
diff --git a/pkg/front_end/parser_testcases/nnbd/issue_39723.dart.intertwined.expect b/pkg/front_end/parser_testcases/nnbd/issue_39723.dart.intertwined.expect
index fb7c53e..f209ebd 100644
--- a/pkg/front_end/parser_testcases/nnbd/issue_39723.dart.intertwined.expect
+++ b/pkg/front_end/parser_testcases/nnbd/issue_39723.dart.intertwined.expect
@@ -112,7 +112,7 @@
           notEofOrValue(}, A)
           parseStatement({)
             parseStatementX({)
-              parseExpressionStatementOrDeclarationAfterModifiers({, {, null, null, null, false)
+              parseExpressionStatementOrDeclarationAfterModifiers({, {, null, null, null, null)
                 looksLikeLocalFunction(a)
                 parseExpressionWithoutCascade(=)
                   parsePrecedenceExpression(=, 1, false)
@@ -145,7 +145,7 @@
           notEofOrValue(}, a)
           parseStatement(;)
             parseStatementX(;)
-              parseExpressionStatementOrDeclarationAfterModifiers(;, ;, null, null, null, false)
+              parseExpressionStatementOrDeclarationAfterModifiers(;, ;, null, null, null, null)
                 looksLikeLocalFunction(a)
                 parseExpressionStatement(;)
                   parseExpression(;)
@@ -182,7 +182,7 @@
           notEofOrValue(}, a)
           parseStatement(;)
             parseStatementX(;)
-              parseExpressionStatementOrDeclarationAfterModifiers(;, ;, null, null, null, false)
+              parseExpressionStatementOrDeclarationAfterModifiers(;, ;, null, null, null, null)
                 looksLikeLocalFunction(a)
                 parseExpressionStatement(;)
                   parseExpression(;)
@@ -215,7 +215,7 @@
           notEofOrValue(}, a)
           parseStatement(;)
             parseStatementX(;)
-              parseExpressionStatementOrDeclarationAfterModifiers(;, ;, null, null, null, false)
+              parseExpressionStatementOrDeclarationAfterModifiers(;, ;, null, null, null, null)
                 looksLikeLocalFunction(a)
                 parseExpressionStatement(;)
                   parseExpression(;)
@@ -256,7 +256,7 @@
           notEofOrValue(}, a)
           parseStatement(;)
             parseStatementX(;)
-              parseExpressionStatementOrDeclarationAfterModifiers(;, ;, null, null, null, false)
+              parseExpressionStatementOrDeclarationAfterModifiers(;, ;, null, null, null, null)
                 looksLikeLocalFunction(a)
                 parseExpressionStatement(;)
                   parseExpression(;)
diff --git a/pkg/front_end/parser_testcases/nnbd/issue_39723_prime.dart.intertwined.expect b/pkg/front_end/parser_testcases/nnbd/issue_39723_prime.dart.intertwined.expect
index 7de025f..a77cb8b 100644
--- a/pkg/front_end/parser_testcases/nnbd/issue_39723_prime.dart.intertwined.expect
+++ b/pkg/front_end/parser_testcases/nnbd/issue_39723_prime.dart.intertwined.expect
@@ -112,7 +112,7 @@
           notEofOrValue(}, A)
           parseStatement({)
             parseStatementX({)
-              parseExpressionStatementOrDeclarationAfterModifiers({, {, null, null, null, false)
+              parseExpressionStatementOrDeclarationAfterModifiers({, {, null, null, null, null)
                 looksLikeLocalFunction(a)
                 parseExpressionWithoutCascade(=)
                   parsePrecedenceExpression(=, 1, false)
@@ -145,8 +145,8 @@
           notEofOrValue(}, ()
           parseStatement(;)
             parseStatementX(;)
-              parseExpressionStatementOrDeclaration(;, false)
-                parseExpressionStatementOrDeclarationAfterModifiers(;, ;, null, null, null, false)
+              parseExpressionStatementOrDeclaration(;, null)
+                parseExpressionStatementOrDeclarationAfterModifiers(;, ;, null, null, null, null)
                   looksLikeLocalFunction(()
                   parseExpressionStatement(;)
                     parseExpression(;)
@@ -192,8 +192,8 @@
           notEofOrValue(}, ()
           parseStatement(;)
             parseStatementX(;)
-              parseExpressionStatementOrDeclaration(;, false)
-                parseExpressionStatementOrDeclarationAfterModifiers(;, ;, null, null, null, false)
+              parseExpressionStatementOrDeclaration(;, null)
+                parseExpressionStatementOrDeclarationAfterModifiers(;, ;, null, null, null, null)
                   looksLikeLocalFunction(()
                   parseExpressionStatement(;)
                     parseExpression(;)
@@ -235,8 +235,8 @@
           notEofOrValue(}, ()
           parseStatement(;)
             parseStatementX(;)
-              parseExpressionStatementOrDeclaration(;, false)
-                parseExpressionStatementOrDeclarationAfterModifiers(;, ;, null, null, null, false)
+              parseExpressionStatementOrDeclaration(;, null)
+                parseExpressionStatementOrDeclarationAfterModifiers(;, ;, null, null, null, null)
                   looksLikeLocalFunction(()
                   parseExpressionStatement(;)
                     parseExpression(;)
@@ -286,8 +286,8 @@
           notEofOrValue(}, ()
           parseStatement(;)
             parseStatementX(;)
-              parseExpressionStatementOrDeclaration(;, false)
-                parseExpressionStatementOrDeclarationAfterModifiers(;, ;, null, null, null, false)
+              parseExpressionStatementOrDeclaration(;, null)
+                parseExpressionStatementOrDeclarationAfterModifiers(;, ;, null, null, null, null)
                   looksLikeLocalFunction(()
                   parseExpressionStatement(;)
                     parseExpression(;)
diff --git a/pkg/front_end/parser_testcases/nnbd/issue_39776.dart.intertwined.expect b/pkg/front_end/parser_testcases/nnbd/issue_39776.dart.intertwined.expect
index 65accca..9fc11b2 100644
--- a/pkg/front_end/parser_testcases/nnbd/issue_39776.dart.intertwined.expect
+++ b/pkg/front_end/parser_testcases/nnbd/issue_39776.dart.intertwined.expect
@@ -135,8 +135,8 @@
           notEofOrValue(}, Function)
           parseStatement({)
             parseStatementX({)
-              parseExpressionStatementOrDeclaration({, false)
-                parseExpressionStatementOrDeclarationAfterModifiers({, {, null, null, null, false)
+              parseExpressionStatementOrDeclaration({, null)
+                parseExpressionStatementOrDeclarationAfterModifiers({, {, null, null, null, null)
                   looksLikeLocalFunction(f1)
                   parseExpressionWithoutCascade(=)
                     parsePrecedenceExpression(=, 1, false)
@@ -180,7 +180,7 @@
           notEofOrValue(}, f1)
           parseStatement(;)
             parseStatementX(;)
-              parseExpressionStatementOrDeclarationAfterModifiers(;, ;, null, null, null, false)
+              parseExpressionStatementOrDeclarationAfterModifiers(;, ;, null, null, null, null)
                 looksLikeLocalFunction(f1)
                 parseExpressionStatement(;)
                   parseExpression(;)
@@ -215,8 +215,8 @@
           notEofOrValue(}, Function)
           parseStatement(;)
             parseStatementX(;)
-              parseExpressionStatementOrDeclaration(;, false)
-                parseExpressionStatementOrDeclarationAfterModifiers(;, ;, null, null, null, false)
+              parseExpressionStatementOrDeclaration(;, null)
+                parseExpressionStatementOrDeclarationAfterModifiers(;, ;, null, null, null, null)
                   looksLikeLocalFunction(f2)
                   listener: beginMetadataStar(Function)
                   listener: endMetadataStar(0)
@@ -251,7 +251,7 @@
           notEofOrValue(}, f2)
           parseStatement(;)
             parseStatementX(;)
-              parseExpressionStatementOrDeclarationAfterModifiers(;, ;, null, null, null, false)
+              parseExpressionStatementOrDeclarationAfterModifiers(;, ;, null, null, null, null)
                 looksLikeLocalFunction(f2)
                 parseExpressionStatement(;)
                   parseExpression(;)
diff --git a/pkg/front_end/parser_testcases/nnbd/issue_39776_prime1.dart.intertwined.expect b/pkg/front_end/parser_testcases/nnbd/issue_39776_prime1.dart.intertwined.expect
index 5381dd5..0fa70fa 100644
--- a/pkg/front_end/parser_testcases/nnbd/issue_39776_prime1.dart.intertwined.expect
+++ b/pkg/front_end/parser_testcases/nnbd/issue_39776_prime1.dart.intertwined.expect
@@ -135,8 +135,8 @@
           notEofOrValue(}, Function)
           parseStatement({)
             parseStatementX({)
-              parseExpressionStatementOrDeclaration({, false)
-                parseExpressionStatementOrDeclarationAfterModifiers({, {, null, null, null, false)
+              parseExpressionStatementOrDeclaration({, null)
+                parseExpressionStatementOrDeclarationAfterModifiers({, {, null, null, null, null)
                   looksLikeLocalFunction(f1)
                   parseExpressionWithoutCascade(=)
                     parsePrecedenceExpression(=, 1, false)
@@ -180,7 +180,7 @@
           notEofOrValue(}, f1)
           parseStatement(;)
             parseStatementX(;)
-              parseExpressionStatementOrDeclarationAfterModifiers(;, ;, null, null, null, false)
+              parseExpressionStatementOrDeclarationAfterModifiers(;, ;, null, null, null, null)
                 looksLikeLocalFunction(f1)
                 parseExpressionStatement(;)
                   parseExpression(;)
@@ -215,8 +215,8 @@
           notEofOrValue(}, Function)
           parseStatement(;)
             parseStatementX(;)
-              parseExpressionStatementOrDeclaration(;, false)
-                parseExpressionStatementOrDeclarationAfterModifiers(;, ;, null, null, null, false)
+              parseExpressionStatementOrDeclaration(;, null)
+                parseExpressionStatementOrDeclarationAfterModifiers(;, ;, null, null, null, null)
                   looksLikeLocalFunction(f2)
                   listener: beginMetadataStar(Function)
                   listener: endMetadataStar(0)
@@ -251,7 +251,7 @@
           notEofOrValue(}, f2)
           parseStatement(;)
             parseStatementX(;)
-              parseExpressionStatementOrDeclarationAfterModifiers(;, ;, null, null, null, false)
+              parseExpressionStatementOrDeclarationAfterModifiers(;, ;, null, null, null, null)
                 looksLikeLocalFunction(f2)
                 parseExpressionStatement(;)
                   parseExpression(;)
diff --git a/pkg/front_end/parser_testcases/nnbd/issue_39776_prime2.dart.intertwined.expect b/pkg/front_end/parser_testcases/nnbd/issue_39776_prime2.dart.intertwined.expect
index 89c8310..c71bafd 100644
--- a/pkg/front_end/parser_testcases/nnbd/issue_39776_prime2.dart.intertwined.expect
+++ b/pkg/front_end/parser_testcases/nnbd/issue_39776_prime2.dart.intertwined.expect
@@ -135,8 +135,8 @@
           notEofOrValue(}, Function)
           parseStatement({)
             parseStatementX({)
-              parseExpressionStatementOrDeclaration({, false)
-                parseExpressionStatementOrDeclarationAfterModifiers({, {, null, null, null, false)
+              parseExpressionStatementOrDeclaration({, null)
+                parseExpressionStatementOrDeclarationAfterModifiers({, {, null, null, null, null)
                   looksLikeLocalFunction(f1)
                   parseExpressionWithoutCascade(=)
                     parsePrecedenceExpression(=, 1, false)
@@ -180,7 +180,7 @@
           notEofOrValue(}, f1)
           parseStatement(;)
             parseStatementX(;)
-              parseExpressionStatementOrDeclarationAfterModifiers(;, ;, null, null, null, false)
+              parseExpressionStatementOrDeclarationAfterModifiers(;, ;, null, null, null, null)
                 looksLikeLocalFunction(f1)
                 parseExpressionStatement(;)
                   parseExpression(;)
@@ -215,8 +215,8 @@
           notEofOrValue(}, Function)
           parseStatement(;)
             parseStatementX(;)
-              parseExpressionStatementOrDeclaration(;, false)
-                parseExpressionStatementOrDeclarationAfterModifiers(;, ;, null, null, null, false)
+              parseExpressionStatementOrDeclaration(;, null)
+                parseExpressionStatementOrDeclarationAfterModifiers(;, ;, null, null, null, null)
                   looksLikeLocalFunction(f2)
                   listener: beginMetadataStar(Function)
                   listener: endMetadataStar(0)
@@ -251,8 +251,8 @@
           notEofOrValue(}, ()
           parseStatement(;)
             parseStatementX(;)
-              parseExpressionStatementOrDeclaration(;, false)
-                parseExpressionStatementOrDeclarationAfterModifiers(;, ;, null, null, null, false)
+              parseExpressionStatementOrDeclaration(;, null)
+                parseExpressionStatementOrDeclarationAfterModifiers(;, ;, null, null, null, null)
                   looksLikeLocalFunction(()
                   parseExpressionStatement(;)
                     parseExpression(;)
diff --git a/pkg/front_end/parser_testcases/nnbd/issue_39776_prime3.dart.intertwined.expect b/pkg/front_end/parser_testcases/nnbd/issue_39776_prime3.dart.intertwined.expect
index dbdb47c..cedc2b9 100644
--- a/pkg/front_end/parser_testcases/nnbd/issue_39776_prime3.dart.intertwined.expect
+++ b/pkg/front_end/parser_testcases/nnbd/issue_39776_prime3.dart.intertwined.expect
@@ -107,8 +107,8 @@
           notEofOrValue(}, Function)
           parseStatement({)
             parseStatementX({)
-              parseExpressionStatementOrDeclaration({, false)
-                parseExpressionStatementOrDeclarationAfterModifiers({, {, null, null, null, false)
+              parseExpressionStatementOrDeclaration({, null)
+                parseExpressionStatementOrDeclarationAfterModifiers({, {, null, null, null, null)
                   looksLikeLocalFunction(f2)
                   listener: beginMetadataStar(Function)
                   listener: endMetadataStar(0)
@@ -143,7 +143,7 @@
           notEofOrValue(}, f2)
           parseStatement(;)
             parseStatementX(;)
-              parseExpressionStatementOrDeclarationAfterModifiers(;, ;, null, null, null, false)
+              parseExpressionStatementOrDeclarationAfterModifiers(;, ;, null, null, null, null)
                 looksLikeLocalFunction(f2)
                 parseExpressionStatement(;)
                   parseExpression(;)
diff --git a/pkg/front_end/parser_testcases/nnbd/issue_39776_prime4.dart.intertwined.expect b/pkg/front_end/parser_testcases/nnbd/issue_39776_prime4.dart.intertwined.expect
index 598888b..f15d0ca 100644
--- a/pkg/front_end/parser_testcases/nnbd/issue_39776_prime4.dart.intertwined.expect
+++ b/pkg/front_end/parser_testcases/nnbd/issue_39776_prime4.dart.intertwined.expect
@@ -107,8 +107,8 @@
           notEofOrValue(}, Function)
           parseStatement({)
             parseStatementX({)
-              parseExpressionStatementOrDeclaration({, false)
-                parseExpressionStatementOrDeclarationAfterModifiers({, {, null, null, null, false)
+              parseExpressionStatementOrDeclaration({, null)
+                parseExpressionStatementOrDeclarationAfterModifiers({, {, null, null, null, null)
                   looksLikeLocalFunction(f2)
                   listener: beginMetadataStar(Function)
                   listener: endMetadataStar(0)
@@ -143,7 +143,7 @@
           notEofOrValue(}, f2)
           parseStatement(;)
             parseStatementX(;)
-              parseExpressionStatementOrDeclarationAfterModifiers(;, ;, null, null, null, false)
+              parseExpressionStatementOrDeclarationAfterModifiers(;, ;, null, null, null, null)
                 looksLikeLocalFunction(f2)
                 parseExpressionStatement(;)
                   parseExpression(;)
diff --git a/pkg/front_end/parser_testcases/nnbd/issue_40267_case_01.dart.intertwined.expect b/pkg/front_end/parser_testcases/nnbd/issue_40267_case_01.dart.intertwined.expect
index 749246b..58b5def 100644
--- a/pkg/front_end/parser_testcases/nnbd/issue_40267_case_01.dart.intertwined.expect
+++ b/pkg/front_end/parser_testcases/nnbd/issue_40267_case_01.dart.intertwined.expect
@@ -136,7 +136,7 @@
                     listener: beginSwitchCase(0, 1, case)
                     parseStatement(:)
                       parseStatementX(:)
-                        parseExpressionStatementOrDeclarationAfterModifiers(:, :, null, null, null, false)
+                        parseExpressionStatementOrDeclarationAfterModifiers(:, :, null, null, null, null)
                           looksLikeLocalFunction(e)
                           parseExpressionStatement(:)
                             parseExpression(:)
diff --git a/pkg/front_end/parser_testcases/nnbd/issue_40267_case_05.dart.intertwined.expect b/pkg/front_end/parser_testcases/nnbd/issue_40267_case_05.dart.intertwined.expect
index 5aadbcc..e7a2d24 100644
--- a/pkg/front_end/parser_testcases/nnbd/issue_40267_case_05.dart.intertwined.expect
+++ b/pkg/front_end/parser_testcases/nnbd/issue_40267_case_05.dart.intertwined.expect
@@ -132,8 +132,8 @@
                                       notEofOrValue(}, 2)
                                       parseStatement({)
                                         parseStatementX({)
-                                          parseExpressionStatementOrDeclaration({, false)
-                                            parseExpressionStatementOrDeclarationAfterModifiers({, {, null, null, null, false)
+                                          parseExpressionStatementOrDeclaration({, null)
+                                            parseExpressionStatementOrDeclarationAfterModifiers({, {, null, null, null, null)
                                               looksLikeLocalFunction(2)
                                               parseExpressionStatement({)
                                                 parseExpression({)
diff --git a/pkg/front_end/parser_testcases/nnbd/issue_40267_conditional.dart.intertwined.expect b/pkg/front_end/parser_testcases/nnbd/issue_40267_conditional.dart.intertwined.expect
index 6eaf362..23116f8 100644
--- a/pkg/front_end/parser_testcases/nnbd/issue_40267_conditional.dart.intertwined.expect
+++ b/pkg/front_end/parser_testcases/nnbd/issue_40267_conditional.dart.intertwined.expect
@@ -29,7 +29,7 @@
           notEofOrValue(}, var)
           parseStatement({)
             parseStatementX({)
-              parseExpressionStatementOrDeclarationAfterModifiers(var, {, null, var, null, false)
+              parseExpressionStatementOrDeclarationAfterModifiers(var, {, null, var, null, null)
                 looksLikeLocalFunction(a)
                 listener: beginMetadataStar(var)
                 listener: endMetadataStar(0)
@@ -62,7 +62,7 @@
           notEofOrValue(}, a)
           parseStatement(;)
             parseStatementX(;)
-              parseExpressionStatementOrDeclarationAfterModifiers(;, ;, null, null, null, false)
+              parseExpressionStatementOrDeclarationAfterModifiers(;, ;, null, null, null, null)
                 looksLikeLocalFunction(a)
                 parseExpressionStatement(;)
                   parseExpression(;)
@@ -145,7 +145,7 @@
           notEofOrValue(}, a)
           parseStatement(;)
             parseStatementX(;)
-              parseExpressionStatementOrDeclarationAfterModifiers(;, ;, null, null, null, false)
+              parseExpressionStatementOrDeclarationAfterModifiers(;, ;, null, null, null, null)
                 looksLikeLocalFunction(a)
                 parseExpressionStatement(;)
                   parseExpression(;)
@@ -228,7 +228,7 @@
           notEofOrValue(}, a)
           parseStatement(;)
             parseStatementX(;)
-              parseExpressionStatementOrDeclarationAfterModifiers(;, ;, null, null, null, false)
+              parseExpressionStatementOrDeclarationAfterModifiers(;, ;, null, null, null, null)
                 looksLikeLocalFunction(a)
                 parseExpressionStatement(;)
                   parseExpression(;)
@@ -335,7 +335,7 @@
           notEofOrValue(}, a)
           parseStatement(;)
             parseStatementX(;)
-              parseExpressionStatementOrDeclarationAfterModifiers(;, ;, null, null, null, false)
+              parseExpressionStatementOrDeclarationAfterModifiers(;, ;, null, null, null, null)
                 looksLikeLocalFunction(a)
                 parseExpressionStatement(;)
                   parseExpression(;)
@@ -442,7 +442,7 @@
           notEofOrValue(}, a)
           parseStatement(;)
             parseStatementX(;)
-              parseExpressionStatementOrDeclarationAfterModifiers(;, ;, null, null, null, false)
+              parseExpressionStatementOrDeclarationAfterModifiers(;, ;, null, null, null, null)
                 looksLikeLocalFunction(a)
                 parseExpressionStatement(;)
                   parseExpression(;)
@@ -518,7 +518,7 @@
           notEofOrValue(}, a)
           parseStatement(;)
             parseStatementX(;)
-              parseExpressionStatementOrDeclarationAfterModifiers(;, ;, null, null, null, false)
+              parseExpressionStatementOrDeclarationAfterModifiers(;, ;, null, null, null, null)
                 looksLikeLocalFunction(a)
                 parseExpressionStatement(;)
                   parseExpression(;)
diff --git a/pkg/front_end/parser_testcases/nnbd/issue_40267_conditional_2.dart.intertwined.expect b/pkg/front_end/parser_testcases/nnbd/issue_40267_conditional_2.dart.intertwined.expect
index 42f9b1c..1d255ea 100644
--- a/pkg/front_end/parser_testcases/nnbd/issue_40267_conditional_2.dart.intertwined.expect
+++ b/pkg/front_end/parser_testcases/nnbd/issue_40267_conditional_2.dart.intertwined.expect
@@ -29,7 +29,7 @@
           notEofOrValue(}, var)
           parseStatement({)
             parseStatementX({)
-              parseExpressionStatementOrDeclarationAfterModifiers(var, {, null, var, null, false)
+              parseExpressionStatementOrDeclarationAfterModifiers(var, {, null, var, null, null)
                 looksLikeLocalFunction(a)
                 listener: beginMetadataStar(var)
                 listener: endMetadataStar(0)
diff --git a/pkg/front_end/parser_testcases/nnbd/issue_40267_index_access.dart.intertwined.expect b/pkg/front_end/parser_testcases/nnbd/issue_40267_index_access.dart.intertwined.expect
index f9de6bf..4ab77f1 100644
--- a/pkg/front_end/parser_testcases/nnbd/issue_40267_index_access.dart.intertwined.expect
+++ b/pkg/front_end/parser_testcases/nnbd/issue_40267_index_access.dart.intertwined.expect
@@ -29,7 +29,7 @@
           notEofOrValue(}, var)
           parseStatement({)
             parseStatementX({)
-              parseExpressionStatementOrDeclarationAfterModifiers(var, {, null, var, null, false)
+              parseExpressionStatementOrDeclarationAfterModifiers(var, {, null, var, null, null)
                 looksLikeLocalFunction(a)
                 listener: beginMetadataStar(var)
                 listener: endMetadataStar(0)
@@ -55,7 +55,7 @@
           notEofOrValue(}, a)
           parseStatement(;)
             parseStatementX(;)
-              parseExpressionStatementOrDeclarationAfterModifiers(;, ;, null, null, null, false)
+              parseExpressionStatementOrDeclarationAfterModifiers(;, ;, null, null, null, null)
                 looksLikeLocalFunction(a)
                 parseExpressionStatement(;)
                   parseExpression(;)
@@ -94,7 +94,7 @@
           notEofOrValue(}, a)
           parseStatement(;)
             parseStatementX(;)
-              parseExpressionStatementOrDeclarationAfterModifiers(;, ;, null, null, null, false)
+              parseExpressionStatementOrDeclarationAfterModifiers(;, ;, null, null, null, null)
                 looksLikeLocalFunction(a)
                 parseExpressionStatement(;)
                   parseExpression(;)
@@ -145,7 +145,7 @@
           notEofOrValue(}, a)
           parseStatement(;)
             parseStatementX(;)
-              parseExpressionStatementOrDeclarationAfterModifiers(;, ;, null, null, null, false)
+              parseExpressionStatementOrDeclarationAfterModifiers(;, ;, null, null, null, null)
                 looksLikeLocalFunction(a)
                 parseExpressionStatement(;)
                   parseExpression(;)
diff --git a/pkg/front_end/parser_testcases/nnbd/issue_40267_index_set.dart.intertwined.expect b/pkg/front_end/parser_testcases/nnbd/issue_40267_index_set.dart.intertwined.expect
index 4bd6584..bac8060 100644
--- a/pkg/front_end/parser_testcases/nnbd/issue_40267_index_set.dart.intertwined.expect
+++ b/pkg/front_end/parser_testcases/nnbd/issue_40267_index_set.dart.intertwined.expect
@@ -29,7 +29,7 @@
           notEofOrValue(}, var)
           parseStatement({)
             parseStatementX({)
-              parseExpressionStatementOrDeclarationAfterModifiers(var, {, null, var, null, false)
+              parseExpressionStatementOrDeclarationAfterModifiers(var, {, null, var, null, null)
                 looksLikeLocalFunction(a)
                 listener: beginMetadataStar(var)
                 listener: endMetadataStar(0)
@@ -62,7 +62,7 @@
           notEofOrValue(}, a)
           parseStatement(;)
             parseStatementX(;)
-              parseExpressionStatementOrDeclarationAfterModifiers(;, ;, null, null, null, false)
+              parseExpressionStatementOrDeclarationAfterModifiers(;, ;, null, null, null, null)
                 looksLikeLocalFunction(a)
                 parseExpressionStatement(;)
                   parseExpression(;)
@@ -114,7 +114,7 @@
           notEofOrValue(}, a)
           parseStatement(;)
             parseStatementX(;)
-              parseExpressionStatementOrDeclarationAfterModifiers(;, ;, null, null, null, false)
+              parseExpressionStatementOrDeclarationAfterModifiers(;, ;, null, null, null, null)
                 looksLikeLocalFunction(a)
                 parseExpressionStatement(;)
                   parseExpression(;)
@@ -186,7 +186,7 @@
           notEofOrValue(}, a)
           parseStatement(;)
             parseStatementX(;)
-              parseExpressionStatementOrDeclarationAfterModifiers(;, ;, null, null, null, false)
+              parseExpressionStatementOrDeclarationAfterModifiers(;, ;, null, null, null, null)
                 looksLikeLocalFunction(a)
                 parseExpressionStatement(;)
                   parseExpression(;)
diff --git a/pkg/front_end/parser_testcases/nnbd/issue_40267_lookup_plus.dart.intertwined.expect b/pkg/front_end/parser_testcases/nnbd/issue_40267_lookup_plus.dart.intertwined.expect
index 7d451f6..80ae21e 100644
--- a/pkg/front_end/parser_testcases/nnbd/issue_40267_lookup_plus.dart.intertwined.expect
+++ b/pkg/front_end/parser_testcases/nnbd/issue_40267_lookup_plus.dart.intertwined.expect
@@ -41,7 +41,7 @@
           notEofOrValue(}, a)
           parseStatement({)
             parseStatementX({)
-              parseExpressionStatementOrDeclarationAfterModifiers({, {, null, null, null, false)
+              parseExpressionStatementOrDeclarationAfterModifiers({, {, null, null, null, null)
                 looksLikeLocalFunction(a)
                 parseExpressionStatement({)
                   parseExpression({)
diff --git a/pkg/front_end/parser_testcases/nnbd/issue_40267_lookup_plus_plus.dart.intertwined.expect b/pkg/front_end/parser_testcases/nnbd/issue_40267_lookup_plus_plus.dart.intertwined.expect
index 040e0e1..ca92806 100644
--- a/pkg/front_end/parser_testcases/nnbd/issue_40267_lookup_plus_plus.dart.intertwined.expect
+++ b/pkg/front_end/parser_testcases/nnbd/issue_40267_lookup_plus_plus.dart.intertwined.expect
@@ -53,7 +53,7 @@
           notEofOrValue(}, x)
           parseStatement({)
             parseStatementX({)
-              parseExpressionStatementOrDeclarationAfterModifiers({, {, null, null, null, false)
+              parseExpressionStatementOrDeclarationAfterModifiers({, {, null, null, null, null)
                 looksLikeLocalFunction(x)
                 parseExpressionStatement({)
                   parseExpression({)
diff --git a/pkg/front_end/parser_testcases/nnbd/issue_40267_method_call_no_type_arguments.dart.intertwined.expect b/pkg/front_end/parser_testcases/nnbd/issue_40267_method_call_no_type_arguments.dart.intertwined.expect
index e1fdd25..c117b4f 100644
--- a/pkg/front_end/parser_testcases/nnbd/issue_40267_method_call_no_type_arguments.dart.intertwined.expect
+++ b/pkg/front_end/parser_testcases/nnbd/issue_40267_method_call_no_type_arguments.dart.intertwined.expect
@@ -29,7 +29,7 @@
           notEofOrValue(}, var)
           parseStatement({)
             parseStatementX({)
-              parseExpressionStatementOrDeclarationAfterModifiers(var, {, null, var, null, false)
+              parseExpressionStatementOrDeclarationAfterModifiers(var, {, null, var, null, null)
                 looksLikeLocalFunction(a)
                 listener: beginMetadataStar(var)
                 listener: endMetadataStar(0)
@@ -55,7 +55,7 @@
           notEofOrValue(}, a)
           parseStatement(;)
             parseStatementX(;)
-              parseExpressionStatementOrDeclarationAfterModifiers(;, ;, null, null, null, false)
+              parseExpressionStatementOrDeclarationAfterModifiers(;, ;, null, null, null, null)
                 looksLikeLocalFunction(a)
                 parseExpressionStatement(;)
                   parseExpression(;)
@@ -104,7 +104,7 @@
           notEofOrValue(}, a)
           parseStatement(;)
             parseStatementX(;)
-              parseExpressionStatementOrDeclarationAfterModifiers(;, ;, null, null, null, false)
+              parseExpressionStatementOrDeclarationAfterModifiers(;, ;, null, null, null, null)
                 looksLikeLocalFunction(a)
                 parseExpressionStatement(;)
                   parseExpression(;)
diff --git a/pkg/front_end/parser_testcases/nnbd/issue_40267_method_call_with_type_arguments.dart.intertwined.expect b/pkg/front_end/parser_testcases/nnbd/issue_40267_method_call_with_type_arguments.dart.intertwined.expect
index 7578970..325227a 100644
--- a/pkg/front_end/parser_testcases/nnbd/issue_40267_method_call_with_type_arguments.dart.intertwined.expect
+++ b/pkg/front_end/parser_testcases/nnbd/issue_40267_method_call_with_type_arguments.dart.intertwined.expect
@@ -29,7 +29,7 @@
           notEofOrValue(}, var)
           parseStatement({)
             parseStatementX({)
-              parseExpressionStatementOrDeclarationAfterModifiers(var, {, null, var, null, false)
+              parseExpressionStatementOrDeclarationAfterModifiers(var, {, null, var, null, null)
                 looksLikeLocalFunction(a)
                 listener: beginMetadataStar(var)
                 listener: endMetadataStar(0)
@@ -55,7 +55,7 @@
           notEofOrValue(}, a)
           parseStatement(;)
             parseStatementX(;)
-              parseExpressionStatementOrDeclarationAfterModifiers(;, ;, null, null, null, false)
+              parseExpressionStatementOrDeclarationAfterModifiers(;, ;, null, null, null, null)
                 looksLikeLocalFunction(a)
                 parseExpressionStatement(;)
                   parseExpression(;)
@@ -108,7 +108,7 @@
           notEofOrValue(}, a)
           parseStatement(;)
             parseStatementX(;)
-              parseExpressionStatementOrDeclarationAfterModifiers(;, ;, null, null, null, false)
+              parseExpressionStatementOrDeclarationAfterModifiers(;, ;, null, null, null, null)
                 looksLikeLocalFunction(a)
                 parseExpressionStatement(;)
                   parseExpression(;)
diff --git a/pkg/front_end/parser_testcases/nnbd/issue_40267_plus_plus_lookup.dart.intertwined.expect b/pkg/front_end/parser_testcases/nnbd/issue_40267_plus_plus_lookup.dart.intertwined.expect
index e73d955..282b834 100644
--- a/pkg/front_end/parser_testcases/nnbd/issue_40267_plus_plus_lookup.dart.intertwined.expect
+++ b/pkg/front_end/parser_testcases/nnbd/issue_40267_plus_plus_lookup.dart.intertwined.expect
@@ -53,8 +53,8 @@
           notEofOrValue(}, ++)
           parseStatement({)
             parseStatementX({)
-              parseExpressionStatementOrDeclaration({, false)
-                parseExpressionStatementOrDeclarationAfterModifiers({, {, null, null, null, false)
+              parseExpressionStatementOrDeclaration({, null)
+                parseExpressionStatementOrDeclarationAfterModifiers({, {, null, null, null, null)
                   looksLikeLocalFunction(++)
                   parseExpressionStatement({)
                     parseExpression({)
diff --git a/pkg/front_end/parser_testcases/nnbd/issue_40793.dart.intertwined.expect b/pkg/front_end/parser_testcases/nnbd/issue_40793.dart.intertwined.expect
index e64fbe60..0a00754 100644
--- a/pkg/front_end/parser_testcases/nnbd/issue_40793.dart.intertwined.expect
+++ b/pkg/front_end/parser_testcases/nnbd/issue_40793.dart.intertwined.expect
@@ -87,7 +87,7 @@
                       notEofOrValue(}, print)
                       parseStatement({)
                         parseStatementX({)
-                          parseExpressionStatementOrDeclarationAfterModifiers({, {, null, null, null, false)
+                          parseExpressionStatementOrDeclarationAfterModifiers({, {, null, null, null, null)
                             looksLikeLocalFunction(print)
                             parseExpressionStatement({)
                               parseExpression({)
diff --git a/pkg/front_end/parser_testcases/nnbd/issue_40793_prime.dart.intertwined.expect b/pkg/front_end/parser_testcases/nnbd/issue_40793_prime.dart.intertwined.expect
index 0752d23..9037465 100644
--- a/pkg/front_end/parser_testcases/nnbd/issue_40793_prime.dart.intertwined.expect
+++ b/pkg/front_end/parser_testcases/nnbd/issue_40793_prime.dart.intertwined.expect
@@ -96,7 +96,7 @@
                       notEofOrValue(}, print)
                       parseStatement({)
                         parseStatementX({)
-                          parseExpressionStatementOrDeclarationAfterModifiers({, {, null, null, null, false)
+                          parseExpressionStatementOrDeclarationAfterModifiers({, {, null, null, null, null)
                             looksLikeLocalFunction(print)
                             parseExpressionStatement({)
                               parseExpression({)
diff --git a/pkg/front_end/parser_testcases/nnbd/issue_40793_prime2.dart.intertwined.expect b/pkg/front_end/parser_testcases/nnbd/issue_40793_prime2.dart.intertwined.expect
index b046ab2..ab41df2 100644
--- a/pkg/front_end/parser_testcases/nnbd/issue_40793_prime2.dart.intertwined.expect
+++ b/pkg/front_end/parser_testcases/nnbd/issue_40793_prime2.dart.intertwined.expect
@@ -95,7 +95,7 @@
                       notEofOrValue(}, print)
                       parseStatement({)
                         parseStatementX({)
-                          parseExpressionStatementOrDeclarationAfterModifiers({, {, null, null, null, false)
+                          parseExpressionStatementOrDeclarationAfterModifiers({, {, null, null, null, null)
                             looksLikeLocalFunction(print)
                             parseExpressionStatement({)
                               parseExpression({)
diff --git a/pkg/front_end/parser_testcases/nnbd/issue_40793_prime3.dart.intertwined.expect b/pkg/front_end/parser_testcases/nnbd/issue_40793_prime3.dart.intertwined.expect
index 1309826..1699511 100644
--- a/pkg/front_end/parser_testcases/nnbd/issue_40793_prime3.dart.intertwined.expect
+++ b/pkg/front_end/parser_testcases/nnbd/issue_40793_prime3.dart.intertwined.expect
@@ -86,7 +86,7 @@
                       notEofOrValue(}, print)
                       parseStatement({)
                         parseStatementX({)
-                          parseExpressionStatementOrDeclarationAfterModifiers({, {, null, null, null, false)
+                          parseExpressionStatementOrDeclarationAfterModifiers({, {, null, null, null, null)
                             looksLikeLocalFunction(print)
                             parseExpressionStatement({)
                               parseExpression({)
diff --git a/pkg/front_end/parser_testcases/nnbd/issue_40793_prime4.dart.intertwined.expect b/pkg/front_end/parser_testcases/nnbd/issue_40793_prime4.dart.intertwined.expect
index 82eec5f..913b436a 100644
--- a/pkg/front_end/parser_testcases/nnbd/issue_40793_prime4.dart.intertwined.expect
+++ b/pkg/front_end/parser_testcases/nnbd/issue_40793_prime4.dart.intertwined.expect
@@ -40,7 +40,7 @@
           notEofOrValue(}, e)
           parseStatement({)
             parseStatementX({)
-              parseExpressionStatementOrDeclarationAfterModifiers({, {, null, null, null, false)
+              parseExpressionStatementOrDeclarationAfterModifiers({, {, null, null, null, null)
                 looksLikeLocalFunction(e)
                 parseExpressionStatement({)
                   parseExpression({)
diff --git a/pkg/front_end/parser_testcases/nnbd/issue_40793_prime5.dart.intertwined.expect b/pkg/front_end/parser_testcases/nnbd/issue_40793_prime5.dart.intertwined.expect
index 2490973..59ff519 100644
--- a/pkg/front_end/parser_testcases/nnbd/issue_40793_prime5.dart.intertwined.expect
+++ b/pkg/front_end/parser_testcases/nnbd/issue_40793_prime5.dart.intertwined.expect
@@ -40,7 +40,7 @@
           notEofOrValue(}, e)
           parseStatement({)
             parseStatementX({)
-              parseExpressionStatementOrDeclarationAfterModifiers({, {, null, null, null, false)
+              parseExpressionStatementOrDeclarationAfterModifiers({, {, null, null, null, null)
                 looksLikeLocalFunction(e)
                 parseExpressionStatement({)
                   parseExpression({)
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 527f0f7..0a77e46 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
@@ -299,7 +299,7 @@
                               notEofOrValue(}, print)
                               parseStatement({)
                                 parseStatementX({)
-                                  parseExpressionStatementOrDeclarationAfterModifiers({, {, null, null, null, false)
+                                  parseExpressionStatementOrDeclarationAfterModifiers({, {, null, null, null, null)
                                     looksLikeLocalFunction(print)
                                     parseExpressionStatement({)
                                       parseExpression({)
@@ -440,7 +440,7 @@
                               notEofOrValue(}, print)
                               parseStatement({)
                                 parseStatementX({)
-                                  parseExpressionStatementOrDeclarationAfterModifiers({, {, null, null, null, false)
+                                  parseExpressionStatementOrDeclarationAfterModifiers({, {, null, null, null, null)
                                     looksLikeLocalFunction(print)
                                     parseExpressionStatement({)
                                       parseExpression({)
diff --git a/pkg/front_end/parser_testcases/nnbd/issue_41177.dart.intertwined.expect b/pkg/front_end/parser_testcases/nnbd/issue_41177.dart.intertwined.expect
index 7a8c0d1..709e740 100644
--- a/pkg/front_end/parser_testcases/nnbd/issue_41177.dart.intertwined.expect
+++ b/pkg/front_end/parser_testcases/nnbd/issue_41177.dart.intertwined.expect
@@ -57,7 +57,7 @@
           notEofOrValue(}, a)
           parseStatement({)
             parseStatementX({)
-              parseExpressionStatementOrDeclarationAfterModifiers({, {, null, null, null, false)
+              parseExpressionStatementOrDeclarationAfterModifiers({, {, null, null, null, null)
                 looksLikeLocalFunction(a)
                 parseExpressionStatement({)
                   parseExpression({)
@@ -87,7 +87,7 @@
           notEofOrValue(}, a)
           parseStatement(;)
             parseStatementX(;)
-              parseExpressionStatementOrDeclarationAfterModifiers(;, ;, null, null, null, false)
+              parseExpressionStatementOrDeclarationAfterModifiers(;, ;, null, null, null, null)
                 looksLikeLocalFunction(a)
                 parseExpressionStatement(;)
                   parseExpression(;)
@@ -127,7 +127,7 @@
           notEofOrValue(}, a)
           parseStatement(;)
             parseStatementX(;)
-              parseExpressionStatementOrDeclarationAfterModifiers(;, ;, null, null, null, false)
+              parseExpressionStatementOrDeclarationAfterModifiers(;, ;, null, null, null, null)
                 looksLikeLocalFunction(a)
                 parseExpressionStatement(;)
                   parseExpression(;)
@@ -168,8 +168,8 @@
           notEofOrValue(}, ()
           parseStatement(;)
             parseStatementX(;)
-              parseExpressionStatementOrDeclaration(;, false)
-                parseExpressionStatementOrDeclarationAfterModifiers(;, ;, null, null, null, false)
+              parseExpressionStatementOrDeclaration(;, null)
+                parseExpressionStatementOrDeclarationAfterModifiers(;, ;, null, null, null, null)
                   looksLikeLocalFunction(()
                   parseExpressionStatement(;)
                     parseExpression(;)
@@ -219,7 +219,7 @@
           notEofOrValue(}, b)
           parseStatement(;)
             parseStatementX(;)
-              parseExpressionStatementOrDeclarationAfterModifiers(;, ;, null, null, null, false)
+              parseExpressionStatementOrDeclarationAfterModifiers(;, ;, null, null, null, null)
                 looksLikeLocalFunction(b)
                 parseExpressionStatement(;)
                   parseExpression(;)
@@ -281,8 +281,8 @@
           notEofOrValue(}, ()
           parseStatement(;)
             parseStatementX(;)
-              parseExpressionStatementOrDeclaration(;, false)
-                parseExpressionStatementOrDeclarationAfterModifiers(;, ;, null, null, null, false)
+              parseExpressionStatementOrDeclaration(;, null)
+                parseExpressionStatementOrDeclarationAfterModifiers(;, ;, null, null, null, null)
                   looksLikeLocalFunction(()
                   parseExpressionStatement(;)
                     parseExpression(;)
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 2c125d0..1842e16 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
@@ -63,7 +63,7 @@
           notEofOrValue(}, print)
           parseStatement({)
             parseStatementX({)
-              parseExpressionStatementOrDeclarationAfterModifiers({, {, null, null, null, false)
+              parseExpressionStatementOrDeclarationAfterModifiers({, {, null, null, null, null)
                 looksLikeLocalFunction(print)
                 parseExpressionStatement({)
                   parseExpression({)
@@ -101,7 +101,7 @@
           notEofOrValue(}, print)
           parseStatement(;)
             parseStatementX(;)
-              parseExpressionStatementOrDeclarationAfterModifiers(;, ;, null, null, null, false)
+              parseExpressionStatementOrDeclarationAfterModifiers(;, ;, null, null, null, null)
                 looksLikeLocalFunction(print)
                 parseExpressionStatement(;)
                   parseExpression(;)
@@ -140,7 +140,7 @@
           notEofOrValue(}, print)
           parseStatement(;)
             parseStatementX(;)
-              parseExpressionStatementOrDeclarationAfterModifiers(;, ;, null, null, null, false)
+              parseExpressionStatementOrDeclarationAfterModifiers(;, ;, null, null, null, null)
                 looksLikeLocalFunction(print)
                 parseExpressionStatement(;)
                   parseExpression(;)
diff --git a/pkg/front_end/parser_testcases/nnbd/issue_47020.dart.intertwined.expect b/pkg/front_end/parser_testcases/nnbd/issue_47020.dart.intertwined.expect
index d6bc6c8b..43c140b 100644
--- a/pkg/front_end/parser_testcases/nnbd/issue_47020.dart.intertwined.expect
+++ b/pkg/front_end/parser_testcases/nnbd/issue_47020.dart.intertwined.expect
@@ -28,8 +28,8 @@
           notEofOrValue(}, Function)
           parseStatement({)
             parseStatementX({)
-              parseExpressionStatementOrDeclaration({, false)
-                parseExpressionStatementOrDeclarationAfterModifiers({, {, null, null, null, false)
+              parseExpressionStatementOrDeclaration({, null)
+                parseExpressionStatementOrDeclarationAfterModifiers({, {, null, null, null, null)
                   looksLikeLocalFunction(f)
                   parseExpressionWithoutCascade(=)
                     parsePrecedenceExpression(=, 1, false)
@@ -46,7 +46,7 @@
                                   notEofOrValue(}, print)
                                   parseStatement({)
                                     parseStatementX({)
-                                      parseExpressionStatementOrDeclarationAfterModifiers({, {, null, null, null, false)
+                                      parseExpressionStatementOrDeclarationAfterModifiers({, {, null, null, null, null)
                                         looksLikeLocalFunction(print)
                                         parseExpressionStatement({)
                                           parseExpression({)
@@ -104,7 +104,7 @@
                                         notEofOrValue(}, print)
                                         parseStatement({)
                                           parseStatementX({)
-                                            parseExpressionStatementOrDeclarationAfterModifiers({, {, null, null, null, false)
+                                            parseExpressionStatementOrDeclarationAfterModifiers({, {, null, null, null, null)
                                               looksLikeLocalFunction(print)
                                               parseExpressionStatement({)
                                                 parseExpression({)
@@ -145,7 +145,7 @@
           notEofOrValue(}, f)
           parseStatement(;)
             parseStatementX(;)
-              parseExpressionStatementOrDeclarationAfterModifiers(;, ;, null, null, null, false)
+              parseExpressionStatementOrDeclarationAfterModifiers(;, ;, null, null, null, null)
                 looksLikeLocalFunction(f)
                 parseExpressionStatement(;)
                   parseExpression(;)
diff --git a/pkg/front_end/parser_testcases/nnbd/issue_48999.dart.intertwined.expect b/pkg/front_end/parser_testcases/nnbd/issue_48999.dart.intertwined.expect
index 2b416ce..ad87654 100644
--- a/pkg/front_end/parser_testcases/nnbd/issue_48999.dart.intertwined.expect
+++ b/pkg/front_end/parser_testcases/nnbd/issue_48999.dart.intertwined.expect
@@ -28,8 +28,8 @@
           notEofOrValue(}, dynamic)
           parseStatement({)
             parseStatementX({)
-              parseExpressionStatementOrDeclaration({, false)
-                parseExpressionStatementOrDeclarationAfterModifiers({, {, null, null, null, false)
+              parseExpressionStatementOrDeclaration({, null)
+                parseExpressionStatementOrDeclarationAfterModifiers({, {, null, null, null, null)
                   looksLikeLocalFunction(i)
                   listener: beginMetadataStar(dynamic)
                   listener: endMetadataStar(0)
@@ -57,7 +57,7 @@
           notEofOrValue(}, print)
           parseStatement(;)
             parseStatementX(;)
-              parseExpressionStatementOrDeclarationAfterModifiers(;, ;, null, null, null, false)
+              parseExpressionStatementOrDeclarationAfterModifiers(;, ;, null, null, null, null)
                 looksLikeLocalFunction(print)
                 parseExpressionStatement(;)
                   parseExpression(;)
@@ -115,7 +115,7 @@
           notEofOrValue(}, print)
           parseStatement(;)
             parseStatementX(;)
-              parseExpressionStatementOrDeclarationAfterModifiers(;, ;, null, null, null, false)
+              parseExpressionStatementOrDeclarationAfterModifiers(;, ;, null, null, null, null)
                 looksLikeLocalFunction(print)
                 parseExpressionStatement(;)
                   parseExpression(;)
diff --git a/pkg/front_end/parser_testcases/nnbd/issue_48999_prime.dart.intertwined.expect b/pkg/front_end/parser_testcases/nnbd/issue_48999_prime.dart.intertwined.expect
index 00f982c..9dc3555 100644
--- a/pkg/front_end/parser_testcases/nnbd/issue_48999_prime.dart.intertwined.expect
+++ b/pkg/front_end/parser_testcases/nnbd/issue_48999_prime.dart.intertwined.expect
@@ -28,8 +28,8 @@
           notEofOrValue(}, dynamic)
           parseStatement({)
             parseStatementX({)
-              parseExpressionStatementOrDeclaration({, false)
-                parseExpressionStatementOrDeclarationAfterModifiers({, {, null, null, null, false)
+              parseExpressionStatementOrDeclaration({, null)
+                parseExpressionStatementOrDeclarationAfterModifiers({, {, null, null, null, null)
                   looksLikeLocalFunction(i)
                   listener: beginMetadataStar(dynamic)
                   listener: endMetadataStar(0)
@@ -57,7 +57,7 @@
           notEofOrValue(}, print)
           parseStatement(;)
             parseStatementX(;)
-              parseExpressionStatementOrDeclarationAfterModifiers(;, ;, null, null, null, false)
+              parseExpressionStatementOrDeclarationAfterModifiers(;, ;, null, null, null, null)
                 looksLikeLocalFunction(print)
                 parseExpressionStatement(;)
                   parseExpression(;)
@@ -124,7 +124,7 @@
           notEofOrValue(}, print)
           parseStatement(;)
             parseStatementX(;)
-              parseExpressionStatementOrDeclarationAfterModifiers(;, ;, null, null, null, false)
+              parseExpressionStatementOrDeclarationAfterModifiers(;, ;, null, null, null, null)
                 looksLikeLocalFunction(print)
                 parseExpressionStatement(;)
                   parseExpression(;)
diff --git a/pkg/front_end/parser_testcases/nnbd/issue_49678.dart.intertwined.expect b/pkg/front_end/parser_testcases/nnbd/issue_49678.dart.intertwined.expect
index 83c9fdd..f41ebd6 100644
--- a/pkg/front_end/parser_testcases/nnbd/issue_49678.dart.intertwined.expect
+++ b/pkg/front_end/parser_testcases/nnbd/issue_49678.dart.intertwined.expect
@@ -42,7 +42,7 @@
           notEofOrValue(}, Map)
           parseStatement({)
             parseStatementX({)
-              parseExpressionStatementOrDeclarationAfterModifiers({, {, null, null, null, false)
+              parseExpressionStatementOrDeclarationAfterModifiers({, {, null, null, null, null)
                 looksLikeLocalFunction(m)
                 listener: beginMetadataStar(Map)
                 listener: endMetadataStar(0)
@@ -92,7 +92,7 @@
           notEofOrValue(}, m)
           parseStatement(;)
             parseStatementX(;)
-              parseExpressionStatementOrDeclarationAfterModifiers(;, ;, null, null, null, false)
+              parseExpressionStatementOrDeclarationAfterModifiers(;, ;, null, null, null, null)
                 looksLikeLocalFunction(m)
                 parseExpressionStatement(;)
                   parseExpression(;)
@@ -137,7 +137,7 @@
           notEofOrValue(}, var)
           parseStatement(;)
             parseStatementX(;)
-              parseExpressionStatementOrDeclarationAfterModifiers(var, ;, null, var, null, false)
+              parseExpressionStatementOrDeclarationAfterModifiers(var, ;, null, var, null, null)
                 looksLikeLocalFunction(list)
                 listener: beginMetadataStar(var)
                 listener: endMetadataStar(0)
@@ -230,7 +230,7 @@
           notEofOrValue(}, var)
           parseStatement(;)
             parseStatementX(;)
-              parseExpressionStatementOrDeclarationAfterModifiers(var, ;, null, var, null, false)
+              parseExpressionStatementOrDeclarationAfterModifiers(var, ;, null, var, null, null)
                 looksLikeLocalFunction(list2)
                 listener: beginMetadataStar(var)
                 listener: endMetadataStar(0)
diff --git a/pkg/front_end/parser_testcases/nnbd/issue_49678_prime.dart.intertwined.expect b/pkg/front_end/parser_testcases/nnbd/issue_49678_prime.dart.intertwined.expect
index d338d40..d3ed1fd 100644
--- a/pkg/front_end/parser_testcases/nnbd/issue_49678_prime.dart.intertwined.expect
+++ b/pkg/front_end/parser_testcases/nnbd/issue_49678_prime.dart.intertwined.expect
@@ -42,7 +42,7 @@
           notEofOrValue(}, Map)
           parseStatement({)
             parseStatementX({)
-              parseExpressionStatementOrDeclarationAfterModifiers({, {, null, null, null, false)
+              parseExpressionStatementOrDeclarationAfterModifiers({, {, null, null, null, null)
                 looksLikeLocalFunction(m)
                 listener: beginMetadataStar(Map)
                 listener: endMetadataStar(0)
@@ -92,7 +92,7 @@
           notEofOrValue(}, m)
           parseStatement(;)
             parseStatementX(;)
-              parseExpressionStatementOrDeclarationAfterModifiers(;, ;, null, null, null, false)
+              parseExpressionStatementOrDeclarationAfterModifiers(;, ;, null, null, null, null)
                 looksLikeLocalFunction(m)
                 parseExpressionStatement(;)
                   parseExpression(;)
@@ -146,7 +146,7 @@
           notEofOrValue(}, var)
           parseStatement(;)
             parseStatementX(;)
-              parseExpressionStatementOrDeclarationAfterModifiers(var, ;, null, var, null, false)
+              parseExpressionStatementOrDeclarationAfterModifiers(var, ;, null, var, null, null)
                 looksLikeLocalFunction(list)
                 listener: beginMetadataStar(var)
                 listener: endMetadataStar(0)
@@ -266,7 +266,7 @@
           notEofOrValue(}, var)
           parseStatement(;)
             parseStatementX(;)
-              parseExpressionStatementOrDeclarationAfterModifiers(var, ;, null, var, null, false)
+              parseExpressionStatementOrDeclarationAfterModifiers(var, ;, null, var, null, null)
                 looksLikeLocalFunction(list2)
                 listener: beginMetadataStar(var)
                 listener: endMetadataStar(0)
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 bb5c18d..1592e1b 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
@@ -29,8 +29,8 @@
           notEofOrValue(}, dynamic)
           parseStatement({)
             parseStatementX({)
-              parseExpressionStatementOrDeclaration({, false)
-                parseExpressionStatementOrDeclarationAfterModifiers({, {, null, null, null, false)
+              parseExpressionStatementOrDeclaration({, null)
+                parseExpressionStatementOrDeclarationAfterModifiers({, {, null, null, null, null)
                   looksLikeLocalFunction(foo)
                   listener: beginMetadataStar(dynamic)
                   listener: endMetadataStar(0)
@@ -72,7 +72,7 @@
           notEofOrValue(}, var)
           parseStatement(;)
             parseStatementX(;)
-              parseExpressionStatementOrDeclarationAfterModifiers(var, ;, null, var, null, false)
+              parseExpressionStatementOrDeclarationAfterModifiers(var, ;, null, var, null, null)
                 looksLikeLocalFunction(bar)
                 listener: beginMetadataStar(var)
                 listener: endMetadataStar(0)
@@ -118,8 +118,8 @@
           notEofOrValue(}, late)
           parseStatement(;)
             parseStatementX(;)
-              parseExpressionStatementOrDeclaration(;, false)
-                parseExpressionStatementOrDeclarationAfterModifiers(;, ;, null, null, null, false)
+              parseExpressionStatementOrDeclaration(;, null)
+                parseExpressionStatementOrDeclarationAfterModifiers(;, ;, null, null, null, null)
                   looksLikeLocalFunction(late)
                   parseExpressionStatement(;)
                     parseExpression(;)
@@ -146,7 +146,7 @@
           notEofOrValue(}, bar)
           parseStatement(;)
             parseStatementX(;)
-              parseExpressionStatementOrDeclarationAfterModifiers(;, ;, null, null, null, false)
+              parseExpressionStatementOrDeclarationAfterModifiers(;, ;, null, null, null, null)
                 looksLikeLocalFunction(bar)
                 parseExpressionStatement(;)
                   parseExpression(;)
@@ -171,8 +171,8 @@
           notEofOrValue(}, new)
           parseStatement(;)
             parseStatementX(;)
-              parseExpressionStatementOrDeclaration(;, false)
-                parseExpressionStatementOrDeclarationAfterModifiers(;, ;, null, null, null, false)
+              parseExpressionStatementOrDeclaration(;, null)
+                parseExpressionStatementOrDeclarationAfterModifiers(;, ;, null, null, null, null)
                   looksLikeLocalFunction(new)
                   parseExpressionStatement(;)
                     parseExpression(;)
@@ -217,8 +217,8 @@
           notEofOrValue(}, new)
           parseStatement(;)
             parseStatementX(;)
-              parseExpressionStatementOrDeclaration(;, false)
-                parseExpressionStatementOrDeclarationAfterModifiers(;, ;, null, null, null, false)
+              parseExpressionStatementOrDeclaration(;, null)
+                parseExpressionStatementOrDeclarationAfterModifiers(;, ;, null, null, null, null)
                   looksLikeLocalFunction(new)
                   parseExpressionStatement(;)
                     parseExpression(;)
@@ -287,7 +287,7 @@
           notEofOrValue(}, print)
           parseStatement({)
             parseStatementX({)
-              parseExpressionStatementOrDeclarationAfterModifiers({, {, null, null, null, false)
+              parseExpressionStatementOrDeclarationAfterModifiers({, {, null, null, null, null)
                 looksLikeLocalFunction(print)
                 parseExpressionStatement({)
                   parseExpression({)
@@ -374,7 +374,7 @@
                   notEofOrValue(}, print)
                   parseStatement({)
                     parseStatementX({)
-                      parseExpressionStatementOrDeclarationAfterModifiers({, {, null, null, null, false)
+                      parseExpressionStatementOrDeclarationAfterModifiers({, {, null, null, null, null)
                         looksLikeLocalFunction(print)
                         parseExpressionStatement({)
                           parseExpression({)
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 193c9c2..41f0ea6 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
@@ -29,8 +29,8 @@
           notEofOrValue(}, dynamic)
           parseStatement({)
             parseStatementX({)
-              parseExpressionStatementOrDeclaration({, false)
-                parseExpressionStatementOrDeclarationAfterModifiers({, {, null, null, null, false)
+              parseExpressionStatementOrDeclaration({, null)
+                parseExpressionStatementOrDeclarationAfterModifiers({, {, null, null, null, null)
                   looksLikeLocalFunction(foo)
                   listener: beginMetadataStar(dynamic)
                   listener: endMetadataStar(0)
@@ -72,7 +72,7 @@
           notEofOrValue(}, var)
           parseStatement(;)
             parseStatementX(;)
-              parseExpressionStatementOrDeclarationAfterModifiers(var, ;, null, var, null, false)
+              parseExpressionStatementOrDeclarationAfterModifiers(var, ;, null, var, null, null)
                 looksLikeLocalFunction(bar)
                 listener: beginMetadataStar(var)
                 listener: endMetadataStar(0)
@@ -118,8 +118,8 @@
           notEofOrValue(}, late)
           parseStatement(;)
             parseStatementX(;)
-              parseExpressionStatementOrDeclaration(;, false)
-                parseExpressionStatementOrDeclarationAfterModifiers(;, ;, null, null, null, false)
+              parseExpressionStatementOrDeclaration(;, null)
+                parseExpressionStatementOrDeclarationAfterModifiers(;, ;, null, null, null, null)
                   looksLikeLocalFunction(late)
                   parseExpressionStatement(;)
                     parseExpression(;)
@@ -146,7 +146,7 @@
           notEofOrValue(}, bar)
           parseStatement(;)
             parseStatementX(;)
-              parseExpressionStatementOrDeclarationAfterModifiers(;, ;, null, null, null, false)
+              parseExpressionStatementOrDeclarationAfterModifiers(;, ;, null, null, null, null)
                 looksLikeLocalFunction(bar)
                 parseExpressionStatement(;)
                   parseExpression(;)
@@ -171,8 +171,8 @@
           notEofOrValue(}, new)
           parseStatement(;)
             parseStatementX(;)
-              parseExpressionStatementOrDeclaration(;, false)
-                parseExpressionStatementOrDeclarationAfterModifiers(;, ;, null, null, null, false)
+              parseExpressionStatementOrDeclaration(;, null)
+                parseExpressionStatementOrDeclarationAfterModifiers(;, ;, null, null, null, null)
                   looksLikeLocalFunction(new)
                   parseExpressionStatement(;)
                     parseExpression(;)
@@ -217,8 +217,8 @@
           notEofOrValue(}, new)
           parseStatement(;)
             parseStatementX(;)
-              parseExpressionStatementOrDeclaration(;, false)
-                parseExpressionStatementOrDeclarationAfterModifiers(;, ;, null, null, null, false)
+              parseExpressionStatementOrDeclaration(;, null)
+                parseExpressionStatementOrDeclarationAfterModifiers(;, ;, null, null, null, null)
                   looksLikeLocalFunction(new)
                   parseExpressionStatement(;)
                     parseExpression(;)
@@ -259,8 +259,8 @@
           notEofOrValue(}, late)
           parseStatement(;)
             parseStatementX(;)
-              parseExpressionStatementOrDeclaration(;, false)
-                parseExpressionStatementOrDeclarationAfterModifiers(late, ;, late, null, null, false)
+              parseExpressionStatementOrDeclaration(;, null)
+                parseExpressionStatementOrDeclarationAfterModifiers(late, ;, late, null, null, null)
                   looksLikeLocalFunction(foo)
                   listener: beginMetadataStar(late)
                   listener: endMetadataStar(0)
@@ -281,7 +281,7 @@
           notEofOrValue(}, foo)
           parseStatement(;)
             parseStatementX(;)
-              parseExpressionStatementOrDeclarationAfterModifiers(;, ;, null, null, null, false)
+              parseExpressionStatementOrDeclarationAfterModifiers(;, ;, null, null, null, null)
                 looksLikeLocalFunction(foo)
                 parseExpressionStatement(;)
                   parseExpression(;)
@@ -336,7 +336,7 @@
           notEofOrValue(}, print)
           parseStatement({)
             parseStatementX({)
-              parseExpressionStatementOrDeclarationAfterModifiers({, {, null, null, null, false)
+              parseExpressionStatementOrDeclarationAfterModifiers({, {, null, null, null, null)
                 looksLikeLocalFunction(print)
                 parseExpressionStatement({)
                   parseExpression({)
@@ -423,7 +423,7 @@
                   notEofOrValue(}, print)
                   parseStatement({)
                     parseStatementX({)
-                      parseExpressionStatementOrDeclarationAfterModifiers({, {, null, null, null, false)
+                      parseExpressionStatementOrDeclarationAfterModifiers({, {, null, null, null, null)
                         looksLikeLocalFunction(print)
                         parseExpressionStatement({)
                           parseExpression({)
diff --git a/pkg/front_end/parser_testcases/nnbd/nullCheckBeforeIndex.dart.intertwined.expect b/pkg/front_end/parser_testcases/nnbd/nullCheckBeforeIndex.dart.intertwined.expect
index 5bc1168..acdb574 100644
--- a/pkg/front_end/parser_testcases/nnbd/nullCheckBeforeIndex.dart.intertwined.expect
+++ b/pkg/front_end/parser_testcases/nnbd/nullCheckBeforeIndex.dart.intertwined.expect
@@ -29,7 +29,7 @@
           notEofOrValue(}, foo)
           parseStatement({)
             parseStatementX({)
-              parseExpressionStatementOrDeclarationAfterModifiers({, {, null, null, null, false)
+              parseExpressionStatementOrDeclarationAfterModifiers({, {, null, null, null, null)
                 looksLikeLocalFunction(foo)
                 parseExpressionStatement({)
                   parseExpression({)
diff --git a/pkg/front_end/parser_testcases/nnbd/nullCheckBeforeIndex_with_parens.dart.intertwined.expect b/pkg/front_end/parser_testcases/nnbd/nullCheckBeforeIndex_with_parens.dart.intertwined.expect
index 7567372..b25bd3a 100644
--- a/pkg/front_end/parser_testcases/nnbd/nullCheckBeforeIndex_with_parens.dart.intertwined.expect
+++ b/pkg/front_end/parser_testcases/nnbd/nullCheckBeforeIndex_with_parens.dart.intertwined.expect
@@ -29,8 +29,8 @@
           notEofOrValue(}, ()
           parseStatement({)
             parseStatementX({)
-              parseExpressionStatementOrDeclaration({, false)
-                parseExpressionStatementOrDeclarationAfterModifiers({, {, null, null, null, false)
+              parseExpressionStatementOrDeclaration({, null)
+                parseExpressionStatementOrDeclarationAfterModifiers({, {, null, null, null, null)
                   looksLikeLocalFunction(()
                   parseExpressionStatement({)
                     parseExpression({)
diff --git a/pkg/front_end/parser_testcases/nnbd/nullCheckOnIndex.dart.intertwined.expect b/pkg/front_end/parser_testcases/nnbd/nullCheckOnIndex.dart.intertwined.expect
index 5ed49af..4ea9042 100644
--- a/pkg/front_end/parser_testcases/nnbd/nullCheckOnIndex.dart.intertwined.expect
+++ b/pkg/front_end/parser_testcases/nnbd/nullCheckOnIndex.dart.intertwined.expect
@@ -29,7 +29,7 @@
           notEofOrValue(}, obj)
           parseStatement({)
             parseStatementX({)
-              parseExpressionStatementOrDeclarationAfterModifiers({, {, null, null, null, false)
+              parseExpressionStatementOrDeclarationAfterModifiers({, {, null, null, null, null)
                 looksLikeLocalFunction(obj)
                 parseExpressionStatement({)
                   parseExpression({)
diff --git a/pkg/front_end/parser_testcases/nnbd/nullCheckOnIndex2.dart.intertwined.expect b/pkg/front_end/parser_testcases/nnbd/nullCheckOnIndex2.dart.intertwined.expect
index 28566d1..dcbbaed 100644
--- a/pkg/front_end/parser_testcases/nnbd/nullCheckOnIndex2.dart.intertwined.expect
+++ b/pkg/front_end/parser_testcases/nnbd/nullCheckOnIndex2.dart.intertwined.expect
@@ -29,7 +29,7 @@
           notEofOrValue(}, obj)
           parseStatement({)
             parseStatementX({)
-              parseExpressionStatementOrDeclarationAfterModifiers({, {, null, null, null, false)
+              parseExpressionStatementOrDeclarationAfterModifiers({, {, null, null, null, null)
                 looksLikeLocalFunction(obj)
                 parseExpressionStatement({)
                   parseExpression({)
diff --git a/pkg/front_end/parser_testcases/nnbd/nullCheckOnIndex2_with_parens.dart.intertwined.expect b/pkg/front_end/parser_testcases/nnbd/nullCheckOnIndex2_with_parens.dart.intertwined.expect
index 4ec4ae3..60ec194 100644
--- a/pkg/front_end/parser_testcases/nnbd/nullCheckOnIndex2_with_parens.dart.intertwined.expect
+++ b/pkg/front_end/parser_testcases/nnbd/nullCheckOnIndex2_with_parens.dart.intertwined.expect
@@ -29,8 +29,8 @@
           notEofOrValue(}, ()
           parseStatement({)
             parseStatementX({)
-              parseExpressionStatementOrDeclaration({, false)
-                parseExpressionStatementOrDeclarationAfterModifiers({, {, null, null, null, false)
+              parseExpressionStatementOrDeclaration({, null)
+                parseExpressionStatementOrDeclarationAfterModifiers({, {, null, null, null, null)
                   looksLikeLocalFunction(()
                   parseExpressionStatement({)
                     parseExpression({)
diff --git a/pkg/front_end/parser_testcases/nnbd/nullCheckOnIndex3.dart.intertwined.expect b/pkg/front_end/parser_testcases/nnbd/nullCheckOnIndex3.dart.intertwined.expect
index 9e58ef9c..3cb02392 100644
--- a/pkg/front_end/parser_testcases/nnbd/nullCheckOnIndex3.dart.intertwined.expect
+++ b/pkg/front_end/parser_testcases/nnbd/nullCheckOnIndex3.dart.intertwined.expect
@@ -29,7 +29,7 @@
           notEofOrValue(}, foo)
           parseStatement({)
             parseStatementX({)
-              parseExpressionStatementOrDeclarationAfterModifiers({, {, null, null, null, false)
+              parseExpressionStatementOrDeclarationAfterModifiers({, {, null, null, null, null)
                 looksLikeLocalFunction(foo)
                 parseExpressionStatement({)
                   parseExpression({)
diff --git a/pkg/front_end/parser_testcases/nnbd/nullCheckOnIndex3_with_parens.dart.intertwined.expect b/pkg/front_end/parser_testcases/nnbd/nullCheckOnIndex3_with_parens.dart.intertwined.expect
index 8978dc6..d82b5d8 100644
--- a/pkg/front_end/parser_testcases/nnbd/nullCheckOnIndex3_with_parens.dart.intertwined.expect
+++ b/pkg/front_end/parser_testcases/nnbd/nullCheckOnIndex3_with_parens.dart.intertwined.expect
@@ -29,8 +29,8 @@
           notEofOrValue(}, ()
           parseStatement({)
             parseStatementX({)
-              parseExpressionStatementOrDeclaration({, false)
-                parseExpressionStatementOrDeclarationAfterModifiers({, {, null, null, null, false)
+              parseExpressionStatementOrDeclaration({, null)
+                parseExpressionStatementOrDeclarationAfterModifiers({, {, null, null, null, null)
                   looksLikeLocalFunction(()
                   parseExpressionStatement({)
                     parseExpression({)
diff --git a/pkg/front_end/parser_testcases/nnbd/nullCheckOnIndex4.dart.intertwined.expect b/pkg/front_end/parser_testcases/nnbd/nullCheckOnIndex4.dart.intertwined.expect
index d0ca72f..008aad6 100644
--- a/pkg/front_end/parser_testcases/nnbd/nullCheckOnIndex4.dart.intertwined.expect
+++ b/pkg/front_end/parser_testcases/nnbd/nullCheckOnIndex4.dart.intertwined.expect
@@ -29,7 +29,7 @@
           notEofOrValue(}, foo)
           parseStatement({)
             parseStatementX({)
-              parseExpressionStatementOrDeclarationAfterModifiers({, {, null, null, null, false)
+              parseExpressionStatementOrDeclarationAfterModifiers({, {, null, null, null, null)
                 looksLikeLocalFunction(foo)
                 parseExpressionStatement({)
                   parseExpression({)
diff --git a/pkg/front_end/parser_testcases/nnbd/nullCheckOnIndex4_with_parens.dart.intertwined.expect b/pkg/front_end/parser_testcases/nnbd/nullCheckOnIndex4_with_parens.dart.intertwined.expect
index c9540a8..9121ae0 100644
--- a/pkg/front_end/parser_testcases/nnbd/nullCheckOnIndex4_with_parens.dart.intertwined.expect
+++ b/pkg/front_end/parser_testcases/nnbd/nullCheckOnIndex4_with_parens.dart.intertwined.expect
@@ -29,8 +29,8 @@
           notEofOrValue(}, ()
           parseStatement({)
             parseStatementX({)
-              parseExpressionStatementOrDeclaration({, false)
-                parseExpressionStatementOrDeclarationAfterModifiers({, {, null, null, null, false)
+              parseExpressionStatementOrDeclaration({, null)
+                parseExpressionStatementOrDeclarationAfterModifiers({, {, null, null, null, null)
                   looksLikeLocalFunction(()
                   parseExpressionStatement({)
                     parseExpression({)
diff --git a/pkg/front_end/parser_testcases/nnbd/nullCheckOnIndex5.dart.intertwined.expect b/pkg/front_end/parser_testcases/nnbd/nullCheckOnIndex5.dart.intertwined.expect
index b15f181..0d4ca4e 100644
--- a/pkg/front_end/parser_testcases/nnbd/nullCheckOnIndex5.dart.intertwined.expect
+++ b/pkg/front_end/parser_testcases/nnbd/nullCheckOnIndex5.dart.intertwined.expect
@@ -29,7 +29,7 @@
           notEofOrValue(}, foo)
           parseStatement({)
             parseStatementX({)
-              parseExpressionStatementOrDeclarationAfterModifiers({, {, null, null, null, false)
+              parseExpressionStatementOrDeclarationAfterModifiers({, {, null, null, null, null)
                 looksLikeLocalFunction(foo)
                 parseExpressionStatement({)
                   parseExpression({)
diff --git a/pkg/front_end/parser_testcases/nnbd/nullCheckOnIndex5_with_parens.dart.intertwined.expect b/pkg/front_end/parser_testcases/nnbd/nullCheckOnIndex5_with_parens.dart.intertwined.expect
index 05d0b1a..6b2e061 100644
--- a/pkg/front_end/parser_testcases/nnbd/nullCheckOnIndex5_with_parens.dart.intertwined.expect
+++ b/pkg/front_end/parser_testcases/nnbd/nullCheckOnIndex5_with_parens.dart.intertwined.expect
@@ -29,8 +29,8 @@
           notEofOrValue(}, ()
           parseStatement({)
             parseStatementX({)
-              parseExpressionStatementOrDeclaration({, false)
-                parseExpressionStatementOrDeclarationAfterModifiers({, {, null, null, null, false)
+              parseExpressionStatementOrDeclaration({, null)
+                parseExpressionStatementOrDeclarationAfterModifiers({, {, null, null, null, null)
                   looksLikeLocalFunction(()
                   parseExpressionStatement({)
                     parseExpression({)
diff --git a/pkg/front_end/parser_testcases/nnbd/nullCheckOnIndex6.dart.intertwined.expect b/pkg/front_end/parser_testcases/nnbd/nullCheckOnIndex6.dart.intertwined.expect
index bb93a2f..14b68ff 100644
--- a/pkg/front_end/parser_testcases/nnbd/nullCheckOnIndex6.dart.intertwined.expect
+++ b/pkg/front_end/parser_testcases/nnbd/nullCheckOnIndex6.dart.intertwined.expect
@@ -29,7 +29,7 @@
           notEofOrValue(}, foo)
           parseStatement({)
             parseStatementX({)
-              parseExpressionStatementOrDeclarationAfterModifiers({, {, null, null, null, false)
+              parseExpressionStatementOrDeclarationAfterModifiers({, {, null, null, null, null)
                 looksLikeLocalFunction(foo)
                 parseExpressionStatement({)
                   parseExpression({)
diff --git a/pkg/front_end/parser_testcases/nnbd/nullCheckOnIndex6_with_parens.dart.intertwined.expect b/pkg/front_end/parser_testcases/nnbd/nullCheckOnIndex6_with_parens.dart.intertwined.expect
index 11bfe25..082a615 100644
--- a/pkg/front_end/parser_testcases/nnbd/nullCheckOnIndex6_with_parens.dart.intertwined.expect
+++ b/pkg/front_end/parser_testcases/nnbd/nullCheckOnIndex6_with_parens.dart.intertwined.expect
@@ -29,8 +29,8 @@
           notEofOrValue(}, ()
           parseStatement({)
             parseStatementX({)
-              parseExpressionStatementOrDeclaration({, false)
-                parseExpressionStatementOrDeclarationAfterModifiers({, {, null, null, null, false)
+              parseExpressionStatementOrDeclaration({, null)
+                parseExpressionStatementOrDeclarationAfterModifiers({, {, null, null, null, null)
                   looksLikeLocalFunction(()
                   parseExpressionStatement({)
                     parseExpression({)
diff --git a/pkg/front_end/parser_testcases/nnbd/nullCheckOnIndex_with_parens.dart.intertwined.expect b/pkg/front_end/parser_testcases/nnbd/nullCheckOnIndex_with_parens.dart.intertwined.expect
index 92bbb14..26bc3e8 100644
--- a/pkg/front_end/parser_testcases/nnbd/nullCheckOnIndex_with_parens.dart.intertwined.expect
+++ b/pkg/front_end/parser_testcases/nnbd/nullCheckOnIndex_with_parens.dart.intertwined.expect
@@ -29,8 +29,8 @@
           notEofOrValue(}, ()
           parseStatement({)
             parseStatementX({)
-              parseExpressionStatementOrDeclaration({, false)
-                parseExpressionStatementOrDeclarationAfterModifiers({, {, null, null, null, false)
+              parseExpressionStatementOrDeclaration({, null)
+                parseExpressionStatementOrDeclarationAfterModifiers({, {, null, null, null, null)
                   looksLikeLocalFunction(()
                   parseExpressionStatement({)
                     parseExpression({)
diff --git a/pkg/front_end/parser_testcases/nnbd/null_shorting_index.dart.intertwined.expect b/pkg/front_end/parser_testcases/nnbd/null_shorting_index.dart.intertwined.expect
index 8f2b227..9c8c949 100644
--- a/pkg/front_end/parser_testcases/nnbd/null_shorting_index.dart.intertwined.expect
+++ b/pkg/front_end/parser_testcases/nnbd/null_shorting_index.dart.intertwined.expect
@@ -168,7 +168,7 @@
           notEofOrValue(}, Class1)
           parseStatement({)
             parseStatementX({)
-              parseExpressionStatementOrDeclarationAfterModifiers({, {, null, null, null, false)
+              parseExpressionStatementOrDeclarationAfterModifiers({, {, null, null, null, null)
                 looksLikeLocalFunction(c1)
                 listener: beginMetadataStar(Class1)
                 listener: endMetadataStar(0)
@@ -189,7 +189,7 @@
           notEofOrValue(}, c1)
           parseStatement(;)
             parseStatementX(;)
-              parseExpressionStatementOrDeclarationAfterModifiers(;, ;, null, null, null, false)
+              parseExpressionStatementOrDeclarationAfterModifiers(;, ;, null, null, null, null)
                 looksLikeLocalFunction(c1)
                 parseExpressionStatement(;)
                   parseExpression(;)
@@ -221,7 +221,7 @@
           notEofOrValue(}, c1)
           parseStatement(;)
             parseStatementX(;)
-              parseExpressionStatementOrDeclarationAfterModifiers(;, ;, null, null, null, false)
+              parseExpressionStatementOrDeclarationAfterModifiers(;, ;, null, null, null, null)
                 looksLikeLocalFunction(c1)
                 parseExpressionStatement(;)
                   parseExpression(;)
@@ -259,7 +259,7 @@
           notEofOrValue(}, c1)
           parseStatement(;)
             parseStatementX(;)
-              parseExpressionStatementOrDeclarationAfterModifiers(;, ;, null, null, null, false)
+              parseExpressionStatementOrDeclarationAfterModifiers(;, ;, null, null, null, null)
                 looksLikeLocalFunction(c1)
                 parseExpressionStatement(;)
                   parseExpression(;)
@@ -299,7 +299,7 @@
           notEofOrValue(}, c1)
           parseStatement(;)
             parseStatementX(;)
-              parseExpressionStatementOrDeclarationAfterModifiers(;, ;, null, null, null, false)
+              parseExpressionStatementOrDeclarationAfterModifiers(;, ;, null, null, null, null)
                 looksLikeLocalFunction(c1)
                 parseExpressionStatement(;)
                   parseExpression(;)
@@ -349,7 +349,7 @@
           notEofOrValue(}, c1)
           parseStatement(;)
             parseStatementX(;)
-              parseExpressionStatementOrDeclarationAfterModifiers(;, ;, null, null, null, false)
+              parseExpressionStatementOrDeclarationAfterModifiers(;, ;, null, null, null, null)
                 looksLikeLocalFunction(c1)
                 parseExpressionStatement(;)
                   parseExpression(;)
@@ -389,7 +389,7 @@
           notEofOrValue(}, c1)
           parseStatement(;)
             parseStatementX(;)
-              parseExpressionStatementOrDeclarationAfterModifiers(;, ;, null, null, null, false)
+              parseExpressionStatementOrDeclarationAfterModifiers(;, ;, null, null, null, null)
                 looksLikeLocalFunction(c1)
                 parseExpressionStatement(;)
                   parseExpression(;)
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 92444e6..8f16f71 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
@@ -29,8 +29,8 @@
           notEofOrValue(}, dynamic)
           parseStatement({)
             parseStatementX({)
-              parseExpressionStatementOrDeclaration({, false)
-                parseExpressionStatementOrDeclarationAfterModifiers({, {, null, null, null, false)
+              parseExpressionStatementOrDeclaration({, null)
+                parseExpressionStatementOrDeclarationAfterModifiers({, {, null, null, null, null)
                   looksLikeLocalFunction(foo)
                   listener: beginMetadataStar(dynamic)
                   listener: endMetadataStar(0)
@@ -72,7 +72,7 @@
           notEofOrValue(}, var)
           parseStatement(;)
             parseStatementX(;)
-              parseExpressionStatementOrDeclarationAfterModifiers(var, ;, null, var, null, false)
+              parseExpressionStatementOrDeclarationAfterModifiers(var, ;, null, var, null, null)
                 looksLikeLocalFunction(bar)
                 listener: beginMetadataStar(var)
                 listener: endMetadataStar(0)
@@ -118,8 +118,8 @@
           notEofOrValue(}, required)
           parseStatement(;)
             parseStatementX(;)
-              parseExpressionStatementOrDeclaration(;, false)
-                parseExpressionStatementOrDeclarationAfterModifiers(;, ;, null, null, null, false)
+              parseExpressionStatementOrDeclaration(;, null)
+                parseExpressionStatementOrDeclarationAfterModifiers(;, ;, null, null, null, null)
                   looksLikeLocalFunction(required)
                   parseExpressionStatement(;)
                     parseExpression(;)
@@ -146,7 +146,7 @@
           notEofOrValue(}, bar)
           parseStatement(;)
             parseStatementX(;)
-              parseExpressionStatementOrDeclarationAfterModifiers(;, ;, null, null, null, false)
+              parseExpressionStatementOrDeclarationAfterModifiers(;, ;, null, null, null, null)
                 looksLikeLocalFunction(bar)
                 parseExpressionStatement(;)
                   parseExpression(;)
@@ -171,8 +171,8 @@
           notEofOrValue(}, new)
           parseStatement(;)
             parseStatementX(;)
-              parseExpressionStatementOrDeclaration(;, false)
-                parseExpressionStatementOrDeclarationAfterModifiers(;, ;, null, null, null, false)
+              parseExpressionStatementOrDeclaration(;, null)
+                parseExpressionStatementOrDeclarationAfterModifiers(;, ;, null, null, null, null)
                   looksLikeLocalFunction(new)
                   parseExpressionStatement(;)
                     parseExpression(;)
@@ -217,8 +217,8 @@
           notEofOrValue(}, new)
           parseStatement(;)
             parseStatementX(;)
-              parseExpressionStatementOrDeclaration(;, false)
-                parseExpressionStatementOrDeclarationAfterModifiers(;, ;, null, null, null, false)
+              parseExpressionStatementOrDeclaration(;, null)
+                parseExpressionStatementOrDeclarationAfterModifiers(;, ;, null, null, null, null)
                   looksLikeLocalFunction(new)
                   parseExpressionStatement(;)
                     parseExpression(;)
@@ -287,7 +287,7 @@
           notEofOrValue(}, print)
           parseStatement({)
             parseStatementX({)
-              parseExpressionStatementOrDeclarationAfterModifiers({, {, null, null, null, false)
+              parseExpressionStatementOrDeclarationAfterModifiers({, {, null, null, null, null)
                 looksLikeLocalFunction(print)
                 parseExpressionStatement({)
                   parseExpression({)
@@ -374,7 +374,7 @@
                   notEofOrValue(}, print)
                   parseStatement({)
                     parseStatementX({)
-                      parseExpressionStatementOrDeclarationAfterModifiers({, {, null, null, null, false)
+                      parseExpressionStatementOrDeclarationAfterModifiers({, {, null, null, null, null)
                         looksLikeLocalFunction(print)
                         parseExpressionStatement({)
                           parseExpression({)
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 dfb3b61..547a369 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
@@ -29,8 +29,8 @@
           notEofOrValue(}, dynamic)
           parseStatement({)
             parseStatementX({)
-              parseExpressionStatementOrDeclaration({, false)
-                parseExpressionStatementOrDeclarationAfterModifiers({, {, null, null, null, false)
+              parseExpressionStatementOrDeclaration({, null)
+                parseExpressionStatementOrDeclarationAfterModifiers({, {, null, null, null, null)
                   looksLikeLocalFunction(foo)
                   listener: beginMetadataStar(dynamic)
                   listener: endMetadataStar(0)
@@ -72,7 +72,7 @@
           notEofOrValue(}, var)
           parseStatement(;)
             parseStatementX(;)
-              parseExpressionStatementOrDeclarationAfterModifiers(var, ;, null, var, null, false)
+              parseExpressionStatementOrDeclarationAfterModifiers(var, ;, null, var, null, null)
                 looksLikeLocalFunction(bar)
                 listener: beginMetadataStar(var)
                 listener: endMetadataStar(0)
@@ -118,8 +118,8 @@
           notEofOrValue(}, required)
           parseStatement(;)
             parseStatementX(;)
-              parseExpressionStatementOrDeclaration(;, false)
-                parseExpressionStatementOrDeclarationAfterModifiers(;, ;, null, null, null, false)
+              parseExpressionStatementOrDeclaration(;, null)
+                parseExpressionStatementOrDeclarationAfterModifiers(;, ;, null, null, null, null)
                   looksLikeLocalFunction(required)
                   parseExpressionStatement(;)
                     parseExpression(;)
@@ -146,7 +146,7 @@
           notEofOrValue(}, bar)
           parseStatement(;)
             parseStatementX(;)
-              parseExpressionStatementOrDeclarationAfterModifiers(;, ;, null, null, null, false)
+              parseExpressionStatementOrDeclarationAfterModifiers(;, ;, null, null, null, null)
                 looksLikeLocalFunction(bar)
                 parseExpressionStatement(;)
                   parseExpression(;)
@@ -171,8 +171,8 @@
           notEofOrValue(}, new)
           parseStatement(;)
             parseStatementX(;)
-              parseExpressionStatementOrDeclaration(;, false)
-                parseExpressionStatementOrDeclarationAfterModifiers(;, ;, null, null, null, false)
+              parseExpressionStatementOrDeclaration(;, null)
+                parseExpressionStatementOrDeclarationAfterModifiers(;, ;, null, null, null, null)
                   looksLikeLocalFunction(new)
                   parseExpressionStatement(;)
                     parseExpression(;)
@@ -217,8 +217,8 @@
           notEofOrValue(}, new)
           parseStatement(;)
             parseStatementX(;)
-              parseExpressionStatementOrDeclaration(;, false)
-                parseExpressionStatementOrDeclarationAfterModifiers(;, ;, null, null, null, false)
+              parseExpressionStatementOrDeclaration(;, null)
+                parseExpressionStatementOrDeclarationAfterModifiers(;, ;, null, null, null, null)
                   looksLikeLocalFunction(new)
                   parseExpressionStatement(;)
                     parseExpression(;)
@@ -303,7 +303,7 @@
           notEofOrValue(}, print)
           parseStatement({)
             parseStatementX({)
-              parseExpressionStatementOrDeclarationAfterModifiers({, {, null, null, null, false)
+              parseExpressionStatementOrDeclarationAfterModifiers({, {, null, null, null, null)
                 looksLikeLocalFunction(print)
                 parseExpressionStatement({)
                   parseExpression({)
@@ -390,7 +390,7 @@
                   notEofOrValue(}, print)
                   parseStatement({)
                     parseStatementX({)
-                      parseExpressionStatementOrDeclarationAfterModifiers({, {, null, null, null, false)
+                      parseExpressionStatementOrDeclarationAfterModifiers({, {, null, null, null, null)
                         looksLikeLocalFunction(print)
                         parseExpressionStatement({)
                           parseExpression({)
diff --git a/pkg/front_end/parser_testcases/no-triple-shift/define_triple_shift_method.dart.intertwined.expect b/pkg/front_end/parser_testcases/no-triple-shift/define_triple_shift_method.dart.intertwined.expect
index 62585ef..1eb1da8 100644
--- a/pkg/front_end/parser_testcases/no-triple-shift/define_triple_shift_method.dart.intertwined.expect
+++ b/pkg/front_end/parser_testcases/no-triple-shift/define_triple_shift_method.dart.intertwined.expect
@@ -108,7 +108,7 @@
           notEofOrValue(}, Foo)
           parseStatement({)
             parseStatementX({)
-              parseExpressionStatementOrDeclarationAfterModifiers({, {, null, null, null, false)
+              parseExpressionStatementOrDeclarationAfterModifiers({, {, null, null, null, null)
                 looksLikeLocalFunction(foo)
                 listener: beginMetadataStar(Foo)
                 listener: endMetadataStar(0)
@@ -150,7 +150,7 @@
           notEofOrValue(}, foo)
           parseStatement(;)
             parseStatementX(;)
-              parseExpressionStatementOrDeclarationAfterModifiers(;, ;, null, null, null, false)
+              parseExpressionStatementOrDeclarationAfterModifiers(;, ;, null, null, null, null)
                 looksLikeLocalFunction(foo)
                 parseExpressionStatement(;)
                   parseExpression(;)
@@ -181,7 +181,7 @@
           notEofOrValue(}, print)
           parseStatement(;)
             parseStatementX(;)
-              parseExpressionStatementOrDeclarationAfterModifiers(;, ;, null, null, null, false)
+              parseExpressionStatementOrDeclarationAfterModifiers(;, ;, null, null, null, null)
                 looksLikeLocalFunction(print)
                 parseExpressionStatement(;)
                   parseExpression(;)
@@ -229,7 +229,7 @@
           notEofOrValue(}, print)
           parseStatement(;)
             parseStatementX(;)
-              parseExpressionStatementOrDeclarationAfterModifiers(;, ;, null, null, null, false)
+              parseExpressionStatementOrDeclarationAfterModifiers(;, ;, null, null, null, null)
                 looksLikeLocalFunction(print)
                 parseExpressionStatement(;)
                   parseExpression(;)
@@ -336,7 +336,7 @@
                       notEofOrValue(}, print)
                       parseStatement({)
                         parseStatementX({)
-                          parseExpressionStatementOrDeclarationAfterModifiers({, {, null, null, null, false)
+                          parseExpressionStatementOrDeclarationAfterModifiers({, {, null, null, null, null)
                             looksLikeLocalFunction(print)
                             parseExpressionStatement({)
                               parseExpression({)
diff --git a/pkg/front_end/parser_testcases/no-triple-shift/define_triple_shift_method_prime.dart.intertwined.expect b/pkg/front_end/parser_testcases/no-triple-shift/define_triple_shift_method_prime.dart.intertwined.expect
index 913abe8..a14bb11 100644
--- a/pkg/front_end/parser_testcases/no-triple-shift/define_triple_shift_method_prime.dart.intertwined.expect
+++ b/pkg/front_end/parser_testcases/no-triple-shift/define_triple_shift_method_prime.dart.intertwined.expect
@@ -105,7 +105,7 @@
           notEofOrValue(}, Foo)
           parseStatement({)
             parseStatementX({)
-              parseExpressionStatementOrDeclarationAfterModifiers({, {, null, null, null, false)
+              parseExpressionStatementOrDeclarationAfterModifiers({, {, null, null, null, null)
                 looksLikeLocalFunction(foo)
                 listener: beginMetadataStar(Foo)
                 listener: endMetadataStar(0)
@@ -147,7 +147,7 @@
           notEofOrValue(}, foo)
           parseStatement(;)
             parseStatementX(;)
-              parseExpressionStatementOrDeclarationAfterModifiers(;, ;, null, null, null, false)
+              parseExpressionStatementOrDeclarationAfterModifiers(;, ;, null, null, null, null)
                 looksLikeLocalFunction(foo)
                 parseExpressionStatement(;)
                   parseExpression(;)
@@ -175,7 +175,7 @@
           notEofOrValue(}, print)
           parseStatement(;)
             parseStatementX(;)
-              parseExpressionStatementOrDeclarationAfterModifiers(;, ;, null, null, null, false)
+              parseExpressionStatementOrDeclarationAfterModifiers(;, ;, null, null, null, null)
                 looksLikeLocalFunction(print)
                 parseExpressionStatement(;)
                   parseExpression(;)
@@ -220,7 +220,7 @@
           notEofOrValue(}, print)
           parseStatement(;)
             parseStatementX(;)
-              parseExpressionStatementOrDeclarationAfterModifiers(;, ;, null, null, null, false)
+              parseExpressionStatementOrDeclarationAfterModifiers(;, ;, null, null, null, null)
                 looksLikeLocalFunction(print)
                 parseExpressionStatement(;)
                   parseExpression(;)
@@ -321,7 +321,7 @@
                       notEofOrValue(}, print)
                       parseStatement({)
                         parseStatementX({)
-                          parseExpressionStatementOrDeclarationAfterModifiers({, {, null, null, null, false)
+                          parseExpressionStatementOrDeclarationAfterModifiers({, {, null, null, null, null)
                             looksLikeLocalFunction(print)
                             parseExpressionStatement({)
                               parseExpression({)
diff --git a/pkg/front_end/parser_testcases/no-triple-shift/simple_attempted_usage_of_triple_shift.dart.intertwined.expect b/pkg/front_end/parser_testcases/no-triple-shift/simple_attempted_usage_of_triple_shift.dart.intertwined.expect
index 6443acf..cee6959 100644
--- a/pkg/front_end/parser_testcases/no-triple-shift/simple_attempted_usage_of_triple_shift.dart.intertwined.expect
+++ b/pkg/front_end/parser_testcases/no-triple-shift/simple_attempted_usage_of_triple_shift.dart.intertwined.expect
@@ -44,7 +44,7 @@
           notEofOrValue(}, var)
           parseStatement({)
             parseStatementX({)
-              parseExpressionStatementOrDeclarationAfterModifiers(var, {, null, var, null, false)
+              parseExpressionStatementOrDeclarationAfterModifiers(var, {, null, var, null, null)
                 looksLikeLocalFunction(x)
                 listener: beginMetadataStar(var)
                 listener: endMetadataStar(0)
@@ -80,7 +80,7 @@
           notEofOrValue(}, print)
           parseStatement(;)
             parseStatementX(;)
-              parseExpressionStatementOrDeclarationAfterModifiers(;, ;, null, null, null, false)
+              parseExpressionStatementOrDeclarationAfterModifiers(;, ;, null, null, null, null)
                 looksLikeLocalFunction(print)
                 parseExpressionStatement(;)
                   parseExpression(;)
diff --git a/pkg/front_end/parser_testcases/no-triple-shift/triple_shift_not_triple_shift.dart.intertwined.expect b/pkg/front_end/parser_testcases/no-triple-shift/triple_shift_not_triple_shift.dart.intertwined.expect
index 4f7f776..5983368 100644
--- a/pkg/front_end/parser_testcases/no-triple-shift/triple_shift_not_triple_shift.dart.intertwined.expect
+++ b/pkg/front_end/parser_testcases/no-triple-shift/triple_shift_not_triple_shift.dart.intertwined.expect
@@ -150,7 +150,7 @@
           notEofOrValue(}, print)
           parseStatement({)
             parseStatementX({)
-              parseExpressionStatementOrDeclarationAfterModifiers({, {, null, null, null, false)
+              parseExpressionStatementOrDeclarationAfterModifiers({, {, null, null, null, null)
                 looksLikeLocalFunction(print)
                 parseExpressionStatement({)
                   parseExpression({)
diff --git a/pkg/front_end/parser_testcases/no-triple-shift/triple_shift_symbol.dart.intertwined.expect b/pkg/front_end/parser_testcases/no-triple-shift/triple_shift_symbol.dart.intertwined.expect
index e56cb27..19e9353 100644
--- a/pkg/front_end/parser_testcases/no-triple-shift/triple_shift_symbol.dart.intertwined.expect
+++ b/pkg/front_end/parser_testcases/no-triple-shift/triple_shift_symbol.dart.intertwined.expect
@@ -29,7 +29,7 @@
           notEofOrValue(}, print)
           parseStatement({)
             parseStatementX({)
-              parseExpressionStatementOrDeclarationAfterModifiers({, {, null, null, null, false)
+              parseExpressionStatementOrDeclarationAfterModifiers({, {, null, null, null, null)
                 looksLikeLocalFunction(print)
                 parseExpressionStatement({)
                   parseExpression({)
diff --git a/pkg/front_end/parser_testcases/non-nnbd/issue_39326.dart.intertwined.expect b/pkg/front_end/parser_testcases/non-nnbd/issue_39326.dart.intertwined.expect
index d3c8ed1..d3e0dcf 100644
--- a/pkg/front_end/parser_testcases/non-nnbd/issue_39326.dart.intertwined.expect
+++ b/pkg/front_end/parser_testcases/non-nnbd/issue_39326.dart.intertwined.expect
@@ -29,7 +29,7 @@
           notEofOrValue(}, var)
           parseStatement({)
             parseStatementX({)
-              parseExpressionStatementOrDeclarationAfterModifiers(var, {, null, var, null, false)
+              parseExpressionStatementOrDeclarationAfterModifiers(var, {, null, var, null, null)
                 looksLikeLocalFunction(c)
                 listener: beginMetadataStar(var)
                 listener: endMetadataStar(0)
@@ -48,7 +48,7 @@
           notEofOrValue(}, c)
           parseStatement(;)
             parseStatementX(;)
-              parseExpressionStatementOrDeclarationAfterModifiers(;, ;, null, null, null, false)
+              parseExpressionStatementOrDeclarationAfterModifiers(;, ;, null, null, null, null)
                 looksLikeLocalFunction(c)
                 parseExpressionStatement(;)
                   parseExpression(;)
diff --git a/pkg/front_end/parser_testcases/non-nnbd/issue_40267_conditional.dart.intertwined.expect b/pkg/front_end/parser_testcases/non-nnbd/issue_40267_conditional.dart.intertwined.expect
index 6eaf362..23116f8 100644
--- a/pkg/front_end/parser_testcases/non-nnbd/issue_40267_conditional.dart.intertwined.expect
+++ b/pkg/front_end/parser_testcases/non-nnbd/issue_40267_conditional.dart.intertwined.expect
@@ -29,7 +29,7 @@
           notEofOrValue(}, var)
           parseStatement({)
             parseStatementX({)
-              parseExpressionStatementOrDeclarationAfterModifiers(var, {, null, var, null, false)
+              parseExpressionStatementOrDeclarationAfterModifiers(var, {, null, var, null, null)
                 looksLikeLocalFunction(a)
                 listener: beginMetadataStar(var)
                 listener: endMetadataStar(0)
@@ -62,7 +62,7 @@
           notEofOrValue(}, a)
           parseStatement(;)
             parseStatementX(;)
-              parseExpressionStatementOrDeclarationAfterModifiers(;, ;, null, null, null, false)
+              parseExpressionStatementOrDeclarationAfterModifiers(;, ;, null, null, null, null)
                 looksLikeLocalFunction(a)
                 parseExpressionStatement(;)
                   parseExpression(;)
@@ -145,7 +145,7 @@
           notEofOrValue(}, a)
           parseStatement(;)
             parseStatementX(;)
-              parseExpressionStatementOrDeclarationAfterModifiers(;, ;, null, null, null, false)
+              parseExpressionStatementOrDeclarationAfterModifiers(;, ;, null, null, null, null)
                 looksLikeLocalFunction(a)
                 parseExpressionStatement(;)
                   parseExpression(;)
@@ -228,7 +228,7 @@
           notEofOrValue(}, a)
           parseStatement(;)
             parseStatementX(;)
-              parseExpressionStatementOrDeclarationAfterModifiers(;, ;, null, null, null, false)
+              parseExpressionStatementOrDeclarationAfterModifiers(;, ;, null, null, null, null)
                 looksLikeLocalFunction(a)
                 parseExpressionStatement(;)
                   parseExpression(;)
@@ -335,7 +335,7 @@
           notEofOrValue(}, a)
           parseStatement(;)
             parseStatementX(;)
-              parseExpressionStatementOrDeclarationAfterModifiers(;, ;, null, null, null, false)
+              parseExpressionStatementOrDeclarationAfterModifiers(;, ;, null, null, null, null)
                 looksLikeLocalFunction(a)
                 parseExpressionStatement(;)
                   parseExpression(;)
@@ -442,7 +442,7 @@
           notEofOrValue(}, a)
           parseStatement(;)
             parseStatementX(;)
-              parseExpressionStatementOrDeclarationAfterModifiers(;, ;, null, null, null, false)
+              parseExpressionStatementOrDeclarationAfterModifiers(;, ;, null, null, null, null)
                 looksLikeLocalFunction(a)
                 parseExpressionStatement(;)
                   parseExpression(;)
@@ -518,7 +518,7 @@
           notEofOrValue(}, a)
           parseStatement(;)
             parseStatementX(;)
-              parseExpressionStatementOrDeclarationAfterModifiers(;, ;, null, null, null, false)
+              parseExpressionStatementOrDeclarationAfterModifiers(;, ;, null, null, null, null)
                 looksLikeLocalFunction(a)
                 parseExpressionStatement(;)
                   parseExpression(;)
diff --git a/pkg/front_end/parser_testcases/non-nnbd/issue_40267_conditional_2.dart.intertwined.expect b/pkg/front_end/parser_testcases/non-nnbd/issue_40267_conditional_2.dart.intertwined.expect
index 42f9b1c..1d255ea 100644
--- a/pkg/front_end/parser_testcases/non-nnbd/issue_40267_conditional_2.dart.intertwined.expect
+++ b/pkg/front_end/parser_testcases/non-nnbd/issue_40267_conditional_2.dart.intertwined.expect
@@ -29,7 +29,7 @@
           notEofOrValue(}, var)
           parseStatement({)
             parseStatementX({)
-              parseExpressionStatementOrDeclarationAfterModifiers(var, {, null, var, null, false)
+              parseExpressionStatementOrDeclarationAfterModifiers(var, {, null, var, null, null)
                 looksLikeLocalFunction(a)
                 listener: beginMetadataStar(var)
                 listener: endMetadataStar(0)
diff --git a/pkg/front_end/parser_testcases/non-nnbd/issue_40267_conditional_3.dart.intertwined.expect b/pkg/front_end/parser_testcases/non-nnbd/issue_40267_conditional_3.dart.intertwined.expect
index ce7e5a6..2759336 100644
--- a/pkg/front_end/parser_testcases/non-nnbd/issue_40267_conditional_3.dart.intertwined.expect
+++ b/pkg/front_end/parser_testcases/non-nnbd/issue_40267_conditional_3.dart.intertwined.expect
@@ -29,7 +29,7 @@
           notEofOrValue(}, var)
           parseStatement({)
             parseStatementX({)
-              parseExpressionStatementOrDeclarationAfterModifiers(var, {, null, var, null, false)
+              parseExpressionStatementOrDeclarationAfterModifiers(var, {, null, var, null, null)
                 looksLikeLocalFunction(a)
                 listener: beginMetadataStar(var)
                 listener: endMetadataStar(0)
diff --git a/pkg/front_end/parser_testcases/non-nnbd/use_late_in_non_nnbd.dart.intertwined.expect b/pkg/front_end/parser_testcases/non-nnbd/use_late_in_non_nnbd.dart.intertwined.expect
index b9ed1d3..9f4528e 100644
--- a/pkg/front_end/parser_testcases/non-nnbd/use_late_in_non_nnbd.dart.intertwined.expect
+++ b/pkg/front_end/parser_testcases/non-nnbd/use_late_in_non_nnbd.dart.intertwined.expect
@@ -181,7 +181,7 @@
           notEofOrValue(}, int)
           parseStatement({)
             parseStatementX({)
-              parseExpressionStatementOrDeclarationAfterModifiers({, {, null, null, null, false)
+              parseExpressionStatementOrDeclarationAfterModifiers({, {, null, null, null, null)
                 looksLikeLocalFunction(y1)
                 listener: beginMetadataStar(int)
                 listener: endMetadataStar(0)
@@ -202,7 +202,7 @@
           notEofOrValue(}, late)
           parseStatement(;)
             parseStatementX(;)
-              parseExpressionStatementOrDeclarationAfterModifiers(;, ;, null, null, null, false)
+              parseExpressionStatementOrDeclarationAfterModifiers(;, ;, null, null, null, null)
                 indicatesMethodOrField(;)
                 reportRecoverableErrorWithToken(late, Instance of 'Template<(Token) => Message>')
                   listener: handleRecoverableError(Message[UnexpectedModifierInNonNnbd, The modifier 'late' is only available in null safe libraries., null, {lexeme: late}], late, late)
@@ -226,7 +226,7 @@
           notEofOrValue(}, late)
           parseStatement(;)
             parseStatementX(;)
-              parseExpressionStatementOrDeclarationAfterModifiers(;, ;, null, null, null, false)
+              parseExpressionStatementOrDeclarationAfterModifiers(;, ;, null, null, null, null)
                 indicatesMethodOrField(;)
                 reportRecoverableErrorWithToken(late, Instance of 'Template<(Token) => Message>')
                   listener: handleRecoverableError(Message[UnexpectedModifierInNonNnbd, The modifier 'late' is only available in null safe libraries., null, {lexeme: late}], late, late)
@@ -254,7 +254,7 @@
           notEofOrValue(}, late)
           parseStatement(;)
             parseStatementX(;)
-              parseExpressionStatementOrDeclarationAfterModifiers(;, ;, null, null, null, false)
+              parseExpressionStatementOrDeclarationAfterModifiers(;, ;, null, null, null, null)
                 indicatesMethodOrField(;)
                 reportRecoverableErrorWithToken(late, Instance of 'Template<(Token) => Message>')
                   listener: handleRecoverableError(Message[UnexpectedModifierInNonNnbd, The modifier 'late' is only available in null safe libraries., null, {lexeme: late}], late, late)
@@ -278,7 +278,7 @@
           notEofOrValue(}, late)
           parseStatement(;)
             parseStatementX(;)
-              parseExpressionStatementOrDeclarationAfterModifiers(;, ;, null, null, null, false)
+              parseExpressionStatementOrDeclarationAfterModifiers(;, ;, null, null, null, null)
                 looksLikeLocalFunction(y5)
                 listener: beginMetadataStar(late)
                 listener: endMetadataStar(0)
@@ -304,7 +304,7 @@
           notEofOrValue(}, late)
           parseStatement(;)
             parseStatementX(;)
-              parseExpressionStatementOrDeclarationAfterModifiers(;, ;, null, null, null, false)
+              parseExpressionStatementOrDeclarationAfterModifiers(;, ;, null, null, null, null)
                 looksLikeLocalFunction(late)
                 parseExpressionStatement(;)
                   parseExpression(;)
diff --git a/pkg/front_end/parser_testcases/non-nnbd/use_required_in_non_nnbd.dart.intertwined.expect b/pkg/front_end/parser_testcases/non-nnbd/use_required_in_non_nnbd.dart.intertwined.expect
index 9297c29..4b95f3f 100644
--- a/pkg/front_end/parser_testcases/non-nnbd/use_required_in_non_nnbd.dart.intertwined.expect
+++ b/pkg/front_end/parser_testcases/non-nnbd/use_required_in_non_nnbd.dart.intertwined.expect
@@ -46,7 +46,7 @@
           notEofOrValue(}, print)
           parseStatement({)
             parseStatementX({)
-              parseExpressionStatementOrDeclarationAfterModifiers({, {, null, null, null, false)
+              parseExpressionStatementOrDeclarationAfterModifiers({, {, null, null, null, null)
                 looksLikeLocalFunction(print)
                 parseExpressionStatement({)
                   parseExpression({)
@@ -127,7 +127,7 @@
           notEofOrValue(}, print)
           parseStatement({)
             parseStatementX({)
-              parseExpressionStatementOrDeclarationAfterModifiers({, {, null, null, null, false)
+              parseExpressionStatementOrDeclarationAfterModifiers({, {, null, null, null, null)
                 looksLikeLocalFunction(print)
                 parseExpressionStatement({)
                   parseExpression({)
@@ -210,7 +210,7 @@
           notEofOrValue(}, print)
           parseStatement({)
             parseStatementX({)
-              parseExpressionStatementOrDeclarationAfterModifiers({, {, null, null, null, false)
+              parseExpressionStatementOrDeclarationAfterModifiers({, {, null, null, null, null)
                 looksLikeLocalFunction(print)
                 parseExpressionStatement({)
                   parseExpression({)
@@ -320,7 +320,7 @@
                   notEofOrValue(}, print)
                   parseStatement({)
                     parseStatementX({)
-                      parseExpressionStatementOrDeclarationAfterModifiers({, {, null, null, null, false)
+                      parseExpressionStatementOrDeclarationAfterModifiers({, {, null, null, null, null)
                         looksLikeLocalFunction(print)
                         parseExpressionStatement({)
                           parseExpression({)
diff --git a/pkg/front_end/parser_testcases/patterns/cast_inside_case.dart.intertwined.expect b/pkg/front_end/parser_testcases/patterns/cast_inside_case.dart.intertwined.expect
index ed0dab5..fc08ae6 100644
--- a/pkg/front_end/parser_testcases/patterns/cast_inside_case.dart.intertwined.expect
+++ b/pkg/front_end/parser_testcases/patterns/cast_inside_case.dart.intertwined.expect
@@ -42,7 +42,7 @@
           parseStatement({)
             parseStatementX({)
               parseExpressionStatementOrConstDeclaration({)
-                parseExpressionStatementOrDeclarationAfterModifiers(const, {, null, const, Instance of 'NoType', false)
+                parseExpressionStatementOrDeclarationAfterModifiers(const, {, null, const, Instance of 'NoType', null)
                   looksLikeLocalFunction(y)
                   listener: beginMetadataStar(const)
                   listener: endMetadataStar(0)
diff --git a/pkg/front_end/parser_testcases/patterns/constant_identifier_doublyPrefixed_builtin.dart.intertwined.expect b/pkg/front_end/parser_testcases/patterns/constant_identifier_doublyPrefixed_builtin.dart.intertwined.expect
index 3f2b288..97aba29 100644
--- a/pkg/front_end/parser_testcases/patterns/constant_identifier_doublyPrefixed_builtin.dart.intertwined.expect
+++ b/pkg/front_end/parser_testcases/patterns/constant_identifier_doublyPrefixed_builtin.dart.intertwined.expect
@@ -39,7 +39,7 @@
           parseStatement({)
             parseStatementX({)
               parseExpressionStatementOrConstDeclaration({)
-                parseExpressionStatementOrDeclarationAfterModifiers(const, {, null, const, Instance of 'NoType', false)
+                parseExpressionStatementOrDeclarationAfterModifiers(const, {, null, const, Instance of 'NoType', null)
                   looksLikeLocalFunction(y)
                   listener: beginMetadataStar(const)
                   listener: endMetadataStar(0)
diff --git a/pkg/front_end/parser_testcases/patterns/constant_identifier_doublyPrefixed_pseudoKeyword.dart.intertwined.expect b/pkg/front_end/parser_testcases/patterns/constant_identifier_doublyPrefixed_pseudoKeyword.dart.intertwined.expect
index 7b51b42f..112a32d 100644
--- a/pkg/front_end/parser_testcases/patterns/constant_identifier_doublyPrefixed_pseudoKeyword.dart.intertwined.expect
+++ b/pkg/front_end/parser_testcases/patterns/constant_identifier_doublyPrefixed_pseudoKeyword.dart.intertwined.expect
@@ -39,7 +39,7 @@
           parseStatement({)
             parseStatementX({)
               parseExpressionStatementOrConstDeclaration({)
-                parseExpressionStatementOrDeclarationAfterModifiers(const, {, null, const, Instance of 'NoType', false)
+                parseExpressionStatementOrDeclarationAfterModifiers(const, {, null, const, Instance of 'NoType', null)
                   looksLikeLocalFunction(y)
                   listener: beginMetadataStar(const)
                   listener: endMetadataStar(0)
diff --git a/pkg/front_end/parser_testcases/patterns/constant_identifier_inside_case.dart.intertwined.expect b/pkg/front_end/parser_testcases/patterns/constant_identifier_inside_case.dart.intertwined.expect
index f58d3da..77d1048 100644
--- a/pkg/front_end/parser_testcases/patterns/constant_identifier_inside_case.dart.intertwined.expect
+++ b/pkg/front_end/parser_testcases/patterns/constant_identifier_inside_case.dart.intertwined.expect
@@ -42,7 +42,7 @@
           parseStatement({)
             parseStatementX({)
               parseExpressionStatementOrConstDeclaration({)
-                parseExpressionStatementOrDeclarationAfterModifiers(const, {, null, const, Instance of 'NoType', false)
+                parseExpressionStatementOrDeclarationAfterModifiers(const, {, null, const, Instance of 'NoType', null)
                   looksLikeLocalFunction(y)
                   listener: beginMetadataStar(const)
                   listener: endMetadataStar(0)
diff --git a/pkg/front_end/parser_testcases/patterns/constant_identifier_inside_cast.dart.intertwined.expect b/pkg/front_end/parser_testcases/patterns/constant_identifier_inside_cast.dart.intertwined.expect
index bdfc711..bfdbe23 100644
--- a/pkg/front_end/parser_testcases/patterns/constant_identifier_inside_cast.dart.intertwined.expect
+++ b/pkg/front_end/parser_testcases/patterns/constant_identifier_inside_cast.dart.intertwined.expect
@@ -42,7 +42,7 @@
           parseStatement({)
             parseStatementX({)
               parseExpressionStatementOrConstDeclaration({)
-                parseExpressionStatementOrDeclarationAfterModifiers(const, {, null, const, Instance of 'NoType', false)
+                parseExpressionStatementOrDeclarationAfterModifiers(const, {, null, const, Instance of 'NoType', null)
                   looksLikeLocalFunction(y)
                   listener: beginMetadataStar(const)
                   listener: endMetadataStar(0)
diff --git a/pkg/front_end/parser_testcases/patterns/constant_identifier_inside_if_case.dart.intertwined.expect b/pkg/front_end/parser_testcases/patterns/constant_identifier_inside_if_case.dart.intertwined.expect
index 4d6743f..5fbdaf0 100644
--- a/pkg/front_end/parser_testcases/patterns/constant_identifier_inside_if_case.dart.intertwined.expect
+++ b/pkg/front_end/parser_testcases/patterns/constant_identifier_inside_if_case.dart.intertwined.expect
@@ -42,7 +42,7 @@
           parseStatement({)
             parseStatementX({)
               parseExpressionStatementOrConstDeclaration({)
-                parseExpressionStatementOrDeclarationAfterModifiers(const, {, null, const, Instance of 'NoType', false)
+                parseExpressionStatementOrDeclarationAfterModifiers(const, {, null, const, Instance of 'NoType', null)
                   looksLikeLocalFunction(y)
                   listener: beginMetadataStar(const)
                   listener: endMetadataStar(0)
diff --git a/pkg/front_end/parser_testcases/patterns/constant_identifier_inside_null_assert.dart.intertwined.expect b/pkg/front_end/parser_testcases/patterns/constant_identifier_inside_null_assert.dart.intertwined.expect
index 6a2bf44..8eb976c 100644
--- a/pkg/front_end/parser_testcases/patterns/constant_identifier_inside_null_assert.dart.intertwined.expect
+++ b/pkg/front_end/parser_testcases/patterns/constant_identifier_inside_null_assert.dart.intertwined.expect
@@ -42,7 +42,7 @@
           parseStatement({)
             parseStatementX({)
               parseExpressionStatementOrConstDeclaration({)
-                parseExpressionStatementOrDeclarationAfterModifiers(const, {, null, const, Instance of 'NoType', false)
+                parseExpressionStatementOrDeclarationAfterModifiers(const, {, null, const, Instance of 'NoType', null)
                   looksLikeLocalFunction(y)
                   listener: beginMetadataStar(const)
                   listener: endMetadataStar(0)
diff --git a/pkg/front_end/parser_testcases/patterns/constant_identifier_inside_null_check.dart.intertwined.expect b/pkg/front_end/parser_testcases/patterns/constant_identifier_inside_null_check.dart.intertwined.expect
index bb7db49..e6eb394 100644
--- a/pkg/front_end/parser_testcases/patterns/constant_identifier_inside_null_check.dart.intertwined.expect
+++ b/pkg/front_end/parser_testcases/patterns/constant_identifier_inside_null_check.dart.intertwined.expect
@@ -42,7 +42,7 @@
           parseStatement({)
             parseStatementX({)
               parseExpressionStatementOrConstDeclaration({)
-                parseExpressionStatementOrDeclarationAfterModifiers(const, {, null, const, Instance of 'NoType', false)
+                parseExpressionStatementOrDeclarationAfterModifiers(const, {, null, const, Instance of 'NoType', null)
                   looksLikeLocalFunction(y)
                   listener: beginMetadataStar(const)
                   listener: endMetadataStar(0)
diff --git a/pkg/front_end/parser_testcases/patterns/constant_identifier_prefixed_builtin.dart.intertwined.expect b/pkg/front_end/parser_testcases/patterns/constant_identifier_prefixed_builtin.dart.intertwined.expect
index 87372c8..b54e7fb 100644
--- a/pkg/front_end/parser_testcases/patterns/constant_identifier_prefixed_builtin.dart.intertwined.expect
+++ b/pkg/front_end/parser_testcases/patterns/constant_identifier_prefixed_builtin.dart.intertwined.expect
@@ -39,7 +39,7 @@
           parseStatement({)
             parseStatementX({)
               parseExpressionStatementOrConstDeclaration({)
-                parseExpressionStatementOrDeclarationAfterModifiers(const, {, null, const, Instance of 'NoType', false)
+                parseExpressionStatementOrDeclarationAfterModifiers(const, {, null, const, Instance of 'NoType', null)
                   looksLikeLocalFunction(y)
                   listener: beginMetadataStar(const)
                   listener: endMetadataStar(0)
diff --git a/pkg/front_end/parser_testcases/patterns/constant_identifier_prefixed_pseudoKeyword.dart.intertwined.expect b/pkg/front_end/parser_testcases/patterns/constant_identifier_prefixed_pseudoKeyword.dart.intertwined.expect
index e967f3c..d657127 100644
--- a/pkg/front_end/parser_testcases/patterns/constant_identifier_prefixed_pseudoKeyword.dart.intertwined.expect
+++ b/pkg/front_end/parser_testcases/patterns/constant_identifier_prefixed_pseudoKeyword.dart.intertwined.expect
@@ -39,7 +39,7 @@
           parseStatement({)
             parseStatementX({)
               parseExpressionStatementOrConstDeclaration({)
-                parseExpressionStatementOrDeclarationAfterModifiers(const, {, null, const, Instance of 'NoType', false)
+                parseExpressionStatementOrDeclarationAfterModifiers(const, {, null, const, Instance of 'NoType', null)
                   looksLikeLocalFunction(y)
                   listener: beginMetadataStar(const)
                   listener: endMetadataStar(0)
diff --git a/pkg/front_end/parser_testcases/patterns/constant_identifier_unprefixed_beforeWhen.dart.intertwined.expect b/pkg/front_end/parser_testcases/patterns/constant_identifier_unprefixed_beforeWhen.dart.intertwined.expect
index 50b72ef..09b8c7c 100644
--- a/pkg/front_end/parser_testcases/patterns/constant_identifier_unprefixed_beforeWhen.dart.intertwined.expect
+++ b/pkg/front_end/parser_testcases/patterns/constant_identifier_unprefixed_beforeWhen.dart.intertwined.expect
@@ -39,7 +39,7 @@
           parseStatement({)
             parseStatementX({)
               parseExpressionStatementOrConstDeclaration({)
-                parseExpressionStatementOrDeclarationAfterModifiers(const, {, null, const, Instance of 'NoType', false)
+                parseExpressionStatementOrDeclarationAfterModifiers(const, {, null, const, Instance of 'NoType', null)
                   looksLikeLocalFunction(y)
                   listener: beginMetadataStar(const)
                   listener: endMetadataStar(0)
diff --git a/pkg/front_end/parser_testcases/patterns/constant_identifier_unprefixed_builtin.dart.intertwined.expect b/pkg/front_end/parser_testcases/patterns/constant_identifier_unprefixed_builtin.dart.intertwined.expect
index 817df2d..74822cc 100644
--- a/pkg/front_end/parser_testcases/patterns/constant_identifier_unprefixed_builtin.dart.intertwined.expect
+++ b/pkg/front_end/parser_testcases/patterns/constant_identifier_unprefixed_builtin.dart.intertwined.expect
@@ -39,7 +39,7 @@
           parseStatement({)
             parseStatementX({)
               parseExpressionStatementOrConstDeclaration({)
-                parseExpressionStatementOrDeclarationAfterModifiers(const, {, null, const, Instance of 'NoType', false)
+                parseExpressionStatementOrDeclarationAfterModifiers(const, {, null, const, Instance of 'NoType', null)
                   looksLikeLocalFunction(y)
                   listener: beginMetadataStar(const)
                   listener: endMetadataStar(0)
diff --git a/pkg/front_end/parser_testcases/patterns/constant_identifier_unprefixed_pseudoKeyword.dart.intertwined.expect b/pkg/front_end/parser_testcases/patterns/constant_identifier_unprefixed_pseudoKeyword.dart.intertwined.expect
index 4e4434e..f93c4b0 100644
--- a/pkg/front_end/parser_testcases/patterns/constant_identifier_unprefixed_pseudoKeyword.dart.intertwined.expect
+++ b/pkg/front_end/parser_testcases/patterns/constant_identifier_unprefixed_pseudoKeyword.dart.intertwined.expect
@@ -39,7 +39,7 @@
           parseStatement({)
             parseStatementX({)
               parseExpressionStatementOrConstDeclaration({)
-                parseExpressionStatementOrDeclarationAfterModifiers(const, {, null, const, Instance of 'NoType', false)
+                parseExpressionStatementOrDeclarationAfterModifiers(const, {, null, const, Instance of 'NoType', null)
                   looksLikeLocalFunction(y)
                   listener: beginMetadataStar(const)
                   listener: endMetadataStar(0)
diff --git a/pkg/front_end/parser_testcases/patterns/error_recovery_after_question_suffix_in_expression.dart.intertwined.expect b/pkg/front_end/parser_testcases/patterns/error_recovery_after_question_suffix_in_expression.dart.intertwined.expect
index ba51a07..808665b 100644
--- a/pkg/front_end/parser_testcases/patterns/error_recovery_after_question_suffix_in_expression.dart.intertwined.expect
+++ b/pkg/front_end/parser_testcases/patterns/error_recovery_after_question_suffix_in_expression.dart.intertwined.expect
@@ -37,8 +37,8 @@
                   notEofOrValue(}, true)
                   parseStatement({)
                     parseStatementX({)
-                      parseExpressionStatementOrDeclaration({, false)
-                        parseExpressionStatementOrDeclarationAfterModifiers({, {, null, null, null, false)
+                      parseExpressionStatementOrDeclaration({, null)
+                        parseExpressionStatementOrDeclarationAfterModifiers({, {, null, null, null, null)
                           looksLikeLocalFunction(true)
                           parseExpressionStatement({)
                             parseExpression({)
diff --git a/pkg/front_end/parser_testcases/patterns/list_insideAssignment_typed_nonEmpty.dart.intertwined.expect b/pkg/front_end/parser_testcases/patterns/list_insideAssignment_typed_nonEmpty.dart.intertwined.expect
index a7c0701..370c1c3 100644
--- a/pkg/front_end/parser_testcases/patterns/list_insideAssignment_typed_nonEmpty.dart.intertwined.expect
+++ b/pkg/front_end/parser_testcases/patterns/list_insideAssignment_typed_nonEmpty.dart.intertwined.expect
@@ -38,8 +38,8 @@
           notEofOrValue(}, <)
           parseStatement({)
             parseStatementX({)
-              parseExpressionStatementOrDeclaration({, false)
-                parseExpressionStatementOrDeclarationAfterModifiers({, {, null, null, null, false)
+              parseExpressionStatementOrDeclaration({, null)
+                parseExpressionStatementOrDeclarationAfterModifiers({, {, null, null, null, null)
                   looksLikeLocalFunction(<)
                   parseExpressionStatement({)
                     parseExpression({)
diff --git a/pkg/front_end/parser_testcases/patterns/list_insideAssignment_untyped_empty.dart.intertwined.expect b/pkg/front_end/parser_testcases/patterns/list_insideAssignment_untyped_empty.dart.intertwined.expect
index d0da162..765865e 100644
--- a/pkg/front_end/parser_testcases/patterns/list_insideAssignment_untyped_empty.dart.intertwined.expect
+++ b/pkg/front_end/parser_testcases/patterns/list_insideAssignment_untyped_empty.dart.intertwined.expect
@@ -38,8 +38,8 @@
           notEofOrValue(}, [])
           parseStatement({)
             parseStatementX({)
-              parseExpressionStatementOrDeclaration({, false)
-                parseExpressionStatementOrDeclarationAfterModifiers({, {, null, null, null, false)
+              parseExpressionStatementOrDeclaration({, null)
+                parseExpressionStatementOrDeclarationAfterModifiers({, {, null, null, null, null)
                   looksLikeLocalFunction([])
                   parseExpressionStatement({)
                     parseExpression({)
diff --git a/pkg/front_end/parser_testcases/patterns/list_insideAssignment_untyped_emptyWithWhitespace.dart.intertwined.expect b/pkg/front_end/parser_testcases/patterns/list_insideAssignment_untyped_emptyWithWhitespace.dart.intertwined.expect
index 7dc6d84..7f9f607 100644
--- a/pkg/front_end/parser_testcases/patterns/list_insideAssignment_untyped_emptyWithWhitespace.dart.intertwined.expect
+++ b/pkg/front_end/parser_testcases/patterns/list_insideAssignment_untyped_emptyWithWhitespace.dart.intertwined.expect
@@ -38,8 +38,8 @@
           notEofOrValue(}, [)
           parseStatement({)
             parseStatementX({)
-              parseExpressionStatementOrDeclaration({, false)
-                parseExpressionStatementOrDeclarationAfterModifiers({, {, null, null, null, false)
+              parseExpressionStatementOrDeclaration({, null)
+                parseExpressionStatementOrDeclarationAfterModifiers({, {, null, null, null, null)
                   looksLikeLocalFunction([)
                   parseExpressionStatement({)
                     parseExpression({)
diff --git a/pkg/front_end/parser_testcases/patterns/list_insideAssignment_untyped_nonEmpty.dart.intertwined.expect b/pkg/front_end/parser_testcases/patterns/list_insideAssignment_untyped_nonEmpty.dart.intertwined.expect
index d953f0e..a32fef8 100644
--- a/pkg/front_end/parser_testcases/patterns/list_insideAssignment_untyped_nonEmpty.dart.intertwined.expect
+++ b/pkg/front_end/parser_testcases/patterns/list_insideAssignment_untyped_nonEmpty.dart.intertwined.expect
@@ -38,8 +38,8 @@
           notEofOrValue(}, [)
           parseStatement({)
             parseStatementX({)
-              parseExpressionStatementOrDeclaration({, false)
-                parseExpressionStatementOrDeclarationAfterModifiers({, {, null, null, null, false)
+              parseExpressionStatementOrDeclaration({, null)
+                parseExpressionStatementOrDeclarationAfterModifiers({, {, null, null, null, null)
                   looksLikeLocalFunction([)
                   parseExpressionStatement({)
                     parseExpression({)
diff --git a/pkg/front_end/parser_testcases/patterns/list_insideDeclaration_typed_nonEmpty.dart.intertwined.expect b/pkg/front_end/parser_testcases/patterns/list_insideDeclaration_typed_nonEmpty.dart.intertwined.expect
index 24c386e..76818ea 100644
--- a/pkg/front_end/parser_testcases/patterns/list_insideDeclaration_typed_nonEmpty.dart.intertwined.expect
+++ b/pkg/front_end/parser_testcases/patterns/list_insideDeclaration_typed_nonEmpty.dart.intertwined.expect
@@ -38,7 +38,7 @@
           notEofOrValue(}, var)
           parseStatement({)
             parseStatementX({)
-              parseExpressionStatementOrDeclarationAfterModifiers(var, {, null, var, null, false)
+              parseExpressionStatementOrDeclarationAfterModifiers(var, {, null, var, null, null)
                 looksLikeOuterPatternEquals(var)
                   skipOuterPattern(var)
                 listener: beginMetadataStar(var)
diff --git a/pkg/front_end/parser_testcases/patterns/list_insideDeclaration_untyped_empty.dart.intertwined.expect b/pkg/front_end/parser_testcases/patterns/list_insideDeclaration_untyped_empty.dart.intertwined.expect
index 026364c..07198ec 100644
--- a/pkg/front_end/parser_testcases/patterns/list_insideDeclaration_untyped_empty.dart.intertwined.expect
+++ b/pkg/front_end/parser_testcases/patterns/list_insideDeclaration_untyped_empty.dart.intertwined.expect
@@ -38,7 +38,7 @@
           notEofOrValue(}, var)
           parseStatement({)
             parseStatementX({)
-              parseExpressionStatementOrDeclarationAfterModifiers(var, {, null, var, null, false)
+              parseExpressionStatementOrDeclarationAfterModifiers(var, {, null, var, null, null)
                 looksLikeOuterPatternEquals(var)
                   skipOuterPattern(var)
                 listener: beginMetadataStar(var)
diff --git a/pkg/front_end/parser_testcases/patterns/list_insideDeclaration_untyped_emptyWithWhitespace.dart.intertwined.expect b/pkg/front_end/parser_testcases/patterns/list_insideDeclaration_untyped_emptyWithWhitespace.dart.intertwined.expect
index e071e62..a6cd298 100644
--- a/pkg/front_end/parser_testcases/patterns/list_insideDeclaration_untyped_emptyWithWhitespace.dart.intertwined.expect
+++ b/pkg/front_end/parser_testcases/patterns/list_insideDeclaration_untyped_emptyWithWhitespace.dart.intertwined.expect
@@ -38,7 +38,7 @@
           notEofOrValue(}, var)
           parseStatement({)
             parseStatementX({)
-              parseExpressionStatementOrDeclarationAfterModifiers(var, {, null, var, null, false)
+              parseExpressionStatementOrDeclarationAfterModifiers(var, {, null, var, null, null)
                 looksLikeOuterPatternEquals(var)
                   skipOuterPattern(var)
                 listener: beginMetadataStar(var)
diff --git a/pkg/front_end/parser_testcases/patterns/list_insideDeclaration_untyped_nonEmpty.dart.intertwined.expect b/pkg/front_end/parser_testcases/patterns/list_insideDeclaration_untyped_nonEmpty.dart.intertwined.expect
index c3124ce..4c1cf48 100644
--- a/pkg/front_end/parser_testcases/patterns/list_insideDeclaration_untyped_nonEmpty.dart.intertwined.expect
+++ b/pkg/front_end/parser_testcases/patterns/list_insideDeclaration_untyped_nonEmpty.dart.intertwined.expect
@@ -38,7 +38,7 @@
           notEofOrValue(}, var)
           parseStatement({)
             parseStatementX({)
-              parseExpressionStatementOrDeclarationAfterModifiers(var, {, null, var, null, false)
+              parseExpressionStatementOrDeclarationAfterModifiers(var, {, null, var, null, null)
                 looksLikeOuterPatternEquals(var)
                   skipOuterPattern(var)
                 listener: beginMetadataStar(var)
diff --git a/pkg/front_end/parser_testcases/patterns/map_insideAssignment_typed_nonEmpty.dart.intertwined.expect b/pkg/front_end/parser_testcases/patterns/map_insideAssignment_typed_nonEmpty.dart.intertwined.expect
index d90ee47..0cc0b7b 100644
--- a/pkg/front_end/parser_testcases/patterns/map_insideAssignment_typed_nonEmpty.dart.intertwined.expect
+++ b/pkg/front_end/parser_testcases/patterns/map_insideAssignment_typed_nonEmpty.dart.intertwined.expect
@@ -38,8 +38,8 @@
           notEofOrValue(}, <)
           parseStatement({)
             parseStatementX({)
-              parseExpressionStatementOrDeclaration({, false)
-                parseExpressionStatementOrDeclarationAfterModifiers({, {, null, null, null, false)
+              parseExpressionStatementOrDeclaration({, null)
+                parseExpressionStatementOrDeclarationAfterModifiers({, {, null, null, null, null)
                   looksLikeLocalFunction(<)
                   parseExpressionStatement({)
                     parseExpression({)
diff --git a/pkg/front_end/parser_testcases/patterns/map_insideAssignment_untyped_empty.dart.intertwined.expect b/pkg/front_end/parser_testcases/patterns/map_insideAssignment_untyped_empty.dart.intertwined.expect
index 06d1df8..aa5a74b 100644
--- a/pkg/front_end/parser_testcases/patterns/map_insideAssignment_untyped_empty.dart.intertwined.expect
+++ b/pkg/front_end/parser_testcases/patterns/map_insideAssignment_untyped_empty.dart.intertwined.expect
@@ -38,8 +38,8 @@
           notEofOrValue(}, ()
           parseStatement({)
             parseStatementX({)
-              parseExpressionStatementOrDeclaration({, false)
-                parseExpressionStatementOrDeclarationAfterModifiers({, {, null, null, null, false)
+              parseExpressionStatementOrDeclaration({, null)
+                parseExpressionStatementOrDeclarationAfterModifiers({, {, null, null, null, null)
                   looksLikeLocalFunction(()
                   parseExpressionStatement({)
                     parseExpression({)
diff --git a/pkg/front_end/parser_testcases/patterns/map_insideAssignment_untyped_nonEmpty.dart.intertwined.expect b/pkg/front_end/parser_testcases/patterns/map_insideAssignment_untyped_nonEmpty.dart.intertwined.expect
index e9da67b..85484c9 100644
--- a/pkg/front_end/parser_testcases/patterns/map_insideAssignment_untyped_nonEmpty.dart.intertwined.expect
+++ b/pkg/front_end/parser_testcases/patterns/map_insideAssignment_untyped_nonEmpty.dart.intertwined.expect
@@ -38,8 +38,8 @@
           notEofOrValue(}, ()
           parseStatement({)
             parseStatementX({)
-              parseExpressionStatementOrDeclaration({, false)
-                parseExpressionStatementOrDeclarationAfterModifiers({, {, null, null, null, false)
+              parseExpressionStatementOrDeclaration({, null)
+                parseExpressionStatementOrDeclarationAfterModifiers({, {, null, null, null, null)
                   looksLikeLocalFunction(()
                   parseExpressionStatement({)
                     parseExpression({)
diff --git a/pkg/front_end/parser_testcases/patterns/map_insideDeclaration_typed_nonEmpty.dart.intertwined.expect b/pkg/front_end/parser_testcases/patterns/map_insideDeclaration_typed_nonEmpty.dart.intertwined.expect
index dd32cad..5af7557 100644
--- a/pkg/front_end/parser_testcases/patterns/map_insideDeclaration_typed_nonEmpty.dart.intertwined.expect
+++ b/pkg/front_end/parser_testcases/patterns/map_insideDeclaration_typed_nonEmpty.dart.intertwined.expect
@@ -38,7 +38,7 @@
           notEofOrValue(}, var)
           parseStatement({)
             parseStatementX({)
-              parseExpressionStatementOrDeclarationAfterModifiers(var, {, null, var, null, false)
+              parseExpressionStatementOrDeclarationAfterModifiers(var, {, null, var, null, null)
                 looksLikeOuterPatternEquals(var)
                   skipOuterPattern(var)
                 listener: beginMetadataStar(var)
diff --git a/pkg/front_end/parser_testcases/patterns/map_insideDeclaration_untyped_empty.dart.intertwined.expect b/pkg/front_end/parser_testcases/patterns/map_insideDeclaration_untyped_empty.dart.intertwined.expect
index 842b516..f2de8dc 100644
--- a/pkg/front_end/parser_testcases/patterns/map_insideDeclaration_untyped_empty.dart.intertwined.expect
+++ b/pkg/front_end/parser_testcases/patterns/map_insideDeclaration_untyped_empty.dart.intertwined.expect
@@ -38,7 +38,7 @@
           notEofOrValue(}, var)
           parseStatement({)
             parseStatementX({)
-              parseExpressionStatementOrDeclarationAfterModifiers(var, {, null, var, null, false)
+              parseExpressionStatementOrDeclarationAfterModifiers(var, {, null, var, null, null)
                 looksLikeOuterPatternEquals(var)
                   skipOuterPattern(var)
                 listener: beginMetadataStar(var)
diff --git a/pkg/front_end/parser_testcases/patterns/map_insideDeclaration_untyped_nonEmpty.dart.intertwined.expect b/pkg/front_end/parser_testcases/patterns/map_insideDeclaration_untyped_nonEmpty.dart.intertwined.expect
index 12c10fc..ab1b617 100644
--- a/pkg/front_end/parser_testcases/patterns/map_insideDeclaration_untyped_nonEmpty.dart.intertwined.expect
+++ b/pkg/front_end/parser_testcases/patterns/map_insideDeclaration_untyped_nonEmpty.dart.intertwined.expect
@@ -38,7 +38,7 @@
           notEofOrValue(}, var)
           parseStatement({)
             parseStatementX({)
-              parseExpressionStatementOrDeclarationAfterModifiers(var, {, null, var, null, false)
+              parseExpressionStatementOrDeclarationAfterModifiers(var, {, null, var, null, null)
                 looksLikeOuterPatternEquals(var)
                   skipOuterPattern(var)
                 listener: beginMetadataStar(var)
diff --git a/pkg/front_end/parser_testcases/patterns/null_assert_inside_case.dart.intertwined.expect b/pkg/front_end/parser_testcases/patterns/null_assert_inside_case.dart.intertwined.expect
index 6a2bf44..8eb976c 100644
--- a/pkg/front_end/parser_testcases/patterns/null_assert_inside_case.dart.intertwined.expect
+++ b/pkg/front_end/parser_testcases/patterns/null_assert_inside_case.dart.intertwined.expect
@@ -42,7 +42,7 @@
           parseStatement({)
             parseStatementX({)
               parseExpressionStatementOrConstDeclaration({)
-                parseExpressionStatementOrDeclarationAfterModifiers(const, {, null, const, Instance of 'NoType', false)
+                parseExpressionStatementOrDeclarationAfterModifiers(const, {, null, const, Instance of 'NoType', null)
                   looksLikeLocalFunction(y)
                   listener: beginMetadataStar(const)
                   listener: endMetadataStar(0)
diff --git a/pkg/front_end/parser_testcases/patterns/null_check_inside_case.dart.intertwined.expect b/pkg/front_end/parser_testcases/patterns/null_check_inside_case.dart.intertwined.expect
index bb7db49..e6eb394 100644
--- a/pkg/front_end/parser_testcases/patterns/null_check_inside_case.dart.intertwined.expect
+++ b/pkg/front_end/parser_testcases/patterns/null_check_inside_case.dart.intertwined.expect
@@ -42,7 +42,7 @@
           parseStatement({)
             parseStatementX({)
               parseExpressionStatementOrConstDeclaration({)
-                parseExpressionStatementOrDeclarationAfterModifiers(const, {, null, const, Instance of 'NoType', false)
+                parseExpressionStatementOrDeclarationAfterModifiers(const, {, null, const, Instance of 'NoType', null)
                   looksLikeLocalFunction(y)
                   listener: beginMetadataStar(const)
                   listener: endMetadataStar(0)
diff --git a/pkg/front_end/parser_testcases/patterns/object_prefixedNamedUnderscore_withoutTypeArgs_insideDeclaration.dart.intertwined.expect b/pkg/front_end/parser_testcases/patterns/object_prefixedNamedUnderscore_withoutTypeArgs_insideDeclaration.dart.intertwined.expect
index ea4219a..74a400b 100644
--- a/pkg/front_end/parser_testcases/patterns/object_prefixedNamedUnderscore_withoutTypeArgs_insideDeclaration.dart.intertwined.expect
+++ b/pkg/front_end/parser_testcases/patterns/object_prefixedNamedUnderscore_withoutTypeArgs_insideDeclaration.dart.intertwined.expect
@@ -38,7 +38,7 @@
           notEofOrValue(}, var)
           parseStatement({)
             parseStatementX({)
-              parseExpressionStatementOrDeclarationAfterModifiers(var, {, null, var, null, false)
+              parseExpressionStatementOrDeclarationAfterModifiers(var, {, null, var, null, null)
                 looksLikeOuterPatternEquals(var)
                   skipOuterPattern(var)
                     skipObjectPatternRest(Future)
diff --git a/pkg/front_end/parser_testcases/patterns/object_prefixed_withTypeArgs_insideAssignment.dart.intertwined.expect b/pkg/front_end/parser_testcases/patterns/object_prefixed_withTypeArgs_insideAssignment.dart.intertwined.expect
index 1c01bf7..8171b60 100644
--- a/pkg/front_end/parser_testcases/patterns/object_prefixed_withTypeArgs_insideAssignment.dart.intertwined.expect
+++ b/pkg/front_end/parser_testcases/patterns/object_prefixed_withTypeArgs_insideAssignment.dart.intertwined.expect
@@ -38,8 +38,8 @@
           notEofOrValue(}, async)
           parseStatement({)
             parseStatementX({)
-              parseExpressionStatementOrDeclaration({, false)
-                parseExpressionStatementOrDeclarationAfterModifiers({, {, null, null, null, false)
+              parseExpressionStatementOrDeclaration({, null)
+                parseExpressionStatementOrDeclarationAfterModifiers({, {, null, null, null, null)
                   looksLikeLocalFunction(async)
                   parseExpressionStatement({)
                     parseExpression({)
diff --git a/pkg/front_end/parser_testcases/patterns/object_prefixed_withTypeArgs_insideDeclaration.dart.intertwined.expect b/pkg/front_end/parser_testcases/patterns/object_prefixed_withTypeArgs_insideDeclaration.dart.intertwined.expect
index b662059..3e90426 100644
--- a/pkg/front_end/parser_testcases/patterns/object_prefixed_withTypeArgs_insideDeclaration.dart.intertwined.expect
+++ b/pkg/front_end/parser_testcases/patterns/object_prefixed_withTypeArgs_insideDeclaration.dart.intertwined.expect
@@ -38,7 +38,7 @@
           notEofOrValue(}, var)
           parseStatement({)
             parseStatementX({)
-              parseExpressionStatementOrDeclarationAfterModifiers(var, {, null, var, null, false)
+              parseExpressionStatementOrDeclarationAfterModifiers(var, {, null, var, null, null)
                 looksLikeOuterPatternEquals(var)
                   skipOuterPattern(var)
                     skipObjectPatternRest(Future)
diff --git a/pkg/front_end/parser_testcases/patterns/object_unprefixedNamedUnderscore_withTypeArgs_insideDeclaration.dart.intertwined.expect b/pkg/front_end/parser_testcases/patterns/object_unprefixedNamedUnderscore_withTypeArgs_insideDeclaration.dart.intertwined.expect
index c414157..391bd6f 100644
--- a/pkg/front_end/parser_testcases/patterns/object_unprefixedNamedUnderscore_withTypeArgs_insideDeclaration.dart.intertwined.expect
+++ b/pkg/front_end/parser_testcases/patterns/object_unprefixedNamedUnderscore_withTypeArgs_insideDeclaration.dart.intertwined.expect
@@ -38,7 +38,7 @@
           notEofOrValue(}, var)
           parseStatement({)
             parseStatementX({)
-              parseExpressionStatementOrDeclarationAfterModifiers(var, {, null, var, null, false)
+              parseExpressionStatementOrDeclarationAfterModifiers(var, {, null, var, null, null)
                 looksLikeOuterPatternEquals(var)
                   skipOuterPattern(var)
                     skipObjectPatternRest(_)
diff --git a/pkg/front_end/parser_testcases/patterns/object_unprefixedNamedUnderscore_withoutTypeArgs_insideDeclaration.dart.intertwined.expect b/pkg/front_end/parser_testcases/patterns/object_unprefixedNamedUnderscore_withoutTypeArgs_insideDeclaration.dart.intertwined.expect
index c38de41..ba53c55 100644
--- a/pkg/front_end/parser_testcases/patterns/object_unprefixedNamedUnderscore_withoutTypeArgs_insideDeclaration.dart.intertwined.expect
+++ b/pkg/front_end/parser_testcases/patterns/object_unprefixedNamedUnderscore_withoutTypeArgs_insideDeclaration.dart.intertwined.expect
@@ -38,7 +38,7 @@
           notEofOrValue(}, var)
           parseStatement({)
             parseStatementX({)
-              parseExpressionStatementOrDeclarationAfterModifiers(var, {, null, var, null, false)
+              parseExpressionStatementOrDeclarationAfterModifiers(var, {, null, var, null, null)
                 looksLikeOuterPatternEquals(var)
                   skipOuterPattern(var)
                     skipObjectPatternRest(_)
diff --git a/pkg/front_end/parser_testcases/patterns/object_unprefixed_withTypeArgs_insideDeclaration.dart.intertwined.expect b/pkg/front_end/parser_testcases/patterns/object_unprefixed_withTypeArgs_insideDeclaration.dart.intertwined.expect
index ef93ce9..d0b0421 100644
--- a/pkg/front_end/parser_testcases/patterns/object_unprefixed_withTypeArgs_insideDeclaration.dart.intertwined.expect
+++ b/pkg/front_end/parser_testcases/patterns/object_unprefixed_withTypeArgs_insideDeclaration.dart.intertwined.expect
@@ -73,7 +73,7 @@
           notEofOrValue(}, var)
           parseStatement({)
             parseStatementX({)
-              parseExpressionStatementOrDeclarationAfterModifiers(var, {, null, var, null, false)
+              parseExpressionStatementOrDeclarationAfterModifiers(var, {, null, var, null, null)
                 looksLikeOuterPatternEquals(var)
                   skipOuterPattern(var)
                     skipObjectPatternRest(C)
diff --git a/pkg/front_end/parser_testcases/patterns/parenthesized_insideAssignment.dart.intertwined.expect b/pkg/front_end/parser_testcases/patterns/parenthesized_insideAssignment.dart.intertwined.expect
index 0484560..ab37f5d 100644
--- a/pkg/front_end/parser_testcases/patterns/parenthesized_insideAssignment.dart.intertwined.expect
+++ b/pkg/front_end/parser_testcases/patterns/parenthesized_insideAssignment.dart.intertwined.expect
@@ -39,8 +39,8 @@
           notEofOrValue(}, ()
           parseStatement({)
             parseStatementX({)
-              parseExpressionStatementOrDeclaration({, false)
-                parseExpressionStatementOrDeclarationAfterModifiers({, {, null, null, null, false)
+              parseExpressionStatementOrDeclaration({, null)
+                parseExpressionStatementOrDeclarationAfterModifiers({, {, null, null, null, null)
                   looksLikeLocalFunction(()
                   parseExpressionStatement({)
                     parseExpression({)
diff --git a/pkg/front_end/parser_testcases/patterns/parenthesized_insideDeclaration.dart.intertwined.expect b/pkg/front_end/parser_testcases/patterns/parenthesized_insideDeclaration.dart.intertwined.expect
index d6e4b19..6297354 100644
--- a/pkg/front_end/parser_testcases/patterns/parenthesized_insideDeclaration.dart.intertwined.expect
+++ b/pkg/front_end/parser_testcases/patterns/parenthesized_insideDeclaration.dart.intertwined.expect
@@ -39,7 +39,7 @@
           notEofOrValue(}, var)
           parseStatement({)
             parseStatementX({)
-              parseExpressionStatementOrDeclarationAfterModifiers(var, {, null, var, null, false)
+              parseExpressionStatementOrDeclarationAfterModifiers(var, {, null, var, null, null)
                 looksLikeOuterPatternEquals(var)
                   skipOuterPattern(var)
                 listener: beginMetadataStar(var)
diff --git a/pkg/front_end/parser_testcases/patterns/patternVariableDeclarationStatement_disallowsLate.dart.intertwined.expect b/pkg/front_end/parser_testcases/patterns/patternVariableDeclarationStatement_disallowsLate.dart.intertwined.expect
index 5a35424..7e71b93 100644
--- a/pkg/front_end/parser_testcases/patterns/patternVariableDeclarationStatement_disallowsLate.dart.intertwined.expect
+++ b/pkg/front_end/parser_testcases/patterns/patternVariableDeclarationStatement_disallowsLate.dart.intertwined.expect
@@ -39,8 +39,8 @@
           notEofOrValue(}, late)
           parseStatement({)
             parseStatementX({)
-              parseExpressionStatementOrDeclaration({, false)
-                parseExpressionStatementOrDeclarationAfterModifiers(var, {, late, var, null, false)
+              parseExpressionStatementOrDeclaration({, null)
+                parseExpressionStatementOrDeclarationAfterModifiers(var, {, late, var, null, null)
                   looksLikeLocalFunction(()
                   listener: beginMetadataStar(late)
                   listener: endMetadataStar(0)
@@ -65,7 +65,7 @@
           notEofOrValue(}, _)
           parseStatement(;)
             parseStatementX(;)
-              parseExpressionStatementOrDeclarationAfterModifiers(;, ;, null, null, null, false)
+              parseExpressionStatementOrDeclarationAfterModifiers(;, ;, null, null, null, null)
                 looksLikeLocalFunction(_)
                 parseExpressionStatement(;)
                   parseExpression(;)
@@ -92,8 +92,8 @@
           notEofOrValue(}, ))
           parseStatement(;)
             parseStatementX(;)
-              parseExpressionStatementOrDeclaration(;, false)
-                parseExpressionStatementOrDeclarationAfterModifiers(;, ;, null, null, null, false)
+              parseExpressionStatementOrDeclaration(;, null)
+                parseExpressionStatementOrDeclarationAfterModifiers(;, ;, null, null, null, null)
                   looksLikeLocalFunction())
                   parseExpressionStatement(;)
                     parseExpression(;)
@@ -123,8 +123,8 @@
           notEofOrValue(}, =)
           parseStatement())
             parseStatementX())
-              parseExpressionStatementOrDeclaration(), false)
-                parseExpressionStatementOrDeclarationAfterModifiers(), ), null, null, null, false)
+              parseExpressionStatementOrDeclaration(), null)
+                parseExpressionStatementOrDeclarationAfterModifiers(), ), null, null, null, null)
                   looksLikeLocalFunction(=)
                   parseExpressionStatement())
                     parseExpression())
diff --git a/pkg/front_end/parser_testcases/patterns/patternVariableDeclarationStatement_noMetadata_final_extractor.dart.intertwined.expect b/pkg/front_end/parser_testcases/patterns/patternVariableDeclarationStatement_noMetadata_final_extractor.dart.intertwined.expect
index 1114784..9ba2aff 100644
--- a/pkg/front_end/parser_testcases/patterns/patternVariableDeclarationStatement_noMetadata_final_extractor.dart.intertwined.expect
+++ b/pkg/front_end/parser_testcases/patterns/patternVariableDeclarationStatement_noMetadata_final_extractor.dart.intertwined.expect
@@ -39,7 +39,7 @@
           notEofOrValue(}, final)
           parseStatement({)
             parseStatementX({)
-              parseExpressionStatementOrDeclarationAfterModifiers(final, {, null, final, null, false)
+              parseExpressionStatementOrDeclarationAfterModifiers(final, {, null, final, null, null)
                 looksLikeOuterPatternEquals(final)
                   skipOuterPattern(final)
                     skipObjectPatternRest(C)
diff --git a/pkg/front_end/parser_testcases/patterns/patternVariableDeclarationStatement_noMetadata_var_extractor.dart.intertwined.expect b/pkg/front_end/parser_testcases/patterns/patternVariableDeclarationStatement_noMetadata_var_extractor.dart.intertwined.expect
index 0124f8f..13600dc 100644
--- a/pkg/front_end/parser_testcases/patterns/patternVariableDeclarationStatement_noMetadata_var_extractor.dart.intertwined.expect
+++ b/pkg/front_end/parser_testcases/patterns/patternVariableDeclarationStatement_noMetadata_var_extractor.dart.intertwined.expect
@@ -39,7 +39,7 @@
           notEofOrValue(}, var)
           parseStatement({)
             parseStatementX({)
-              parseExpressionStatementOrDeclarationAfterModifiers(var, {, null, var, null, false)
+              parseExpressionStatementOrDeclarationAfterModifiers(var, {, null, var, null, null)
                 looksLikeOuterPatternEquals(var)
                   skipOuterPattern(var)
                     skipObjectPatternRest(C)
diff --git a/pkg/front_end/parser_testcases/patterns/patternVariableDeclarationStatement_noMetadata_var_list.dart.intertwined.expect b/pkg/front_end/parser_testcases/patterns/patternVariableDeclarationStatement_noMetadata_var_list.dart.intertwined.expect
index 9fcbdd8..1a980c3 100644
--- a/pkg/front_end/parser_testcases/patterns/patternVariableDeclarationStatement_noMetadata_var_list.dart.intertwined.expect
+++ b/pkg/front_end/parser_testcases/patterns/patternVariableDeclarationStatement_noMetadata_var_list.dart.intertwined.expect
@@ -39,7 +39,7 @@
           notEofOrValue(}, var)
           parseStatement({)
             parseStatementX({)
-              parseExpressionStatementOrDeclarationAfterModifiers(var, {, null, var, null, false)
+              parseExpressionStatementOrDeclarationAfterModifiers(var, {, null, var, null, null)
                 looksLikeOuterPatternEquals(var)
                   skipOuterPattern(var)
                 listener: beginMetadataStar(var)
diff --git a/pkg/front_end/parser_testcases/patterns/patternVariableDeclarationStatement_noMetadata_var_map.dart.intertwined.expect b/pkg/front_end/parser_testcases/patterns/patternVariableDeclarationStatement_noMetadata_var_map.dart.intertwined.expect
index bb7c0ce..1147d58 100644
--- a/pkg/front_end/parser_testcases/patterns/patternVariableDeclarationStatement_noMetadata_var_map.dart.intertwined.expect
+++ b/pkg/front_end/parser_testcases/patterns/patternVariableDeclarationStatement_noMetadata_var_map.dart.intertwined.expect
@@ -39,7 +39,7 @@
           notEofOrValue(}, var)
           parseStatement({)
             parseStatementX({)
-              parseExpressionStatementOrDeclarationAfterModifiers(var, {, null, var, null, false)
+              parseExpressionStatementOrDeclarationAfterModifiers(var, {, null, var, null, null)
                 looksLikeOuterPatternEquals(var)
                   skipOuterPattern(var)
                 listener: beginMetadataStar(var)
diff --git a/pkg/front_end/parser_testcases/patterns/patternVariableDeclarationStatement_noMetadata_var_parenthesized.dart.intertwined.expect b/pkg/front_end/parser_testcases/patterns/patternVariableDeclarationStatement_noMetadata_var_parenthesized.dart.intertwined.expect
index d6e4b19..6297354 100644
--- a/pkg/front_end/parser_testcases/patterns/patternVariableDeclarationStatement_noMetadata_var_parenthesized.dart.intertwined.expect
+++ b/pkg/front_end/parser_testcases/patterns/patternVariableDeclarationStatement_noMetadata_var_parenthesized.dart.intertwined.expect
@@ -39,7 +39,7 @@
           notEofOrValue(}, var)
           parseStatement({)
             parseStatementX({)
-              parseExpressionStatementOrDeclarationAfterModifiers(var, {, null, var, null, false)
+              parseExpressionStatementOrDeclarationAfterModifiers(var, {, null, var, null, null)
                 looksLikeOuterPatternEquals(var)
                   skipOuterPattern(var)
                 listener: beginMetadataStar(var)
diff --git a/pkg/front_end/parser_testcases/patterns/patternVariableDeclarationStatement_noMetadata_var_record.dart.intertwined.expect b/pkg/front_end/parser_testcases/patterns/patternVariableDeclarationStatement_noMetadata_var_record.dart.intertwined.expect
index 18e2a5e..60d376e 100644
--- a/pkg/front_end/parser_testcases/patterns/patternVariableDeclarationStatement_noMetadata_var_record.dart.intertwined.expect
+++ b/pkg/front_end/parser_testcases/patterns/patternVariableDeclarationStatement_noMetadata_var_record.dart.intertwined.expect
@@ -39,7 +39,7 @@
           notEofOrValue(}, var)
           parseStatement({)
             parseStatementX({)
-              parseExpressionStatementOrDeclarationAfterModifiers(var, {, null, var, null, false)
+              parseExpressionStatementOrDeclarationAfterModifiers(var, {, null, var, null, null)
                 looksLikeOuterPatternEquals(var)
                   skipOuterPattern(var)
                 listener: beginMetadataStar(var)
diff --git a/pkg/front_end/parser_testcases/patterns/patternVariableDeclarationStatement_withMetadata_final_extractor.dart.intertwined.expect b/pkg/front_end/parser_testcases/patterns/patternVariableDeclarationStatement_withMetadata_final_extractor.dart.intertwined.expect
index 1eeedbe..017e4e0 100644
--- a/pkg/front_end/parser_testcases/patterns/patternVariableDeclarationStatement_withMetadata_final_extractor.dart.intertwined.expect
+++ b/pkg/front_end/parser_testcases/patterns/patternVariableDeclarationStatement_withMetadata_final_extractor.dart.intertwined.expect
@@ -39,7 +39,7 @@
           notEofOrValue(}, @)
           parseStatement({)
             parseStatementX({)
-              parseExpressionStatementOrDeclaration({, false)
+              parseExpressionStatementOrDeclaration({, null)
                 parseMetadataStar({)
                   listener: beginMetadataStar(@)
                   parseMetadata({)
@@ -52,7 +52,7 @@
                       listener: handleNoArguments(final)
                     listener: endMetadata(@, null, final)
                   listener: endMetadataStar(1)
-                parseExpressionStatementOrDeclarationAfterModifiers(final, {, null, final, null, false)
+                parseExpressionStatementOrDeclarationAfterModifiers(final, {, null, final, null, null)
                   looksLikeOuterPatternEquals(final)
                     skipOuterPattern(final)
                       skipObjectPatternRest(C)
diff --git a/pkg/front_end/parser_testcases/patterns/patternVariableDeclarationStatement_withMetadata_final_list.dart.intertwined.expect b/pkg/front_end/parser_testcases/patterns/patternVariableDeclarationStatement_withMetadata_final_list.dart.intertwined.expect
index fc1f9dd..69a9d07 100644
--- a/pkg/front_end/parser_testcases/patterns/patternVariableDeclarationStatement_withMetadata_final_list.dart.intertwined.expect
+++ b/pkg/front_end/parser_testcases/patterns/patternVariableDeclarationStatement_withMetadata_final_list.dart.intertwined.expect
@@ -39,7 +39,7 @@
           notEofOrValue(}, @)
           parseStatement({)
             parseStatementX({)
-              parseExpressionStatementOrDeclaration({, false)
+              parseExpressionStatementOrDeclaration({, null)
                 parseMetadataStar({)
                   listener: beginMetadataStar(@)
                   parseMetadata({)
@@ -52,7 +52,7 @@
                       listener: handleNoArguments(final)
                     listener: endMetadata(@, null, final)
                   listener: endMetadataStar(1)
-                parseExpressionStatementOrDeclarationAfterModifiers(final, {, null, final, null, false)
+                parseExpressionStatementOrDeclarationAfterModifiers(final, {, null, final, null, null)
                   looksLikeOuterPatternEquals(final)
                     skipOuterPattern(final)
                   parsePatternVariableDeclarationStatement(final, {, final)
diff --git a/pkg/front_end/parser_testcases/patterns/patternVariableDeclarationStatement_withMetadata_final_map.dart.intertwined.expect b/pkg/front_end/parser_testcases/patterns/patternVariableDeclarationStatement_withMetadata_final_map.dart.intertwined.expect
index b45e165..a405dd9 100644
--- a/pkg/front_end/parser_testcases/patterns/patternVariableDeclarationStatement_withMetadata_final_map.dart.intertwined.expect
+++ b/pkg/front_end/parser_testcases/patterns/patternVariableDeclarationStatement_withMetadata_final_map.dart.intertwined.expect
@@ -39,7 +39,7 @@
           notEofOrValue(}, @)
           parseStatement({)
             parseStatementX({)
-              parseExpressionStatementOrDeclaration({, false)
+              parseExpressionStatementOrDeclaration({, null)
                 parseMetadataStar({)
                   listener: beginMetadataStar(@)
                   parseMetadata({)
@@ -52,7 +52,7 @@
                       listener: handleNoArguments(final)
                     listener: endMetadata(@, null, final)
                   listener: endMetadataStar(1)
-                parseExpressionStatementOrDeclarationAfterModifiers(final, {, null, final, null, false)
+                parseExpressionStatementOrDeclarationAfterModifiers(final, {, null, final, null, null)
                   looksLikeOuterPatternEquals(final)
                     skipOuterPattern(final)
                   parsePatternVariableDeclarationStatement(final, {, final)
diff --git a/pkg/front_end/parser_testcases/patterns/patternVariableDeclarationStatement_withMetadata_final_parenthesized.dart.intertwined.expect b/pkg/front_end/parser_testcases/patterns/patternVariableDeclarationStatement_withMetadata_final_parenthesized.dart.intertwined.expect
index e1fe02a..849f397 100644
--- a/pkg/front_end/parser_testcases/patterns/patternVariableDeclarationStatement_withMetadata_final_parenthesized.dart.intertwined.expect
+++ b/pkg/front_end/parser_testcases/patterns/patternVariableDeclarationStatement_withMetadata_final_parenthesized.dart.intertwined.expect
@@ -39,7 +39,7 @@
           notEofOrValue(}, @)
           parseStatement({)
             parseStatementX({)
-              parseExpressionStatementOrDeclaration({, false)
+              parseExpressionStatementOrDeclaration({, null)
                 parseMetadataStar({)
                   listener: beginMetadataStar(@)
                   parseMetadata({)
@@ -52,7 +52,7 @@
                       listener: handleNoArguments(final)
                     listener: endMetadata(@, null, final)
                   listener: endMetadataStar(1)
-                parseExpressionStatementOrDeclarationAfterModifiers(final, {, null, final, null, false)
+                parseExpressionStatementOrDeclarationAfterModifiers(final, {, null, final, null, null)
                   looksLikeOuterPatternEquals(final)
                     skipOuterPattern(final)
                   parsePatternVariableDeclarationStatement(final, {, final)
diff --git a/pkg/front_end/parser_testcases/patterns/patternVariableDeclarationStatement_withMetadata_final_record.dart.intertwined.expect b/pkg/front_end/parser_testcases/patterns/patternVariableDeclarationStatement_withMetadata_final_record.dart.intertwined.expect
index 7e6c38e..2cfa330 100644
--- a/pkg/front_end/parser_testcases/patterns/patternVariableDeclarationStatement_withMetadata_final_record.dart.intertwined.expect
+++ b/pkg/front_end/parser_testcases/patterns/patternVariableDeclarationStatement_withMetadata_final_record.dart.intertwined.expect
@@ -39,7 +39,7 @@
           notEofOrValue(}, @)
           parseStatement({)
             parseStatementX({)
-              parseExpressionStatementOrDeclaration({, false)
+              parseExpressionStatementOrDeclaration({, null)
                 parseMetadataStar({)
                   listener: beginMetadataStar(@)
                   parseMetadata({)
@@ -52,7 +52,7 @@
                       listener: handleNoArguments(final)
                     listener: endMetadata(@, null, final)
                   listener: endMetadataStar(1)
-                parseExpressionStatementOrDeclarationAfterModifiers(final, {, null, final, null, false)
+                parseExpressionStatementOrDeclarationAfterModifiers(final, {, null, final, null, null)
                   looksLikeOuterPatternEquals(final)
                     skipOuterPattern(final)
                   parsePatternVariableDeclarationStatement(final, {, final)
diff --git a/pkg/front_end/parser_testcases/patterns/patternVariableDeclarationStatement_withMetadata_var_extractor.dart.intertwined.expect b/pkg/front_end/parser_testcases/patterns/patternVariableDeclarationStatement_withMetadata_var_extractor.dart.intertwined.expect
index 01094bb..d4db7dd 100644
--- a/pkg/front_end/parser_testcases/patterns/patternVariableDeclarationStatement_withMetadata_var_extractor.dart.intertwined.expect
+++ b/pkg/front_end/parser_testcases/patterns/patternVariableDeclarationStatement_withMetadata_var_extractor.dart.intertwined.expect
@@ -39,7 +39,7 @@
           notEofOrValue(}, @)
           parseStatement({)
             parseStatementX({)
-              parseExpressionStatementOrDeclaration({, false)
+              parseExpressionStatementOrDeclaration({, null)
                 parseMetadataStar({)
                   listener: beginMetadataStar(@)
                   parseMetadata({)
@@ -52,7 +52,7 @@
                       listener: handleNoArguments(var)
                     listener: endMetadata(@, null, var)
                   listener: endMetadataStar(1)
-                parseExpressionStatementOrDeclarationAfterModifiers(var, {, null, var, null, false)
+                parseExpressionStatementOrDeclarationAfterModifiers(var, {, null, var, null, null)
                   looksLikeOuterPatternEquals(var)
                     skipOuterPattern(var)
                       skipObjectPatternRest(C)
diff --git a/pkg/front_end/parser_testcases/patterns/patternVariableDeclarationStatement_withMetadata_var_list.dart.intertwined.expect b/pkg/front_end/parser_testcases/patterns/patternVariableDeclarationStatement_withMetadata_var_list.dart.intertwined.expect
index 3027a26..628f413 100644
--- a/pkg/front_end/parser_testcases/patterns/patternVariableDeclarationStatement_withMetadata_var_list.dart.intertwined.expect
+++ b/pkg/front_end/parser_testcases/patterns/patternVariableDeclarationStatement_withMetadata_var_list.dart.intertwined.expect
@@ -39,7 +39,7 @@
           notEofOrValue(}, @)
           parseStatement({)
             parseStatementX({)
-              parseExpressionStatementOrDeclaration({, false)
+              parseExpressionStatementOrDeclaration({, null)
                 parseMetadataStar({)
                   listener: beginMetadataStar(@)
                   parseMetadata({)
@@ -52,7 +52,7 @@
                       listener: handleNoArguments(var)
                     listener: endMetadata(@, null, var)
                   listener: endMetadataStar(1)
-                parseExpressionStatementOrDeclarationAfterModifiers(var, {, null, var, null, false)
+                parseExpressionStatementOrDeclarationAfterModifiers(var, {, null, var, null, null)
                   looksLikeOuterPatternEquals(var)
                     skipOuterPattern(var)
                   parsePatternVariableDeclarationStatement(var, {, var)
diff --git a/pkg/front_end/parser_testcases/patterns/patternVariableDeclarationStatement_withMetadata_var_map.dart.intertwined.expect b/pkg/front_end/parser_testcases/patterns/patternVariableDeclarationStatement_withMetadata_var_map.dart.intertwined.expect
index 754077f..119e476 100644
--- a/pkg/front_end/parser_testcases/patterns/patternVariableDeclarationStatement_withMetadata_var_map.dart.intertwined.expect
+++ b/pkg/front_end/parser_testcases/patterns/patternVariableDeclarationStatement_withMetadata_var_map.dart.intertwined.expect
@@ -39,7 +39,7 @@
           notEofOrValue(}, @)
           parseStatement({)
             parseStatementX({)
-              parseExpressionStatementOrDeclaration({, false)
+              parseExpressionStatementOrDeclaration({, null)
                 parseMetadataStar({)
                   listener: beginMetadataStar(@)
                   parseMetadata({)
@@ -52,7 +52,7 @@
                       listener: handleNoArguments(var)
                     listener: endMetadata(@, null, var)
                   listener: endMetadataStar(1)
-                parseExpressionStatementOrDeclarationAfterModifiers(var, {, null, var, null, false)
+                parseExpressionStatementOrDeclarationAfterModifiers(var, {, null, var, null, null)
                   looksLikeOuterPatternEquals(var)
                     skipOuterPattern(var)
                   parsePatternVariableDeclarationStatement(var, {, var)
diff --git a/pkg/front_end/parser_testcases/patterns/patternVariableDeclarationStatement_withMetadata_var_parenthesized.dart.intertwined.expect b/pkg/front_end/parser_testcases/patterns/patternVariableDeclarationStatement_withMetadata_var_parenthesized.dart.intertwined.expect
index f18331d..7037267 100644
--- a/pkg/front_end/parser_testcases/patterns/patternVariableDeclarationStatement_withMetadata_var_parenthesized.dart.intertwined.expect
+++ b/pkg/front_end/parser_testcases/patterns/patternVariableDeclarationStatement_withMetadata_var_parenthesized.dart.intertwined.expect
@@ -39,7 +39,7 @@
           notEofOrValue(}, @)
           parseStatement({)
             parseStatementX({)
-              parseExpressionStatementOrDeclaration({, false)
+              parseExpressionStatementOrDeclaration({, null)
                 parseMetadataStar({)
                   listener: beginMetadataStar(@)
                   parseMetadata({)
@@ -52,7 +52,7 @@
                       listener: handleNoArguments(var)
                     listener: endMetadata(@, null, var)
                   listener: endMetadataStar(1)
-                parseExpressionStatementOrDeclarationAfterModifiers(var, {, null, var, null, false)
+                parseExpressionStatementOrDeclarationAfterModifiers(var, {, null, var, null, null)
                   looksLikeOuterPatternEquals(var)
                     skipOuterPattern(var)
                   parsePatternVariableDeclarationStatement(var, {, var)
diff --git a/pkg/front_end/parser_testcases/patterns/patternVariableDeclarationStatement_withMetadata_var_record.dart.intertwined.expect b/pkg/front_end/parser_testcases/patterns/patternVariableDeclarationStatement_withMetadata_var_record.dart.intertwined.expect
index 905fe35..9698f8d 100644
--- a/pkg/front_end/parser_testcases/patterns/patternVariableDeclarationStatement_withMetadata_var_record.dart.intertwined.expect
+++ b/pkg/front_end/parser_testcases/patterns/patternVariableDeclarationStatement_withMetadata_var_record.dart.intertwined.expect
@@ -39,7 +39,7 @@
           notEofOrValue(}, @)
           parseStatement({)
             parseStatementX({)
-              parseExpressionStatementOrDeclaration({, false)
+              parseExpressionStatementOrDeclaration({, null)
                 parseMetadataStar({)
                   listener: beginMetadataStar(@)
                   parseMetadata({)
@@ -52,7 +52,7 @@
                       listener: handleNoArguments(var)
                     listener: endMetadata(@, null, var)
                   listener: endMetadataStar(1)
-                parseExpressionStatementOrDeclarationAfterModifiers(var, {, null, var, null, false)
+                parseExpressionStatementOrDeclarationAfterModifiers(var, {, null, var, null, null)
                   looksLikeOuterPatternEquals(var)
                     skipOuterPattern(var)
                   parsePatternVariableDeclarationStatement(var, {, var)
diff --git a/pkg/front_end/parser_testcases/patterns/pattern_inForInitializer_element.dart b/pkg/front_end/parser_testcases/patterns/pattern_inForInitializer_element.dart
new file mode 100644
index 0000000..e999ea4
--- /dev/null
+++ b/pkg/front_end/parser_testcases/patterns/pattern_inForInitializer_element.dart
@@ -0,0 +1 @@
+void f(x) => [for (var (a, b) = x; ;) 0];
diff --git a/pkg/front_end/parser_testcases/patterns/pattern_inForInitializer_element.dart.expect b/pkg/front_end/parser_testcases/patterns/pattern_inForInitializer_element.dart.expect
new file mode 100644
index 0000000..0617d4a
--- /dev/null
+++ b/pkg/front_end/parser_testcases/patterns/pattern_inForInitializer_element.dart.expect
@@ -0,0 +1,43 @@
+beginCompilationUnit(void)
+  beginMetadataStar(void)
+  endMetadataStar(0)
+  beginTopLevelMember(void)
+    beginTopLevelMethod(, null, null)
+      handleVoidKeyword(void)
+      handleIdentifier(f, topLevelFunctionDeclaration)
+      handleNoTypeVariables(()
+      beginFormalParameters((, MemberKind.TopLevelMethod)
+        beginMetadataStar(x)
+        endMetadataStar(0)
+        beginFormalParameter(x, MemberKind.TopLevelMethod, null, null, null)
+          handleNoType(()
+          handleIdentifier(x, formalParameterDeclaration)
+          handleFormalParameterWithoutValue())
+        endFormalParameter(null, null, null, x, null, null, FormalParameterKind.requiredPositional, MemberKind.TopLevelMethod)
+      endFormalParameters(1, (, ), MemberKind.TopLevelMethod)
+      handleAsyncModifier(null, null)
+      handleNoTypeArguments([)
+      beginForControlFlow(null, for)
+        beginMetadataStar(var)
+        endMetadataStar(0)
+        handleNoType(()
+        handleVariablePattern(null, a)
+        handlePatternField(null)
+        handleNoType(,)
+        handleVariablePattern(null, b)
+        handlePatternField(null)
+        handleRecordPattern((, 2)
+        handleIdentifier(x, expression)
+        handleNoTypeArguments(;)
+        handleNoArguments(;)
+        handleSend(x, ;)
+        handleForInitializerPatternVariableAssignment(var, =)
+        handleEmptyStatement(;)
+        handleForLoopParts(for, (, ;, 0)
+        handleLiteralInt(0)
+      endForControlFlow(0)
+      handleLiteralList(1, [, null, ])
+      handleExpressionFunctionBody(=>, ;)
+    endTopLevelMethod(void, null, ;)
+  endTopLevelDeclaration()
+endCompilationUnit(1, )
diff --git a/pkg/front_end/parser_testcases/patterns/pattern_inForInitializer_element.dart.intertwined.expect b/pkg/front_end/parser_testcases/patterns/pattern_inForInitializer_element.dart.intertwined.expect
new file mode 100644
index 0000000..6d32b7f
--- /dev/null
+++ b/pkg/front_end/parser_testcases/patterns/pattern_inForInitializer_element.dart.intertwined.expect
@@ -0,0 +1,109 @@
+parseUnit(void)
+  skipErrorTokens(void)
+  listener: beginCompilationUnit(void)
+  syntheticPreviousToken(void)
+  parseTopLevelDeclarationImpl(, Instance of 'DirectiveContext')
+    parseMetadataStar()
+      listener: beginMetadataStar(void)
+      listener: endMetadataStar(0)
+    parseTopLevelMemberImpl()
+      listener: beginTopLevelMember(void)
+      parseTopLevelMethod(, null, null, , Instance of 'VoidType', null, f, false)
+        listener: beginTopLevelMethod(, null, null)
+        listener: handleVoidKeyword(void)
+        ensureIdentifierPotentiallyRecovered(void, topLevelFunctionDeclaration, false)
+          listener: handleIdentifier(f, topLevelFunctionDeclaration)
+        parseMethodTypeVar(f)
+          listener: handleNoTypeVariables(()
+        parseGetterOrFormalParameters(f, f, false, MemberKind.TopLevelMethod)
+          parseFormalParameters(f, MemberKind.TopLevelMethod)
+            parseFormalParametersRest((, MemberKind.TopLevelMethod)
+              listener: beginFormalParameters((, MemberKind.TopLevelMethod)
+              parseFormalParameter((, FormalParameterKind.requiredPositional, MemberKind.TopLevelMethod)
+                parseMetadataStar(()
+                  listener: beginMetadataStar(x)
+                  listener: endMetadataStar(0)
+                listener: beginFormalParameter(x, MemberKind.TopLevelMethod, null, null, null)
+                listener: handleNoType(()
+                ensureIdentifier((, formalParameterDeclaration)
+                  listener: handleIdentifier(x, formalParameterDeclaration)
+                listener: handleFormalParameterWithoutValue())
+                listener: endFormalParameter(null, null, null, x, null, null, FormalParameterKind.requiredPositional, MemberKind.TopLevelMethod)
+              listener: endFormalParameters(1, (, ), MemberKind.TopLevelMethod)
+        parseAsyncModifierOpt())
+          listener: handleAsyncModifier(null, null)
+          inPlainSync()
+        parseFunctionBody(), false, false)
+          parseExpressionFunctionBody(=>, false)
+            parseExpression(=>)
+              looksLikeOuterPatternEquals(=>)
+                skipOuterPattern(=>)
+              parsePrecedenceExpression(=>, 1, true)
+                parseUnaryExpression(=>, true)
+                  parsePrimary(=>, expression)
+                    listener: handleNoTypeArguments([)
+                    parseLiteralListSuffix(=>, null)
+                      listener: beginForControlFlow(null, for)
+                      parseForLoopPartsStart(null, for, ForPartsContext(null))
+                        parseExpressionStatementOrDeclaration((, ForPartsContext(null))
+                          parseExpressionStatementOrDeclarationAfterModifiers(var, (, null, var, null, ForPartsContext(null))
+                            looksLikeOuterPatternEquals(var)
+                              skipOuterPattern(var)
+                            listener: beginMetadataStar(var)
+                            listener: endMetadataStar(0)
+                            parsePattern(var, precedence: 1, isRefutableContext: false)
+                              parsePrimaryPattern(var, isRefutableContext: false)
+                                parseParenthesizedPatternOrRecordPattern(var, isRefutableContext: false)
+                                  parsePattern((, precedence: 1, isRefutableContext: false)
+                                    parsePrimaryPattern((, isRefutableContext: false)
+                                      parseVariablePattern((, typeInfo: Instance of 'NoType')
+                                        listener: handleNoType(()
+                                        listener: handleVariablePattern(null, a)
+                                  listener: handlePatternField(null)
+                                  parsePattern(,, precedence: 1, isRefutableContext: false)
+                                    parsePrimaryPattern(,, isRefutableContext: false)
+                                      parseVariablePattern(,, typeInfo: Instance of 'NoType')
+                                        listener: handleNoType(,)
+                                        listener: handleVariablePattern(null, b)
+                                  listener: handlePatternField(null)
+                                  ensureCloseParen(b, ()
+                                  listener: handleRecordPattern((, 2)
+                      parseExpression(=)
+                        looksLikeOuterPatternEquals(=)
+                          skipOuterPattern(=)
+                            skipObjectPatternRest(x)
+                        parsePrecedenceExpression(=, 1, true)
+                          parseUnaryExpression(=, true)
+                            parsePrimary(=, expression)
+                              parseSendOrFunctionLiteral(=, expression)
+                                parseSend(=, expression)
+                                  isNextIdentifier(=)
+                                  ensureIdentifier(=, expression)
+                                    listener: handleIdentifier(x, expression)
+                                  listener: handleNoTypeArguments(;)
+                                  parseArgumentsOpt(x)
+                                    listener: handleNoArguments(;)
+                                  listener: handleSend(x, ;)
+                      listener: handleForInitializerPatternVariableAssignment(var, =)
+                      parseForLoopPartsRest(x, for, null)
+                        ensureSemicolon(x)
+                        parseEmptyStatement(;)
+                          listener: handleEmptyStatement(;)
+                        listener: handleForLoopParts(for, (, ;, 0)
+                      parseExpression())
+                        looksLikeOuterPatternEquals())
+                          skipOuterPattern())
+                        parsePrecedenceExpression(), 1, true)
+                          parseUnaryExpression(), true)
+                            parsePrimary(), expression)
+                              parseLiteralInt())
+                                listener: handleLiteralInt(0)
+                      listener: endForControlFlow(0)
+                      listener: handleLiteralList(1, [, null, ])
+            ensureSemicolon(])
+            listener: handleExpressionFunctionBody(=>, ;)
+            inGenerator()
+        listener: endTopLevelMethod(void, null, ;)
+  listener: endTopLevelDeclaration()
+  reportAllErrorTokens(void)
+  listener: endCompilationUnit(1, )
diff --git a/pkg/front_end/parser_testcases/patterns/pattern_inForInitializer_element.dart.parser.expect b/pkg/front_end/parser_testcases/patterns/pattern_inForInitializer_element.dart.parser.expect
new file mode 100644
index 0000000..eebc9f2
--- /dev/null
+++ b/pkg/front_end/parser_testcases/patterns/pattern_inForInitializer_element.dart.parser.expect
@@ -0,0 +1,5 @@
+void f(x) => [for (var (a, b) = x; ;) 0];
+
+
+void[KeywordToken] f[StringToken]([BeginToken]x[StringToken])[SimpleToken] =>[SimpleToken] [[BeginToken]for[KeywordToken] ([BeginToken]var[KeywordToken] ([BeginToken]a[StringToken],[SimpleToken] b[StringToken])[SimpleToken] =[SimpleToken] x[StringToken];[SimpleToken] ;[SimpleToken])[SimpleToken] 0[StringToken]][SimpleToken];[SimpleToken]
+[SimpleToken]
diff --git a/pkg/front_end/parser_testcases/patterns/pattern_inForInitializer_element.dart.scanner.expect b/pkg/front_end/parser_testcases/patterns/pattern_inForInitializer_element.dart.scanner.expect
new file mode 100644
index 0000000..eebc9f2
--- /dev/null
+++ b/pkg/front_end/parser_testcases/patterns/pattern_inForInitializer_element.dart.scanner.expect
@@ -0,0 +1,5 @@
+void f(x) => [for (var (a, b) = x; ;) 0];
+
+
+void[KeywordToken] f[StringToken]([BeginToken]x[StringToken])[SimpleToken] =>[SimpleToken] [[BeginToken]for[KeywordToken] ([BeginToken]var[KeywordToken] ([BeginToken]a[StringToken],[SimpleToken] b[StringToken])[SimpleToken] =[SimpleToken] x[StringToken];[SimpleToken] ;[SimpleToken])[SimpleToken] 0[StringToken]][SimpleToken];[SimpleToken]
+[SimpleToken]
diff --git a/pkg/front_end/parser_testcases/patterns/pattern_inForInitializer_statement.dart b/pkg/front_end/parser_testcases/patterns/pattern_inForInitializer_statement.dart
new file mode 100644
index 0000000..a154318
--- /dev/null
+++ b/pkg/front_end/parser_testcases/patterns/pattern_inForInitializer_statement.dart
@@ -0,0 +1,3 @@
+void f(x) {
+  for (var (a, b) = x; ;) {}
+}
diff --git a/pkg/front_end/parser_testcases/patterns/pattern_inForInitializer_statement.dart.expect b/pkg/front_end/parser_testcases/patterns/pattern_inForInitializer_statement.dart.expect
new file mode 100644
index 0000000..1ec7d1d
--- /dev/null
+++ b/pkg/front_end/parser_testcases/patterns/pattern_inForInitializer_statement.dart.expect
@@ -0,0 +1,45 @@
+beginCompilationUnit(void)
+  beginMetadataStar(void)
+  endMetadataStar(0)
+  beginTopLevelMember(void)
+    beginTopLevelMethod(, null, null)
+      handleVoidKeyword(void)
+      handleIdentifier(f, topLevelFunctionDeclaration)
+      handleNoTypeVariables(()
+      beginFormalParameters((, MemberKind.TopLevelMethod)
+        beginMetadataStar(x)
+        endMetadataStar(0)
+        beginFormalParameter(x, MemberKind.TopLevelMethod, null, null, null)
+          handleNoType(()
+          handleIdentifier(x, formalParameterDeclaration)
+          handleFormalParameterWithoutValue())
+        endFormalParameter(null, null, null, x, null, null, FormalParameterKind.requiredPositional, MemberKind.TopLevelMethod)
+      endFormalParameters(1, (, ), MemberKind.TopLevelMethod)
+      handleAsyncModifier(null, null)
+      beginBlockFunctionBody({)
+        beginForStatement(for)
+          beginMetadataStar(var)
+          endMetadataStar(0)
+          handleNoType(()
+          handleVariablePattern(null, a)
+          handlePatternField(null)
+          handleNoType(,)
+          handleVariablePattern(null, b)
+          handlePatternField(null)
+          handleRecordPattern((, 2)
+          handleIdentifier(x, expression)
+          handleNoTypeArguments(;)
+          handleNoArguments(;)
+          handleSend(x, ;)
+          handleForInitializerPatternVariableAssignment(var, =)
+          handleEmptyStatement(;)
+          handleForLoopParts(for, (, ;, 0)
+          beginForStatementBody({)
+            beginBlock({, BlockKind(statement))
+            endBlock(0, {, }, BlockKind(statement))
+          endForStatementBody(})
+        endForStatement(})
+      endBlockFunctionBody(1, {, })
+    endTopLevelMethod(void, null, })
+  endTopLevelDeclaration()
+endCompilationUnit(1, )
diff --git a/pkg/front_end/parser_testcases/patterns/pattern_inForInitializer_statement.dart.intertwined.expect b/pkg/front_end/parser_testcases/patterns/pattern_inForInitializer_statement.dart.intertwined.expect
new file mode 100644
index 0000000..daa202d
--- /dev/null
+++ b/pkg/front_end/parser_testcases/patterns/pattern_inForInitializer_statement.dart.intertwined.expect
@@ -0,0 +1,105 @@
+parseUnit(void)
+  skipErrorTokens(void)
+  listener: beginCompilationUnit(void)
+  syntheticPreviousToken(void)
+  parseTopLevelDeclarationImpl(, Instance of 'DirectiveContext')
+    parseMetadataStar()
+      listener: beginMetadataStar(void)
+      listener: endMetadataStar(0)
+    parseTopLevelMemberImpl()
+      listener: beginTopLevelMember(void)
+      parseTopLevelMethod(, null, null, , Instance of 'VoidType', null, f, false)
+        listener: beginTopLevelMethod(, null, null)
+        listener: handleVoidKeyword(void)
+        ensureIdentifierPotentiallyRecovered(void, topLevelFunctionDeclaration, false)
+          listener: handleIdentifier(f, topLevelFunctionDeclaration)
+        parseMethodTypeVar(f)
+          listener: handleNoTypeVariables(()
+        parseGetterOrFormalParameters(f, f, false, MemberKind.TopLevelMethod)
+          parseFormalParameters(f, MemberKind.TopLevelMethod)
+            parseFormalParametersRest((, MemberKind.TopLevelMethod)
+              listener: beginFormalParameters((, MemberKind.TopLevelMethod)
+              parseFormalParameter((, FormalParameterKind.requiredPositional, MemberKind.TopLevelMethod)
+                parseMetadataStar(()
+                  listener: beginMetadataStar(x)
+                  listener: endMetadataStar(0)
+                listener: beginFormalParameter(x, MemberKind.TopLevelMethod, null, null, null)
+                listener: handleNoType(()
+                ensureIdentifier((, formalParameterDeclaration)
+                  listener: handleIdentifier(x, formalParameterDeclaration)
+                listener: handleFormalParameterWithoutValue())
+                listener: endFormalParameter(null, null, null, x, null, null, FormalParameterKind.requiredPositional, MemberKind.TopLevelMethod)
+              listener: endFormalParameters(1, (, ), MemberKind.TopLevelMethod)
+        parseAsyncModifierOpt())
+          listener: handleAsyncModifier(null, null)
+          inPlainSync()
+        parseFunctionBody(), false, false)
+          listener: beginBlockFunctionBody({)
+          notEofOrValue(}, for)
+          parseStatement({)
+            parseStatementX({)
+              parseForStatement({, null)
+                listener: beginForStatement(for)
+                parseForLoopPartsStart(null, for, ForPartsContext(null))
+                  parseExpressionStatementOrDeclaration((, ForPartsContext(null))
+                    parseExpressionStatementOrDeclarationAfterModifiers(var, (, null, var, null, ForPartsContext(null))
+                      looksLikeOuterPatternEquals(var)
+                        skipOuterPattern(var)
+                      listener: beginMetadataStar(var)
+                      listener: endMetadataStar(0)
+                      parsePattern(var, precedence: 1, isRefutableContext: false)
+                        parsePrimaryPattern(var, isRefutableContext: false)
+                          parseParenthesizedPatternOrRecordPattern(var, isRefutableContext: false)
+                            parsePattern((, precedence: 1, isRefutableContext: false)
+                              parsePrimaryPattern((, isRefutableContext: false)
+                                parseVariablePattern((, typeInfo: Instance of 'NoType')
+                                  listener: handleNoType(()
+                                  listener: handleVariablePattern(null, a)
+                            listener: handlePatternField(null)
+                            parsePattern(,, precedence: 1, isRefutableContext: false)
+                              parsePrimaryPattern(,, isRefutableContext: false)
+                                parseVariablePattern(,, typeInfo: Instance of 'NoType')
+                                  listener: handleNoType(,)
+                                  listener: handleVariablePattern(null, b)
+                            listener: handlePatternField(null)
+                            ensureCloseParen(b, ()
+                            listener: handleRecordPattern((, 2)
+                parseExpression(=)
+                  looksLikeOuterPatternEquals(=)
+                    skipOuterPattern(=)
+                      skipObjectPatternRest(x)
+                  parsePrecedenceExpression(=, 1, true)
+                    parseUnaryExpression(=, true)
+                      parsePrimary(=, expression)
+                        parseSendOrFunctionLiteral(=, expression)
+                          parseSend(=, expression)
+                            isNextIdentifier(=)
+                            ensureIdentifier(=, expression)
+                              listener: handleIdentifier(x, expression)
+                            listener: handleNoTypeArguments(;)
+                            parseArgumentsOpt(x)
+                              listener: handleNoArguments(;)
+                            listener: handleSend(x, ;)
+                listener: handleForInitializerPatternVariableAssignment(var, =)
+                parseForRest(null, x, for)
+                  parseForLoopPartsRest(x, for, null)
+                    ensureSemicolon(x)
+                    parseEmptyStatement(;)
+                      listener: handleEmptyStatement(;)
+                    listener: handleForLoopParts(for, (, ;, 0)
+                  listener: beginForStatementBody({)
+                  parseStatement())
+                    parseStatementX())
+                      parseBlock(), BlockKind(statement))
+                        ensureBlock(), null, null)
+                        listener: beginBlock({, BlockKind(statement))
+                        notEofOrValue(}, })
+                        listener: endBlock(0, {, }, BlockKind(statement))
+                  listener: endForStatementBody(})
+                  listener: endForStatement(})
+          notEofOrValue(}, })
+          listener: endBlockFunctionBody(1, {, })
+        listener: endTopLevelMethod(void, null, })
+  listener: endTopLevelDeclaration()
+  reportAllErrorTokens(void)
+  listener: endCompilationUnit(1, )
diff --git a/pkg/front_end/parser_testcases/patterns/pattern_inForInitializer_statement.dart.parser.expect b/pkg/front_end/parser_testcases/patterns/pattern_inForInitializer_statement.dart.parser.expect
new file mode 100644
index 0000000..f750f40
--- /dev/null
+++ b/pkg/front_end/parser_testcases/patterns/pattern_inForInitializer_statement.dart.parser.expect
@@ -0,0 +1,9 @@
+void f(x) {
+for (var (a, b) = x; ;) {}
+}
+
+
+void[KeywordToken] f[StringToken]([BeginToken]x[StringToken])[SimpleToken] {[BeginToken]
+for[KeywordToken] ([BeginToken]var[KeywordToken] ([BeginToken]a[StringToken],[SimpleToken] b[StringToken])[SimpleToken] =[SimpleToken] x[StringToken];[SimpleToken] ;[SimpleToken])[SimpleToken] {[BeginToken]}[SimpleToken]
+}[SimpleToken]
+[SimpleToken]
diff --git a/pkg/front_end/parser_testcases/patterns/pattern_inForInitializer_statement.dart.scanner.expect b/pkg/front_end/parser_testcases/patterns/pattern_inForInitializer_statement.dart.scanner.expect
new file mode 100644
index 0000000..f750f40
--- /dev/null
+++ b/pkg/front_end/parser_testcases/patterns/pattern_inForInitializer_statement.dart.scanner.expect
@@ -0,0 +1,9 @@
+void f(x) {
+for (var (a, b) = x; ;) {}
+}
+
+
+void[KeywordToken] f[StringToken]([BeginToken]x[StringToken])[SimpleToken] {[BeginToken]
+for[KeywordToken] ([BeginToken]var[KeywordToken] ([BeginToken]a[StringToken],[SimpleToken] b[StringToken])[SimpleToken] =[SimpleToken] x[StringToken];[SimpleToken] ;[SimpleToken])[SimpleToken] {[BeginToken]}[SimpleToken]
+}[SimpleToken]
+[SimpleToken]
diff --git a/pkg/front_end/parser_testcases/patterns/record_insideAssignment_empty.dart.intertwined.expect b/pkg/front_end/parser_testcases/patterns/record_insideAssignment_empty.dart.intertwined.expect
index c053596..48b0010 100644
--- a/pkg/front_end/parser_testcases/patterns/record_insideAssignment_empty.dart.intertwined.expect
+++ b/pkg/front_end/parser_testcases/patterns/record_insideAssignment_empty.dart.intertwined.expect
@@ -38,8 +38,8 @@
           notEofOrValue(}, ()
           parseStatement({)
             parseStatementX({)
-              parseExpressionStatementOrDeclaration({, false)
-                parseExpressionStatementOrDeclarationAfterModifiers({, {, null, null, null, false)
+              parseExpressionStatementOrDeclaration({, null)
+                parseExpressionStatementOrDeclarationAfterModifiers({, {, null, null, null, null)
                   looksLikeLocalFunction(()
                   parseExpressionStatement({)
                     parseExpression({)
diff --git a/pkg/front_end/parser_testcases/patterns/record_insideAssignment_oneField.dart.intertwined.expect b/pkg/front_end/parser_testcases/patterns/record_insideAssignment_oneField.dart.intertwined.expect
index 0b841e0..e81e57a 100644
--- a/pkg/front_end/parser_testcases/patterns/record_insideAssignment_oneField.dart.intertwined.expect
+++ b/pkg/front_end/parser_testcases/patterns/record_insideAssignment_oneField.dart.intertwined.expect
@@ -38,8 +38,8 @@
           notEofOrValue(}, ()
           parseStatement({)
             parseStatementX({)
-              parseExpressionStatementOrDeclaration({, false)
-                parseExpressionStatementOrDeclarationAfterModifiers({, {, null, null, null, false)
+              parseExpressionStatementOrDeclaration({, null)
+                parseExpressionStatementOrDeclarationAfterModifiers({, {, null, null, null, null)
                   looksLikeLocalFunction(()
                   parseExpressionStatement({)
                     parseExpression({)
diff --git a/pkg/front_end/parser_testcases/patterns/record_insideAssignment_twoFields.dart.intertwined.expect b/pkg/front_end/parser_testcases/patterns/record_insideAssignment_twoFields.dart.intertwined.expect
index 4db9e50..f47a51b 100644
--- a/pkg/front_end/parser_testcases/patterns/record_insideAssignment_twoFields.dart.intertwined.expect
+++ b/pkg/front_end/parser_testcases/patterns/record_insideAssignment_twoFields.dart.intertwined.expect
@@ -38,8 +38,8 @@
           notEofOrValue(}, ()
           parseStatement({)
             parseStatementX({)
-              parseExpressionStatementOrDeclaration({, false)
-                parseExpressionStatementOrDeclarationAfterModifiers({, {, null, null, null, false)
+              parseExpressionStatementOrDeclaration({, null)
+                parseExpressionStatementOrDeclarationAfterModifiers({, {, null, null, null, null)
                   looksLikeLocalFunction(()
                   parseExpressionStatement({)
                     parseExpression({)
diff --git a/pkg/front_end/parser_testcases/patterns/record_insideDeclaration_empty.dart.intertwined.expect b/pkg/front_end/parser_testcases/patterns/record_insideDeclaration_empty.dart.intertwined.expect
index dadaa8f..891371d 100644
--- a/pkg/front_end/parser_testcases/patterns/record_insideDeclaration_empty.dart.intertwined.expect
+++ b/pkg/front_end/parser_testcases/patterns/record_insideDeclaration_empty.dart.intertwined.expect
@@ -38,7 +38,7 @@
           notEofOrValue(}, var)
           parseStatement({)
             parseStatementX({)
-              parseExpressionStatementOrDeclarationAfterModifiers(var, {, null, var, null, false)
+              parseExpressionStatementOrDeclarationAfterModifiers(var, {, null, var, null, null)
                 looksLikeOuterPatternEquals(var)
                   skipOuterPattern(var)
                 listener: beginMetadataStar(var)
diff --git a/pkg/front_end/parser_testcases/patterns/record_insideDeclaration_oneField.dart.intertwined.expect b/pkg/front_end/parser_testcases/patterns/record_insideDeclaration_oneField.dart.intertwined.expect
index e719577..372542d 100644
--- a/pkg/front_end/parser_testcases/patterns/record_insideDeclaration_oneField.dart.intertwined.expect
+++ b/pkg/front_end/parser_testcases/patterns/record_insideDeclaration_oneField.dart.intertwined.expect
@@ -38,7 +38,7 @@
           notEofOrValue(}, var)
           parseStatement({)
             parseStatementX({)
-              parseExpressionStatementOrDeclarationAfterModifiers(var, {, null, var, null, false)
+              parseExpressionStatementOrDeclarationAfterModifiers(var, {, null, var, null, null)
                 looksLikeOuterPatternEquals(var)
                   skipOuterPattern(var)
                 listener: beginMetadataStar(var)
diff --git a/pkg/front_end/parser_testcases/patterns/record_insideDeclaration_twoFields.dart.intertwined.expect b/pkg/front_end/parser_testcases/patterns/record_insideDeclaration_twoFields.dart.intertwined.expect
index 5a40276..70f6bf3 100644
--- a/pkg/front_end/parser_testcases/patterns/record_insideDeclaration_twoFields.dart.intertwined.expect
+++ b/pkg/front_end/parser_testcases/patterns/record_insideDeclaration_twoFields.dart.intertwined.expect
@@ -38,7 +38,7 @@
           notEofOrValue(}, var)
           parseStatement({)
             parseStatementX({)
-              parseExpressionStatementOrDeclarationAfterModifiers(var, {, null, var, null, false)
+              parseExpressionStatementOrDeclarationAfterModifiers(var, {, null, var, null, null)
                 looksLikeOuterPatternEquals(var)
                   skipOuterPattern(var)
                 listener: beginMetadataStar(var)
diff --git a/pkg/front_end/parser_testcases/patterns/skipOuterPattern_eof.dart.intertwined.expect b/pkg/front_end/parser_testcases/patterns/skipOuterPattern_eof.dart.intertwined.expect
index b497769..40dffed 100644
--- a/pkg/front_end/parser_testcases/patterns/skipOuterPattern_eof.dart.intertwined.expect
+++ b/pkg/front_end/parser_testcases/patterns/skipOuterPattern_eof.dart.intertwined.expect
@@ -29,7 +29,7 @@
           notEofOrValue(}, int)
           parseStatement({)
             parseStatementX({)
-              parseExpressionStatementOrDeclarationAfterModifiers({, {, null, null, null, false)
+              parseExpressionStatementOrDeclarationAfterModifiers({, {, null, null, null, null)
                 looksLikeLocalFunction(int)
                 parseExpressionStatement({)
                   parseExpression({)
@@ -56,7 +56,7 @@
           notEofOrValue(}, var)
           parseStatement(;)
             parseStatementX(;)
-              parseExpressionStatementOrDeclarationAfterModifiers(var, ;, null, var, null, false)
+              parseExpressionStatementOrDeclarationAfterModifiers(var, ;, null, var, null, null)
                 looksLikeOuterPatternEquals(var)
                   skipOuterPattern(var)
                 looksLikeLocalFunction(=)
diff --git a/pkg/front_end/parser_testcases/patterns/variable_bare_insideCast.dart.intertwined.expect b/pkg/front_end/parser_testcases/patterns/variable_bare_insideCast.dart.intertwined.expect
index bb86700..e21e6f3 100644
--- a/pkg/front_end/parser_testcases/patterns/variable_bare_insideCast.dart.intertwined.expect
+++ b/pkg/front_end/parser_testcases/patterns/variable_bare_insideCast.dart.intertwined.expect
@@ -38,7 +38,7 @@
           notEofOrValue(}, var)
           parseStatement({)
             parseStatementX({)
-              parseExpressionStatementOrDeclarationAfterModifiers(var, {, null, var, null, false)
+              parseExpressionStatementOrDeclarationAfterModifiers(var, {, null, var, null, null)
                 looksLikeOuterPatternEquals(var)
                   skipOuterPattern(var)
                 listener: beginMetadataStar(var)
diff --git a/pkg/front_end/parser_testcases/patterns/variable_bare_insideNullAssert.dart.intertwined.expect b/pkg/front_end/parser_testcases/patterns/variable_bare_insideNullAssert.dart.intertwined.expect
index 35c868e..c341855 100644
--- a/pkg/front_end/parser_testcases/patterns/variable_bare_insideNullAssert.dart.intertwined.expect
+++ b/pkg/front_end/parser_testcases/patterns/variable_bare_insideNullAssert.dart.intertwined.expect
@@ -38,7 +38,7 @@
           notEofOrValue(}, var)
           parseStatement({)
             parseStatementX({)
-              parseExpressionStatementOrDeclarationAfterModifiers(var, {, null, var, null, false)
+              parseExpressionStatementOrDeclarationAfterModifiers(var, {, null, var, null, null)
                 looksLikeOuterPatternEquals(var)
                   skipOuterPattern(var)
                 listener: beginMetadataStar(var)
diff --git a/pkg/front_end/parser_testcases/record/is_and_as.dart.intertwined.expect b/pkg/front_end/parser_testcases/record/is_and_as.dart.intertwined.expect
index 7f34a96..67eece23 100644
--- a/pkg/front_end/parser_testcases/record/is_and_as.dart.intertwined.expect
+++ b/pkg/front_end/parser_testcases/record/is_and_as.dart.intertwined.expect
@@ -41,7 +41,7 @@
           notEofOrValue(}, final)
           parseStatement({)
             parseStatementX({)
-              parseExpressionStatementOrDeclarationAfterModifiers(final, {, null, final, null, false)
+              parseExpressionStatementOrDeclarationAfterModifiers(final, {, null, final, null, null)
                 looksLikeLocalFunction(b)
                 listener: beginMetadataStar(final)
                 listener: endMetadataStar(0)
@@ -131,7 +131,7 @@
                       notEofOrValue(}, print)
                       parseStatement({)
                         parseStatementX({)
-                          parseExpressionStatementOrDeclarationAfterModifiers({, {, null, null, null, false)
+                          parseExpressionStatementOrDeclarationAfterModifiers({, {, null, null, null, null)
                             looksLikeLocalFunction(print)
                             parseExpressionStatement({)
                               parseExpression({)
@@ -168,7 +168,7 @@
           notEofOrValue(}, final)
           parseStatement(})
             parseStatementX(})
-              parseExpressionStatementOrDeclarationAfterModifiers(final, }, null, final, null, false)
+              parseExpressionStatementOrDeclarationAfterModifiers(final, }, null, final, null, null)
                 looksLikeLocalFunction(c)
                 listener: beginMetadataStar(final)
                 listener: endMetadataStar(0)
diff --git a/pkg/front_end/parser_testcases/record/is_record_conditional_expression.dart.intertwined.expect b/pkg/front_end/parser_testcases/record/is_record_conditional_expression.dart.intertwined.expect
index bf5043e..e076856 100644
--- a/pkg/front_end/parser_testcases/record/is_record_conditional_expression.dart.intertwined.expect
+++ b/pkg/front_end/parser_testcases/record/is_record_conditional_expression.dart.intertwined.expect
@@ -41,7 +41,7 @@
           notEofOrValue(}, final)
           parseStatement({)
             parseStatementX({)
-              parseExpressionStatementOrDeclarationAfterModifiers(final, {, null, final, null, false)
+              parseExpressionStatementOrDeclarationAfterModifiers(final, {, null, final, null, null)
                 looksLikeLocalFunction(b)
                 listener: beginMetadataStar(final)
                 listener: endMetadataStar(0)
diff --git a/pkg/front_end/parser_testcases/record/record_and_commas.dart.intertwined.expect b/pkg/front_end/parser_testcases/record/record_and_commas.dart.intertwined.expect
index db5b285..1fcd398 100644
--- a/pkg/front_end/parser_testcases/record/record_and_commas.dart.intertwined.expect
+++ b/pkg/front_end/parser_testcases/record/record_and_commas.dart.intertwined.expect
@@ -29,8 +29,8 @@
           notEofOrValue(}, ()
           parseStatement({)
             parseStatementX({)
-              parseExpressionStatementOrDeclaration({, false)
-                parseExpressionStatementOrDeclarationAfterModifiers({, {, null, null, null, false)
+              parseExpressionStatementOrDeclaration({, null)
+                parseExpressionStatementOrDeclarationAfterModifiers({, {, null, null, null, null)
                   looksLikeLocalFunction(emptyRecord1)
                   listener: beginMetadataStar(()
                   listener: endMetadataStar(0)
@@ -61,8 +61,8 @@
           notEofOrValue(}, ()
           parseStatement(;)
             parseStatementX(;)
-              parseExpressionStatementOrDeclaration(;, false)
-                parseExpressionStatementOrDeclarationAfterModifiers(;, ;, null, null, null, false)
+              parseExpressionStatementOrDeclaration(;, null)
+                parseExpressionStatementOrDeclarationAfterModifiers(;, ;, null, null, null, null)
                   looksLikeLocalFunction(emptyRecord2)
                   listener: beginMetadataStar(()
                   listener: endMetadataStar(0)
@@ -95,8 +95,8 @@
           notEofOrValue(}, ()
           parseStatement(;)
             parseStatementX(;)
-              parseExpressionStatementOrDeclaration(;, false)
-                parseExpressionStatementOrDeclarationAfterModifiers(;, ;, null, null, null, false)
+              parseExpressionStatementOrDeclaration(;, null)
+                parseExpressionStatementOrDeclarationAfterModifiers(;, ;, null, null, null, null)
                   looksLikeLocalFunction(emptyRecord3)
                   listener: beginMetadataStar(()
                   listener: endMetadataStar(0)
@@ -129,8 +129,8 @@
           notEofOrValue(}, ()
           parseStatement(;)
             parseStatementX(;)
-              parseExpressionStatementOrDeclaration(;, false)
-                parseExpressionStatementOrDeclarationAfterModifiers(;, ;, null, null, null, false)
+              parseExpressionStatementOrDeclaration(;, null)
+                parseExpressionStatementOrDeclarationAfterModifiers(;, ;, null, null, null, null)
                   looksLikeLocalFunction(emptyRecord4)
                   listener: beginMetadataStar(()
                   listener: endMetadataStar(0)
@@ -165,8 +165,8 @@
           notEofOrValue(}, ()
           parseStatement(;)
             parseStatementX(;)
-              parseExpressionStatementOrDeclaration(;, false)
-                parseExpressionStatementOrDeclarationAfterModifiers(;, ;, null, null, null, false)
+              parseExpressionStatementOrDeclaration(;, null)
+                parseExpressionStatementOrDeclarationAfterModifiers(;, ;, null, null, null, null)
                   looksLikeLocalFunction(emptyRecord5)
                   listener: beginMetadataStar(()
                   listener: endMetadataStar(0)
@@ -247,8 +247,8 @@
           notEofOrValue(}, ()
           parseStatement(;)
             parseStatementX(;)
-              parseExpressionStatementOrDeclaration(;, false)
-                parseExpressionStatementOrDeclarationAfterModifiers(;, ;, null, null, null, false)
+              parseExpressionStatementOrDeclaration(;, null)
+                parseExpressionStatementOrDeclarationAfterModifiers(;, ;, null, null, null, null)
                   looksLikeLocalFunction(emptyRecord6)
                   listener: beginMetadataStar(()
                   listener: endMetadataStar(0)
@@ -339,8 +339,8 @@
           notEofOrValue(}, ()
           parseStatement(;)
             parseStatementX(;)
-              parseExpressionStatementOrDeclaration(;, false)
-                parseExpressionStatementOrDeclarationAfterModifiers(;, ;, null, null, null, false)
+              parseExpressionStatementOrDeclaration(;, null)
+                parseExpressionStatementOrDeclarationAfterModifiers(;, ;, null, null, null, null)
                   looksLikeLocalFunction(emptyRecord7)
                   listener: beginMetadataStar(()
                   listener: endMetadataStar(0)
@@ -449,8 +449,8 @@
           notEofOrValue(}, ()
           parseStatement(;)
             parseStatementX(;)
-              parseExpressionStatementOrDeclaration(;, false)
-                parseExpressionStatementOrDeclarationAfterModifiers(;, ;, null, null, null, false)
+              parseExpressionStatementOrDeclaration(;, null)
+                parseExpressionStatementOrDeclarationAfterModifiers(;, ;, null, null, null, null)
                   looksLikeLocalFunction(emptyRecord8)
                   listener: beginMetadataStar(()
                   listener: endMetadataStar(0)
diff --git a/pkg/front_end/parser_testcases/record/record_literal_01.dart.intertwined.expect b/pkg/front_end/parser_testcases/record/record_literal_01.dart.intertwined.expect
index 4cd648f..f726ab7 100644
--- a/pkg/front_end/parser_testcases/record/record_literal_01.dart.intertwined.expect
+++ b/pkg/front_end/parser_testcases/record/record_literal_01.dart.intertwined.expect
@@ -28,7 +28,7 @@
           notEofOrValue(}, var)
           parseStatement({)
             parseStatementX({)
-              parseExpressionStatementOrDeclarationAfterModifiers(var, {, null, var, null, false)
+              parseExpressionStatementOrDeclarationAfterModifiers(var, {, null, var, null, null)
                 looksLikeLocalFunction(record1)
                 listener: beginMetadataStar(var)
                 listener: endMetadataStar(0)
@@ -87,7 +87,7 @@
           notEofOrValue(}, var)
           parseStatement(;)
             parseStatementX(;)
-              parseExpressionStatementOrDeclarationAfterModifiers(var, ;, null, var, null, false)
+              parseExpressionStatementOrDeclarationAfterModifiers(var, ;, null, var, null, null)
                 looksLikeLocalFunction(record2)
                 listener: beginMetadataStar(var)
                 listener: endMetadataStar(0)
@@ -146,7 +146,7 @@
           notEofOrValue(}, print)
           parseStatement(;)
             parseStatementX(;)
-              parseExpressionStatementOrDeclarationAfterModifiers(;, ;, null, null, null, false)
+              parseExpressionStatementOrDeclarationAfterModifiers(;, ;, null, null, null, null)
                 looksLikeLocalFunction(print)
                 parseExpressionStatement(;)
                   parseExpression(;)
@@ -195,7 +195,7 @@
           notEofOrValue(}, print)
           parseStatement(;)
             parseStatementX(;)
-              parseExpressionStatementOrDeclarationAfterModifiers(;, ;, null, null, null, false)
+              parseExpressionStatementOrDeclarationAfterModifiers(;, ;, null, null, null, null)
                 looksLikeLocalFunction(print)
                 parseExpressionStatement(;)
                   parseExpression(;)
@@ -244,7 +244,7 @@
           notEofOrValue(}, print)
           parseStatement(;)
             parseStatementX(;)
-              parseExpressionStatementOrDeclarationAfterModifiers(;, ;, null, null, null, false)
+              parseExpressionStatementOrDeclarationAfterModifiers(;, ;, null, null, null, null)
                 looksLikeLocalFunction(print)
                 parseExpressionStatement(;)
                   parseExpression(;)
@@ -293,7 +293,7 @@
           notEofOrValue(}, print)
           parseStatement(;)
             parseStatementX(;)
-              parseExpressionStatementOrDeclarationAfterModifiers(;, ;, null, null, null, false)
+              parseExpressionStatementOrDeclarationAfterModifiers(;, ;, null, null, null, null)
                 looksLikeLocalFunction(print)
                 parseExpressionStatement(;)
                   parseExpression(;)
diff --git a/pkg/front_end/parser_testcases/record/record_literal_02.dart.intertwined.expect b/pkg/front_end/parser_testcases/record/record_literal_02.dart.intertwined.expect
index 59d7a9f..18c1f8a 100644
--- a/pkg/front_end/parser_testcases/record/record_literal_02.dart.intertwined.expect
+++ b/pkg/front_end/parser_testcases/record/record_literal_02.dart.intertwined.expect
@@ -28,8 +28,8 @@
           notEofOrValue(}, ()
           parseStatement({)
             parseStatementX({)
-              parseExpressionStatementOrDeclaration({, false)
-                parseExpressionStatementOrDeclarationAfterModifiers({, {, null, null, null, false)
+              parseExpressionStatementOrDeclaration({, null)
+                parseExpressionStatementOrDeclarationAfterModifiers({, {, null, null, null, null)
                   looksLikeLocalFunction(()
                   parseExpressionStatement({)
                     parseExpression({)
@@ -64,8 +64,8 @@
           notEofOrValue(}, ()
           parseStatement(;)
             parseStatementX(;)
-              parseExpressionStatementOrDeclaration(;, false)
-                parseExpressionStatementOrDeclarationAfterModifiers(;, ;, null, null, null, false)
+              parseExpressionStatementOrDeclaration(;, null)
+                parseExpressionStatementOrDeclarationAfterModifiers(;, ;, null, null, null, null)
                   looksLikeLocalFunction(()
                   parseExpressionStatement(;)
                     parseExpression(;)
@@ -115,8 +115,8 @@
           notEofOrValue(}, ()
           parseStatement(;)
             parseStatementX(;)
-              parseExpressionStatementOrDeclaration(;, false)
-                parseExpressionStatementOrDeclarationAfterModifiers(;, ;, null, null, null, false)
+              parseExpressionStatementOrDeclaration(;, null)
+                parseExpressionStatementOrDeclarationAfterModifiers(;, ;, null, null, null, null)
                   looksLikeLocalFunction(()
                   parseExpressionStatement(;)
                     parseExpression(;)
@@ -160,8 +160,8 @@
           notEofOrValue(}, ()
           parseStatement(;)
             parseStatementX(;)
-              parseExpressionStatementOrDeclaration(;, false)
-                parseExpressionStatementOrDeclarationAfterModifiers(;, ;, null, null, null, false)
+              parseExpressionStatementOrDeclaration(;, null)
+                parseExpressionStatementOrDeclarationAfterModifiers(;, ;, null, null, null, null)
                   looksLikeLocalFunction(()
                   parseExpressionStatement(;)
                     parseExpression(;)
diff --git a/pkg/front_end/parser_testcases/record/record_literal_03.dart.intertwined.expect b/pkg/front_end/parser_testcases/record/record_literal_03.dart.intertwined.expect
index 31accb9..2d0fb44 100644
--- a/pkg/front_end/parser_testcases/record/record_literal_03.dart.intertwined.expect
+++ b/pkg/front_end/parser_testcases/record/record_literal_03.dart.intertwined.expect
@@ -28,7 +28,7 @@
           notEofOrValue(}, var)
           parseStatement({)
             parseStatementX({)
-              parseExpressionStatementOrDeclarationAfterModifiers(var, {, null, var, null, false)
+              parseExpressionStatementOrDeclarationAfterModifiers(var, {, null, var, null, null)
                 looksLikeLocalFunction(r1)
                 listener: beginMetadataStar(var)
                 listener: endMetadataStar(0)
@@ -63,7 +63,7 @@
           notEofOrValue(}, var)
           parseStatement(;)
             parseStatementX(;)
-              parseExpressionStatementOrDeclarationAfterModifiers(var, ;, null, var, null, false)
+              parseExpressionStatementOrDeclarationAfterModifiers(var, ;, null, var, null, null)
                 looksLikeLocalFunction(r2)
                 listener: beginMetadataStar(var)
                 listener: endMetadataStar(0)
@@ -101,7 +101,7 @@
           notEofOrValue(}, var)
           parseStatement(;)
             parseStatementX(;)
-              parseExpressionStatementOrDeclarationAfterModifiers(var, ;, null, var, null, false)
+              parseExpressionStatementOrDeclarationAfterModifiers(var, ;, null, var, null, null)
                 looksLikeLocalFunction(r3)
                 listener: beginMetadataStar(var)
                 listener: endMetadataStar(0)
@@ -139,7 +139,7 @@
           notEofOrValue(}, var)
           parseStatement(;)
             parseStatementX(;)
-              parseExpressionStatementOrDeclarationAfterModifiers(var, ;, null, var, null, false)
+              parseExpressionStatementOrDeclarationAfterModifiers(var, ;, null, var, null, null)
                 looksLikeLocalFunction(r4)
                 listener: beginMetadataStar(var)
                 listener: endMetadataStar(0)
diff --git a/pkg/front_end/parser_testcases/record/record_literal_04.dart.intertwined.expect b/pkg/front_end/parser_testcases/record/record_literal_04.dart.intertwined.expect
index 049c77b..576112b 100644
--- a/pkg/front_end/parser_testcases/record/record_literal_04.dart.intertwined.expect
+++ b/pkg/front_end/parser_testcases/record/record_literal_04.dart.intertwined.expect
@@ -28,7 +28,7 @@
           notEofOrValue(}, var)
           parseStatement({)
             parseStatementX({)
-              parseExpressionStatementOrDeclarationAfterModifiers(var, {, null, var, null, false)
+              parseExpressionStatementOrDeclarationAfterModifiers(var, {, null, var, null, null)
                 looksLikeLocalFunction(r1)
                 listener: beginMetadataStar(var)
                 listener: endMetadataStar(0)
@@ -65,7 +65,7 @@
           notEofOrValue(}, var)
           parseStatement(;)
             parseStatementX(;)
-              parseExpressionStatementOrDeclarationAfterModifiers(var, ;, null, var, null, false)
+              parseExpressionStatementOrDeclarationAfterModifiers(var, ;, null, var, null, null)
                 looksLikeLocalFunction(r2)
                 listener: beginMetadataStar(var)
                 listener: endMetadataStar(0)
@@ -126,7 +126,7 @@
           notEofOrValue(}, var)
           parseStatement(;)
             parseStatementX(;)
-              parseExpressionStatementOrDeclarationAfterModifiers(var, ;, null, var, null, false)
+              parseExpressionStatementOrDeclarationAfterModifiers(var, ;, null, var, null, null)
                 looksLikeLocalFunction(r3)
                 listener: beginMetadataStar(var)
                 listener: endMetadataStar(0)
@@ -187,7 +187,7 @@
           notEofOrValue(}, var)
           parseStatement(;)
             parseStatementX(;)
-              parseExpressionStatementOrDeclarationAfterModifiers(var, ;, null, var, null, false)
+              parseExpressionStatementOrDeclarationAfterModifiers(var, ;, null, var, null, null)
                 looksLikeLocalFunction(r4)
                 listener: beginMetadataStar(var)
                 listener: endMetadataStar(0)
@@ -227,7 +227,7 @@
           notEofOrValue(}, var)
           parseStatement(;)
             parseStatementX(;)
-              parseExpressionStatementOrDeclarationAfterModifiers(var, ;, null, var, null, false)
+              parseExpressionStatementOrDeclarationAfterModifiers(var, ;, null, var, null, null)
                 looksLikeLocalFunction(r5)
                 listener: beginMetadataStar(var)
                 listener: endMetadataStar(0)
@@ -266,7 +266,7 @@
           notEofOrValue(}, var)
           parseStatement(;)
             parseStatementX(;)
-              parseExpressionStatementOrDeclarationAfterModifiers(var, ;, null, var, null, false)
+              parseExpressionStatementOrDeclarationAfterModifiers(var, ;, null, var, null, null)
                 looksLikeLocalFunction(r6)
                 listener: beginMetadataStar(var)
                 listener: endMetadataStar(0)
diff --git a/pkg/front_end/parser_testcases/record/record_type_01.dart.intertwined.expect b/pkg/front_end/parser_testcases/record/record_type_01.dart.intertwined.expect
index a787c76..9d8e02a 100644
--- a/pkg/front_end/parser_testcases/record/record_type_01.dart.intertwined.expect
+++ b/pkg/front_end/parser_testcases/record/record_type_01.dart.intertwined.expect
@@ -28,8 +28,8 @@
           notEofOrValue(}, ()
           parseStatement({)
             parseStatementX({)
-              parseExpressionStatementOrDeclaration({, false)
-                parseExpressionStatementOrDeclarationAfterModifiers({, {, null, null, null, false)
+              parseExpressionStatementOrDeclaration({, null)
+                parseExpressionStatementOrDeclarationAfterModifiers({, {, null, null, null, null)
                   looksLikeLocalFunction(record1)
                   listener: beginMetadataStar(()
                   listener: endMetadataStar(0)
@@ -92,8 +92,8 @@
           notEofOrValue(}, ()
           parseStatement(;)
             parseStatementX(;)
-              parseExpressionStatementOrDeclaration(;, false)
-                parseExpressionStatementOrDeclarationAfterModifiers(;, ;, null, null, null, false)
+              parseExpressionStatementOrDeclaration(;, null)
+                parseExpressionStatementOrDeclarationAfterModifiers(;, ;, null, null, null, null)
                   looksLikeLocalFunction(record1Named)
                   listener: beginMetadataStar(()
                   listener: endMetadataStar(0)
@@ -158,8 +158,8 @@
           notEofOrValue(}, ()
           parseStatement(;)
             parseStatementX(;)
-              parseExpressionStatementOrDeclaration(;, false)
-                parseExpressionStatementOrDeclarationAfterModifiers(;, ;, null, null, null, false)
+              parseExpressionStatementOrDeclaration(;, null)
+                parseExpressionStatementOrDeclarationAfterModifiers(;, ;, null, null, null, null)
                   looksLikeLocalFunction(record2)
                   listener: beginMetadataStar(()
                   listener: endMetadataStar(0)
@@ -222,8 +222,8 @@
           notEofOrValue(}, ()
           parseStatement(;)
             parseStatementX(;)
-              parseExpressionStatementOrDeclaration(;, false)
-                parseExpressionStatementOrDeclarationAfterModifiers(;, ;, null, null, null, false)
+              parseExpressionStatementOrDeclaration(;, null)
+                parseExpressionStatementOrDeclarationAfterModifiers(;, ;, null, null, null, null)
                   looksLikeLocalFunction(record2Named)
                   listener: beginMetadataStar(()
                   listener: endMetadataStar(0)
@@ -288,8 +288,8 @@
           notEofOrValue(}, ()
           parseStatement(;)
             parseStatementX(;)
-              parseExpressionStatementOrDeclaration(;, false)
-                parseExpressionStatementOrDeclarationAfterModifiers(;, ;, null, null, null, false)
+              parseExpressionStatementOrDeclaration(;, null)
+                parseExpressionStatementOrDeclarationAfterModifiers(;, ;, null, null, null, null)
                   looksLikeLocalFunction(record3)
                   listener: beginMetadataStar(()
                   listener: endMetadataStar(0)
@@ -396,8 +396,8 @@
           notEofOrValue(}, ()
           parseStatement(;)
             parseStatementX(;)
-              parseExpressionStatementOrDeclaration(;, false)
-                parseExpressionStatementOrDeclarationAfterModifiers(;, ;, null, null, null, false)
+              parseExpressionStatementOrDeclaration(;, null)
+                parseExpressionStatementOrDeclarationAfterModifiers(;, ;, null, null, null, null)
                   looksLikeLocalFunction(record3Named)
                   listener: beginMetadataStar(()
                   listener: endMetadataStar(0)
@@ -506,8 +506,8 @@
           notEofOrValue(}, ()
           parseStatement(;)
             parseStatementX(;)
-              parseExpressionStatementOrDeclaration(;, false)
-                parseExpressionStatementOrDeclarationAfterModifiers(;, ;, null, null, null, false)
+              parseExpressionStatementOrDeclaration(;, null)
+                parseExpressionStatementOrDeclarationAfterModifiers(;, ;, null, null, null, null)
                   looksLikeLocalFunction(record4)
                   listener: beginMetadataStar(()
                   listener: endMetadataStar(0)
@@ -614,8 +614,8 @@
           notEofOrValue(}, ()
           parseStatement(;)
             parseStatementX(;)
-              parseExpressionStatementOrDeclaration(;, false)
-                parseExpressionStatementOrDeclarationAfterModifiers(;, ;, null, null, null, false)
+              parseExpressionStatementOrDeclaration(;, null)
+                parseExpressionStatementOrDeclarationAfterModifiers(;, ;, null, null, null, null)
                   looksLikeLocalFunction(record4Named)
                   listener: beginMetadataStar(()
                   listener: endMetadataStar(0)
@@ -724,8 +724,8 @@
           notEofOrValue(}, void)
           parseStatement(;)
             parseStatementX(;)
-              parseExpressionStatementOrDeclaration(;, false)
-                parseExpressionStatementOrDeclarationAfterModifiers(;, ;, null, null, null, false)
+              parseExpressionStatementOrDeclaration(;, null)
+                parseExpressionStatementOrDeclarationAfterModifiers(;, ;, null, null, null, null)
                   looksLikeLocalFunction(foobar)
                   listener: beginMetadataStar(void)
                   listener: endMetadataStar(0)
@@ -773,8 +773,8 @@
           notEofOrValue(}, ()
           parseStatement(;)
             parseStatementX(;)
-              parseExpressionStatementOrDeclaration(;, false)
-                parseExpressionStatementOrDeclarationAfterModifiers(;, ;, null, null, null, false)
+              parseExpressionStatementOrDeclaration(;, null)
+                parseExpressionStatementOrDeclarationAfterModifiers(;, ;, null, null, null, null)
                   looksLikeLocalFunction(record5)
                   listener: beginMetadataStar(()
                   listener: endMetadataStar(0)
@@ -872,7 +872,7 @@
           notEofOrValue(}, int)
           parseStatement(;)
             parseStatementX(;)
-              parseExpressionStatementOrDeclarationAfterModifiers(;, ;, null, null, null, false)
+              parseExpressionStatementOrDeclarationAfterModifiers(;, ;, null, null, null, null)
                 looksLikeLocalFunction(async)
                 listener: beginMetadataStar(int)
                 listener: endMetadataStar(0)
@@ -926,7 +926,7 @@
                       notEofOrValue(}, print)
                       parseStatement({)
                         parseStatementX({)
-                          parseExpressionStatementOrDeclarationAfterModifiers({, {, null, null, null, false)
+                          parseExpressionStatementOrDeclarationAfterModifiers({, {, null, null, null, null)
                             looksLikeLocalFunction(print)
                             parseExpressionStatement({)
                               parseExpression({)
@@ -962,8 +962,8 @@
           notEofOrValue(}, ()
           parseStatement(})
             parseStatementX(})
-              parseExpressionStatementOrDeclaration(}, false)
-                parseExpressionStatementOrDeclarationAfterModifiers(}, }, null, null, null, false)
+              parseExpressionStatementOrDeclaration(}, null)
+                parseExpressionStatementOrDeclarationAfterModifiers(}, }, null, null, null, null)
                   looksLikeLocalFunction(async)
                   listener: beginMetadataStar(()
                   listener: endMetadataStar(0)
@@ -1039,7 +1039,7 @@
                         notEofOrValue(}, print)
                         parseStatement({)
                           parseStatementX({)
-                            parseExpressionStatementOrDeclarationAfterModifiers({, {, null, null, null, false)
+                            parseExpressionStatementOrDeclarationAfterModifiers({, {, null, null, null, null)
                               looksLikeLocalFunction(print)
                               parseExpressionStatement({)
                                 parseExpression({)
@@ -1075,8 +1075,8 @@
           notEofOrValue(}, ()
           parseStatement(})
             parseStatementX(})
-              parseExpressionStatementOrDeclaration(}, false)
-                parseExpressionStatementOrDeclarationAfterModifiers(}, }, null, null, null, false)
+              parseExpressionStatementOrDeclaration(}, null)
+                parseExpressionStatementOrDeclarationAfterModifiers(}, }, null, null, null, null)
                   looksLikeLocalFunction(async)
                   listener: beginMetadataStar(()
                   listener: endMetadataStar(0)
@@ -1181,8 +1181,8 @@
           notEofOrValue(}, ()
           parseStatement(;)
             parseStatementX(;)
-              parseExpressionStatementOrDeclaration(;, false)
-                parseExpressionStatementOrDeclarationAfterModifiers(;, ;, null, null, null, false)
+              parseExpressionStatementOrDeclaration(;, null)
+                parseExpressionStatementOrDeclarationAfterModifiers(;, ;, null, null, null, null)
                   looksLikeLocalFunction(()
                   parseExpressionStatement(;)
                     parseExpression(;)
@@ -1230,7 +1230,7 @@
                                     notEofOrValue(}, print)
                                     parseStatement({)
                                       parseStatementX({)
-                                        parseExpressionStatementOrDeclarationAfterModifiers({, {, null, null, null, false)
+                                        parseExpressionStatementOrDeclarationAfterModifiers({, {, null, null, null, null)
                                           looksLikeLocalFunction(print)
                                           parseExpressionStatement({)
                                             parseExpression({)
@@ -1275,8 +1275,8 @@
           notEofOrValue(}, ()
           parseStatement(;)
             parseStatementX(;)
-              parseExpressionStatementOrDeclaration(;, false)
-                parseExpressionStatementOrDeclarationAfterModifiers(;, ;, null, null, null, false)
+              parseExpressionStatementOrDeclaration(;, null)
+                parseExpressionStatementOrDeclarationAfterModifiers(;, ;, null, null, null, null)
                   looksLikeLocalFunction(()
                   parseExpressionStatement(;)
                     parseExpression(;)
@@ -1354,8 +1354,8 @@
           notEofOrValue(}, ()
           parseStatement(;)
             parseStatementX(;)
-              parseExpressionStatementOrDeclaration(;, false)
-                parseExpressionStatementOrDeclarationAfterModifiers(;, ;, null, null, null, false)
+              parseExpressionStatementOrDeclaration(;, null)
+                parseExpressionStatementOrDeclarationAfterModifiers(;, ;, null, null, null, null)
                   looksLikeLocalFunction(()
                   parseExpressionStatement(;)
                     parseExpression(;)
@@ -1403,7 +1403,7 @@
                                     notEofOrValue(}, print)
                                     parseStatement({)
                                       parseStatementX({)
-                                        parseExpressionStatementOrDeclarationAfterModifiers({, {, null, null, null, false)
+                                        parseExpressionStatementOrDeclarationAfterModifiers({, {, null, null, null, null)
                                           looksLikeLocalFunction(print)
                                           parseExpressionStatement({)
                                             parseExpression({)
@@ -1448,8 +1448,8 @@
           notEofOrValue(}, ()
           parseStatement(;)
             parseStatementX(;)
-              parseExpressionStatementOrDeclaration(;, false)
-                parseExpressionStatementOrDeclarationAfterModifiers(;, ;, null, null, null, false)
+              parseExpressionStatementOrDeclaration(;, null)
+                parseExpressionStatementOrDeclarationAfterModifiers(;, ;, null, null, null, null)
                   looksLikeLocalFunction(()
                   parseExpressionStatement(;)
                     parseExpression(;)
diff --git a/pkg/front_end/parser_testcases/record/record_type_02.dart.intertwined.expect b/pkg/front_end/parser_testcases/record/record_type_02.dart.intertwined.expect
index 765d01d..9c5fa95 100644
--- a/pkg/front_end/parser_testcases/record/record_type_02.dart.intertwined.expect
+++ b/pkg/front_end/parser_testcases/record/record_type_02.dart.intertwined.expect
@@ -28,8 +28,8 @@
           notEofOrValue(}, ()
           parseStatement({)
             parseStatementX({)
-              parseExpressionStatementOrDeclaration({, false)
-                parseExpressionStatementOrDeclarationAfterModifiers({, {, null, null, null, false)
+              parseExpressionStatementOrDeclaration({, null)
+                parseExpressionStatementOrDeclarationAfterModifiers({, {, null, null, null, null)
                   looksLikeLocalFunction(record1)
                   listener: beginMetadataStar(()
                   listener: endMetadataStar(0)
@@ -98,8 +98,8 @@
           notEofOrValue(}, ()
           parseStatement(;)
             parseStatementX(;)
-              parseExpressionStatementOrDeclaration(;, false)
-                parseExpressionStatementOrDeclarationAfterModifiers(;, ;, null, null, null, false)
+              parseExpressionStatementOrDeclaration(;, null)
+                parseExpressionStatementOrDeclarationAfterModifiers(;, ;, null, null, null, null)
                   looksLikeLocalFunction(record2)
                   listener: beginMetadataStar(()
                   listener: endMetadataStar(0)
@@ -175,8 +175,8 @@
           notEofOrValue(}, ()
           parseStatement({)
             parseStatementX({)
-              parseExpressionStatementOrDeclaration({, false)
-                parseExpressionStatementOrDeclarationAfterModifiers({, {, null, null, null, false)
+              parseExpressionStatementOrDeclaration({, null)
+                parseExpressionStatementOrDeclarationAfterModifiers({, {, null, null, null, null)
                   looksLikeLocalFunction(record1)
                   listener: beginMetadataStar(()
                   listener: endMetadataStar(0)
@@ -223,8 +223,8 @@
           notEofOrValue(}, ()
           parseStatement(;)
             parseStatementX(;)
-              parseExpressionStatementOrDeclaration(;, false)
-                parseExpressionStatementOrDeclarationAfterModifiers(;, ;, null, null, null, false)
+              parseExpressionStatementOrDeclaration(;, null)
+                parseExpressionStatementOrDeclarationAfterModifiers(;, ;, null, null, null, null)
                   looksLikeLocalFunction(record2)
                   listener: beginMetadataStar(()
                   listener: endMetadataStar(0)
@@ -279,8 +279,8 @@
           notEofOrValue(}, ()
           parseStatement(;)
             parseStatementX(;)
-              parseExpressionStatementOrDeclaration(;, false)
-                parseExpressionStatementOrDeclarationAfterModifiers(;, ;, null, null, null, false)
+              parseExpressionStatementOrDeclaration(;, null)
+                parseExpressionStatementOrDeclarationAfterModifiers(;, ;, null, null, null, null)
                   looksLikeLocalFunction(record3)
                   listener: beginMetadataStar(()
                   listener: endMetadataStar(0)
diff --git a/pkg/front_end/parser_testcases/record/record_type_04.dart.intertwined.expect b/pkg/front_end/parser_testcases/record/record_type_04.dart.intertwined.expect
index 4f83653..7633960 100644
--- a/pkg/front_end/parser_testcases/record/record_type_04.dart.intertwined.expect
+++ b/pkg/front_end/parser_testcases/record/record_type_04.dart.intertwined.expect
@@ -28,8 +28,8 @@
           notEofOrValue(}, Function)
           parseStatement({)
             parseStatementX({)
-              parseExpressionStatementOrDeclaration({, false)
-                parseExpressionStatementOrDeclarationAfterModifiers({, {, null, null, null, false)
+              parseExpressionStatementOrDeclaration({, null)
+                parseExpressionStatementOrDeclarationAfterModifiers({, {, null, null, null, null)
                   looksLikeLocalFunction(x)
                   listener: beginMetadataStar(Function)
                   listener: endMetadataStar(0)
@@ -114,7 +114,7 @@
           notEofOrValue(}, int)
           parseStatement(;)
             parseStatementX(;)
-              parseExpressionStatementOrDeclarationAfterModifiers(;, ;, null, null, null, false)
+              parseExpressionStatementOrDeclarationAfterModifiers(;, ;, null, null, null, null)
                 looksLikeLocalFunction(y1)
                 listener: beginMetadataStar(int)
                 listener: endMetadataStar(0)
@@ -175,7 +175,7 @@
           notEofOrValue(}, int)
           parseStatement(;)
             parseStatementX(;)
-              parseExpressionStatementOrDeclarationAfterModifiers(;, ;, null, null, null, false)
+              parseExpressionStatementOrDeclarationAfterModifiers(;, ;, null, null, null, null)
                 looksLikeLocalFunction(y2)
                 listener: beginMetadataStar(int)
                 listener: endMetadataStar(0)
@@ -236,8 +236,8 @@
           notEofOrValue(}, ()
           parseStatement(;)
             parseStatementX(;)
-              parseExpressionStatementOrDeclaration(;, false)
-                parseExpressionStatementOrDeclarationAfterModifiers(;, ;, null, null, null, false)
+              parseExpressionStatementOrDeclaration(;, null)
+                parseExpressionStatementOrDeclarationAfterModifiers(;, ;, null, null, null, null)
                   looksLikeLocalFunction(z1)
                   listener: beginMetadataStar(()
                   listener: endMetadataStar(0)
@@ -317,8 +317,8 @@
           notEofOrValue(}, ()
           parseStatement(;)
             parseStatementX(;)
-              parseExpressionStatementOrDeclaration(;, false)
-                parseExpressionStatementOrDeclarationAfterModifiers(;, ;, null, null, null, false)
+              parseExpressionStatementOrDeclaration(;, null)
+                parseExpressionStatementOrDeclarationAfterModifiers(;, ;, null, null, null, null)
                   looksLikeLocalFunction(z2)
                   listener: beginMetadataStar(()
                   listener: endMetadataStar(0)
@@ -398,8 +398,8 @@
           notEofOrValue(}, ()
           parseStatement(;)
             parseStatementX(;)
-              parseExpressionStatementOrDeclaration(;, false)
-                parseExpressionStatementOrDeclarationAfterModifiers(;, ;, null, null, null, false)
+              parseExpressionStatementOrDeclaration(;, null)
+                parseExpressionStatementOrDeclarationAfterModifiers(;, ;, null, null, null, null)
                   looksLikeLocalFunction(z3)
                   listener: beginMetadataStar(()
                   listener: endMetadataStar(0)
@@ -497,8 +497,8 @@
           notEofOrValue(}, ()
           parseStatement(;)
             parseStatementX(;)
-              parseExpressionStatementOrDeclaration(;, false)
-                parseExpressionStatementOrDeclarationAfterModifiers(;, ;, null, null, null, false)
+              parseExpressionStatementOrDeclaration(;, null)
+                parseExpressionStatementOrDeclarationAfterModifiers(;, ;, null, null, null, null)
                   looksLikeLocalFunction(z4)
                   listener: beginMetadataStar(()
                   listener: endMetadataStar(0)
diff --git a/pkg/front_end/parser_testcases/record/record_type_as_type_arguments.dart.intertwined.expect b/pkg/front_end/parser_testcases/record/record_type_as_type_arguments.dart.intertwined.expect
index 1cffcd6..49f23e7 100644
--- a/pkg/front_end/parser_testcases/record/record_type_as_type_arguments.dart.intertwined.expect
+++ b/pkg/front_end/parser_testcases/record/record_type_as_type_arguments.dart.intertwined.expect
@@ -28,7 +28,7 @@
           notEofOrValue(}, final)
           parseStatement({)
             parseStatementX({)
-              parseExpressionStatementOrDeclarationAfterModifiers(final, {, null, final, null, false)
+              parseExpressionStatementOrDeclarationAfterModifiers(final, {, null, final, null, null)
                 looksLikeLocalFunction(x)
                 listener: beginMetadataStar(final)
                 listener: endMetadataStar(0)
@@ -83,7 +83,7 @@
           notEofOrValue(}, List)
           parseStatement(;)
             parseStatementX(;)
-              parseExpressionStatementOrDeclarationAfterModifiers(;, ;, null, null, null, false)
+              parseExpressionStatementOrDeclarationAfterModifiers(;, ;, null, null, null, null)
                 looksLikeLocalFunction(y)
                 listener: beginMetadataStar(List)
                 listener: endMetadataStar(0)
@@ -140,7 +140,7 @@
           notEofOrValue(}, Map)
           parseStatement(;)
             parseStatementX(;)
-              parseExpressionStatementOrDeclarationAfterModifiers(;, ;, null, null, null, false)
+              parseExpressionStatementOrDeclarationAfterModifiers(;, ;, null, null, null, null)
                 looksLikeLocalFunction(z)
                 listener: beginMetadataStar(Map)
                 listener: endMetadataStar(0)
@@ -217,7 +217,7 @@
           notEofOrValue(}, List)
           parseStatement(;)
             parseStatementX(;)
-              parseExpressionStatementOrDeclarationAfterModifiers(;, ;, null, null, null, false)
+              parseExpressionStatementOrDeclarationAfterModifiers(;, ;, null, null, null, null)
                 looksLikeLocalFunction(y2)
                 listener: beginMetadataStar(List)
                 listener: endMetadataStar(0)
diff --git a/pkg/front_end/parser_testcases/record/record_type_getter.dart.intertwined.expect b/pkg/front_end/parser_testcases/record/record_type_getter.dart.intertwined.expect
index 070b633..3e5cec4 100644
--- a/pkg/front_end/parser_testcases/record/record_type_getter.dart.intertwined.expect
+++ b/pkg/front_end/parser_testcases/record/record_type_getter.dart.intertwined.expect
@@ -320,8 +320,8 @@
           notEofOrValue(}, throw)
           parseStatement({)
             parseStatementX({)
-              parseExpressionStatementOrDeclaration({, false)
-                parseExpressionStatementOrDeclarationAfterModifiers({, {, null, null, null, false)
+              parseExpressionStatementOrDeclaration({, null)
+                parseExpressionStatementOrDeclarationAfterModifiers({, {, null, null, null, null)
                   looksLikeLocalFunction(throw)
                   parseExpressionStatement({)
                     parseExpression({)
@@ -479,8 +479,8 @@
           notEofOrValue(}, throw)
           parseStatement({)
             parseStatementX({)
-              parseExpressionStatementOrDeclaration({, false)
-                parseExpressionStatementOrDeclarationAfterModifiers({, {, null, null, null, false)
+              parseExpressionStatementOrDeclaration({, null)
+                parseExpressionStatementOrDeclarationAfterModifiers({, {, null, null, null, null)
                   looksLikeLocalFunction(throw)
                   parseExpressionStatement({)
                     parseExpression({)
@@ -638,8 +638,8 @@
           notEofOrValue(}, throw)
           parseStatement({)
             parseStatementX({)
-              parseExpressionStatementOrDeclaration({, false)
-                parseExpressionStatementOrDeclarationAfterModifiers({, {, null, null, null, false)
+              parseExpressionStatementOrDeclaration({, null)
+                parseExpressionStatementOrDeclarationAfterModifiers({, {, null, null, null, null)
                   looksLikeLocalFunction(throw)
                   parseExpressionStatement({)
                     parseExpression({)
@@ -917,8 +917,8 @@
           notEofOrValue(}, throw)
           parseStatement({)
             parseStatementX({)
-              parseExpressionStatementOrDeclaration({, false)
-                parseExpressionStatementOrDeclarationAfterModifiers({, {, null, null, null, false)
+              parseExpressionStatementOrDeclaration({, null)
+                parseExpressionStatementOrDeclarationAfterModifiers({, {, null, null, null, null)
                   looksLikeLocalFunction(throw)
                   parseExpressionStatement({)
                     parseExpression({)
@@ -1046,8 +1046,8 @@
           notEofOrValue(}, throw)
           parseStatement({)
             parseStatementX({)
-              parseExpressionStatementOrDeclaration({, false)
-                parseExpressionStatementOrDeclarationAfterModifiers({, {, null, null, null, false)
+              parseExpressionStatementOrDeclaration({, null)
+                parseExpressionStatementOrDeclarationAfterModifiers({, {, null, null, null, null)
                   looksLikeLocalFunction(throw)
                   parseExpressionStatement({)
                     parseExpression({)
@@ -1175,8 +1175,8 @@
           notEofOrValue(}, throw)
           parseStatement({)
             parseStatementX({)
-              parseExpressionStatementOrDeclaration({, false)
-                parseExpressionStatementOrDeclarationAfterModifiers({, {, null, null, null, false)
+              parseExpressionStatementOrDeclaration({, null)
+                parseExpressionStatementOrDeclarationAfterModifiers({, {, null, null, null, null)
                   looksLikeLocalFunction(throw)
                   parseExpressionStatement({)
                     parseExpression({)
@@ -1454,8 +1454,8 @@
           notEofOrValue(}, throw)
           parseStatement({)
             parseStatementX({)
-              parseExpressionStatementOrDeclaration({, false)
-                parseExpressionStatementOrDeclarationAfterModifiers({, {, null, null, null, false)
+              parseExpressionStatementOrDeclaration({, null)
+                parseExpressionStatementOrDeclarationAfterModifiers({, {, null, null, null, null)
                   looksLikeLocalFunction(throw)
                   parseExpressionStatement({)
                     parseExpression({)
@@ -1583,8 +1583,8 @@
           notEofOrValue(}, throw)
           parseStatement({)
             parseStatementX({)
-              parseExpressionStatementOrDeclaration({, false)
-                parseExpressionStatementOrDeclarationAfterModifiers({, {, null, null, null, false)
+              parseExpressionStatementOrDeclaration({, null)
+                parseExpressionStatementOrDeclarationAfterModifiers({, {, null, null, null, null)
                   looksLikeLocalFunction(throw)
                   parseExpressionStatement({)
                     parseExpression({)
@@ -1712,8 +1712,8 @@
           notEofOrValue(}, throw)
           parseStatement({)
             parseStatementX({)
-              parseExpressionStatementOrDeclaration({, false)
-                parseExpressionStatementOrDeclarationAfterModifiers({, {, null, null, null, false)
+              parseExpressionStatementOrDeclaration({, null)
+                parseExpressionStatementOrDeclarationAfterModifiers({, {, null, null, null, null)
                   looksLikeLocalFunction(throw)
                   parseExpressionStatement({)
                     parseExpression({)
@@ -2094,8 +2094,8 @@
                   notEofOrValue(}, throw)
                   parseStatement({)
                     parseStatementX({)
-                      parseExpressionStatementOrDeclaration({, false)
-                        parseExpressionStatementOrDeclarationAfterModifiers({, {, null, null, null, false)
+                      parseExpressionStatementOrDeclaration({, null)
+                        parseExpressionStatementOrDeclarationAfterModifiers({, {, null, null, null, null)
                           looksLikeLocalFunction(throw)
                           parseExpressionStatement({)
                             parseExpression({)
@@ -2263,8 +2263,8 @@
                   notEofOrValue(}, throw)
                   parseStatement({)
                     parseStatementX({)
-                      parseExpressionStatementOrDeclaration({, false)
-                        parseExpressionStatementOrDeclarationAfterModifiers({, {, null, null, null, false)
+                      parseExpressionStatementOrDeclaration({, null)
+                        parseExpressionStatementOrDeclarationAfterModifiers({, {, null, null, null, null)
                           looksLikeLocalFunction(throw)
                           parseExpressionStatement({)
                             parseExpression({)
@@ -2432,8 +2432,8 @@
                   notEofOrValue(}, throw)
                   parseStatement({)
                     parseStatementX({)
-                      parseExpressionStatementOrDeclaration({, false)
-                        parseExpressionStatementOrDeclarationAfterModifiers({, {, null, null, null, false)
+                      parseExpressionStatementOrDeclaration({, null)
+                        parseExpressionStatementOrDeclarationAfterModifiers({, {, null, null, null, null)
                           looksLikeLocalFunction(throw)
                           parseExpressionStatement({)
                             parseExpression({)
@@ -2727,8 +2727,8 @@
                   notEofOrValue(}, throw)
                   parseStatement({)
                     parseStatementX({)
-                      parseExpressionStatementOrDeclaration({, false)
-                        parseExpressionStatementOrDeclarationAfterModifiers({, {, null, null, null, false)
+                      parseExpressionStatementOrDeclaration({, null)
+                        parseExpressionStatementOrDeclarationAfterModifiers({, {, null, null, null, null)
                           looksLikeLocalFunction(throw)
                           parseExpressionStatement({)
                             parseExpression({)
@@ -2864,8 +2864,8 @@
                   notEofOrValue(}, throw)
                   parseStatement({)
                     parseStatementX({)
-                      parseExpressionStatementOrDeclaration({, false)
-                        parseExpressionStatementOrDeclarationAfterModifiers({, {, null, null, null, false)
+                      parseExpressionStatementOrDeclaration({, null)
+                        parseExpressionStatementOrDeclarationAfterModifiers({, {, null, null, null, null)
                           looksLikeLocalFunction(throw)
                           parseExpressionStatement({)
                             parseExpression({)
@@ -3001,8 +3001,8 @@
                   notEofOrValue(}, throw)
                   parseStatement({)
                     parseStatementX({)
-                      parseExpressionStatementOrDeclaration({, false)
-                        parseExpressionStatementOrDeclarationAfterModifiers({, {, null, null, null, false)
+                      parseExpressionStatementOrDeclaration({, null)
+                        parseExpressionStatementOrDeclarationAfterModifiers({, {, null, null, null, null)
                           looksLikeLocalFunction(throw)
                           parseExpressionStatement({)
                             parseExpression({)
@@ -3951,8 +3951,8 @@
                   notEofOrValue(}, throw)
                   parseStatement({)
                     parseStatementX({)
-                      parseExpressionStatementOrDeclaration({, false)
-                        parseExpressionStatementOrDeclarationAfterModifiers({, {, null, null, null, false)
+                      parseExpressionStatementOrDeclaration({, null)
+                        parseExpressionStatementOrDeclarationAfterModifiers({, {, null, null, null, null)
                           looksLikeLocalFunction(throw)
                           parseExpressionStatement({)
                             parseExpression({)
@@ -4118,8 +4118,8 @@
                   notEofOrValue(}, throw)
                   parseStatement({)
                     parseStatementX({)
-                      parseExpressionStatementOrDeclaration({, false)
-                        parseExpressionStatementOrDeclarationAfterModifiers({, {, null, null, null, false)
+                      parseExpressionStatementOrDeclaration({, null)
+                        parseExpressionStatementOrDeclarationAfterModifiers({, {, null, null, null, null)
                           looksLikeLocalFunction(throw)
                           parseExpressionStatement({)
                             parseExpression({)
@@ -4285,8 +4285,8 @@
                   notEofOrValue(}, throw)
                   parseStatement({)
                     parseStatementX({)
-                      parseExpressionStatementOrDeclaration({, false)
-                        parseExpressionStatementOrDeclarationAfterModifiers({, {, null, null, null, false)
+                      parseExpressionStatementOrDeclaration({, null)
+                        parseExpressionStatementOrDeclarationAfterModifiers({, {, null, null, null, null)
                           looksLikeLocalFunction(throw)
                           parseExpressionStatement({)
                             parseExpression({)
@@ -4576,8 +4576,8 @@
                   notEofOrValue(}, throw)
                   parseStatement({)
                     parseStatementX({)
-                      parseExpressionStatementOrDeclaration({, false)
-                        parseExpressionStatementOrDeclarationAfterModifiers({, {, null, null, null, false)
+                      parseExpressionStatementOrDeclaration({, null)
+                        parseExpressionStatementOrDeclarationAfterModifiers({, {, null, null, null, null)
                           looksLikeLocalFunction(throw)
                           parseExpressionStatement({)
                             parseExpression({)
@@ -4711,8 +4711,8 @@
                   notEofOrValue(}, throw)
                   parseStatement({)
                     parseStatementX({)
-                      parseExpressionStatementOrDeclaration({, false)
-                        parseExpressionStatementOrDeclarationAfterModifiers({, {, null, null, null, false)
+                      parseExpressionStatementOrDeclaration({, null)
+                        parseExpressionStatementOrDeclarationAfterModifiers({, {, null, null, null, null)
                           looksLikeLocalFunction(throw)
                           parseExpressionStatement({)
                             parseExpression({)
@@ -4846,8 +4846,8 @@
                   notEofOrValue(}, throw)
                   parseStatement({)
                     parseStatementX({)
-                      parseExpressionStatementOrDeclaration({, false)
-                        parseExpressionStatementOrDeclarationAfterModifiers({, {, null, null, null, false)
+                      parseExpressionStatementOrDeclaration({, null)
+                        parseExpressionStatementOrDeclarationAfterModifiers({, {, null, null, null, null)
                           looksLikeLocalFunction(throw)
                           parseExpressionStatement({)
                             parseExpression({)
@@ -5137,8 +5137,8 @@
                   notEofOrValue(}, throw)
                   parseStatement({)
                     parseStatementX({)
-                      parseExpressionStatementOrDeclaration({, false)
-                        parseExpressionStatementOrDeclarationAfterModifiers({, {, null, null, null, false)
+                      parseExpressionStatementOrDeclaration({, null)
+                        parseExpressionStatementOrDeclarationAfterModifiers({, {, null, null, null, null)
                           looksLikeLocalFunction(throw)
                           parseExpressionStatement({)
                             parseExpression({)
@@ -5272,8 +5272,8 @@
                   notEofOrValue(}, throw)
                   parseStatement({)
                     parseStatementX({)
-                      parseExpressionStatementOrDeclaration({, false)
-                        parseExpressionStatementOrDeclarationAfterModifiers({, {, null, null, null, false)
+                      parseExpressionStatementOrDeclaration({, null)
+                        parseExpressionStatementOrDeclarationAfterModifiers({, {, null, null, null, null)
                           looksLikeLocalFunction(throw)
                           parseExpressionStatement({)
                             parseExpression({)
@@ -5407,8 +5407,8 @@
                   notEofOrValue(}, throw)
                   parseStatement({)
                     parseStatementX({)
-                      parseExpressionStatementOrDeclaration({, false)
-                        parseExpressionStatementOrDeclarationAfterModifiers({, {, null, null, null, false)
+                      parseExpressionStatementOrDeclaration({, null)
+                        parseExpressionStatementOrDeclarationAfterModifiers({, {, null, null, null, null)
                           looksLikeLocalFunction(throw)
                           parseExpressionStatement({)
                             parseExpression({)
diff --git a/pkg/front_end/parser_testcases/record/record_type_in_for_loop.dart.intertwined.expect b/pkg/front_end/parser_testcases/record/record_type_in_for_loop.dart.intertwined.expect
index 3bb36af..2b0f6528 100644
--- a/pkg/front_end/parser_testcases/record/record_type_in_for_loop.dart.intertwined.expect
+++ b/pkg/front_end/parser_testcases/record/record_type_in_for_loop.dart.intertwined.expect
@@ -31,9 +31,9 @@
             parseStatementX({)
               parseForStatement({, null)
                 listener: beginForStatement(for)
-                parseForLoopPartsStart(null, for)
-                  parseExpressionStatementOrDeclaration((, true)
-                    parseExpressionStatementOrDeclarationAfterModifiers((, (, null, null, null, true)
+                parseForLoopPartsStart(null, for, ForPartsContext(null))
+                  parseExpressionStatementOrDeclaration((, ForPartsContext(null))
+                    parseExpressionStatementOrDeclarationAfterModifiers((, (, null, null, null, ForPartsContext(null))
                       listener: beginMetadataStar(()
                       listener: endMetadataStar(0)
                       parseRecordType((, (, false)
@@ -135,7 +135,7 @@
                         notEofOrValue(}, print)
                         parseStatement({)
                           parseStatementX({)
-                            parseExpressionStatementOrDeclarationAfterModifiers({, {, null, null, null, false)
+                            parseExpressionStatementOrDeclarationAfterModifiers({, {, null, null, null, null)
                               looksLikeLocalFunction(print)
                               parseExpressionStatement({)
                                 parseExpression({)
diff --git a/pkg/front_end/test/parser_test_listener.dart b/pkg/front_end/test/parser_test_listener.dart
index dd34ac1..970a646 100644
--- a/pkg/front_end/test/parser_test_listener.dart
+++ b/pkg/front_end/test/parser_test_listener.dart
@@ -866,6 +866,16 @@
   }
 
   @override
+  void handleForInitializerPatternVariableAssignment(
+      Token keyword, Token equals) {
+    seen(keyword);
+    seen(equals);
+    doPrint('handleForInitializerPatternVariableAssignment('
+        '$keyword, '
+        '$equals)');
+  }
+
+  @override
   void beginForStatement(Token token) {
     seen(token);
     doPrint('beginForStatement(' '$token)');
diff --git a/pkg/front_end/test/parser_test_parser.dart b/pkg/front_end/test/parser_test_parser.dart
index 36039d2..a00ff90 100644
--- a/pkg/front_end/test/parser_test_parser.dart
+++ b/pkg/front_end/test/parser_test_parser.dart
@@ -14,7 +14,7 @@
 import 'package:_fe_analyzer_shared/src/parser/member_kind.dart';
 import 'package:_fe_analyzer_shared/src/parser/parser.dart' show Parser;
 import 'package:_fe_analyzer_shared/src/parser/parser_impl.dart'
-    show AwaitOrYieldContext;
+    show AwaitOrYieldContext, ForPartsContext;
 import 'package:_fe_analyzer_shared/src/parser/token_stream_rewriter.dart';
 import 'package:_fe_analyzer_shared/src/parser/type_info.dart';
 import 'package:_fe_analyzer_shared/src/scanner/token.dart';
@@ -1992,32 +1992,28 @@
 
   @override
   Token parseExpressionStatementOrDeclaration(final Token start,
-      [bool onlyParseVariableDeclarationStart = false]) {
+      [ForPartsContext? forPartsContext]) {
     doPrint('parseExpressionStatementOrDeclaration('
         '$start, '
-        '$onlyParseVariableDeclarationStart)');
+        '$forPartsContext)');
     indent++;
-    var result = super.parseExpressionStatementOrDeclaration(
-        start, onlyParseVariableDeclarationStart);
+    var result =
+        super.parseExpressionStatementOrDeclaration(start, forPartsContext);
     indent--;
     return result;
   }
 
   @override
-  Token parseExpressionStatementOrDeclarationAfterModifiers(
-      Token beforeType,
-      Token start,
-      Token? lateToken,
-      Token? varFinalOrConst,
-      TypeInfo? typeInfo,
-      bool onlyParseVariableDeclarationStart) {
+  Token parseExpressionStatementOrDeclarationAfterModifiers(Token beforeType,
+      Token start, Token? lateToken, Token? varFinalOrConst, TypeInfo? typeInfo,
+      [ForPartsContext? forPartsContext]) {
     doPrint('parseExpressionStatementOrDeclarationAfterModifiers('
         '$beforeType, '
         '$start, '
         '$lateToken, '
         '$varFinalOrConst, '
         '$typeInfo, '
-        '$onlyParseVariableDeclarationStart)');
+        '$forPartsContext)');
     indent++;
     var result = super.parseExpressionStatementOrDeclarationAfterModifiers(
         beforeType,
@@ -2025,7 +2021,7 @@
         lateToken,
         varFinalOrConst,
         typeInfo,
-        onlyParseVariableDeclarationStart);
+        forPartsContext);
     indent--;
     return result;
   }
@@ -2067,10 +2063,15 @@
   }
 
   @override
-  Token parseForLoopPartsStart(Token? awaitToken, Token forToken) {
-    doPrint('parseForLoopPartsStart(' '$awaitToken, ' '$forToken)');
+  Token parseForLoopPartsStart(
+      Token? awaitToken, Token forToken, ForPartsContext forPartsContext) {
+    doPrint('parseForLoopPartsStart('
+        '$awaitToken, '
+        '$forToken, '
+        '$forPartsContext)');
     indent++;
-    var result = super.parseForLoopPartsStart(awaitToken, forToken);
+    var result =
+        super.parseForLoopPartsStart(awaitToken, forToken, forPartsContext);
     indent--;
     return result;
   }
diff --git a/pkg/front_end/test/parser_test_parser_creator.dart b/pkg/front_end/test/parser_test_parser_creator.dart
index b39399a..5715d21 100644
--- a/pkg/front_end/test/parser_test_parser_creator.dart
+++ b/pkg/front_end/test/parser_test_parser_creator.dart
@@ -51,7 +51,7 @@
 import 'package:_fe_analyzer_shared/src/parser/listener.dart' show Listener;
 import 'package:_fe_analyzer_shared/src/parser/member_kind.dart';
 import 'package:_fe_analyzer_shared/src/parser/parser.dart' show Parser;
-import 'package:_fe_analyzer_shared/src/parser/parser_impl.dart' show AwaitOrYieldContext;
+import 'package:_fe_analyzer_shared/src/parser/parser_impl.dart' show AwaitOrYieldContext, ForPartsContext;
 import 'package:_fe_analyzer_shared/src/parser/token_stream_rewriter.dart';
 import 'package:_fe_analyzer_shared/src/parser/type_info.dart';
 import 'package:_fe_analyzer_shared/src/scanner/token.dart';