[parser] Add begin and/or end to endElseStatement, endIfStatement, endThenStatement, endTryStatement

Change-Id: I27b7241665042a7fae6dc4c7d4192da9ce141b3e
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/372081
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
Commit-Queue: Jens Johansen <jensj@google.com>
Reviewed-by: Johnni Winther <johnniwinther@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 ae72d59..90f4875 100644
--- a/pkg/_fe_analyzer_shared/lib/src/parser/forwarding_listener.dart
+++ b/pkg/_fe_analyzer_shared/lib/src/parser/forwarding_listener.dart
@@ -750,8 +750,8 @@
   }
 
   @override
-  void endElseStatement(Token token) {
-    listener?.endElseStatement(token);
+  void endElseStatement(Token beginToken, Token endToken) {
+    listener?.endElseStatement(beginToken, endToken);
   }
 
   @override
@@ -998,8 +998,8 @@
   }
 
   @override
-  void endIfStatement(Token ifToken, Token? elseToken) {
-    listener?.endIfStatement(ifToken, elseToken);
+  void endIfStatement(Token ifToken, Token? elseToken, Token endToken) {
+    listener?.endIfStatement(ifToken, elseToken, endToken);
   }
 
   @override
@@ -1225,8 +1225,8 @@
   }
 
   @override
-  void endThenStatement(Token token) {
-    listener?.endThenStatement(token);
+  void endThenStatement(Token beginToken, Token endToken) {
+    listener?.endThenStatement(beginToken, endToken);
   }
 
   @override
@@ -1287,8 +1287,8 @@
 
   @override
   void endTryStatement(
-      int catchCount, Token tryKeyword, Token? finallyKeyword) {
-    listener?.endTryStatement(catchCount, tryKeyword, finallyKeyword);
+      int catchCount, Token tryKeyword, Token? finallyKeyword, Token endToken) {
+    listener?.endTryStatement(catchCount, tryKeyword, finallyKeyword, endToken);
   }
 
   @override
diff --git a/pkg/_fe_analyzer_shared/lib/src/parser/listener.dart b/pkg/_fe_analyzer_shared/lib/src/parser/listener.dart
index b03004c..5d03d91 100644
--- a/pkg/_fe_analyzer_shared/lib/src/parser/listener.dart
+++ b/pkg/_fe_analyzer_shared/lib/src/parser/listener.dart
@@ -326,12 +326,14 @@
 
   void beginConstLiteral(Token token) {}
 
+  // TODO(jensj): Should this have a beginToken?
   void endConstLiteral(Token endToken) {
     logEvent("ConstLiteral");
   }
 
   void beginConstructorReference(Token start) {}
 
+  // TODO(jensj): Renamed `start` to `beginToken`?
   void endConstructorReference(Token start, Token? periodBeforeName,
       Token endToken, ConstructorReferenceContext constructorReferenceContext) {
     logEvent("ConstructorReference");
@@ -339,6 +341,7 @@
 
   void beginDoWhileStatement(Token token) {}
 
+  // TODO(jensj): Renamed `doKeyword` to `beginToken`?
   void endDoWhileStatement(
       Token doKeyword, Token whileKeyword, Token endToken) {
     logEvent("DoWhileStatement");
@@ -352,6 +355,7 @@
 
   void beginWhileStatementBody(Token token) {}
 
+  // TODO(jensj): Should this have a `beginToken`?
   void endWhileStatementBody(Token endToken) {
     logEvent("WhileStatementBody");
   }
@@ -688,12 +692,14 @@
   void handleForLoopParts(Token forKeyword, Token leftParen,
       Token leftSeparator, int updateExpressionCount) {}
 
+  // TODO(jensj): Should this have a `beginToken`?
   void endForStatement(Token endToken) {
     logEvent("ForStatement");
   }
 
   void beginForStatementBody(Token token) {}
 
+  // TODO(jensj): Should this have a `beginToken`?
   void endForStatementBody(Token endToken) {
     logEvent("ForStatementBody");
   }
@@ -709,6 +715,7 @@
       Token leftParenthesis, Token? patternKeyword, Token inKeyword) {}
 
   // One of the two possible corresponding end events for [beginForStatement].
+  // TODO(jensj): Should this have a `beginToken`?
   void endForIn(Token endToken) {
     logEvent("ForIn");
   }
@@ -721,6 +728,7 @@
 
   void beginForInBody(Token token) {}
 
+  // TODO(jensj): Should this have a `beginToken`?
   void endForInBody(Token endToken) {
     logEvent("ForInBody");
   }
@@ -748,6 +756,7 @@
   /// - Initializers
   /// - Async modifier
   /// - Function body (block or arrow expression).
+  // TODO(jensj): Should this have a `beginToken`?
   void endNamedFunctionExpression(Token endToken) {
     logEvent("NamedFunctionExpression");
   }
@@ -769,6 +778,7 @@
   /// - Initializers
   /// - Async modifier
   /// - Function body (block or arrow expression).
+  // TODO(jensj): Should this have a `beginToken`?
   void endLocalFunctionDeclaration(Token endToken) {
     logEvent("FunctionDeclaration");
   }
@@ -821,6 +831,7 @@
   /// - Name (identifier)
   /// - Alias type variables
   /// - Type (FunctionTypeAnnotation)
+  // TODO(jensj): Should this have a `beginToken`?
   void endTypedef(Token? augmentToken, Token typedefKeyword, Token? equals,
       Token endToken) {
     logEvent("FunctionTypeAlias");
@@ -928,19 +939,20 @@
 
   void beginIfStatement(Token token) {}
 
-  void endIfStatement(Token ifToken, Token? elseToken) {
+  void endIfStatement(Token ifToken, Token? elseToken, Token endToken) {
     logEvent("IfStatement");
   }
 
   void beginThenStatement(Token token) {}
 
-  void endThenStatement(Token token) {
+  void endThenStatement(Token beginToken, Token endToken) {
     logEvent("ThenStatement");
   }
 
   void beginElseStatement(Token token) {}
 
-  void endElseStatement(Token token) {
+  /// The [beginToken] is the `else` token.
+  void endElseStatement(Token beginToken, Token endToken) {
     logEvent("ElseStatement");
   }
 
@@ -1011,6 +1023,7 @@
 
   /// Handle the end of a field initializer.  Substructures:
   /// - Initializer expression
+  // TODO(jensj): Should this have a `beginToken`?
   void endFieldInitializer(Token assignment, Token endToken) {
     logEvent("FieldInitializer");
   }
@@ -1035,6 +1048,7 @@
 
   void beginInitializer(Token token) {}
 
+  // TODO(jensj): Should this have a `beginToken`?
   void endInitializer(Token endToken) {
     logEvent("ConstructorInitializer");
   }
@@ -1099,12 +1113,14 @@
     logEvent("LibraryName");
   }
 
+  // TODO(jensj): Should this have a `beginToken`?
   void handleLiteralMapEntry(Token colon, Token endToken) {
     logEvent("LiteralMapEntry");
   }
 
   /// Called after the parser has consumed a mapPatternEntry, consisting of an
   /// expression, a colon, and a pattern.
+  // TODO(jensj): Should this have a `beginToken`?
   void handleMapPatternEntry(Token colon, Token endToken) {
     logEvent("MapPatternEntry");
   }
@@ -1113,6 +1129,7 @@
 
   void handleInterpolationExpression(Token leftBracket, Token? rightBracket) {}
 
+  // TODO(jensj): Should this have a `beginToken`?
   void endLiteralString(int interpolationCount, Token endToken) {
     logEvent("LiteralString");
   }
@@ -1129,6 +1146,7 @@
 
   /// Handle an invalid member declaration. Substructures:
   /// - metadata
+  // TODO(jensj): Should this have a `beginToken`?
   void handleInvalidMember(Token endToken) {
     logEvent("InvalidMember");
   }
@@ -1368,6 +1386,8 @@
 
   /// This method is invoked when parser finishes parsing the corresponding
   /// expression of the expression function body.
+  // TODO(jensj): The declaration does end --- on the name of `endToken` it
+  // doesn't make sense it's nullable. Also should there be a `beginToken`?
   void handleExpressionFunctionBody(Token arrowToken, Token? endToken) {
     logEvent("ExpressionFunctionBody");
   }
@@ -1391,12 +1411,14 @@
 
   void beginSwitchStatement(Token token) {}
 
+  // TODO(jensj): Should this have a `beginToken`?
   void endSwitchStatement(Token switchKeyword, Token endToken) {
     logEvent("SwitchStatement");
   }
 
   void beginSwitchExpression(Token token) {}
 
+  // TODO(jensj): Should this have a `beginToken`?
   void endSwitchExpression(Token switchKeyword, Token endToken) {
     logEvent("SwitchExpression");
   }
@@ -1409,6 +1431,7 @@
 
   void beginSwitchExpressionBlock(Token token) {}
 
+  // TODO(jensj): Should this have a `beginToken`?
   void endSwitchExpressionBlock(
       int caseCount, Token beginToken, Token endToken) {
     logEvent("SwitchExpressionBlock");
@@ -1420,12 +1443,14 @@
     logEvent("LiteralSymbol");
   }
 
+  // TODO(jensj): Should this have a `beginToken`?
   void handleThrowExpression(Token throwToken, Token endToken) {
     logEvent("ThrowExpression");
   }
 
   void beginRethrowStatement(Token token) {}
 
+  // TODO(jensj): Should this have a `beginToken`?
   void endRethrowStatement(Token rethrowToken, Token endToken) {
     logEvent("RethrowStatement");
   }
@@ -1444,6 +1469,7 @@
   /// Started by one of [beginExtensionDeclarationPrelude],
   /// [beginClassOrMixinOrNamedMixinApplicationPrelude], [beginTopLevelMember]
   /// or [beginUncategorizedTopLevelDeclaration].
+  // TODO(jensj): Should this have a `beginToken`?
   void endTopLevelDeclaration(Token endToken) {
     logEvent("TopLevelDeclaration");
   }
@@ -1455,6 +1481,7 @@
   ///
   /// Substructures:
   /// - metadata
+  // TODO(jensj): Should this have a `beginToken`?
   void handleInvalidTopLevelDeclaration(Token endToken) {
     logEvent("InvalidTopLevelDeclaration");
   }
@@ -1533,7 +1560,7 @@
   }
 
   void endTryStatement(
-      int catchCount, Token tryKeyword, Token? finallyKeyword) {
+      int catchCount, Token tryKeyword, Token? finallyKeyword, Token endToken) {
     logEvent("TryStatement");
   }
 
@@ -1714,12 +1741,15 @@
   void beginVariablesDeclaration(
       Token token, Token? lateToken, Token? varFinalOrConst) {}
 
+  // TODO(jensj): The declaration does end --- on the name of `endToken` it
+  // doesn't make sense it's nullable. Also should there be a `beginToken`?
   void endVariablesDeclaration(int count, Token? endToken) {
     logEvent("VariablesDeclaration");
   }
 
   void beginWhileStatement(Token token) {}
 
+  // TODO(jensj): Should this have a `beginToken`?
   void endWhileStatement(Token whileKeyword, Token endToken) {
     logEvent("WhileStatement");
   }
@@ -1897,11 +1927,13 @@
     logEvent("LiteralBool");
   }
 
+  // TODO(jensj): Should this have a `beginToken`?
   void handleBreakStatement(
       bool hasTarget, Token breakKeyword, Token endToken) {
     logEvent("BreakStatement");
   }
 
+  // TODO(jensj): Should this have a `beginToken`?
   void handleContinueStatement(
       bool hasTarget, Token continueKeyword, Token endToken) {
     logEvent("ContinueStatement");
@@ -1913,6 +1945,7 @@
 
   void beginAssert(Token assertKeyword, Assert kind) {}
 
+  // TODO(jensj): Should this have a `beginToken`?
   void endAssert(Token assertKeyword, Assert kind, Token leftParenthesis,
       Token? commaToken, Token endToken) {
     logEvent("Assert");
@@ -2179,6 +2212,7 @@
 
   void beginSwitchExpressionCase() {}
 
+  // TODO(jensj): Should this have a `beginToken`?
   void endSwitchExpressionCase(Token? when, Token arrow, Token endToken) {
     logEvent("SwitchExpressionCase");
   }
@@ -2235,6 +2269,7 @@
 
   /// One of the two possible corresponding end events for
   /// [beginYieldStatement].
+  // TODO(jensj): Should this have a `beginToken`?
   void endYieldStatement(Token yieldToken, Token? starToken, Token endToken) {
     logEvent("YieldStatement");
   }
@@ -2250,6 +2285,7 @@
   /// error should be reported using the [message], and the code between the
   /// beginning of the [startToken] and the end of the [endToken] should be
   /// highlighted. The [startToken] and [endToken] can be the same token.
+  // TODO(jensj): Should `startToken` be renamed to `beginToken`?
   void handleRecoverableError(
       Message message, Token startToken, Token endToken) {}
 
@@ -2258,6 +2294,7 @@
   /// The error should be reported and the code between the beginning of the
   /// [startToken] and the end of the [endToken] should be highlighted. The
   /// [startToken] and [endToken] can be the same token.
+  // TODO(jensj): Should `startToken` be renamed to `beginToken`?
   void handleExperimentNotEnabled(
       ExperimentalFlag experimentalFlag, Token startToken, Token endToken) {
     handleRecoverableError(
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 f14b3fa..d66b977 100644
--- a/pkg/_fe_analyzer_shared/lib/src/parser/parser_impl.dart
+++ b/pkg/_fe_analyzer_shared/lib/src/parser/parser_impl.dart
@@ -8235,17 +8235,18 @@
     assert(optional('if', ifToken));
     listener.beginIfStatement(ifToken);
     token = ensureParenthesizedCondition(ifToken, allowCase: allowPatterns);
-    listener.beginThenStatement(token.next!);
+    Token thenBeginToken = token.next!;
+    listener.beginThenStatement(thenBeginToken);
     token = parseStatement(token);
-    listener.endThenStatement(token);
+    listener.endThenStatement(thenBeginToken, token);
     Token? elseToken = null;
     if (optional('else', token.next!)) {
       elseToken = token.next!;
       listener.beginElseStatement(elseToken);
       token = parseStatement(elseToken);
-      listener.endElseStatement(elseToken);
+      listener.endElseStatement(elseToken, token);
     }
-    listener.endIfStatement(ifToken, elseToken);
+    listener.endIfStatement(ifToken, elseToken, token);
     return token;
   }
 
@@ -8871,14 +8872,14 @@
     if (optional('finally', token)) {
       finallyKeyword = token;
       lastConsumed = parseBlock(token, BlockKind.finallyClause);
-      token = lastConsumed.next!;
       listener.handleFinallyBlock(finallyKeyword);
     } else {
       if (catchCount == 0) {
         reportRecoverableError(tryKeyword, codes.messageOnlyTry);
       }
     }
-    listener.endTryStatement(catchCount, tryKeyword, finallyKeyword);
+    listener.endTryStatement(
+        catchCount, tryKeyword, finallyKeyword, lastConsumed);
     return lastConsumed;
   }
 
diff --git a/pkg/analyzer/lib/src/fasta/ast_builder.dart b/pkg/analyzer/lib/src/fasta/ast_builder.dart
index d696269..7399091 100644
--- a/pkg/analyzer/lib/src/fasta/ast_builder.dart
+++ b/pkg/analyzer/lib/src/fasta/ast_builder.dart
@@ -1525,7 +1525,7 @@
   }
 
   @override
-  void endElseStatement(Token token) {
+  void endElseStatement(Token beginToken, Token endToken) {
     debugEvent("endElseStatement");
   }
 
@@ -2164,7 +2164,7 @@
   }
 
   @override
-  void endIfStatement(Token ifToken, Token? elseToken) {
+  void endIfStatement(Token ifToken, Token? elseToken, Token endToken) {
     assert(optional('if', ifToken));
     assert(optionalOrNull('else', elseToken));
 
@@ -3312,7 +3312,7 @@
   }
 
   @override
-  void endThenStatement(Token token) {
+  void endThenStatement(Token beginToken, Token endToken) {
     debugEvent("endThenStatement");
   }
 
@@ -3407,7 +3407,7 @@
 
   @override
   void endTryStatement(
-      int catchCount, Token tryKeyword, Token? finallyKeyword) {
+      int catchCount, Token tryKeyword, Token? finallyKeyword, Token endToken) {
     assert(optional('try', tryKeyword));
     assert(optionalOrNull('finally', finallyKeyword));
     debugEvent("TryStatement");
diff --git a/pkg/analyzer/test/generated/parser_fasta_listener.dart b/pkg/analyzer/test/generated/parser_fasta_listener.dart
index 31b4f58..6169b94 100644
--- a/pkg/analyzer/test/generated/parser_fasta_listener.dart
+++ b/pkg/analyzer/test/generated/parser_fasta_listener.dart
@@ -770,9 +770,9 @@
   }
 
   @override
-  void endElseStatement(Token token) {
+  void endElseStatement(Token beginToken, Token endToken) {
     end('ElseStatement');
-    super.endElseStatement(token);
+    super.endElseStatement(beginToken, endToken);
   }
 
   @override
@@ -1008,9 +1008,9 @@
   }
 
   @override
-  void endIfStatement(Token ifToken, Token? elseToken) {
+  void endIfStatement(Token ifToken, Token? elseToken, Token endToken) {
     end('IfStatement');
-    super.endIfStatement(ifToken, elseToken);
+    super.endIfStatement(ifToken, elseToken, endToken);
   }
 
   @override
@@ -1250,9 +1250,9 @@
   }
 
   @override
-  void endThenStatement(Token token) {
+  void endThenStatement(Token beginToken, Token endToken) {
     end('ThenStatement');
-    super.endThenStatement(token);
+    super.endThenStatement(beginToken, endToken);
   }
 
   @override
@@ -1297,9 +1297,9 @@
 
   @override
   void endTryStatement(
-      int catchCount, Token tryKeyword, Token? finallyKeyword) {
+      int catchCount, Token tryKeyword, Token? finallyKeyword, Token endToken) {
     end('TryStatement');
-    super.endTryStatement(catchCount, tryKeyword, finallyKeyword);
+    super.endTryStatement(catchCount, tryKeyword, finallyKeyword, endToken);
   }
 
   @override
diff --git a/pkg/front_end/lib/src/fasta/kernel/body_builder.dart b/pkg/front_end/lib/src/fasta/kernel/body_builder.dart
index f1d54a0..7a29846 100644
--- a/pkg/front_end/lib/src/fasta/kernel/body_builder.dart
+++ b/pkg/front_end/lib/src/fasta/kernel/body_builder.dart
@@ -664,7 +664,7 @@
   }
 
   @override
-  void endElseStatement(Token token) {
+  void endElseStatement(Token beginToken, Token endToken) {
     debugEvent("endElseStatement");
     Object? body = pop();
     exitLocalScope();
@@ -3777,7 +3777,7 @@
   }
 
   @override
-  void endThenStatement(Token token) {
+  void endThenStatement(Token beginToken, Token endToken) {
     debugEvent("endThenStatement");
     Object? body = pop();
     exitLocalScope();
@@ -3789,7 +3789,7 @@
   }
 
   @override
-  void endIfStatement(Token ifToken, Token? elseToken) {
+  void endIfStatement(Token ifToken, Token? elseToken, Token endToken) {
     assert(checkState(ifToken, [
       /* else = */ if (elseToken != null) ValueKinds.Statement,
       ValueKinds.AssignedVariablesNodeInfo,
@@ -5756,7 +5756,7 @@
 
   @override
   void endTryStatement(
-      int catchCount, Token tryKeyword, Token? finallyKeyword) {
+      int catchCount, Token tryKeyword, Token? finallyKeyword, Token endToken) {
     Statement? finallyBlock;
     if (finallyKeyword != null) {
       finallyBlock = pop() as Statement;
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 fa3d739..b1d324e 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
@@ -1176,7 +1176,7 @@
   }
 
   @override
-  void endElseStatement(Token token) {
+  void endElseStatement(Token beginToken, Token endToken) {
     _unsupported();
   }
 
@@ -1363,7 +1363,7 @@
   }
 
   @override
-  void endIfStatement(Token ifToken, Token? elseToken) {
+  void endIfStatement(Token ifToken, Token? elseToken, Token endToken) {
     _unsupported();
   }
 
@@ -1570,7 +1570,7 @@
   }
 
   @override
-  void endThenStatement(Token token) {
+  void endThenStatement(Token beginToken, Token endToken) {
     _unsupported();
   }
 
@@ -1600,7 +1600,7 @@
 
   @override
   void endTryStatement(
-      int catchCount, Token tryKeyword, Token? finallyKeyword) {
+      int catchCount, Token tryKeyword, Token? finallyKeyword, Token endToken) {
     _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 0687327..2c66656 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
@@ -1165,9 +1165,9 @@
   }
 
   @override
-  void endIfStatement(Token ifToken, Token? elseToken) {
+  void endIfStatement(Token ifToken, Token? elseToken, Token endToken) {
     IfStatementEnd data = new IfStatementEnd(ParserAstType.END,
-        ifToken: ifToken, elseToken: elseToken);
+        ifToken: ifToken, elseToken: elseToken, endToken: endToken);
     seen(data);
   }
 
@@ -1179,9 +1179,9 @@
   }
 
   @override
-  void endThenStatement(Token token) {
-    ThenStatementEnd data =
-        new ThenStatementEnd(ParserAstType.END, token: token);
+  void endThenStatement(Token beginToken, Token endToken) {
+    ThenStatementEnd data = new ThenStatementEnd(ParserAstType.END,
+        beginToken: beginToken, endToken: endToken);
     seen(data);
   }
 
@@ -1193,9 +1193,9 @@
   }
 
   @override
-  void endElseStatement(Token token) {
-    ElseStatementEnd data =
-        new ElseStatementEnd(ParserAstType.END, token: token);
+  void endElseStatement(Token beginToken, Token endToken) {
+    ElseStatementEnd data = new ElseStatementEnd(ParserAstType.END,
+        beginToken: beginToken, endToken: endToken);
     seen(data);
   }
 
@@ -2019,11 +2019,12 @@
 
   @override
   void endTryStatement(
-      int catchCount, Token tryKeyword, Token? finallyKeyword) {
+      int catchCount, Token tryKeyword, Token? finallyKeyword, Token endToken) {
     TryStatementEnd data = new TryStatementEnd(ParserAstType.END,
         catchCount: catchCount,
         tryKeyword: tryKeyword,
-        finallyKeyword: finallyKeyword);
+        finallyKeyword: finallyKeyword,
+        endToken: endToken);
     seen(data);
   }
 
@@ -5565,14 +5566,17 @@
 class IfStatementEnd extends ParserAstNode {
   final Token ifToken;
   final Token? elseToken;
+  final Token endToken;
 
-  IfStatementEnd(ParserAstType type, {required this.ifToken, this.elseToken})
+  IfStatementEnd(ParserAstType type,
+      {required this.ifToken, this.elseToken, required this.endToken})
       : super("IfStatement", type);
 
   @override
   Map<String, Object?> get deprecatedArguments => {
         "ifToken": ifToken,
         "elseToken": elseToken,
+        "endToken": endToken,
       };
 
   @override
@@ -5594,15 +5598,21 @@
   R accept<R>(ParserAstVisitor<R> v) => v.visitThenStatementBegin(this);
 }
 
-class ThenStatementEnd extends ParserAstNode {
-  final Token token;
+class ThenStatementEnd extends ParserAstNode
+    implements BeginAndEndTokenParserAstNode {
+  @override
+  final Token beginToken;
+  @override
+  final Token endToken;
 
-  ThenStatementEnd(ParserAstType type, {required this.token})
+  ThenStatementEnd(ParserAstType type,
+      {required this.beginToken, required this.endToken})
       : super("ThenStatement", type);
 
   @override
   Map<String, Object?> get deprecatedArguments => {
-        "token": token,
+        "beginToken": beginToken,
+        "endToken": endToken,
       };
 
   @override
@@ -5624,15 +5634,21 @@
   R accept<R>(ParserAstVisitor<R> v) => v.visitElseStatementBegin(this);
 }
 
-class ElseStatementEnd extends ParserAstNode {
-  final Token token;
+class ElseStatementEnd extends ParserAstNode
+    implements BeginAndEndTokenParserAstNode {
+  @override
+  final Token beginToken;
+  @override
+  final Token endToken;
 
-  ElseStatementEnd(ParserAstType type, {required this.token})
+  ElseStatementEnd(ParserAstType type,
+      {required this.beginToken, required this.endToken})
       : super("ElseStatement", type);
 
   @override
   Map<String, Object?> get deprecatedArguments => {
-        "token": token,
+        "beginToken": beginToken,
+        "endToken": endToken,
       };
 
   @override
@@ -7506,9 +7522,13 @@
   final int catchCount;
   final Token tryKeyword;
   final Token? finallyKeyword;
+  final Token endToken;
 
   TryStatementEnd(ParserAstType type,
-      {required this.catchCount, required this.tryKeyword, this.finallyKeyword})
+      {required this.catchCount,
+      required this.tryKeyword,
+      this.finallyKeyword,
+      required this.endToken})
       : super("TryStatement", type);
 
   @override
@@ -7516,6 +7536,7 @@
         "catchCount": catchCount,
         "tryKeyword": tryKeyword,
         "finallyKeyword": finallyKeyword,
+        "endToken": endToken,
       };
 
   @override
diff --git a/pkg/front_end/parser_testcases/error_recovery/issue_44785.crash_dart.expect b/pkg/front_end/parser_testcases/error_recovery/issue_44785.crash_dart.expect
index bf9fe80..2e55edb 100644
--- a/pkg/front_end/parser_testcases/error_recovery/issue_44785.crash_dart.expect
+++ b/pkg/front_end/parser_testcases/error_recovery/issue_44785.crash_dart.expect
@@ -72,8 +72,8 @@
                 handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], null, null)
               endReturnStatement(true, return, ;)
             endBlock(1, {, }, BlockKind(statement))
-          endThenStatement(})
-        endIfStatement(if, null)
+          endThenStatement({, })
+        endIfStatement(if, null, })
       endBlockFunctionBody(1, {, })
     endTopLevelMethod(foo, null, })
   endTopLevelDeclaration(})
@@ -132,8 +132,8 @@
                 handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], null, null)
               endReturnStatement(true, return, ;)
             endBlock(1, {, }, BlockKind(statement))
-          endThenStatement(})
-        endIfStatement(if, null)
+          endThenStatement({, })
+        endIfStatement(if, null, })
       endBlockFunctionBody(1, {, })
     endTopLevelMethod(bar, null, })
   endTopLevelDeclaration(})
diff --git a/pkg/front_end/parser_testcases/error_recovery/issue_44785.crash_dart.intertwined.expect b/pkg/front_end/parser_testcases/error_recovery/issue_44785.crash_dart.intertwined.expect
index 88bfc6d..a9f3ddf 100644
--- a/pkg/front_end/parser_testcases/error_recovery/issue_44785.crash_dart.intertwined.expect
+++ b/pkg/front_end/parser_testcases/error_recovery/issue_44785.crash_dart.intertwined.expect
@@ -151,8 +151,8 @@
                             inGenerator()
                       notEofOrValue(}, })
                       listener: endBlock(1, {, }, BlockKind(statement))
-                listener: endThenStatement(})
-                listener: endIfStatement(if, null)
+                listener: endThenStatement({, })
+                listener: endIfStatement(if, null, })
           notEofOrValue(}, })
           listener: endBlockFunctionBody(1, {, })
         listener: endTopLevelMethod(foo, null, })
@@ -306,8 +306,8 @@
                             inGenerator()
                       notEofOrValue(}, })
                       listener: endBlock(1, {, }, BlockKind(statement))
-                listener: endThenStatement(})
-                listener: endIfStatement(if, null)
+                listener: endThenStatement({, })
+                listener: endIfStatement(if, null, })
           notEofOrValue(}, })
           listener: endBlockFunctionBody(1, {, })
         listener: endTopLevelMethod(bar, null, })
diff --git a/pkg/front_end/parser_testcases/error_recovery/issue_44785_prime_1.crash_dart.expect b/pkg/front_end/parser_testcases/error_recovery/issue_44785_prime_1.crash_dart.expect
index cc11f64..54db198 100644
--- a/pkg/front_end/parser_testcases/error_recovery/issue_44785_prime_1.crash_dart.expect
+++ b/pkg/front_end/parser_testcases/error_recovery/issue_44785_prime_1.crash_dart.expect
@@ -79,8 +79,8 @@
                 handleLiteralNull(null)
               endReturnStatement(true, return, ;)
             endBlock(1, {, }, BlockKind(statement))
-          endThenStatement(})
-        endIfStatement(if, null)
+          endThenStatement({, })
+        endIfStatement(if, null, })
       endBlockFunctionBody(1, {, })
     endTopLevelMethod(foo, null, })
   endTopLevelDeclaration(})
@@ -157,8 +157,8 @@
                 handleLiteralNull(null)
               endReturnStatement(true, return, ;)
             endBlock(1, {, }, BlockKind(statement))
-          endThenStatement(})
-        endIfStatement(if, null)
+          endThenStatement({, })
+        endIfStatement(if, null, })
       endBlockFunctionBody(1, {, })
     endTopLevelMethod(foo2, null, })
   endTopLevelDeclaration(})
@@ -216,8 +216,8 @@
                 handleLiteralNull(null)
               endReturnStatement(true, return, ;)
             endBlock(1, {, }, BlockKind(statement))
-          endThenStatement(})
-        endIfStatement(if, null)
+          endThenStatement({, })
+        endIfStatement(if, null, })
       endBlockFunctionBody(1, {, })
     endTopLevelMethod(bar, null, })
   endTopLevelDeclaration(})
@@ -294,8 +294,8 @@
                 handleLiteralNull(null)
               endReturnStatement(true, return, ;)
             endBlock(1, {, }, BlockKind(statement))
-          endThenStatement(})
-        endIfStatement(if, null)
+          endThenStatement({, })
+        endIfStatement(if, null, })
       endBlockFunctionBody(1, {, })
     endTopLevelMethod(bar2, null, })
   endTopLevelDeclaration(})
diff --git a/pkg/front_end/parser_testcases/error_recovery/issue_44785_prime_1.crash_dart.intertwined.expect b/pkg/front_end/parser_testcases/error_recovery/issue_44785_prime_1.crash_dart.intertwined.expect
index 81158e5..8b5faf4 100644
--- a/pkg/front_end/parser_testcases/error_recovery/issue_44785_prime_1.crash_dart.intertwined.expect
+++ b/pkg/front_end/parser_testcases/error_recovery/issue_44785_prime_1.crash_dart.intertwined.expect
@@ -148,8 +148,8 @@
                             inGenerator()
                       notEofOrValue(}, })
                       listener: endBlock(1, {, }, BlockKind(statement))
-                listener: endThenStatement(})
-                listener: endIfStatement(if, null)
+                listener: endThenStatement({, })
+                listener: endIfStatement(if, null, })
           notEofOrValue(}, })
           listener: endBlockFunctionBody(1, {, })
         listener: endTopLevelMethod(foo, null, })
@@ -360,8 +360,8 @@
                             inGenerator()
                       notEofOrValue(}, })
                       listener: endBlock(1, {, }, BlockKind(statement))
-                listener: endThenStatement(})
-                listener: endIfStatement(if, null)
+                listener: endThenStatement({, })
+                listener: endIfStatement(if, null, })
           notEofOrValue(}, })
           listener: endBlockFunctionBody(1, {, })
         listener: endTopLevelMethod(foo2, null, })
@@ -512,8 +512,8 @@
                             inGenerator()
                       notEofOrValue(}, })
                       listener: endBlock(1, {, }, BlockKind(statement))
-                listener: endThenStatement(})
-                listener: endIfStatement(if, null)
+                listener: endThenStatement({, })
+                listener: endIfStatement(if, null, })
           notEofOrValue(}, })
           listener: endBlockFunctionBody(1, {, })
         listener: endTopLevelMethod(bar, null, })
@@ -724,8 +724,8 @@
                             inGenerator()
                       notEofOrValue(}, })
                       listener: endBlock(1, {, }, BlockKind(statement))
-                listener: endThenStatement(})
-                listener: endIfStatement(if, null)
+                listener: endThenStatement({, })
+                listener: endIfStatement(if, null, })
           notEofOrValue(}, })
           listener: endBlockFunctionBody(1, {, })
         listener: endTopLevelMethod(bar2, null, })
diff --git a/pkg/front_end/parser_testcases/error_recovery/issue_44785_prime_2.crash_dart.expect b/pkg/front_end/parser_testcases/error_recovery/issue_44785_prime_2.crash_dart.expect
index 0b4e58a..a5c5c0a 100644
--- a/pkg/front_end/parser_testcases/error_recovery/issue_44785_prime_2.crash_dart.expect
+++ b/pkg/front_end/parser_testcases/error_recovery/issue_44785_prime_2.crash_dart.expect
@@ -52,8 +52,8 @@
                 handleLiteralNull(null)
               endReturnStatement(true, return, ;)
             endBlock(1, {, }, BlockKind(statement))
-          endThenStatement(})
-        endIfStatement(if, null)
+          endThenStatement({, })
+        endIfStatement(if, null, })
       endBlockFunctionBody(1, {, })
     endTopLevelMethod(foo, null, })
   endTopLevelDeclaration(})
@@ -128,8 +128,8 @@
                 handleLiteralNull(null)
               endReturnStatement(true, return, ;)
             endBlock(1, {, }, BlockKind(statement))
-          endThenStatement(})
-        endIfStatement(if, null)
+          endThenStatement({, })
+        endIfStatement(if, null, })
       endBlockFunctionBody(1, {, })
     endTopLevelMethod(foo2, null, })
   endTopLevelDeclaration(})
@@ -186,8 +186,8 @@
                 handleLiteralNull(null)
               endReturnStatement(true, return, ;)
             endBlock(1, {, }, BlockKind(statement))
-          endThenStatement(})
-        endIfStatement(if, null)
+          endThenStatement({, })
+        endIfStatement(if, null, })
       endBlockFunctionBody(1, {, })
     endTopLevelMethod(bar, null, })
   endTopLevelDeclaration(})
@@ -262,8 +262,8 @@
                 handleLiteralNull(null)
               endReturnStatement(true, return, ;)
             endBlock(1, {, }, BlockKind(statement))
-          endThenStatement(})
-        endIfStatement(if, null)
+          endThenStatement({, })
+        endIfStatement(if, null, })
       endBlockFunctionBody(1, {, })
     endTopLevelMethod(bar2, null, })
   endTopLevelDeclaration(})
diff --git a/pkg/front_end/parser_testcases/error_recovery/issue_44785_prime_2.crash_dart.intertwined.expect b/pkg/front_end/parser_testcases/error_recovery/issue_44785_prime_2.crash_dart.intertwined.expect
index 72606ff..f2c78c8 100644
--- a/pkg/front_end/parser_testcases/error_recovery/issue_44785_prime_2.crash_dart.intertwined.expect
+++ b/pkg/front_end/parser_testcases/error_recovery/issue_44785_prime_2.crash_dart.intertwined.expect
@@ -122,8 +122,8 @@
                             inGenerator()
                       notEofOrValue(}, })
                       listener: endBlock(1, {, }, BlockKind(statement))
-                listener: endThenStatement(})
-                listener: endIfStatement(if, null)
+                listener: endThenStatement({, })
+                listener: endIfStatement(if, null, })
           notEofOrValue(}, })
           listener: endBlockFunctionBody(1, {, })
         listener: endTopLevelMethod(foo, null, })
@@ -281,8 +281,8 @@
                             inGenerator()
                       notEofOrValue(}, })
                       listener: endBlock(1, {, }, BlockKind(statement))
-                listener: endThenStatement(})
-                listener: endIfStatement(if, null)
+                listener: endThenStatement({, })
+                listener: endIfStatement(if, null, })
           notEofOrValue(}, })
           listener: endBlockFunctionBody(1, {, })
         listener: endTopLevelMethod(foo2, null, })
@@ -407,8 +407,8 @@
                             inGenerator()
                       notEofOrValue(}, })
                       listener: endBlock(1, {, }, BlockKind(statement))
-                listener: endThenStatement(})
-                listener: endIfStatement(if, null)
+                listener: endThenStatement({, })
+                listener: endIfStatement(if, null, })
           notEofOrValue(}, })
           listener: endBlockFunctionBody(1, {, })
         listener: endTopLevelMethod(bar, null, })
@@ -566,8 +566,8 @@
                             inGenerator()
                       notEofOrValue(}, })
                       listener: endBlock(1, {, }, BlockKind(statement))
-                listener: endThenStatement(})
-                listener: endIfStatement(if, null)
+                listener: endThenStatement({, })
+                listener: endIfStatement(if, null, })
           notEofOrValue(}, })
           listener: endBlockFunctionBody(1, {, })
         listener: endTopLevelMethod(bar2, null, })
diff --git a/pkg/front_end/parser_testcases/error_recovery/issue_45327.crash_dart.expect b/pkg/front_end/parser_testcases/error_recovery/issue_45327.crash_dart.expect
index 8f4c38b..8794027 100644
--- a/pkg/front_end/parser_testcases/error_recovery/issue_45327.crash_dart.expect
+++ b/pkg/front_end/parser_testcases/error_recovery/issue_45327.crash_dart.expect
@@ -39,8 +39,8 @@
             handleSend(or, })
             handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], or, or)
             handleExpressionStatement(;)
-          endThenStatement(;)
-        endIfStatement(if, null)
+          endThenStatement(or, ;)
+        endIfStatement(if, null, ;)
       endBlockFunctionBody(1, {, })
     endTopLevelMethod(main, null, })
   endTopLevelDeclaration(})
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 3b4ed42..a67a169 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
@@ -92,8 +92,8 @@
                             listener: handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], or, or)
                           rewriter()
                         listener: handleExpressionStatement(;)
-                listener: endThenStatement(;)
-                listener: endIfStatement(if, null)
+                listener: endThenStatement(or, ;)
+                listener: endIfStatement(if, null, ;)
           notEofOrValue(}, })
           listener: endBlockFunctionBody(1, {, })
         listener: endTopLevelMethod(main, null, })
diff --git a/pkg/front_end/parser_testcases/error_recovery/issue_45327_prime_1.crash_dart.expect b/pkg/front_end/parser_testcases/error_recovery/issue_45327_prime_1.crash_dart.expect
index 5ca0299..f75fab7 100644
--- a/pkg/front_end/parser_testcases/error_recovery/issue_45327_prime_1.crash_dart.expect
+++ b/pkg/front_end/parser_testcases/error_recovery/issue_45327_prime_1.crash_dart.expect
@@ -69,8 +69,8 @@
                   handleSend(or, })
                   handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], or, or)
                   handleExpressionStatement(;)
-                endThenStatement(;)
-              endIfStatement(if, null)
+                endThenStatement(or, ;)
+              endIfStatement(if, null, ;)
             endBlockFunctionBody(1, {, })
           endClassMethod(null, foo, (, null, })
         endMember()
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 fb80f41..bcf41fb 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
@@ -139,8 +139,8 @@
                                     listener: handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], or, or)
                                   rewriter()
                                 listener: handleExpressionStatement(;)
-                        listener: endThenStatement(;)
-                        listener: endIfStatement(if, null)
+                        listener: endThenStatement(or, ;)
+                        listener: endIfStatement(if, null, ;)
                   notEofOrValue(}, })
                   listener: endBlockFunctionBody(1, {, })
                 listener: endClassMethod(null, foo, (, null, })
diff --git a/pkg/front_end/parser_testcases/error_recovery/issue_49116.dart.expect b/pkg/front_end/parser_testcases/error_recovery/issue_49116.dart.expect
index 952e45c..a5e979d 100644
--- a/pkg/front_end/parser_testcases/error_recovery/issue_49116.dart.expect
+++ b/pkg/front_end/parser_testcases/error_recovery/issue_49116.dart.expect
@@ -245,7 +245,7 @@
           beginThenStatement({)
             beginBlock({, BlockKind(statement))
             endBlock(0, {, }, BlockKind(statement))
-          endThenStatement(})
+          endThenStatement({, })
           beginElseStatement(else)
             beginIfStatement(if)
               beginAwaitExpression(await)
@@ -261,10 +261,10 @@
               beginThenStatement({)
                 beginBlock({, BlockKind(statement))
                 endBlock(0, {, }, BlockKind(statement))
-              endThenStatement(})
-            endIfStatement(if, null)
-          endElseStatement(else)
-        endIfStatement(if, else)
+              endThenStatement({, })
+            endIfStatement(if, null, })
+          endElseStatement(else, })
+        endIfStatement(if, else, })
         handleIdentifier(print, expression)
         handleNoTypeArguments(()
         beginArguments(()
@@ -523,7 +523,7 @@
           beginThenStatement({)
             beginBlock({, BlockKind(statement))
             endBlock(0, {, }, BlockKind(statement))
-          endThenStatement(})
+          endThenStatement({, })
           beginElseStatement(else)
             beginIfStatement(if)
               beginAwaitExpression(await)
@@ -538,10 +538,10 @@
               beginThenStatement({)
                 beginBlock({, BlockKind(statement))
                 endBlock(0, {, }, BlockKind(statement))
-              endThenStatement(})
-            endIfStatement(if, null)
-          endElseStatement(else)
-        endIfStatement(if, else)
+              endThenStatement({, })
+            endIfStatement(if, null, })
+          endElseStatement(else, })
+        endIfStatement(if, else, })
         handleIdentifier(print, expression)
         handleNoTypeArguments(()
         beginArguments(()
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 fec6dda..93d1d1e 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
@@ -171,7 +171,7 @@
                       listener: beginBlock({, BlockKind(statement))
                       notEofOrValue(}, })
                       listener: endBlock(0, {, }, BlockKind(statement))
-                listener: endThenStatement(})
+                listener: endThenStatement({, })
                 listener: beginElseStatement(else)
                 parseStatement(else)
                   parseStatementX(else)
@@ -220,10 +220,10 @@
                             listener: beginBlock({, BlockKind(statement))
                             notEofOrValue(}, })
                             listener: endBlock(0, {, }, BlockKind(statement))
-                      listener: endThenStatement(})
-                      listener: endIfStatement(if, null)
-                listener: endElseStatement(else)
-                listener: endIfStatement(if, else)
+                      listener: endThenStatement({, })
+                      listener: endIfStatement(if, null, })
+                listener: endElseStatement(else, })
+                listener: endIfStatement(if, else, })
           notEofOrValue(}, print)
           parseStatement(})
             parseStatementX(})
@@ -1093,7 +1093,7 @@
                       listener: beginBlock({, BlockKind(statement))
                       notEofOrValue(}, })
                       listener: endBlock(0, {, }, BlockKind(statement))
-                listener: endThenStatement(})
+                listener: endThenStatement({, })
                 listener: beginElseStatement(else)
                 parseStatement(else)
                   parseStatementX(else)
@@ -1138,10 +1138,10 @@
                             listener: beginBlock({, BlockKind(statement))
                             notEofOrValue(}, })
                             listener: endBlock(0, {, }, BlockKind(statement))
-                      listener: endThenStatement(})
-                      listener: endIfStatement(if, null)
-                listener: endElseStatement(else)
-                listener: endIfStatement(if, else)
+                      listener: endThenStatement({, })
+                      listener: endIfStatement(if, null, })
+                listener: endElseStatement(else, })
+                listener: endIfStatement(if, else, })
           notEofOrValue(}, print)
           parseStatement(})
             parseStatementX(})
diff --git a/pkg/front_end/parser_testcases/error_recovery/keyword_named_class_methods.dart.expect b/pkg/front_end/parser_testcases/error_recovery/keyword_named_class_methods.dart.expect
index 57efdc3..d098f8e 100644
--- a/pkg/front_end/parser_testcases/error_recovery/keyword_named_class_methods.dart.expect
+++ b/pkg/front_end/parser_testcases/error_recovery/keyword_named_class_methods.dart.expect
@@ -537,8 +537,8 @@
                   beginReturnStatement(return)
                     handleLiteralInt(42)
                   endReturnStatement(true, return, ;)
-                endThenStatement(;)
-              endIfStatement(if, null)
+                endThenStatement(return, ;)
+              endIfStatement(if, null, ;)
               beginReturnStatement(return)
                 handleIdentifier(abstract, expression)
                 handleNoTypeArguments(()
@@ -595,8 +595,8 @@
                   beginReturnStatement(return)
                     handleLiteralInt(42)
                   endReturnStatement(true, return, ;)
-                endThenStatement(;)
-              endIfStatement(if, null)
+                endThenStatement(return, ;)
+              endIfStatement(if, null, ;)
               beginReturnStatement(return)
                 handleIdentifier(as, expression)
                 handleNoTypeArguments(()
@@ -654,8 +654,8 @@
                   beginReturnStatement(return)
                     handleLiteralInt(42)
                   endReturnStatement(true, return, ;)
-                endThenStatement(;)
-              endIfStatement(if, null)
+                endThenStatement(return, ;)
+              endIfStatement(if, null, ;)
               beginReturnStatement(return)
                 beginAssert(assert, Assert.Expression)
                   handleIdentifier(x, expression)
@@ -710,8 +710,8 @@
                   beginReturnStatement(return)
                     handleLiteralInt(42)
                   endReturnStatement(true, return, ;)
-                endThenStatement(;)
-              endIfStatement(if, null)
+                endThenStatement(return, ;)
+              endIfStatement(if, null, ;)
               beginReturnStatement(return)
                 handleIdentifier(async, expression)
                 handleNoTypeArguments(()
@@ -768,8 +768,8 @@
                   beginReturnStatement(return)
                     handleLiteralInt(42)
                   endReturnStatement(true, return, ;)
-                endThenStatement(;)
-              endIfStatement(if, null)
+                endThenStatement(return, ;)
+              endIfStatement(if, null, ;)
               beginReturnStatement(return)
                 handleIdentifier(await, expression)
                 handleNoTypeArguments(()
@@ -827,8 +827,8 @@
                   beginReturnStatement(return)
                     handleLiteralInt(42)
                   endReturnStatement(true, return, ;)
-                endThenStatement(;)
-              endIfStatement(if, null)
+                endThenStatement(return, ;)
+              endIfStatement(if, null, ;)
               beginReturnStatement(return)
                 handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got 'break'., Try inserting an identifier before 'break'., {lexeme: break}], break, break)
                 handleIdentifier(, expression)
@@ -893,8 +893,8 @@
                   beginReturnStatement(return)
                     handleLiteralInt(42)
                   endReturnStatement(true, return, ;)
-                endThenStatement(;)
-              endIfStatement(if, null)
+                endThenStatement(return, ;)
+              endIfStatement(if, null, ;)
               beginReturnStatement(return)
                 handleRecoverableError(Message[ExpectedIdentifierButGotKeyword, 'case' can't be used as an identifier because it's a keyword., Try renaming this to be an identifier that isn't a keyword., {lexeme: case}], case, case)
                 handleIdentifier(case, expression)
@@ -953,8 +953,8 @@
                   beginReturnStatement(return)
                     handleLiteralInt(42)
                   endReturnStatement(true, return, ;)
-                endThenStatement(;)
-              endIfStatement(if, null)
+                endThenStatement(return, ;)
+              endIfStatement(if, null, ;)
               beginReturnStatement(return)
                 handleRecoverableError(Message[ExpectedIdentifierButGotKeyword, 'catch' can't be used as an identifier because it's a keyword., Try renaming this to be an identifier that isn't a keyword., {lexeme: catch}], catch, catch)
                 handleIdentifier(catch, expression)
@@ -1013,8 +1013,8 @@
                   beginReturnStatement(return)
                     handleLiteralInt(42)
                   endReturnStatement(true, return, ;)
-                endThenStatement(;)
-              endIfStatement(if, null)
+                endThenStatement(return, ;)
+              endIfStatement(if, null, ;)
               beginReturnStatement(return)
                 handleRecoverableError(Message[ExpectedIdentifierButGotKeyword, 'class' can't be used as an identifier because it's a keyword., Try renaming this to be an identifier that isn't a keyword., {lexeme: class}], class, class)
                 handleIdentifier(class, expression)
@@ -1073,8 +1073,8 @@
                   beginReturnStatement(return)
                     handleLiteralInt(42)
                   endReturnStatement(true, return, ;)
-                endThenStatement(;)
-              endIfStatement(if, null)
+                endThenStatement(return, ;)
+              endIfStatement(if, null, ;)
               beginReturnStatement(return)
                 beginConstLiteral(()
                   beginParenthesizedExpressionOrRecordLiteral(()
@@ -1132,8 +1132,8 @@
                   beginReturnStatement(return)
                     handleLiteralInt(42)
                   endReturnStatement(true, return, ;)
-                endThenStatement(;)
-              endIfStatement(if, null)
+                endThenStatement(return, ;)
+              endIfStatement(if, null, ;)
               beginReturnStatement(return)
                 handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got 'continue'., Try inserting an identifier before 'continue'., {lexeme: continue}], continue, continue)
                 handleIdentifier(, expression)
@@ -1197,8 +1197,8 @@
                   beginReturnStatement(return)
                     handleLiteralInt(42)
                   endReturnStatement(true, return, ;)
-                endThenStatement(;)
-              endIfStatement(if, null)
+                endThenStatement(return, ;)
+              endIfStatement(if, null, ;)
               beginReturnStatement(return)
                 handleIdentifier(covariant, expression)
                 handleNoTypeArguments(()
@@ -1256,8 +1256,8 @@
                   beginReturnStatement(return)
                     handleLiteralInt(42)
                   endReturnStatement(true, return, ;)
-                endThenStatement(;)
-              endIfStatement(if, null)
+                endThenStatement(return, ;)
+              endIfStatement(if, null, ;)
               beginReturnStatement(return)
                 handleRecoverableError(Message[ExpectedIdentifierButGotKeyword, 'default' can't be used as an identifier because it's a keyword., Try renaming this to be an identifier that isn't a keyword., {lexeme: default}], default, default)
                 handleIdentifier(default, expression)
@@ -1315,8 +1315,8 @@
                   beginReturnStatement(return)
                     handleLiteralInt(42)
                   endReturnStatement(true, return, ;)
-                endThenStatement(;)
-              endIfStatement(if, null)
+                endThenStatement(return, ;)
+              endIfStatement(if, null, ;)
               beginReturnStatement(return)
                 handleIdentifier(deferred, expression)
                 handleNoTypeArguments(()
@@ -1374,8 +1374,8 @@
                   beginReturnStatement(return)
                     handleLiteralInt(42)
                   endReturnStatement(true, return, ;)
-                endThenStatement(;)
-              endIfStatement(if, null)
+                endThenStatement(return, ;)
+              endIfStatement(if, null, ;)
               beginReturnStatement(return)
                 handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got 'do'., Try inserting an identifier before 'do'., {lexeme: do}], do, do)
                 handleIdentifier(, expression)
@@ -1449,8 +1449,8 @@
                   beginReturnStatement(return)
                     handleLiteralInt(42)
                   endReturnStatement(true, return, ;)
-                endThenStatement(;)
-              endIfStatement(if, null)
+                endThenStatement(return, ;)
+              endIfStatement(if, null, ;)
               beginReturnStatement(return)
                 handleIdentifier(dynamic, expression)
                 handleNoTypeArguments(()
@@ -1508,8 +1508,8 @@
                   beginReturnStatement(return)
                     handleLiteralInt(42)
                   endReturnStatement(true, return, ;)
-                endThenStatement(;)
-              endIfStatement(if, null)
+                endThenStatement(return, ;)
+              endIfStatement(if, null, ;)
               beginReturnStatement(return)
                 handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got 'else'., Try inserting an identifier before 'else'., {lexeme: else}], else, else)
                 handleIdentifier(, expression)
@@ -1579,8 +1579,8 @@
                   beginReturnStatement(return)
                     handleLiteralInt(42)
                   endReturnStatement(true, return, ;)
-                endThenStatement(;)
-              endIfStatement(if, null)
+                endThenStatement(return, ;)
+              endIfStatement(if, null, ;)
               beginReturnStatement(return)
                 handleRecoverableError(Message[ExpectedIdentifierButGotKeyword, 'enum' can't be used as an identifier because it's a keyword., Try renaming this to be an identifier that isn't a keyword., {lexeme: enum}], enum, enum)
                 handleIdentifier(enum, expression)
@@ -1638,8 +1638,8 @@
                   beginReturnStatement(return)
                     handleLiteralInt(42)
                   endReturnStatement(true, return, ;)
-                endThenStatement(;)
-              endIfStatement(if, null)
+                endThenStatement(return, ;)
+              endIfStatement(if, null, ;)
               beginReturnStatement(return)
                 handleIdentifier(export, expression)
                 handleNoTypeArguments(()
@@ -1697,8 +1697,8 @@
                   beginReturnStatement(return)
                     handleLiteralInt(42)
                   endReturnStatement(true, return, ;)
-                endThenStatement(;)
-              endIfStatement(if, null)
+                endThenStatement(return, ;)
+              endIfStatement(if, null, ;)
               beginReturnStatement(return)
                 handleRecoverableError(Message[ExpectedIdentifierButGotKeyword, 'extends' can't be used as an identifier because it's a keyword., Try renaming this to be an identifier that isn't a keyword., {lexeme: extends}], extends, extends)
                 handleIdentifier(extends, expression)
@@ -1756,8 +1756,8 @@
                   beginReturnStatement(return)
                     handleLiteralInt(42)
                   endReturnStatement(true, return, ;)
-                endThenStatement(;)
-              endIfStatement(if, null)
+                endThenStatement(return, ;)
+              endIfStatement(if, null, ;)
               beginReturnStatement(return)
                 handleIdentifier(extension, expression)
                 handleNoTypeArguments(()
@@ -1814,8 +1814,8 @@
                   beginReturnStatement(return)
                     handleLiteralInt(42)
                   endReturnStatement(true, return, ;)
-                endThenStatement(;)
-              endIfStatement(if, null)
+                endThenStatement(return, ;)
+              endIfStatement(if, null, ;)
               beginReturnStatement(return)
                 handleIdentifier(external, expression)
                 handleNoTypeArguments(()
@@ -1872,8 +1872,8 @@
                   beginReturnStatement(return)
                     handleLiteralInt(42)
                   endReturnStatement(true, return, ;)
-                endThenStatement(;)
-              endIfStatement(if, null)
+                endThenStatement(return, ;)
+              endIfStatement(if, null, ;)
               beginReturnStatement(return)
                 handleIdentifier(factory, expression)
                 handleNoTypeArguments(()
@@ -1931,8 +1931,8 @@
                   beginReturnStatement(return)
                     handleLiteralInt(42)
                   endReturnStatement(true, return, ;)
-                endThenStatement(;)
-              endIfStatement(if, null)
+                endThenStatement(return, ;)
+              endIfStatement(if, null, ;)
               beginReturnStatement(return)
                 handleLiteralBool(false)
                 handleNoTypeArguments(()
@@ -1990,8 +1990,8 @@
                   beginReturnStatement(return)
                     handleLiteralInt(42)
                   endReturnStatement(true, return, ;)
-                endThenStatement(;)
-              endIfStatement(if, null)
+                endThenStatement(return, ;)
+              endIfStatement(if, null, ;)
               beginReturnStatement(return)
                 handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got 'final'., Try inserting an identifier before 'final'., {lexeme: final}], final, final)
                 handleIdentifier(, expression)
@@ -2077,8 +2077,8 @@
                   beginReturnStatement(return)
                     handleLiteralInt(42)
                   endReturnStatement(true, return, ;)
-                endThenStatement(;)
-              endIfStatement(if, null)
+                endThenStatement(return, ;)
+              endIfStatement(if, null, ;)
               beginReturnStatement(return)
                 handleRecoverableError(Message[ExpectedIdentifierButGotKeyword, 'finally' can't be used as an identifier because it's a keyword., Try renaming this to be an identifier that isn't a keyword., {lexeme: finally}], finally, finally)
                 handleIdentifier(finally, expression)
@@ -2137,8 +2137,8 @@
                   beginReturnStatement(return)
                     handleLiteralInt(42)
                   endReturnStatement(true, return, ;)
-                endThenStatement(;)
-              endIfStatement(if, null)
+                endThenStatement(return, ;)
+              endIfStatement(if, null, ;)
               beginReturnStatement(return)
                 handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got 'for'., Try inserting an identifier before 'for'., {lexeme: for}], for, for)
                 handleIdentifier(, expression)
@@ -2216,8 +2216,8 @@
                   beginReturnStatement(return)
                     handleLiteralInt(42)
                   endReturnStatement(true, return, ;)
-                endThenStatement(;)
-              endIfStatement(if, null)
+                endThenStatement(return, ;)
+              endIfStatement(if, null, ;)
               beginReturnStatement(return)
                 handleIdentifier(Function, expression)
                 handleNoTypeArguments(()
@@ -2274,8 +2274,8 @@
                   beginReturnStatement(return)
                     handleLiteralInt(42)
                   endReturnStatement(true, return, ;)
-                endThenStatement(;)
-              endIfStatement(if, null)
+                endThenStatement(return, ;)
+              endIfStatement(if, null, ;)
               beginReturnStatement(return)
                 handleIdentifier(get, expression)
                 handleNoTypeArguments(()
@@ -2332,8 +2332,8 @@
                   beginReturnStatement(return)
                     handleLiteralInt(42)
                   endReturnStatement(true, return, ;)
-                endThenStatement(;)
-              endIfStatement(if, null)
+                endThenStatement(return, ;)
+              endIfStatement(if, null, ;)
               beginReturnStatement(return)
                 handleIdentifier(hide, expression)
                 handleNoTypeArguments(()
@@ -2391,8 +2391,8 @@
                   beginReturnStatement(return)
                     handleLiteralInt(42)
                   endReturnStatement(true, return, ;)
-                endThenStatement(;)
-              endIfStatement(if, null)
+                endThenStatement(return, ;)
+              endIfStatement(if, null, ;)
               beginReturnStatement(return)
                 handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got 'if'., Try inserting an identifier before 'if'., {lexeme: if}], if, if)
                 handleIdentifier(, expression)
@@ -2420,8 +2420,8 @@
                     handleLiteralInt(1)
                   endBinaryExpression(+)
                   handleExpressionStatement(;)
-                endThenStatement(;)
-              endIfStatement(if, null)
+                endThenStatement(+, ;)
+              endIfStatement(if, null, ;)
             endBlockFunctionBody(3, {, })
           endClassMethod(null, int, (, null, })
         endMember()
@@ -2461,8 +2461,8 @@
                   beginReturnStatement(return)
                     handleLiteralInt(42)
                   endReturnStatement(true, return, ;)
-                endThenStatement(;)
-              endIfStatement(if, null)
+                endThenStatement(return, ;)
+              endIfStatement(if, null, ;)
               beginReturnStatement(return)
                 handleIdentifier(implements, expression)
                 handleNoTypeArguments(()
@@ -2519,8 +2519,8 @@
                   beginReturnStatement(return)
                     handleLiteralInt(42)
                   endReturnStatement(true, return, ;)
-                endThenStatement(;)
-              endIfStatement(if, null)
+                endThenStatement(return, ;)
+              endIfStatement(if, null, ;)
               beginReturnStatement(return)
                 handleIdentifier(import, expression)
                 handleNoTypeArguments(()
@@ -2578,8 +2578,8 @@
                   beginReturnStatement(return)
                     handleLiteralInt(42)
                   endReturnStatement(true, return, ;)
-                endThenStatement(;)
-              endIfStatement(if, null)
+                endThenStatement(return, ;)
+              endIfStatement(if, null, ;)
               beginReturnStatement(return)
                 handleRecoverableError(Message[ExpectedIdentifierButGotKeyword, 'in' can't be used as an identifier because it's a keyword., Try renaming this to be an identifier that isn't a keyword., {lexeme: in}], in, in)
                 handleIdentifier(in, expression)
@@ -2637,8 +2637,8 @@
                   beginReturnStatement(return)
                     handleLiteralInt(42)
                   endReturnStatement(true, return, ;)
-                endThenStatement(;)
-              endIfStatement(if, null)
+                endThenStatement(return, ;)
+              endIfStatement(if, null, ;)
               beginReturnStatement(return)
                 handleIdentifier(inout, expression)
                 handleNoTypeArguments(()
@@ -2695,8 +2695,8 @@
                   beginReturnStatement(return)
                     handleLiteralInt(42)
                   endReturnStatement(true, return, ;)
-                endThenStatement(;)
-              endIfStatement(if, null)
+                endThenStatement(return, ;)
+              endIfStatement(if, null, ;)
               beginReturnStatement(return)
                 handleIdentifier(interface, expression)
                 handleNoTypeArguments(()
@@ -2754,8 +2754,8 @@
                   beginReturnStatement(return)
                     handleLiteralInt(42)
                   endReturnStatement(true, return, ;)
-                endThenStatement(;)
-              endIfStatement(if, null)
+                endThenStatement(return, ;)
+              endIfStatement(if, null, ;)
               beginReturnStatement(return)
                 handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got 'is'., Try inserting an identifier before 'is'., {lexeme: is}], is, is)
                 handleIdentifier(, expression)
@@ -2827,8 +2827,8 @@
                   beginReturnStatement(return)
                     handleLiteralInt(42)
                   endReturnStatement(true, return, ;)
-                endThenStatement(;)
-              endIfStatement(if, null)
+                endThenStatement(return, ;)
+              endIfStatement(if, null, ;)
               beginReturnStatement(return)
                 handleIdentifier(late, expression)
                 handleNoTypeArguments(()
@@ -2885,8 +2885,8 @@
                   beginReturnStatement(return)
                     handleLiteralInt(42)
                   endReturnStatement(true, return, ;)
-                endThenStatement(;)
-              endIfStatement(if, null)
+                endThenStatement(return, ;)
+              endIfStatement(if, null, ;)
               beginReturnStatement(return)
                 handleIdentifier(library, expression)
                 handleNoTypeArguments(()
@@ -2943,8 +2943,8 @@
                   beginReturnStatement(return)
                     handleLiteralInt(42)
                   endReturnStatement(true, return, ;)
-                endThenStatement(;)
-              endIfStatement(if, null)
+                endThenStatement(return, ;)
+              endIfStatement(if, null, ;)
               beginReturnStatement(return)
                 handleIdentifier(mixin, expression)
                 handleNoTypeArguments(()
@@ -3001,8 +3001,8 @@
                   beginReturnStatement(return)
                     handleLiteralInt(42)
                   endReturnStatement(true, return, ;)
-                endThenStatement(;)
-              endIfStatement(if, null)
+                endThenStatement(return, ;)
+              endIfStatement(if, null, ;)
               beginReturnStatement(return)
                 handleIdentifier(native, expression)
                 handleNoTypeArguments(()
@@ -3060,8 +3060,8 @@
                   beginReturnStatement(return)
                     handleLiteralInt(42)
                   endReturnStatement(true, return, ;)
-                endThenStatement(;)
-              endIfStatement(if, null)
+                endThenStatement(return, ;)
+              endIfStatement(if, null, ;)
               beginReturnStatement(return)
                 beginNewExpression(new)
                   handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got '('., Try inserting an identifier before '('., {lexeme: (}], (, ()
@@ -3124,8 +3124,8 @@
                   beginReturnStatement(return)
                     handleLiteralInt(42)
                   endReturnStatement(true, return, ;)
-                endThenStatement(;)
-              endIfStatement(if, null)
+                endThenStatement(return, ;)
+              endIfStatement(if, null, ;)
               beginReturnStatement(return)
                 handleLiteralNull(null)
                 handleNoTypeArguments(()
@@ -3182,8 +3182,8 @@
                   beginReturnStatement(return)
                     handleLiteralInt(42)
                   endReturnStatement(true, return, ;)
-                endThenStatement(;)
-              endIfStatement(if, null)
+                endThenStatement(return, ;)
+              endIfStatement(if, null, ;)
               beginReturnStatement(return)
                 handleIdentifier(of, expression)
                 handleNoTypeArguments(()
@@ -3240,8 +3240,8 @@
                   beginReturnStatement(return)
                     handleLiteralInt(42)
                   endReturnStatement(true, return, ;)
-                endThenStatement(;)
-              endIfStatement(if, null)
+                endThenStatement(return, ;)
+              endIfStatement(if, null, ;)
               beginReturnStatement(return)
                 handleIdentifier(on, expression)
                 handleNoTypeArguments(()
@@ -3298,8 +3298,8 @@
                   beginReturnStatement(return)
                     handleLiteralInt(42)
                   endReturnStatement(true, return, ;)
-                endThenStatement(;)
-              endIfStatement(if, null)
+                endThenStatement(return, ;)
+              endIfStatement(if, null, ;)
               beginReturnStatement(return)
                 handleIdentifier(operator, expression)
                 handleNoTypeArguments(()
@@ -3356,8 +3356,8 @@
                   beginReturnStatement(return)
                     handleLiteralInt(42)
                   endReturnStatement(true, return, ;)
-                endThenStatement(;)
-              endIfStatement(if, null)
+                endThenStatement(return, ;)
+              endIfStatement(if, null, ;)
               beginReturnStatement(return)
                 handleIdentifier(out, expression)
                 handleNoTypeArguments(()
@@ -3414,8 +3414,8 @@
                   beginReturnStatement(return)
                     handleLiteralInt(42)
                   endReturnStatement(true, return, ;)
-                endThenStatement(;)
-              endIfStatement(if, null)
+                endThenStatement(return, ;)
+              endIfStatement(if, null, ;)
               beginReturnStatement(return)
                 handleIdentifier(part, expression)
                 handleNoTypeArguments(()
@@ -3472,8 +3472,8 @@
                   beginReturnStatement(return)
                     handleLiteralInt(42)
                   endReturnStatement(true, return, ;)
-                endThenStatement(;)
-              endIfStatement(if, null)
+                endThenStatement(return, ;)
+              endIfStatement(if, null, ;)
               beginReturnStatement(return)
                 handleIdentifier(patch, expression)
                 handleNoTypeArguments(()
@@ -3530,8 +3530,8 @@
                   beginReturnStatement(return)
                     handleLiteralInt(42)
                   endReturnStatement(true, return, ;)
-                endThenStatement(;)
-              endIfStatement(if, null)
+                endThenStatement(return, ;)
+              endIfStatement(if, null, ;)
               beginReturnStatement(return)
                 handleIdentifier(required, expression)
                 handleNoTypeArguments(()
@@ -3589,8 +3589,8 @@
                   beginReturnStatement(return)
                     handleLiteralInt(42)
                   endReturnStatement(true, return, ;)
-                endThenStatement(;)
-              endIfStatement(if, null)
+                endThenStatement(return, ;)
+              endIfStatement(if, null, ;)
               beginReturnStatement(return)
                 handleRecoverableError(Message[ExpectedIdentifierButGotKeyword, 'rethrow' can't be used as an identifier because it's a keyword., Try renaming this to be an identifier that isn't a keyword., {lexeme: rethrow}], rethrow, rethrow)
                 handleIdentifier(rethrow, expression)
@@ -3649,8 +3649,8 @@
                   beginReturnStatement(return)
                     handleLiteralInt(42)
                   endReturnStatement(true, return, ;)
-                endThenStatement(;)
-              endIfStatement(if, null)
+                endThenStatement(return, ;)
+              endIfStatement(if, null, ;)
               beginReturnStatement(return)
                 handleRecoverableError(Message[UnexpectedToken, Unexpected token 'return'., null, {lexeme: return}], return, return)
                 beginParenthesizedExpressionOrRecordLiteral(()
@@ -3705,8 +3705,8 @@
                   beginReturnStatement(return)
                     handleLiteralInt(42)
                   endReturnStatement(true, return, ;)
-                endThenStatement(;)
-              endIfStatement(if, null)
+                endThenStatement(return, ;)
+              endIfStatement(if, null, ;)
               beginReturnStatement(return)
                 handleIdentifier(set, expression)
                 handleNoTypeArguments(()
@@ -3763,8 +3763,8 @@
                   beginReturnStatement(return)
                     handleLiteralInt(42)
                   endReturnStatement(true, return, ;)
-                endThenStatement(;)
-              endIfStatement(if, null)
+                endThenStatement(return, ;)
+              endIfStatement(if, null, ;)
               beginReturnStatement(return)
                 handleIdentifier(show, expression)
                 handleNoTypeArguments(()
@@ -3821,8 +3821,8 @@
                   beginReturnStatement(return)
                     handleLiteralInt(42)
                   endReturnStatement(true, return, ;)
-                endThenStatement(;)
-              endIfStatement(if, null)
+                endThenStatement(return, ;)
+              endIfStatement(if, null, ;)
               beginReturnStatement(return)
                 handleIdentifier(source, expression)
                 handleNoTypeArguments(()
@@ -3879,8 +3879,8 @@
                   beginReturnStatement(return)
                     handleLiteralInt(42)
                   endReturnStatement(true, return, ;)
-                endThenStatement(;)
-              endIfStatement(if, null)
+                endThenStatement(return, ;)
+              endIfStatement(if, null, ;)
               beginReturnStatement(return)
                 handleIdentifier(static, expression)
                 handleNoTypeArguments(()
@@ -3949,8 +3949,8 @@
                   beginReturnStatement(return)
                     handleLiteralInt(42)
                   endReturnStatement(true, return, ;)
-                endThenStatement(;)
-              endIfStatement(if, null)
+                endThenStatement(return, ;)
+              endIfStatement(if, null, ;)
               beginReturnStatement(return)
                 handleSuperExpression(super, expression)
                 handleNoTypeArguments(()
@@ -4008,8 +4008,8 @@
                   beginReturnStatement(return)
                     handleLiteralInt(42)
                   endReturnStatement(true, return, ;)
-                endThenStatement(;)
-              endIfStatement(if, null)
+                endThenStatement(return, ;)
+              endIfStatement(if, null, ;)
               beginReturnStatement(return)
                 handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got 'switch'., Try inserting an identifier before 'switch'., {lexeme: switch}], switch, switch)
                 handleIdentifier(, expression)
@@ -4079,8 +4079,8 @@
                   beginReturnStatement(return)
                     handleLiteralInt(42)
                   endReturnStatement(true, return, ;)
-                endThenStatement(;)
-              endIfStatement(if, null)
+                endThenStatement(return, ;)
+              endIfStatement(if, null, ;)
               beginReturnStatement(return)
                 handleIdentifier(sync, expression)
                 handleNoTypeArguments(()
@@ -4149,8 +4149,8 @@
                   beginReturnStatement(return)
                     handleLiteralInt(42)
                   endReturnStatement(true, return, ;)
-                endThenStatement(;)
-              endIfStatement(if, null)
+                endThenStatement(return, ;)
+              endIfStatement(if, null, ;)
               beginReturnStatement(return)
                 handleThisExpression(this, expression)
                 handleNoTypeArguments(()
@@ -4208,8 +4208,8 @@
                   beginReturnStatement(return)
                     handleLiteralInt(42)
                   endReturnStatement(true, return, ;)
-                endThenStatement(;)
-              endIfStatement(if, null)
+                endThenStatement(return, ;)
+              endIfStatement(if, null, ;)
               beginReturnStatement(return)
                 beginParenthesizedExpressionOrRecordLiteral(()
                   handleIdentifier(x, expression)
@@ -4265,8 +4265,8 @@
                   beginReturnStatement(return)
                     handleLiteralInt(42)
                   endReturnStatement(true, return, ;)
-                endThenStatement(;)
-              endIfStatement(if, null)
+                endThenStatement(return, ;)
+              endIfStatement(if, null, ;)
               beginReturnStatement(return)
                 handleLiteralBool(true)
                 handleNoTypeArguments(()
@@ -4324,8 +4324,8 @@
                   beginReturnStatement(return)
                     handleLiteralInt(42)
                   endReturnStatement(true, return, ;)
-                endThenStatement(;)
-              endIfStatement(if, null)
+                endThenStatement(return, ;)
+              endIfStatement(if, null, ;)
               beginReturnStatement(return)
                 handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got 'try'., Try inserting an identifier before 'try'., {lexeme: try}], try, try)
                 handleIdentifier(, expression)
@@ -4339,7 +4339,7 @@
                 beginBlock({, BlockKind(try statement))
                 endBlock(0, {, }, BlockKind(try statement))
                 handleRecoverableError(OnlyTry, try, try)
-              endTryStatement(0, try, null)
+              endTryStatement(0, try, null, })
               beginParenthesizedExpressionOrRecordLiteral(()
                 handleIdentifier(x, expression)
                 handleNoTypeArguments(-)
@@ -4392,8 +4392,8 @@
                   beginReturnStatement(return)
                     handleLiteralInt(42)
                   endReturnStatement(true, return, ;)
-                endThenStatement(;)
-              endIfStatement(if, null)
+                endThenStatement(return, ;)
+              endIfStatement(if, null, ;)
               beginReturnStatement(return)
                 handleIdentifier(typedef, expression)
                 handleNoTypeArguments(()
@@ -4451,8 +4451,8 @@
                   beginReturnStatement(return)
                     handleLiteralInt(42)
                   endReturnStatement(true, return, ;)
-                endThenStatement(;)
-              endIfStatement(if, null)
+                endThenStatement(return, ;)
+              endIfStatement(if, null, ;)
               beginReturnStatement(return)
                 handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got 'var'., Try inserting an identifier before 'var'., {lexeme: var}], var, var)
                 handleIdentifier(, expression)
@@ -4538,8 +4538,8 @@
                   beginReturnStatement(return)
                     handleLiteralInt(42)
                   endReturnStatement(true, return, ;)
-                endThenStatement(;)
-              endIfStatement(if, null)
+                endThenStatement(return, ;)
+              endIfStatement(if, null, ;)
               beginReturnStatement(return)
                 handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got 'void'., Try inserting an identifier before 'void'., {lexeme: void}], void, void)
                 handleIdentifier(, expression)
@@ -4625,8 +4625,8 @@
                   beginReturnStatement(return)
                     handleLiteralInt(42)
                   endReturnStatement(true, return, ;)
-                endThenStatement(;)
-              endIfStatement(if, null)
+                endThenStatement(return, ;)
+              endIfStatement(if, null, ;)
               beginReturnStatement(return)
                 handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got 'while'., Try inserting an identifier before 'while'., {lexeme: while}], while, while)
                 handleIdentifier(, expression)
@@ -4696,8 +4696,8 @@
                   beginReturnStatement(return)
                     handleLiteralInt(42)
                   endReturnStatement(true, return, ;)
-                endThenStatement(;)
-              endIfStatement(if, null)
+                endThenStatement(return, ;)
+              endIfStatement(if, null, ;)
               beginReturnStatement(return)
                 handleRecoverableError(Message[ExpectedIdentifierButGotKeyword, 'with' can't be used as an identifier because it's a keyword., Try renaming this to be an identifier that isn't a keyword., {lexeme: with}], with, with)
                 handleIdentifier(with, expression)
@@ -4755,8 +4755,8 @@
                   beginReturnStatement(return)
                     handleLiteralInt(42)
                   endReturnStatement(true, return, ;)
-                endThenStatement(;)
-              endIfStatement(if, null)
+                endThenStatement(return, ;)
+              endIfStatement(if, null, ;)
               beginReturnStatement(return)
                 handleIdentifier(yield, expression)
                 handleNoTypeArguments(()
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 8ca3584..922a946 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
@@ -109,8 +109,8 @@
                               ensureSemicolon(42)
                               listener: endReturnStatement(true, return, ;)
                               inGenerator()
-                        listener: endThenStatement(;)
-                        listener: endIfStatement(if, null)
+                        listener: endThenStatement(return, ;)
+                        listener: endIfStatement(if, null, ;)
                   notEofOrValue(}, return)
                   parseStatement(;)
                     parseStatementX(;)
@@ -253,8 +253,8 @@
                               ensureSemicolon(42)
                               listener: endReturnStatement(true, return, ;)
                               inGenerator()
-                        listener: endThenStatement(;)
-                        listener: endIfStatement(if, null)
+                        listener: endThenStatement(return, ;)
+                        listener: endIfStatement(if, null, ;)
                   notEofOrValue(}, return)
                   parseStatement(;)
                     parseStatementX(;)
@@ -401,8 +401,8 @@
                               ensureSemicolon(42)
                               listener: endReturnStatement(true, return, ;)
                               inGenerator()
-                        listener: endThenStatement(;)
-                        listener: endIfStatement(if, null)
+                        listener: endThenStatement(return, ;)
+                        listener: endIfStatement(if, null, ;)
                   notEofOrValue(}, return)
                   parseStatement(;)
                     parseStatementX(;)
@@ -536,8 +536,8 @@
                               ensureSemicolon(42)
                               listener: endReturnStatement(true, return, ;)
                               inGenerator()
-                        listener: endThenStatement(;)
-                        listener: endIfStatement(if, null)
+                        listener: endThenStatement(return, ;)
+                        listener: endIfStatement(if, null, ;)
                   notEofOrValue(}, return)
                   parseStatement(;)
                     parseStatementX(;)
@@ -680,8 +680,8 @@
                               ensureSemicolon(42)
                               listener: endReturnStatement(true, return, ;)
                               inGenerator()
-                        listener: endThenStatement(;)
-                        listener: endIfStatement(if, null)
+                        listener: endThenStatement(return, ;)
+                        listener: endIfStatement(if, null, ;)
                   notEofOrValue(}, return)
                   parseStatement(;)
                     parseStatementX(;)
@@ -831,8 +831,8 @@
                               ensureSemicolon(42)
                               listener: endReturnStatement(true, return, ;)
                               inGenerator()
-                        listener: endThenStatement(;)
-                        listener: endIfStatement(if, null)
+                        listener: endThenStatement(return, ;)
+                        listener: endIfStatement(if, null, ;)
                   notEofOrValue(}, return)
                   parseStatement(;)
                     parseStatementX(;)
@@ -1009,8 +1009,8 @@
                               ensureSemicolon(42)
                               listener: endReturnStatement(true, return, ;)
                               inGenerator()
-                        listener: endThenStatement(;)
-                        listener: endIfStatement(if, null)
+                        listener: endThenStatement(return, ;)
+                        listener: endIfStatement(if, null, ;)
                   notEofOrValue(}, return)
                   parseStatement(;)
                     parseStatementX(;)
@@ -1156,8 +1156,8 @@
                               ensureSemicolon(42)
                               listener: endReturnStatement(true, return, ;)
                               inGenerator()
-                        listener: endThenStatement(;)
-                        listener: endIfStatement(if, null)
+                        listener: endThenStatement(return, ;)
+                        listener: endIfStatement(if, null, ;)
                   notEofOrValue(}, return)
                   parseStatement(;)
                     parseStatementX(;)
@@ -1303,8 +1303,8 @@
                               ensureSemicolon(42)
                               listener: endReturnStatement(true, return, ;)
                               inGenerator()
-                        listener: endThenStatement(;)
-                        listener: endIfStatement(if, null)
+                        listener: endThenStatement(return, ;)
+                        listener: endIfStatement(if, null, ;)
                   notEofOrValue(}, return)
                   parseStatement(;)
                     parseStatementX(;)
@@ -1450,8 +1450,8 @@
                               ensureSemicolon(42)
                               listener: endReturnStatement(true, return, ;)
                               inGenerator()
-                        listener: endThenStatement(;)
-                        listener: endIfStatement(if, null)
+                        listener: endThenStatement(return, ;)
+                        listener: endIfStatement(if, null, ;)
                   notEofOrValue(}, return)
                   parseStatement(;)
                     parseStatementX(;)
@@ -1592,8 +1592,8 @@
                               ensureSemicolon(42)
                               listener: endReturnStatement(true, return, ;)
                               inGenerator()
-                        listener: endThenStatement(;)
-                        listener: endIfStatement(if, null)
+                        listener: endThenStatement(return, ;)
+                        listener: endIfStatement(if, null, ;)
                   notEofOrValue(}, return)
                   parseStatement(;)
                     parseStatementX(;)
@@ -1766,8 +1766,8 @@
                               ensureSemicolon(42)
                               listener: endReturnStatement(true, return, ;)
                               inGenerator()
-                        listener: endThenStatement(;)
-                        listener: endIfStatement(if, null)
+                        listener: endThenStatement(return, ;)
+                        listener: endIfStatement(if, null, ;)
                   notEofOrValue(}, return)
                   parseStatement(;)
                     parseStatementX(;)
@@ -1914,8 +1914,8 @@
                               ensureSemicolon(42)
                               listener: endReturnStatement(true, return, ;)
                               inGenerator()
-                        listener: endThenStatement(;)
-                        listener: endIfStatement(if, null)
+                        listener: endThenStatement(return, ;)
+                        listener: endIfStatement(if, null, ;)
                   notEofOrValue(}, return)
                   parseStatement(;)
                     parseStatementX(;)
@@ -2057,8 +2057,8 @@
                               ensureSemicolon(42)
                               listener: endReturnStatement(true, return, ;)
                               inGenerator()
-                        listener: endThenStatement(;)
-                        listener: endIfStatement(if, null)
+                        listener: endThenStatement(return, ;)
+                        listener: endIfStatement(if, null, ;)
                   notEofOrValue(}, return)
                   parseStatement(;)
                     parseStatementX(;)
@@ -2205,8 +2205,8 @@
                               ensureSemicolon(42)
                               listener: endReturnStatement(true, return, ;)
                               inGenerator()
-                        listener: endThenStatement(;)
-                        listener: endIfStatement(if, null)
+                        listener: endThenStatement(return, ;)
+                        listener: endIfStatement(if, null, ;)
                   notEofOrValue(}, return)
                   parseStatement(;)
                     parseStatementX(;)
@@ -2403,8 +2403,8 @@
                               ensureSemicolon(42)
                               listener: endReturnStatement(true, return, ;)
                               inGenerator()
-                        listener: endThenStatement(;)
-                        listener: endIfStatement(if, null)
+                        listener: endThenStatement(return, ;)
+                        listener: endIfStatement(if, null, ;)
                   notEofOrValue(}, return)
                   parseStatement(;)
                     parseStatementX(;)
@@ -2551,8 +2551,8 @@
                               ensureSemicolon(42)
                               listener: endReturnStatement(true, return, ;)
                               inGenerator()
-                        listener: endThenStatement(;)
-                        listener: endIfStatement(if, null)
+                        listener: endThenStatement(return, ;)
+                        listener: endIfStatement(if, null, ;)
                   notEofOrValue(}, return)
                   parseStatement(;)
                     parseStatementX(;)
@@ -2747,8 +2747,8 @@
                               ensureSemicolon(42)
                               listener: endReturnStatement(true, return, ;)
                               inGenerator()
-                        listener: endThenStatement(;)
-                        listener: endIfStatement(if, null)
+                        listener: endThenStatement(return, ;)
+                        listener: endIfStatement(if, null, ;)
                   notEofOrValue(}, return)
                   parseStatement(;)
                     parseStatementX(;)
@@ -2890,8 +2890,8 @@
                               ensureSemicolon(42)
                               listener: endReturnStatement(true, return, ;)
                               inGenerator()
-                        listener: endThenStatement(;)
-                        listener: endIfStatement(if, null)
+                        listener: endThenStatement(return, ;)
+                        listener: endIfStatement(if, null, ;)
                   notEofOrValue(}, return)
                   parseStatement(;)
                     parseStatementX(;)
@@ -3038,8 +3038,8 @@
                               ensureSemicolon(42)
                               listener: endReturnStatement(true, return, ;)
                               inGenerator()
-                        listener: endThenStatement(;)
-                        listener: endIfStatement(if, null)
+                        listener: endThenStatement(return, ;)
+                        listener: endIfStatement(if, null, ;)
                   notEofOrValue(}, return)
                   parseStatement(;)
                     parseStatementX(;)
@@ -3181,8 +3181,8 @@
                               ensureSemicolon(42)
                               listener: endReturnStatement(true, return, ;)
                               inGenerator()
-                        listener: endThenStatement(;)
-                        listener: endIfStatement(if, null)
+                        listener: endThenStatement(return, ;)
+                        listener: endIfStatement(if, null, ;)
                   notEofOrValue(}, return)
                   parseStatement(;)
                     parseStatementX(;)
@@ -3325,8 +3325,8 @@
                               ensureSemicolon(42)
                               listener: endReturnStatement(true, return, ;)
                               inGenerator()
-                        listener: endThenStatement(;)
-                        listener: endIfStatement(if, null)
+                        listener: endThenStatement(return, ;)
+                        listener: endIfStatement(if, null, ;)
                   notEofOrValue(}, return)
                   parseStatement(;)
                     parseStatementX(;)
@@ -3469,8 +3469,8 @@
                               ensureSemicolon(42)
                               listener: endReturnStatement(true, return, ;)
                               inGenerator()
-                        listener: endThenStatement(;)
-                        listener: endIfStatement(if, null)
+                        listener: endThenStatement(return, ;)
+                        listener: endIfStatement(if, null, ;)
                   notEofOrValue(}, return)
                   parseStatement(;)
                     parseStatementX(;)
@@ -3617,8 +3617,8 @@
                               ensureSemicolon(42)
                               listener: endReturnStatement(true, return, ;)
                               inGenerator()
-                        listener: endThenStatement(;)
-                        listener: endIfStatement(if, null)
+                        listener: endThenStatement(return, ;)
+                        listener: endIfStatement(if, null, ;)
                   notEofOrValue(}, return)
                   parseStatement(;)
                     parseStatementX(;)
@@ -3759,8 +3759,8 @@
                               ensureSemicolon(42)
                               listener: endReturnStatement(true, return, ;)
                               inGenerator()
-                        listener: endThenStatement(;)
-                        listener: endIfStatement(if, null)
+                        listener: endThenStatement(return, ;)
+                        listener: endIfStatement(if, null, ;)
                   notEofOrValue(}, return)
                   parseStatement(;)
                     parseStatementX(;)
@@ -3998,8 +3998,8 @@
                               ensureSemicolon(42)
                               listener: endReturnStatement(true, return, ;)
                               inGenerator()
-                        listener: endThenStatement(;)
-                        listener: endIfStatement(if, null)
+                        listener: endThenStatement(return, ;)
+                        listener: endIfStatement(if, null, ;)
                   notEofOrValue(}, return)
                   parseStatement(;)
                     parseStatementX(;)
@@ -4145,8 +4145,8 @@
                               ensureSemicolon(42)
                               listener: endReturnStatement(true, return, ;)
                               inGenerator()
-                        listener: endThenStatement(;)
-                        listener: endIfStatement(if, null)
+                        listener: endThenStatement(return, ;)
+                        listener: endIfStatement(if, null, ;)
                   notEofOrValue(}, return)
                   parseStatement(;)
                     parseStatementX(;)
@@ -4355,8 +4355,8 @@
                               ensureSemicolon(42)
                               listener: endReturnStatement(true, return, ;)
                               inGenerator()
-                        listener: endThenStatement(;)
-                        listener: endIfStatement(if, null)
+                        listener: endThenStatement(return, ;)
+                        listener: endIfStatement(if, null, ;)
                   notEofOrValue(}, return)
                   parseStatement(;)
                     parseStatementX(;)
@@ -4500,8 +4500,8 @@
                               ensureSemicolon(42)
                               listener: endReturnStatement(true, return, ;)
                               inGenerator()
-                        listener: endThenStatement(;)
-                        listener: endIfStatement(if, null)
+                        listener: endThenStatement(return, ;)
+                        listener: endIfStatement(if, null, ;)
                   notEofOrValue(}, return)
                   parseStatement(;)
                     parseStatementX(;)
@@ -4644,8 +4644,8 @@
                               ensureSemicolon(42)
                               listener: endReturnStatement(true, return, ;)
                               inGenerator()
-                        listener: endThenStatement(;)
-                        listener: endIfStatement(if, null)
+                        listener: endThenStatement(return, ;)
+                        listener: endIfStatement(if, null, ;)
                   notEofOrValue(}, return)
                   parseStatement(;)
                     parseStatementX(;)
@@ -4792,8 +4792,8 @@
                               ensureSemicolon(42)
                               listener: endReturnStatement(true, return, ;)
                               inGenerator()
-                        listener: endThenStatement(;)
-                        listener: endIfStatement(if, null)
+                        listener: endThenStatement(return, ;)
+                        listener: endIfStatement(if, null, ;)
                   notEofOrValue(}, return)
                   parseStatement(;)
                     parseStatementX(;)
@@ -4883,8 +4883,8 @@
                                       listener: endBinaryExpression(+)
                                   ensureSemicolon(1)
                                   listener: handleExpressionStatement(;)
-                        listener: endThenStatement(;)
-                        listener: endIfStatement(if, null)
+                        listener: endThenStatement(+, ;)
+                        listener: endIfStatement(if, null, ;)
                   notEofOrValue(}, })
                   listener: endBlockFunctionBody(3, {, })
                 listener: endClassMethod(null, int, (, null, })
@@ -4973,8 +4973,8 @@
                               ensureSemicolon(42)
                               listener: endReturnStatement(true, return, ;)
                               inGenerator()
-                        listener: endThenStatement(;)
-                        listener: endIfStatement(if, null)
+                        listener: endThenStatement(return, ;)
+                        listener: endIfStatement(if, null, ;)
                   notEofOrValue(}, return)
                   parseStatement(;)
                     parseStatementX(;)
@@ -5117,8 +5117,8 @@
                               ensureSemicolon(42)
                               listener: endReturnStatement(true, return, ;)
                               inGenerator()
-                        listener: endThenStatement(;)
-                        listener: endIfStatement(if, null)
+                        listener: endThenStatement(return, ;)
+                        listener: endIfStatement(if, null, ;)
                   notEofOrValue(}, return)
                   parseStatement(;)
                     parseStatementX(;)
@@ -5265,8 +5265,8 @@
                               ensureSemicolon(42)
                               listener: endReturnStatement(true, return, ;)
                               inGenerator()
-                        listener: endThenStatement(;)
-                        listener: endIfStatement(if, null)
+                        listener: endThenStatement(return, ;)
+                        listener: endIfStatement(if, null, ;)
                   notEofOrValue(}, return)
                   parseStatement(;)
                     parseStatementX(;)
@@ -5408,8 +5408,8 @@
                               ensureSemicolon(42)
                               listener: endReturnStatement(true, return, ;)
                               inGenerator()
-                        listener: endThenStatement(;)
-                        listener: endIfStatement(if, null)
+                        listener: endThenStatement(return, ;)
+                        listener: endIfStatement(if, null, ;)
                   notEofOrValue(}, return)
                   parseStatement(;)
                     parseStatementX(;)
@@ -5552,8 +5552,8 @@
                               ensureSemicolon(42)
                               listener: endReturnStatement(true, return, ;)
                               inGenerator()
-                        listener: endThenStatement(;)
-                        listener: endIfStatement(if, null)
+                        listener: endThenStatement(return, ;)
+                        listener: endIfStatement(if, null, ;)
                   notEofOrValue(}, return)
                   parseStatement(;)
                     parseStatementX(;)
@@ -5700,8 +5700,8 @@
                               ensureSemicolon(42)
                               listener: endReturnStatement(true, return, ;)
                               inGenerator()
-                        listener: endThenStatement(;)
-                        listener: endIfStatement(if, null)
+                        listener: endThenStatement(return, ;)
+                        listener: endIfStatement(if, null, ;)
                   notEofOrValue(}, return)
                   parseStatement(;)
                     parseStatementX(;)
@@ -5874,8 +5874,8 @@
                               ensureSemicolon(42)
                               listener: endReturnStatement(true, return, ;)
                               inGenerator()
-                        listener: endThenStatement(;)
-                        listener: endIfStatement(if, null)
+                        listener: endThenStatement(return, ;)
+                        listener: endIfStatement(if, null, ;)
                   notEofOrValue(}, return)
                   parseStatement(;)
                     parseStatementX(;)
@@ -6018,8 +6018,8 @@
                               ensureSemicolon(42)
                               listener: endReturnStatement(true, return, ;)
                               inGenerator()
-                        listener: endThenStatement(;)
-                        listener: endIfStatement(if, null)
+                        listener: endThenStatement(return, ;)
+                        listener: endIfStatement(if, null, ;)
                   notEofOrValue(}, return)
                   parseStatement(;)
                     parseStatementX(;)
@@ -6162,8 +6162,8 @@
                               ensureSemicolon(42)
                               listener: endReturnStatement(true, return, ;)
                               inGenerator()
-                        listener: endThenStatement(;)
-                        listener: endIfStatement(if, null)
+                        listener: endThenStatement(return, ;)
+                        listener: endIfStatement(if, null, ;)
                   notEofOrValue(}, return)
                   parseStatement(;)
                     parseStatementX(;)
@@ -6306,8 +6306,8 @@
                               ensureSemicolon(42)
                               listener: endReturnStatement(true, return, ;)
                               inGenerator()
-                        listener: endThenStatement(;)
-                        listener: endIfStatement(if, null)
+                        listener: endThenStatement(return, ;)
+                        listener: endIfStatement(if, null, ;)
                   notEofOrValue(}, return)
                   parseStatement(;)
                     parseStatementX(;)
@@ -6454,8 +6454,8 @@
                               ensureSemicolon(42)
                               listener: endReturnStatement(true, return, ;)
                               inGenerator()
-                        listener: endThenStatement(;)
-                        listener: endIfStatement(if, null)
+                        listener: endThenStatement(return, ;)
+                        listener: endIfStatement(if, null, ;)
                   notEofOrValue(}, return)
                   parseStatement(;)
                     parseStatementX(;)
@@ -6607,8 +6607,8 @@
                               ensureSemicolon(42)
                               listener: endReturnStatement(true, return, ;)
                               inGenerator()
-                        listener: endThenStatement(;)
-                        listener: endIfStatement(if, null)
+                        listener: endThenStatement(return, ;)
+                        listener: endIfStatement(if, null, ;)
                   notEofOrValue(}, return)
                   parseStatement(;)
                     parseStatementX(;)
@@ -6745,8 +6745,8 @@
                               ensureSemicolon(42)
                               listener: endReturnStatement(true, return, ;)
                               inGenerator()
-                        listener: endThenStatement(;)
-                        listener: endIfStatement(if, null)
+                        listener: endThenStatement(return, ;)
+                        listener: endIfStatement(if, null, ;)
                   notEofOrValue(}, return)
                   parseStatement(;)
                     parseStatementX(;)
@@ -6889,8 +6889,8 @@
                               ensureSemicolon(42)
                               listener: endReturnStatement(true, return, ;)
                               inGenerator()
-                        listener: endThenStatement(;)
-                        listener: endIfStatement(if, null)
+                        listener: endThenStatement(return, ;)
+                        listener: endIfStatement(if, null, ;)
                   notEofOrValue(}, return)
                   parseStatement(;)
                     parseStatementX(;)
@@ -7035,8 +7035,8 @@
                               ensureSemicolon(42)
                               listener: endReturnStatement(true, return, ;)
                               inGenerator()
-                        listener: endThenStatement(;)
-                        listener: endIfStatement(if, null)
+                        listener: endThenStatement(return, ;)
+                        listener: endIfStatement(if, null, ;)
                   notEofOrValue(}, return)
                   parseStatement(;)
                     parseStatementX(;)
@@ -7179,8 +7179,8 @@
                               ensureSemicolon(42)
                               listener: endReturnStatement(true, return, ;)
                               inGenerator()
-                        listener: endThenStatement(;)
-                        listener: endIfStatement(if, null)
+                        listener: endThenStatement(return, ;)
+                        listener: endIfStatement(if, null, ;)
                   notEofOrValue(}, return)
                   parseStatement(;)
                     parseStatementX(;)
@@ -7323,8 +7323,8 @@
                               ensureSemicolon(42)
                               listener: endReturnStatement(true, return, ;)
                               inGenerator()
-                        listener: endThenStatement(;)
-                        listener: endIfStatement(if, null)
+                        listener: endThenStatement(return, ;)
+                        listener: endIfStatement(if, null, ;)
                   notEofOrValue(}, return)
                   parseStatement(;)
                     parseStatementX(;)
@@ -7467,8 +7467,8 @@
                               ensureSemicolon(42)
                               listener: endReturnStatement(true, return, ;)
                               inGenerator()
-                        listener: endThenStatement(;)
-                        listener: endIfStatement(if, null)
+                        listener: endThenStatement(return, ;)
+                        listener: endIfStatement(if, null, ;)
                   notEofOrValue(}, return)
                   parseStatement(;)
                     parseStatementX(;)
@@ -7611,8 +7611,8 @@
                               ensureSemicolon(42)
                               listener: endReturnStatement(true, return, ;)
                               inGenerator()
-                        listener: endThenStatement(;)
-                        listener: endIfStatement(if, null)
+                        listener: endThenStatement(return, ;)
+                        listener: endIfStatement(if, null, ;)
                   notEofOrValue(}, return)
                   parseStatement(;)
                     parseStatementX(;)
@@ -7759,8 +7759,8 @@
                               ensureSemicolon(42)
                               listener: endReturnStatement(true, return, ;)
                               inGenerator()
-                        listener: endThenStatement(;)
-                        listener: endIfStatement(if, null)
+                        listener: endThenStatement(return, ;)
+                        listener: endIfStatement(if, null, ;)
                   notEofOrValue(}, return)
                   parseStatement(;)
                     parseStatementX(;)
@@ -7906,8 +7906,8 @@
                               ensureSemicolon(42)
                               listener: endReturnStatement(true, return, ;)
                               inGenerator()
-                        listener: endThenStatement(;)
-                        listener: endIfStatement(if, null)
+                        listener: endThenStatement(return, ;)
+                        listener: endIfStatement(if, null, ;)
                   notEofOrValue(}, return)
                   parseStatement(;)
                     parseStatementX(;)
@@ -8045,8 +8045,8 @@
                               ensureSemicolon(42)
                               listener: endReturnStatement(true, return, ;)
                               inGenerator()
-                        listener: endThenStatement(;)
-                        listener: endIfStatement(if, null)
+                        listener: endThenStatement(return, ;)
+                        listener: endIfStatement(if, null, ;)
                   notEofOrValue(}, return)
                   parseStatement(;)
                     parseStatementX(;)
@@ -8189,8 +8189,8 @@
                               ensureSemicolon(42)
                               listener: endReturnStatement(true, return, ;)
                               inGenerator()
-                        listener: endThenStatement(;)
-                        listener: endIfStatement(if, null)
+                        listener: endThenStatement(return, ;)
+                        listener: endIfStatement(if, null, ;)
                   notEofOrValue(}, return)
                   parseStatement(;)
                     parseStatementX(;)
@@ -8333,8 +8333,8 @@
                               ensureSemicolon(42)
                               listener: endReturnStatement(true, return, ;)
                               inGenerator()
-                        listener: endThenStatement(;)
-                        listener: endIfStatement(if, null)
+                        listener: endThenStatement(return, ;)
+                        listener: endIfStatement(if, null, ;)
                   notEofOrValue(}, return)
                   parseStatement(;)
                     parseStatementX(;)
@@ -8477,8 +8477,8 @@
                               ensureSemicolon(42)
                               listener: endReturnStatement(true, return, ;)
                               inGenerator()
-                        listener: endThenStatement(;)
-                        listener: endIfStatement(if, null)
+                        listener: endThenStatement(return, ;)
+                        listener: endIfStatement(if, null, ;)
                   notEofOrValue(}, return)
                   parseStatement(;)
                     parseStatementX(;)
@@ -8648,8 +8648,8 @@
                                 ensureSemicolon(42)
                                 listener: endReturnStatement(true, return, ;)
                                 inGenerator()
-                          listener: endThenStatement(;)
-                          listener: endIfStatement(if, null)
+                          listener: endThenStatement(return, ;)
+                          listener: endIfStatement(if, null, ;)
                     notEofOrValue(}, return)
                     parseStatement(;)
                       parseStatementX(;)
@@ -8789,8 +8789,8 @@
                               ensureSemicolon(42)
                               listener: endReturnStatement(true, return, ;)
                               inGenerator()
-                        listener: endThenStatement(;)
-                        listener: endIfStatement(if, null)
+                        listener: endThenStatement(return, ;)
+                        listener: endIfStatement(if, null, ;)
                   notEofOrValue(}, return)
                   parseStatement(;)
                     parseStatementX(;)
@@ -8979,8 +8979,8 @@
                               ensureSemicolon(42)
                               listener: endReturnStatement(true, return, ;)
                               inGenerator()
-                        listener: endThenStatement(;)
-                        listener: endIfStatement(if, null)
+                        listener: endThenStatement(return, ;)
+                        listener: endIfStatement(if, null, ;)
                   notEofOrValue(}, return)
                   parseStatement(;)
                     parseStatementX(;)
@@ -9150,8 +9150,8 @@
                                 ensureSemicolon(42)
                                 listener: endReturnStatement(true, return, ;)
                                 inGenerator()
-                          listener: endThenStatement(;)
-                          listener: endIfStatement(if, null)
+                          listener: endThenStatement(return, ;)
+                          listener: endIfStatement(if, null, ;)
                     notEofOrValue(}, return)
                     parseStatement(;)
                       parseStatementX(;)
@@ -9291,8 +9291,8 @@
                               ensureSemicolon(42)
                               listener: endReturnStatement(true, return, ;)
                               inGenerator()
-                        listener: endThenStatement(;)
-                        listener: endIfStatement(if, null)
+                        listener: endThenStatement(return, ;)
+                        listener: endIfStatement(if, null, ;)
                   notEofOrValue(}, return)
                   parseStatement(;)
                     parseStatementX(;)
@@ -9432,8 +9432,8 @@
                               ensureSemicolon(42)
                               listener: endReturnStatement(true, return, ;)
                               inGenerator()
-                        listener: endThenStatement(;)
-                        listener: endIfStatement(if, null)
+                        listener: endThenStatement(return, ;)
+                        listener: endIfStatement(if, null, ;)
                   notEofOrValue(}, return)
                   parseStatement(;)
                     parseStatementX(;)
@@ -9574,8 +9574,8 @@
                               ensureSemicolon(42)
                               listener: endReturnStatement(true, return, ;)
                               inGenerator()
-                        listener: endThenStatement(;)
-                        listener: endIfStatement(if, null)
+                        listener: endThenStatement(return, ;)
+                        listener: endIfStatement(if, null, ;)
                   notEofOrValue(}, return)
                   parseStatement(;)
                     parseStatementX(;)
@@ -9620,7 +9620,7 @@
                           listener: endBlock(0, {, }, BlockKind(try statement))
                         reportRecoverableError(try, OnlyTry)
                           listener: handleRecoverableError(OnlyTry, try, try)
-                        listener: endTryStatement(0, try, null)
+                        listener: endTryStatement(0, try, null, })
                   notEofOrValue(}, ()
                   parseStatement(})
                     parseStatementX(})
@@ -9754,8 +9754,8 @@
                               ensureSemicolon(42)
                               listener: endReturnStatement(true, return, ;)
                               inGenerator()
-                        listener: endThenStatement(;)
-                        listener: endIfStatement(if, null)
+                        listener: endThenStatement(return, ;)
+                        listener: endIfStatement(if, null, ;)
                   notEofOrValue(}, return)
                   parseStatement(;)
                     parseStatementX(;)
@@ -9902,8 +9902,8 @@
                               ensureSemicolon(42)
                               listener: endReturnStatement(true, return, ;)
                               inGenerator()
-                        listener: endThenStatement(;)
-                        listener: endIfStatement(if, null)
+                        listener: endThenStatement(return, ;)
+                        listener: endIfStatement(if, null, ;)
                   notEofOrValue(}, return)
                   parseStatement(;)
                     parseStatementX(;)
@@ -10141,8 +10141,8 @@
                               ensureSemicolon(42)
                               listener: endReturnStatement(true, return, ;)
                               inGenerator()
-                        listener: endThenStatement(;)
-                        listener: endIfStatement(if, null)
+                        listener: endThenStatement(return, ;)
+                        listener: endIfStatement(if, null, ;)
                   notEofOrValue(}, return)
                   parseStatement(;)
                     parseStatementX(;)
@@ -10381,8 +10381,8 @@
                               ensureSemicolon(42)
                               listener: endReturnStatement(true, return, ;)
                               inGenerator()
-                        listener: endThenStatement(;)
-                        listener: endIfStatement(if, null)
+                        listener: endThenStatement(return, ;)
+                        listener: endIfStatement(if, null, ;)
                   notEofOrValue(}, return)
                   parseStatement(;)
                     parseStatementX(;)
@@ -10566,8 +10566,8 @@
                               ensureSemicolon(42)
                               listener: endReturnStatement(true, return, ;)
                               inGenerator()
-                        listener: endThenStatement(;)
-                        listener: endIfStatement(if, null)
+                        listener: endThenStatement(return, ;)
+                        listener: endIfStatement(if, null, ;)
                   notEofOrValue(}, return)
                   parseStatement(;)
                     parseStatementX(;)
@@ -10709,8 +10709,8 @@
                               ensureSemicolon(42)
                               listener: endReturnStatement(true, return, ;)
                               inGenerator()
-                        listener: endThenStatement(;)
-                        listener: endIfStatement(if, null)
+                        listener: endThenStatement(return, ;)
+                        listener: endIfStatement(if, null, ;)
                   notEofOrValue(}, return)
                   parseStatement(;)
                     parseStatementX(;)
diff --git a/pkg/front_end/parser_testcases/error_recovery/keyword_named_top_level_methods.dart.expect b/pkg/front_end/parser_testcases/error_recovery/keyword_named_top_level_methods.dart.expect
index 1a441f4..282119f 100644
--- a/pkg/front_end/parser_testcases/error_recovery/keyword_named_top_level_methods.dart.expect
+++ b/pkg/front_end/parser_testcases/error_recovery/keyword_named_top_level_methods.dart.expect
@@ -508,8 +508,8 @@
             beginReturnStatement(return)
               handleLiteralInt(42)
             endReturnStatement(true, return, ;)
-          endThenStatement(;)
-        endIfStatement(if, null)
+          endThenStatement(return, ;)
+        endIfStatement(if, null, ;)
         beginReturnStatement(return)
           handleIdentifier(abstract, expression)
           handleNoTypeArguments(()
@@ -565,8 +565,8 @@
             beginReturnStatement(return)
               handleLiteralInt(42)
             endReturnStatement(true, return, ;)
-          endThenStatement(;)
-        endIfStatement(if, null)
+          endThenStatement(return, ;)
+        endIfStatement(if, null, ;)
         beginReturnStatement(return)
           handleIdentifier(as, expression)
           handleNoTypeArguments(()
@@ -623,8 +623,8 @@
             beginReturnStatement(return)
               handleLiteralInt(42)
             endReturnStatement(true, return, ;)
-          endThenStatement(;)
-        endIfStatement(if, null)
+          endThenStatement(return, ;)
+        endIfStatement(if, null, ;)
         beginReturnStatement(return)
           beginAssert(assert, Assert.Expression)
             handleIdentifier(x, expression)
@@ -678,8 +678,8 @@
             beginReturnStatement(return)
               handleLiteralInt(42)
             endReturnStatement(true, return, ;)
-          endThenStatement(;)
-        endIfStatement(if, null)
+          endThenStatement(return, ;)
+        endIfStatement(if, null, ;)
         beginReturnStatement(return)
           handleIdentifier(async, expression)
           handleNoTypeArguments(()
@@ -735,8 +735,8 @@
             beginReturnStatement(return)
               handleLiteralInt(42)
             endReturnStatement(true, return, ;)
-          endThenStatement(;)
-        endIfStatement(if, null)
+          endThenStatement(return, ;)
+        endIfStatement(if, null, ;)
         beginReturnStatement(return)
           handleIdentifier(await, expression)
           handleNoTypeArguments(()
@@ -793,8 +793,8 @@
             beginReturnStatement(return)
               handleLiteralInt(42)
             endReturnStatement(true, return, ;)
-          endThenStatement(;)
-        endIfStatement(if, null)
+          endThenStatement(return, ;)
+        endIfStatement(if, null, ;)
         beginReturnStatement(return)
           handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got 'break'., Try inserting an identifier before 'break'., {lexeme: break}], break, break)
           handleIdentifier(, expression)
@@ -858,8 +858,8 @@
             beginReturnStatement(return)
               handleLiteralInt(42)
             endReturnStatement(true, return, ;)
-          endThenStatement(;)
-        endIfStatement(if, null)
+          endThenStatement(return, ;)
+        endIfStatement(if, null, ;)
         beginReturnStatement(return)
           handleRecoverableError(Message[ExpectedIdentifierButGotKeyword, 'case' can't be used as an identifier because it's a keyword., Try renaming this to be an identifier that isn't a keyword., {lexeme: case}], case, case)
           handleIdentifier(case, expression)
@@ -917,8 +917,8 @@
             beginReturnStatement(return)
               handleLiteralInt(42)
             endReturnStatement(true, return, ;)
-          endThenStatement(;)
-        endIfStatement(if, null)
+          endThenStatement(return, ;)
+        endIfStatement(if, null, ;)
         beginReturnStatement(return)
           handleRecoverableError(Message[ExpectedIdentifierButGotKeyword, 'catch' can't be used as an identifier because it's a keyword., Try renaming this to be an identifier that isn't a keyword., {lexeme: catch}], catch, catch)
           handleIdentifier(catch, expression)
@@ -976,8 +976,8 @@
             beginReturnStatement(return)
               handleLiteralInt(42)
             endReturnStatement(true, return, ;)
-          endThenStatement(;)
-        endIfStatement(if, null)
+          endThenStatement(return, ;)
+        endIfStatement(if, null, ;)
         beginReturnStatement(return)
           handleRecoverableError(Message[ExpectedIdentifierButGotKeyword, 'class' can't be used as an identifier because it's a keyword., Try renaming this to be an identifier that isn't a keyword., {lexeme: class}], class, class)
           handleIdentifier(class, expression)
@@ -1035,8 +1035,8 @@
             beginReturnStatement(return)
               handleLiteralInt(42)
             endReturnStatement(true, return, ;)
-          endThenStatement(;)
-        endIfStatement(if, null)
+          endThenStatement(return, ;)
+        endIfStatement(if, null, ;)
         beginReturnStatement(return)
           beginConstLiteral(()
             beginParenthesizedExpressionOrRecordLiteral(()
@@ -1093,8 +1093,8 @@
             beginReturnStatement(return)
               handleLiteralInt(42)
             endReturnStatement(true, return, ;)
-          endThenStatement(;)
-        endIfStatement(if, null)
+          endThenStatement(return, ;)
+        endIfStatement(if, null, ;)
         beginReturnStatement(return)
           handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got 'continue'., Try inserting an identifier before 'continue'., {lexeme: continue}], continue, continue)
           handleIdentifier(, expression)
@@ -1157,8 +1157,8 @@
             beginReturnStatement(return)
               handleLiteralInt(42)
             endReturnStatement(true, return, ;)
-          endThenStatement(;)
-        endIfStatement(if, null)
+          endThenStatement(return, ;)
+        endIfStatement(if, null, ;)
         beginReturnStatement(return)
           handleIdentifier(covariant, expression)
           handleNoTypeArguments(()
@@ -1215,8 +1215,8 @@
             beginReturnStatement(return)
               handleLiteralInt(42)
             endReturnStatement(true, return, ;)
-          endThenStatement(;)
-        endIfStatement(if, null)
+          endThenStatement(return, ;)
+        endIfStatement(if, null, ;)
         beginReturnStatement(return)
           handleRecoverableError(Message[ExpectedIdentifierButGotKeyword, 'default' can't be used as an identifier because it's a keyword., Try renaming this to be an identifier that isn't a keyword., {lexeme: default}], default, default)
           handleIdentifier(default, expression)
@@ -1273,8 +1273,8 @@
             beginReturnStatement(return)
               handleLiteralInt(42)
             endReturnStatement(true, return, ;)
-          endThenStatement(;)
-        endIfStatement(if, null)
+          endThenStatement(return, ;)
+        endIfStatement(if, null, ;)
         beginReturnStatement(return)
           handleIdentifier(deferred, expression)
           handleNoTypeArguments(()
@@ -1331,8 +1331,8 @@
             beginReturnStatement(return)
               handleLiteralInt(42)
             endReturnStatement(true, return, ;)
-          endThenStatement(;)
-        endIfStatement(if, null)
+          endThenStatement(return, ;)
+        endIfStatement(if, null, ;)
         beginReturnStatement(return)
           handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got 'do'., Try inserting an identifier before 'do'., {lexeme: do}], do, do)
           handleIdentifier(, expression)
@@ -1405,8 +1405,8 @@
             beginReturnStatement(return)
               handleLiteralInt(42)
             endReturnStatement(true, return, ;)
-          endThenStatement(;)
-        endIfStatement(if, null)
+          endThenStatement(return, ;)
+        endIfStatement(if, null, ;)
         beginReturnStatement(return)
           handleIdentifier(dynamic, expression)
           handleNoTypeArguments(()
@@ -1463,8 +1463,8 @@
             beginReturnStatement(return)
               handleLiteralInt(42)
             endReturnStatement(true, return, ;)
-          endThenStatement(;)
-        endIfStatement(if, null)
+          endThenStatement(return, ;)
+        endIfStatement(if, null, ;)
         beginReturnStatement(return)
           handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got 'else'., Try inserting an identifier before 'else'., {lexeme: else}], else, else)
           handleIdentifier(, expression)
@@ -1533,8 +1533,8 @@
             beginReturnStatement(return)
               handleLiteralInt(42)
             endReturnStatement(true, return, ;)
-          endThenStatement(;)
-        endIfStatement(if, null)
+          endThenStatement(return, ;)
+        endIfStatement(if, null, ;)
         beginReturnStatement(return)
           handleRecoverableError(Message[ExpectedIdentifierButGotKeyword, 'enum' can't be used as an identifier because it's a keyword., Try renaming this to be an identifier that isn't a keyword., {lexeme: enum}], enum, enum)
           handleIdentifier(enum, expression)
@@ -1591,8 +1591,8 @@
             beginReturnStatement(return)
               handleLiteralInt(42)
             endReturnStatement(true, return, ;)
-          endThenStatement(;)
-        endIfStatement(if, null)
+          endThenStatement(return, ;)
+        endIfStatement(if, null, ;)
         beginReturnStatement(return)
           handleIdentifier(export, expression)
           handleNoTypeArguments(()
@@ -1649,8 +1649,8 @@
             beginReturnStatement(return)
               handleLiteralInt(42)
             endReturnStatement(true, return, ;)
-          endThenStatement(;)
-        endIfStatement(if, null)
+          endThenStatement(return, ;)
+        endIfStatement(if, null, ;)
         beginReturnStatement(return)
           handleRecoverableError(Message[ExpectedIdentifierButGotKeyword, 'extends' can't be used as an identifier because it's a keyword., Try renaming this to be an identifier that isn't a keyword., {lexeme: extends}], extends, extends)
           handleIdentifier(extends, expression)
@@ -1707,8 +1707,8 @@
             beginReturnStatement(return)
               handleLiteralInt(42)
             endReturnStatement(true, return, ;)
-          endThenStatement(;)
-        endIfStatement(if, null)
+          endThenStatement(return, ;)
+        endIfStatement(if, null, ;)
         beginReturnStatement(return)
           handleIdentifier(extension, expression)
           handleNoTypeArguments(()
@@ -1764,8 +1764,8 @@
             beginReturnStatement(return)
               handleLiteralInt(42)
             endReturnStatement(true, return, ;)
-          endThenStatement(;)
-        endIfStatement(if, null)
+          endThenStatement(return, ;)
+        endIfStatement(if, null, ;)
         beginReturnStatement(return)
           handleIdentifier(external, expression)
           handleNoTypeArguments(()
@@ -1821,8 +1821,8 @@
             beginReturnStatement(return)
               handleLiteralInt(42)
             endReturnStatement(true, return, ;)
-          endThenStatement(;)
-        endIfStatement(if, null)
+          endThenStatement(return, ;)
+        endIfStatement(if, null, ;)
         beginReturnStatement(return)
           handleIdentifier(factory, expression)
           handleNoTypeArguments(()
@@ -1879,8 +1879,8 @@
             beginReturnStatement(return)
               handleLiteralInt(42)
             endReturnStatement(true, return, ;)
-          endThenStatement(;)
-        endIfStatement(if, null)
+          endThenStatement(return, ;)
+        endIfStatement(if, null, ;)
         beginReturnStatement(return)
           handleLiteralBool(false)
           handleNoTypeArguments(()
@@ -1937,8 +1937,8 @@
             beginReturnStatement(return)
               handleLiteralInt(42)
             endReturnStatement(true, return, ;)
-          endThenStatement(;)
-        endIfStatement(if, null)
+          endThenStatement(return, ;)
+        endIfStatement(if, null, ;)
         beginReturnStatement(return)
           handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got 'final'., Try inserting an identifier before 'final'., {lexeme: final}], final, final)
           handleIdentifier(, expression)
@@ -2023,8 +2023,8 @@
             beginReturnStatement(return)
               handleLiteralInt(42)
             endReturnStatement(true, return, ;)
-          endThenStatement(;)
-        endIfStatement(if, null)
+          endThenStatement(return, ;)
+        endIfStatement(if, null, ;)
         beginReturnStatement(return)
           handleRecoverableError(Message[ExpectedIdentifierButGotKeyword, 'finally' can't be used as an identifier because it's a keyword., Try renaming this to be an identifier that isn't a keyword., {lexeme: finally}], finally, finally)
           handleIdentifier(finally, expression)
@@ -2082,8 +2082,8 @@
             beginReturnStatement(return)
               handleLiteralInt(42)
             endReturnStatement(true, return, ;)
-          endThenStatement(;)
-        endIfStatement(if, null)
+          endThenStatement(return, ;)
+        endIfStatement(if, null, ;)
         beginReturnStatement(return)
           handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got 'for'., Try inserting an identifier before 'for'., {lexeme: for}], for, for)
           handleIdentifier(, expression)
@@ -2160,8 +2160,8 @@
             beginReturnStatement(return)
               handleLiteralInt(42)
             endReturnStatement(true, return, ;)
-          endThenStatement(;)
-        endIfStatement(if, null)
+          endThenStatement(return, ;)
+        endIfStatement(if, null, ;)
         beginReturnStatement(return)
           handleIdentifier(Function, expression)
           handleNoTypeArguments(()
@@ -2217,8 +2217,8 @@
             beginReturnStatement(return)
               handleLiteralInt(42)
             endReturnStatement(true, return, ;)
-          endThenStatement(;)
-        endIfStatement(if, null)
+          endThenStatement(return, ;)
+        endIfStatement(if, null, ;)
         beginReturnStatement(return)
           handleIdentifier(get, expression)
           handleNoTypeArguments(()
@@ -2274,8 +2274,8 @@
             beginReturnStatement(return)
               handleLiteralInt(42)
             endReturnStatement(true, return, ;)
-          endThenStatement(;)
-        endIfStatement(if, null)
+          endThenStatement(return, ;)
+        endIfStatement(if, null, ;)
         beginReturnStatement(return)
           handleIdentifier(hide, expression)
           handleNoTypeArguments(()
@@ -2332,8 +2332,8 @@
             beginReturnStatement(return)
               handleLiteralInt(42)
             endReturnStatement(true, return, ;)
-          endThenStatement(;)
-        endIfStatement(if, null)
+          endThenStatement(return, ;)
+        endIfStatement(if, null, ;)
         beginReturnStatement(return)
           handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got 'if'., Try inserting an identifier before 'if'., {lexeme: if}], if, if)
           handleIdentifier(, expression)
@@ -2361,8 +2361,8 @@
               handleLiteralInt(1)
             endBinaryExpression(+)
             handleExpressionStatement(;)
-          endThenStatement(;)
-        endIfStatement(if, null)
+          endThenStatement(+, ;)
+        endIfStatement(if, null, ;)
       endBlockFunctionBody(3, {, })
     endTopLevelMethod(int, null, })
   endTopLevelDeclaration(})
@@ -2401,8 +2401,8 @@
             beginReturnStatement(return)
               handleLiteralInt(42)
             endReturnStatement(true, return, ;)
-          endThenStatement(;)
-        endIfStatement(if, null)
+          endThenStatement(return, ;)
+        endIfStatement(if, null, ;)
         beginReturnStatement(return)
           handleIdentifier(implements, expression)
           handleNoTypeArguments(()
@@ -2458,8 +2458,8 @@
             beginReturnStatement(return)
               handleLiteralInt(42)
             endReturnStatement(true, return, ;)
-          endThenStatement(;)
-        endIfStatement(if, null)
+          endThenStatement(return, ;)
+        endIfStatement(if, null, ;)
         beginReturnStatement(return)
           handleIdentifier(import, expression)
           handleNoTypeArguments(()
@@ -2516,8 +2516,8 @@
             beginReturnStatement(return)
               handleLiteralInt(42)
             endReturnStatement(true, return, ;)
-          endThenStatement(;)
-        endIfStatement(if, null)
+          endThenStatement(return, ;)
+        endIfStatement(if, null, ;)
         beginReturnStatement(return)
           handleRecoverableError(Message[ExpectedIdentifierButGotKeyword, 'in' can't be used as an identifier because it's a keyword., Try renaming this to be an identifier that isn't a keyword., {lexeme: in}], in, in)
           handleIdentifier(in, expression)
@@ -2574,8 +2574,8 @@
             beginReturnStatement(return)
               handleLiteralInt(42)
             endReturnStatement(true, return, ;)
-          endThenStatement(;)
-        endIfStatement(if, null)
+          endThenStatement(return, ;)
+        endIfStatement(if, null, ;)
         beginReturnStatement(return)
           handleIdentifier(inout, expression)
           handleNoTypeArguments(()
@@ -2631,8 +2631,8 @@
             beginReturnStatement(return)
               handleLiteralInt(42)
             endReturnStatement(true, return, ;)
-          endThenStatement(;)
-        endIfStatement(if, null)
+          endThenStatement(return, ;)
+        endIfStatement(if, null, ;)
         beginReturnStatement(return)
           handleIdentifier(interface, expression)
           handleNoTypeArguments(()
@@ -2689,8 +2689,8 @@
             beginReturnStatement(return)
               handleLiteralInt(42)
             endReturnStatement(true, return, ;)
-          endThenStatement(;)
-        endIfStatement(if, null)
+          endThenStatement(return, ;)
+        endIfStatement(if, null, ;)
         beginReturnStatement(return)
           handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got 'is'., Try inserting an identifier before 'is'., {lexeme: is}], is, is)
           handleIdentifier(, expression)
@@ -2761,8 +2761,8 @@
             beginReturnStatement(return)
               handleLiteralInt(42)
             endReturnStatement(true, return, ;)
-          endThenStatement(;)
-        endIfStatement(if, null)
+          endThenStatement(return, ;)
+        endIfStatement(if, null, ;)
         beginReturnStatement(return)
           handleIdentifier(late, expression)
           handleNoTypeArguments(()
@@ -2818,8 +2818,8 @@
             beginReturnStatement(return)
               handleLiteralInt(42)
             endReturnStatement(true, return, ;)
-          endThenStatement(;)
-        endIfStatement(if, null)
+          endThenStatement(return, ;)
+        endIfStatement(if, null, ;)
         beginReturnStatement(return)
           handleIdentifier(library, expression)
           handleNoTypeArguments(()
@@ -2875,8 +2875,8 @@
             beginReturnStatement(return)
               handleLiteralInt(42)
             endReturnStatement(true, return, ;)
-          endThenStatement(;)
-        endIfStatement(if, null)
+          endThenStatement(return, ;)
+        endIfStatement(if, null, ;)
         beginReturnStatement(return)
           handleIdentifier(mixin, expression)
           handleNoTypeArguments(()
@@ -2932,8 +2932,8 @@
             beginReturnStatement(return)
               handleLiteralInt(42)
             endReturnStatement(true, return, ;)
-          endThenStatement(;)
-        endIfStatement(if, null)
+          endThenStatement(return, ;)
+        endIfStatement(if, null, ;)
         beginReturnStatement(return)
           handleIdentifier(native, expression)
           handleNoTypeArguments(()
@@ -2990,8 +2990,8 @@
             beginReturnStatement(return)
               handleLiteralInt(42)
             endReturnStatement(true, return, ;)
-          endThenStatement(;)
-        endIfStatement(if, null)
+          endThenStatement(return, ;)
+        endIfStatement(if, null, ;)
         beginReturnStatement(return)
           beginNewExpression(new)
             handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got '('., Try inserting an identifier before '('., {lexeme: (}], (, ()
@@ -3053,8 +3053,8 @@
             beginReturnStatement(return)
               handleLiteralInt(42)
             endReturnStatement(true, return, ;)
-          endThenStatement(;)
-        endIfStatement(if, null)
+          endThenStatement(return, ;)
+        endIfStatement(if, null, ;)
         beginReturnStatement(return)
           handleLiteralNull(null)
           handleNoTypeArguments(()
@@ -3110,8 +3110,8 @@
             beginReturnStatement(return)
               handleLiteralInt(42)
             endReturnStatement(true, return, ;)
-          endThenStatement(;)
-        endIfStatement(if, null)
+          endThenStatement(return, ;)
+        endIfStatement(if, null, ;)
         beginReturnStatement(return)
           handleIdentifier(of, expression)
           handleNoTypeArguments(()
@@ -3167,8 +3167,8 @@
             beginReturnStatement(return)
               handleLiteralInt(42)
             endReturnStatement(true, return, ;)
-          endThenStatement(;)
-        endIfStatement(if, null)
+          endThenStatement(return, ;)
+        endIfStatement(if, null, ;)
         beginReturnStatement(return)
           handleIdentifier(on, expression)
           handleNoTypeArguments(()
@@ -3224,8 +3224,8 @@
             beginReturnStatement(return)
               handleLiteralInt(42)
             endReturnStatement(true, return, ;)
-          endThenStatement(;)
-        endIfStatement(if, null)
+          endThenStatement(return, ;)
+        endIfStatement(if, null, ;)
         beginReturnStatement(return)
           handleIdentifier(operator, expression)
           handleNoTypeArguments(()
@@ -3281,8 +3281,8 @@
             beginReturnStatement(return)
               handleLiteralInt(42)
             endReturnStatement(true, return, ;)
-          endThenStatement(;)
-        endIfStatement(if, null)
+          endThenStatement(return, ;)
+        endIfStatement(if, null, ;)
         beginReturnStatement(return)
           handleIdentifier(out, expression)
           handleNoTypeArguments(()
@@ -3338,8 +3338,8 @@
             beginReturnStatement(return)
               handleLiteralInt(42)
             endReturnStatement(true, return, ;)
-          endThenStatement(;)
-        endIfStatement(if, null)
+          endThenStatement(return, ;)
+        endIfStatement(if, null, ;)
         beginReturnStatement(return)
           handleIdentifier(part, expression)
           handleNoTypeArguments(()
@@ -3395,8 +3395,8 @@
             beginReturnStatement(return)
               handleLiteralInt(42)
             endReturnStatement(true, return, ;)
-          endThenStatement(;)
-        endIfStatement(if, null)
+          endThenStatement(return, ;)
+        endIfStatement(if, null, ;)
         beginReturnStatement(return)
           handleIdentifier(patch, expression)
           handleNoTypeArguments(()
@@ -3452,8 +3452,8 @@
             beginReturnStatement(return)
               handleLiteralInt(42)
             endReturnStatement(true, return, ;)
-          endThenStatement(;)
-        endIfStatement(if, null)
+          endThenStatement(return, ;)
+        endIfStatement(if, null, ;)
         beginReturnStatement(return)
           handleIdentifier(required, expression)
           handleNoTypeArguments(()
@@ -3510,8 +3510,8 @@
             beginReturnStatement(return)
               handleLiteralInt(42)
             endReturnStatement(true, return, ;)
-          endThenStatement(;)
-        endIfStatement(if, null)
+          endThenStatement(return, ;)
+        endIfStatement(if, null, ;)
         beginReturnStatement(return)
           handleRecoverableError(Message[ExpectedIdentifierButGotKeyword, 'rethrow' can't be used as an identifier because it's a keyword., Try renaming this to be an identifier that isn't a keyword., {lexeme: rethrow}], rethrow, rethrow)
           handleIdentifier(rethrow, expression)
@@ -3569,8 +3569,8 @@
             beginReturnStatement(return)
               handleLiteralInt(42)
             endReturnStatement(true, return, ;)
-          endThenStatement(;)
-        endIfStatement(if, null)
+          endThenStatement(return, ;)
+        endIfStatement(if, null, ;)
         beginReturnStatement(return)
           handleRecoverableError(Message[UnexpectedToken, Unexpected token 'return'., null, {lexeme: return}], return, return)
           beginParenthesizedExpressionOrRecordLiteral(()
@@ -3624,8 +3624,8 @@
             beginReturnStatement(return)
               handleLiteralInt(42)
             endReturnStatement(true, return, ;)
-          endThenStatement(;)
-        endIfStatement(if, null)
+          endThenStatement(return, ;)
+        endIfStatement(if, null, ;)
         beginReturnStatement(return)
           handleIdentifier(set, expression)
           handleNoTypeArguments(()
@@ -3681,8 +3681,8 @@
             beginReturnStatement(return)
               handleLiteralInt(42)
             endReturnStatement(true, return, ;)
-          endThenStatement(;)
-        endIfStatement(if, null)
+          endThenStatement(return, ;)
+        endIfStatement(if, null, ;)
         beginReturnStatement(return)
           handleIdentifier(show, expression)
           handleNoTypeArguments(()
@@ -3738,8 +3738,8 @@
             beginReturnStatement(return)
               handleLiteralInt(42)
             endReturnStatement(true, return, ;)
-          endThenStatement(;)
-        endIfStatement(if, null)
+          endThenStatement(return, ;)
+        endIfStatement(if, null, ;)
         beginReturnStatement(return)
           handleIdentifier(source, expression)
           handleNoTypeArguments(()
@@ -3795,8 +3795,8 @@
             beginReturnStatement(return)
               handleLiteralInt(42)
             endReturnStatement(true, return, ;)
-          endThenStatement(;)
-        endIfStatement(if, null)
+          endThenStatement(return, ;)
+        endIfStatement(if, null, ;)
         beginReturnStatement(return)
           handleIdentifier(static, expression)
           handleNoTypeArguments(()
@@ -3853,8 +3853,8 @@
             beginReturnStatement(return)
               handleLiteralInt(42)
             endReturnStatement(true, return, ;)
-          endThenStatement(;)
-        endIfStatement(if, null)
+          endThenStatement(return, ;)
+        endIfStatement(if, null, ;)
         beginReturnStatement(return)
           handleSuperExpression(super, expression)
           handleNoTypeArguments(()
@@ -3911,8 +3911,8 @@
             beginReturnStatement(return)
               handleLiteralInt(42)
             endReturnStatement(true, return, ;)
-          endThenStatement(;)
-        endIfStatement(if, null)
+          endThenStatement(return, ;)
+        endIfStatement(if, null, ;)
         beginReturnStatement(return)
           handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got 'switch'., Try inserting an identifier before 'switch'., {lexeme: switch}], switch, switch)
           handleIdentifier(, expression)
@@ -3981,8 +3981,8 @@
             beginReturnStatement(return)
               handleLiteralInt(42)
             endReturnStatement(true, return, ;)
-          endThenStatement(;)
-        endIfStatement(if, null)
+          endThenStatement(return, ;)
+        endIfStatement(if, null, ;)
         beginReturnStatement(return)
           handleIdentifier(sync, expression)
           handleNoTypeArguments(()
@@ -4039,8 +4039,8 @@
             beginReturnStatement(return)
               handleLiteralInt(42)
             endReturnStatement(true, return, ;)
-          endThenStatement(;)
-        endIfStatement(if, null)
+          endThenStatement(return, ;)
+        endIfStatement(if, null, ;)
         beginReturnStatement(return)
           handleThisExpression(this, expression)
           handleNoTypeArguments(()
@@ -4097,8 +4097,8 @@
             beginReturnStatement(return)
               handleLiteralInt(42)
             endReturnStatement(true, return, ;)
-          endThenStatement(;)
-        endIfStatement(if, null)
+          endThenStatement(return, ;)
+        endIfStatement(if, null, ;)
         beginReturnStatement(return)
           beginParenthesizedExpressionOrRecordLiteral(()
             handleIdentifier(x, expression)
@@ -4153,8 +4153,8 @@
             beginReturnStatement(return)
               handleLiteralInt(42)
             endReturnStatement(true, return, ;)
-          endThenStatement(;)
-        endIfStatement(if, null)
+          endThenStatement(return, ;)
+        endIfStatement(if, null, ;)
         beginReturnStatement(return)
           handleLiteralBool(true)
           handleNoTypeArguments(()
@@ -4211,8 +4211,8 @@
             beginReturnStatement(return)
               handleLiteralInt(42)
             endReturnStatement(true, return, ;)
-          endThenStatement(;)
-        endIfStatement(if, null)
+          endThenStatement(return, ;)
+        endIfStatement(if, null, ;)
         beginReturnStatement(return)
           handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got 'try'., Try inserting an identifier before 'try'., {lexeme: try}], try, try)
           handleIdentifier(, expression)
@@ -4226,7 +4226,7 @@
           beginBlock({, BlockKind(try statement))
           endBlock(0, {, }, BlockKind(try statement))
           handleRecoverableError(OnlyTry, try, try)
-        endTryStatement(0, try, null)
+        endTryStatement(0, try, null, })
         beginParenthesizedExpressionOrRecordLiteral(()
           handleIdentifier(x, expression)
           handleNoTypeArguments(-)
@@ -4278,8 +4278,8 @@
             beginReturnStatement(return)
               handleLiteralInt(42)
             endReturnStatement(true, return, ;)
-          endThenStatement(;)
-        endIfStatement(if, null)
+          endThenStatement(return, ;)
+        endIfStatement(if, null, ;)
         beginReturnStatement(return)
           handleIdentifier(typedef, expression)
           handleNoTypeArguments(()
@@ -4336,8 +4336,8 @@
             beginReturnStatement(return)
               handleLiteralInt(42)
             endReturnStatement(true, return, ;)
-          endThenStatement(;)
-        endIfStatement(if, null)
+          endThenStatement(return, ;)
+        endIfStatement(if, null, ;)
         beginReturnStatement(return)
           handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got 'var'., Try inserting an identifier before 'var'., {lexeme: var}], var, var)
           handleIdentifier(, expression)
@@ -4422,8 +4422,8 @@
             beginReturnStatement(return)
               handleLiteralInt(42)
             endReturnStatement(true, return, ;)
-          endThenStatement(;)
-        endIfStatement(if, null)
+          endThenStatement(return, ;)
+        endIfStatement(if, null, ;)
         beginReturnStatement(return)
           handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got 'void'., Try inserting an identifier before 'void'., {lexeme: void}], void, void)
           handleIdentifier(, expression)
@@ -4508,8 +4508,8 @@
             beginReturnStatement(return)
               handleLiteralInt(42)
             endReturnStatement(true, return, ;)
-          endThenStatement(;)
-        endIfStatement(if, null)
+          endThenStatement(return, ;)
+        endIfStatement(if, null, ;)
         beginReturnStatement(return)
           handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got 'while'., Try inserting an identifier before 'while'., {lexeme: while}], while, while)
           handleIdentifier(, expression)
@@ -4578,8 +4578,8 @@
             beginReturnStatement(return)
               handleLiteralInt(42)
             endReturnStatement(true, return, ;)
-          endThenStatement(;)
-        endIfStatement(if, null)
+          endThenStatement(return, ;)
+        endIfStatement(if, null, ;)
         beginReturnStatement(return)
           handleRecoverableError(Message[ExpectedIdentifierButGotKeyword, 'with' can't be used as an identifier because it's a keyword., Try renaming this to be an identifier that isn't a keyword., {lexeme: with}], with, with)
           handleIdentifier(with, expression)
@@ -4636,8 +4636,8 @@
             beginReturnStatement(return)
               handleLiteralInt(42)
             endReturnStatement(true, return, ;)
-          endThenStatement(;)
-        endIfStatement(if, null)
+          endThenStatement(return, ;)
+        endIfStatement(if, null, ;)
         beginReturnStatement(return)
           handleIdentifier(yield, expression)
           handleNoTypeArguments(()
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 571a340..7088dc6 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
@@ -82,8 +82,8 @@
                       ensureSemicolon(42)
                       listener: endReturnStatement(true, return, ;)
                       inGenerator()
-                listener: endThenStatement(;)
-                listener: endIfStatement(if, null)
+                listener: endThenStatement(return, ;)
+                listener: endIfStatement(if, null, ;)
           notEofOrValue(}, return)
           parseStatement(;)
             parseStatementX(;)
@@ -222,8 +222,8 @@
                       ensureSemicolon(42)
                       listener: endReturnStatement(true, return, ;)
                       inGenerator()
-                listener: endThenStatement(;)
-                listener: endIfStatement(if, null)
+                listener: endThenStatement(return, ;)
+                listener: endIfStatement(if, null, ;)
           notEofOrValue(}, return)
           parseStatement(;)
             parseStatementX(;)
@@ -366,8 +366,8 @@
                       ensureSemicolon(42)
                       listener: endReturnStatement(true, return, ;)
                       inGenerator()
-                listener: endThenStatement(;)
-                listener: endIfStatement(if, null)
+                listener: endThenStatement(return, ;)
+                listener: endIfStatement(if, null, ;)
           notEofOrValue(}, return)
           parseStatement(;)
             parseStatementX(;)
@@ -497,8 +497,8 @@
                       ensureSemicolon(42)
                       listener: endReturnStatement(true, return, ;)
                       inGenerator()
-                listener: endThenStatement(;)
-                listener: endIfStatement(if, null)
+                listener: endThenStatement(return, ;)
+                listener: endIfStatement(if, null, ;)
           notEofOrValue(}, return)
           parseStatement(;)
             parseStatementX(;)
@@ -637,8 +637,8 @@
                       ensureSemicolon(42)
                       listener: endReturnStatement(true, return, ;)
                       inGenerator()
-                listener: endThenStatement(;)
-                listener: endIfStatement(if, null)
+                listener: endThenStatement(return, ;)
+                listener: endIfStatement(if, null, ;)
           notEofOrValue(}, return)
           parseStatement(;)
             parseStatementX(;)
@@ -784,8 +784,8 @@
                       ensureSemicolon(42)
                       listener: endReturnStatement(true, return, ;)
                       inGenerator()
-                listener: endThenStatement(;)
-                listener: endIfStatement(if, null)
+                listener: endThenStatement(return, ;)
+                listener: endIfStatement(if, null, ;)
           notEofOrValue(}, return)
           parseStatement(;)
             parseStatementX(;)
@@ -958,8 +958,8 @@
                       ensureSemicolon(42)
                       listener: endReturnStatement(true, return, ;)
                       inGenerator()
-                listener: endThenStatement(;)
-                listener: endIfStatement(if, null)
+                listener: endThenStatement(return, ;)
+                listener: endIfStatement(if, null, ;)
           notEofOrValue(}, return)
           parseStatement(;)
             parseStatementX(;)
@@ -1101,8 +1101,8 @@
                       ensureSemicolon(42)
                       listener: endReturnStatement(true, return, ;)
                       inGenerator()
-                listener: endThenStatement(;)
-                listener: endIfStatement(if, null)
+                listener: endThenStatement(return, ;)
+                listener: endIfStatement(if, null, ;)
           notEofOrValue(}, return)
           parseStatement(;)
             parseStatementX(;)
@@ -1244,8 +1244,8 @@
                       ensureSemicolon(42)
                       listener: endReturnStatement(true, return, ;)
                       inGenerator()
-                listener: endThenStatement(;)
-                listener: endIfStatement(if, null)
+                listener: endThenStatement(return, ;)
+                listener: endIfStatement(if, null, ;)
           notEofOrValue(}, return)
           parseStatement(;)
             parseStatementX(;)
@@ -1387,8 +1387,8 @@
                       ensureSemicolon(42)
                       listener: endReturnStatement(true, return, ;)
                       inGenerator()
-                listener: endThenStatement(;)
-                listener: endIfStatement(if, null)
+                listener: endThenStatement(return, ;)
+                listener: endIfStatement(if, null, ;)
           notEofOrValue(}, return)
           parseStatement(;)
             parseStatementX(;)
@@ -1525,8 +1525,8 @@
                       ensureSemicolon(42)
                       listener: endReturnStatement(true, return, ;)
                       inGenerator()
-                listener: endThenStatement(;)
-                listener: endIfStatement(if, null)
+                listener: endThenStatement(return, ;)
+                listener: endIfStatement(if, null, ;)
           notEofOrValue(}, return)
           parseStatement(;)
             parseStatementX(;)
@@ -1695,8 +1695,8 @@
                       ensureSemicolon(42)
                       listener: endReturnStatement(true, return, ;)
                       inGenerator()
-                listener: endThenStatement(;)
-                listener: endIfStatement(if, null)
+                listener: endThenStatement(return, ;)
+                listener: endIfStatement(if, null, ;)
           notEofOrValue(}, return)
           parseStatement(;)
             parseStatementX(;)
@@ -1839,8 +1839,8 @@
                       ensureSemicolon(42)
                       listener: endReturnStatement(true, return, ;)
                       inGenerator()
-                listener: endThenStatement(;)
-                listener: endIfStatement(if, null)
+                listener: endThenStatement(return, ;)
+                listener: endIfStatement(if, null, ;)
           notEofOrValue(}, return)
           parseStatement(;)
             parseStatementX(;)
@@ -1978,8 +1978,8 @@
                       ensureSemicolon(42)
                       listener: endReturnStatement(true, return, ;)
                       inGenerator()
-                listener: endThenStatement(;)
-                listener: endIfStatement(if, null)
+                listener: endThenStatement(return, ;)
+                listener: endIfStatement(if, null, ;)
           notEofOrValue(}, return)
           parseStatement(;)
             parseStatementX(;)
@@ -2122,8 +2122,8 @@
                       ensureSemicolon(42)
                       listener: endReturnStatement(true, return, ;)
                       inGenerator()
-                listener: endThenStatement(;)
-                listener: endIfStatement(if, null)
+                listener: endThenStatement(return, ;)
+                listener: endIfStatement(if, null, ;)
           notEofOrValue(}, return)
           parseStatement(;)
             parseStatementX(;)
@@ -2316,8 +2316,8 @@
                       ensureSemicolon(42)
                       listener: endReturnStatement(true, return, ;)
                       inGenerator()
-                listener: endThenStatement(;)
-                listener: endIfStatement(if, null)
+                listener: endThenStatement(return, ;)
+                listener: endIfStatement(if, null, ;)
           notEofOrValue(}, return)
           parseStatement(;)
             parseStatementX(;)
@@ -2460,8 +2460,8 @@
                       ensureSemicolon(42)
                       listener: endReturnStatement(true, return, ;)
                       inGenerator()
-                listener: endThenStatement(;)
-                listener: endIfStatement(if, null)
+                listener: endThenStatement(return, ;)
+                listener: endIfStatement(if, null, ;)
           notEofOrValue(}, return)
           parseStatement(;)
             parseStatementX(;)
@@ -2652,8 +2652,8 @@
                       ensureSemicolon(42)
                       listener: endReturnStatement(true, return, ;)
                       inGenerator()
-                listener: endThenStatement(;)
-                listener: endIfStatement(if, null)
+                listener: endThenStatement(return, ;)
+                listener: endIfStatement(if, null, ;)
           notEofOrValue(}, return)
           parseStatement(;)
             parseStatementX(;)
@@ -2791,8 +2791,8 @@
                       ensureSemicolon(42)
                       listener: endReturnStatement(true, return, ;)
                       inGenerator()
-                listener: endThenStatement(;)
-                listener: endIfStatement(if, null)
+                listener: endThenStatement(return, ;)
+                listener: endIfStatement(if, null, ;)
           notEofOrValue(}, return)
           parseStatement(;)
             parseStatementX(;)
@@ -2935,8 +2935,8 @@
                       ensureSemicolon(42)
                       listener: endReturnStatement(true, return, ;)
                       inGenerator()
-                listener: endThenStatement(;)
-                listener: endIfStatement(if, null)
+                listener: endThenStatement(return, ;)
+                listener: endIfStatement(if, null, ;)
           notEofOrValue(}, return)
           parseStatement(;)
             parseStatementX(;)
@@ -3074,8 +3074,8 @@
                       ensureSemicolon(42)
                       listener: endReturnStatement(true, return, ;)
                       inGenerator()
-                listener: endThenStatement(;)
-                listener: endIfStatement(if, null)
+                listener: endThenStatement(return, ;)
+                listener: endIfStatement(if, null, ;)
           notEofOrValue(}, return)
           parseStatement(;)
             parseStatementX(;)
@@ -3214,8 +3214,8 @@
                       ensureSemicolon(42)
                       listener: endReturnStatement(true, return, ;)
                       inGenerator()
-                listener: endThenStatement(;)
-                listener: endIfStatement(if, null)
+                listener: endThenStatement(return, ;)
+                listener: endIfStatement(if, null, ;)
           notEofOrValue(}, return)
           parseStatement(;)
             parseStatementX(;)
@@ -3354,8 +3354,8 @@
                       ensureSemicolon(42)
                       listener: endReturnStatement(true, return, ;)
                       inGenerator()
-                listener: endThenStatement(;)
-                listener: endIfStatement(if, null)
+                listener: endThenStatement(return, ;)
+                listener: endIfStatement(if, null, ;)
           notEofOrValue(}, return)
           parseStatement(;)
             parseStatementX(;)
@@ -3498,8 +3498,8 @@
                       ensureSemicolon(42)
                       listener: endReturnStatement(true, return, ;)
                       inGenerator()
-                listener: endThenStatement(;)
-                listener: endIfStatement(if, null)
+                listener: endThenStatement(return, ;)
+                listener: endIfStatement(if, null, ;)
           notEofOrValue(}, return)
           parseStatement(;)
             parseStatementX(;)
@@ -3636,8 +3636,8 @@
                       ensureSemicolon(42)
                       listener: endReturnStatement(true, return, ;)
                       inGenerator()
-                listener: endThenStatement(;)
-                listener: endIfStatement(if, null)
+                listener: endThenStatement(return, ;)
+                listener: endIfStatement(if, null, ;)
           notEofOrValue(}, return)
           parseStatement(;)
             parseStatementX(;)
@@ -3871,8 +3871,8 @@
                       ensureSemicolon(42)
                       listener: endReturnStatement(true, return, ;)
                       inGenerator()
-                listener: endThenStatement(;)
-                listener: endIfStatement(if, null)
+                listener: endThenStatement(return, ;)
+                listener: endIfStatement(if, null, ;)
           notEofOrValue(}, return)
           parseStatement(;)
             parseStatementX(;)
@@ -4014,8 +4014,8 @@
                       ensureSemicolon(42)
                       listener: endReturnStatement(true, return, ;)
                       inGenerator()
-                listener: endThenStatement(;)
-                listener: endIfStatement(if, null)
+                listener: endThenStatement(return, ;)
+                listener: endIfStatement(if, null, ;)
           notEofOrValue(}, return)
           parseStatement(;)
             parseStatementX(;)
@@ -4220,8 +4220,8 @@
                       ensureSemicolon(42)
                       listener: endReturnStatement(true, return, ;)
                       inGenerator()
-                listener: endThenStatement(;)
-                listener: endIfStatement(if, null)
+                listener: endThenStatement(return, ;)
+                listener: endIfStatement(if, null, ;)
           notEofOrValue(}, return)
           parseStatement(;)
             parseStatementX(;)
@@ -4360,8 +4360,8 @@
                       ensureSemicolon(42)
                       listener: endReturnStatement(true, return, ;)
                       inGenerator()
-                listener: endThenStatement(;)
-                listener: endIfStatement(if, null)
+                listener: endThenStatement(return, ;)
+                listener: endIfStatement(if, null, ;)
           notEofOrValue(}, return)
           parseStatement(;)
             parseStatementX(;)
@@ -4500,8 +4500,8 @@
                       ensureSemicolon(42)
                       listener: endReturnStatement(true, return, ;)
                       inGenerator()
-                listener: endThenStatement(;)
-                listener: endIfStatement(if, null)
+                listener: endThenStatement(return, ;)
+                listener: endIfStatement(if, null, ;)
           notEofOrValue(}, return)
           parseStatement(;)
             parseStatementX(;)
@@ -4644,8 +4644,8 @@
                       ensureSemicolon(42)
                       listener: endReturnStatement(true, return, ;)
                       inGenerator()
-                listener: endThenStatement(;)
-                listener: endIfStatement(if, null)
+                listener: endThenStatement(return, ;)
+                listener: endIfStatement(if, null, ;)
           notEofOrValue(}, return)
           parseStatement(;)
             parseStatementX(;)
@@ -4735,8 +4735,8 @@
                               listener: endBinaryExpression(+)
                           ensureSemicolon(1)
                           listener: handleExpressionStatement(;)
-                listener: endThenStatement(;)
-                listener: endIfStatement(if, null)
+                listener: endThenStatement(+, ;)
+                listener: endIfStatement(if, null, ;)
           notEofOrValue(}, })
           listener: endBlockFunctionBody(3, {, })
         listener: endTopLevelMethod(int, null, })
@@ -4821,8 +4821,8 @@
                       ensureSemicolon(42)
                       listener: endReturnStatement(true, return, ;)
                       inGenerator()
-                listener: endThenStatement(;)
-                listener: endIfStatement(if, null)
+                listener: endThenStatement(return, ;)
+                listener: endIfStatement(if, null, ;)
           notEofOrValue(}, return)
           parseStatement(;)
             parseStatementX(;)
@@ -4961,8 +4961,8 @@
                       ensureSemicolon(42)
                       listener: endReturnStatement(true, return, ;)
                       inGenerator()
-                listener: endThenStatement(;)
-                listener: endIfStatement(if, null)
+                listener: endThenStatement(return, ;)
+                listener: endIfStatement(if, null, ;)
           notEofOrValue(}, return)
           parseStatement(;)
             parseStatementX(;)
@@ -5105,8 +5105,8 @@
                       ensureSemicolon(42)
                       listener: endReturnStatement(true, return, ;)
                       inGenerator()
-                listener: endThenStatement(;)
-                listener: endIfStatement(if, null)
+                listener: endThenStatement(return, ;)
+                listener: endIfStatement(if, null, ;)
           notEofOrValue(}, return)
           parseStatement(;)
             parseStatementX(;)
@@ -5244,8 +5244,8 @@
                       ensureSemicolon(42)
                       listener: endReturnStatement(true, return, ;)
                       inGenerator()
-                listener: endThenStatement(;)
-                listener: endIfStatement(if, null)
+                listener: endThenStatement(return, ;)
+                listener: endIfStatement(if, null, ;)
           notEofOrValue(}, return)
           parseStatement(;)
             parseStatementX(;)
@@ -5384,8 +5384,8 @@
                       ensureSemicolon(42)
                       listener: endReturnStatement(true, return, ;)
                       inGenerator()
-                listener: endThenStatement(;)
-                listener: endIfStatement(if, null)
+                listener: endThenStatement(return, ;)
+                listener: endIfStatement(if, null, ;)
           notEofOrValue(}, return)
           parseStatement(;)
             parseStatementX(;)
@@ -5528,8 +5528,8 @@
                       ensureSemicolon(42)
                       listener: endReturnStatement(true, return, ;)
                       inGenerator()
-                listener: endThenStatement(;)
-                listener: endIfStatement(if, null)
+                listener: endThenStatement(return, ;)
+                listener: endIfStatement(if, null, ;)
           notEofOrValue(}, return)
           parseStatement(;)
             parseStatementX(;)
@@ -5698,8 +5698,8 @@
                       ensureSemicolon(42)
                       listener: endReturnStatement(true, return, ;)
                       inGenerator()
-                listener: endThenStatement(;)
-                listener: endIfStatement(if, null)
+                listener: endThenStatement(return, ;)
+                listener: endIfStatement(if, null, ;)
           notEofOrValue(}, return)
           parseStatement(;)
             parseStatementX(;)
@@ -5838,8 +5838,8 @@
                       ensureSemicolon(42)
                       listener: endReturnStatement(true, return, ;)
                       inGenerator()
-                listener: endThenStatement(;)
-                listener: endIfStatement(if, null)
+                listener: endThenStatement(return, ;)
+                listener: endIfStatement(if, null, ;)
           notEofOrValue(}, return)
           parseStatement(;)
             parseStatementX(;)
@@ -5978,8 +5978,8 @@
                       ensureSemicolon(42)
                       listener: endReturnStatement(true, return, ;)
                       inGenerator()
-                listener: endThenStatement(;)
-                listener: endIfStatement(if, null)
+                listener: endThenStatement(return, ;)
+                listener: endIfStatement(if, null, ;)
           notEofOrValue(}, return)
           parseStatement(;)
             parseStatementX(;)
@@ -6118,8 +6118,8 @@
                       ensureSemicolon(42)
                       listener: endReturnStatement(true, return, ;)
                       inGenerator()
-                listener: endThenStatement(;)
-                listener: endIfStatement(if, null)
+                listener: endThenStatement(return, ;)
+                listener: endIfStatement(if, null, ;)
           notEofOrValue(}, return)
           parseStatement(;)
             parseStatementX(;)
@@ -6262,8 +6262,8 @@
                       ensureSemicolon(42)
                       listener: endReturnStatement(true, return, ;)
                       inGenerator()
-                listener: endThenStatement(;)
-                listener: endIfStatement(if, null)
+                listener: endThenStatement(return, ;)
+                listener: endIfStatement(if, null, ;)
           notEofOrValue(}, return)
           parseStatement(;)
             parseStatementX(;)
@@ -6411,8 +6411,8 @@
                       ensureSemicolon(42)
                       listener: endReturnStatement(true, return, ;)
                       inGenerator()
-                listener: endThenStatement(;)
-                listener: endIfStatement(if, null)
+                listener: endThenStatement(return, ;)
+                listener: endIfStatement(if, null, ;)
           notEofOrValue(}, return)
           parseStatement(;)
             parseStatementX(;)
@@ -6545,8 +6545,8 @@
                       ensureSemicolon(42)
                       listener: endReturnStatement(true, return, ;)
                       inGenerator()
-                listener: endThenStatement(;)
-                listener: endIfStatement(if, null)
+                listener: endThenStatement(return, ;)
+                listener: endIfStatement(if, null, ;)
           notEofOrValue(}, return)
           parseStatement(;)
             parseStatementX(;)
@@ -6685,8 +6685,8 @@
                       ensureSemicolon(42)
                       listener: endReturnStatement(true, return, ;)
                       inGenerator()
-                listener: endThenStatement(;)
-                listener: endIfStatement(if, null)
+                listener: endThenStatement(return, ;)
+                listener: endIfStatement(if, null, ;)
           notEofOrValue(}, return)
           parseStatement(;)
             parseStatementX(;)
@@ -6825,8 +6825,8 @@
                       ensureSemicolon(42)
                       listener: endReturnStatement(true, return, ;)
                       inGenerator()
-                listener: endThenStatement(;)
-                listener: endIfStatement(if, null)
+                listener: endThenStatement(return, ;)
+                listener: endIfStatement(if, null, ;)
           notEofOrValue(}, return)
           parseStatement(;)
             parseStatementX(;)
@@ -6965,8 +6965,8 @@
                       ensureSemicolon(42)
                       listener: endReturnStatement(true, return, ;)
                       inGenerator()
-                listener: endThenStatement(;)
-                listener: endIfStatement(if, null)
+                listener: endThenStatement(return, ;)
+                listener: endIfStatement(if, null, ;)
           notEofOrValue(}, return)
           parseStatement(;)
             parseStatementX(;)
@@ -7105,8 +7105,8 @@
                       ensureSemicolon(42)
                       listener: endReturnStatement(true, return, ;)
                       inGenerator()
-                listener: endThenStatement(;)
-                listener: endIfStatement(if, null)
+                listener: endThenStatement(return, ;)
+                listener: endIfStatement(if, null, ;)
           notEofOrValue(}, return)
           parseStatement(;)
             parseStatementX(;)
@@ -7245,8 +7245,8 @@
                       ensureSemicolon(42)
                       listener: endReturnStatement(true, return, ;)
                       inGenerator()
-                listener: endThenStatement(;)
-                listener: endIfStatement(if, null)
+                listener: endThenStatement(return, ;)
+                listener: endIfStatement(if, null, ;)
           notEofOrValue(}, return)
           parseStatement(;)
             parseStatementX(;)
@@ -7385,8 +7385,8 @@
                       ensureSemicolon(42)
                       listener: endReturnStatement(true, return, ;)
                       inGenerator()
-                listener: endThenStatement(;)
-                listener: endIfStatement(if, null)
+                listener: endThenStatement(return, ;)
+                listener: endIfStatement(if, null, ;)
           notEofOrValue(}, return)
           parseStatement(;)
             parseStatementX(;)
@@ -7529,8 +7529,8 @@
                       ensureSemicolon(42)
                       listener: endReturnStatement(true, return, ;)
                       inGenerator()
-                listener: endThenStatement(;)
-                listener: endIfStatement(if, null)
+                listener: endThenStatement(return, ;)
+                listener: endIfStatement(if, null, ;)
           notEofOrValue(}, return)
           parseStatement(;)
             parseStatementX(;)
@@ -7672,8 +7672,8 @@
                       ensureSemicolon(42)
                       listener: endReturnStatement(true, return, ;)
                       inGenerator()
-                listener: endThenStatement(;)
-                listener: endIfStatement(if, null)
+                listener: endThenStatement(return, ;)
+                listener: endIfStatement(if, null, ;)
           notEofOrValue(}, return)
           parseStatement(;)
             parseStatementX(;)
@@ -7806,8 +7806,8 @@
                       ensureSemicolon(42)
                       listener: endReturnStatement(true, return, ;)
                       inGenerator()
-                listener: endThenStatement(;)
-                listener: endIfStatement(if, null)
+                listener: endThenStatement(return, ;)
+                listener: endIfStatement(if, null, ;)
           notEofOrValue(}, return)
           parseStatement(;)
             parseStatementX(;)
@@ -7946,8 +7946,8 @@
                       ensureSemicolon(42)
                       listener: endReturnStatement(true, return, ;)
                       inGenerator()
-                listener: endThenStatement(;)
-                listener: endIfStatement(if, null)
+                listener: endThenStatement(return, ;)
+                listener: endIfStatement(if, null, ;)
           notEofOrValue(}, return)
           parseStatement(;)
             parseStatementX(;)
@@ -8086,8 +8086,8 @@
                       ensureSemicolon(42)
                       listener: endReturnStatement(true, return, ;)
                       inGenerator()
-                listener: endThenStatement(;)
-                listener: endIfStatement(if, null)
+                listener: endThenStatement(return, ;)
+                listener: endIfStatement(if, null, ;)
           notEofOrValue(}, return)
           parseStatement(;)
             parseStatementX(;)
@@ -8226,8 +8226,8 @@
                       ensureSemicolon(42)
                       listener: endReturnStatement(true, return, ;)
                       inGenerator()
-                listener: endThenStatement(;)
-                listener: endIfStatement(if, null)
+                listener: endThenStatement(return, ;)
+                listener: endIfStatement(if, null, ;)
           notEofOrValue(}, return)
           parseStatement(;)
             parseStatementX(;)
@@ -8368,8 +8368,8 @@
                       ensureSemicolon(42)
                       listener: endReturnStatement(true, return, ;)
                       inGenerator()
-                listener: endThenStatement(;)
-                listener: endIfStatement(if, null)
+                listener: endThenStatement(return, ;)
+                listener: endIfStatement(if, null, ;)
           notEofOrValue(}, return)
           parseStatement(;)
             parseStatementX(;)
@@ -8505,8 +8505,8 @@
                       ensureSemicolon(42)
                       listener: endReturnStatement(true, return, ;)
                       inGenerator()
-                listener: endThenStatement(;)
-                listener: endIfStatement(if, null)
+                listener: endThenStatement(return, ;)
+                listener: endIfStatement(if, null, ;)
           notEofOrValue(}, return)
           parseStatement(;)
             parseStatementX(;)
@@ -8691,8 +8691,8 @@
                       ensureSemicolon(42)
                       listener: endReturnStatement(true, return, ;)
                       inGenerator()
-                listener: endThenStatement(;)
-                listener: endIfStatement(if, null)
+                listener: endThenStatement(return, ;)
+                listener: endIfStatement(if, null, ;)
           notEofOrValue(}, return)
           parseStatement(;)
             parseStatementX(;)
@@ -8833,8 +8833,8 @@
                       ensureSemicolon(42)
                       listener: endReturnStatement(true, return, ;)
                       inGenerator()
-                listener: endThenStatement(;)
-                listener: endIfStatement(if, null)
+                listener: endThenStatement(return, ;)
+                listener: endIfStatement(if, null, ;)
           notEofOrValue(}, return)
           parseStatement(;)
             parseStatementX(;)
@@ -8970,8 +8970,8 @@
                       ensureSemicolon(42)
                       listener: endReturnStatement(true, return, ;)
                       inGenerator()
-                listener: endThenStatement(;)
-                listener: endIfStatement(if, null)
+                listener: endThenStatement(return, ;)
+                listener: endIfStatement(if, null, ;)
           notEofOrValue(}, return)
           parseStatement(;)
             parseStatementX(;)
@@ -9107,8 +9107,8 @@
                       ensureSemicolon(42)
                       listener: endReturnStatement(true, return, ;)
                       inGenerator()
-                listener: endThenStatement(;)
-                listener: endIfStatement(if, null)
+                listener: endThenStatement(return, ;)
+                listener: endIfStatement(if, null, ;)
           notEofOrValue(}, return)
           parseStatement(;)
             parseStatementX(;)
@@ -9245,8 +9245,8 @@
                       ensureSemicolon(42)
                       listener: endReturnStatement(true, return, ;)
                       inGenerator()
-                listener: endThenStatement(;)
-                listener: endIfStatement(if, null)
+                listener: endThenStatement(return, ;)
+                listener: endIfStatement(if, null, ;)
           notEofOrValue(}, return)
           parseStatement(;)
             parseStatementX(;)
@@ -9291,7 +9291,7 @@
                   listener: endBlock(0, {, }, BlockKind(try statement))
                 reportRecoverableError(try, OnlyTry)
                   listener: handleRecoverableError(OnlyTry, try, try)
-                listener: endTryStatement(0, try, null)
+                listener: endTryStatement(0, try, null, })
           notEofOrValue(}, ()
           parseStatement(})
             parseStatementX(})
@@ -9421,8 +9421,8 @@
                       ensureSemicolon(42)
                       listener: endReturnStatement(true, return, ;)
                       inGenerator()
-                listener: endThenStatement(;)
-                listener: endIfStatement(if, null)
+                listener: endThenStatement(return, ;)
+                listener: endIfStatement(if, null, ;)
           notEofOrValue(}, return)
           parseStatement(;)
             parseStatementX(;)
@@ -9565,8 +9565,8 @@
                       ensureSemicolon(42)
                       listener: endReturnStatement(true, return, ;)
                       inGenerator()
-                listener: endThenStatement(;)
-                listener: endIfStatement(if, null)
+                listener: endThenStatement(return, ;)
+                listener: endIfStatement(if, null, ;)
           notEofOrValue(}, return)
           parseStatement(;)
             parseStatementX(;)
@@ -9800,8 +9800,8 @@
                       ensureSemicolon(42)
                       listener: endReturnStatement(true, return, ;)
                       inGenerator()
-                listener: endThenStatement(;)
-                listener: endIfStatement(if, null)
+                listener: endThenStatement(return, ;)
+                listener: endIfStatement(if, null, ;)
           notEofOrValue(}, return)
           parseStatement(;)
             parseStatementX(;)
@@ -10036,8 +10036,8 @@
                       ensureSemicolon(42)
                       listener: endReturnStatement(true, return, ;)
                       inGenerator()
-                listener: endThenStatement(;)
-                listener: endIfStatement(if, null)
+                listener: endThenStatement(return, ;)
+                listener: endIfStatement(if, null, ;)
           notEofOrValue(}, return)
           parseStatement(;)
             parseStatementX(;)
@@ -10217,8 +10217,8 @@
                       ensureSemicolon(42)
                       listener: endReturnStatement(true, return, ;)
                       inGenerator()
-                listener: endThenStatement(;)
-                listener: endIfStatement(if, null)
+                listener: endThenStatement(return, ;)
+                listener: endIfStatement(if, null, ;)
           notEofOrValue(}, return)
           parseStatement(;)
             parseStatementX(;)
@@ -10356,8 +10356,8 @@
                       ensureSemicolon(42)
                       listener: endReturnStatement(true, return, ;)
                       inGenerator()
-                listener: endThenStatement(;)
-                listener: endIfStatement(if, null)
+                listener: endThenStatement(return, ;)
+                listener: endIfStatement(if, null, ;)
           notEofOrValue(}, return)
           parseStatement(;)
             parseStatementX(;)
diff --git a/pkg/front_end/parser_testcases/general/ambiguous_builder_01.dart.expect b/pkg/front_end/parser_testcases/general/ambiguous_builder_01.dart.expect
index f28fb10..b25b70a 100644
--- a/pkg/front_end/parser_testcases/general/ambiguous_builder_01.dart.expect
+++ b/pkg/front_end/parser_testcases/general/ambiguous_builder_01.dart.expect
@@ -122,8 +122,8 @@
           beginThenStatement({)
             beginBlock({, BlockKind(statement))
             endBlock(0, {, }, BlockKind(statement))
-          endThenStatement(})
-        endIfStatement(if, null)
+          endThenStatement({, })
+        endIfStatement(if, null, })
       endBlockFunctionBody(1, {, })
     endTopLevelMethod(void, null, })
   endTopLevelDeclaration(})
diff --git a/pkg/front_end/parser_testcases/general/ambiguous_builder_01.dart.intertwined.expect b/pkg/front_end/parser_testcases/general/ambiguous_builder_01.dart.intertwined.expect
index 8403c5b..43f6536 100644
--- a/pkg/front_end/parser_testcases/general/ambiguous_builder_01.dart.intertwined.expect
+++ b/pkg/front_end/parser_testcases/general/ambiguous_builder_01.dart.intertwined.expect
@@ -202,8 +202,8 @@
                       listener: beginBlock({, BlockKind(statement))
                       notEofOrValue(}, })
                       listener: endBlock(0, {, }, BlockKind(statement))
-                listener: endThenStatement(})
-                listener: endIfStatement(if, null)
+                listener: endThenStatement({, })
+                listener: endIfStatement(if, null, })
           notEofOrValue(}, })
           listener: endBlockFunctionBody(1, {, })
         listener: endTopLevelMethod(void, null, })
diff --git a/pkg/front_end/parser_testcases/general/built_in_identifier_class_methods.dart.expect b/pkg/front_end/parser_testcases/general/built_in_identifier_class_methods.dart.expect
index 4deb144..968961a 100644
--- a/pkg/front_end/parser_testcases/general/built_in_identifier_class_methods.dart.expect
+++ b/pkg/front_end/parser_testcases/general/built_in_identifier_class_methods.dart.expect
@@ -47,8 +47,8 @@
                   beginReturnStatement(return)
                     handleLiteralInt(42)
                   endReturnStatement(true, return, ;)
-                endThenStatement(;)
-              endIfStatement(if, null)
+                endThenStatement(return, ;)
+              endIfStatement(if, null, ;)
               beginReturnStatement(return)
                 handleIdentifier(abstract, expression)
                 handleNoTypeArguments(()
@@ -102,8 +102,8 @@
                   beginReturnStatement(return)
                     handleLiteralInt(42)
                   endReturnStatement(true, return, ;)
-                endThenStatement(;)
-              endIfStatement(if, null)
+                endThenStatement(return, ;)
+              endIfStatement(if, null, ;)
               beginReturnStatement(return)
                 handleIdentifier(as, expression)
                 handleNoTypeArguments(()
@@ -157,8 +157,8 @@
                   beginReturnStatement(return)
                     handleLiteralInt(42)
                   endReturnStatement(true, return, ;)
-                endThenStatement(;)
-              endIfStatement(if, null)
+                endThenStatement(return, ;)
+              endIfStatement(if, null, ;)
               beginReturnStatement(return)
                 handleIdentifier(covariant, expression)
                 handleNoTypeArguments(()
@@ -212,8 +212,8 @@
                   beginReturnStatement(return)
                     handleLiteralInt(42)
                   endReturnStatement(true, return, ;)
-                endThenStatement(;)
-              endIfStatement(if, null)
+                endThenStatement(return, ;)
+              endIfStatement(if, null, ;)
               beginReturnStatement(return)
                 handleIdentifier(deferred, expression)
                 handleNoTypeArguments(()
@@ -267,8 +267,8 @@
                   beginReturnStatement(return)
                     handleLiteralInt(42)
                   endReturnStatement(true, return, ;)
-                endThenStatement(;)
-              endIfStatement(if, null)
+                endThenStatement(return, ;)
+              endIfStatement(if, null, ;)
               beginReturnStatement(return)
                 handleIdentifier(dynamic, expression)
                 handleNoTypeArguments(()
@@ -322,8 +322,8 @@
                   beginReturnStatement(return)
                     handleLiteralInt(42)
                   endReturnStatement(true, return, ;)
-                endThenStatement(;)
-              endIfStatement(if, null)
+                endThenStatement(return, ;)
+              endIfStatement(if, null, ;)
               beginReturnStatement(return)
                 handleIdentifier(export, expression)
                 handleNoTypeArguments(()
@@ -377,8 +377,8 @@
                   beginReturnStatement(return)
                     handleLiteralInt(42)
                   endReturnStatement(true, return, ;)
-                endThenStatement(;)
-              endIfStatement(if, null)
+                endThenStatement(return, ;)
+              endIfStatement(if, null, ;)
               beginReturnStatement(return)
                 handleIdentifier(external, expression)
                 handleNoTypeArguments(()
@@ -432,8 +432,8 @@
                   beginReturnStatement(return)
                     handleLiteralInt(42)
                   endReturnStatement(true, return, ;)
-                endThenStatement(;)
-              endIfStatement(if, null)
+                endThenStatement(return, ;)
+              endIfStatement(if, null, ;)
               beginReturnStatement(return)
                 handleIdentifier(factory, expression)
                 handleNoTypeArguments(()
@@ -487,8 +487,8 @@
                   beginReturnStatement(return)
                     handleLiteralInt(42)
                   endReturnStatement(true, return, ;)
-                endThenStatement(;)
-              endIfStatement(if, null)
+                endThenStatement(return, ;)
+              endIfStatement(if, null, ;)
               beginReturnStatement(return)
                 handleIdentifier(Function, expression)
                 handleNoTypeArguments(()
@@ -542,8 +542,8 @@
                   beginReturnStatement(return)
                     handleLiteralInt(42)
                   endReturnStatement(true, return, ;)
-                endThenStatement(;)
-              endIfStatement(if, null)
+                endThenStatement(return, ;)
+              endIfStatement(if, null, ;)
               beginReturnStatement(return)
                 handleIdentifier(get, expression)
                 handleNoTypeArguments(()
@@ -597,8 +597,8 @@
                   beginReturnStatement(return)
                     handleLiteralInt(42)
                   endReturnStatement(true, return, ;)
-                endThenStatement(;)
-              endIfStatement(if, null)
+                endThenStatement(return, ;)
+              endIfStatement(if, null, ;)
               beginReturnStatement(return)
                 handleIdentifier(implements, expression)
                 handleNoTypeArguments(()
@@ -652,8 +652,8 @@
                   beginReturnStatement(return)
                     handleLiteralInt(42)
                   endReturnStatement(true, return, ;)
-                endThenStatement(;)
-              endIfStatement(if, null)
+                endThenStatement(return, ;)
+              endIfStatement(if, null, ;)
               beginReturnStatement(return)
                 handleIdentifier(import, expression)
                 handleNoTypeArguments(()
@@ -707,8 +707,8 @@
                   beginReturnStatement(return)
                     handleLiteralInt(42)
                   endReturnStatement(true, return, ;)
-                endThenStatement(;)
-              endIfStatement(if, null)
+                endThenStatement(return, ;)
+              endIfStatement(if, null, ;)
               beginReturnStatement(return)
                 handleIdentifier(interface, expression)
                 handleNoTypeArguments(()
@@ -762,8 +762,8 @@
                   beginReturnStatement(return)
                     handleLiteralInt(42)
                   endReturnStatement(true, return, ;)
-                endThenStatement(;)
-              endIfStatement(if, null)
+                endThenStatement(return, ;)
+              endIfStatement(if, null, ;)
               beginReturnStatement(return)
                 handleIdentifier(library, expression)
                 handleNoTypeArguments(()
@@ -817,8 +817,8 @@
                   beginReturnStatement(return)
                     handleLiteralInt(42)
                   endReturnStatement(true, return, ;)
-                endThenStatement(;)
-              endIfStatement(if, null)
+                endThenStatement(return, ;)
+              endIfStatement(if, null, ;)
               beginReturnStatement(return)
                 handleIdentifier(operator, expression)
                 handleNoTypeArguments(()
@@ -872,8 +872,8 @@
                   beginReturnStatement(return)
                     handleLiteralInt(42)
                   endReturnStatement(true, return, ;)
-                endThenStatement(;)
-              endIfStatement(if, null)
+                endThenStatement(return, ;)
+              endIfStatement(if, null, ;)
               beginReturnStatement(return)
                 handleIdentifier(mixin, expression)
                 handleNoTypeArguments(()
@@ -927,8 +927,8 @@
                   beginReturnStatement(return)
                     handleLiteralInt(42)
                   endReturnStatement(true, return, ;)
-                endThenStatement(;)
-              endIfStatement(if, null)
+                endThenStatement(return, ;)
+              endIfStatement(if, null, ;)
               beginReturnStatement(return)
                 handleIdentifier(part, expression)
                 handleNoTypeArguments(()
@@ -982,8 +982,8 @@
                   beginReturnStatement(return)
                     handleLiteralInt(42)
                   endReturnStatement(true, return, ;)
-                endThenStatement(;)
-              endIfStatement(if, null)
+                endThenStatement(return, ;)
+              endIfStatement(if, null, ;)
               beginReturnStatement(return)
                 handleIdentifier(set, expression)
                 handleNoTypeArguments(()
@@ -1037,8 +1037,8 @@
                   beginReturnStatement(return)
                     handleLiteralInt(42)
                   endReturnStatement(true, return, ;)
-                endThenStatement(;)
-              endIfStatement(if, null)
+                endThenStatement(return, ;)
+              endIfStatement(if, null, ;)
               beginReturnStatement(return)
                 handleIdentifier(static, expression)
                 handleNoTypeArguments(()
@@ -1092,8 +1092,8 @@
                   beginReturnStatement(return)
                     handleLiteralInt(42)
                   endReturnStatement(true, return, ;)
-                endThenStatement(;)
-              endIfStatement(if, null)
+                endThenStatement(return, ;)
+              endIfStatement(if, null, ;)
               beginReturnStatement(return)
                 handleIdentifier(typedef, expression)
                 handleNoTypeArguments(()
diff --git a/pkg/front_end/parser_testcases/general/built_in_identifier_class_methods.dart.intertwined.expect b/pkg/front_end/parser_testcases/general/built_in_identifier_class_methods.dart.intertwined.expect
index ce332b8..c0de535 100644
--- a/pkg/front_end/parser_testcases/general/built_in_identifier_class_methods.dart.intertwined.expect
+++ b/pkg/front_end/parser_testcases/general/built_in_identifier_class_methods.dart.intertwined.expect
@@ -109,8 +109,8 @@
                               ensureSemicolon(42)
                               listener: endReturnStatement(true, return, ;)
                               inGenerator()
-                        listener: endThenStatement(;)
-                        listener: endIfStatement(if, null)
+                        listener: endThenStatement(return, ;)
+                        listener: endIfStatement(if, null, ;)
                   notEofOrValue(}, return)
                   parseStatement(;)
                     parseStatementX(;)
@@ -246,8 +246,8 @@
                               ensureSemicolon(42)
                               listener: endReturnStatement(true, return, ;)
                               inGenerator()
-                        listener: endThenStatement(;)
-                        listener: endIfStatement(if, null)
+                        listener: endThenStatement(return, ;)
+                        listener: endIfStatement(if, null, ;)
                   notEofOrValue(}, return)
                   parseStatement(;)
                     parseStatementX(;)
@@ -383,8 +383,8 @@
                               ensureSemicolon(42)
                               listener: endReturnStatement(true, return, ;)
                               inGenerator()
-                        listener: endThenStatement(;)
-                        listener: endIfStatement(if, null)
+                        listener: endThenStatement(return, ;)
+                        listener: endIfStatement(if, null, ;)
                   notEofOrValue(}, return)
                   parseStatement(;)
                     parseStatementX(;)
@@ -520,8 +520,8 @@
                               ensureSemicolon(42)
                               listener: endReturnStatement(true, return, ;)
                               inGenerator()
-                        listener: endThenStatement(;)
-                        listener: endIfStatement(if, null)
+                        listener: endThenStatement(return, ;)
+                        listener: endIfStatement(if, null, ;)
                   notEofOrValue(}, return)
                   parseStatement(;)
                     parseStatementX(;)
@@ -657,8 +657,8 @@
                               ensureSemicolon(42)
                               listener: endReturnStatement(true, return, ;)
                               inGenerator()
-                        listener: endThenStatement(;)
-                        listener: endIfStatement(if, null)
+                        listener: endThenStatement(return, ;)
+                        listener: endIfStatement(if, null, ;)
                   notEofOrValue(}, return)
                   parseStatement(;)
                     parseStatementX(;)
@@ -794,8 +794,8 @@
                               ensureSemicolon(42)
                               listener: endReturnStatement(true, return, ;)
                               inGenerator()
-                        listener: endThenStatement(;)
-                        listener: endIfStatement(if, null)
+                        listener: endThenStatement(return, ;)
+                        listener: endIfStatement(if, null, ;)
                   notEofOrValue(}, return)
                   parseStatement(;)
                     parseStatementX(;)
@@ -931,8 +931,8 @@
                               ensureSemicolon(42)
                               listener: endReturnStatement(true, return, ;)
                               inGenerator()
-                        listener: endThenStatement(;)
-                        listener: endIfStatement(if, null)
+                        listener: endThenStatement(return, ;)
+                        listener: endIfStatement(if, null, ;)
                   notEofOrValue(}, return)
                   parseStatement(;)
                     parseStatementX(;)
@@ -1068,8 +1068,8 @@
                               ensureSemicolon(42)
                               listener: endReturnStatement(true, return, ;)
                               inGenerator()
-                        listener: endThenStatement(;)
-                        listener: endIfStatement(if, null)
+                        listener: endThenStatement(return, ;)
+                        listener: endIfStatement(if, null, ;)
                   notEofOrValue(}, return)
                   parseStatement(;)
                     parseStatementX(;)
@@ -1205,8 +1205,8 @@
                               ensureSemicolon(42)
                               listener: endReturnStatement(true, return, ;)
                               inGenerator()
-                        listener: endThenStatement(;)
-                        listener: endIfStatement(if, null)
+                        listener: endThenStatement(return, ;)
+                        listener: endIfStatement(if, null, ;)
                   notEofOrValue(}, return)
                   parseStatement(;)
                     parseStatementX(;)
@@ -1343,8 +1343,8 @@
                               ensureSemicolon(42)
                               listener: endReturnStatement(true, return, ;)
                               inGenerator()
-                        listener: endThenStatement(;)
-                        listener: endIfStatement(if, null)
+                        listener: endThenStatement(return, ;)
+                        listener: endIfStatement(if, null, ;)
                   notEofOrValue(}, return)
                   parseStatement(;)
                     parseStatementX(;)
@@ -1480,8 +1480,8 @@
                               ensureSemicolon(42)
                               listener: endReturnStatement(true, return, ;)
                               inGenerator()
-                        listener: endThenStatement(;)
-                        listener: endIfStatement(if, null)
+                        listener: endThenStatement(return, ;)
+                        listener: endIfStatement(if, null, ;)
                   notEofOrValue(}, return)
                   parseStatement(;)
                     parseStatementX(;)
@@ -1617,8 +1617,8 @@
                               ensureSemicolon(42)
                               listener: endReturnStatement(true, return, ;)
                               inGenerator()
-                        listener: endThenStatement(;)
-                        listener: endIfStatement(if, null)
+                        listener: endThenStatement(return, ;)
+                        listener: endIfStatement(if, null, ;)
                   notEofOrValue(}, return)
                   parseStatement(;)
                     parseStatementX(;)
@@ -1754,8 +1754,8 @@
                               ensureSemicolon(42)
                               listener: endReturnStatement(true, return, ;)
                               inGenerator()
-                        listener: endThenStatement(;)
-                        listener: endIfStatement(if, null)
+                        listener: endThenStatement(return, ;)
+                        listener: endIfStatement(if, null, ;)
                   notEofOrValue(}, return)
                   parseStatement(;)
                     parseStatementX(;)
@@ -1891,8 +1891,8 @@
                               ensureSemicolon(42)
                               listener: endReturnStatement(true, return, ;)
                               inGenerator()
-                        listener: endThenStatement(;)
-                        listener: endIfStatement(if, null)
+                        listener: endThenStatement(return, ;)
+                        listener: endIfStatement(if, null, ;)
                   notEofOrValue(}, return)
                   parseStatement(;)
                     parseStatementX(;)
@@ -2030,8 +2030,8 @@
                               ensureSemicolon(42)
                               listener: endReturnStatement(true, return, ;)
                               inGenerator()
-                        listener: endThenStatement(;)
-                        listener: endIfStatement(if, null)
+                        listener: endThenStatement(return, ;)
+                        listener: endIfStatement(if, null, ;)
                   notEofOrValue(}, return)
                   parseStatement(;)
                     parseStatementX(;)
@@ -2167,8 +2167,8 @@
                               ensureSemicolon(42)
                               listener: endReturnStatement(true, return, ;)
                               inGenerator()
-                        listener: endThenStatement(;)
-                        listener: endIfStatement(if, null)
+                        listener: endThenStatement(return, ;)
+                        listener: endIfStatement(if, null, ;)
                   notEofOrValue(}, return)
                   parseStatement(;)
                     parseStatementX(;)
@@ -2304,8 +2304,8 @@
                               ensureSemicolon(42)
                               listener: endReturnStatement(true, return, ;)
                               inGenerator()
-                        listener: endThenStatement(;)
-                        listener: endIfStatement(if, null)
+                        listener: endThenStatement(return, ;)
+                        listener: endIfStatement(if, null, ;)
                   notEofOrValue(}, return)
                   parseStatement(;)
                     parseStatementX(;)
@@ -2442,8 +2442,8 @@
                               ensureSemicolon(42)
                               listener: endReturnStatement(true, return, ;)
                               inGenerator()
-                        listener: endThenStatement(;)
-                        listener: endIfStatement(if, null)
+                        listener: endThenStatement(return, ;)
+                        listener: endIfStatement(if, null, ;)
                   notEofOrValue(}, return)
                   parseStatement(;)
                     parseStatementX(;)
@@ -2579,8 +2579,8 @@
                               ensureSemicolon(42)
                               listener: endReturnStatement(true, return, ;)
                               inGenerator()
-                        listener: endThenStatement(;)
-                        listener: endIfStatement(if, null)
+                        listener: endThenStatement(return, ;)
+                        listener: endIfStatement(if, null, ;)
                   notEofOrValue(}, return)
                   parseStatement(;)
                     parseStatementX(;)
@@ -2716,8 +2716,8 @@
                               ensureSemicolon(42)
                               listener: endReturnStatement(true, return, ;)
                               inGenerator()
-                        listener: endThenStatement(;)
-                        listener: endIfStatement(if, null)
+                        listener: endThenStatement(return, ;)
+                        listener: endIfStatement(if, null, ;)
                   notEofOrValue(}, return)
                   parseStatement(;)
                     parseStatementX(;)
diff --git a/pkg/front_end/parser_testcases/general/built_in_identifier_top_level_methods.dart.expect b/pkg/front_end/parser_testcases/general/built_in_identifier_top_level_methods.dart.expect
index 6889ec7..4646393 100644
--- a/pkg/front_end/parser_testcases/general/built_in_identifier_top_level_methods.dart.expect
+++ b/pkg/front_end/parser_testcases/general/built_in_identifier_top_level_methods.dart.expect
@@ -34,8 +34,8 @@
             beginReturnStatement(return)
               handleLiteralInt(42)
             endReturnStatement(true, return, ;)
-          endThenStatement(;)
-        endIfStatement(if, null)
+          endThenStatement(return, ;)
+        endIfStatement(if, null, ;)
         beginReturnStatement(return)
           handleIdentifier(abstract, expression)
           handleNoTypeArguments(()
@@ -88,8 +88,8 @@
             beginReturnStatement(return)
               handleLiteralInt(42)
             endReturnStatement(true, return, ;)
-          endThenStatement(;)
-        endIfStatement(if, null)
+          endThenStatement(return, ;)
+        endIfStatement(if, null, ;)
         beginReturnStatement(return)
           handleIdentifier(as, expression)
           handleNoTypeArguments(()
@@ -142,8 +142,8 @@
             beginReturnStatement(return)
               handleLiteralInt(42)
             endReturnStatement(true, return, ;)
-          endThenStatement(;)
-        endIfStatement(if, null)
+          endThenStatement(return, ;)
+        endIfStatement(if, null, ;)
         beginReturnStatement(return)
           handleIdentifier(covariant, expression)
           handleNoTypeArguments(()
@@ -196,8 +196,8 @@
             beginReturnStatement(return)
               handleLiteralInt(42)
             endReturnStatement(true, return, ;)
-          endThenStatement(;)
-        endIfStatement(if, null)
+          endThenStatement(return, ;)
+        endIfStatement(if, null, ;)
         beginReturnStatement(return)
           handleIdentifier(deferred, expression)
           handleNoTypeArguments(()
@@ -250,8 +250,8 @@
             beginReturnStatement(return)
               handleLiteralInt(42)
             endReturnStatement(true, return, ;)
-          endThenStatement(;)
-        endIfStatement(if, null)
+          endThenStatement(return, ;)
+        endIfStatement(if, null, ;)
         beginReturnStatement(return)
           handleIdentifier(dynamic, expression)
           handleNoTypeArguments(()
@@ -304,8 +304,8 @@
             beginReturnStatement(return)
               handleLiteralInt(42)
             endReturnStatement(true, return, ;)
-          endThenStatement(;)
-        endIfStatement(if, null)
+          endThenStatement(return, ;)
+        endIfStatement(if, null, ;)
         beginReturnStatement(return)
           handleIdentifier(export, expression)
           handleNoTypeArguments(()
@@ -358,8 +358,8 @@
             beginReturnStatement(return)
               handleLiteralInt(42)
             endReturnStatement(true, return, ;)
-          endThenStatement(;)
-        endIfStatement(if, null)
+          endThenStatement(return, ;)
+        endIfStatement(if, null, ;)
         beginReturnStatement(return)
           handleIdentifier(external, expression)
           handleNoTypeArguments(()
@@ -412,8 +412,8 @@
             beginReturnStatement(return)
               handleLiteralInt(42)
             endReturnStatement(true, return, ;)
-          endThenStatement(;)
-        endIfStatement(if, null)
+          endThenStatement(return, ;)
+        endIfStatement(if, null, ;)
         beginReturnStatement(return)
           handleIdentifier(factory, expression)
           handleNoTypeArguments(()
@@ -466,8 +466,8 @@
             beginReturnStatement(return)
               handleLiteralInt(42)
             endReturnStatement(true, return, ;)
-          endThenStatement(;)
-        endIfStatement(if, null)
+          endThenStatement(return, ;)
+        endIfStatement(if, null, ;)
         beginReturnStatement(return)
           handleIdentifier(Function, expression)
           handleNoTypeArguments(()
@@ -520,8 +520,8 @@
             beginReturnStatement(return)
               handleLiteralInt(42)
             endReturnStatement(true, return, ;)
-          endThenStatement(;)
-        endIfStatement(if, null)
+          endThenStatement(return, ;)
+        endIfStatement(if, null, ;)
         beginReturnStatement(return)
           handleIdentifier(get, expression)
           handleNoTypeArguments(()
@@ -574,8 +574,8 @@
             beginReturnStatement(return)
               handleLiteralInt(42)
             endReturnStatement(true, return, ;)
-          endThenStatement(;)
-        endIfStatement(if, null)
+          endThenStatement(return, ;)
+        endIfStatement(if, null, ;)
         beginReturnStatement(return)
           handleIdentifier(implements, expression)
           handleNoTypeArguments(()
@@ -628,8 +628,8 @@
             beginReturnStatement(return)
               handleLiteralInt(42)
             endReturnStatement(true, return, ;)
-          endThenStatement(;)
-        endIfStatement(if, null)
+          endThenStatement(return, ;)
+        endIfStatement(if, null, ;)
         beginReturnStatement(return)
           handleIdentifier(import, expression)
           handleNoTypeArguments(()
@@ -682,8 +682,8 @@
             beginReturnStatement(return)
               handleLiteralInt(42)
             endReturnStatement(true, return, ;)
-          endThenStatement(;)
-        endIfStatement(if, null)
+          endThenStatement(return, ;)
+        endIfStatement(if, null, ;)
         beginReturnStatement(return)
           handleIdentifier(interface, expression)
           handleNoTypeArguments(()
@@ -736,8 +736,8 @@
             beginReturnStatement(return)
               handleLiteralInt(42)
             endReturnStatement(true, return, ;)
-          endThenStatement(;)
-        endIfStatement(if, null)
+          endThenStatement(return, ;)
+        endIfStatement(if, null, ;)
         beginReturnStatement(return)
           handleIdentifier(library, expression)
           handleNoTypeArguments(()
@@ -790,8 +790,8 @@
             beginReturnStatement(return)
               handleLiteralInt(42)
             endReturnStatement(true, return, ;)
-          endThenStatement(;)
-        endIfStatement(if, null)
+          endThenStatement(return, ;)
+        endIfStatement(if, null, ;)
         beginReturnStatement(return)
           handleIdentifier(operator, expression)
           handleNoTypeArguments(()
@@ -844,8 +844,8 @@
             beginReturnStatement(return)
               handleLiteralInt(42)
             endReturnStatement(true, return, ;)
-          endThenStatement(;)
-        endIfStatement(if, null)
+          endThenStatement(return, ;)
+        endIfStatement(if, null, ;)
         beginReturnStatement(return)
           handleIdentifier(mixin, expression)
           handleNoTypeArguments(()
@@ -898,8 +898,8 @@
             beginReturnStatement(return)
               handleLiteralInt(42)
             endReturnStatement(true, return, ;)
-          endThenStatement(;)
-        endIfStatement(if, null)
+          endThenStatement(return, ;)
+        endIfStatement(if, null, ;)
         beginReturnStatement(return)
           handleIdentifier(part, expression)
           handleNoTypeArguments(()
@@ -952,8 +952,8 @@
             beginReturnStatement(return)
               handleLiteralInt(42)
             endReturnStatement(true, return, ;)
-          endThenStatement(;)
-        endIfStatement(if, null)
+          endThenStatement(return, ;)
+        endIfStatement(if, null, ;)
         beginReturnStatement(return)
           handleIdentifier(set, expression)
           handleNoTypeArguments(()
@@ -1006,8 +1006,8 @@
             beginReturnStatement(return)
               handleLiteralInt(42)
             endReturnStatement(true, return, ;)
-          endThenStatement(;)
-        endIfStatement(if, null)
+          endThenStatement(return, ;)
+        endIfStatement(if, null, ;)
         beginReturnStatement(return)
           handleIdentifier(static, expression)
           handleNoTypeArguments(()
@@ -1060,8 +1060,8 @@
             beginReturnStatement(return)
               handleLiteralInt(42)
             endReturnStatement(true, return, ;)
-          endThenStatement(;)
-        endIfStatement(if, null)
+          endThenStatement(return, ;)
+        endIfStatement(if, null, ;)
         beginReturnStatement(return)
           handleIdentifier(typedef, expression)
           handleNoTypeArguments(()
diff --git a/pkg/front_end/parser_testcases/general/built_in_identifier_top_level_methods.dart.intertwined.expect b/pkg/front_end/parser_testcases/general/built_in_identifier_top_level_methods.dart.intertwined.expect
index 39b9547..0f6d707 100644
--- a/pkg/front_end/parser_testcases/general/built_in_identifier_top_level_methods.dart.intertwined.expect
+++ b/pkg/front_end/parser_testcases/general/built_in_identifier_top_level_methods.dart.intertwined.expect
@@ -82,8 +82,8 @@
                       ensureSemicolon(42)
                       listener: endReturnStatement(true, return, ;)
                       inGenerator()
-                listener: endThenStatement(;)
-                listener: endIfStatement(if, null)
+                listener: endThenStatement(return, ;)
+                listener: endIfStatement(if, null, ;)
           notEofOrValue(}, return)
           parseStatement(;)
             parseStatementX(;)
@@ -215,8 +215,8 @@
                       ensureSemicolon(42)
                       listener: endReturnStatement(true, return, ;)
                       inGenerator()
-                listener: endThenStatement(;)
-                listener: endIfStatement(if, null)
+                listener: endThenStatement(return, ;)
+                listener: endIfStatement(if, null, ;)
           notEofOrValue(}, return)
           parseStatement(;)
             parseStatementX(;)
@@ -348,8 +348,8 @@
                       ensureSemicolon(42)
                       listener: endReturnStatement(true, return, ;)
                       inGenerator()
-                listener: endThenStatement(;)
-                listener: endIfStatement(if, null)
+                listener: endThenStatement(return, ;)
+                listener: endIfStatement(if, null, ;)
           notEofOrValue(}, return)
           parseStatement(;)
             parseStatementX(;)
@@ -481,8 +481,8 @@
                       ensureSemicolon(42)
                       listener: endReturnStatement(true, return, ;)
                       inGenerator()
-                listener: endThenStatement(;)
-                listener: endIfStatement(if, null)
+                listener: endThenStatement(return, ;)
+                listener: endIfStatement(if, null, ;)
           notEofOrValue(}, return)
           parseStatement(;)
             parseStatementX(;)
@@ -614,8 +614,8 @@
                       ensureSemicolon(42)
                       listener: endReturnStatement(true, return, ;)
                       inGenerator()
-                listener: endThenStatement(;)
-                listener: endIfStatement(if, null)
+                listener: endThenStatement(return, ;)
+                listener: endIfStatement(if, null, ;)
           notEofOrValue(}, return)
           parseStatement(;)
             parseStatementX(;)
@@ -747,8 +747,8 @@
                       ensureSemicolon(42)
                       listener: endReturnStatement(true, return, ;)
                       inGenerator()
-                listener: endThenStatement(;)
-                listener: endIfStatement(if, null)
+                listener: endThenStatement(return, ;)
+                listener: endIfStatement(if, null, ;)
           notEofOrValue(}, return)
           parseStatement(;)
             parseStatementX(;)
@@ -880,8 +880,8 @@
                       ensureSemicolon(42)
                       listener: endReturnStatement(true, return, ;)
                       inGenerator()
-                listener: endThenStatement(;)
-                listener: endIfStatement(if, null)
+                listener: endThenStatement(return, ;)
+                listener: endIfStatement(if, null, ;)
           notEofOrValue(}, return)
           parseStatement(;)
             parseStatementX(;)
@@ -1013,8 +1013,8 @@
                       ensureSemicolon(42)
                       listener: endReturnStatement(true, return, ;)
                       inGenerator()
-                listener: endThenStatement(;)
-                listener: endIfStatement(if, null)
+                listener: endThenStatement(return, ;)
+                listener: endIfStatement(if, null, ;)
           notEofOrValue(}, return)
           parseStatement(;)
             parseStatementX(;)
@@ -1146,8 +1146,8 @@
                       ensureSemicolon(42)
                       listener: endReturnStatement(true, return, ;)
                       inGenerator()
-                listener: endThenStatement(;)
-                listener: endIfStatement(if, null)
+                listener: endThenStatement(return, ;)
+                listener: endIfStatement(if, null, ;)
           notEofOrValue(}, return)
           parseStatement(;)
             parseStatementX(;)
@@ -1279,8 +1279,8 @@
                       ensureSemicolon(42)
                       listener: endReturnStatement(true, return, ;)
                       inGenerator()
-                listener: endThenStatement(;)
-                listener: endIfStatement(if, null)
+                listener: endThenStatement(return, ;)
+                listener: endIfStatement(if, null, ;)
           notEofOrValue(}, return)
           parseStatement(;)
             parseStatementX(;)
@@ -1412,8 +1412,8 @@
                       ensureSemicolon(42)
                       listener: endReturnStatement(true, return, ;)
                       inGenerator()
-                listener: endThenStatement(;)
-                listener: endIfStatement(if, null)
+                listener: endThenStatement(return, ;)
+                listener: endIfStatement(if, null, ;)
           notEofOrValue(}, return)
           parseStatement(;)
             parseStatementX(;)
@@ -1545,8 +1545,8 @@
                       ensureSemicolon(42)
                       listener: endReturnStatement(true, return, ;)
                       inGenerator()
-                listener: endThenStatement(;)
-                listener: endIfStatement(if, null)
+                listener: endThenStatement(return, ;)
+                listener: endIfStatement(if, null, ;)
           notEofOrValue(}, return)
           parseStatement(;)
             parseStatementX(;)
@@ -1678,8 +1678,8 @@
                       ensureSemicolon(42)
                       listener: endReturnStatement(true, return, ;)
                       inGenerator()
-                listener: endThenStatement(;)
-                listener: endIfStatement(if, null)
+                listener: endThenStatement(return, ;)
+                listener: endIfStatement(if, null, ;)
           notEofOrValue(}, return)
           parseStatement(;)
             parseStatementX(;)
@@ -1811,8 +1811,8 @@
                       ensureSemicolon(42)
                       listener: endReturnStatement(true, return, ;)
                       inGenerator()
-                listener: endThenStatement(;)
-                listener: endIfStatement(if, null)
+                listener: endThenStatement(return, ;)
+                listener: endIfStatement(if, null, ;)
           notEofOrValue(}, return)
           parseStatement(;)
             parseStatementX(;)
@@ -1944,8 +1944,8 @@
                       ensureSemicolon(42)
                       listener: endReturnStatement(true, return, ;)
                       inGenerator()
-                listener: endThenStatement(;)
-                listener: endIfStatement(if, null)
+                listener: endThenStatement(return, ;)
+                listener: endIfStatement(if, null, ;)
           notEofOrValue(}, return)
           parseStatement(;)
             parseStatementX(;)
@@ -2077,8 +2077,8 @@
                       ensureSemicolon(42)
                       listener: endReturnStatement(true, return, ;)
                       inGenerator()
-                listener: endThenStatement(;)
-                listener: endIfStatement(if, null)
+                listener: endThenStatement(return, ;)
+                listener: endIfStatement(if, null, ;)
           notEofOrValue(}, return)
           parseStatement(;)
             parseStatementX(;)
@@ -2210,8 +2210,8 @@
                       ensureSemicolon(42)
                       listener: endReturnStatement(true, return, ;)
                       inGenerator()
-                listener: endThenStatement(;)
-                listener: endIfStatement(if, null)
+                listener: endThenStatement(return, ;)
+                listener: endIfStatement(if, null, ;)
           notEofOrValue(}, return)
           parseStatement(;)
             parseStatementX(;)
@@ -2343,8 +2343,8 @@
                       ensureSemicolon(42)
                       listener: endReturnStatement(true, return, ;)
                       inGenerator()
-                listener: endThenStatement(;)
-                listener: endIfStatement(if, null)
+                listener: endThenStatement(return, ;)
+                listener: endIfStatement(if, null, ;)
           notEofOrValue(}, return)
           parseStatement(;)
             parseStatementX(;)
@@ -2476,8 +2476,8 @@
                       ensureSemicolon(42)
                       listener: endReturnStatement(true, return, ;)
                       inGenerator()
-                listener: endThenStatement(;)
-                listener: endIfStatement(if, null)
+                listener: endThenStatement(return, ;)
+                listener: endIfStatement(if, null, ;)
           notEofOrValue(}, return)
           parseStatement(;)
             parseStatementX(;)
@@ -2609,8 +2609,8 @@
                       ensureSemicolon(42)
                       listener: endReturnStatement(true, return, ;)
                       inGenerator()
-                listener: endThenStatement(;)
-                listener: endIfStatement(if, null)
+                listener: endThenStatement(return, ;)
+                listener: endIfStatement(if, null, ;)
           notEofOrValue(}, return)
           parseStatement(;)
             parseStatementX(;)
diff --git a/pkg/front_end/parser_testcases/general/call_on_after_try_block.dart.expect b/pkg/front_end/parser_testcases/general/call_on_after_try_block.dart.expect
index c91a6ce..23769e5 100644
--- a/pkg/front_end/parser_testcases/general/call_on_after_try_block.dart.expect
+++ b/pkg/front_end/parser_testcases/general/call_on_after_try_block.dart.expect
@@ -75,7 +75,7 @@
           beginBlock({, BlockKind(catch clause))
           endBlock(0, {, }, BlockKind(catch clause))
           handleCatchBlock(on, null, null)
-        endTryStatement(3, try, null)
+        endTryStatement(3, try, null, })
         handleEmptyStatement(;)
       endBlockFunctionBody(2, {, })
     endTopLevelMethod(void, null, })
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 bd3e2bf..9cecbf9 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
@@ -117,7 +117,7 @@
                   notEofOrValue(}, })
                   listener: endBlock(0, {, }, BlockKind(catch clause))
                 listener: handleCatchBlock(on, null, null)
-                listener: endTryStatement(3, try, null)
+                listener: endTryStatement(3, try, null, })
           notEofOrValue(}, ;)
           parseStatement(})
             parseStatementX(})
diff --git a/pkg/front_end/parser_testcases/general/call_on_after_try_block2.dart.expect b/pkg/front_end/parser_testcases/general/call_on_after_try_block2.dart.expect
index 31675f2..c06afae 100644
--- a/pkg/front_end/parser_testcases/general/call_on_after_try_block2.dart.expect
+++ b/pkg/front_end/parser_testcases/general/call_on_after_try_block2.dart.expect
@@ -96,7 +96,7 @@
           beginBlock({, BlockKind(catch clause))
           endBlock(0, {, }, BlockKind(catch clause))
           handleCatchBlock(on, null, null)
-        endTryStatement(4, try, null)
+        endTryStatement(4, try, null, })
         handleEmptyStatement(;)
       endBlockFunctionBody(2, {, })
     endTopLevelMethod(void, null, })
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 530e751..1106073 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
@@ -145,7 +145,7 @@
                   notEofOrValue(}, })
                   listener: endBlock(0, {, }, BlockKind(catch clause))
                 listener: handleCatchBlock(on, null, null)
-                listener: endTryStatement(4, try, null)
+                listener: endTryStatement(4, try, null, })
           notEofOrValue(}, ;)
           parseStatement(})
             parseStatementX(})
diff --git a/pkg/front_end/parser_testcases/general/call_on_after_try_block2_prime.dart.expect b/pkg/front_end/parser_testcases/general/call_on_after_try_block2_prime.dart.expect
index 618880b..8eba5fd 100644
--- a/pkg/front_end/parser_testcases/general/call_on_after_try_block2_prime.dart.expect
+++ b/pkg/front_end/parser_testcases/general/call_on_after_try_block2_prime.dart.expect
@@ -38,7 +38,7 @@
             handleEmptyStatement(;)
           endBlock(1, {, }, BlockKind(catch clause))
           handleCatchBlock(on, null, null)
-        endTryStatement(2, try, null)
+        endTryStatement(2, try, null, })
         beginMetadataStar(onX)
         endMetadataStar(0)
         handleNoTypeVariables(()
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 1dddcd6..a371896 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
@@ -83,7 +83,7 @@
                   notEofOrValue(}, })
                   listener: endBlock(1, {, }, BlockKind(catch clause))
                 listener: handleCatchBlock(on, null, null)
-                listener: endTryStatement(2, try, null)
+                listener: endTryStatement(2, try, null, })
           notEofOrValue(}, onX)
           parseStatement(})
             parseStatementX(})
diff --git a/pkg/front_end/parser_testcases/general/call_on_after_try_block3.dart.expect b/pkg/front_end/parser_testcases/general/call_on_after_try_block3.dart.expect
index a02c884..6745bdb 100644
--- a/pkg/front_end/parser_testcases/general/call_on_after_try_block3.dart.expect
+++ b/pkg/front_end/parser_testcases/general/call_on_after_try_block3.dart.expect
@@ -69,7 +69,7 @@
           beginBlock({, BlockKind(catch clause))
           endBlock(0, {, }, BlockKind(catch clause))
           handleCatchBlock(on, null, null)
-        endTryStatement(3, try, null)
+        endTryStatement(3, try, null, })
         beginParenthesizedExpressionOrRecordLiteral(()
         endRecordLiteral((, 0, null)
         handleExpressionStatement(;)
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 3fad3ca..10d7644 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
@@ -121,7 +121,7 @@
                   notEofOrValue(}, })
                   listener: endBlock(0, {, }, BlockKind(catch clause))
                 listener: handleCatchBlock(on, null, null)
-                listener: endTryStatement(3, try, null)
+                listener: endTryStatement(3, try, null, })
           notEofOrValue(}, ()
           parseStatement(})
             parseStatementX(})
diff --git a/pkg/front_end/parser_testcases/general/call_on_after_try_block3_prime.dart.expect b/pkg/front_end/parser_testcases/general/call_on_after_try_block3_prime.dart.expect
index 2c58b8c..e609c1b 100644
--- a/pkg/front_end/parser_testcases/general/call_on_after_try_block3_prime.dart.expect
+++ b/pkg/front_end/parser_testcases/general/call_on_after_try_block3_prime.dart.expect
@@ -47,7 +47,7 @@
             handleEmptyStatement(;)
           endBlock(1, {, }, BlockKind(catch clause))
           handleCatchBlock(on, null, null)
-        endTryStatement(2, try, null)
+        endTryStatement(2, try, null, })
         handleIdentifier(onX, expression)
         handleNoTypeArguments(.)
         handleNoArguments(.)
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 e9bda9e..af90aaa 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
@@ -95,7 +95,7 @@
                   notEofOrValue(}, })
                   listener: endBlock(1, {, }, BlockKind(catch clause))
                 listener: handleCatchBlock(on, null, null)
-                listener: endTryStatement(2, try, null)
+                listener: endTryStatement(2, try, null, })
           notEofOrValue(}, onX)
           parseStatement(})
             parseStatementX(})
diff --git a/pkg/front_end/parser_testcases/general/call_on_after_try_block4.dart.expect b/pkg/front_end/parser_testcases/general/call_on_after_try_block4.dart.expect
index c7fa78e..0f4d233 100644
--- a/pkg/front_end/parser_testcases/general/call_on_after_try_block4.dart.expect
+++ b/pkg/front_end/parser_testcases/general/call_on_after_try_block4.dart.expect
@@ -71,7 +71,7 @@
           beginBlock({, BlockKind(catch clause))
           endBlock(0, {, }, BlockKind(catch clause))
           handleCatchBlock(on, null, null)
-        endTryStatement(3, try, null)
+        endTryStatement(3, try, null, })
         handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got '='., Try inserting an identifier before '='., {lexeme: =}], =, =)
         handleIdentifier(, expression)
         handleNoTypeArguments(=)
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 f551f9f..a4fe74c 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
@@ -115,7 +115,7 @@
                   notEofOrValue(}, })
                   listener: endBlock(0, {, }, BlockKind(catch clause))
                 listener: handleCatchBlock(on, null, null)
-                listener: endTryStatement(3, try, null)
+                listener: endTryStatement(3, try, null, })
           notEofOrValue(}, =)
           parseStatement(})
             parseStatementX(})
diff --git a/pkg/front_end/parser_testcases/general/call_on_after_try_block4_prime.dart.expect b/pkg/front_end/parser_testcases/general/call_on_after_try_block4_prime.dart.expect
index 80c833c0..4e13181 100644
--- a/pkg/front_end/parser_testcases/general/call_on_after_try_block4_prime.dart.expect
+++ b/pkg/front_end/parser_testcases/general/call_on_after_try_block4_prime.dart.expect
@@ -47,7 +47,7 @@
             handleEmptyStatement(;)
           endBlock(1, {, }, BlockKind(catch clause))
           handleCatchBlock(on, null, null)
-        endTryStatement(2, try, null)
+        endTryStatement(2, try, null, })
         handleIdentifier(onX, expression)
         handleNoTypeArguments(=)
         handleNoArguments(=)
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 733c9de..797f357 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
@@ -95,7 +95,7 @@
                   notEofOrValue(}, })
                   listener: endBlock(1, {, }, BlockKind(catch clause))
                 listener: handleCatchBlock(on, null, null)
-                listener: endTryStatement(2, try, null)
+                listener: endTryStatement(2, try, null, })
           notEofOrValue(}, onX)
           parseStatement(})
             parseStatementX(})
diff --git a/pkg/front_end/parser_testcases/general/call_on_after_try_block5.dart.expect b/pkg/front_end/parser_testcases/general/call_on_after_try_block5.dart.expect
index 759e286..d5d98f2 100644
--- a/pkg/front_end/parser_testcases/general/call_on_after_try_block5.dart.expect
+++ b/pkg/front_end/parser_testcases/general/call_on_after_try_block5.dart.expect
@@ -67,7 +67,7 @@
           beginBlock({, BlockKind(catch clause))
           endBlock(0, {, }, BlockKind(catch clause))
           handleCatchBlock(on, null, null)
-        endTryStatement(3, try, null)
+        endTryStatement(3, try, null, })
         handleEmptyStatement(;)
       endBlockFunctionBody(2, {, })
     endTopLevelMethod(void, null, })
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 1733876..70a5a90 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
@@ -115,7 +115,7 @@
                   notEofOrValue(}, })
                   listener: endBlock(0, {, }, BlockKind(catch clause))
                 listener: handleCatchBlock(on, null, null)
-                listener: endTryStatement(3, try, null)
+                listener: endTryStatement(3, try, null, })
           notEofOrValue(}, ;)
           parseStatement(})
             parseStatementX(})
diff --git a/pkg/front_end/parser_testcases/general/call_on_after_try_block5_prime.dart.expect b/pkg/front_end/parser_testcases/general/call_on_after_try_block5_prime.dart.expect
index cdfec7c..e56c072 100644
--- a/pkg/front_end/parser_testcases/general/call_on_after_try_block5_prime.dart.expect
+++ b/pkg/front_end/parser_testcases/general/call_on_after_try_block5_prime.dart.expect
@@ -47,7 +47,7 @@
             handleEmptyStatement(;)
           endBlock(1, {, }, BlockKind(catch clause))
           handleCatchBlock(on, null, null)
-        endTryStatement(2, try, null)
+        endTryStatement(2, try, null, })
         handleIdentifier(onX, expression)
         handleNoTypeArguments(;)
         handleNoArguments(;)
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 750f65b..e5536ac 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
@@ -95,7 +95,7 @@
                   notEofOrValue(}, })
                   listener: endBlock(1, {, }, BlockKind(catch clause))
                 listener: handleCatchBlock(on, null, null)
-                listener: endTryStatement(2, try, null)
+                listener: endTryStatement(2, try, null, })
           notEofOrValue(}, onX)
           parseStatement(})
             parseStatementX(})
diff --git a/pkg/front_end/parser_testcases/general/call_on_after_try_block_prime.dart.expect b/pkg/front_end/parser_testcases/general/call_on_after_try_block_prime.dart.expect
index 3613736..73b8bd6 100644
--- a/pkg/front_end/parser_testcases/general/call_on_after_try_block_prime.dart.expect
+++ b/pkg/front_end/parser_testcases/general/call_on_after_try_block_prime.dart.expect
@@ -38,7 +38,7 @@
             handleEmptyStatement(;)
           endBlock(1, {, }, BlockKind(catch clause))
           handleCatchBlock(on, null, null)
-        endTryStatement(2, try, null)
+        endTryStatement(2, try, null, })
         handleIdentifier(onX, expression)
         handleNoTypeArguments(()
         beginArguments(()
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 42296e9..ef0ffc8 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
@@ -83,7 +83,7 @@
                   notEofOrValue(}, })
                   listener: endBlock(1, {, }, BlockKind(catch clause))
                 listener: handleCatchBlock(on, null, null)
-                listener: endTryStatement(2, try, null)
+                listener: endTryStatement(2, try, null, })
           notEofOrValue(}, onX)
           parseStatement(})
             parseStatementX(})
diff --git a/pkg/front_end/parser_testcases/general/not_call_on_after_try_block.dart.expect b/pkg/front_end/parser_testcases/general/not_call_on_after_try_block.dart.expect
index eb59ad6..022c129 100644
--- a/pkg/front_end/parser_testcases/general/not_call_on_after_try_block.dart.expect
+++ b/pkg/front_end/parser_testcases/general/not_call_on_after_try_block.dart.expect
@@ -102,7 +102,7 @@
             handleEmptyStatement(;)
           endBlock(1, {, }, BlockKind(catch clause))
           handleCatchBlock(on, null, null)
-        endTryStatement(5, try, null)
+        endTryStatement(5, try, null, })
       endBlockFunctionBody(1, {, })
     endTopLevelMethod(void, null, })
   endTopLevelDeclaration(})
diff --git a/pkg/front_end/parser_testcases/general/not_call_on_after_try_block.dart.intertwined.expect b/pkg/front_end/parser_testcases/general/not_call_on_after_try_block.dart.intertwined.expect
index 8ef4e1c..e26345e 100644
--- a/pkg/front_end/parser_testcases/general/not_call_on_after_try_block.dart.intertwined.expect
+++ b/pkg/front_end/parser_testcases/general/not_call_on_after_try_block.dart.intertwined.expect
@@ -181,7 +181,7 @@
                   notEofOrValue(}, })
                   listener: endBlock(1, {, }, BlockKind(catch clause))
                 listener: handleCatchBlock(on, null, null)
-                listener: endTryStatement(5, try, null)
+                listener: endTryStatement(5, try, null, })
           notEofOrValue(}, })
           listener: endBlockFunctionBody(1, {, })
         listener: endTopLevelMethod(void, null, })
diff --git a/pkg/front_end/parser_testcases/general/try_catch.dart.expect b/pkg/front_end/parser_testcases/general/try_catch.dart.expect
index 149adc8..9fc65c4 100644
--- a/pkg/front_end/parser_testcases/general/try_catch.dart.expect
+++ b/pkg/front_end/parser_testcases/general/try_catch.dart.expect
@@ -34,7 +34,7 @@
           beginBlock({, BlockKind(catch clause))
           endBlock(0, {, }, BlockKind(catch clause))
           handleCatchBlock(null, catch, ,)
-        endTryStatement(1, try, null)
+        endTryStatement(1, try, null, })
       endBlockFunctionBody(1, {, })
     endTopLevelMethod(main, null, })
   endTopLevelDeclaration(})
diff --git a/pkg/front_end/parser_testcases/general/try_catch.dart.intertwined.expect b/pkg/front_end/parser_testcases/general/try_catch.dart.intertwined.expect
index 5b7aebd..d237a6a 100644
--- a/pkg/front_end/parser_testcases/general/try_catch.dart.intertwined.expect
+++ b/pkg/front_end/parser_testcases/general/try_catch.dart.intertwined.expect
@@ -68,7 +68,7 @@
                   notEofOrValue(}, })
                   listener: endBlock(0, {, }, BlockKind(catch clause))
                 listener: handleCatchBlock(null, catch, ,)
-                listener: endTryStatement(1, try, null)
+                listener: endTryStatement(1, try, null, })
           notEofOrValue(}, })
           listener: endBlockFunctionBody(1, {, })
         listener: endTopLevelMethod(main, null, })
diff --git a/pkg/front_end/parser_testcases/general/try_finally.dart.expect b/pkg/front_end/parser_testcases/general/try_finally.dart.expect
index 62b392e..44a6d21 100644
--- a/pkg/front_end/parser_testcases/general/try_finally.dart.expect
+++ b/pkg/front_end/parser_testcases/general/try_finally.dart.expect
@@ -16,7 +16,7 @@
           beginBlock({, BlockKind(finally clause))
           endBlock(0, {, }, BlockKind(finally clause))
           handleFinallyBlock(finally)
-        endTryStatement(0, try, finally)
+        endTryStatement(0, try, finally, })
       endBlockFunctionBody(1, {, })
     endTopLevelMethod(main, null, })
   endTopLevelDeclaration(})
diff --git a/pkg/front_end/parser_testcases/general/try_finally.dart.intertwined.expect b/pkg/front_end/parser_testcases/general/try_finally.dart.intertwined.expect
index ba714f2..71a4db7 100644
--- a/pkg/front_end/parser_testcases/general/try_finally.dart.intertwined.expect
+++ b/pkg/front_end/parser_testcases/general/try_finally.dart.intertwined.expect
@@ -42,7 +42,7 @@
                   notEofOrValue(}, })
                   listener: endBlock(0, {, }, BlockKind(finally clause))
                 listener: handleFinallyBlock(finally)
-                listener: endTryStatement(0, try, finally)
+                listener: endTryStatement(0, try, finally, })
           notEofOrValue(}, })
           listener: endBlockFunctionBody(1, {, })
         listener: endTopLevelMethod(main, null, })
diff --git a/pkg/front_end/parser_testcases/nnbd/issue_40793.dart.expect b/pkg/front_end/parser_testcases/nnbd/issue_40793.dart.expect
index 02b3c56..0931337 100644
--- a/pkg/front_end/parser_testcases/nnbd/issue_40793.dart.expect
+++ b/pkg/front_end/parser_testcases/nnbd/issue_40793.dart.expect
@@ -45,8 +45,8 @@
               handleSend(print, ;)
               handleExpressionStatement(;)
             endBlock(1, {, }, BlockKind(statement))
-          endThenStatement(})
-        endIfStatement(if, null)
+          endThenStatement({, })
+        endIfStatement(if, null, })
       endBlockFunctionBody(1, {, })
     endTopLevelMethod(void, null, })
   endTopLevelDeclaration(})
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 0c045f4..38bd1ab 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
@@ -119,8 +119,8 @@
                               listener: handleExpressionStatement(;)
                       notEofOrValue(}, })
                       listener: endBlock(1, {, }, BlockKind(statement))
-                listener: endThenStatement(})
-                listener: endIfStatement(if, null)
+                listener: endThenStatement({, })
+                listener: endIfStatement(if, null, })
           notEofOrValue(}, })
           listener: endBlockFunctionBody(1, {, })
         listener: endTopLevelMethod(void, null, })
diff --git a/pkg/front_end/parser_testcases/nnbd/issue_40793_prime.dart.expect b/pkg/front_end/parser_testcases/nnbd/issue_40793_prime.dart.expect
index ee87e93..22de216 100644
--- a/pkg/front_end/parser_testcases/nnbd/issue_40793_prime.dart.expect
+++ b/pkg/front_end/parser_testcases/nnbd/issue_40793_prime.dart.expect
@@ -47,8 +47,8 @@
               handleSend(print, ;)
               handleExpressionStatement(;)
             endBlock(1, {, }, BlockKind(statement))
-          endThenStatement(})
-        endIfStatement(if, null)
+          endThenStatement({, })
+        endIfStatement(if, null, })
       endBlockFunctionBody(1, {, })
     endTopLevelMethod(void, null, })
   endTopLevelDeclaration(})
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 2312d21..dcaa0b6 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
@@ -128,8 +128,8 @@
                               listener: handleExpressionStatement(;)
                       notEofOrValue(}, })
                       listener: endBlock(1, {, }, BlockKind(statement))
-                listener: endThenStatement(})
-                listener: endIfStatement(if, null)
+                listener: endThenStatement({, })
+                listener: endIfStatement(if, null, })
           notEofOrValue(}, })
           listener: endBlockFunctionBody(1, {, })
         listener: endTopLevelMethod(void, null, })
diff --git a/pkg/front_end/parser_testcases/nnbd/issue_40793_prime2.dart.expect b/pkg/front_end/parser_testcases/nnbd/issue_40793_prime2.dart.expect
index d4ef64f..49d218e 100644
--- a/pkg/front_end/parser_testcases/nnbd/issue_40793_prime2.dart.expect
+++ b/pkg/front_end/parser_testcases/nnbd/issue_40793_prime2.dart.expect
@@ -46,8 +46,8 @@
               handleSend(print, ;)
               handleExpressionStatement(;)
             endBlock(1, {, }, BlockKind(statement))
-          endThenStatement(})
-        endIfStatement(if, null)
+          endThenStatement({, })
+        endIfStatement(if, null, })
       endBlockFunctionBody(1, {, })
     endTopLevelMethod(void, null, })
   endTopLevelDeclaration(})
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 4e2a21b..699e4fb 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
@@ -127,8 +127,8 @@
                               listener: handleExpressionStatement(;)
                       notEofOrValue(}, })
                       listener: endBlock(1, {, }, BlockKind(statement))
-                listener: endThenStatement(})
-                listener: endIfStatement(if, null)
+                listener: endThenStatement({, })
+                listener: endIfStatement(if, null, })
           notEofOrValue(}, })
           listener: endBlockFunctionBody(1, {, })
         listener: endTopLevelMethod(void, null, })
diff --git a/pkg/front_end/parser_testcases/nnbd/issue_40793_prime3.dart.expect b/pkg/front_end/parser_testcases/nnbd/issue_40793_prime3.dart.expect
index a34782b..6cae75a 100644
--- a/pkg/front_end/parser_testcases/nnbd/issue_40793_prime3.dart.expect
+++ b/pkg/front_end/parser_testcases/nnbd/issue_40793_prime3.dart.expect
@@ -44,8 +44,8 @@
               handleSend(print, ;)
               handleExpressionStatement(;)
             endBlock(1, {, }, BlockKind(statement))
-          endThenStatement(})
-        endIfStatement(if, null)
+          endThenStatement({, })
+        endIfStatement(if, null, })
       endBlockFunctionBody(1, {, })
     endTopLevelMethod(void, null, })
   endTopLevelDeclaration(})
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 9f574c9..455dc28 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
@@ -118,8 +118,8 @@
                               listener: handleExpressionStatement(;)
                       notEofOrValue(}, })
                       listener: endBlock(1, {, }, BlockKind(statement))
-                listener: endThenStatement(})
-                listener: endIfStatement(if, null)
+                listener: endThenStatement({, })
+                listener: endIfStatement(if, null, })
           notEofOrValue(}, })
           listener: endBlockFunctionBody(1, {, })
         listener: endTopLevelMethod(void, null, })
diff --git a/pkg/front_end/parser_testcases/nnbd/issue_40834_03.dart.expect b/pkg/front_end/parser_testcases/nnbd/issue_40834_03.dart.expect
index 7b3b96d..2abc5f7 100644
--- a/pkg/front_end/parser_testcases/nnbd/issue_40834_03.dart.expect
+++ b/pkg/front_end/parser_testcases/nnbd/issue_40834_03.dart.expect
@@ -145,8 +145,8 @@
                     handleSend(print, ;)
                     handleExpressionStatement(;)
                   endBlock(1, {, }, BlockKind(statement))
-                endThenStatement(})
-              endIfStatement(if, null)
+                endThenStatement({, })
+              endIfStatement(if, null, })
             endBlockFunctionBody(1, {, })
           endClassMethod(null, void, (, null, })
         endMember()
@@ -202,8 +202,8 @@
                     handleSend(print, ;)
                     handleExpressionStatement(;)
                   endBlock(1, {, }, BlockKind(statement))
-                endThenStatement(})
-              endIfStatement(if, null)
+                endThenStatement({, })
+              endIfStatement(if, null, })
             endBlockFunctionBody(1, {, })
           endClassMethod(null, void, (, null, })
         endMember()
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 b1f604d..26950d8 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
@@ -331,8 +331,8 @@
                                       listener: handleExpressionStatement(;)
                               notEofOrValue(}, })
                               listener: endBlock(1, {, }, BlockKind(statement))
-                        listener: endThenStatement(})
-                        listener: endIfStatement(if, null)
+                        listener: endThenStatement({, })
+                        listener: endIfStatement(if, null, })
                   notEofOrValue(}, })
                   listener: endBlockFunctionBody(1, {, })
                 listener: endClassMethod(null, void, (, null, })
@@ -472,8 +472,8 @@
                                       listener: handleExpressionStatement(;)
                               notEofOrValue(}, })
                               listener: endBlock(1, {, }, BlockKind(statement))
-                        listener: endThenStatement(})
-                        listener: endIfStatement(if, null)
+                        listener: endThenStatement({, })
+                        listener: endIfStatement(if, null, })
                   notEofOrValue(}, })
                   listener: endBlockFunctionBody(1, {, })
                 listener: endClassMethod(null, void, (, null, })
diff --git a/pkg/front_end/parser_testcases/no-triple-shift/define_triple_shift_method.dart.expect b/pkg/front_end/parser_testcases/no-triple-shift/define_triple_shift_method.dart.expect
index 7617e72..db05549 100644
--- a/pkg/front_end/parser_testcases/no-triple-shift/define_triple_shift_method.dart.expect
+++ b/pkg/front_end/parser_testcases/no-triple-shift/define_triple_shift_method.dart.expect
@@ -157,8 +157,8 @@
               handleSend(print, ;)
               handleExpressionStatement(;)
             endBlock(1, {, }, BlockKind(statement))
-          endThenStatement(})
-        endIfStatement(if, null)
+          endThenStatement({, })
+        endIfStatement(if, null, })
       endBlockFunctionBody(5, {, })
     endTopLevelMethod(main, null, })
   endTopLevelDeclaration(})
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 5990717..fbed159 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
@@ -368,8 +368,8 @@
                               listener: handleExpressionStatement(;)
                       notEofOrValue(}, })
                       listener: endBlock(1, {, }, BlockKind(statement))
-                listener: endThenStatement(})
-                listener: endIfStatement(if, null)
+                listener: endThenStatement({, })
+                listener: endIfStatement(if, null, })
           notEofOrValue(}, })
           listener: endBlockFunctionBody(5, {, })
         listener: endTopLevelMethod(main, null, })
diff --git a/pkg/front_end/parser_testcases/no-triple-shift/define_triple_shift_method_prime.dart.expect b/pkg/front_end/parser_testcases/no-triple-shift/define_triple_shift_method_prime.dart.expect
index 3d68e13..4fecf91 100644
--- a/pkg/front_end/parser_testcases/no-triple-shift/define_triple_shift_method_prime.dart.expect
+++ b/pkg/front_end/parser_testcases/no-triple-shift/define_triple_shift_method_prime.dart.expect
@@ -130,8 +130,8 @@
               handleSend(print, ;)
               handleExpressionStatement(;)
             endBlock(1, {, }, BlockKind(statement))
-          endThenStatement(})
-        endIfStatement(if, null)
+          endThenStatement({, })
+        endIfStatement(if, null, })
       endBlockFunctionBody(5, {, })
     endTopLevelMethod(main, null, })
   endTopLevelDeclaration(})
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 3f7eb40..714f9c3 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
@@ -353,8 +353,8 @@
                               listener: handleExpressionStatement(;)
                       notEofOrValue(}, })
                       listener: endBlock(1, {, }, BlockKind(statement))
-                listener: endThenStatement(})
-                listener: endIfStatement(if, null)
+                listener: endThenStatement({, })
+                listener: endIfStatement(if, null, })
           notEofOrValue(}, })
           listener: endBlockFunctionBody(5, {, })
         listener: endTopLevelMethod(main, null, })
diff --git a/pkg/front_end/parser_testcases/patterns/boolean_literal_inside_if_case.dart.expect b/pkg/front_end/parser_testcases/patterns/boolean_literal_inside_if_case.dart.expect
index 9aebe8a..94c8338 100644
--- a/pkg/front_end/parser_testcases/patterns/boolean_literal_inside_if_case.dart.expect
+++ b/pkg/front_end/parser_testcases/patterns/boolean_literal_inside_if_case.dart.expect
@@ -33,8 +33,8 @@
           beginThenStatement({)
             beginBlock({, BlockKind(statement))
             endBlock(0, {, }, BlockKind(statement))
-          endThenStatement(})
-        endIfStatement(if, null)
+          endThenStatement({, })
+        endIfStatement(if, null, })
       endBlockFunctionBody(1, {, })
     endTopLevelMethod(test, null, })
   endTopLevelDeclaration(})
diff --git a/pkg/front_end/parser_testcases/patterns/boolean_literal_inside_if_case.dart.intertwined.expect b/pkg/front_end/parser_testcases/patterns/boolean_literal_inside_if_case.dart.intertwined.expect
index 2fec02f..cb2c74d 100644
--- a/pkg/front_end/parser_testcases/patterns/boolean_literal_inside_if_case.dart.intertwined.expect
+++ b/pkg/front_end/parser_testcases/patterns/boolean_literal_inside_if_case.dart.intertwined.expect
@@ -82,8 +82,8 @@
                       listener: beginBlock({, BlockKind(statement))
                       notEofOrValue(}, })
                       listener: endBlock(0, {, }, BlockKind(statement))
-                listener: endThenStatement(})
-                listener: endIfStatement(if, null)
+                listener: endThenStatement({, })
+                listener: endIfStatement(if, null, })
           notEofOrValue(}, })
           listener: endBlockFunctionBody(1, {, })
         listener: endTopLevelMethod(test, null, })
diff --git a/pkg/front_end/parser_testcases/patterns/caseHead_withClassicPattern_guarded_insideIfStatement.dart.expect b/pkg/front_end/parser_testcases/patterns/caseHead_withClassicPattern_guarded_insideIfStatement.dart.expect
index 63799d9..bcf4a7d 100644
--- a/pkg/front_end/parser_testcases/patterns/caseHead_withClassicPattern_guarded_insideIfStatement.dart.expect
+++ b/pkg/front_end/parser_testcases/patterns/caseHead_withClassicPattern_guarded_insideIfStatement.dart.expect
@@ -34,8 +34,8 @@
           beginThenStatement({)
             beginBlock({, BlockKind(statement))
             endBlock(0, {, }, BlockKind(statement))
-          endThenStatement(})
-        endIfStatement(if, null)
+          endThenStatement({, })
+        endIfStatement(if, null, })
       endBlockFunctionBody(1, {, })
     endTopLevelMethod(void, null, })
   endTopLevelDeclaration(})
diff --git a/pkg/front_end/parser_testcases/patterns/caseHead_withClassicPattern_guarded_insideIfStatement.dart.intertwined.expect b/pkg/front_end/parser_testcases/patterns/caseHead_withClassicPattern_guarded_insideIfStatement.dart.intertwined.expect
index a362203..985335f 100644
--- a/pkg/front_end/parser_testcases/patterns/caseHead_withClassicPattern_guarded_insideIfStatement.dart.intertwined.expect
+++ b/pkg/front_end/parser_testcases/patterns/caseHead_withClassicPattern_guarded_insideIfStatement.dart.intertwined.expect
@@ -89,8 +89,8 @@
                       listener: beginBlock({, BlockKind(statement))
                       notEofOrValue(}, })
                       listener: endBlock(0, {, }, BlockKind(statement))
-                listener: endThenStatement(})
-                listener: endIfStatement(if, null)
+                listener: endThenStatement({, })
+                listener: endIfStatement(if, null, })
           notEofOrValue(}, })
           listener: endBlockFunctionBody(1, {, })
         listener: endTopLevelMethod(void, null, })
diff --git a/pkg/front_end/parser_testcases/patterns/caseHead_withClassicPattern_unguarded_insideIfStatement.dart.expect b/pkg/front_end/parser_testcases/patterns/caseHead_withClassicPattern_unguarded_insideIfStatement.dart.expect
index 68afa69..f43120f 100644
--- a/pkg/front_end/parser_testcases/patterns/caseHead_withClassicPattern_unguarded_insideIfStatement.dart.expect
+++ b/pkg/front_end/parser_testcases/patterns/caseHead_withClassicPattern_unguarded_insideIfStatement.dart.expect
@@ -31,8 +31,8 @@
           beginThenStatement({)
             beginBlock({, BlockKind(statement))
             endBlock(0, {, }, BlockKind(statement))
-          endThenStatement(})
-        endIfStatement(if, null)
+          endThenStatement({, })
+        endIfStatement(if, null, })
       endBlockFunctionBody(1, {, })
     endTopLevelMethod(void, null, })
   endTopLevelDeclaration(})
diff --git a/pkg/front_end/parser_testcases/patterns/caseHead_withClassicPattern_unguarded_insideIfStatement.dart.intertwined.expect b/pkg/front_end/parser_testcases/patterns/caseHead_withClassicPattern_unguarded_insideIfStatement.dart.intertwined.expect
index b1ddbef..bea49ee 100644
--- a/pkg/front_end/parser_testcases/patterns/caseHead_withClassicPattern_unguarded_insideIfStatement.dart.intertwined.expect
+++ b/pkg/front_end/parser_testcases/patterns/caseHead_withClassicPattern_unguarded_insideIfStatement.dart.intertwined.expect
@@ -79,8 +79,8 @@
                       listener: beginBlock({, BlockKind(statement))
                       notEofOrValue(}, })
                       listener: endBlock(0, {, }, BlockKind(statement))
-                listener: endThenStatement(})
-                listener: endIfStatement(if, null)
+                listener: endThenStatement({, })
+                listener: endIfStatement(if, null, })
           notEofOrValue(}, })
           listener: endBlockFunctionBody(1, {, })
         listener: endTopLevelMethod(void, null, })
diff --git a/pkg/front_end/parser_testcases/patterns/caseHead_withNewPattern_guarded_insideIfStatement.dart.expect b/pkg/front_end/parser_testcases/patterns/caseHead_withNewPattern_guarded_insideIfStatement.dart.expect
index d54f165..2a9ae71 100644
--- a/pkg/front_end/parser_testcases/patterns/caseHead_withNewPattern_guarded_insideIfStatement.dart.expect
+++ b/pkg/front_end/parser_testcases/patterns/caseHead_withNewPattern_guarded_insideIfStatement.dart.expect
@@ -40,8 +40,8 @@
           beginThenStatement({)
             beginBlock({, BlockKind(statement))
             endBlock(0, {, }, BlockKind(statement))
-          endThenStatement(})
-        endIfStatement(if, null)
+          endThenStatement({, })
+        endIfStatement(if, null, })
       endBlockFunctionBody(1, {, })
     endTopLevelMethod(void, null, })
   endTopLevelDeclaration(})
diff --git a/pkg/front_end/parser_testcases/patterns/caseHead_withNewPattern_guarded_insideIfStatement.dart.intertwined.expect b/pkg/front_end/parser_testcases/patterns/caseHead_withNewPattern_guarded_insideIfStatement.dart.intertwined.expect
index 4f36f65..68f0206 100644
--- a/pkg/front_end/parser_testcases/patterns/caseHead_withNewPattern_guarded_insideIfStatement.dart.intertwined.expect
+++ b/pkg/front_end/parser_testcases/patterns/caseHead_withNewPattern_guarded_insideIfStatement.dart.intertwined.expect
@@ -96,8 +96,8 @@
                       listener: beginBlock({, BlockKind(statement))
                       notEofOrValue(}, })
                       listener: endBlock(0, {, }, BlockKind(statement))
-                listener: endThenStatement(})
-                listener: endIfStatement(if, null)
+                listener: endThenStatement({, })
+                listener: endIfStatement(if, null, })
           notEofOrValue(}, })
           listener: endBlockFunctionBody(1, {, })
         listener: endTopLevelMethod(void, null, })
diff --git a/pkg/front_end/parser_testcases/patterns/caseHead_withNewPattern_unguarded_insideIfStatement.dart.expect b/pkg/front_end/parser_testcases/patterns/caseHead_withNewPattern_unguarded_insideIfStatement.dart.expect
index daafd2a..729f1f8 100644
--- a/pkg/front_end/parser_testcases/patterns/caseHead_withNewPattern_unguarded_insideIfStatement.dart.expect
+++ b/pkg/front_end/parser_testcases/patterns/caseHead_withNewPattern_unguarded_insideIfStatement.dart.expect
@@ -37,8 +37,8 @@
           beginThenStatement({)
             beginBlock({, BlockKind(statement))
             endBlock(0, {, }, BlockKind(statement))
-          endThenStatement(})
-        endIfStatement(if, null)
+          endThenStatement({, })
+        endIfStatement(if, null, })
       endBlockFunctionBody(1, {, })
     endTopLevelMethod(void, null, })
   endTopLevelDeclaration(})
diff --git a/pkg/front_end/parser_testcases/patterns/caseHead_withNewPattern_unguarded_insideIfStatement.dart.intertwined.expect b/pkg/front_end/parser_testcases/patterns/caseHead_withNewPattern_unguarded_insideIfStatement.dart.intertwined.expect
index ffae26c..895879e 100644
--- a/pkg/front_end/parser_testcases/patterns/caseHead_withNewPattern_unguarded_insideIfStatement.dart.intertwined.expect
+++ b/pkg/front_end/parser_testcases/patterns/caseHead_withNewPattern_unguarded_insideIfStatement.dart.intertwined.expect
@@ -86,8 +86,8 @@
                       listener: beginBlock({, BlockKind(statement))
                       notEofOrValue(}, })
                       listener: endBlock(0, {, }, BlockKind(statement))
-                listener: endThenStatement(})
-                listener: endIfStatement(if, null)
+                listener: endThenStatement({, })
+                listener: endIfStatement(if, null, })
           notEofOrValue(}, })
           listener: endBlockFunctionBody(1, {, })
         listener: endTopLevelMethod(void, null, })
diff --git a/pkg/front_end/parser_testcases/patterns/cast_inside_if_case.dart.expect b/pkg/front_end/parser_testcases/patterns/cast_inside_if_case.dart.expect
index 95663c8..ef16328 100644
--- a/pkg/front_end/parser_testcases/patterns/cast_inside_if_case.dart.expect
+++ b/pkg/front_end/parser_testcases/patterns/cast_inside_if_case.dart.expect
@@ -38,8 +38,8 @@
           beginThenStatement({)
             beginBlock({, BlockKind(statement))
             endBlock(0, {, }, BlockKind(statement))
-          endThenStatement(})
-        endIfStatement(if, null)
+          endThenStatement({, })
+        endIfStatement(if, null, })
       endBlockFunctionBody(1, {, })
     endTopLevelMethod(test, null, })
   endTopLevelDeclaration(})
diff --git a/pkg/front_end/parser_testcases/patterns/cast_inside_if_case.dart.intertwined.expect b/pkg/front_end/parser_testcases/patterns/cast_inside_if_case.dart.intertwined.expect
index 29cdf81..0456aa4 100644
--- a/pkg/front_end/parser_testcases/patterns/cast_inside_if_case.dart.intertwined.expect
+++ b/pkg/front_end/parser_testcases/patterns/cast_inside_if_case.dart.intertwined.expect
@@ -85,8 +85,8 @@
                       listener: beginBlock({, BlockKind(statement))
                       notEofOrValue(}, })
                       listener: endBlock(0, {, }, BlockKind(statement))
-                listener: endThenStatement(})
-                listener: endIfStatement(if, null)
+                listener: endThenStatement({, })
+                listener: endIfStatement(if, null, })
           notEofOrValue(}, })
           listener: endBlockFunctionBody(1, {, })
         listener: endTopLevelMethod(test, null, })
diff --git a/pkg/front_end/parser_testcases/patterns/constant_identifier_doublyPrefixed_insideIfCase.dart.expect b/pkg/front_end/parser_testcases/patterns/constant_identifier_doublyPrefixed_insideIfCase.dart.expect
index 1bfac83..0758f01 100644
--- a/pkg/front_end/parser_testcases/patterns/constant_identifier_doublyPrefixed_insideIfCase.dart.expect
+++ b/pkg/front_end/parser_testcases/patterns/constant_identifier_doublyPrefixed_insideIfCase.dart.expect
@@ -46,8 +46,8 @@
           beginThenStatement({)
             beginBlock({, BlockKind(statement))
             endBlock(0, {, }, BlockKind(statement))
-          endThenStatement(})
-        endIfStatement(if, null)
+          endThenStatement({, })
+        endIfStatement(if, null, })
       endBlockFunctionBody(1, {, })
     endTopLevelMethod(test, null, })
   endTopLevelDeclaration(})
diff --git a/pkg/front_end/parser_testcases/patterns/constant_identifier_doublyPrefixed_insideIfCase.dart.intertwined.expect b/pkg/front_end/parser_testcases/patterns/constant_identifier_doublyPrefixed_insideIfCase.dart.intertwined.expect
index 584fac6..6cb3b3a 100644
--- a/pkg/front_end/parser_testcases/patterns/constant_identifier_doublyPrefixed_insideIfCase.dart.intertwined.expect
+++ b/pkg/front_end/parser_testcases/patterns/constant_identifier_doublyPrefixed_insideIfCase.dart.intertwined.expect
@@ -111,8 +111,8 @@
                       listener: beginBlock({, BlockKind(statement))
                       notEofOrValue(}, })
                       listener: endBlock(0, {, }, BlockKind(statement))
-                listener: endThenStatement(})
-                listener: endIfStatement(if, null)
+                listener: endThenStatement({, })
+                listener: endIfStatement(if, null, })
           notEofOrValue(}, })
           listener: endBlockFunctionBody(1, {, })
         listener: endTopLevelMethod(test, null, })
diff --git a/pkg/front_end/parser_testcases/patterns/constant_identifier_inside_if_case.dart.expect b/pkg/front_end/parser_testcases/patterns/constant_identifier_inside_if_case.dart.expect
index fe02e7a..d85360e 100644
--- a/pkg/front_end/parser_testcases/patterns/constant_identifier_inside_if_case.dart.expect
+++ b/pkg/front_end/parser_testcases/patterns/constant_identifier_inside_if_case.dart.expect
@@ -47,8 +47,8 @@
           beginThenStatement({)
             beginBlock({, BlockKind(statement))
             endBlock(0, {, }, BlockKind(statement))
-          endThenStatement(})
-        endIfStatement(if, null)
+          endThenStatement({, })
+        endIfStatement(if, null, })
       endBlockFunctionBody(2, {, })
     endTopLevelMethod(test, null, })
   endTopLevelDeclaration(})
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 a50b173..0a80403 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
@@ -118,8 +118,8 @@
                       listener: beginBlock({, BlockKind(statement))
                       notEofOrValue(}, })
                       listener: endBlock(0, {, }, BlockKind(statement))
-                listener: endThenStatement(})
-                listener: endIfStatement(if, null)
+                listener: endThenStatement({, })
+                listener: endIfStatement(if, null, })
           notEofOrValue(}, })
           listener: endBlockFunctionBody(2, {, })
         listener: endTopLevelMethod(test, null, })
diff --git a/pkg/front_end/parser_testcases/patterns/constant_identifier_prefixed_insideIfCase.dart.expect b/pkg/front_end/parser_testcases/patterns/constant_identifier_prefixed_insideIfCase.dart.expect
index 17b1254..8036b91 100644
--- a/pkg/front_end/parser_testcases/patterns/constant_identifier_prefixed_insideIfCase.dart.expect
+++ b/pkg/front_end/parser_testcases/patterns/constant_identifier_prefixed_insideIfCase.dart.expect
@@ -41,8 +41,8 @@
           beginThenStatement({)
             beginBlock({, BlockKind(statement))
             endBlock(0, {, }, BlockKind(statement))
-          endThenStatement(})
-        endIfStatement(if, null)
+          endThenStatement({, })
+        endIfStatement(if, null, })
       endBlockFunctionBody(1, {, })
     endTopLevelMethod(test, null, })
   endTopLevelDeclaration(})
diff --git a/pkg/front_end/parser_testcases/patterns/constant_identifier_prefixed_insideIfCase.dart.intertwined.expect b/pkg/front_end/parser_testcases/patterns/constant_identifier_prefixed_insideIfCase.dart.intertwined.expect
index 8367538..06dd2c1 100644
--- a/pkg/front_end/parser_testcases/patterns/constant_identifier_prefixed_insideIfCase.dart.intertwined.expect
+++ b/pkg/front_end/parser_testcases/patterns/constant_identifier_prefixed_insideIfCase.dart.intertwined.expect
@@ -100,8 +100,8 @@
                       listener: beginBlock({, BlockKind(statement))
                       notEofOrValue(}, })
                       listener: endBlock(0, {, }, BlockKind(statement))
-                listener: endThenStatement(})
-                listener: endIfStatement(if, null)
+                listener: endThenStatement({, })
+                listener: endIfStatement(if, null, })
           notEofOrValue(}, })
           listener: endBlockFunctionBody(1, {, })
         listener: endTopLevelMethod(test, null, })
diff --git a/pkg/front_end/parser_testcases/patterns/constant_list_typed_empty_insideIfCase.dart.expect b/pkg/front_end/parser_testcases/patterns/constant_list_typed_empty_insideIfCase.dart.expect
index 1710299..920b919 100644
--- a/pkg/front_end/parser_testcases/patterns/constant_list_typed_empty_insideIfCase.dart.expect
+++ b/pkg/front_end/parser_testcases/patterns/constant_list_typed_empty_insideIfCase.dart.expect
@@ -38,8 +38,8 @@
           beginThenStatement({)
             beginBlock({, BlockKind(statement))
             endBlock(0, {, }, BlockKind(statement))
-          endThenStatement(})
-        endIfStatement(if, null)
+          endThenStatement({, })
+        endIfStatement(if, null, })
       endBlockFunctionBody(1, {, })
     endTopLevelMethod(test, null, })
   endTopLevelDeclaration(})
diff --git a/pkg/front_end/parser_testcases/patterns/constant_list_typed_empty_insideIfCase.dart.intertwined.expect b/pkg/front_end/parser_testcases/patterns/constant_list_typed_empty_insideIfCase.dart.intertwined.expect
index ac54489..80e5259 100644
--- a/pkg/front_end/parser_testcases/patterns/constant_list_typed_empty_insideIfCase.dart.intertwined.expect
+++ b/pkg/front_end/parser_testcases/patterns/constant_list_typed_empty_insideIfCase.dart.intertwined.expect
@@ -91,8 +91,8 @@
                       listener: beginBlock({, BlockKind(statement))
                       notEofOrValue(}, })
                       listener: endBlock(0, {, }, BlockKind(statement))
-                listener: endThenStatement(})
-                listener: endIfStatement(if, null)
+                listener: endThenStatement({, })
+                listener: endIfStatement(if, null, })
           notEofOrValue(}, })
           listener: endBlockFunctionBody(1, {, })
         listener: endTopLevelMethod(test, null, })
diff --git a/pkg/front_end/parser_testcases/patterns/constant_list_typed_nonEmpty_insideIfCase.dart.expect b/pkg/front_end/parser_testcases/patterns/constant_list_typed_nonEmpty_insideIfCase.dart.expect
index 57fe46b..1a12689 100644
--- a/pkg/front_end/parser_testcases/patterns/constant_list_typed_nonEmpty_insideIfCase.dart.expect
+++ b/pkg/front_end/parser_testcases/patterns/constant_list_typed_nonEmpty_insideIfCase.dart.expect
@@ -39,8 +39,8 @@
           beginThenStatement({)
             beginBlock({, BlockKind(statement))
             endBlock(0, {, }, BlockKind(statement))
-          endThenStatement(})
-        endIfStatement(if, null)
+          endThenStatement({, })
+        endIfStatement(if, null, })
       endBlockFunctionBody(1, {, })
     endTopLevelMethod(test, null, })
   endTopLevelDeclaration(})
diff --git a/pkg/front_end/parser_testcases/patterns/constant_list_typed_nonEmpty_insideIfCase.dart.intertwined.expect b/pkg/front_end/parser_testcases/patterns/constant_list_typed_nonEmpty_insideIfCase.dart.intertwined.expect
index 1bbd9f2..ede7956 100644
--- a/pkg/front_end/parser_testcases/patterns/constant_list_typed_nonEmpty_insideIfCase.dart.intertwined.expect
+++ b/pkg/front_end/parser_testcases/patterns/constant_list_typed_nonEmpty_insideIfCase.dart.intertwined.expect
@@ -96,8 +96,8 @@
                       listener: beginBlock({, BlockKind(statement))
                       notEofOrValue(}, })
                       listener: endBlock(0, {, }, BlockKind(statement))
-                listener: endThenStatement(})
-                listener: endIfStatement(if, null)
+                listener: endThenStatement({, })
+                listener: endIfStatement(if, null, })
           notEofOrValue(}, })
           listener: endBlockFunctionBody(1, {, })
         listener: endTopLevelMethod(test, null, })
diff --git a/pkg/front_end/parser_testcases/patterns/constant_list_untyped_empty_insideIfCase.dart.expect b/pkg/front_end/parser_testcases/patterns/constant_list_untyped_empty_insideIfCase.dart.expect
index fa06486..ebd0b11 100644
--- a/pkg/front_end/parser_testcases/patterns/constant_list_untyped_empty_insideIfCase.dart.expect
+++ b/pkg/front_end/parser_testcases/patterns/constant_list_untyped_empty_insideIfCase.dart.expect
@@ -34,8 +34,8 @@
           beginThenStatement({)
             beginBlock({, BlockKind(statement))
             endBlock(0, {, }, BlockKind(statement))
-          endThenStatement(})
-        endIfStatement(if, null)
+          endThenStatement({, })
+        endIfStatement(if, null, })
       endBlockFunctionBody(1, {, })
     endTopLevelMethod(test, null, })
   endTopLevelDeclaration(})
diff --git a/pkg/front_end/parser_testcases/patterns/constant_list_untyped_empty_insideIfCase.dart.intertwined.expect b/pkg/front_end/parser_testcases/patterns/constant_list_untyped_empty_insideIfCase.dart.intertwined.expect
index da6d238..54b844f 100644
--- a/pkg/front_end/parser_testcases/patterns/constant_list_untyped_empty_insideIfCase.dart.intertwined.expect
+++ b/pkg/front_end/parser_testcases/patterns/constant_list_untyped_empty_insideIfCase.dart.intertwined.expect
@@ -86,8 +86,8 @@
                       listener: beginBlock({, BlockKind(statement))
                       notEofOrValue(}, })
                       listener: endBlock(0, {, }, BlockKind(statement))
-                listener: endThenStatement(})
-                listener: endIfStatement(if, null)
+                listener: endThenStatement({, })
+                listener: endIfStatement(if, null, })
           notEofOrValue(}, })
           listener: endBlockFunctionBody(1, {, })
         listener: endTopLevelMethod(test, null, })
diff --git a/pkg/front_end/parser_testcases/patterns/constant_list_untyped_nonEmpty_insideIfCase.dart.expect b/pkg/front_end/parser_testcases/patterns/constant_list_untyped_nonEmpty_insideIfCase.dart.expect
index c3cdc31..82e3fe1 100644
--- a/pkg/front_end/parser_testcases/patterns/constant_list_untyped_nonEmpty_insideIfCase.dart.expect
+++ b/pkg/front_end/parser_testcases/patterns/constant_list_untyped_nonEmpty_insideIfCase.dart.expect
@@ -35,8 +35,8 @@
           beginThenStatement({)
             beginBlock({, BlockKind(statement))
             endBlock(0, {, }, BlockKind(statement))
-          endThenStatement(})
-        endIfStatement(if, null)
+          endThenStatement({, })
+        endIfStatement(if, null, })
       endBlockFunctionBody(1, {, })
     endTopLevelMethod(test, null, })
   endTopLevelDeclaration(})
diff --git a/pkg/front_end/parser_testcases/patterns/constant_list_untyped_nonEmpty_insideIfCase.dart.intertwined.expect b/pkg/front_end/parser_testcases/patterns/constant_list_untyped_nonEmpty_insideIfCase.dart.intertwined.expect
index 4bc6a8c5..0691ce5 100644
--- a/pkg/front_end/parser_testcases/patterns/constant_list_untyped_nonEmpty_insideIfCase.dart.intertwined.expect
+++ b/pkg/front_end/parser_testcases/patterns/constant_list_untyped_nonEmpty_insideIfCase.dart.intertwined.expect
@@ -91,8 +91,8 @@
                       listener: beginBlock({, BlockKind(statement))
                       notEofOrValue(}, })
                       listener: endBlock(0, {, }, BlockKind(statement))
-                listener: endThenStatement(})
-                listener: endIfStatement(if, null)
+                listener: endThenStatement({, })
+                listener: endIfStatement(if, null, })
           notEofOrValue(}, })
           listener: endBlockFunctionBody(1, {, })
         listener: endTopLevelMethod(test, null, })
diff --git a/pkg/front_end/parser_testcases/patterns/constant_map_typed_insideIfCase.dart.expect b/pkg/front_end/parser_testcases/patterns/constant_map_typed_insideIfCase.dart.expect
index 705bbfb..210ac8c 100644
--- a/pkg/front_end/parser_testcases/patterns/constant_map_typed_insideIfCase.dart.expect
+++ b/pkg/front_end/parser_testcases/patterns/constant_map_typed_insideIfCase.dart.expect
@@ -44,8 +44,8 @@
           beginThenStatement({)
             beginBlock({, BlockKind(statement))
             endBlock(0, {, }, BlockKind(statement))
-          endThenStatement(})
-        endIfStatement(if, null)
+          endThenStatement({, })
+        endIfStatement(if, null, })
       endBlockFunctionBody(1, {, })
     endTopLevelMethod(test, null, })
   endTopLevelDeclaration(})
diff --git a/pkg/front_end/parser_testcases/patterns/constant_map_typed_insideIfCase.dart.intertwined.expect b/pkg/front_end/parser_testcases/patterns/constant_map_typed_insideIfCase.dart.intertwined.expect
index 6a29fc1..e1ad065 100644
--- a/pkg/front_end/parser_testcases/patterns/constant_map_typed_insideIfCase.dart.intertwined.expect
+++ b/pkg/front_end/parser_testcases/patterns/constant_map_typed_insideIfCase.dart.intertwined.expect
@@ -108,8 +108,8 @@
                       listener: beginBlock({, BlockKind(statement))
                       notEofOrValue(}, })
                       listener: endBlock(0, {, }, BlockKind(statement))
-                listener: endThenStatement(})
-                listener: endIfStatement(if, null)
+                listener: endThenStatement({, })
+                listener: endIfStatement(if, null, })
           notEofOrValue(}, })
           listener: endBlockFunctionBody(1, {, })
         listener: endTopLevelMethod(test, null, })
diff --git a/pkg/front_end/parser_testcases/patterns/constant_map_untyped_insideIfCase.dart.expect b/pkg/front_end/parser_testcases/patterns/constant_map_untyped_insideIfCase.dart.expect
index 73f38cd..6ddf3aa 100644
--- a/pkg/front_end/parser_testcases/patterns/constant_map_untyped_insideIfCase.dart.expect
+++ b/pkg/front_end/parser_testcases/patterns/constant_map_untyped_insideIfCase.dart.expect
@@ -37,8 +37,8 @@
           beginThenStatement({)
             beginBlock({, BlockKind(statement))
             endBlock(0, {, }, BlockKind(statement))
-          endThenStatement(})
-        endIfStatement(if, null)
+          endThenStatement({, })
+        endIfStatement(if, null, })
       endBlockFunctionBody(1, {, })
     endTopLevelMethod(test, null, })
   endTopLevelDeclaration(})
diff --git a/pkg/front_end/parser_testcases/patterns/constant_map_untyped_insideIfCase.dart.intertwined.expect b/pkg/front_end/parser_testcases/patterns/constant_map_untyped_insideIfCase.dart.intertwined.expect
index 8d33fd2..faba811 100644
--- a/pkg/front_end/parser_testcases/patterns/constant_map_untyped_insideIfCase.dart.intertwined.expect
+++ b/pkg/front_end/parser_testcases/patterns/constant_map_untyped_insideIfCase.dart.intertwined.expect
@@ -100,8 +100,8 @@
                       listener: beginBlock({, BlockKind(statement))
                       notEofOrValue(}, })
                       listener: endBlock(0, {, }, BlockKind(statement))
-                listener: endThenStatement(})
-                listener: endIfStatement(if, null)
+                listener: endThenStatement({, })
+                listener: endIfStatement(if, null, })
           notEofOrValue(}, })
           listener: endBlockFunctionBody(1, {, })
         listener: endTopLevelMethod(test, null, })
diff --git a/pkg/front_end/parser_testcases/patterns/constant_objectExpression_insideIfCase.dart.expect b/pkg/front_end/parser_testcases/patterns/constant_objectExpression_insideIfCase.dart.expect
index 4c2985c..0308c0e 100644
--- a/pkg/front_end/parser_testcases/patterns/constant_objectExpression_insideIfCase.dart.expect
+++ b/pkg/front_end/parser_testcases/patterns/constant_objectExpression_insideIfCase.dart.expect
@@ -38,8 +38,8 @@
           beginThenStatement({)
             beginBlock({, BlockKind(statement))
             endBlock(0, {, }, BlockKind(statement))
-          endThenStatement(})
-        endIfStatement(if, null)
+          endThenStatement({, })
+        endIfStatement(if, null, })
       endBlockFunctionBody(1, {, })
     endTopLevelMethod(test, null, })
   endTopLevelDeclaration(})
diff --git a/pkg/front_end/parser_testcases/patterns/constant_objectExpression_insideIfCase.dart.intertwined.expect b/pkg/front_end/parser_testcases/patterns/constant_objectExpression_insideIfCase.dart.intertwined.expect
index ad4a758..4dde4dc 100644
--- a/pkg/front_end/parser_testcases/patterns/constant_objectExpression_insideIfCase.dart.intertwined.expect
+++ b/pkg/front_end/parser_testcases/patterns/constant_objectExpression_insideIfCase.dart.intertwined.expect
@@ -101,8 +101,8 @@
                       listener: beginBlock({, BlockKind(statement))
                       notEofOrValue(}, })
                       listener: endBlock(0, {, }, BlockKind(statement))
-                listener: endThenStatement(})
-                listener: endIfStatement(if, null)
+                listener: endThenStatement({, })
+                listener: endIfStatement(if, null, })
           notEofOrValue(}, })
           listener: endBlockFunctionBody(1, {, })
         listener: endTopLevelMethod(test, null, })
diff --git a/pkg/front_end/parser_testcases/patterns/constant_parenthesized_insideIfCase.dart.expect b/pkg/front_end/parser_testcases/patterns/constant_parenthesized_insideIfCase.dart.expect
index 1beb6c6..9a93ec4 100644
--- a/pkg/front_end/parser_testcases/patterns/constant_parenthesized_insideIfCase.dart.expect
+++ b/pkg/front_end/parser_testcases/patterns/constant_parenthesized_insideIfCase.dart.expect
@@ -35,8 +35,8 @@
           beginThenStatement({)
             beginBlock({, BlockKind(statement))
             endBlock(0, {, }, BlockKind(statement))
-          endThenStatement(})
-        endIfStatement(if, null)
+          endThenStatement({, })
+        endIfStatement(if, null, })
       endBlockFunctionBody(1, {, })
     endTopLevelMethod(test, null, })
   endTopLevelDeclaration(})
diff --git a/pkg/front_end/parser_testcases/patterns/constant_parenthesized_insideIfCase.dart.intertwined.expect b/pkg/front_end/parser_testcases/patterns/constant_parenthesized_insideIfCase.dart.intertwined.expect
index c0a3aca..7f43ada 100644
--- a/pkg/front_end/parser_testcases/patterns/constant_parenthesized_insideIfCase.dart.intertwined.expect
+++ b/pkg/front_end/parser_testcases/patterns/constant_parenthesized_insideIfCase.dart.intertwined.expect
@@ -93,8 +93,8 @@
                       listener: beginBlock({, BlockKind(statement))
                       notEofOrValue(}, })
                       listener: endBlock(0, {, }, BlockKind(statement))
-                listener: endThenStatement(})
-                listener: endIfStatement(if, null)
+                listener: endThenStatement({, })
+                listener: endIfStatement(if, null, })
           notEofOrValue(}, })
           listener: endBlockFunctionBody(1, {, })
         listener: endTopLevelMethod(test, null, })
diff --git a/pkg/front_end/parser_testcases/patterns/constant_set_typed_insideIfCase.dart.expect b/pkg/front_end/parser_testcases/patterns/constant_set_typed_insideIfCase.dart.expect
index f2d6acd..85dfe50 100644
--- a/pkg/front_end/parser_testcases/patterns/constant_set_typed_insideIfCase.dart.expect
+++ b/pkg/front_end/parser_testcases/patterns/constant_set_typed_insideIfCase.dart.expect
@@ -39,8 +39,8 @@
           beginThenStatement({)
             beginBlock({, BlockKind(statement))
             endBlock(0, {, }, BlockKind(statement))
-          endThenStatement(})
-        endIfStatement(if, null)
+          endThenStatement({, })
+        endIfStatement(if, null, })
       endBlockFunctionBody(1, {, })
     endTopLevelMethod(test, null, })
   endTopLevelDeclaration(})
diff --git a/pkg/front_end/parser_testcases/patterns/constant_set_typed_insideIfCase.dart.intertwined.expect b/pkg/front_end/parser_testcases/patterns/constant_set_typed_insideIfCase.dart.intertwined.expect
index efe979c..ef9cf8e 100644
--- a/pkg/front_end/parser_testcases/patterns/constant_set_typed_insideIfCase.dart.intertwined.expect
+++ b/pkg/front_end/parser_testcases/patterns/constant_set_typed_insideIfCase.dart.intertwined.expect
@@ -96,8 +96,8 @@
                       listener: beginBlock({, BlockKind(statement))
                       notEofOrValue(}, })
                       listener: endBlock(0, {, }, BlockKind(statement))
-                listener: endThenStatement(})
-                listener: endIfStatement(if, null)
+                listener: endThenStatement({, })
+                listener: endIfStatement(if, null, })
           notEofOrValue(}, })
           listener: endBlockFunctionBody(1, {, })
         listener: endTopLevelMethod(test, null, })
diff --git a/pkg/front_end/parser_testcases/patterns/constant_set_untyped_insideIfCase.dart.expect b/pkg/front_end/parser_testcases/patterns/constant_set_untyped_insideIfCase.dart.expect
index 4abac592..50a08db 100644
--- a/pkg/front_end/parser_testcases/patterns/constant_set_untyped_insideIfCase.dart.expect
+++ b/pkg/front_end/parser_testcases/patterns/constant_set_untyped_insideIfCase.dart.expect
@@ -35,8 +35,8 @@
           beginThenStatement({)
             beginBlock({, BlockKind(statement))
             endBlock(0, {, }, BlockKind(statement))
-          endThenStatement(})
-        endIfStatement(if, null)
+          endThenStatement({, })
+        endIfStatement(if, null, })
       endBlockFunctionBody(1, {, })
     endTopLevelMethod(test, null, })
   endTopLevelDeclaration(})
diff --git a/pkg/front_end/parser_testcases/patterns/constant_set_untyped_insideIfCase.dart.intertwined.expect b/pkg/front_end/parser_testcases/patterns/constant_set_untyped_insideIfCase.dart.intertwined.expect
index 214265d..e8b058f 100644
--- a/pkg/front_end/parser_testcases/patterns/constant_set_untyped_insideIfCase.dart.intertwined.expect
+++ b/pkg/front_end/parser_testcases/patterns/constant_set_untyped_insideIfCase.dart.intertwined.expect
@@ -91,8 +91,8 @@
                       listener: beginBlock({, BlockKind(statement))
                       notEofOrValue(}, })
                       listener: endBlock(0, {, }, BlockKind(statement))
-                listener: endThenStatement(})
-                listener: endIfStatement(if, null)
+                listener: endThenStatement({, })
+                listener: endIfStatement(if, null, })
           notEofOrValue(}, })
           listener: endBlockFunctionBody(1, {, })
         listener: endTopLevelMethod(test, null, })
diff --git a/pkg/front_end/parser_testcases/patterns/double_literal_inside_if_case.dart.expect b/pkg/front_end/parser_testcases/patterns/double_literal_inside_if_case.dart.expect
index b7a9637..131a58a 100644
--- a/pkg/front_end/parser_testcases/patterns/double_literal_inside_if_case.dart.expect
+++ b/pkg/front_end/parser_testcases/patterns/double_literal_inside_if_case.dart.expect
@@ -33,8 +33,8 @@
           beginThenStatement({)
             beginBlock({, BlockKind(statement))
             endBlock(0, {, }, BlockKind(statement))
-          endThenStatement(})
-        endIfStatement(if, null)
+          endThenStatement({, })
+        endIfStatement(if, null, })
       endBlockFunctionBody(1, {, })
     endTopLevelMethod(test, null, })
   endTopLevelDeclaration(})
diff --git a/pkg/front_end/parser_testcases/patterns/double_literal_inside_if_case.dart.intertwined.expect b/pkg/front_end/parser_testcases/patterns/double_literal_inside_if_case.dart.intertwined.expect
index e54fbf9..9063cf6 100644
--- a/pkg/front_end/parser_testcases/patterns/double_literal_inside_if_case.dart.intertwined.expect
+++ b/pkg/front_end/parser_testcases/patterns/double_literal_inside_if_case.dart.intertwined.expect
@@ -82,8 +82,8 @@
                       listener: beginBlock({, BlockKind(statement))
                       notEofOrValue(}, })
                       listener: endBlock(0, {, }, BlockKind(statement))
-                listener: endThenStatement(})
-                listener: endIfStatement(if, null)
+                listener: endThenStatement({, })
+                listener: endIfStatement(if, null, })
           notEofOrValue(}, })
           listener: endBlockFunctionBody(1, {, })
         listener: endTopLevelMethod(test, null, })
diff --git a/pkg/front_end/parser_testcases/patterns/error_recovery_after_question_suffix_in_expression.dart.expect b/pkg/front_end/parser_testcases/patterns/error_recovery_after_question_suffix_in_expression.dart.expect
index b7ed347..c5da52f 100644
--- a/pkg/front_end/parser_testcases/patterns/error_recovery_after_question_suffix_in_expression.dart.expect
+++ b/pkg/front_end/parser_testcases/patterns/error_recovery_after_question_suffix_in_expression.dart.expect
@@ -44,7 +44,7 @@
           beginBlock({, BlockKind(catch clause))
           endBlock(0, {, }, BlockKind(catch clause))
           handleCatchBlock(null, catch, null)
-        endTryStatement(1, try, null)
+        endTryStatement(1, try, null, })
       endBlockFunctionBody(1, {, })
     endTopLevelMethod(f, null, })
   endTopLevelDeclaration(})
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 3a09f7e..a5dce20 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
@@ -101,7 +101,7 @@
                   notEofOrValue(}, })
                   listener: endBlock(0, {, }, BlockKind(catch clause))
                 listener: handleCatchBlock(null, catch, null)
-                listener: endTryStatement(1, try, null)
+                listener: endTryStatement(1, try, null, })
           notEofOrValue(}, })
           listener: endBlockFunctionBody(1, {, })
         listener: endTopLevelMethod(f, null, })
diff --git a/pkg/front_end/parser_testcases/patterns/final_variable_inside_if_case.dart.expect b/pkg/front_end/parser_testcases/patterns/final_variable_inside_if_case.dart.expect
index c109ce8..9c93726 100644
--- a/pkg/front_end/parser_testcases/patterns/final_variable_inside_if_case.dart.expect
+++ b/pkg/front_end/parser_testcases/patterns/final_variable_inside_if_case.dart.expect
@@ -32,8 +32,8 @@
           beginThenStatement({)
             beginBlock({, BlockKind(statement))
             endBlock(0, {, }, BlockKind(statement))
-          endThenStatement(})
-        endIfStatement(if, null)
+          endThenStatement({, })
+        endIfStatement(if, null, })
       endBlockFunctionBody(1, {, })
     endTopLevelMethod(test, null, })
   endTopLevelDeclaration(})
diff --git a/pkg/front_end/parser_testcases/patterns/final_variable_inside_if_case.dart.intertwined.expect b/pkg/front_end/parser_testcases/patterns/final_variable_inside_if_case.dart.intertwined.expect
index 7dc6331..1c3ebed 100644
--- a/pkg/front_end/parser_testcases/patterns/final_variable_inside_if_case.dart.intertwined.expect
+++ b/pkg/front_end/parser_testcases/patterns/final_variable_inside_if_case.dart.intertwined.expect
@@ -78,8 +78,8 @@
                       listener: beginBlock({, BlockKind(statement))
                       notEofOrValue(}, })
                       listener: endBlock(0, {, }, BlockKind(statement))
-                listener: endThenStatement(})
-                listener: endIfStatement(if, null)
+                listener: endThenStatement({, })
+                listener: endIfStatement(if, null, })
           notEofOrValue(}, })
           listener: endBlockFunctionBody(1, {, })
         listener: endTopLevelMethod(test, null, })
diff --git a/pkg/front_end/parser_testcases/patterns/functionExpression_allowed_insideIfCaseWhenClause_statement.dart.expect b/pkg/front_end/parser_testcases/patterns/functionExpression_allowed_insideIfCaseWhenClause_statement.dart.expect
index b882979..2e3510f 100644
--- a/pkg/front_end/parser_testcases/patterns/functionExpression_allowed_insideIfCaseWhenClause_statement.dart.expect
+++ b/pkg/front_end/parser_testcases/patterns/functionExpression_allowed_insideIfCaseWhenClause_statement.dart.expect
@@ -53,8 +53,8 @@
           beginThenStatement({)
             beginBlock({, BlockKind(statement))
             endBlock(0, {, }, BlockKind(statement))
-          endThenStatement(})
-        endIfStatement(if, null)
+          endThenStatement({, })
+        endIfStatement(if, null, })
       endBlockFunctionBody(1, {, })
     endTopLevelMethod(f, null, })
   endTopLevelDeclaration(})
diff --git a/pkg/front_end/parser_testcases/patterns/functionExpression_allowed_insideIfCaseWhenClause_statement.dart.intertwined.expect b/pkg/front_end/parser_testcases/patterns/functionExpression_allowed_insideIfCaseWhenClause_statement.dart.intertwined.expect
index 05037f2..66041d3 100644
--- a/pkg/front_end/parser_testcases/patterns/functionExpression_allowed_insideIfCaseWhenClause_statement.dart.intertwined.expect
+++ b/pkg/front_end/parser_testcases/patterns/functionExpression_allowed_insideIfCaseWhenClause_statement.dart.intertwined.expect
@@ -134,8 +134,8 @@
                       listener: beginBlock({, BlockKind(statement))
                       notEofOrValue(}, })
                       listener: endBlock(0, {, }, BlockKind(statement))
-                listener: endThenStatement(})
-                listener: endIfStatement(if, null)
+                listener: endThenStatement({, })
+                listener: endIfStatement(if, null, })
           notEofOrValue(}, })
           listener: endBlockFunctionBody(1, {, })
         listener: endTopLevelMethod(f, null, })
diff --git a/pkg/front_end/parser_testcases/patterns/integer_literal_inside_if_case.dart.expect b/pkg/front_end/parser_testcases/patterns/integer_literal_inside_if_case.dart.expect
index b9d7d38..d1b7267 100644
--- a/pkg/front_end/parser_testcases/patterns/integer_literal_inside_if_case.dart.expect
+++ b/pkg/front_end/parser_testcases/patterns/integer_literal_inside_if_case.dart.expect
@@ -33,8 +33,8 @@
           beginThenStatement({)
             beginBlock({, BlockKind(statement))
             endBlock(0, {, }, BlockKind(statement))
-          endThenStatement(})
-        endIfStatement(if, null)
+          endThenStatement({, })
+        endIfStatement(if, null, })
       endBlockFunctionBody(1, {, })
     endTopLevelMethod(test, null, })
   endTopLevelDeclaration(})
diff --git a/pkg/front_end/parser_testcases/patterns/integer_literal_inside_if_case.dart.intertwined.expect b/pkg/front_end/parser_testcases/patterns/integer_literal_inside_if_case.dart.intertwined.expect
index 78338ff..48d068e 100644
--- a/pkg/front_end/parser_testcases/patterns/integer_literal_inside_if_case.dart.intertwined.expect
+++ b/pkg/front_end/parser_testcases/patterns/integer_literal_inside_if_case.dart.intertwined.expect
@@ -82,8 +82,8 @@
                       listener: beginBlock({, BlockKind(statement))
                       notEofOrValue(}, })
                       listener: endBlock(0, {, }, BlockKind(statement))
-                listener: endThenStatement(})
-                listener: endIfStatement(if, null)
+                listener: endThenStatement({, })
+                listener: endIfStatement(if, null, })
           notEofOrValue(}, })
           listener: endBlockFunctionBody(1, {, })
         listener: endTopLevelMethod(test, null, })
diff --git a/pkg/front_end/parser_testcases/patterns/issue51415.dart.expect b/pkg/front_end/parser_testcases/patterns/issue51415.dart.expect
index f57ec7f..233d3de 100644
--- a/pkg/front_end/parser_testcases/patterns/issue51415.dart.expect
+++ b/pkg/front_end/parser_testcases/patterns/issue51415.dart.expect
@@ -37,8 +37,8 @@
             beginBlock({, BlockKind(statement))
               handleEmptyStatement(;)
             endBlock(1, {, }, BlockKind(statement))
-          endThenStatement(})
-        endIfStatement(if, null)
+          endThenStatement({, })
+        endIfStatement(if, null, })
         beginIfStatement(if)
           handleIdentifier(obj, expression)
           handleNoTypeArguments(case)
@@ -71,8 +71,8 @@
             beginBlock({, BlockKind(statement))
               handleEmptyStatement(;)
             endBlock(1, {, }, BlockKind(statement))
-          endThenStatement(})
-        endIfStatement(if, null)
+          endThenStatement({, })
+        endIfStatement(if, null, })
         beginIfStatement(if)
           handleIdentifier(obj, expression)
           handleNoTypeArguments(case)
@@ -102,8 +102,8 @@
             beginBlock({, BlockKind(statement))
               handleEmptyStatement(;)
             endBlock(1, {, }, BlockKind(statement))
-          endThenStatement(})
-        endIfStatement(if, null)
+          endThenStatement({, })
+        endIfStatement(if, null, })
       endBlockFunctionBody(3, {, })
     endTopLevelMethod(void, null, })
   endTopLevelDeclaration(})
diff --git a/pkg/front_end/parser_testcases/patterns/issue51415.dart.intertwined.expect b/pkg/front_end/parser_testcases/patterns/issue51415.dart.intertwined.expect
index 7ab14a9..39cd9e3 100644
--- a/pkg/front_end/parser_testcases/patterns/issue51415.dart.intertwined.expect
+++ b/pkg/front_end/parser_testcases/patterns/issue51415.dart.intertwined.expect
@@ -109,8 +109,8 @@
                             listener: handleEmptyStatement(;)
                       notEofOrValue(}, })
                       listener: endBlock(1, {, }, BlockKind(statement))
-                listener: endThenStatement(})
-                listener: endIfStatement(if, null)
+                listener: endThenStatement({, })
+                listener: endIfStatement(if, null, })
           notEofOrValue(}, if)
           parseStatement(})
             parseStatementX(})
@@ -227,8 +227,8 @@
                             listener: handleEmptyStatement(;)
                       notEofOrValue(}, })
                       listener: endBlock(1, {, }, BlockKind(statement))
-                listener: endThenStatement(})
-                listener: endIfStatement(if, null)
+                listener: endThenStatement({, })
+                listener: endIfStatement(if, null, })
           notEofOrValue(}, if)
           parseStatement(})
             parseStatementX(})
@@ -314,8 +314,8 @@
                             listener: handleEmptyStatement(;)
                       notEofOrValue(}, })
                       listener: endBlock(1, {, }, BlockKind(statement))
-                listener: endThenStatement(})
-                listener: endIfStatement(if, null)
+                listener: endThenStatement({, })
+                listener: endIfStatement(if, null, })
           notEofOrValue(}, })
           listener: endBlockFunctionBody(3, {, })
         listener: endTopLevelMethod(void, null, })
diff --git a/pkg/front_end/parser_testcases/patterns/logical_and_inside_if_case.dart.expect b/pkg/front_end/parser_testcases/patterns/logical_and_inside_if_case.dart.expect
index 9f63e02..a7dfc3f 100644
--- a/pkg/front_end/parser_testcases/patterns/logical_and_inside_if_case.dart.expect
+++ b/pkg/front_end/parser_testcases/patterns/logical_and_inside_if_case.dart.expect
@@ -42,8 +42,8 @@
           beginThenStatement({)
             beginBlock({, BlockKind(statement))
             endBlock(0, {, }, BlockKind(statement))
-          endThenStatement(})
-        endIfStatement(if, null)
+          endThenStatement({, })
+        endIfStatement(if, null, })
       endBlockFunctionBody(1, {, })
     endTopLevelMethod(test, null, })
   endTopLevelDeclaration(})
diff --git a/pkg/front_end/parser_testcases/patterns/logical_and_inside_if_case.dart.intertwined.expect b/pkg/front_end/parser_testcases/patterns/logical_and_inside_if_case.dart.intertwined.expect
index 1a6d2ca..dee8bce 100644
--- a/pkg/front_end/parser_testcases/patterns/logical_and_inside_if_case.dart.intertwined.expect
+++ b/pkg/front_end/parser_testcases/patterns/logical_and_inside_if_case.dart.intertwined.expect
@@ -91,8 +91,8 @@
                       listener: beginBlock({, BlockKind(statement))
                       notEofOrValue(}, })
                       listener: endBlock(0, {, }, BlockKind(statement))
-                listener: endThenStatement(})
-                listener: endIfStatement(if, null)
+                listener: endThenStatement({, })
+                listener: endIfStatement(if, null, })
           notEofOrValue(}, })
           listener: endBlockFunctionBody(1, {, })
         listener: endTopLevelMethod(test, null, })
diff --git a/pkg/front_end/parser_testcases/patterns/logical_or_inside_if_case.dart.expect b/pkg/front_end/parser_testcases/patterns/logical_or_inside_if_case.dart.expect
index 35402f4..8d297d0 100644
--- a/pkg/front_end/parser_testcases/patterns/logical_or_inside_if_case.dart.expect
+++ b/pkg/front_end/parser_testcases/patterns/logical_or_inside_if_case.dart.expect
@@ -42,8 +42,8 @@
           beginThenStatement({)
             beginBlock({, BlockKind(statement))
             endBlock(0, {, }, BlockKind(statement))
-          endThenStatement(})
-        endIfStatement(if, null)
+          endThenStatement({, })
+        endIfStatement(if, null, })
       endBlockFunctionBody(1, {, })
     endTopLevelMethod(test, null, })
   endTopLevelDeclaration(})
diff --git a/pkg/front_end/parser_testcases/patterns/logical_or_inside_if_case.dart.intertwined.expect b/pkg/front_end/parser_testcases/patterns/logical_or_inside_if_case.dart.intertwined.expect
index 0962973..50bf5f5 100644
--- a/pkg/front_end/parser_testcases/patterns/logical_or_inside_if_case.dart.intertwined.expect
+++ b/pkg/front_end/parser_testcases/patterns/logical_or_inside_if_case.dart.intertwined.expect
@@ -91,8 +91,8 @@
                       listener: beginBlock({, BlockKind(statement))
                       notEofOrValue(}, })
                       listener: endBlock(0, {, }, BlockKind(statement))
-                listener: endThenStatement(})
-                listener: endIfStatement(if, null)
+                listener: endThenStatement({, })
+                listener: endIfStatement(if, null, })
           notEofOrValue(}, })
           listener: endBlockFunctionBody(1, {, })
         listener: endTopLevelMethod(test, null, })
diff --git a/pkg/front_end/parser_testcases/patterns/null_assert_inside_if_case.dart.expect b/pkg/front_end/parser_testcases/patterns/null_assert_inside_if_case.dart.expect
index f29978a..15fc10f 100644
--- a/pkg/front_end/parser_testcases/patterns/null_assert_inside_if_case.dart.expect
+++ b/pkg/front_end/parser_testcases/patterns/null_assert_inside_if_case.dart.expect
@@ -33,8 +33,8 @@
           beginThenStatement({)
             beginBlock({, BlockKind(statement))
             endBlock(0, {, }, BlockKind(statement))
-          endThenStatement(})
-        endIfStatement(if, null)
+          endThenStatement({, })
+        endIfStatement(if, null, })
       endBlockFunctionBody(1, {, })
     endTopLevelMethod(test, null, })
   endTopLevelDeclaration(})
diff --git a/pkg/front_end/parser_testcases/patterns/null_assert_inside_if_case.dart.intertwined.expect b/pkg/front_end/parser_testcases/patterns/null_assert_inside_if_case.dart.intertwined.expect
index ac48871..87fede0 100644
--- a/pkg/front_end/parser_testcases/patterns/null_assert_inside_if_case.dart.intertwined.expect
+++ b/pkg/front_end/parser_testcases/patterns/null_assert_inside_if_case.dart.intertwined.expect
@@ -79,8 +79,8 @@
                       listener: beginBlock({, BlockKind(statement))
                       notEofOrValue(}, })
                       listener: endBlock(0, {, }, BlockKind(statement))
-                listener: endThenStatement(})
-                listener: endIfStatement(if, null)
+                listener: endThenStatement({, })
+                listener: endIfStatement(if, null, })
           notEofOrValue(}, })
           listener: endBlockFunctionBody(1, {, })
         listener: endTopLevelMethod(test, null, })
diff --git a/pkg/front_end/parser_testcases/patterns/null_check_inside_if_case.dart.expect b/pkg/front_end/parser_testcases/patterns/null_check_inside_if_case.dart.expect
index 77b1723..fe8330d 100644
--- a/pkg/front_end/parser_testcases/patterns/null_check_inside_if_case.dart.expect
+++ b/pkg/front_end/parser_testcases/patterns/null_check_inside_if_case.dart.expect
@@ -33,8 +33,8 @@
           beginThenStatement({)
             beginBlock({, BlockKind(statement))
             endBlock(0, {, }, BlockKind(statement))
-          endThenStatement(})
-        endIfStatement(if, null)
+          endThenStatement({, })
+        endIfStatement(if, null, })
       endBlockFunctionBody(1, {, })
     endTopLevelMethod(test, null, })
   endTopLevelDeclaration(})
diff --git a/pkg/front_end/parser_testcases/patterns/null_check_inside_if_case.dart.intertwined.expect b/pkg/front_end/parser_testcases/patterns/null_check_inside_if_case.dart.intertwined.expect
index bbdbb00..bb886f8 100644
--- a/pkg/front_end/parser_testcases/patterns/null_check_inside_if_case.dart.intertwined.expect
+++ b/pkg/front_end/parser_testcases/patterns/null_check_inside_if_case.dart.intertwined.expect
@@ -79,8 +79,8 @@
                       listener: beginBlock({, BlockKind(statement))
                       notEofOrValue(}, })
                       listener: endBlock(0, {, }, BlockKind(statement))
-                listener: endThenStatement(})
-                listener: endIfStatement(if, null)
+                listener: endThenStatement({, })
+                listener: endIfStatement(if, null, })
           notEofOrValue(}, })
           listener: endBlockFunctionBody(1, {, })
         listener: endTopLevelMethod(test, null, })
diff --git a/pkg/front_end/parser_testcases/patterns/null_literal_inside_if_case.dart.expect b/pkg/front_end/parser_testcases/patterns/null_literal_inside_if_case.dart.expect
index 2411da1..298a5e8 100644
--- a/pkg/front_end/parser_testcases/patterns/null_literal_inside_if_case.dart.expect
+++ b/pkg/front_end/parser_testcases/patterns/null_literal_inside_if_case.dart.expect
@@ -33,8 +33,8 @@
           beginThenStatement({)
             beginBlock({, BlockKind(statement))
             endBlock(0, {, }, BlockKind(statement))
-          endThenStatement(})
-        endIfStatement(if, null)
+          endThenStatement({, })
+        endIfStatement(if, null, })
       endBlockFunctionBody(1, {, })
     endTopLevelMethod(test, null, })
   endTopLevelDeclaration(})
diff --git a/pkg/front_end/parser_testcases/patterns/null_literal_inside_if_case.dart.intertwined.expect b/pkg/front_end/parser_testcases/patterns/null_literal_inside_if_case.dart.intertwined.expect
index 4ed67fb..fb18451 100644
--- a/pkg/front_end/parser_testcases/patterns/null_literal_inside_if_case.dart.intertwined.expect
+++ b/pkg/front_end/parser_testcases/patterns/null_literal_inside_if_case.dart.intertwined.expect
@@ -82,8 +82,8 @@
                       listener: beginBlock({, BlockKind(statement))
                       notEofOrValue(}, })
                       listener: endBlock(0, {, }, BlockKind(statement))
-                listener: endThenStatement(})
-                listener: endIfStatement(if, null)
+                listener: endThenStatement({, })
+                listener: endIfStatement(if, null, })
           notEofOrValue(}, })
           listener: endBlockFunctionBody(1, {, })
         listener: endTopLevelMethod(test, null, })
diff --git a/pkg/front_end/parser_testcases/patterns/relational_inside_if_case.dart.expect b/pkg/front_end/parser_testcases/patterns/relational_inside_if_case.dart.expect
index 1b3d0db..c152505 100644
--- a/pkg/front_end/parser_testcases/patterns/relational_inside_if_case.dart.expect
+++ b/pkg/front_end/parser_testcases/patterns/relational_inside_if_case.dart.expect
@@ -32,8 +32,8 @@
           beginThenStatement({)
             beginBlock({, BlockKind(statement))
             endBlock(0, {, }, BlockKind(statement))
-          endThenStatement(})
-        endIfStatement(if, null)
+          endThenStatement({, })
+        endIfStatement(if, null, })
       endBlockFunctionBody(1, {, })
     endTopLevelMethod(test, null, })
   endTopLevelDeclaration(})
diff --git a/pkg/front_end/parser_testcases/patterns/relational_inside_if_case.dart.intertwined.expect b/pkg/front_end/parser_testcases/patterns/relational_inside_if_case.dart.intertwined.expect
index eb8edc1..0148804 100644
--- a/pkg/front_end/parser_testcases/patterns/relational_inside_if_case.dart.intertwined.expect
+++ b/pkg/front_end/parser_testcases/patterns/relational_inside_if_case.dart.intertwined.expect
@@ -81,8 +81,8 @@
                       listener: beginBlock({, BlockKind(statement))
                       notEofOrValue(}, })
                       listener: endBlock(0, {, }, BlockKind(statement))
-                listener: endThenStatement(})
-                listener: endIfStatement(if, null)
+                listener: endThenStatement({, })
+                listener: endIfStatement(if, null, })
           notEofOrValue(}, })
           listener: endBlockFunctionBody(1, {, })
         listener: endTopLevelMethod(test, null, })
diff --git a/pkg/front_end/parser_testcases/patterns/string_literal_inside_if_case.dart.expect b/pkg/front_end/parser_testcases/patterns/string_literal_inside_if_case.dart.expect
index 9fd240c..84126a2 100644
--- a/pkg/front_end/parser_testcases/patterns/string_literal_inside_if_case.dart.expect
+++ b/pkg/front_end/parser_testcases/patterns/string_literal_inside_if_case.dart.expect
@@ -34,8 +34,8 @@
           beginThenStatement({)
             beginBlock({, BlockKind(statement))
             endBlock(0, {, }, BlockKind(statement))
-          endThenStatement(})
-        endIfStatement(if, null)
+          endThenStatement({, })
+        endIfStatement(if, null, })
       endBlockFunctionBody(1, {, })
     endTopLevelMethod(test, null, })
   endTopLevelDeclaration(})
diff --git a/pkg/front_end/parser_testcases/patterns/string_literal_inside_if_case.dart.intertwined.expect b/pkg/front_end/parser_testcases/patterns/string_literal_inside_if_case.dart.intertwined.expect
index 0384e36..49e41cf 100644
--- a/pkg/front_end/parser_testcases/patterns/string_literal_inside_if_case.dart.intertwined.expect
+++ b/pkg/front_end/parser_testcases/patterns/string_literal_inside_if_case.dart.intertwined.expect
@@ -84,8 +84,8 @@
                       listener: beginBlock({, BlockKind(statement))
                       notEofOrValue(}, })
                       listener: endBlock(0, {, }, BlockKind(statement))
-                listener: endThenStatement(})
-                listener: endIfStatement(if, null)
+                listener: endThenStatement({, })
+                listener: endIfStatement(if, null, })
           notEofOrValue(}, })
           listener: endBlockFunctionBody(1, {, })
         listener: endTopLevelMethod(test, null, })
diff --git a/pkg/front_end/parser_testcases/patterns/typed_final_variable_inside_if_case.dart.expect b/pkg/front_end/parser_testcases/patterns/typed_final_variable_inside_if_case.dart.expect
index f647871..a66cb26 100644
--- a/pkg/front_end/parser_testcases/patterns/typed_final_variable_inside_if_case.dart.expect
+++ b/pkg/front_end/parser_testcases/patterns/typed_final_variable_inside_if_case.dart.expect
@@ -34,8 +34,8 @@
           beginThenStatement({)
             beginBlock({, BlockKind(statement))
             endBlock(0, {, }, BlockKind(statement))
-          endThenStatement(})
-        endIfStatement(if, null)
+          endThenStatement({, })
+        endIfStatement(if, null, })
       endBlockFunctionBody(1, {, })
     endTopLevelMethod(test, null, })
   endTopLevelDeclaration(})
diff --git a/pkg/front_end/parser_testcases/patterns/typed_final_variable_inside_if_case.dart.intertwined.expect b/pkg/front_end/parser_testcases/patterns/typed_final_variable_inside_if_case.dart.intertwined.expect
index bb86490..cbcf4c5 100644
--- a/pkg/front_end/parser_testcases/patterns/typed_final_variable_inside_if_case.dart.intertwined.expect
+++ b/pkg/front_end/parser_testcases/patterns/typed_final_variable_inside_if_case.dart.intertwined.expect
@@ -80,8 +80,8 @@
                       listener: beginBlock({, BlockKind(statement))
                       notEofOrValue(}, })
                       listener: endBlock(0, {, }, BlockKind(statement))
-                listener: endThenStatement(})
-                listener: endIfStatement(if, null)
+                listener: endThenStatement({, })
+                listener: endIfStatement(if, null, })
           notEofOrValue(}, })
           listener: endBlockFunctionBody(1, {, })
         listener: endTopLevelMethod(test, null, })
diff --git a/pkg/front_end/parser_testcases/patterns/typed_variable_inside_if_case.dart.expect b/pkg/front_end/parser_testcases/patterns/typed_variable_inside_if_case.dart.expect
index 3998d2d..750fe2f 100644
--- a/pkg/front_end/parser_testcases/patterns/typed_variable_inside_if_case.dart.expect
+++ b/pkg/front_end/parser_testcases/patterns/typed_variable_inside_if_case.dart.expect
@@ -34,8 +34,8 @@
           beginThenStatement({)
             beginBlock({, BlockKind(statement))
             endBlock(0, {, }, BlockKind(statement))
-          endThenStatement(})
-        endIfStatement(if, null)
+          endThenStatement({, })
+        endIfStatement(if, null, })
       endBlockFunctionBody(1, {, })
     endTopLevelMethod(test, null, })
   endTopLevelDeclaration(})
diff --git a/pkg/front_end/parser_testcases/patterns/typed_variable_inside_if_case.dart.intertwined.expect b/pkg/front_end/parser_testcases/patterns/typed_variable_inside_if_case.dart.intertwined.expect
index 58f9cbb..86d0c98 100644
--- a/pkg/front_end/parser_testcases/patterns/typed_variable_inside_if_case.dart.intertwined.expect
+++ b/pkg/front_end/parser_testcases/patterns/typed_variable_inside_if_case.dart.intertwined.expect
@@ -80,8 +80,8 @@
                       listener: beginBlock({, BlockKind(statement))
                       notEofOrValue(}, })
                       listener: endBlock(0, {, }, BlockKind(statement))
-                listener: endThenStatement(})
-                listener: endIfStatement(if, null)
+                listener: endThenStatement({, })
+                listener: endIfStatement(if, null, })
           notEofOrValue(}, })
           listener: endBlockFunctionBody(1, {, })
         listener: endTopLevelMethod(test, null, })
diff --git a/pkg/front_end/parser_testcases/patterns/var_variable_inside_if_case.dart.expect b/pkg/front_end/parser_testcases/patterns/var_variable_inside_if_case.dart.expect
index f7e06d9..866c2f1 100644
--- a/pkg/front_end/parser_testcases/patterns/var_variable_inside_if_case.dart.expect
+++ b/pkg/front_end/parser_testcases/patterns/var_variable_inside_if_case.dart.expect
@@ -32,8 +32,8 @@
           beginThenStatement({)
             beginBlock({, BlockKind(statement))
             endBlock(0, {, }, BlockKind(statement))
-          endThenStatement(})
-        endIfStatement(if, null)
+          endThenStatement({, })
+        endIfStatement(if, null, })
       endBlockFunctionBody(1, {, })
     endTopLevelMethod(test, null, })
   endTopLevelDeclaration(})
diff --git a/pkg/front_end/parser_testcases/patterns/var_variable_inside_if_case.dart.intertwined.expect b/pkg/front_end/parser_testcases/patterns/var_variable_inside_if_case.dart.intertwined.expect
index fc8351c..34cfb53 100644
--- a/pkg/front_end/parser_testcases/patterns/var_variable_inside_if_case.dart.intertwined.expect
+++ b/pkg/front_end/parser_testcases/patterns/var_variable_inside_if_case.dart.intertwined.expect
@@ -78,8 +78,8 @@
                       listener: beginBlock({, BlockKind(statement))
                       notEofOrValue(}, })
                       listener: endBlock(0, {, }, BlockKind(statement))
-                listener: endThenStatement(})
-                listener: endIfStatement(if, null)
+                listener: endThenStatement({, })
+                listener: endIfStatement(if, null, })
           notEofOrValue(}, })
           listener: endBlockFunctionBody(1, {, })
         listener: endTopLevelMethod(test, null, })
diff --git a/pkg/front_end/parser_testcases/patterns/wildcard_bare_insideIfCase.dart.expect b/pkg/front_end/parser_testcases/patterns/wildcard_bare_insideIfCase.dart.expect
index 1463d4f..4ba1407 100644
--- a/pkg/front_end/parser_testcases/patterns/wildcard_bare_insideIfCase.dart.expect
+++ b/pkg/front_end/parser_testcases/patterns/wildcard_bare_insideIfCase.dart.expect
@@ -30,8 +30,8 @@
           beginThenStatement({)
             beginBlock({, BlockKind(statement))
             endBlock(0, {, }, BlockKind(statement))
-          endThenStatement(})
-        endIfStatement(if, null)
+          endThenStatement({, })
+        endIfStatement(if, null, })
       endBlockFunctionBody(1, {, })
     endTopLevelMethod(void, null, })
   endTopLevelDeclaration(})
diff --git a/pkg/front_end/parser_testcases/patterns/wildcard_bare_insideIfCase.dart.intertwined.expect b/pkg/front_end/parser_testcases/patterns/wildcard_bare_insideIfCase.dart.intertwined.expect
index 111ee50..78f7c4a 100644
--- a/pkg/front_end/parser_testcases/patterns/wildcard_bare_insideIfCase.dart.intertwined.expect
+++ b/pkg/front_end/parser_testcases/patterns/wildcard_bare_insideIfCase.dart.intertwined.expect
@@ -75,8 +75,8 @@
                       listener: beginBlock({, BlockKind(statement))
                       notEofOrValue(}, })
                       listener: endBlock(0, {, }, BlockKind(statement))
-                listener: endThenStatement(})
-                listener: endIfStatement(if, null)
+                listener: endThenStatement({, })
+                listener: endIfStatement(if, null, })
           notEofOrValue(}, })
           listener: endBlockFunctionBody(1, {, })
         listener: endTopLevelMethod(void, null, })
diff --git a/pkg/front_end/parser_testcases/patterns/wildcard_final_typed_insideIfCase.dart.expect b/pkg/front_end/parser_testcases/patterns/wildcard_final_typed_insideIfCase.dart.expect
index 57c11f3..ede7422 100644
--- a/pkg/front_end/parser_testcases/patterns/wildcard_final_typed_insideIfCase.dart.expect
+++ b/pkg/front_end/parser_testcases/patterns/wildcard_final_typed_insideIfCase.dart.expect
@@ -32,8 +32,8 @@
           beginThenStatement({)
             beginBlock({, BlockKind(statement))
             endBlock(0, {, }, BlockKind(statement))
-          endThenStatement(})
-        endIfStatement(if, null)
+          endThenStatement({, })
+        endIfStatement(if, null, })
       endBlockFunctionBody(1, {, })
     endTopLevelMethod(void, null, })
   endTopLevelDeclaration(})
diff --git a/pkg/front_end/parser_testcases/patterns/wildcard_final_typed_insideIfCase.dart.intertwined.expect b/pkg/front_end/parser_testcases/patterns/wildcard_final_typed_insideIfCase.dart.intertwined.expect
index 1e25bfd..6a9ed8e 100644
--- a/pkg/front_end/parser_testcases/patterns/wildcard_final_typed_insideIfCase.dart.intertwined.expect
+++ b/pkg/front_end/parser_testcases/patterns/wildcard_final_typed_insideIfCase.dart.intertwined.expect
@@ -77,8 +77,8 @@
                       listener: beginBlock({, BlockKind(statement))
                       notEofOrValue(}, })
                       listener: endBlock(0, {, }, BlockKind(statement))
-                listener: endThenStatement(})
-                listener: endIfStatement(if, null)
+                listener: endThenStatement({, })
+                listener: endIfStatement(if, null, })
           notEofOrValue(}, })
           listener: endBlockFunctionBody(1, {, })
         listener: endTopLevelMethod(void, null, })
diff --git a/pkg/front_end/parser_testcases/patterns/wildcard_final_untyped_insideIfCase.dart.expect b/pkg/front_end/parser_testcases/patterns/wildcard_final_untyped_insideIfCase.dart.expect
index 95c20f2..1738c88 100644
--- a/pkg/front_end/parser_testcases/patterns/wildcard_final_untyped_insideIfCase.dart.expect
+++ b/pkg/front_end/parser_testcases/patterns/wildcard_final_untyped_insideIfCase.dart.expect
@@ -30,8 +30,8 @@
           beginThenStatement({)
             beginBlock({, BlockKind(statement))
             endBlock(0, {, }, BlockKind(statement))
-          endThenStatement(})
-        endIfStatement(if, null)
+          endThenStatement({, })
+        endIfStatement(if, null, })
       endBlockFunctionBody(1, {, })
     endTopLevelMethod(void, null, })
   endTopLevelDeclaration(})
diff --git a/pkg/front_end/parser_testcases/patterns/wildcard_final_untyped_insideIfCase.dart.intertwined.expect b/pkg/front_end/parser_testcases/patterns/wildcard_final_untyped_insideIfCase.dart.intertwined.expect
index c6637b0..103b1e8 100644
--- a/pkg/front_end/parser_testcases/patterns/wildcard_final_untyped_insideIfCase.dart.intertwined.expect
+++ b/pkg/front_end/parser_testcases/patterns/wildcard_final_untyped_insideIfCase.dart.intertwined.expect
@@ -75,8 +75,8 @@
                       listener: beginBlock({, BlockKind(statement))
                       notEofOrValue(}, })
                       listener: endBlock(0, {, }, BlockKind(statement))
-                listener: endThenStatement(})
-                listener: endIfStatement(if, null)
+                listener: endThenStatement({, })
+                listener: endIfStatement(if, null, })
           notEofOrValue(}, })
           listener: endBlockFunctionBody(1, {, })
         listener: endTopLevelMethod(void, null, })
diff --git a/pkg/front_end/parser_testcases/patterns/wildcard_typed_insideIfCase.dart.expect b/pkg/front_end/parser_testcases/patterns/wildcard_typed_insideIfCase.dart.expect
index a209f82..dd6b46f 100644
--- a/pkg/front_end/parser_testcases/patterns/wildcard_typed_insideIfCase.dart.expect
+++ b/pkg/front_end/parser_testcases/patterns/wildcard_typed_insideIfCase.dart.expect
@@ -32,8 +32,8 @@
           beginThenStatement({)
             beginBlock({, BlockKind(statement))
             endBlock(0, {, }, BlockKind(statement))
-          endThenStatement(})
-        endIfStatement(if, null)
+          endThenStatement({, })
+        endIfStatement(if, null, })
       endBlockFunctionBody(1, {, })
     endTopLevelMethod(void, null, })
   endTopLevelDeclaration(})
diff --git a/pkg/front_end/parser_testcases/patterns/wildcard_typed_insideIfCase.dart.intertwined.expect b/pkg/front_end/parser_testcases/patterns/wildcard_typed_insideIfCase.dart.intertwined.expect
index 65093ee..4677d25 100644
--- a/pkg/front_end/parser_testcases/patterns/wildcard_typed_insideIfCase.dart.intertwined.expect
+++ b/pkg/front_end/parser_testcases/patterns/wildcard_typed_insideIfCase.dart.intertwined.expect
@@ -77,8 +77,8 @@
                       listener: beginBlock({, BlockKind(statement))
                       notEofOrValue(}, })
                       listener: endBlock(0, {, }, BlockKind(statement))
-                listener: endThenStatement(})
-                listener: endIfStatement(if, null)
+                listener: endThenStatement({, })
+                listener: endIfStatement(if, null, })
           notEofOrValue(}, })
           listener: endBlockFunctionBody(1, {, })
         listener: endTopLevelMethod(void, null, })
diff --git a/pkg/front_end/parser_testcases/patterns/wildcard_var_insideIfCase.dart.expect b/pkg/front_end/parser_testcases/patterns/wildcard_var_insideIfCase.dart.expect
index 1e50c57..85c38de 100644
--- a/pkg/front_end/parser_testcases/patterns/wildcard_var_insideIfCase.dart.expect
+++ b/pkg/front_end/parser_testcases/patterns/wildcard_var_insideIfCase.dart.expect
@@ -30,8 +30,8 @@
           beginThenStatement({)
             beginBlock({, BlockKind(statement))
             endBlock(0, {, }, BlockKind(statement))
-          endThenStatement(})
-        endIfStatement(if, null)
+          endThenStatement({, })
+        endIfStatement(if, null, })
       endBlockFunctionBody(1, {, })
     endTopLevelMethod(void, null, })
   endTopLevelDeclaration(})
diff --git a/pkg/front_end/parser_testcases/patterns/wildcard_var_insideIfCase.dart.intertwined.expect b/pkg/front_end/parser_testcases/patterns/wildcard_var_insideIfCase.dart.intertwined.expect
index 53ed3f9..35d68b6 100644
--- a/pkg/front_end/parser_testcases/patterns/wildcard_var_insideIfCase.dart.intertwined.expect
+++ b/pkg/front_end/parser_testcases/patterns/wildcard_var_insideIfCase.dart.intertwined.expect
@@ -75,8 +75,8 @@
                       listener: beginBlock({, BlockKind(statement))
                       notEofOrValue(}, })
                       listener: endBlock(0, {, }, BlockKind(statement))
-                listener: endThenStatement(})
-                listener: endIfStatement(if, null)
+                listener: endThenStatement({, })
+                listener: endIfStatement(if, null, })
           notEofOrValue(}, })
           listener: endBlockFunctionBody(1, {, })
         listener: endTopLevelMethod(void, null, })
diff --git a/pkg/front_end/parser_testcases/record/is_and_as.dart.expect b/pkg/front_end/parser_testcases/record/is_and_as.dart.expect
index adb89e5..9edf129 100644
--- a/pkg/front_end/parser_testcases/record/is_and_as.dart.expect
+++ b/pkg/front_end/parser_testcases/record/is_and_as.dart.expect
@@ -71,8 +71,8 @@
               handleSend(print, ;)
               handleExpressionStatement(;)
             endBlock(1, {, }, BlockKind(statement))
-          endThenStatement(})
-        endIfStatement(if, null)
+          endThenStatement({, })
+        endIfStatement(if, null, })
         beginMetadataStar(final)
         endMetadataStar(0)
         handleNoType(final)
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 667d4d6..1211b05 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
@@ -163,8 +163,8 @@
                               listener: handleExpressionStatement(;)
                       notEofOrValue(}, })
                       listener: endBlock(1, {, }, BlockKind(statement))
-                listener: endThenStatement(})
-                listener: endIfStatement(if, null)
+                listener: endThenStatement({, })
+                listener: endIfStatement(if, null, })
           notEofOrValue(}, final)
           parseStatement(})
             parseStatementX(})
diff --git a/pkg/front_end/parser_testcases/record/on.dart.expect b/pkg/front_end/parser_testcases/record/on.dart.expect
index eeb29f1..da8408a 100644
--- a/pkg/front_end/parser_testcases/record/on.dart.expect
+++ b/pkg/front_end/parser_testcases/record/on.dart.expect
@@ -72,7 +72,7 @@
           beginBlock({, BlockKind(catch clause))
           endBlock(0, {, }, BlockKind(catch clause))
           handleCatchBlock(on, null, null)
-        endTryStatement(3, try, null)
+        endTryStatement(3, try, null, })
         handleEmptyStatement(;)
       endBlockFunctionBody(2, {, })
     endTopLevelMethod(main, null, })
diff --git a/pkg/front_end/parser_testcases/record/on.dart.intertwined.expect b/pkg/front_end/parser_testcases/record/on.dart.intertwined.expect
index 7d66897..a109c94 100644
--- a/pkg/front_end/parser_testcases/record/on.dart.intertwined.expect
+++ b/pkg/front_end/parser_testcases/record/on.dart.intertwined.expect
@@ -123,7 +123,7 @@
                   notEofOrValue(}, })
                   listener: endBlock(0, {, }, BlockKind(catch clause))
                 listener: handleCatchBlock(on, null, null)
-                listener: endTryStatement(3, try, null)
+                listener: endTryStatement(3, try, null, })
           notEofOrValue(}, ;)
           parseStatement(})
             parseStatementX(})
diff --git a/pkg/front_end/parser_testcases/record/record_type_03.dart.expect b/pkg/front_end/parser_testcases/record/record_type_03.dart.expect
index 5c29a90..b10521a 100644
--- a/pkg/front_end/parser_testcases/record/record_type_03.dart.expect
+++ b/pkg/front_end/parser_testcases/record/record_type_03.dart.expect
@@ -80,8 +80,8 @@
                 handleLiteralInt(42)
               endRecordLiteral((, 2, null)
             endReturnStatement(true, return, ;)
-          endThenStatement(;)
-        endIfStatement(if, null)
+          endThenStatement(return, ;)
+        endIfStatement(if, null, ;)
         beginReturnStatement(return)
           beginParenthesizedExpressionOrRecordLiteral(()
             handleLiteralInt(1)
@@ -163,8 +163,8 @@
                 handleLiteralInt(42)
               endRecordLiteral((, 2, null)
             endReturnStatement(true, return, ;)
-          endThenStatement(;)
-        endIfStatement(if, null)
+          endThenStatement(return, ;)
+        endIfStatement(if, null, ;)
         beginReturnStatement(return)
           beginParenthesizedExpressionOrRecordLiteral(()
             handleLiteralInt(1)
diff --git a/pkg/front_end/parser_testcases/record/record_type_03.dart.intertwined.expect b/pkg/front_end/parser_testcases/record/record_type_03.dart.intertwined.expect
index 875819c..aba6c7a 100644
--- a/pkg/front_end/parser_testcases/record/record_type_03.dart.intertwined.expect
+++ b/pkg/front_end/parser_testcases/record/record_type_03.dart.intertwined.expect
@@ -158,8 +158,8 @@
                       ensureSemicolon())
                       listener: endReturnStatement(true, return, ;)
                       inGenerator()
-                listener: endThenStatement(;)
-                listener: endIfStatement(if, null)
+                listener: endThenStatement(return, ;)
+                listener: endIfStatement(if, null, ;)
           notEofOrValue(}, return)
           parseStatement(;)
             parseStatementX(;)
@@ -337,8 +337,8 @@
                       ensureSemicolon())
                       listener: endReturnStatement(true, return, ;)
                       inGenerator()
-                listener: endThenStatement(;)
-                listener: endIfStatement(if, null)
+                listener: endThenStatement(return, ;)
+                listener: endIfStatement(if, null, ;)
           notEofOrValue(}, return)
           parseStatement(;)
             parseStatementX(;)
diff --git a/pkg/front_end/test/parser_test_listener.dart b/pkg/front_end/test/parser_test_listener.dart
index 944edfd..1bf457f 100644
--- a/pkg/front_end/test/parser_test_listener.dart
+++ b/pkg/front_end/test/parser_test_listener.dart
@@ -1304,11 +1304,12 @@
   }
 
   @override
-  void endIfStatement(Token ifToken, Token? elseToken) {
+  void endIfStatement(Token ifToken, Token? elseToken, Token endToken) {
     indent--;
     seen(ifToken);
     seen(elseToken);
-    doPrint('endIfStatement(' '$ifToken, ' '$elseToken)');
+    seen(endToken);
+    doPrint('endIfStatement(' '$ifToken, ' '$elseToken, ' '$endToken)');
   }
 
   @override
@@ -1319,10 +1320,11 @@
   }
 
   @override
-  void endThenStatement(Token token) {
+  void endThenStatement(Token beginToken, Token endToken) {
     indent--;
-    seen(token);
-    doPrint('endThenStatement(' '$token)');
+    seen(beginToken);
+    seen(endToken);
+    doPrint('endThenStatement(' '$beginToken, ' '$endToken)');
   }
 
   @override
@@ -1333,10 +1335,11 @@
   }
 
   @override
-  void endElseStatement(Token token) {
+  void endElseStatement(Token beginToken, Token endToken) {
     indent--;
-    seen(token);
-    doPrint('endElseStatement(' '$token)');
+    seen(beginToken);
+    seen(endToken);
+    doPrint('endElseStatement(' '$beginToken, ' '$endToken)');
   }
 
   @override
@@ -2216,12 +2219,16 @@
 
   @override
   void endTryStatement(
-      int catchCount, Token tryKeyword, Token? finallyKeyword) {
+      int catchCount, Token tryKeyword, Token? finallyKeyword, Token endToken) {
     indent--;
     seen(tryKeyword);
     seen(finallyKeyword);
-    doPrint(
-        'endTryStatement(' '$catchCount, ' '$tryKeyword, ' '$finallyKeyword)');
+    seen(endToken);
+    doPrint('endTryStatement('
+        '$catchCount, '
+        '$tryKeyword, '
+        '$finallyKeyword, '
+        '$endToken)');
   }
 
   @override