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 c98702e..097e4fa 100644
--- a/pkg/_fe_analyzer_shared/lib/src/parser/parser_impl.dart
+++ b/pkg/_fe_analyzer_shared/lib/src/parser/parser_impl.dart
@@ -2377,6 +2377,16 @@
     return identifier;
   }
 
+  /// Checks whether the next token is (directly) an identifier. If this returns
+  /// true a call to [ensureIdentifier] will return the next token.
+  bool isNextIdentifier(Token token) {
+    Token identifier = token.next!;
+    if (identifier.kind != IDENTIFIER_TOKEN) {
+      return false;
+    }
+    return true;
+  }
+
   /// Parse a simple identifier at the given [token], and return the identifier
   /// that was parsed.
   ///
@@ -3790,7 +3800,13 @@
         varFinalOrConst, getOrSet, name);
 
     Token token = typeInfo.parseType(beforeType, this);
-    assert(token.next == (getOrSet ?? name));
+    assert(token.next == (getOrSet ?? name) ||
+        // [skipType] and [parseType] for something ending in `>>` is different
+        // because [`>>`] is split to [`>`, `>`] in both cases. For skip it's
+        // cached as the end but for parse a new pair is created (which is also
+        // woven into the token stream). At least for now we allow this and let
+        // the assert not fail because of it.
+        (token.next!.type == name.type && token.next!.offset == name.offset));
     token = getOrSet ?? token;
 
     bool hasQualifiedName = false;
@@ -5709,8 +5725,66 @@
   Token parseNewExpression(Token token) {
     Token newKeyword = token.next!;
     assert(optional('new', newKeyword));
+
+    TypeParamOrArgInfo? potentialTypeArg;
+
+    if (isNextIdentifier(newKeyword)) {
+      Token identifier = newKeyword.next!;
+      String value = identifier.lexeme;
+      if ((value == "Map" || value == "Set") &&
+          !optional('.', identifier.next!)) {
+        potentialTypeArg = computeTypeParamOrArg(identifier);
+        Token afterToken = potentialTypeArg.skip(identifier).next!;
+        if (optional('{', afterToken)) {
+          // Recover by ignoring both the `new` and the `Map`/`Set` and parse as
+          // a literal map/set.
+          reportRecoverableErrorWithToken(
+              newKeyword, codes.templateUnexpectedToken);
+          reportRecoverableErrorWithToken(
+              identifier, codes.templateUnexpectedToken);
+          return parsePrimary(identifier, IdentifierContext.expression);
+        }
+      } else if (value == "List" && !optional('.', identifier.next!)) {
+        potentialTypeArg = computeTypeParamOrArg(identifier);
+        Token afterToken = potentialTypeArg.skip(identifier).next!;
+        if (optional('[', afterToken) || optional('[]', afterToken)) {
+          // Recover by ignoring both the `new` and the `List` and parse as
+          // a literal list.
+          reportRecoverableErrorWithToken(
+              newKeyword, codes.templateUnexpectedToken);
+          reportRecoverableErrorWithToken(
+              identifier, codes.templateUnexpectedToken);
+          return parsePrimary(identifier, IdentifierContext.expression);
+        }
+      }
+    } else {
+      // This is probably an error. "Normal" recovery will happen in
+      // parseConstructorReference.
+      // Do special recovery for literal maps/set/list erroneously prepended
+      // with 'new'.
+      Token notIdentifier = newKeyword.next!;
+      String value = notIdentifier.lexeme;
+      if (value == "<") {
+        potentialTypeArg = computeTypeParamOrArg(newKeyword);
+        Token afterToken = potentialTypeArg.skip(newKeyword).next!;
+        if (optional('{', afterToken) ||
+            optional('[', afterToken) ||
+            optional('[]', afterToken)) {
+          // Recover by ignoring the `new` and parse as a literal map/set/list.
+          reportRecoverableErrorWithToken(
+              newKeyword, codes.templateUnexpectedToken);
+          return parsePrimary(newKeyword, IdentifierContext.expression);
+        }
+      } else if (value == "{" || value == "[" || value == "[]") {
+        // Recover by ignoring the `new` and parse as a literal map/set/list.
+        reportRecoverableErrorWithToken(
+            newKeyword, codes.templateUnexpectedToken);
+        return parsePrimary(newKeyword, IdentifierContext.expression);
+      }
+    }
+
     listener.beginNewExpression(newKeyword);
-    token = parseConstructorReference(newKeyword);
+    token = parseConstructorReference(newKeyword, potentialTypeArg);
     token = parseConstructorInvocationArguments(token);
     listener.endNewExpression(newKeyword);
     return token;
@@ -5768,8 +5842,62 @@
       listener.endConstLiteral(token.next!);
       return token;
     }
+    final String lexeme = next.lexeme;
+    Token nextNext = next.next!;
+    TypeParamOrArgInfo? potentialTypeArg;
+    if ((lexeme == "Map" || lexeme == "Set") && !optional('.', nextNext)) {
+      // Special-case-recovery for `const Map<..>?{}` and `const Set<..>?{}`.
+      potentialTypeArg = computeTypeParamOrArg(next);
+      Token afterToken = potentialTypeArg.skip(next).next!;
+      if (optional('{', afterToken)) {
+        final String? nextValue = nextNext.stringValue;
+        if (identical(nextValue, '{')) {
+          // Recover by ignoring the `Map`/`Set` and parse as a literal map/set.
+          reportRecoverableErrorWithToken(next, codes.templateUnexpectedToken);
+          listener.beginConstLiteral(nextNext);
+          listener.handleNoTypeArguments(nextNext);
+          token = parseLiteralSetOrMapSuffix(next, constKeyword);
+          listener.endConstLiteral(token.next!);
+          return token;
+        }
+        if (identical(nextValue, '<')) {
+          // Recover by ignoring the `Map`/`Set` and parse as a literal map/set.
+          reportRecoverableErrorWithToken(next, codes.templateUnexpectedToken);
+          listener.beginConstLiteral(nextNext);
+          token = parseLiteralListSetMapOrFunction(next, constKeyword);
+          listener.endConstLiteral(token.next!);
+          return token;
+        }
+        assert(false, "Expected either { or < but found neither.");
+      }
+    } else if (lexeme == "List" && !optional('.', nextNext)) {
+      // Special-case-recovery for `const List<..>?[` and `const List<..>?[]`.
+      potentialTypeArg = computeTypeParamOrArg(next);
+      Token afterToken = potentialTypeArg.skip(next).next!;
+      if (optional('[', afterToken) || optional('[]', afterToken)) {
+        final String? nextValue = nextNext.stringValue;
+        if (identical(nextValue, '[') || identical(nextValue, '[]')) {
+          // Recover by ignoring the `List` and parse as a literal list.
+          reportRecoverableErrorWithToken(next, codes.templateUnexpectedToken);
+          listener.beginConstLiteral(nextNext);
+          listener.handleNoTypeArguments(nextNext);
+          token = parseLiteralListSuffix(next, constKeyword);
+          listener.endConstLiteral(token.next!);
+          return token;
+        }
+        if (identical(nextValue, '<')) {
+          // Recover by ignoring the `List` and parse as a literal list.
+          reportRecoverableErrorWithToken(next, codes.templateUnexpectedToken);
+          listener.beginConstLiteral(nextNext);
+          token = parseLiteralListSetMapOrFunction(next, constKeyword);
+          listener.endConstLiteral(token.next!);
+          return token;
+        }
+        assert(false, "Expected either [, [] or < but found neither.");
+      }
+    }
     listener.beginConstExpression(constKeyword);
-    token = parseConstructorReference(token);
+    token = parseConstructorReference(token, potentialTypeArg);
     token = parseConstructorInvocationArguments(token);
     listener.endConstExpression(constKeyword);
     return token;
@@ -5925,6 +6053,41 @@
   }
 
   Token parseSend(Token token, IdentifierContext context) {
+    // Least-costly recovery of `Map<...>?{`, `Set<...>?{`, `List<...>[` and
+    // `List<...>?[]`.
+    // Note that we have to "peek" into the identifier because we don't want to
+    // send an `handleIdentifier` if we end up recovering.
+    TypeParamOrArgInfo? potentialTypeArg;
+    Token? afterToken;
+    if (isNextIdentifier(token)) {
+      Token identifier = token.next!;
+      String value = identifier.lexeme;
+      if (value == "Map" || value == "Set") {
+        potentialTypeArg = computeTypeParamOrArg(identifier);
+        afterToken = potentialTypeArg.skip(identifier).next!;
+        if (optional('{', afterToken)) {
+          // Recover by ignoring the `Map`/`Set` and parse as a literal map/set.
+          reportRecoverableErrorWithToken(
+              identifier, codes.templateUnexpectedToken);
+          return parsePrimary(identifier, context);
+        }
+      } else if (value == "List") {
+        potentialTypeArg = computeTypeParamOrArg(identifier);
+        afterToken = potentialTypeArg.skip(identifier).next!;
+        if ((potentialTypeArg != noTypeParamOrArg &&
+                optional('[', afterToken)) ||
+            optional('[]', afterToken)) {
+          // Recover by ignoring the `List` and parse as a literal List.
+          // Note that we here require the `<...>` for `[` as `List[` would be
+          // an indexed expression. `List[]` wouldn't though, so we don't
+          // require it there.
+          reportRecoverableErrorWithToken(
+              identifier, codes.templateUnexpectedToken);
+          return parsePrimary(identifier, context);
+        }
+      }
+    }
+
     Token beginToken = token = ensureIdentifier(token, context);
     // Notice that we don't parse the bang (!) here as we do in many other
     // instances where we call computeMethodTypeArguments.
@@ -5933,7 +6096,18 @@
     // the type arguments and the arguments.
     // By not handling bang here we don't parse any of it, and the parser will
     // parse it correctly in a different recursion step.
-    TypeParamOrArgInfo typeArg = computeMethodTypeArguments(token);
+
+    // Special-case [computeMethodTypeArguments] to re-use potentialTypeArg if
+    // already computed.
+    potentialTypeArg ??= computeTypeParamOrArg(token);
+    afterToken ??= potentialTypeArg.skip(token).next!;
+    TypeParamOrArgInfo typeArg;
+    if (optional('(', afterToken)) {
+      typeArg = potentialTypeArg;
+    } else {
+      typeArg = noTypeParamOrArg;
+    }
+
     if (typeArg != noTypeParamOrArg) {
       token = typeArg.parseArguments(token, this);
     } else {
diff --git a/pkg/analyzer/lib/src/dart/element/type.dart b/pkg/analyzer/lib/src/dart/element/type.dart
index 5611186..312a064 100644
--- a/pkg/analyzer/lib/src/dart/element/type.dart
+++ b/pkg/analyzer/lib/src/dart/element/type.dart
@@ -1885,8 +1885,9 @@
 
   @override
   DartType resolveToBound(DartType objectType) {
+    var promotedBound = this.promotedBound;
     if (promotedBound != null) {
-      return promotedBound!;
+      return promotedBound.resolveToBound(objectType);
     }
 
     var bound = element.bound;
diff --git a/pkg/analyzer/test/generated/recovery_parser_test.dart b/pkg/analyzer/test/generated/recovery_parser_test.dart
index 2c31385..b946115 100644
--- a/pkg/analyzer/test/generated/recovery_parser_test.dart
+++ b/pkg/analyzer/test/generated/recovery_parser_test.dart
@@ -1034,12 +1034,7 @@
 
   void test_invalidMapLiteral() {
     parseCompilationUnit("class C { var f = Map<A, B> {}; }", codes: [
-// TODO(danrubel): Improve error message to indicate
-// that "Map" should be removed.
-      ParserErrorCode.EXPECTED_TOKEN,
-      ParserErrorCode.MISSING_KEYWORD_OPERATOR,
-      ParserErrorCode.MISSING_METHOD_PARAMETERS,
-      ParserErrorCode.EXPECTED_CLASS_MEMBER,
+      ParserErrorCode.UNEXPECTED_TOKEN,
     ]);
   }
 
diff --git a/pkg/analyzer/test/src/dart/element/element_test.dart b/pkg/analyzer/test/src/dart/element/element_test.dart
index 03658e3..0f8202f 100644
--- a/pkg/analyzer/test/src/dart/element/element_test.dart
+++ b/pkg/analyzer/test/src/dart/element/element_test.dart
@@ -2242,6 +2242,27 @@
     expect(typeF.resolveToBound(objectNone), interfaceTypeStar(classS));
   }
 
+  void test_resolveToBound_promotedBound_interfaceType() {
+    var A = class_(name: 'A');
+    var A_none = interfaceTypeNone(A);
+
+    var T = typeParameter('T');
+    var T_A = typeParameterTypeNone(T, promotedBound: A_none);
+    expect(T_A.resolveToBound(objectQuestion), A_none);
+  }
+
+  void test_resolveToBound_promotedBound_typeParameterType_interfaceType() {
+    var A = class_(name: 'A');
+    var A_none = interfaceTypeNone(A);
+
+    var T = typeParameter('T', bound: A_none);
+    var T_none = typeParameterTypeNone(T);
+
+    var U = typeParameter('U');
+    var U_T = typeParameterTypeNone(U, promotedBound: T_none);
+    expect(U_T.resolveToBound(objectQuestion), A_none);
+  }
+
   void test_resolveToBound_unbound() {
     TypeParameterTypeImpl type =
         typeParameterTypeStar(TypeParameterElementImpl('E', -1));
diff --git a/pkg/analyzer/test/src/dart/resolution/method_invocation_test.dart b/pkg/analyzer/test/src/dart/resolution/method_invocation_test.dart
index 60d4e16..b1bc073 100644
--- a/pkg/analyzer/test/src/dart/resolution/method_invocation_test.dart
+++ b/pkg/analyzer/test/src/dart/resolution/method_invocation_test.dart
@@ -2772,6 +2772,30 @@
     );
   }
 
+  test_hasReceiver_typeParameter_promotedToOtherTypeParameter() async {
+    await assertNoErrorsInCode('''
+abstract class A {}
+
+abstract class B extends A {
+  void foo();
+}
+
+void f<T extends A, U extends B>(T a) {
+  if (a is U) {
+    a.foo();
+  }
+}
+''');
+
+    assertMethodInvocation2(
+      findNode.methodInvocation('a.foo()'),
+      element: findElement.method('foo'),
+      typeArgumentTypes: [],
+      invokeType: 'void Function()',
+      type: 'void',
+    );
+  }
+
   test_nullShorting_cascade_firstMethodInvocation() async {
     await assertNoErrorsInCode(r'''
 class A {
diff --git a/pkg/front_end/parser_testcases/error_recovery/issue_45251.dart b/pkg/front_end/parser_testcases/error_recovery/issue_45251.dart
new file mode 100644
index 0000000..24d670e
--- /dev/null
+++ b/pkg/front_end/parser_testcases/error_recovery/issue_45251.dart
@@ -0,0 +1,28 @@
+class F {
+  /* notice the braces at the end instead of parenthesis! */
+  final Map<String, Undefined> foo1 = Map<String, List<int>>{};
+
+  // variation #1: OK.
+  final Map<String, Undefined> foo2 = <String, List<int>>{};
+
+  // variation #2: Bad.
+  final Map<String, Undefined> foo3 = Map{};
+
+  // variation #3: OK.
+  final Map<String, Undefined> foo4 = Map<String, List<int>>();
+
+  // variation #4: OK.
+  final Map<String, Undefined> foo5 = Map();
+
+  // variation #5: Bad.
+  final Map<String, Undefined> foo6 = Map<String, List<int>>{"a": null};
+
+  // variation #6: Bad.
+  final Map<String, Undefined> foo7 = Map{"a": null};
+
+  // variation #7: OK.
+  final Map<String, Undefined> foo8 = <String, List<int>>{"a": null};
+
+  // variation #8: OK.
+  final Map<String, Undefined> foo9 = {"a": null};
+}
\ No newline at end of file
diff --git a/pkg/front_end/parser_testcases/error_recovery/issue_45251.dart.expect b/pkg/front_end/parser_testcases/error_recovery/issue_45251.dart.expect
new file mode 100644
index 0000000..898cf57
--- /dev/null
+++ b/pkg/front_end/parser_testcases/error_recovery/issue_45251.dart.expect
@@ -0,0 +1,305 @@
+Problems reported:
+
+parser/error_recovery/issue_45251:3:39: Unexpected token 'Map'.
+  final Map<String, Undefined> foo1 = Map<String, List<int>>{};
+                                      ^^^
+
+parser/error_recovery/issue_45251:9:39: Unexpected token 'Map'.
+  final Map<String, Undefined> foo3 = Map{};
+                                      ^^^
+
+parser/error_recovery/issue_45251:18:39: Unexpected token 'Map'.
+  final Map<String, Undefined> foo6 = Map<String, List<int>>{"a": null};
+                                      ^^^
+
+parser/error_recovery/issue_45251:21:39: Unexpected token 'Map'.
+  final Map<String, Undefined> foo7 = Map{"a": null};
+                                      ^^^
+
+beginCompilationUnit(class)
+  beginMetadataStar(class)
+  endMetadataStar(0)
+  beginClassOrNamedMixinApplicationPrelude(class)
+    handleIdentifier(F, classOrMixinDeclaration)
+    handleNoTypeVariables({)
+    beginClassDeclaration(class, null, F)
+      handleNoType(F)
+      handleClassExtends(null, 1)
+      handleClassNoWithClause()
+      handleClassOrMixinImplements(null, 0)
+      handleClassHeader(class, class, null)
+      beginClassOrMixinBody(DeclarationKind.Class, {)
+        beginMetadataStar(final)
+        endMetadataStar(0)
+        beginMember()
+          beginFields({)
+            handleIdentifier(Map, typeReference)
+            beginTypeArguments(<)
+              handleIdentifier(String, typeReference)
+              handleNoTypeArguments(,)
+              handleType(String, null)
+              handleIdentifier(Undefined, typeReference)
+              handleNoTypeArguments(>)
+              handleType(Undefined, null)
+            endTypeArguments(2, <, >)
+            handleType(Map, null)
+            handleIdentifier(foo1, fieldDeclaration)
+            beginFieldInitializer(=)
+              handleRecoverableError(Message[UnexpectedToken, Unexpected token 'Map'., null, {lexeme: Map}], Map, Map)
+              beginTypeArguments(<)
+                handleIdentifier(String, typeReference)
+                handleNoTypeArguments(,)
+                handleType(String, null)
+                handleIdentifier(List, typeReference)
+                beginTypeArguments(<)
+                  handleIdentifier(int, typeReference)
+                  handleNoTypeArguments(>)
+                  handleType(int, null)
+                endTypeArguments(1, <, >)
+                handleType(List, null)
+              endTypeArguments(2, <, >)
+              handleLiteralSetOrMap(0, {, null, }, false)
+            endFieldInitializer(=, ;)
+          endClassFields(null, null, null, null, null, final, 1, final, ;)
+        endMember()
+        beginMetadataStar(final)
+        endMetadataStar(0)
+        beginMember()
+          beginFields(;)
+            handleIdentifier(Map, typeReference)
+            beginTypeArguments(<)
+              handleIdentifier(String, typeReference)
+              handleNoTypeArguments(,)
+              handleType(String, null)
+              handleIdentifier(Undefined, typeReference)
+              handleNoTypeArguments(>)
+              handleType(Undefined, null)
+            endTypeArguments(2, <, >)
+            handleType(Map, null)
+            handleIdentifier(foo2, fieldDeclaration)
+            beginFieldInitializer(=)
+              beginTypeArguments(<)
+                handleIdentifier(String, typeReference)
+                handleNoTypeArguments(,)
+                handleType(String, null)
+                handleIdentifier(List, typeReference)
+                beginTypeArguments(<)
+                  handleIdentifier(int, typeReference)
+                  handleNoTypeArguments(>)
+                  handleType(int, null)
+                endTypeArguments(1, <, >)
+                handleType(List, null)
+              endTypeArguments(2, <, >)
+              handleLiteralSetOrMap(0, {, null, }, false)
+            endFieldInitializer(=, ;)
+          endClassFields(null, null, null, null, null, final, 1, final, ;)
+        endMember()
+        beginMetadataStar(final)
+        endMetadataStar(0)
+        beginMember()
+          beginFields(;)
+            handleIdentifier(Map, typeReference)
+            beginTypeArguments(<)
+              handleIdentifier(String, typeReference)
+              handleNoTypeArguments(,)
+              handleType(String, null)
+              handleIdentifier(Undefined, typeReference)
+              handleNoTypeArguments(>)
+              handleType(Undefined, null)
+            endTypeArguments(2, <, >)
+            handleType(Map, null)
+            handleIdentifier(foo3, fieldDeclaration)
+            beginFieldInitializer(=)
+              handleRecoverableError(Message[UnexpectedToken, Unexpected token 'Map'., null, {lexeme: Map}], Map, Map)
+              handleNoTypeArguments({)
+              handleLiteralSetOrMap(0, {, null, }, false)
+            endFieldInitializer(=, ;)
+          endClassFields(null, null, null, null, null, final, 1, final, ;)
+        endMember()
+        beginMetadataStar(final)
+        endMetadataStar(0)
+        beginMember()
+          beginFields(;)
+            handleIdentifier(Map, typeReference)
+            beginTypeArguments(<)
+              handleIdentifier(String, typeReference)
+              handleNoTypeArguments(,)
+              handleType(String, null)
+              handleIdentifier(Undefined, typeReference)
+              handleNoTypeArguments(>)
+              handleType(Undefined, null)
+            endTypeArguments(2, <, >)
+            handleType(Map, null)
+            handleIdentifier(foo4, fieldDeclaration)
+            beginFieldInitializer(=)
+              handleIdentifier(Map, expression)
+              beginTypeArguments(<)
+                handleIdentifier(String, typeReference)
+                handleNoTypeArguments(,)
+                handleType(String, null)
+                handleIdentifier(List, typeReference)
+                beginTypeArguments(<)
+                  handleIdentifier(int, typeReference)
+                  handleNoTypeArguments(>)
+                  handleType(int, null)
+                endTypeArguments(1, <, >)
+                handleType(List, null)
+              endTypeArguments(2, <, >)
+              beginArguments(()
+              endArguments(0, (, ))
+              handleSend(Map, ;)
+            endFieldInitializer(=, ;)
+          endClassFields(null, null, null, null, null, final, 1, final, ;)
+        endMember()
+        beginMetadataStar(final)
+        endMetadataStar(0)
+        beginMember()
+          beginFields(;)
+            handleIdentifier(Map, typeReference)
+            beginTypeArguments(<)
+              handleIdentifier(String, typeReference)
+              handleNoTypeArguments(,)
+              handleType(String, null)
+              handleIdentifier(Undefined, typeReference)
+              handleNoTypeArguments(>)
+              handleType(Undefined, null)
+            endTypeArguments(2, <, >)
+            handleType(Map, null)
+            handleIdentifier(foo5, fieldDeclaration)
+            beginFieldInitializer(=)
+              handleIdentifier(Map, expression)
+              handleNoTypeArguments(()
+              beginArguments(()
+              endArguments(0, (, ))
+              handleSend(Map, ;)
+            endFieldInitializer(=, ;)
+          endClassFields(null, null, null, null, null, final, 1, final, ;)
+        endMember()
+        beginMetadataStar(final)
+        endMetadataStar(0)
+        beginMember()
+          beginFields(;)
+            handleIdentifier(Map, typeReference)
+            beginTypeArguments(<)
+              handleIdentifier(String, typeReference)
+              handleNoTypeArguments(,)
+              handleType(String, null)
+              handleIdentifier(Undefined, typeReference)
+              handleNoTypeArguments(>)
+              handleType(Undefined, null)
+            endTypeArguments(2, <, >)
+            handleType(Map, null)
+            handleIdentifier(foo6, fieldDeclaration)
+            beginFieldInitializer(=)
+              handleRecoverableError(Message[UnexpectedToken, Unexpected token 'Map'., null, {lexeme: Map}], Map, Map)
+              beginTypeArguments(<)
+                handleIdentifier(String, typeReference)
+                handleNoTypeArguments(,)
+                handleType(String, null)
+                handleIdentifier(List, typeReference)
+                beginTypeArguments(<)
+                  handleIdentifier(int, typeReference)
+                  handleNoTypeArguments(>)
+                  handleType(int, null)
+                endTypeArguments(1, <, >)
+                handleType(List, null)
+              endTypeArguments(2, <, >)
+              beginLiteralString("a")
+              endLiteralString(0, :)
+              handleLiteralNull(null)
+              handleLiteralMapEntry(:, })
+              handleLiteralSetOrMap(1, {, null, }, false)
+            endFieldInitializer(=, ;)
+          endClassFields(null, null, null, null, null, final, 1, final, ;)
+        endMember()
+        beginMetadataStar(final)
+        endMetadataStar(0)
+        beginMember()
+          beginFields(;)
+            handleIdentifier(Map, typeReference)
+            beginTypeArguments(<)
+              handleIdentifier(String, typeReference)
+              handleNoTypeArguments(,)
+              handleType(String, null)
+              handleIdentifier(Undefined, typeReference)
+              handleNoTypeArguments(>)
+              handleType(Undefined, null)
+            endTypeArguments(2, <, >)
+            handleType(Map, null)
+            handleIdentifier(foo7, fieldDeclaration)
+            beginFieldInitializer(=)
+              handleRecoverableError(Message[UnexpectedToken, Unexpected token 'Map'., null, {lexeme: Map}], Map, Map)
+              handleNoTypeArguments({)
+              beginLiteralString("a")
+              endLiteralString(0, :)
+              handleLiteralNull(null)
+              handleLiteralMapEntry(:, })
+              handleLiteralSetOrMap(1, {, null, }, false)
+            endFieldInitializer(=, ;)
+          endClassFields(null, null, null, null, null, final, 1, final, ;)
+        endMember()
+        beginMetadataStar(final)
+        endMetadataStar(0)
+        beginMember()
+          beginFields(;)
+            handleIdentifier(Map, typeReference)
+            beginTypeArguments(<)
+              handleIdentifier(String, typeReference)
+              handleNoTypeArguments(,)
+              handleType(String, null)
+              handleIdentifier(Undefined, typeReference)
+              handleNoTypeArguments(>)
+              handleType(Undefined, null)
+            endTypeArguments(2, <, >)
+            handleType(Map, null)
+            handleIdentifier(foo8, fieldDeclaration)
+            beginFieldInitializer(=)
+              beginTypeArguments(<)
+                handleIdentifier(String, typeReference)
+                handleNoTypeArguments(,)
+                handleType(String, null)
+                handleIdentifier(List, typeReference)
+                beginTypeArguments(<)
+                  handleIdentifier(int, typeReference)
+                  handleNoTypeArguments(>)
+                  handleType(int, null)
+                endTypeArguments(1, <, >)
+                handleType(List, null)
+              endTypeArguments(2, <, >)
+              beginLiteralString("a")
+              endLiteralString(0, :)
+              handleLiteralNull(null)
+              handleLiteralMapEntry(:, })
+              handleLiteralSetOrMap(1, {, null, }, false)
+            endFieldInitializer(=, ;)
+          endClassFields(null, null, null, null, null, final, 1, final, ;)
+        endMember()
+        beginMetadataStar(final)
+        endMetadataStar(0)
+        beginMember()
+          beginFields(;)
+            handleIdentifier(Map, typeReference)
+            beginTypeArguments(<)
+              handleIdentifier(String, typeReference)
+              handleNoTypeArguments(,)
+              handleType(String, null)
+              handleIdentifier(Undefined, typeReference)
+              handleNoTypeArguments(>)
+              handleType(Undefined, null)
+            endTypeArguments(2, <, >)
+            handleType(Map, null)
+            handleIdentifier(foo9, fieldDeclaration)
+            beginFieldInitializer(=)
+              handleNoTypeArguments({)
+              beginLiteralString("a")
+              endLiteralString(0, :)
+              handleLiteralNull(null)
+              handleLiteralMapEntry(:, })
+              handleLiteralSetOrMap(1, {, null, }, false)
+            endFieldInitializer(=, ;)
+          endClassFields(null, null, null, null, null, final, 1, final, ;)
+        endMember()
+      endClassOrMixinBody(DeclarationKind.Class, 9, {, })
+    endClassDeclaration(class, })
+  endTopLevelDeclaration()
+endCompilationUnit(1, )
diff --git a/pkg/front_end/parser_testcases/error_recovery/issue_45251.dart.intertwined.expect b/pkg/front_end/parser_testcases/error_recovery/issue_45251.dart.intertwined.expect
new file mode 100644
index 0000000..3e01156
--- /dev/null
+++ b/pkg/front_end/parser_testcases/error_recovery/issue_45251.dart.intertwined.expect
@@ -0,0 +1,488 @@
+parseUnit(class)
+  skipErrorTokens(class)
+  listener: beginCompilationUnit(class)
+  syntheticPreviousToken(class)
+  parseTopLevelDeclarationImpl(, Instance of 'DirectiveContext')
+    parseMetadataStar()
+      listener: beginMetadataStar(class)
+      listener: endMetadataStar(0)
+    parseTopLevelKeywordDeclaration(, class, Instance of 'DirectiveContext')
+      parseClassDeclarationModifiers(, class)
+      parseClassOrNamedMixinApplication(null, class)
+        listener: beginClassOrNamedMixinApplicationPrelude(class)
+        ensureIdentifier(class, classOrMixinDeclaration)
+          listener: handleIdentifier(F, classOrMixinDeclaration)
+        listener: handleNoTypeVariables({)
+        listener: beginClassDeclaration(class, null, F)
+        parseClass(F, class, class, F)
+          parseClassHeaderOpt(F, class, class)
+            parseClassExtendsOpt(F)
+              listener: handleNoType(F)
+              listener: handleClassExtends(null, 1)
+            parseWithClauseOpt(F)
+              listener: handleClassNoWithClause()
+            parseClassOrMixinImplementsOpt(F)
+              listener: handleClassOrMixinImplements(null, 0)
+            listener: handleClassHeader(class, class, null)
+          parseClassOrMixinOrExtensionBody(F, DeclarationKind.Class, F)
+            listener: beginClassOrMixinBody(DeclarationKind.Class, {)
+            notEofOrValue(}, final)
+            parseClassOrMixinOrExtensionMemberImpl({, DeclarationKind.Class, F)
+              parseMetadataStar({)
+                listener: beginMetadataStar(final)
+                listener: endMetadataStar(0)
+              listener: beginMember()
+              parseFields({, null, null, null, null, null, final, final, Instance of 'ComplexTypeInfo', foo1, DeclarationKind.Class, F, false)
+                listener: beginFields({)
+                ensureIdentifier(final, typeReference)
+                  listener: handleIdentifier(Map, typeReference)
+                listener: beginTypeArguments(<)
+                listener: handleIdentifier(String, typeReference)
+                listener: handleNoTypeArguments(,)
+                listener: handleType(String, null)
+                listener: handleIdentifier(Undefined, typeReference)
+                listener: handleNoTypeArguments(>)
+                listener: handleType(Undefined, null)
+                listener: endTypeArguments(2, <, >)
+                listener: handleType(Map, null)
+                ensureIdentifierPotentiallyRecovered(>, fieldDeclaration, false)
+                  listener: handleIdentifier(foo1, fieldDeclaration)
+                parseFieldInitializerOpt(foo1, foo1, null, null, null, final, DeclarationKind.Class, F)
+                  listener: beginFieldInitializer(=)
+                  parseExpression(=)
+                    parsePrecedenceExpression(=, 1, true)
+                      parseUnaryExpression(=, true)
+                        parsePrimary(=, expression)
+                          parseSendOrFunctionLiteral(=, expression)
+                            parseSend(=, expression)
+                              reportRecoverableErrorWithToken(Map, Instance of 'Template<(Token) => Message>')
+                                listener: handleRecoverableError(Message[UnexpectedToken, Unexpected token 'Map'., null, {lexeme: Map}], Map, Map)
+                              parsePrimary(Map, expression)
+                                parseLiteralListSetMapOrFunction(Map, null)
+                                  listener: beginTypeArguments(<)
+                                  listener: handleIdentifier(String, typeReference)
+                                  listener: handleNoTypeArguments(,)
+                                  listener: handleType(String, null)
+                                  listener: handleIdentifier(List, typeReference)
+                                  listener: beginTypeArguments(<)
+                                  listener: handleIdentifier(int, typeReference)
+                                  listener: handleNoTypeArguments(>)
+                                  listener: handleType(int, null)
+                                  listener: endTypeArguments(1, <, >)
+                                  listener: handleType(List, null)
+                                  listener: endTypeArguments(2, <, >)
+                                  parseLiteralSetOrMapSuffix(>, null)
+                                    listener: handleLiteralSetOrMap(0, {, null, }, false)
+                  listener: endFieldInitializer(=, ;)
+                listener: endClassFields(null, null, null, null, null, final, 1, final, ;)
+              listener: endMember()
+            notEofOrValue(}, final)
+            parseClassOrMixinOrExtensionMemberImpl(;, DeclarationKind.Class, F)
+              parseMetadataStar(;)
+                listener: beginMetadataStar(final)
+                listener: endMetadataStar(0)
+              listener: beginMember()
+              parseFields(;, null, null, null, null, null, final, final, Instance of 'ComplexTypeInfo', foo2, DeclarationKind.Class, F, false)
+                listener: beginFields(;)
+                ensureIdentifier(final, typeReference)
+                  listener: handleIdentifier(Map, typeReference)
+                listener: beginTypeArguments(<)
+                listener: handleIdentifier(String, typeReference)
+                listener: handleNoTypeArguments(,)
+                listener: handleType(String, null)
+                listener: handleIdentifier(Undefined, typeReference)
+                listener: handleNoTypeArguments(>)
+                listener: handleType(Undefined, null)
+                listener: endTypeArguments(2, <, >)
+                listener: handleType(Map, null)
+                ensureIdentifierPotentiallyRecovered(>, fieldDeclaration, false)
+                  listener: handleIdentifier(foo2, fieldDeclaration)
+                parseFieldInitializerOpt(foo2, foo2, null, null, null, final, DeclarationKind.Class, F)
+                  listener: beginFieldInitializer(=)
+                  parseExpression(=)
+                    parsePrecedenceExpression(=, 1, true)
+                      parseUnaryExpression(=, true)
+                        parsePrimary(=, expression)
+                          parseLiteralListSetMapOrFunction(=, null)
+                            listener: beginTypeArguments(<)
+                            listener: handleIdentifier(String, typeReference)
+                            listener: handleNoTypeArguments(,)
+                            listener: handleType(String, null)
+                            listener: handleIdentifier(List, typeReference)
+                            listener: beginTypeArguments(<)
+                            listener: handleIdentifier(int, typeReference)
+                            listener: handleNoTypeArguments(>)
+                            listener: handleType(int, null)
+                            listener: endTypeArguments(1, <, >)
+                            listener: handleType(List, null)
+                            listener: endTypeArguments(2, <, >)
+                            parseLiteralSetOrMapSuffix(>, null)
+                              listener: handleLiteralSetOrMap(0, {, null, }, false)
+                  listener: endFieldInitializer(=, ;)
+                listener: endClassFields(null, null, null, null, null, final, 1, final, ;)
+              listener: endMember()
+            notEofOrValue(}, final)
+            parseClassOrMixinOrExtensionMemberImpl(;, DeclarationKind.Class, F)
+              parseMetadataStar(;)
+                listener: beginMetadataStar(final)
+                listener: endMetadataStar(0)
+              listener: beginMember()
+              parseFields(;, null, null, null, null, null, final, final, Instance of 'ComplexTypeInfo', foo3, DeclarationKind.Class, F, false)
+                listener: beginFields(;)
+                ensureIdentifier(final, typeReference)
+                  listener: handleIdentifier(Map, typeReference)
+                listener: beginTypeArguments(<)
+                listener: handleIdentifier(String, typeReference)
+                listener: handleNoTypeArguments(,)
+                listener: handleType(String, null)
+                listener: handleIdentifier(Undefined, typeReference)
+                listener: handleNoTypeArguments(>)
+                listener: handleType(Undefined, null)
+                listener: endTypeArguments(2, <, >)
+                listener: handleType(Map, null)
+                ensureIdentifierPotentiallyRecovered(>, fieldDeclaration, false)
+                  listener: handleIdentifier(foo3, fieldDeclaration)
+                parseFieldInitializerOpt(foo3, foo3, null, null, null, final, DeclarationKind.Class, F)
+                  listener: beginFieldInitializer(=)
+                  parseExpression(=)
+                    parsePrecedenceExpression(=, 1, true)
+                      parseUnaryExpression(=, true)
+                        parsePrimary(=, expression)
+                          parseSendOrFunctionLiteral(=, expression)
+                            parseSend(=, expression)
+                              reportRecoverableErrorWithToken(Map, Instance of 'Template<(Token) => Message>')
+                                listener: handleRecoverableError(Message[UnexpectedToken, Unexpected token 'Map'., null, {lexeme: Map}], Map, Map)
+                              parsePrimary(Map, expression)
+                                listener: handleNoTypeArguments({)
+                                parseLiteralSetOrMapSuffix(Map, null)
+                                  listener: handleLiteralSetOrMap(0, {, null, }, false)
+                  listener: endFieldInitializer(=, ;)
+                listener: endClassFields(null, null, null, null, null, final, 1, final, ;)
+              listener: endMember()
+            notEofOrValue(}, final)
+            parseClassOrMixinOrExtensionMemberImpl(;, DeclarationKind.Class, F)
+              parseMetadataStar(;)
+                listener: beginMetadataStar(final)
+                listener: endMetadataStar(0)
+              listener: beginMember()
+              parseFields(;, null, null, null, null, null, final, final, Instance of 'ComplexTypeInfo', foo4, DeclarationKind.Class, F, false)
+                listener: beginFields(;)
+                ensureIdentifier(final, typeReference)
+                  listener: handleIdentifier(Map, typeReference)
+                listener: beginTypeArguments(<)
+                listener: handleIdentifier(String, typeReference)
+                listener: handleNoTypeArguments(,)
+                listener: handleType(String, null)
+                listener: handleIdentifier(Undefined, typeReference)
+                listener: handleNoTypeArguments(>)
+                listener: handleType(Undefined, null)
+                listener: endTypeArguments(2, <, >)
+                listener: handleType(Map, null)
+                ensureIdentifierPotentiallyRecovered(>, fieldDeclaration, false)
+                  listener: handleIdentifier(foo4, fieldDeclaration)
+                parseFieldInitializerOpt(foo4, foo4, null, null, null, final, DeclarationKind.Class, F)
+                  listener: beginFieldInitializer(=)
+                  parseExpression(=)
+                    parsePrecedenceExpression(=, 1, true)
+                      parseUnaryExpression(=, true)
+                        parsePrimary(=, expression)
+                          parseSendOrFunctionLiteral(=, expression)
+                            looksLikeFunctionBody(;)
+                            parseSend(=, expression)
+                              ensureIdentifier(=, expression)
+                                listener: handleIdentifier(Map, expression)
+                              listener: beginTypeArguments(<)
+                              listener: handleIdentifier(String, typeReference)
+                              listener: handleNoTypeArguments(,)
+                              listener: handleType(String, null)
+                              listener: handleIdentifier(List, typeReference)
+                              listener: beginTypeArguments(<)
+                              listener: handleIdentifier(int, typeReference)
+                              listener: handleNoTypeArguments(>)
+                              listener: handleType(int, null)
+                              listener: endTypeArguments(1, <, >)
+                              listener: handleType(List, null)
+                              listener: endTypeArguments(2, <, >)
+                              parseArgumentsOpt(>)
+                                parseArguments(>)
+                                  parseArgumentsRest(()
+                                    listener: beginArguments(()
+                                    listener: endArguments(0, (, ))
+                              listener: handleSend(Map, ;)
+                  listener: endFieldInitializer(=, ;)
+                listener: endClassFields(null, null, null, null, null, final, 1, final, ;)
+              listener: endMember()
+            notEofOrValue(}, final)
+            parseClassOrMixinOrExtensionMemberImpl(;, DeclarationKind.Class, F)
+              parseMetadataStar(;)
+                listener: beginMetadataStar(final)
+                listener: endMetadataStar(0)
+              listener: beginMember()
+              parseFields(;, null, null, null, null, null, final, final, Instance of 'ComplexTypeInfo', foo5, DeclarationKind.Class, F, false)
+                listener: beginFields(;)
+                ensureIdentifier(final, typeReference)
+                  listener: handleIdentifier(Map, typeReference)
+                listener: beginTypeArguments(<)
+                listener: handleIdentifier(String, typeReference)
+                listener: handleNoTypeArguments(,)
+                listener: handleType(String, null)
+                listener: handleIdentifier(Undefined, typeReference)
+                listener: handleNoTypeArguments(>)
+                listener: handleType(Undefined, null)
+                listener: endTypeArguments(2, <, >)
+                listener: handleType(Map, null)
+                ensureIdentifierPotentiallyRecovered(>, fieldDeclaration, false)
+                  listener: handleIdentifier(foo5, fieldDeclaration)
+                parseFieldInitializerOpt(foo5, foo5, null, null, null, final, DeclarationKind.Class, F)
+                  listener: beginFieldInitializer(=)
+                  parseExpression(=)
+                    parsePrecedenceExpression(=, 1, true)
+                      parseUnaryExpression(=, true)
+                        parsePrimary(=, expression)
+                          parseSendOrFunctionLiteral(=, expression)
+                            looksLikeFunctionBody(;)
+                            parseSend(=, expression)
+                              ensureIdentifier(=, expression)
+                                listener: handleIdentifier(Map, expression)
+                              listener: handleNoTypeArguments(()
+                              parseArgumentsOpt(Map)
+                                parseArguments(Map)
+                                  parseArgumentsRest(()
+                                    listener: beginArguments(()
+                                    listener: endArguments(0, (, ))
+                              listener: handleSend(Map, ;)
+                  listener: endFieldInitializer(=, ;)
+                listener: endClassFields(null, null, null, null, null, final, 1, final, ;)
+              listener: endMember()
+            notEofOrValue(}, final)
+            parseClassOrMixinOrExtensionMemberImpl(;, DeclarationKind.Class, F)
+              parseMetadataStar(;)
+                listener: beginMetadataStar(final)
+                listener: endMetadataStar(0)
+              listener: beginMember()
+              parseFields(;, null, null, null, null, null, final, final, Instance of 'ComplexTypeInfo', foo6, DeclarationKind.Class, F, false)
+                listener: beginFields(;)
+                ensureIdentifier(final, typeReference)
+                  listener: handleIdentifier(Map, typeReference)
+                listener: beginTypeArguments(<)
+                listener: handleIdentifier(String, typeReference)
+                listener: handleNoTypeArguments(,)
+                listener: handleType(String, null)
+                listener: handleIdentifier(Undefined, typeReference)
+                listener: handleNoTypeArguments(>)
+                listener: handleType(Undefined, null)
+                listener: endTypeArguments(2, <, >)
+                listener: handleType(Map, null)
+                ensureIdentifierPotentiallyRecovered(>, fieldDeclaration, false)
+                  listener: handleIdentifier(foo6, fieldDeclaration)
+                parseFieldInitializerOpt(foo6, foo6, null, null, null, final, DeclarationKind.Class, F)
+                  listener: beginFieldInitializer(=)
+                  parseExpression(=)
+                    parsePrecedenceExpression(=, 1, true)
+                      parseUnaryExpression(=, true)
+                        parsePrimary(=, expression)
+                          parseSendOrFunctionLiteral(=, expression)
+                            parseSend(=, expression)
+                              reportRecoverableErrorWithToken(Map, Instance of 'Template<(Token) => Message>')
+                                listener: handleRecoverableError(Message[UnexpectedToken, Unexpected token 'Map'., null, {lexeme: Map}], Map, Map)
+                              parsePrimary(Map, expression)
+                                parseLiteralListSetMapOrFunction(Map, null)
+                                  listener: beginTypeArguments(<)
+                                  listener: handleIdentifier(String, typeReference)
+                                  listener: handleNoTypeArguments(,)
+                                  listener: handleType(String, null)
+                                  listener: handleIdentifier(List, typeReference)
+                                  listener: beginTypeArguments(<)
+                                  listener: handleIdentifier(int, typeReference)
+                                  listener: handleNoTypeArguments(>)
+                                  listener: handleType(int, null)
+                                  listener: endTypeArguments(1, <, >)
+                                  listener: handleType(List, null)
+                                  listener: endTypeArguments(2, <, >)
+                                  parseLiteralSetOrMapSuffix(>, null)
+                                    parseExpression({)
+                                      parsePrecedenceExpression({, 1, true)
+                                        parseUnaryExpression({, true)
+                                          parsePrimary({, expression)
+                                            parseLiteralString({)
+                                              parseSingleLiteralString({)
+                                                listener: beginLiteralString("a")
+                                                listener: endLiteralString(0, :)
+                                    parseExpression(:)
+                                      parsePrecedenceExpression(:, 1, true)
+                                        parseUnaryExpression(:, true)
+                                          parsePrimary(:, expression)
+                                            parseLiteralNull(:)
+                                              listener: handleLiteralNull(null)
+                                    listener: handleLiteralMapEntry(:, })
+                                    listener: handleLiteralSetOrMap(1, {, null, }, false)
+                  listener: endFieldInitializer(=, ;)
+                listener: endClassFields(null, null, null, null, null, final, 1, final, ;)
+              listener: endMember()
+            notEofOrValue(}, final)
+            parseClassOrMixinOrExtensionMemberImpl(;, DeclarationKind.Class, F)
+              parseMetadataStar(;)
+                listener: beginMetadataStar(final)
+                listener: endMetadataStar(0)
+              listener: beginMember()
+              parseFields(;, null, null, null, null, null, final, final, Instance of 'ComplexTypeInfo', foo7, DeclarationKind.Class, F, false)
+                listener: beginFields(;)
+                ensureIdentifier(final, typeReference)
+                  listener: handleIdentifier(Map, typeReference)
+                listener: beginTypeArguments(<)
+                listener: handleIdentifier(String, typeReference)
+                listener: handleNoTypeArguments(,)
+                listener: handleType(String, null)
+                listener: handleIdentifier(Undefined, typeReference)
+                listener: handleNoTypeArguments(>)
+                listener: handleType(Undefined, null)
+                listener: endTypeArguments(2, <, >)
+                listener: handleType(Map, null)
+                ensureIdentifierPotentiallyRecovered(>, fieldDeclaration, false)
+                  listener: handleIdentifier(foo7, fieldDeclaration)
+                parseFieldInitializerOpt(foo7, foo7, null, null, null, final, DeclarationKind.Class, F)
+                  listener: beginFieldInitializer(=)
+                  parseExpression(=)
+                    parsePrecedenceExpression(=, 1, true)
+                      parseUnaryExpression(=, true)
+                        parsePrimary(=, expression)
+                          parseSendOrFunctionLiteral(=, expression)
+                            parseSend(=, expression)
+                              reportRecoverableErrorWithToken(Map, Instance of 'Template<(Token) => Message>')
+                                listener: handleRecoverableError(Message[UnexpectedToken, Unexpected token 'Map'., null, {lexeme: Map}], Map, Map)
+                              parsePrimary(Map, expression)
+                                listener: handleNoTypeArguments({)
+                                parseLiteralSetOrMapSuffix(Map, null)
+                                  parseExpression({)
+                                    parsePrecedenceExpression({, 1, true)
+                                      parseUnaryExpression({, true)
+                                        parsePrimary({, expression)
+                                          parseLiteralString({)
+                                            parseSingleLiteralString({)
+                                              listener: beginLiteralString("a")
+                                              listener: endLiteralString(0, :)
+                                  parseExpression(:)
+                                    parsePrecedenceExpression(:, 1, true)
+                                      parseUnaryExpression(:, true)
+                                        parsePrimary(:, expression)
+                                          parseLiteralNull(:)
+                                            listener: handleLiteralNull(null)
+                                  listener: handleLiteralMapEntry(:, })
+                                  listener: handleLiteralSetOrMap(1, {, null, }, false)
+                  listener: endFieldInitializer(=, ;)
+                listener: endClassFields(null, null, null, null, null, final, 1, final, ;)
+              listener: endMember()
+            notEofOrValue(}, final)
+            parseClassOrMixinOrExtensionMemberImpl(;, DeclarationKind.Class, F)
+              parseMetadataStar(;)
+                listener: beginMetadataStar(final)
+                listener: endMetadataStar(0)
+              listener: beginMember()
+              parseFields(;, null, null, null, null, null, final, final, Instance of 'ComplexTypeInfo', foo8, DeclarationKind.Class, F, false)
+                listener: beginFields(;)
+                ensureIdentifier(final, typeReference)
+                  listener: handleIdentifier(Map, typeReference)
+                listener: beginTypeArguments(<)
+                listener: handleIdentifier(String, typeReference)
+                listener: handleNoTypeArguments(,)
+                listener: handleType(String, null)
+                listener: handleIdentifier(Undefined, typeReference)
+                listener: handleNoTypeArguments(>)
+                listener: handleType(Undefined, null)
+                listener: endTypeArguments(2, <, >)
+                listener: handleType(Map, null)
+                ensureIdentifierPotentiallyRecovered(>, fieldDeclaration, false)
+                  listener: handleIdentifier(foo8, fieldDeclaration)
+                parseFieldInitializerOpt(foo8, foo8, null, null, null, final, DeclarationKind.Class, F)
+                  listener: beginFieldInitializer(=)
+                  parseExpression(=)
+                    parsePrecedenceExpression(=, 1, true)
+                      parseUnaryExpression(=, true)
+                        parsePrimary(=, expression)
+                          parseLiteralListSetMapOrFunction(=, null)
+                            listener: beginTypeArguments(<)
+                            listener: handleIdentifier(String, typeReference)
+                            listener: handleNoTypeArguments(,)
+                            listener: handleType(String, null)
+                            listener: handleIdentifier(List, typeReference)
+                            listener: beginTypeArguments(<)
+                            listener: handleIdentifier(int, typeReference)
+                            listener: handleNoTypeArguments(>)
+                            listener: handleType(int, null)
+                            listener: endTypeArguments(1, <, >)
+                            listener: handleType(List, null)
+                            listener: endTypeArguments(2, <, >)
+                            parseLiteralSetOrMapSuffix(>, null)
+                              parseExpression({)
+                                parsePrecedenceExpression({, 1, true)
+                                  parseUnaryExpression({, true)
+                                    parsePrimary({, expression)
+                                      parseLiteralString({)
+                                        parseSingleLiteralString({)
+                                          listener: beginLiteralString("a")
+                                          listener: endLiteralString(0, :)
+                              parseExpression(:)
+                                parsePrecedenceExpression(:, 1, true)
+                                  parseUnaryExpression(:, true)
+                                    parsePrimary(:, expression)
+                                      parseLiteralNull(:)
+                                        listener: handleLiteralNull(null)
+                              listener: handleLiteralMapEntry(:, })
+                              listener: handleLiteralSetOrMap(1, {, null, }, false)
+                  listener: endFieldInitializer(=, ;)
+                listener: endClassFields(null, null, null, null, null, final, 1, final, ;)
+              listener: endMember()
+            notEofOrValue(}, final)
+            parseClassOrMixinOrExtensionMemberImpl(;, DeclarationKind.Class, F)
+              parseMetadataStar(;)
+                listener: beginMetadataStar(final)
+                listener: endMetadataStar(0)
+              listener: beginMember()
+              parseFields(;, null, null, null, null, null, final, final, Instance of 'ComplexTypeInfo', foo9, DeclarationKind.Class, F, false)
+                listener: beginFields(;)
+                ensureIdentifier(final, typeReference)
+                  listener: handleIdentifier(Map, typeReference)
+                listener: beginTypeArguments(<)
+                listener: handleIdentifier(String, typeReference)
+                listener: handleNoTypeArguments(,)
+                listener: handleType(String, null)
+                listener: handleIdentifier(Undefined, typeReference)
+                listener: handleNoTypeArguments(>)
+                listener: handleType(Undefined, null)
+                listener: endTypeArguments(2, <, >)
+                listener: handleType(Map, null)
+                ensureIdentifierPotentiallyRecovered(>, fieldDeclaration, false)
+                  listener: handleIdentifier(foo9, fieldDeclaration)
+                parseFieldInitializerOpt(foo9, foo9, null, null, null, final, DeclarationKind.Class, F)
+                  listener: beginFieldInitializer(=)
+                  parseExpression(=)
+                    parsePrecedenceExpression(=, 1, true)
+                      parseUnaryExpression(=, true)
+                        parsePrimary(=, expression)
+                          listener: handleNoTypeArguments({)
+                          parseLiteralSetOrMapSuffix(=, null)
+                            parseExpression({)
+                              parsePrecedenceExpression({, 1, true)
+                                parseUnaryExpression({, true)
+                                  parsePrimary({, expression)
+                                    parseLiteralString({)
+                                      parseSingleLiteralString({)
+                                        listener: beginLiteralString("a")
+                                        listener: endLiteralString(0, :)
+                            parseExpression(:)
+                              parsePrecedenceExpression(:, 1, true)
+                                parseUnaryExpression(:, true)
+                                  parsePrimary(:, expression)
+                                    parseLiteralNull(:)
+                                      listener: handleLiteralNull(null)
+                            listener: handleLiteralMapEntry(:, })
+                            listener: handleLiteralSetOrMap(1, {, null, }, false)
+                  listener: endFieldInitializer(=, ;)
+                listener: endClassFields(null, null, null, null, null, final, 1, final, ;)
+              listener: endMember()
+            notEofOrValue(}, })
+            listener: endClassOrMixinBody(DeclarationKind.Class, 9, {, })
+          listener: endClassDeclaration(class, })
+  listener: endTopLevelDeclaration()
+  reportAllErrorTokens(class)
+  listener: endCompilationUnit(1, )
diff --git a/pkg/front_end/parser_testcases/error_recovery/issue_45251.dart.parser.expect b/pkg/front_end/parser_testcases/error_recovery/issue_45251.dart.parser.expect
new file mode 100644
index 0000000..682cbcb
--- /dev/null
+++ b/pkg/front_end/parser_testcases/error_recovery/issue_45251.dart.parser.expect
@@ -0,0 +1,59 @@
+NOTICE: Stream was rewritten by parser!
+
+class F {
+
+final Map<String, Undefined> foo1 = Map<String, List<int>>{};
+
+
+final Map<String, Undefined> foo2 = <String, List<int>>{};
+
+
+final Map<String, Undefined> foo3 = Map{};
+
+
+final Map<String, Undefined> foo4 = Map<String, List<int>>();
+
+
+final Map<String, Undefined> foo5 = Map();
+
+
+final Map<String, Undefined> foo6 = Map<String, List<int>>{"a": null};
+
+
+final Map<String, Undefined> foo7 = Map{"a": null};
+
+
+final Map<String, Undefined> foo8 = <String, List<int>>{"a": null};
+
+
+final Map<String, Undefined> foo9 = {"a": null};
+}
+
+class[KeywordToken] F[StringToken] {[BeginToken]
+
+final[KeywordToken] Map[StringToken]<[BeginToken]String[StringToken],[SimpleToken] Undefined[StringToken]>[SimpleToken] foo1[StringToken] =[SimpleToken] Map[StringToken]<[BeginToken]String[StringToken],[SimpleToken] List[StringToken]<[BeginToken]int[StringToken]>[SimpleToken]>[SimpleToken]{[BeginToken]}[SimpleToken];[SimpleToken]
+
+
+final[KeywordToken] Map[StringToken]<[BeginToken]String[StringToken],[SimpleToken] Undefined[StringToken]>[SimpleToken] foo2[StringToken] =[SimpleToken] <[BeginToken]String[StringToken],[SimpleToken] List[StringToken]<[BeginToken]int[StringToken]>[SimpleToken]>[SimpleToken]{[BeginToken]}[SimpleToken];[SimpleToken]
+
+
+final[KeywordToken] Map[StringToken]<[BeginToken]String[StringToken],[SimpleToken] Undefined[StringToken]>[SimpleToken] foo3[StringToken] =[SimpleToken] Map[StringToken]{[BeginToken]}[SimpleToken];[SimpleToken]
+
+
+final[KeywordToken] Map[StringToken]<[BeginToken]String[StringToken],[SimpleToken] Undefined[StringToken]>[SimpleToken] foo4[StringToken] =[SimpleToken] Map[StringToken]<[BeginToken]String[StringToken],[SimpleToken] List[StringToken]<[BeginToken]int[StringToken]>[SimpleToken]>[SimpleToken]([BeginToken])[SimpleToken];[SimpleToken]
+
+
+final[KeywordToken] Map[StringToken]<[BeginToken]String[StringToken],[SimpleToken] Undefined[StringToken]>[SimpleToken] foo5[StringToken] =[SimpleToken] Map[StringToken]([BeginToken])[SimpleToken];[SimpleToken]
+
+
+final[KeywordToken] Map[StringToken]<[BeginToken]String[StringToken],[SimpleToken] Undefined[StringToken]>[SimpleToken] foo6[StringToken] =[SimpleToken] Map[StringToken]<[BeginToken]String[StringToken],[SimpleToken] List[StringToken]<[BeginToken]int[StringToken]>[SimpleToken]>[SimpleToken]{[BeginToken]"a"[StringToken]:[SimpleToken] null[KeywordToken]}[SimpleToken];[SimpleToken]
+
+
+final[KeywordToken] Map[StringToken]<[BeginToken]String[StringToken],[SimpleToken] Undefined[StringToken]>[SimpleToken] foo7[StringToken] =[SimpleToken] Map[StringToken]{[BeginToken]"a"[StringToken]:[SimpleToken] null[KeywordToken]}[SimpleToken];[SimpleToken]
+
+
+final[KeywordToken] Map[StringToken]<[BeginToken]String[StringToken],[SimpleToken] Undefined[StringToken]>[SimpleToken] foo8[StringToken] =[SimpleToken] <[BeginToken]String[StringToken],[SimpleToken] List[StringToken]<[BeginToken]int[StringToken]>[SimpleToken]>[SimpleToken]{[BeginToken]"a"[StringToken]:[SimpleToken] null[KeywordToken]}[SimpleToken];[SimpleToken]
+
+
+final[KeywordToken] Map[StringToken]<[BeginToken]String[StringToken],[SimpleToken] Undefined[StringToken]>[SimpleToken] foo9[StringToken] =[SimpleToken] {[BeginToken]"a"[StringToken]:[SimpleToken] null[KeywordToken]}[SimpleToken];[SimpleToken]
+}[SimpleToken][SimpleToken]
diff --git a/pkg/front_end/parser_testcases/error_recovery/issue_45251.dart.scanner.expect b/pkg/front_end/parser_testcases/error_recovery/issue_45251.dart.scanner.expect
new file mode 100644
index 0000000..44dc9e8
--- /dev/null
+++ b/pkg/front_end/parser_testcases/error_recovery/issue_45251.dart.scanner.expect
@@ -0,0 +1,57 @@
+class F {
+
+final Map<String, Undefined> foo1 = Map<String, List<int>>{};
+
+
+final Map<String, Undefined> foo2 = <String, List<int>>{};
+
+
+final Map<String, Undefined> foo3 = Map{};
+
+
+final Map<String, Undefined> foo4 = Map<String, List<int>>();
+
+
+final Map<String, Undefined> foo5 = Map();
+
+
+final Map<String, Undefined> foo6 = Map<String, List<int>>{"a": null};
+
+
+final Map<String, Undefined> foo7 = Map{"a": null};
+
+
+final Map<String, Undefined> foo8 = <String, List<int>>{"a": null};
+
+
+final Map<String, Undefined> foo9 = {"a": null};
+}
+
+class[KeywordToken] F[StringToken] {[BeginToken]
+
+final[KeywordToken] Map[StringToken]<[BeginToken]String[StringToken],[SimpleToken] Undefined[StringToken]>[SimpleToken] foo1[StringToken] =[SimpleToken] Map[StringToken]<[BeginToken]String[StringToken],[SimpleToken] List[StringToken]<[BeginToken]int[StringToken]>>[SimpleToken]{[BeginToken]}[SimpleToken];[SimpleToken]
+
+
+final[KeywordToken] Map[StringToken]<[BeginToken]String[StringToken],[SimpleToken] Undefined[StringToken]>[SimpleToken] foo2[StringToken] =[SimpleToken] <[BeginToken]String[StringToken],[SimpleToken] List[StringToken]<[BeginToken]int[StringToken]>>[SimpleToken]{[BeginToken]}[SimpleToken];[SimpleToken]
+
+
+final[KeywordToken] Map[StringToken]<[BeginToken]String[StringToken],[SimpleToken] Undefined[StringToken]>[SimpleToken] foo3[StringToken] =[SimpleToken] Map[StringToken]{[BeginToken]}[SimpleToken];[SimpleToken]
+
+
+final[KeywordToken] Map[StringToken]<[BeginToken]String[StringToken],[SimpleToken] Undefined[StringToken]>[SimpleToken] foo4[StringToken] =[SimpleToken] Map[StringToken]<[BeginToken]String[StringToken],[SimpleToken] List[StringToken]<[BeginToken]int[StringToken]>>[SimpleToken]([BeginToken])[SimpleToken];[SimpleToken]
+
+
+final[KeywordToken] Map[StringToken]<[BeginToken]String[StringToken],[SimpleToken] Undefined[StringToken]>[SimpleToken] foo5[StringToken] =[SimpleToken] Map[StringToken]([BeginToken])[SimpleToken];[SimpleToken]
+
+
+final[KeywordToken] Map[StringToken]<[BeginToken]String[StringToken],[SimpleToken] Undefined[StringToken]>[SimpleToken] foo6[StringToken] =[SimpleToken] Map[StringToken]<[BeginToken]String[StringToken],[SimpleToken] List[StringToken]<[BeginToken]int[StringToken]>>[SimpleToken]{[BeginToken]"a"[StringToken]:[SimpleToken] null[KeywordToken]}[SimpleToken];[SimpleToken]
+
+
+final[KeywordToken] Map[StringToken]<[BeginToken]String[StringToken],[SimpleToken] Undefined[StringToken]>[SimpleToken] foo7[StringToken] =[SimpleToken] Map[StringToken]{[BeginToken]"a"[StringToken]:[SimpleToken] null[KeywordToken]}[SimpleToken];[SimpleToken]
+
+
+final[KeywordToken] Map[StringToken]<[BeginToken]String[StringToken],[SimpleToken] Undefined[StringToken]>[SimpleToken] foo8[StringToken] =[SimpleToken] <[BeginToken]String[StringToken],[SimpleToken] List[StringToken]<[BeginToken]int[StringToken]>>[SimpleToken]{[BeginToken]"a"[StringToken]:[SimpleToken] null[KeywordToken]}[SimpleToken];[SimpleToken]
+
+
+final[KeywordToken] Map[StringToken]<[BeginToken]String[StringToken],[SimpleToken] Undefined[StringToken]>[SimpleToken] foo9[StringToken] =[SimpleToken] {[BeginToken]"a"[StringToken]:[SimpleToken] null[KeywordToken]}[SimpleToken];[SimpleToken]
+}[SimpleToken][SimpleToken]
diff --git a/pkg/front_end/parser_testcases/error_recovery/issue_45251_const.dart b/pkg/front_end/parser_testcases/error_recovery/issue_45251_const.dart
new file mode 100644
index 0000000..51c5929
--- /dev/null
+++ b/pkg/front_end/parser_testcases/error_recovery/issue_45251_const.dart
@@ -0,0 +1,28 @@
+class F {
+  /* notice the braces at the end instead of parenthesis! */
+  final Map<String, Undefined> foo1 = const Map<String, List<int>>{};
+
+  // variation #1: OK.
+  final Map<String, Undefined> foo2 = const <String, List<int>>{};
+
+  // variation #2: Bad.
+  final Map<String, Undefined> foo3 = const Map{};
+
+  // variation #3: OK.
+  final Map<String, Undefined> foo4 = const Map<String, List<int>>();
+
+  // variation #4: OK.
+  final Map<String, Undefined> foo5 = const Map();
+
+  // variation #5: Bad.
+  final Map<String, Undefined> foo6 = const Map<String, List<int>>{"a": null};
+
+  // variation #6: Bad.
+  final Map<String, Undefined> foo7 = const Map{"a": null};
+
+  // variation #7: OK.
+  final Map<String, Undefined> foo8 = const <String, List<int>>{"a": null};
+
+  // variation #8: OK.
+  final Map<String, Undefined> foo9 = const {"a": null};
+}
\ No newline at end of file
diff --git a/pkg/front_end/parser_testcases/error_recovery/issue_45251_const.dart.expect b/pkg/front_end/parser_testcases/error_recovery/issue_45251_const.dart.expect
new file mode 100644
index 0000000..34a2a61
--- /dev/null
+++ b/pkg/front_end/parser_testcases/error_recovery/issue_45251_const.dart.expect
@@ -0,0 +1,327 @@
+Problems reported:
+
+parser/error_recovery/issue_45251_const:3:45: Unexpected token 'Map'.
+  final Map<String, Undefined> foo1 = const Map<String, List<int>>{};
+                                            ^^^
+
+parser/error_recovery/issue_45251_const:9:45: Unexpected token 'Map'.
+  final Map<String, Undefined> foo3 = const Map{};
+                                            ^^^
+
+parser/error_recovery/issue_45251_const:18:45: Unexpected token 'Map'.
+  final Map<String, Undefined> foo6 = const Map<String, List<int>>{"a": null};
+                                            ^^^
+
+parser/error_recovery/issue_45251_const:21:45: Unexpected token 'Map'.
+  final Map<String, Undefined> foo7 = const Map{"a": null};
+                                            ^^^
+
+beginCompilationUnit(class)
+  beginMetadataStar(class)
+  endMetadataStar(0)
+  beginClassOrNamedMixinApplicationPrelude(class)
+    handleIdentifier(F, classOrMixinDeclaration)
+    handleNoTypeVariables({)
+    beginClassDeclaration(class, null, F)
+      handleNoType(F)
+      handleClassExtends(null, 1)
+      handleClassNoWithClause()
+      handleClassOrMixinImplements(null, 0)
+      handleClassHeader(class, class, null)
+      beginClassOrMixinBody(DeclarationKind.Class, {)
+        beginMetadataStar(final)
+        endMetadataStar(0)
+        beginMember()
+          beginFields({)
+            handleIdentifier(Map, typeReference)
+            beginTypeArguments(<)
+              handleIdentifier(String, typeReference)
+              handleNoTypeArguments(,)
+              handleType(String, null)
+              handleIdentifier(Undefined, typeReference)
+              handleNoTypeArguments(>)
+              handleType(Undefined, null)
+            endTypeArguments(2, <, >)
+            handleType(Map, null)
+            handleIdentifier(foo1, fieldDeclaration)
+            beginFieldInitializer(=)
+              handleRecoverableError(Message[UnexpectedToken, Unexpected token 'Map'., null, {lexeme: Map}], Map, Map)
+              beginConstLiteral(<)
+                beginTypeArguments(<)
+                  handleIdentifier(String, typeReference)
+                  handleNoTypeArguments(,)
+                  handleType(String, null)
+                  handleIdentifier(List, typeReference)
+                  beginTypeArguments(<)
+                    handleIdentifier(int, typeReference)
+                    handleNoTypeArguments(>)
+                    handleType(int, null)
+                  endTypeArguments(1, <, >)
+                  handleType(List, null)
+                endTypeArguments(2, <, >)
+                handleLiteralSetOrMap(0, {, const, }, false)
+              endConstLiteral(;)
+            endFieldInitializer(=, ;)
+          endClassFields(null, null, null, null, null, final, 1, final, ;)
+        endMember()
+        beginMetadataStar(final)
+        endMetadataStar(0)
+        beginMember()
+          beginFields(;)
+            handleIdentifier(Map, typeReference)
+            beginTypeArguments(<)
+              handleIdentifier(String, typeReference)
+              handleNoTypeArguments(,)
+              handleType(String, null)
+              handleIdentifier(Undefined, typeReference)
+              handleNoTypeArguments(>)
+              handleType(Undefined, null)
+            endTypeArguments(2, <, >)
+            handleType(Map, null)
+            handleIdentifier(foo2, fieldDeclaration)
+            beginFieldInitializer(=)
+              beginConstLiteral(<)
+                beginTypeArguments(<)
+                  handleIdentifier(String, typeReference)
+                  handleNoTypeArguments(,)
+                  handleType(String, null)
+                  handleIdentifier(List, typeReference)
+                  beginTypeArguments(<)
+                    handleIdentifier(int, typeReference)
+                    handleNoTypeArguments(>)
+                    handleType(int, null)
+                  endTypeArguments(1, <, >)
+                  handleType(List, null)
+                endTypeArguments(2, <, >)
+                handleLiteralSetOrMap(0, {, const, }, false)
+              endConstLiteral(;)
+            endFieldInitializer(=, ;)
+          endClassFields(null, null, null, null, null, final, 1, final, ;)
+        endMember()
+        beginMetadataStar(final)
+        endMetadataStar(0)
+        beginMember()
+          beginFields(;)
+            handleIdentifier(Map, typeReference)
+            beginTypeArguments(<)
+              handleIdentifier(String, typeReference)
+              handleNoTypeArguments(,)
+              handleType(String, null)
+              handleIdentifier(Undefined, typeReference)
+              handleNoTypeArguments(>)
+              handleType(Undefined, null)
+            endTypeArguments(2, <, >)
+            handleType(Map, null)
+            handleIdentifier(foo3, fieldDeclaration)
+            beginFieldInitializer(=)
+              handleRecoverableError(Message[UnexpectedToken, Unexpected token 'Map'., null, {lexeme: Map}], Map, Map)
+              beginConstLiteral({)
+                handleNoTypeArguments({)
+                handleLiteralSetOrMap(0, {, const, }, false)
+              endConstLiteral(;)
+            endFieldInitializer(=, ;)
+          endClassFields(null, null, null, null, null, final, 1, final, ;)
+        endMember()
+        beginMetadataStar(final)
+        endMetadataStar(0)
+        beginMember()
+          beginFields(;)
+            handleIdentifier(Map, typeReference)
+            beginTypeArguments(<)
+              handleIdentifier(String, typeReference)
+              handleNoTypeArguments(,)
+              handleType(String, null)
+              handleIdentifier(Undefined, typeReference)
+              handleNoTypeArguments(>)
+              handleType(Undefined, null)
+            endTypeArguments(2, <, >)
+            handleType(Map, null)
+            handleIdentifier(foo4, fieldDeclaration)
+            beginFieldInitializer(=)
+              beginConstExpression(const)
+                handleIdentifier(Map, constructorReference)
+                beginConstructorReference(Map)
+                  beginTypeArguments(<)
+                    handleIdentifier(String, typeReference)
+                    handleNoTypeArguments(,)
+                    handleType(String, null)
+                    handleIdentifier(List, typeReference)
+                    beginTypeArguments(<)
+                      handleIdentifier(int, typeReference)
+                      handleNoTypeArguments(>)
+                      handleType(int, null)
+                    endTypeArguments(1, <, >)
+                    handleType(List, null)
+                  endTypeArguments(2, <, >)
+                  handleNoConstructorReferenceContinuationAfterTypeArguments(()
+                endConstructorReference(Map, null, ()
+                beginArguments(()
+                endArguments(0, (, ))
+              endConstExpression(const)
+            endFieldInitializer(=, ;)
+          endClassFields(null, null, null, null, null, final, 1, final, ;)
+        endMember()
+        beginMetadataStar(final)
+        endMetadataStar(0)
+        beginMember()
+          beginFields(;)
+            handleIdentifier(Map, typeReference)
+            beginTypeArguments(<)
+              handleIdentifier(String, typeReference)
+              handleNoTypeArguments(,)
+              handleType(String, null)
+              handleIdentifier(Undefined, typeReference)
+              handleNoTypeArguments(>)
+              handleType(Undefined, null)
+            endTypeArguments(2, <, >)
+            handleType(Map, null)
+            handleIdentifier(foo5, fieldDeclaration)
+            beginFieldInitializer(=)
+              beginConstExpression(const)
+                handleIdentifier(Map, constructorReference)
+                beginConstructorReference(Map)
+                  handleNoTypeArguments(()
+                  handleNoConstructorReferenceContinuationAfterTypeArguments(()
+                endConstructorReference(Map, null, ()
+                beginArguments(()
+                endArguments(0, (, ))
+              endConstExpression(const)
+            endFieldInitializer(=, ;)
+          endClassFields(null, null, null, null, null, final, 1, final, ;)
+        endMember()
+        beginMetadataStar(final)
+        endMetadataStar(0)
+        beginMember()
+          beginFields(;)
+            handleIdentifier(Map, typeReference)
+            beginTypeArguments(<)
+              handleIdentifier(String, typeReference)
+              handleNoTypeArguments(,)
+              handleType(String, null)
+              handleIdentifier(Undefined, typeReference)
+              handleNoTypeArguments(>)
+              handleType(Undefined, null)
+            endTypeArguments(2, <, >)
+            handleType(Map, null)
+            handleIdentifier(foo6, fieldDeclaration)
+            beginFieldInitializer(=)
+              handleRecoverableError(Message[UnexpectedToken, Unexpected token 'Map'., null, {lexeme: Map}], Map, Map)
+              beginConstLiteral(<)
+                beginTypeArguments(<)
+                  handleIdentifier(String, typeReference)
+                  handleNoTypeArguments(,)
+                  handleType(String, null)
+                  handleIdentifier(List, typeReference)
+                  beginTypeArguments(<)
+                    handleIdentifier(int, typeReference)
+                    handleNoTypeArguments(>)
+                    handleType(int, null)
+                  endTypeArguments(1, <, >)
+                  handleType(List, null)
+                endTypeArguments(2, <, >)
+                beginLiteralString("a")
+                endLiteralString(0, :)
+                handleLiteralNull(null)
+                handleLiteralMapEntry(:, })
+                handleLiteralSetOrMap(1, {, const, }, false)
+              endConstLiteral(;)
+            endFieldInitializer(=, ;)
+          endClassFields(null, null, null, null, null, final, 1, final, ;)
+        endMember()
+        beginMetadataStar(final)
+        endMetadataStar(0)
+        beginMember()
+          beginFields(;)
+            handleIdentifier(Map, typeReference)
+            beginTypeArguments(<)
+              handleIdentifier(String, typeReference)
+              handleNoTypeArguments(,)
+              handleType(String, null)
+              handleIdentifier(Undefined, typeReference)
+              handleNoTypeArguments(>)
+              handleType(Undefined, null)
+            endTypeArguments(2, <, >)
+            handleType(Map, null)
+            handleIdentifier(foo7, fieldDeclaration)
+            beginFieldInitializer(=)
+              handleRecoverableError(Message[UnexpectedToken, Unexpected token 'Map'., null, {lexeme: Map}], Map, Map)
+              beginConstLiteral({)
+                handleNoTypeArguments({)
+                beginLiteralString("a")
+                endLiteralString(0, :)
+                handleLiteralNull(null)
+                handleLiteralMapEntry(:, })
+                handleLiteralSetOrMap(1, {, const, }, false)
+              endConstLiteral(;)
+            endFieldInitializer(=, ;)
+          endClassFields(null, null, null, null, null, final, 1, final, ;)
+        endMember()
+        beginMetadataStar(final)
+        endMetadataStar(0)
+        beginMember()
+          beginFields(;)
+            handleIdentifier(Map, typeReference)
+            beginTypeArguments(<)
+              handleIdentifier(String, typeReference)
+              handleNoTypeArguments(,)
+              handleType(String, null)
+              handleIdentifier(Undefined, typeReference)
+              handleNoTypeArguments(>)
+              handleType(Undefined, null)
+            endTypeArguments(2, <, >)
+            handleType(Map, null)
+            handleIdentifier(foo8, fieldDeclaration)
+            beginFieldInitializer(=)
+              beginConstLiteral(<)
+                beginTypeArguments(<)
+                  handleIdentifier(String, typeReference)
+                  handleNoTypeArguments(,)
+                  handleType(String, null)
+                  handleIdentifier(List, typeReference)
+                  beginTypeArguments(<)
+                    handleIdentifier(int, typeReference)
+                    handleNoTypeArguments(>)
+                    handleType(int, null)
+                  endTypeArguments(1, <, >)
+                  handleType(List, null)
+                endTypeArguments(2, <, >)
+                beginLiteralString("a")
+                endLiteralString(0, :)
+                handleLiteralNull(null)
+                handleLiteralMapEntry(:, })
+                handleLiteralSetOrMap(1, {, const, }, false)
+              endConstLiteral(;)
+            endFieldInitializer(=, ;)
+          endClassFields(null, null, null, null, null, final, 1, final, ;)
+        endMember()
+        beginMetadataStar(final)
+        endMetadataStar(0)
+        beginMember()
+          beginFields(;)
+            handleIdentifier(Map, typeReference)
+            beginTypeArguments(<)
+              handleIdentifier(String, typeReference)
+              handleNoTypeArguments(,)
+              handleType(String, null)
+              handleIdentifier(Undefined, typeReference)
+              handleNoTypeArguments(>)
+              handleType(Undefined, null)
+            endTypeArguments(2, <, >)
+            handleType(Map, null)
+            handleIdentifier(foo9, fieldDeclaration)
+            beginFieldInitializer(=)
+              beginConstLiteral({)
+                handleNoTypeArguments({)
+                beginLiteralString("a")
+                endLiteralString(0, :)
+                handleLiteralNull(null)
+                handleLiteralMapEntry(:, })
+                handleLiteralSetOrMap(1, {, const, }, false)
+              endConstLiteral(;)
+            endFieldInitializer(=, ;)
+          endClassFields(null, null, null, null, null, final, 1, final, ;)
+        endMember()
+      endClassOrMixinBody(DeclarationKind.Class, 9, {, })
+    endClassDeclaration(class, })
+  endTopLevelDeclaration()
+endCompilationUnit(1, )
diff --git a/pkg/front_end/parser_testcases/error_recovery/issue_45251_const.dart.intertwined.expect b/pkg/front_end/parser_testcases/error_recovery/issue_45251_const.dart.intertwined.expect
new file mode 100644
index 0000000..7637c4b
--- /dev/null
+++ b/pkg/front_end/parser_testcases/error_recovery/issue_45251_const.dart.intertwined.expect
@@ -0,0 +1,503 @@
+parseUnit(class)
+  skipErrorTokens(class)
+  listener: beginCompilationUnit(class)
+  syntheticPreviousToken(class)
+  parseTopLevelDeclarationImpl(, Instance of 'DirectiveContext')
+    parseMetadataStar()
+      listener: beginMetadataStar(class)
+      listener: endMetadataStar(0)
+    parseTopLevelKeywordDeclaration(, class, Instance of 'DirectiveContext')
+      parseClassDeclarationModifiers(, class)
+      parseClassOrNamedMixinApplication(null, class)
+        listener: beginClassOrNamedMixinApplicationPrelude(class)
+        ensureIdentifier(class, classOrMixinDeclaration)
+          listener: handleIdentifier(F, classOrMixinDeclaration)
+        listener: handleNoTypeVariables({)
+        listener: beginClassDeclaration(class, null, F)
+        parseClass(F, class, class, F)
+          parseClassHeaderOpt(F, class, class)
+            parseClassExtendsOpt(F)
+              listener: handleNoType(F)
+              listener: handleClassExtends(null, 1)
+            parseWithClauseOpt(F)
+              listener: handleClassNoWithClause()
+            parseClassOrMixinImplementsOpt(F)
+              listener: handleClassOrMixinImplements(null, 0)
+            listener: handleClassHeader(class, class, null)
+          parseClassOrMixinOrExtensionBody(F, DeclarationKind.Class, F)
+            listener: beginClassOrMixinBody(DeclarationKind.Class, {)
+            notEofOrValue(}, final)
+            parseClassOrMixinOrExtensionMemberImpl({, DeclarationKind.Class, F)
+              parseMetadataStar({)
+                listener: beginMetadataStar(final)
+                listener: endMetadataStar(0)
+              listener: beginMember()
+              parseFields({, null, null, null, null, null, final, final, Instance of 'ComplexTypeInfo', foo1, DeclarationKind.Class, F, false)
+                listener: beginFields({)
+                ensureIdentifier(final, typeReference)
+                  listener: handleIdentifier(Map, typeReference)
+                listener: beginTypeArguments(<)
+                listener: handleIdentifier(String, typeReference)
+                listener: handleNoTypeArguments(,)
+                listener: handleType(String, null)
+                listener: handleIdentifier(Undefined, typeReference)
+                listener: handleNoTypeArguments(>)
+                listener: handleType(Undefined, null)
+                listener: endTypeArguments(2, <, >)
+                listener: handleType(Map, null)
+                ensureIdentifierPotentiallyRecovered(>, fieldDeclaration, false)
+                  listener: handleIdentifier(foo1, fieldDeclaration)
+                parseFieldInitializerOpt(foo1, foo1, null, null, null, final, DeclarationKind.Class, F)
+                  listener: beginFieldInitializer(=)
+                  parseExpression(=)
+                    parsePrecedenceExpression(=, 1, true)
+                      parseUnaryExpression(=, true)
+                        parsePrimary(=, expression)
+                          parseConstExpression(=)
+                            reportRecoverableErrorWithToken(Map, Instance of 'Template<(Token) => Message>')
+                              listener: handleRecoverableError(Message[UnexpectedToken, Unexpected token 'Map'., null, {lexeme: Map}], Map, Map)
+                            listener: beginConstLiteral(<)
+                            parseLiteralListSetMapOrFunction(Map, const)
+                              listener: beginTypeArguments(<)
+                              listener: handleIdentifier(String, typeReference)
+                              listener: handleNoTypeArguments(,)
+                              listener: handleType(String, null)
+                              listener: handleIdentifier(List, typeReference)
+                              listener: beginTypeArguments(<)
+                              listener: handleIdentifier(int, typeReference)
+                              listener: handleNoTypeArguments(>)
+                              listener: handleType(int, null)
+                              listener: endTypeArguments(1, <, >)
+                              listener: handleType(List, null)
+                              listener: endTypeArguments(2, <, >)
+                              parseLiteralSetOrMapSuffix(>, const)
+                                listener: handleLiteralSetOrMap(0, {, const, }, false)
+                            listener: endConstLiteral(;)
+                  listener: endFieldInitializer(=, ;)
+                listener: endClassFields(null, null, null, null, null, final, 1, final, ;)
+              listener: endMember()
+            notEofOrValue(}, final)
+            parseClassOrMixinOrExtensionMemberImpl(;, DeclarationKind.Class, F)
+              parseMetadataStar(;)
+                listener: beginMetadataStar(final)
+                listener: endMetadataStar(0)
+              listener: beginMember()
+              parseFields(;, null, null, null, null, null, final, final, Instance of 'ComplexTypeInfo', foo2, DeclarationKind.Class, F, false)
+                listener: beginFields(;)
+                ensureIdentifier(final, typeReference)
+                  listener: handleIdentifier(Map, typeReference)
+                listener: beginTypeArguments(<)
+                listener: handleIdentifier(String, typeReference)
+                listener: handleNoTypeArguments(,)
+                listener: handleType(String, null)
+                listener: handleIdentifier(Undefined, typeReference)
+                listener: handleNoTypeArguments(>)
+                listener: handleType(Undefined, null)
+                listener: endTypeArguments(2, <, >)
+                listener: handleType(Map, null)
+                ensureIdentifierPotentiallyRecovered(>, fieldDeclaration, false)
+                  listener: handleIdentifier(foo2, fieldDeclaration)
+                parseFieldInitializerOpt(foo2, foo2, null, null, null, final, DeclarationKind.Class, F)
+                  listener: beginFieldInitializer(=)
+                  parseExpression(=)
+                    parsePrecedenceExpression(=, 1, true)
+                      parseUnaryExpression(=, true)
+                        parsePrimary(=, expression)
+                          parseConstExpression(=)
+                            listener: beginConstLiteral(<)
+                            parseLiteralListSetMapOrFunction(const, const)
+                              listener: beginTypeArguments(<)
+                              listener: handleIdentifier(String, typeReference)
+                              listener: handleNoTypeArguments(,)
+                              listener: handleType(String, null)
+                              listener: handleIdentifier(List, typeReference)
+                              listener: beginTypeArguments(<)
+                              listener: handleIdentifier(int, typeReference)
+                              listener: handleNoTypeArguments(>)
+                              listener: handleType(int, null)
+                              listener: endTypeArguments(1, <, >)
+                              listener: handleType(List, null)
+                              listener: endTypeArguments(2, <, >)
+                              parseLiteralSetOrMapSuffix(>, const)
+                                listener: handleLiteralSetOrMap(0, {, const, }, false)
+                            listener: endConstLiteral(;)
+                  listener: endFieldInitializer(=, ;)
+                listener: endClassFields(null, null, null, null, null, final, 1, final, ;)
+              listener: endMember()
+            notEofOrValue(}, final)
+            parseClassOrMixinOrExtensionMemberImpl(;, DeclarationKind.Class, F)
+              parseMetadataStar(;)
+                listener: beginMetadataStar(final)
+                listener: endMetadataStar(0)
+              listener: beginMember()
+              parseFields(;, null, null, null, null, null, final, final, Instance of 'ComplexTypeInfo', foo3, DeclarationKind.Class, F, false)
+                listener: beginFields(;)
+                ensureIdentifier(final, typeReference)
+                  listener: handleIdentifier(Map, typeReference)
+                listener: beginTypeArguments(<)
+                listener: handleIdentifier(String, typeReference)
+                listener: handleNoTypeArguments(,)
+                listener: handleType(String, null)
+                listener: handleIdentifier(Undefined, typeReference)
+                listener: handleNoTypeArguments(>)
+                listener: handleType(Undefined, null)
+                listener: endTypeArguments(2, <, >)
+                listener: handleType(Map, null)
+                ensureIdentifierPotentiallyRecovered(>, fieldDeclaration, false)
+                  listener: handleIdentifier(foo3, fieldDeclaration)
+                parseFieldInitializerOpt(foo3, foo3, null, null, null, final, DeclarationKind.Class, F)
+                  listener: beginFieldInitializer(=)
+                  parseExpression(=)
+                    parsePrecedenceExpression(=, 1, true)
+                      parseUnaryExpression(=, true)
+                        parsePrimary(=, expression)
+                          parseConstExpression(=)
+                            reportRecoverableErrorWithToken(Map, Instance of 'Template<(Token) => Message>')
+                              listener: handleRecoverableError(Message[UnexpectedToken, Unexpected token 'Map'., null, {lexeme: Map}], Map, Map)
+                            listener: beginConstLiteral({)
+                            listener: handleNoTypeArguments({)
+                            parseLiteralSetOrMapSuffix(Map, const)
+                              listener: handleLiteralSetOrMap(0, {, const, }, false)
+                            listener: endConstLiteral(;)
+                  listener: endFieldInitializer(=, ;)
+                listener: endClassFields(null, null, null, null, null, final, 1, final, ;)
+              listener: endMember()
+            notEofOrValue(}, final)
+            parseClassOrMixinOrExtensionMemberImpl(;, DeclarationKind.Class, F)
+              parseMetadataStar(;)
+                listener: beginMetadataStar(final)
+                listener: endMetadataStar(0)
+              listener: beginMember()
+              parseFields(;, null, null, null, null, null, final, final, Instance of 'ComplexTypeInfo', foo4, DeclarationKind.Class, F, false)
+                listener: beginFields(;)
+                ensureIdentifier(final, typeReference)
+                  listener: handleIdentifier(Map, typeReference)
+                listener: beginTypeArguments(<)
+                listener: handleIdentifier(String, typeReference)
+                listener: handleNoTypeArguments(,)
+                listener: handleType(String, null)
+                listener: handleIdentifier(Undefined, typeReference)
+                listener: handleNoTypeArguments(>)
+                listener: handleType(Undefined, null)
+                listener: endTypeArguments(2, <, >)
+                listener: handleType(Map, null)
+                ensureIdentifierPotentiallyRecovered(>, fieldDeclaration, false)
+                  listener: handleIdentifier(foo4, fieldDeclaration)
+                parseFieldInitializerOpt(foo4, foo4, null, null, null, final, DeclarationKind.Class, F)
+                  listener: beginFieldInitializer(=)
+                  parseExpression(=)
+                    parsePrecedenceExpression(=, 1, true)
+                      parseUnaryExpression(=, true)
+                        parsePrimary(=, expression)
+                          parseConstExpression(=)
+                            listener: beginConstExpression(const)
+                            parseConstructorReference(const, Instance of 'ComplexTypeParamOrArgInfo')
+                              ensureIdentifier(const, constructorReference)
+                                listener: handleIdentifier(Map, constructorReference)
+                              listener: beginConstructorReference(Map)
+                              parseQualifiedRestOpt(Map, constructorReferenceContinuation)
+                              listener: beginTypeArguments(<)
+                              listener: handleIdentifier(String, typeReference)
+                              listener: handleNoTypeArguments(,)
+                              listener: handleType(String, null)
+                              listener: handleIdentifier(List, typeReference)
+                              listener: beginTypeArguments(<)
+                              listener: handleIdentifier(int, typeReference)
+                              listener: handleNoTypeArguments(>)
+                              listener: handleType(int, null)
+                              listener: endTypeArguments(1, <, >)
+                              listener: handleType(List, null)
+                              listener: endTypeArguments(2, <, >)
+                              listener: handleNoConstructorReferenceContinuationAfterTypeArguments(()
+                              listener: endConstructorReference(Map, null, ()
+                            parseConstructorInvocationArguments(>)
+                              parseArgumentsRest(()
+                                listener: beginArguments(()
+                                listener: endArguments(0, (, ))
+                            listener: endConstExpression(const)
+                  listener: endFieldInitializer(=, ;)
+                listener: endClassFields(null, null, null, null, null, final, 1, final, ;)
+              listener: endMember()
+            notEofOrValue(}, final)
+            parseClassOrMixinOrExtensionMemberImpl(;, DeclarationKind.Class, F)
+              parseMetadataStar(;)
+                listener: beginMetadataStar(final)
+                listener: endMetadataStar(0)
+              listener: beginMember()
+              parseFields(;, null, null, null, null, null, final, final, Instance of 'ComplexTypeInfo', foo5, DeclarationKind.Class, F, false)
+                listener: beginFields(;)
+                ensureIdentifier(final, typeReference)
+                  listener: handleIdentifier(Map, typeReference)
+                listener: beginTypeArguments(<)
+                listener: handleIdentifier(String, typeReference)
+                listener: handleNoTypeArguments(,)
+                listener: handleType(String, null)
+                listener: handleIdentifier(Undefined, typeReference)
+                listener: handleNoTypeArguments(>)
+                listener: handleType(Undefined, null)
+                listener: endTypeArguments(2, <, >)
+                listener: handleType(Map, null)
+                ensureIdentifierPotentiallyRecovered(>, fieldDeclaration, false)
+                  listener: handleIdentifier(foo5, fieldDeclaration)
+                parseFieldInitializerOpt(foo5, foo5, null, null, null, final, DeclarationKind.Class, F)
+                  listener: beginFieldInitializer(=)
+                  parseExpression(=)
+                    parsePrecedenceExpression(=, 1, true)
+                      parseUnaryExpression(=, true)
+                        parsePrimary(=, expression)
+                          parseConstExpression(=)
+                            listener: beginConstExpression(const)
+                            parseConstructorReference(const, Instance of 'NoTypeParamOrArg')
+                              ensureIdentifier(const, constructorReference)
+                                listener: handleIdentifier(Map, constructorReference)
+                              listener: beginConstructorReference(Map)
+                              parseQualifiedRestOpt(Map, constructorReferenceContinuation)
+                              listener: handleNoTypeArguments(()
+                              listener: handleNoConstructorReferenceContinuationAfterTypeArguments(()
+                              listener: endConstructorReference(Map, null, ()
+                            parseConstructorInvocationArguments(Map)
+                              parseArgumentsRest(()
+                                listener: beginArguments(()
+                                listener: endArguments(0, (, ))
+                            listener: endConstExpression(const)
+                  listener: endFieldInitializer(=, ;)
+                listener: endClassFields(null, null, null, null, null, final, 1, final, ;)
+              listener: endMember()
+            notEofOrValue(}, final)
+            parseClassOrMixinOrExtensionMemberImpl(;, DeclarationKind.Class, F)
+              parseMetadataStar(;)
+                listener: beginMetadataStar(final)
+                listener: endMetadataStar(0)
+              listener: beginMember()
+              parseFields(;, null, null, null, null, null, final, final, Instance of 'ComplexTypeInfo', foo6, DeclarationKind.Class, F, false)
+                listener: beginFields(;)
+                ensureIdentifier(final, typeReference)
+                  listener: handleIdentifier(Map, typeReference)
+                listener: beginTypeArguments(<)
+                listener: handleIdentifier(String, typeReference)
+                listener: handleNoTypeArguments(,)
+                listener: handleType(String, null)
+                listener: handleIdentifier(Undefined, typeReference)
+                listener: handleNoTypeArguments(>)
+                listener: handleType(Undefined, null)
+                listener: endTypeArguments(2, <, >)
+                listener: handleType(Map, null)
+                ensureIdentifierPotentiallyRecovered(>, fieldDeclaration, false)
+                  listener: handleIdentifier(foo6, fieldDeclaration)
+                parseFieldInitializerOpt(foo6, foo6, null, null, null, final, DeclarationKind.Class, F)
+                  listener: beginFieldInitializer(=)
+                  parseExpression(=)
+                    parsePrecedenceExpression(=, 1, true)
+                      parseUnaryExpression(=, true)
+                        parsePrimary(=, expression)
+                          parseConstExpression(=)
+                            reportRecoverableErrorWithToken(Map, Instance of 'Template<(Token) => Message>')
+                              listener: handleRecoverableError(Message[UnexpectedToken, Unexpected token 'Map'., null, {lexeme: Map}], Map, Map)
+                            listener: beginConstLiteral(<)
+                            parseLiteralListSetMapOrFunction(Map, const)
+                              listener: beginTypeArguments(<)
+                              listener: handleIdentifier(String, typeReference)
+                              listener: handleNoTypeArguments(,)
+                              listener: handleType(String, null)
+                              listener: handleIdentifier(List, typeReference)
+                              listener: beginTypeArguments(<)
+                              listener: handleIdentifier(int, typeReference)
+                              listener: handleNoTypeArguments(>)
+                              listener: handleType(int, null)
+                              listener: endTypeArguments(1, <, >)
+                              listener: handleType(List, null)
+                              listener: endTypeArguments(2, <, >)
+                              parseLiteralSetOrMapSuffix(>, const)
+                                parseExpression({)
+                                  parsePrecedenceExpression({, 1, true)
+                                    parseUnaryExpression({, true)
+                                      parsePrimary({, expression)
+                                        parseLiteralString({)
+                                          parseSingleLiteralString({)
+                                            listener: beginLiteralString("a")
+                                            listener: endLiteralString(0, :)
+                                parseExpression(:)
+                                  parsePrecedenceExpression(:, 1, true)
+                                    parseUnaryExpression(:, true)
+                                      parsePrimary(:, expression)
+                                        parseLiteralNull(:)
+                                          listener: handleLiteralNull(null)
+                                listener: handleLiteralMapEntry(:, })
+                                listener: handleLiteralSetOrMap(1, {, const, }, false)
+                            listener: endConstLiteral(;)
+                  listener: endFieldInitializer(=, ;)
+                listener: endClassFields(null, null, null, null, null, final, 1, final, ;)
+              listener: endMember()
+            notEofOrValue(}, final)
+            parseClassOrMixinOrExtensionMemberImpl(;, DeclarationKind.Class, F)
+              parseMetadataStar(;)
+                listener: beginMetadataStar(final)
+                listener: endMetadataStar(0)
+              listener: beginMember()
+              parseFields(;, null, null, null, null, null, final, final, Instance of 'ComplexTypeInfo', foo7, DeclarationKind.Class, F, false)
+                listener: beginFields(;)
+                ensureIdentifier(final, typeReference)
+                  listener: handleIdentifier(Map, typeReference)
+                listener: beginTypeArguments(<)
+                listener: handleIdentifier(String, typeReference)
+                listener: handleNoTypeArguments(,)
+                listener: handleType(String, null)
+                listener: handleIdentifier(Undefined, typeReference)
+                listener: handleNoTypeArguments(>)
+                listener: handleType(Undefined, null)
+                listener: endTypeArguments(2, <, >)
+                listener: handleType(Map, null)
+                ensureIdentifierPotentiallyRecovered(>, fieldDeclaration, false)
+                  listener: handleIdentifier(foo7, fieldDeclaration)
+                parseFieldInitializerOpt(foo7, foo7, null, null, null, final, DeclarationKind.Class, F)
+                  listener: beginFieldInitializer(=)
+                  parseExpression(=)
+                    parsePrecedenceExpression(=, 1, true)
+                      parseUnaryExpression(=, true)
+                        parsePrimary(=, expression)
+                          parseConstExpression(=)
+                            reportRecoverableErrorWithToken(Map, Instance of 'Template<(Token) => Message>')
+                              listener: handleRecoverableError(Message[UnexpectedToken, Unexpected token 'Map'., null, {lexeme: Map}], Map, Map)
+                            listener: beginConstLiteral({)
+                            listener: handleNoTypeArguments({)
+                            parseLiteralSetOrMapSuffix(Map, const)
+                              parseExpression({)
+                                parsePrecedenceExpression({, 1, true)
+                                  parseUnaryExpression({, true)
+                                    parsePrimary({, expression)
+                                      parseLiteralString({)
+                                        parseSingleLiteralString({)
+                                          listener: beginLiteralString("a")
+                                          listener: endLiteralString(0, :)
+                              parseExpression(:)
+                                parsePrecedenceExpression(:, 1, true)
+                                  parseUnaryExpression(:, true)
+                                    parsePrimary(:, expression)
+                                      parseLiteralNull(:)
+                                        listener: handleLiteralNull(null)
+                              listener: handleLiteralMapEntry(:, })
+                              listener: handleLiteralSetOrMap(1, {, const, }, false)
+                            listener: endConstLiteral(;)
+                  listener: endFieldInitializer(=, ;)
+                listener: endClassFields(null, null, null, null, null, final, 1, final, ;)
+              listener: endMember()
+            notEofOrValue(}, final)
+            parseClassOrMixinOrExtensionMemberImpl(;, DeclarationKind.Class, F)
+              parseMetadataStar(;)
+                listener: beginMetadataStar(final)
+                listener: endMetadataStar(0)
+              listener: beginMember()
+              parseFields(;, null, null, null, null, null, final, final, Instance of 'ComplexTypeInfo', foo8, DeclarationKind.Class, F, false)
+                listener: beginFields(;)
+                ensureIdentifier(final, typeReference)
+                  listener: handleIdentifier(Map, typeReference)
+                listener: beginTypeArguments(<)
+                listener: handleIdentifier(String, typeReference)
+                listener: handleNoTypeArguments(,)
+                listener: handleType(String, null)
+                listener: handleIdentifier(Undefined, typeReference)
+                listener: handleNoTypeArguments(>)
+                listener: handleType(Undefined, null)
+                listener: endTypeArguments(2, <, >)
+                listener: handleType(Map, null)
+                ensureIdentifierPotentiallyRecovered(>, fieldDeclaration, false)
+                  listener: handleIdentifier(foo8, fieldDeclaration)
+                parseFieldInitializerOpt(foo8, foo8, null, null, null, final, DeclarationKind.Class, F)
+                  listener: beginFieldInitializer(=)
+                  parseExpression(=)
+                    parsePrecedenceExpression(=, 1, true)
+                      parseUnaryExpression(=, true)
+                        parsePrimary(=, expression)
+                          parseConstExpression(=)
+                            listener: beginConstLiteral(<)
+                            parseLiteralListSetMapOrFunction(const, const)
+                              listener: beginTypeArguments(<)
+                              listener: handleIdentifier(String, typeReference)
+                              listener: handleNoTypeArguments(,)
+                              listener: handleType(String, null)
+                              listener: handleIdentifier(List, typeReference)
+                              listener: beginTypeArguments(<)
+                              listener: handleIdentifier(int, typeReference)
+                              listener: handleNoTypeArguments(>)
+                              listener: handleType(int, null)
+                              listener: endTypeArguments(1, <, >)
+                              listener: handleType(List, null)
+                              listener: endTypeArguments(2, <, >)
+                              parseLiteralSetOrMapSuffix(>, const)
+                                parseExpression({)
+                                  parsePrecedenceExpression({, 1, true)
+                                    parseUnaryExpression({, true)
+                                      parsePrimary({, expression)
+                                        parseLiteralString({)
+                                          parseSingleLiteralString({)
+                                            listener: beginLiteralString("a")
+                                            listener: endLiteralString(0, :)
+                                parseExpression(:)
+                                  parsePrecedenceExpression(:, 1, true)
+                                    parseUnaryExpression(:, true)
+                                      parsePrimary(:, expression)
+                                        parseLiteralNull(:)
+                                          listener: handleLiteralNull(null)
+                                listener: handleLiteralMapEntry(:, })
+                                listener: handleLiteralSetOrMap(1, {, const, }, false)
+                            listener: endConstLiteral(;)
+                  listener: endFieldInitializer(=, ;)
+                listener: endClassFields(null, null, null, null, null, final, 1, final, ;)
+              listener: endMember()
+            notEofOrValue(}, final)
+            parseClassOrMixinOrExtensionMemberImpl(;, DeclarationKind.Class, F)
+              parseMetadataStar(;)
+                listener: beginMetadataStar(final)
+                listener: endMetadataStar(0)
+              listener: beginMember()
+              parseFields(;, null, null, null, null, null, final, final, Instance of 'ComplexTypeInfo', foo9, DeclarationKind.Class, F, false)
+                listener: beginFields(;)
+                ensureIdentifier(final, typeReference)
+                  listener: handleIdentifier(Map, typeReference)
+                listener: beginTypeArguments(<)
+                listener: handleIdentifier(String, typeReference)
+                listener: handleNoTypeArguments(,)
+                listener: handleType(String, null)
+                listener: handleIdentifier(Undefined, typeReference)
+                listener: handleNoTypeArguments(>)
+                listener: handleType(Undefined, null)
+                listener: endTypeArguments(2, <, >)
+                listener: handleType(Map, null)
+                ensureIdentifierPotentiallyRecovered(>, fieldDeclaration, false)
+                  listener: handleIdentifier(foo9, fieldDeclaration)
+                parseFieldInitializerOpt(foo9, foo9, null, null, null, final, DeclarationKind.Class, F)
+                  listener: beginFieldInitializer(=)
+                  parseExpression(=)
+                    parsePrecedenceExpression(=, 1, true)
+                      parseUnaryExpression(=, true)
+                        parsePrimary(=, expression)
+                          parseConstExpression(=)
+                            listener: beginConstLiteral({)
+                            listener: handleNoTypeArguments({)
+                            parseLiteralSetOrMapSuffix(const, const)
+                              parseExpression({)
+                                parsePrecedenceExpression({, 1, true)
+                                  parseUnaryExpression({, true)
+                                    parsePrimary({, expression)
+                                      parseLiteralString({)
+                                        parseSingleLiteralString({)
+                                          listener: beginLiteralString("a")
+                                          listener: endLiteralString(0, :)
+                              parseExpression(:)
+                                parsePrecedenceExpression(:, 1, true)
+                                  parseUnaryExpression(:, true)
+                                    parsePrimary(:, expression)
+                                      parseLiteralNull(:)
+                                        listener: handleLiteralNull(null)
+                              listener: handleLiteralMapEntry(:, })
+                              listener: handleLiteralSetOrMap(1, {, const, }, false)
+                            listener: endConstLiteral(;)
+                  listener: endFieldInitializer(=, ;)
+                listener: endClassFields(null, null, null, null, null, final, 1, final, ;)
+              listener: endMember()
+            notEofOrValue(}, })
+            listener: endClassOrMixinBody(DeclarationKind.Class, 9, {, })
+          listener: endClassDeclaration(class, })
+  listener: endTopLevelDeclaration()
+  reportAllErrorTokens(class)
+  listener: endCompilationUnit(1, )
diff --git a/pkg/front_end/parser_testcases/error_recovery/issue_45251_const.dart.parser.expect b/pkg/front_end/parser_testcases/error_recovery/issue_45251_const.dart.parser.expect
new file mode 100644
index 0000000..a66770f
--- /dev/null
+++ b/pkg/front_end/parser_testcases/error_recovery/issue_45251_const.dart.parser.expect
@@ -0,0 +1,59 @@
+NOTICE: Stream was rewritten by parser!
+
+class F {
+
+final Map<String, Undefined> foo1 = const Map<String, List<int>>{};
+
+
+final Map<String, Undefined> foo2 = const <String, List<int>>{};
+
+
+final Map<String, Undefined> foo3 = const Map{};
+
+
+final Map<String, Undefined> foo4 = const Map<String, List<int>>();
+
+
+final Map<String, Undefined> foo5 = const Map();
+
+
+final Map<String, Undefined> foo6 = const Map<String, List<int>>{"a": null};
+
+
+final Map<String, Undefined> foo7 = const Map{"a": null};
+
+
+final Map<String, Undefined> foo8 = const <String, List<int>>{"a": null};
+
+
+final Map<String, Undefined> foo9 = const {"a": null};
+}
+
+class[KeywordToken] F[StringToken] {[BeginToken]
+
+final[KeywordToken] Map[StringToken]<[BeginToken]String[StringToken],[SimpleToken] Undefined[StringToken]>[SimpleToken] foo1[StringToken] =[SimpleToken] const[KeywordToken] Map[StringToken]<[BeginToken]String[StringToken],[SimpleToken] List[StringToken]<[BeginToken]int[StringToken]>[SimpleToken]>[SimpleToken]{[BeginToken]}[SimpleToken];[SimpleToken]
+
+
+final[KeywordToken] Map[StringToken]<[BeginToken]String[StringToken],[SimpleToken] Undefined[StringToken]>[SimpleToken] foo2[StringToken] =[SimpleToken] const[KeywordToken] <[BeginToken]String[StringToken],[SimpleToken] List[StringToken]<[BeginToken]int[StringToken]>[SimpleToken]>[SimpleToken]{[BeginToken]}[SimpleToken];[SimpleToken]
+
+
+final[KeywordToken] Map[StringToken]<[BeginToken]String[StringToken],[SimpleToken] Undefined[StringToken]>[SimpleToken] foo3[StringToken] =[SimpleToken] const[KeywordToken] Map[StringToken]{[BeginToken]}[SimpleToken];[SimpleToken]
+
+
+final[KeywordToken] Map[StringToken]<[BeginToken]String[StringToken],[SimpleToken] Undefined[StringToken]>[SimpleToken] foo4[StringToken] =[SimpleToken] const[KeywordToken] Map[StringToken]<[BeginToken]String[StringToken],[SimpleToken] List[StringToken]<[BeginToken]int[StringToken]>[SimpleToken]>[SimpleToken]([BeginToken])[SimpleToken];[SimpleToken]
+
+
+final[KeywordToken] Map[StringToken]<[BeginToken]String[StringToken],[SimpleToken] Undefined[StringToken]>[SimpleToken] foo5[StringToken] =[SimpleToken] const[KeywordToken] Map[StringToken]([BeginToken])[SimpleToken];[SimpleToken]
+
+
+final[KeywordToken] Map[StringToken]<[BeginToken]String[StringToken],[SimpleToken] Undefined[StringToken]>[SimpleToken] foo6[StringToken] =[SimpleToken] const[KeywordToken] Map[StringToken]<[BeginToken]String[StringToken],[SimpleToken] List[StringToken]<[BeginToken]int[StringToken]>[SimpleToken]>[SimpleToken]{[BeginToken]"a"[StringToken]:[SimpleToken] null[KeywordToken]}[SimpleToken];[SimpleToken]
+
+
+final[KeywordToken] Map[StringToken]<[BeginToken]String[StringToken],[SimpleToken] Undefined[StringToken]>[SimpleToken] foo7[StringToken] =[SimpleToken] const[KeywordToken] Map[StringToken]{[BeginToken]"a"[StringToken]:[SimpleToken] null[KeywordToken]}[SimpleToken];[SimpleToken]
+
+
+final[KeywordToken] Map[StringToken]<[BeginToken]String[StringToken],[SimpleToken] Undefined[StringToken]>[SimpleToken] foo8[StringToken] =[SimpleToken] const[KeywordToken] <[BeginToken]String[StringToken],[SimpleToken] List[StringToken]<[BeginToken]int[StringToken]>[SimpleToken]>[SimpleToken]{[BeginToken]"a"[StringToken]:[SimpleToken] null[KeywordToken]}[SimpleToken];[SimpleToken]
+
+
+final[KeywordToken] Map[StringToken]<[BeginToken]String[StringToken],[SimpleToken] Undefined[StringToken]>[SimpleToken] foo9[StringToken] =[SimpleToken] const[KeywordToken] {[BeginToken]"a"[StringToken]:[SimpleToken] null[KeywordToken]}[SimpleToken];[SimpleToken]
+}[SimpleToken][SimpleToken]
diff --git a/pkg/front_end/parser_testcases/error_recovery/issue_45251_const.dart.scanner.expect b/pkg/front_end/parser_testcases/error_recovery/issue_45251_const.dart.scanner.expect
new file mode 100644
index 0000000..a45fa22
--- /dev/null
+++ b/pkg/front_end/parser_testcases/error_recovery/issue_45251_const.dart.scanner.expect
@@ -0,0 +1,57 @@
+class F {
+
+final Map<String, Undefined> foo1 = const Map<String, List<int>>{};
+
+
+final Map<String, Undefined> foo2 = const <String, List<int>>{};
+
+
+final Map<String, Undefined> foo3 = const Map{};
+
+
+final Map<String, Undefined> foo4 = const Map<String, List<int>>();
+
+
+final Map<String, Undefined> foo5 = const Map();
+
+
+final Map<String, Undefined> foo6 = const Map<String, List<int>>{"a": null};
+
+
+final Map<String, Undefined> foo7 = const Map{"a": null};
+
+
+final Map<String, Undefined> foo8 = const <String, List<int>>{"a": null};
+
+
+final Map<String, Undefined> foo9 = const {"a": null};
+}
+
+class[KeywordToken] F[StringToken] {[BeginToken]
+
+final[KeywordToken] Map[StringToken]<[BeginToken]String[StringToken],[SimpleToken] Undefined[StringToken]>[SimpleToken] foo1[StringToken] =[SimpleToken] const[KeywordToken] Map[StringToken]<[BeginToken]String[StringToken],[SimpleToken] List[StringToken]<[BeginToken]int[StringToken]>>[SimpleToken]{[BeginToken]}[SimpleToken];[SimpleToken]
+
+
+final[KeywordToken] Map[StringToken]<[BeginToken]String[StringToken],[SimpleToken] Undefined[StringToken]>[SimpleToken] foo2[StringToken] =[SimpleToken] const[KeywordToken] <[BeginToken]String[StringToken],[SimpleToken] List[StringToken]<[BeginToken]int[StringToken]>>[SimpleToken]{[BeginToken]}[SimpleToken];[SimpleToken]
+
+
+final[KeywordToken] Map[StringToken]<[BeginToken]String[StringToken],[SimpleToken] Undefined[StringToken]>[SimpleToken] foo3[StringToken] =[SimpleToken] const[KeywordToken] Map[StringToken]{[BeginToken]}[SimpleToken];[SimpleToken]
+
+
+final[KeywordToken] Map[StringToken]<[BeginToken]String[StringToken],[SimpleToken] Undefined[StringToken]>[SimpleToken] foo4[StringToken] =[SimpleToken] const[KeywordToken] Map[StringToken]<[BeginToken]String[StringToken],[SimpleToken] List[StringToken]<[BeginToken]int[StringToken]>>[SimpleToken]([BeginToken])[SimpleToken];[SimpleToken]
+
+
+final[KeywordToken] Map[StringToken]<[BeginToken]String[StringToken],[SimpleToken] Undefined[StringToken]>[SimpleToken] foo5[StringToken] =[SimpleToken] const[KeywordToken] Map[StringToken]([BeginToken])[SimpleToken];[SimpleToken]
+
+
+final[KeywordToken] Map[StringToken]<[BeginToken]String[StringToken],[SimpleToken] Undefined[StringToken]>[SimpleToken] foo6[StringToken] =[SimpleToken] const[KeywordToken] Map[StringToken]<[BeginToken]String[StringToken],[SimpleToken] List[StringToken]<[BeginToken]int[StringToken]>>[SimpleToken]{[BeginToken]"a"[StringToken]:[SimpleToken] null[KeywordToken]}[SimpleToken];[SimpleToken]
+
+
+final[KeywordToken] Map[StringToken]<[BeginToken]String[StringToken],[SimpleToken] Undefined[StringToken]>[SimpleToken] foo7[StringToken] =[SimpleToken] const[KeywordToken] Map[StringToken]{[BeginToken]"a"[StringToken]:[SimpleToken] null[KeywordToken]}[SimpleToken];[SimpleToken]
+
+
+final[KeywordToken] Map[StringToken]<[BeginToken]String[StringToken],[SimpleToken] Undefined[StringToken]>[SimpleToken] foo8[StringToken] =[SimpleToken] const[KeywordToken] <[BeginToken]String[StringToken],[SimpleToken] List[StringToken]<[BeginToken]int[StringToken]>>[SimpleToken]{[BeginToken]"a"[StringToken]:[SimpleToken] null[KeywordToken]}[SimpleToken];[SimpleToken]
+
+
+final[KeywordToken] Map[StringToken]<[BeginToken]String[StringToken],[SimpleToken] Undefined[StringToken]>[SimpleToken] foo9[StringToken] =[SimpleToken] const[KeywordToken] {[BeginToken]"a"[StringToken]:[SimpleToken] null[KeywordToken]}[SimpleToken];[SimpleToken]
+}[SimpleToken][SimpleToken]
diff --git a/pkg/front_end/parser_testcases/error_recovery/issue_45251_list.dart b/pkg/front_end/parser_testcases/error_recovery/issue_45251_list.dart
new file mode 100644
index 0000000..b74b6d0
--- /dev/null
+++ b/pkg/front_end/parser_testcases/error_recovery/issue_45251_list.dart
@@ -0,0 +1,28 @@
+class F {
+  /* notice the bracket at the end instead of parenthesis! */
+  final List<Undefined> foo1 = List<List<int>>[];
+
+  // variation #1: OK.
+  final List<Undefined> foo2 = <List<int>>[];
+
+  // variation #2: Bad.
+  final List<Undefined> foo3 = List[];
+
+  // variation #3: OK.
+  final List<Undefined> foo4 = List<List<int>>();
+
+  // variation #4: OK.
+  final List<Undefined> foo5 = List();
+
+  // variation #5: Bad.
+  final List<Undefined> foo6 = List<List<int>>[null];
+
+  // variation #6: This is actually just an indexed expression.
+  final List<Undefined> foo7 = List[null];
+
+  // variation #7: OK.
+  final List<Undefined> foo8 = <List<int>>[null];
+
+  // variation #8: OK.
+  final List<Undefined> foo9 = [null];
+}
\ No newline at end of file
diff --git a/pkg/front_end/parser_testcases/error_recovery/issue_45251_list.dart.expect b/pkg/front_end/parser_testcases/error_recovery/issue_45251_list.dart.expect
new file mode 100644
index 0000000..b044323
--- /dev/null
+++ b/pkg/front_end/parser_testcases/error_recovery/issue_45251_list.dart.expect
@@ -0,0 +1,249 @@
+Problems reported:
+
+parser/error_recovery/issue_45251_list:3:32: Unexpected token 'List'.
+  final List<Undefined> foo1 = List<List<int>>[];
+                               ^^^^
+
+parser/error_recovery/issue_45251_list:9:32: Unexpected token 'List'.
+  final List<Undefined> foo3 = List[];
+                               ^^^^
+
+parser/error_recovery/issue_45251_list:18:32: Unexpected token 'List'.
+  final List<Undefined> foo6 = List<List<int>>[null];
+                               ^^^^
+
+beginCompilationUnit(class)
+  beginMetadataStar(class)
+  endMetadataStar(0)
+  beginClassOrNamedMixinApplicationPrelude(class)
+    handleIdentifier(F, classOrMixinDeclaration)
+    handleNoTypeVariables({)
+    beginClassDeclaration(class, null, F)
+      handleNoType(F)
+      handleClassExtends(null, 1)
+      handleClassNoWithClause()
+      handleClassOrMixinImplements(null, 0)
+      handleClassHeader(class, class, null)
+      beginClassOrMixinBody(DeclarationKind.Class, {)
+        beginMetadataStar(final)
+        endMetadataStar(0)
+        beginMember()
+          beginFields({)
+            handleIdentifier(List, typeReference)
+            beginTypeArguments(<)
+              handleIdentifier(Undefined, typeReference)
+              handleNoTypeArguments(>)
+              handleType(Undefined, null)
+            endTypeArguments(1, <, >)
+            handleType(List, null)
+            handleIdentifier(foo1, fieldDeclaration)
+            beginFieldInitializer(=)
+              handleRecoverableError(Message[UnexpectedToken, Unexpected token 'List'., null, {lexeme: List}], List, List)
+              beginTypeArguments(<)
+                handleIdentifier(List, typeReference)
+                beginTypeArguments(<)
+                  handleIdentifier(int, typeReference)
+                  handleNoTypeArguments(>)
+                  handleType(int, null)
+                endTypeArguments(1, <, >)
+                handleType(List, null)
+              endTypeArguments(1, <, >)
+              handleLiteralList(0, [, null, ])
+            endFieldInitializer(=, ;)
+          endClassFields(null, null, null, null, null, final, 1, final, ;)
+        endMember()
+        beginMetadataStar(final)
+        endMetadataStar(0)
+        beginMember()
+          beginFields(;)
+            handleIdentifier(List, typeReference)
+            beginTypeArguments(<)
+              handleIdentifier(Undefined, typeReference)
+              handleNoTypeArguments(>)
+              handleType(Undefined, null)
+            endTypeArguments(1, <, >)
+            handleType(List, null)
+            handleIdentifier(foo2, fieldDeclaration)
+            beginFieldInitializer(=)
+              beginTypeArguments(<)
+                handleIdentifier(List, typeReference)
+                beginTypeArguments(<)
+                  handleIdentifier(int, typeReference)
+                  handleNoTypeArguments(>)
+                  handleType(int, null)
+                endTypeArguments(1, <, >)
+                handleType(List, null)
+              endTypeArguments(1, <, >)
+              handleLiteralList(0, [, null, ])
+            endFieldInitializer(=, ;)
+          endClassFields(null, null, null, null, null, final, 1, final, ;)
+        endMember()
+        beginMetadataStar(final)
+        endMetadataStar(0)
+        beginMember()
+          beginFields(;)
+            handleIdentifier(List, typeReference)
+            beginTypeArguments(<)
+              handleIdentifier(Undefined, typeReference)
+              handleNoTypeArguments(>)
+              handleType(Undefined, null)
+            endTypeArguments(1, <, >)
+            handleType(List, null)
+            handleIdentifier(foo3, fieldDeclaration)
+            beginFieldInitializer(=)
+              handleRecoverableError(Message[UnexpectedToken, Unexpected token 'List'., null, {lexeme: List}], List, List)
+              handleNoTypeArguments([])
+              handleLiteralList(0, [, null, ])
+            endFieldInitializer(=, ;)
+          endClassFields(null, null, null, null, null, final, 1, final, ;)
+        endMember()
+        beginMetadataStar(final)
+        endMetadataStar(0)
+        beginMember()
+          beginFields(;)
+            handleIdentifier(List, typeReference)
+            beginTypeArguments(<)
+              handleIdentifier(Undefined, typeReference)
+              handleNoTypeArguments(>)
+              handleType(Undefined, null)
+            endTypeArguments(1, <, >)
+            handleType(List, null)
+            handleIdentifier(foo4, fieldDeclaration)
+            beginFieldInitializer(=)
+              handleIdentifier(List, expression)
+              beginTypeArguments(<)
+                handleIdentifier(List, typeReference)
+                beginTypeArguments(<)
+                  handleIdentifier(int, typeReference)
+                  handleNoTypeArguments(>)
+                  handleType(int, null)
+                endTypeArguments(1, <, >)
+                handleType(List, null)
+              endTypeArguments(1, <, >)
+              beginArguments(()
+              endArguments(0, (, ))
+              handleSend(List, ;)
+            endFieldInitializer(=, ;)
+          endClassFields(null, null, null, null, null, final, 1, final, ;)
+        endMember()
+        beginMetadataStar(final)
+        endMetadataStar(0)
+        beginMember()
+          beginFields(;)
+            handleIdentifier(List, typeReference)
+            beginTypeArguments(<)
+              handleIdentifier(Undefined, typeReference)
+              handleNoTypeArguments(>)
+              handleType(Undefined, null)
+            endTypeArguments(1, <, >)
+            handleType(List, null)
+            handleIdentifier(foo5, fieldDeclaration)
+            beginFieldInitializer(=)
+              handleIdentifier(List, expression)
+              handleNoTypeArguments(()
+              beginArguments(()
+              endArguments(0, (, ))
+              handleSend(List, ;)
+            endFieldInitializer(=, ;)
+          endClassFields(null, null, null, null, null, final, 1, final, ;)
+        endMember()
+        beginMetadataStar(final)
+        endMetadataStar(0)
+        beginMember()
+          beginFields(;)
+            handleIdentifier(List, typeReference)
+            beginTypeArguments(<)
+              handleIdentifier(Undefined, typeReference)
+              handleNoTypeArguments(>)
+              handleType(Undefined, null)
+            endTypeArguments(1, <, >)
+            handleType(List, null)
+            handleIdentifier(foo6, fieldDeclaration)
+            beginFieldInitializer(=)
+              handleRecoverableError(Message[UnexpectedToken, Unexpected token 'List'., null, {lexeme: List}], List, List)
+              beginTypeArguments(<)
+                handleIdentifier(List, typeReference)
+                beginTypeArguments(<)
+                  handleIdentifier(int, typeReference)
+                  handleNoTypeArguments(>)
+                  handleType(int, null)
+                endTypeArguments(1, <, >)
+                handleType(List, null)
+              endTypeArguments(1, <, >)
+              handleLiteralNull(null)
+              handleLiteralList(1, [, null, ])
+            endFieldInitializer(=, ;)
+          endClassFields(null, null, null, null, null, final, 1, final, ;)
+        endMember()
+        beginMetadataStar(final)
+        endMetadataStar(0)
+        beginMember()
+          beginFields(;)
+            handleIdentifier(List, typeReference)
+            beginTypeArguments(<)
+              handleIdentifier(Undefined, typeReference)
+              handleNoTypeArguments(>)
+              handleType(Undefined, null)
+            endTypeArguments(1, <, >)
+            handleType(List, null)
+            handleIdentifier(foo7, fieldDeclaration)
+            beginFieldInitializer(=)
+              handleIdentifier(List, expression)
+              handleNoTypeArguments([)
+              handleNoArguments([)
+              handleSend(List, [)
+              handleLiteralNull(null)
+              handleIndexedExpression(null, [, ])
+            endFieldInitializer(=, ;)
+          endClassFields(null, null, null, null, null, final, 1, final, ;)
+        endMember()
+        beginMetadataStar(final)
+        endMetadataStar(0)
+        beginMember()
+          beginFields(;)
+            handleIdentifier(List, typeReference)
+            beginTypeArguments(<)
+              handleIdentifier(Undefined, typeReference)
+              handleNoTypeArguments(>)
+              handleType(Undefined, null)
+            endTypeArguments(1, <, >)
+            handleType(List, null)
+            handleIdentifier(foo8, fieldDeclaration)
+            beginFieldInitializer(=)
+              beginTypeArguments(<)
+                handleIdentifier(List, typeReference)
+                beginTypeArguments(<)
+                  handleIdentifier(int, typeReference)
+                  handleNoTypeArguments(>)
+                  handleType(int, null)
+                endTypeArguments(1, <, >)
+                handleType(List, null)
+              endTypeArguments(1, <, >)
+              handleLiteralNull(null)
+              handleLiteralList(1, [, null, ])
+            endFieldInitializer(=, ;)
+          endClassFields(null, null, null, null, null, final, 1, final, ;)
+        endMember()
+        beginMetadataStar(final)
+        endMetadataStar(0)
+        beginMember()
+          beginFields(;)
+            handleIdentifier(List, typeReference)
+            beginTypeArguments(<)
+              handleIdentifier(Undefined, typeReference)
+              handleNoTypeArguments(>)
+              handleType(Undefined, null)
+            endTypeArguments(1, <, >)
+            handleType(List, null)
+            handleIdentifier(foo9, fieldDeclaration)
+            beginFieldInitializer(=)
+              handleNoTypeArguments([)
+              handleLiteralNull(null)
+              handleLiteralList(1, [, null, ])
+            endFieldInitializer(=, ;)
+          endClassFields(null, null, null, null, null, final, 1, final, ;)
+        endMember()
+      endClassOrMixinBody(DeclarationKind.Class, 9, {, })
+    endClassDeclaration(class, })
+  endTopLevelDeclaration()
+endCompilationUnit(1, )
diff --git a/pkg/front_end/parser_testcases/error_recovery/issue_45251_list.dart.intertwined.expect b/pkg/front_end/parser_testcases/error_recovery/issue_45251_list.dart.intertwined.expect
new file mode 100644
index 0000000..2194596
--- /dev/null
+++ b/pkg/front_end/parser_testcases/error_recovery/issue_45251_list.dart.intertwined.expect
@@ -0,0 +1,412 @@
+parseUnit(class)
+  skipErrorTokens(class)
+  listener: beginCompilationUnit(class)
+  syntheticPreviousToken(class)
+  parseTopLevelDeclarationImpl(, Instance of 'DirectiveContext')
+    parseMetadataStar()
+      listener: beginMetadataStar(class)
+      listener: endMetadataStar(0)
+    parseTopLevelKeywordDeclaration(, class, Instance of 'DirectiveContext')
+      parseClassDeclarationModifiers(, class)
+      parseClassOrNamedMixinApplication(null, class)
+        listener: beginClassOrNamedMixinApplicationPrelude(class)
+        ensureIdentifier(class, classOrMixinDeclaration)
+          listener: handleIdentifier(F, classOrMixinDeclaration)
+        listener: handleNoTypeVariables({)
+        listener: beginClassDeclaration(class, null, F)
+        parseClass(F, class, class, F)
+          parseClassHeaderOpt(F, class, class)
+            parseClassExtendsOpt(F)
+              listener: handleNoType(F)
+              listener: handleClassExtends(null, 1)
+            parseWithClauseOpt(F)
+              listener: handleClassNoWithClause()
+            parseClassOrMixinImplementsOpt(F)
+              listener: handleClassOrMixinImplements(null, 0)
+            listener: handleClassHeader(class, class, null)
+          parseClassOrMixinOrExtensionBody(F, DeclarationKind.Class, F)
+            listener: beginClassOrMixinBody(DeclarationKind.Class, {)
+            notEofOrValue(}, final)
+            parseClassOrMixinOrExtensionMemberImpl({, DeclarationKind.Class, F)
+              parseMetadataStar({)
+                listener: beginMetadataStar(final)
+                listener: endMetadataStar(0)
+              listener: beginMember()
+              parseFields({, null, null, null, null, null, final, final, Instance of 'SimpleTypeWith1Argument', foo1, DeclarationKind.Class, F, false)
+                listener: beginFields({)
+                listener: handleIdentifier(List, typeReference)
+                listener: beginTypeArguments(<)
+                listener: handleIdentifier(Undefined, typeReference)
+                listener: handleNoTypeArguments(>)
+                listener: handleType(Undefined, null)
+                listener: endTypeArguments(1, <, >)
+                listener: handleType(List, null)
+                ensureIdentifierPotentiallyRecovered(>, fieldDeclaration, false)
+                  listener: handleIdentifier(foo1, fieldDeclaration)
+                parseFieldInitializerOpt(foo1, foo1, null, null, null, final, DeclarationKind.Class, F)
+                  listener: beginFieldInitializer(=)
+                  parseExpression(=)
+                    parsePrecedenceExpression(=, 1, true)
+                      parseUnaryExpression(=, true)
+                        parsePrimary(=, expression)
+                          parseSendOrFunctionLiteral(=, expression)
+                            parseSend(=, expression)
+                              reportRecoverableErrorWithToken(List, Instance of 'Template<(Token) => Message>')
+                                listener: handleRecoverableError(Message[UnexpectedToken, Unexpected token 'List'., null, {lexeme: List}], List, List)
+                              parsePrimary(List, expression)
+                                parseLiteralListSetMapOrFunction(List, null)
+                                  listener: beginTypeArguments(<)
+                                  listener: handleIdentifier(List, typeReference)
+                                  listener: beginTypeArguments(<)
+                                  listener: handleIdentifier(int, typeReference)
+                                  listener: handleNoTypeArguments(>)
+                                  listener: handleType(int, null)
+                                  listener: endTypeArguments(1, <, >)
+                                  listener: handleType(List, null)
+                                  listener: endTypeArguments(1, <, >)
+                                  parseLiteralListSuffix(>, null)
+                                    rewriteSquareBrackets(>)
+                                      link([, ])
+                                      rewriter()
+                                    listener: handleLiteralList(0, [, null, ])
+                  listener: endFieldInitializer(=, ;)
+                listener: endClassFields(null, null, null, null, null, final, 1, final, ;)
+              listener: endMember()
+            notEofOrValue(}, final)
+            parseClassOrMixinOrExtensionMemberImpl(;, DeclarationKind.Class, F)
+              parseMetadataStar(;)
+                listener: beginMetadataStar(final)
+                listener: endMetadataStar(0)
+              listener: beginMember()
+              parseFields(;, null, null, null, null, null, final, final, Instance of 'SimpleTypeWith1Argument', foo2, DeclarationKind.Class, F, false)
+                listener: beginFields(;)
+                listener: handleIdentifier(List, typeReference)
+                listener: beginTypeArguments(<)
+                listener: handleIdentifier(Undefined, typeReference)
+                listener: handleNoTypeArguments(>)
+                listener: handleType(Undefined, null)
+                listener: endTypeArguments(1, <, >)
+                listener: handleType(List, null)
+                ensureIdentifierPotentiallyRecovered(>, fieldDeclaration, false)
+                  listener: handleIdentifier(foo2, fieldDeclaration)
+                parseFieldInitializerOpt(foo2, foo2, null, null, null, final, DeclarationKind.Class, F)
+                  listener: beginFieldInitializer(=)
+                  parseExpression(=)
+                    parsePrecedenceExpression(=, 1, true)
+                      parseUnaryExpression(=, true)
+                        parsePrimary(=, expression)
+                          parseLiteralListSetMapOrFunction(=, null)
+                            listener: beginTypeArguments(<)
+                            listener: handleIdentifier(List, typeReference)
+                            listener: beginTypeArguments(<)
+                            listener: handleIdentifier(int, typeReference)
+                            listener: handleNoTypeArguments(>)
+                            listener: handleType(int, null)
+                            listener: endTypeArguments(1, <, >)
+                            listener: handleType(List, null)
+                            listener: endTypeArguments(1, <, >)
+                            parseLiteralListSuffix(>, null)
+                              rewriteSquareBrackets(>)
+                                link([, ])
+                                rewriter()
+                              listener: handleLiteralList(0, [, null, ])
+                  listener: endFieldInitializer(=, ;)
+                listener: endClassFields(null, null, null, null, null, final, 1, final, ;)
+              listener: endMember()
+            notEofOrValue(}, final)
+            parseClassOrMixinOrExtensionMemberImpl(;, DeclarationKind.Class, F)
+              parseMetadataStar(;)
+                listener: beginMetadataStar(final)
+                listener: endMetadataStar(0)
+              listener: beginMember()
+              parseFields(;, null, null, null, null, null, final, final, Instance of 'SimpleTypeWith1Argument', foo3, DeclarationKind.Class, F, false)
+                listener: beginFields(;)
+                listener: handleIdentifier(List, typeReference)
+                listener: beginTypeArguments(<)
+                listener: handleIdentifier(Undefined, typeReference)
+                listener: handleNoTypeArguments(>)
+                listener: handleType(Undefined, null)
+                listener: endTypeArguments(1, <, >)
+                listener: handleType(List, null)
+                ensureIdentifierPotentiallyRecovered(>, fieldDeclaration, false)
+                  listener: handleIdentifier(foo3, fieldDeclaration)
+                parseFieldInitializerOpt(foo3, foo3, null, null, null, final, DeclarationKind.Class, F)
+                  listener: beginFieldInitializer(=)
+                  parseExpression(=)
+                    parsePrecedenceExpression(=, 1, true)
+                      parseUnaryExpression(=, true)
+                        parsePrimary(=, expression)
+                          parseSendOrFunctionLiteral(=, expression)
+                            parseSend(=, expression)
+                              reportRecoverableErrorWithToken(List, Instance of 'Template<(Token) => Message>')
+                                listener: handleRecoverableError(Message[UnexpectedToken, Unexpected token 'List'., null, {lexeme: List}], List, List)
+                              parsePrimary(List, expression)
+                                listener: handleNoTypeArguments([])
+                                parseLiteralListSuffix(List, null)
+                                  rewriteSquareBrackets(List)
+                                    link([, ])
+                                    rewriter()
+                                  listener: handleLiteralList(0, [, null, ])
+                  listener: endFieldInitializer(=, ;)
+                listener: endClassFields(null, null, null, null, null, final, 1, final, ;)
+              listener: endMember()
+            notEofOrValue(}, final)
+            parseClassOrMixinOrExtensionMemberImpl(;, DeclarationKind.Class, F)
+              parseMetadataStar(;)
+                listener: beginMetadataStar(final)
+                listener: endMetadataStar(0)
+              listener: beginMember()
+              parseFields(;, null, null, null, null, null, final, final, Instance of 'SimpleTypeWith1Argument', foo4, DeclarationKind.Class, F, false)
+                listener: beginFields(;)
+                listener: handleIdentifier(List, typeReference)
+                listener: beginTypeArguments(<)
+                listener: handleIdentifier(Undefined, typeReference)
+                listener: handleNoTypeArguments(>)
+                listener: handleType(Undefined, null)
+                listener: endTypeArguments(1, <, >)
+                listener: handleType(List, null)
+                ensureIdentifierPotentiallyRecovered(>, fieldDeclaration, false)
+                  listener: handleIdentifier(foo4, fieldDeclaration)
+                parseFieldInitializerOpt(foo4, foo4, null, null, null, final, DeclarationKind.Class, F)
+                  listener: beginFieldInitializer(=)
+                  parseExpression(=)
+                    parsePrecedenceExpression(=, 1, true)
+                      parseUnaryExpression(=, true)
+                        parsePrimary(=, expression)
+                          parseSendOrFunctionLiteral(=, expression)
+                            looksLikeFunctionBody(;)
+                            parseSend(=, expression)
+                              ensureIdentifier(=, expression)
+                                listener: handleIdentifier(List, expression)
+                              listener: beginTypeArguments(<)
+                              listener: handleIdentifier(List, typeReference)
+                              listener: beginTypeArguments(<)
+                              listener: handleIdentifier(int, typeReference)
+                              listener: handleNoTypeArguments(>)
+                              listener: handleType(int, null)
+                              listener: endTypeArguments(1, <, >)
+                              listener: handleType(List, null)
+                              listener: endTypeArguments(1, <, >)
+                              parseArgumentsOpt(>)
+                                parseArguments(>)
+                                  parseArgumentsRest(()
+                                    listener: beginArguments(()
+                                    listener: endArguments(0, (, ))
+                              listener: handleSend(List, ;)
+                  listener: endFieldInitializer(=, ;)
+                listener: endClassFields(null, null, null, null, null, final, 1, final, ;)
+              listener: endMember()
+            notEofOrValue(}, final)
+            parseClassOrMixinOrExtensionMemberImpl(;, DeclarationKind.Class, F)
+              parseMetadataStar(;)
+                listener: beginMetadataStar(final)
+                listener: endMetadataStar(0)
+              listener: beginMember()
+              parseFields(;, null, null, null, null, null, final, final, Instance of 'SimpleTypeWith1Argument', foo5, DeclarationKind.Class, F, false)
+                listener: beginFields(;)
+                listener: handleIdentifier(List, typeReference)
+                listener: beginTypeArguments(<)
+                listener: handleIdentifier(Undefined, typeReference)
+                listener: handleNoTypeArguments(>)
+                listener: handleType(Undefined, null)
+                listener: endTypeArguments(1, <, >)
+                listener: handleType(List, null)
+                ensureIdentifierPotentiallyRecovered(>, fieldDeclaration, false)
+                  listener: handleIdentifier(foo5, fieldDeclaration)
+                parseFieldInitializerOpt(foo5, foo5, null, null, null, final, DeclarationKind.Class, F)
+                  listener: beginFieldInitializer(=)
+                  parseExpression(=)
+                    parsePrecedenceExpression(=, 1, true)
+                      parseUnaryExpression(=, true)
+                        parsePrimary(=, expression)
+                          parseSendOrFunctionLiteral(=, expression)
+                            looksLikeFunctionBody(;)
+                            parseSend(=, expression)
+                              ensureIdentifier(=, expression)
+                                listener: handleIdentifier(List, expression)
+                              listener: handleNoTypeArguments(()
+                              parseArgumentsOpt(List)
+                                parseArguments(List)
+                                  parseArgumentsRest(()
+                                    listener: beginArguments(()
+                                    listener: endArguments(0, (, ))
+                              listener: handleSend(List, ;)
+                  listener: endFieldInitializer(=, ;)
+                listener: endClassFields(null, null, null, null, null, final, 1, final, ;)
+              listener: endMember()
+            notEofOrValue(}, final)
+            parseClassOrMixinOrExtensionMemberImpl(;, DeclarationKind.Class, F)
+              parseMetadataStar(;)
+                listener: beginMetadataStar(final)
+                listener: endMetadataStar(0)
+              listener: beginMember()
+              parseFields(;, null, null, null, null, null, final, final, Instance of 'SimpleTypeWith1Argument', foo6, DeclarationKind.Class, F, false)
+                listener: beginFields(;)
+                listener: handleIdentifier(List, typeReference)
+                listener: beginTypeArguments(<)
+                listener: handleIdentifier(Undefined, typeReference)
+                listener: handleNoTypeArguments(>)
+                listener: handleType(Undefined, null)
+                listener: endTypeArguments(1, <, >)
+                listener: handleType(List, null)
+                ensureIdentifierPotentiallyRecovered(>, fieldDeclaration, false)
+                  listener: handleIdentifier(foo6, fieldDeclaration)
+                parseFieldInitializerOpt(foo6, foo6, null, null, null, final, DeclarationKind.Class, F)
+                  listener: beginFieldInitializer(=)
+                  parseExpression(=)
+                    parsePrecedenceExpression(=, 1, true)
+                      parseUnaryExpression(=, true)
+                        parsePrimary(=, expression)
+                          parseSendOrFunctionLiteral(=, expression)
+                            parseSend(=, expression)
+                              reportRecoverableErrorWithToken(List, Instance of 'Template<(Token) => Message>')
+                                listener: handleRecoverableError(Message[UnexpectedToken, Unexpected token 'List'., null, {lexeme: List}], List, List)
+                              parsePrimary(List, expression)
+                                parseLiteralListSetMapOrFunction(List, null)
+                                  listener: beginTypeArguments(<)
+                                  listener: handleIdentifier(List, typeReference)
+                                  listener: beginTypeArguments(<)
+                                  listener: handleIdentifier(int, typeReference)
+                                  listener: handleNoTypeArguments(>)
+                                  listener: handleType(int, null)
+                                  listener: endTypeArguments(1, <, >)
+                                  listener: handleType(List, null)
+                                  listener: endTypeArguments(1, <, >)
+                                  parseLiteralListSuffix(>, null)
+                                    parseExpression([)
+                                      parsePrecedenceExpression([, 1, true)
+                                        parseUnaryExpression([, true)
+                                          parsePrimary([, expression)
+                                            parseLiteralNull([)
+                                              listener: handleLiteralNull(null)
+                                    listener: handleLiteralList(1, [, null, ])
+                  listener: endFieldInitializer(=, ;)
+                listener: endClassFields(null, null, null, null, null, final, 1, final, ;)
+              listener: endMember()
+            notEofOrValue(}, final)
+            parseClassOrMixinOrExtensionMemberImpl(;, DeclarationKind.Class, F)
+              parseMetadataStar(;)
+                listener: beginMetadataStar(final)
+                listener: endMetadataStar(0)
+              listener: beginMember()
+              parseFields(;, null, null, null, null, null, final, final, Instance of 'SimpleTypeWith1Argument', foo7, DeclarationKind.Class, F, false)
+                listener: beginFields(;)
+                listener: handleIdentifier(List, typeReference)
+                listener: beginTypeArguments(<)
+                listener: handleIdentifier(Undefined, typeReference)
+                listener: handleNoTypeArguments(>)
+                listener: handleType(Undefined, null)
+                listener: endTypeArguments(1, <, >)
+                listener: handleType(List, null)
+                ensureIdentifierPotentiallyRecovered(>, fieldDeclaration, false)
+                  listener: handleIdentifier(foo7, fieldDeclaration)
+                parseFieldInitializerOpt(foo7, foo7, null, null, null, final, DeclarationKind.Class, F)
+                  listener: beginFieldInitializer(=)
+                  parseExpression(=)
+                    parsePrecedenceExpression(=, 1, true)
+                      parseUnaryExpression(=, true)
+                        parsePrimary(=, expression)
+                          parseSendOrFunctionLiteral(=, expression)
+                            parseSend(=, expression)
+                              ensureIdentifier(=, expression)
+                                listener: handleIdentifier(List, expression)
+                              listener: handleNoTypeArguments([)
+                              parseArgumentsOpt(List)
+                                listener: handleNoArguments([)
+                              listener: handleSend(List, [)
+                      parseArgumentOrIndexStar(List, Instance of 'NoTypeParamOrArg', false)
+                        parseExpression([)
+                          parsePrecedenceExpression([, 1, true)
+                            parseUnaryExpression([, true)
+                              parsePrimary([, expression)
+                                parseLiteralNull([)
+                                  listener: handleLiteralNull(null)
+                        listener: handleIndexedExpression(null, [, ])
+                  listener: endFieldInitializer(=, ;)
+                listener: endClassFields(null, null, null, null, null, final, 1, final, ;)
+              listener: endMember()
+            notEofOrValue(}, final)
+            parseClassOrMixinOrExtensionMemberImpl(;, DeclarationKind.Class, F)
+              parseMetadataStar(;)
+                listener: beginMetadataStar(final)
+                listener: endMetadataStar(0)
+              listener: beginMember()
+              parseFields(;, null, null, null, null, null, final, final, Instance of 'SimpleTypeWith1Argument', foo8, DeclarationKind.Class, F, false)
+                listener: beginFields(;)
+                listener: handleIdentifier(List, typeReference)
+                listener: beginTypeArguments(<)
+                listener: handleIdentifier(Undefined, typeReference)
+                listener: handleNoTypeArguments(>)
+                listener: handleType(Undefined, null)
+                listener: endTypeArguments(1, <, >)
+                listener: handleType(List, null)
+                ensureIdentifierPotentiallyRecovered(>, fieldDeclaration, false)
+                  listener: handleIdentifier(foo8, fieldDeclaration)
+                parseFieldInitializerOpt(foo8, foo8, null, null, null, final, DeclarationKind.Class, F)
+                  listener: beginFieldInitializer(=)
+                  parseExpression(=)
+                    parsePrecedenceExpression(=, 1, true)
+                      parseUnaryExpression(=, true)
+                        parsePrimary(=, expression)
+                          parseLiteralListSetMapOrFunction(=, null)
+                            listener: beginTypeArguments(<)
+                            listener: handleIdentifier(List, typeReference)
+                            listener: beginTypeArguments(<)
+                            listener: handleIdentifier(int, typeReference)
+                            listener: handleNoTypeArguments(>)
+                            listener: handleType(int, null)
+                            listener: endTypeArguments(1, <, >)
+                            listener: handleType(List, null)
+                            listener: endTypeArguments(1, <, >)
+                            parseLiteralListSuffix(>, null)
+                              parseExpression([)
+                                parsePrecedenceExpression([, 1, true)
+                                  parseUnaryExpression([, true)
+                                    parsePrimary([, expression)
+                                      parseLiteralNull([)
+                                        listener: handleLiteralNull(null)
+                              listener: handleLiteralList(1, [, null, ])
+                  listener: endFieldInitializer(=, ;)
+                listener: endClassFields(null, null, null, null, null, final, 1, final, ;)
+              listener: endMember()
+            notEofOrValue(}, final)
+            parseClassOrMixinOrExtensionMemberImpl(;, DeclarationKind.Class, F)
+              parseMetadataStar(;)
+                listener: beginMetadataStar(final)
+                listener: endMetadataStar(0)
+              listener: beginMember()
+              parseFields(;, null, null, null, null, null, final, final, Instance of 'SimpleTypeWith1Argument', foo9, DeclarationKind.Class, F, false)
+                listener: beginFields(;)
+                listener: handleIdentifier(List, typeReference)
+                listener: beginTypeArguments(<)
+                listener: handleIdentifier(Undefined, typeReference)
+                listener: handleNoTypeArguments(>)
+                listener: handleType(Undefined, null)
+                listener: endTypeArguments(1, <, >)
+                listener: handleType(List, null)
+                ensureIdentifierPotentiallyRecovered(>, fieldDeclaration, false)
+                  listener: handleIdentifier(foo9, fieldDeclaration)
+                parseFieldInitializerOpt(foo9, foo9, null, null, null, final, DeclarationKind.Class, F)
+                  listener: beginFieldInitializer(=)
+                  parseExpression(=)
+                    parsePrecedenceExpression(=, 1, true)
+                      parseUnaryExpression(=, true)
+                        parsePrimary(=, expression)
+                          listener: handleNoTypeArguments([)
+                          parseLiteralListSuffix(=, null)
+                            parseExpression([)
+                              parsePrecedenceExpression([, 1, true)
+                                parseUnaryExpression([, true)
+                                  parsePrimary([, expression)
+                                    parseLiteralNull([)
+                                      listener: handleLiteralNull(null)
+                            listener: handleLiteralList(1, [, null, ])
+                  listener: endFieldInitializer(=, ;)
+                listener: endClassFields(null, null, null, null, null, final, 1, final, ;)
+              listener: endMember()
+            notEofOrValue(}, })
+            listener: endClassOrMixinBody(DeclarationKind.Class, 9, {, })
+          listener: endClassDeclaration(class, })
+  listener: endTopLevelDeclaration()
+  reportAllErrorTokens(class)
+  listener: endCompilationUnit(1, )
diff --git a/pkg/front_end/parser_testcases/error_recovery/issue_45251_list.dart.parser.expect b/pkg/front_end/parser_testcases/error_recovery/issue_45251_list.dart.parser.expect
new file mode 100644
index 0000000..71b1cfe
--- /dev/null
+++ b/pkg/front_end/parser_testcases/error_recovery/issue_45251_list.dart.parser.expect
@@ -0,0 +1,59 @@
+NOTICE: Stream was rewritten by parser!
+
+class F {
+
+final List<Undefined> foo1 = List<List<int>>[];
+
+
+final List<Undefined> foo2 = <List<int>>[];
+
+
+final List<Undefined> foo3 = List[];
+
+
+final List<Undefined> foo4 = List<List<int>>();
+
+
+final List<Undefined> foo5 = List();
+
+
+final List<Undefined> foo6 = List<List<int>>[null];
+
+
+final List<Undefined> foo7 = List[null];
+
+
+final List<Undefined> foo8 = <List<int>>[null];
+
+
+final List<Undefined> foo9 = [null];
+}
+
+class[KeywordToken] F[StringToken] {[BeginToken]
+
+final[KeywordToken] List[StringToken]<[BeginToken]Undefined[StringToken]>[SimpleToken] foo1[StringToken] =[SimpleToken] List[StringToken]<[BeginToken]List[StringToken]<[BeginToken]int[StringToken]>[SimpleToken]>[SimpleToken][[BeginToken]][SimpleToken];[SimpleToken]
+
+
+final[KeywordToken] List[StringToken]<[BeginToken]Undefined[StringToken]>[SimpleToken] foo2[StringToken] =[SimpleToken] <[BeginToken]List[StringToken]<[BeginToken]int[StringToken]>[SimpleToken]>[SimpleToken][[BeginToken]][SimpleToken];[SimpleToken]
+
+
+final[KeywordToken] List[StringToken]<[BeginToken]Undefined[StringToken]>[SimpleToken] foo3[StringToken] =[SimpleToken] List[StringToken][[BeginToken]][SimpleToken];[SimpleToken]
+
+
+final[KeywordToken] List[StringToken]<[BeginToken]Undefined[StringToken]>[SimpleToken] foo4[StringToken] =[SimpleToken] List[StringToken]<[BeginToken]List[StringToken]<[BeginToken]int[StringToken]>[SimpleToken]>[SimpleToken]([BeginToken])[SimpleToken];[SimpleToken]
+
+
+final[KeywordToken] List[StringToken]<[BeginToken]Undefined[StringToken]>[SimpleToken] foo5[StringToken] =[SimpleToken] List[StringToken]([BeginToken])[SimpleToken];[SimpleToken]
+
+
+final[KeywordToken] List[StringToken]<[BeginToken]Undefined[StringToken]>[SimpleToken] foo6[StringToken] =[SimpleToken] List[StringToken]<[BeginToken]List[StringToken]<[BeginToken]int[StringToken]>[SimpleToken]>[SimpleToken][[BeginToken]null[KeywordToken]][SimpleToken];[SimpleToken]
+
+
+final[KeywordToken] List[StringToken]<[BeginToken]Undefined[StringToken]>[SimpleToken] foo7[StringToken] =[SimpleToken] List[StringToken][[BeginToken]null[KeywordToken]][SimpleToken];[SimpleToken]
+
+
+final[KeywordToken] List[StringToken]<[BeginToken]Undefined[StringToken]>[SimpleToken] foo8[StringToken] =[SimpleToken] <[BeginToken]List[StringToken]<[BeginToken]int[StringToken]>[SimpleToken]>[SimpleToken][[BeginToken]null[KeywordToken]][SimpleToken];[SimpleToken]
+
+
+final[KeywordToken] List[StringToken]<[BeginToken]Undefined[StringToken]>[SimpleToken] foo9[StringToken] =[SimpleToken] [[BeginToken]null[KeywordToken]][SimpleToken];[SimpleToken]
+}[SimpleToken][SimpleToken]
diff --git a/pkg/front_end/parser_testcases/error_recovery/issue_45251_list.dart.scanner.expect b/pkg/front_end/parser_testcases/error_recovery/issue_45251_list.dart.scanner.expect
new file mode 100644
index 0000000..895b318
--- /dev/null
+++ b/pkg/front_end/parser_testcases/error_recovery/issue_45251_list.dart.scanner.expect
@@ -0,0 +1,57 @@
+class F {
+
+final List<Undefined> foo1 = List<List<int>>[];
+
+
+final List<Undefined> foo2 = <List<int>>[];
+
+
+final List<Undefined> foo3 = List[];
+
+
+final List<Undefined> foo4 = List<List<int>>();
+
+
+final List<Undefined> foo5 = List();
+
+
+final List<Undefined> foo6 = List<List<int>>[null];
+
+
+final List<Undefined> foo7 = List[null];
+
+
+final List<Undefined> foo8 = <List<int>>[null];
+
+
+final List<Undefined> foo9 = [null];
+}
+
+class[KeywordToken] F[StringToken] {[BeginToken]
+
+final[KeywordToken] List[StringToken]<[BeginToken]Undefined[StringToken]>[SimpleToken] foo1[StringToken] =[SimpleToken] List[StringToken]<[BeginToken]List[StringToken]<[BeginToken]int[StringToken]>>[SimpleToken][][SimpleToken];[SimpleToken]
+
+
+final[KeywordToken] List[StringToken]<[BeginToken]Undefined[StringToken]>[SimpleToken] foo2[StringToken] =[SimpleToken] <[BeginToken]List[StringToken]<[BeginToken]int[StringToken]>>[SimpleToken][][SimpleToken];[SimpleToken]
+
+
+final[KeywordToken] List[StringToken]<[BeginToken]Undefined[StringToken]>[SimpleToken] foo3[StringToken] =[SimpleToken] List[StringToken][][SimpleToken];[SimpleToken]
+
+
+final[KeywordToken] List[StringToken]<[BeginToken]Undefined[StringToken]>[SimpleToken] foo4[StringToken] =[SimpleToken] List[StringToken]<[BeginToken]List[StringToken]<[BeginToken]int[StringToken]>>[SimpleToken]([BeginToken])[SimpleToken];[SimpleToken]
+
+
+final[KeywordToken] List[StringToken]<[BeginToken]Undefined[StringToken]>[SimpleToken] foo5[StringToken] =[SimpleToken] List[StringToken]([BeginToken])[SimpleToken];[SimpleToken]
+
+
+final[KeywordToken] List[StringToken]<[BeginToken]Undefined[StringToken]>[SimpleToken] foo6[StringToken] =[SimpleToken] List[StringToken]<[BeginToken]List[StringToken]<[BeginToken]int[StringToken]>>[SimpleToken][[BeginToken]null[KeywordToken]][SimpleToken];[SimpleToken]
+
+
+final[KeywordToken] List[StringToken]<[BeginToken]Undefined[StringToken]>[SimpleToken] foo7[StringToken] =[SimpleToken] List[StringToken][[BeginToken]null[KeywordToken]][SimpleToken];[SimpleToken]
+
+
+final[KeywordToken] List[StringToken]<[BeginToken]Undefined[StringToken]>[SimpleToken] foo8[StringToken] =[SimpleToken] <[BeginToken]List[StringToken]<[BeginToken]int[StringToken]>>[SimpleToken][[BeginToken]null[KeywordToken]][SimpleToken];[SimpleToken]
+
+
+final[KeywordToken] List[StringToken]<[BeginToken]Undefined[StringToken]>[SimpleToken] foo9[StringToken] =[SimpleToken] [[BeginToken]null[KeywordToken]][SimpleToken];[SimpleToken]
+}[SimpleToken][SimpleToken]
diff --git a/pkg/front_end/parser_testcases/error_recovery/issue_45251_list_const.dart b/pkg/front_end/parser_testcases/error_recovery/issue_45251_list_const.dart
new file mode 100644
index 0000000..43d659c
--- /dev/null
+++ b/pkg/front_end/parser_testcases/error_recovery/issue_45251_list_const.dart
@@ -0,0 +1,29 @@
+class F {
+  /* notice the bracket at the end instead of parenthesis! */
+  final List<Undefined> foo1 = const List<List<int>>[];
+
+  // variation #1: OK.
+  final List<Undefined> foo2 = const <List<int>>[];
+
+  // variation #2: Bad.
+  final List<Undefined> foo3 = const List[];
+
+  // variation #3: OK.
+  final List<Undefined> foo4 = const List<List<int>>();
+
+  // variation #4: OK.
+  final List<Undefined> foo5 = const List();
+
+  // variation #5: Bad.
+  final List<Undefined> foo6 = const List<List<int>>[null];
+
+  // variation #6: const makes it bad. Without const it would be an indexed
+  // expression; We should probably recover as `const [null]`.
+  final List<Undefined> foo7 = const List[null];
+
+  // variation #7: OK.
+  final List<Undefined> foo8 = const <List<int>>[null];
+
+  // variation #8: OK.
+  final List<Undefined> foo9 = const [null];
+}
\ No newline at end of file
diff --git a/pkg/front_end/parser_testcases/error_recovery/issue_45251_list_const.dart.expect b/pkg/front_end/parser_testcases/error_recovery/issue_45251_list_const.dart.expect
new file mode 100644
index 0000000..9c4318d
--- /dev/null
+++ b/pkg/front_end/parser_testcases/error_recovery/issue_45251_list_const.dart.expect
@@ -0,0 +1,273 @@
+Problems reported:
+
+parser/error_recovery/issue_45251_list_const:3:38: Unexpected token 'List'.
+  final List<Undefined> foo1 = const List<List<int>>[];
+                                     ^^^^
+
+parser/error_recovery/issue_45251_list_const:9:38: Unexpected token 'List'.
+  final List<Undefined> foo3 = const List[];
+                                     ^^^^
+
+parser/error_recovery/issue_45251_list_const:18:38: Unexpected token 'List'.
+  final List<Undefined> foo6 = const List<List<int>>[null];
+                                     ^^^^
+
+parser/error_recovery/issue_45251_list_const:22:38: Unexpected token 'List'.
+  final List<Undefined> foo7 = const List[null];
+                                     ^^^^
+
+beginCompilationUnit(class)
+  beginMetadataStar(class)
+  endMetadataStar(0)
+  beginClassOrNamedMixinApplicationPrelude(class)
+    handleIdentifier(F, classOrMixinDeclaration)
+    handleNoTypeVariables({)
+    beginClassDeclaration(class, null, F)
+      handleNoType(F)
+      handleClassExtends(null, 1)
+      handleClassNoWithClause()
+      handleClassOrMixinImplements(null, 0)
+      handleClassHeader(class, class, null)
+      beginClassOrMixinBody(DeclarationKind.Class, {)
+        beginMetadataStar(final)
+        endMetadataStar(0)
+        beginMember()
+          beginFields({)
+            handleIdentifier(List, typeReference)
+            beginTypeArguments(<)
+              handleIdentifier(Undefined, typeReference)
+              handleNoTypeArguments(>)
+              handleType(Undefined, null)
+            endTypeArguments(1, <, >)
+            handleType(List, null)
+            handleIdentifier(foo1, fieldDeclaration)
+            beginFieldInitializer(=)
+              handleRecoverableError(Message[UnexpectedToken, Unexpected token 'List'., null, {lexeme: List}], List, List)
+              beginConstLiteral(<)
+                beginTypeArguments(<)
+                  handleIdentifier(List, typeReference)
+                  beginTypeArguments(<)
+                    handleIdentifier(int, typeReference)
+                    handleNoTypeArguments(>)
+                    handleType(int, null)
+                  endTypeArguments(1, <, >)
+                  handleType(List, null)
+                endTypeArguments(1, <, >)
+                handleLiteralList(0, [, const, ])
+              endConstLiteral(;)
+            endFieldInitializer(=, ;)
+          endClassFields(null, null, null, null, null, final, 1, final, ;)
+        endMember()
+        beginMetadataStar(final)
+        endMetadataStar(0)
+        beginMember()
+          beginFields(;)
+            handleIdentifier(List, typeReference)
+            beginTypeArguments(<)
+              handleIdentifier(Undefined, typeReference)
+              handleNoTypeArguments(>)
+              handleType(Undefined, null)
+            endTypeArguments(1, <, >)
+            handleType(List, null)
+            handleIdentifier(foo2, fieldDeclaration)
+            beginFieldInitializer(=)
+              beginConstLiteral(<)
+                beginTypeArguments(<)
+                  handleIdentifier(List, typeReference)
+                  beginTypeArguments(<)
+                    handleIdentifier(int, typeReference)
+                    handleNoTypeArguments(>)
+                    handleType(int, null)
+                  endTypeArguments(1, <, >)
+                  handleType(List, null)
+                endTypeArguments(1, <, >)
+                handleLiteralList(0, [, const, ])
+              endConstLiteral(;)
+            endFieldInitializer(=, ;)
+          endClassFields(null, null, null, null, null, final, 1, final, ;)
+        endMember()
+        beginMetadataStar(final)
+        endMetadataStar(0)
+        beginMember()
+          beginFields(;)
+            handleIdentifier(List, typeReference)
+            beginTypeArguments(<)
+              handleIdentifier(Undefined, typeReference)
+              handleNoTypeArguments(>)
+              handleType(Undefined, null)
+            endTypeArguments(1, <, >)
+            handleType(List, null)
+            handleIdentifier(foo3, fieldDeclaration)
+            beginFieldInitializer(=)
+              handleRecoverableError(Message[UnexpectedToken, Unexpected token 'List'., null, {lexeme: List}], List, List)
+              beginConstLiteral([])
+                handleNoTypeArguments([])
+                handleLiteralList(0, [, const, ])
+              endConstLiteral(;)
+            endFieldInitializer(=, ;)
+          endClassFields(null, null, null, null, null, final, 1, final, ;)
+        endMember()
+        beginMetadataStar(final)
+        endMetadataStar(0)
+        beginMember()
+          beginFields(;)
+            handleIdentifier(List, typeReference)
+            beginTypeArguments(<)
+              handleIdentifier(Undefined, typeReference)
+              handleNoTypeArguments(>)
+              handleType(Undefined, null)
+            endTypeArguments(1, <, >)
+            handleType(List, null)
+            handleIdentifier(foo4, fieldDeclaration)
+            beginFieldInitializer(=)
+              beginConstExpression(const)
+                handleIdentifier(List, constructorReference)
+                beginConstructorReference(List)
+                  beginTypeArguments(<)
+                    handleIdentifier(List, typeReference)
+                    beginTypeArguments(<)
+                      handleIdentifier(int, typeReference)
+                      handleNoTypeArguments(>)
+                      handleType(int, null)
+                    endTypeArguments(1, <, >)
+                    handleType(List, null)
+                  endTypeArguments(1, <, >)
+                  handleNoConstructorReferenceContinuationAfterTypeArguments(()
+                endConstructorReference(List, null, ()
+                beginArguments(()
+                endArguments(0, (, ))
+              endConstExpression(const)
+            endFieldInitializer(=, ;)
+          endClassFields(null, null, null, null, null, final, 1, final, ;)
+        endMember()
+        beginMetadataStar(final)
+        endMetadataStar(0)
+        beginMember()
+          beginFields(;)
+            handleIdentifier(List, typeReference)
+            beginTypeArguments(<)
+              handleIdentifier(Undefined, typeReference)
+              handleNoTypeArguments(>)
+              handleType(Undefined, null)
+            endTypeArguments(1, <, >)
+            handleType(List, null)
+            handleIdentifier(foo5, fieldDeclaration)
+            beginFieldInitializer(=)
+              beginConstExpression(const)
+                handleIdentifier(List, constructorReference)
+                beginConstructorReference(List)
+                  handleNoTypeArguments(()
+                  handleNoConstructorReferenceContinuationAfterTypeArguments(()
+                endConstructorReference(List, null, ()
+                beginArguments(()
+                endArguments(0, (, ))
+              endConstExpression(const)
+            endFieldInitializer(=, ;)
+          endClassFields(null, null, null, null, null, final, 1, final, ;)
+        endMember()
+        beginMetadataStar(final)
+        endMetadataStar(0)
+        beginMember()
+          beginFields(;)
+            handleIdentifier(List, typeReference)
+            beginTypeArguments(<)
+              handleIdentifier(Undefined, typeReference)
+              handleNoTypeArguments(>)
+              handleType(Undefined, null)
+            endTypeArguments(1, <, >)
+            handleType(List, null)
+            handleIdentifier(foo6, fieldDeclaration)
+            beginFieldInitializer(=)
+              handleRecoverableError(Message[UnexpectedToken, Unexpected token 'List'., null, {lexeme: List}], List, List)
+              beginConstLiteral(<)
+                beginTypeArguments(<)
+                  handleIdentifier(List, typeReference)
+                  beginTypeArguments(<)
+                    handleIdentifier(int, typeReference)
+                    handleNoTypeArguments(>)
+                    handleType(int, null)
+                  endTypeArguments(1, <, >)
+                  handleType(List, null)
+                endTypeArguments(1, <, >)
+                handleLiteralNull(null)
+                handleLiteralList(1, [, const, ])
+              endConstLiteral(;)
+            endFieldInitializer(=, ;)
+          endClassFields(null, null, null, null, null, final, 1, final, ;)
+        endMember()
+        beginMetadataStar(final)
+        endMetadataStar(0)
+        beginMember()
+          beginFields(;)
+            handleIdentifier(List, typeReference)
+            beginTypeArguments(<)
+              handleIdentifier(Undefined, typeReference)
+              handleNoTypeArguments(>)
+              handleType(Undefined, null)
+            endTypeArguments(1, <, >)
+            handleType(List, null)
+            handleIdentifier(foo7, fieldDeclaration)
+            beginFieldInitializer(=)
+              handleRecoverableError(Message[UnexpectedToken, Unexpected token 'List'., null, {lexeme: List}], List, List)
+              beginConstLiteral([)
+                handleNoTypeArguments([)
+                handleLiteralNull(null)
+                handleLiteralList(1, [, const, ])
+              endConstLiteral(;)
+            endFieldInitializer(=, ;)
+          endClassFields(null, null, null, null, null, final, 1, final, ;)
+        endMember()
+        beginMetadataStar(final)
+        endMetadataStar(0)
+        beginMember()
+          beginFields(;)
+            handleIdentifier(List, typeReference)
+            beginTypeArguments(<)
+              handleIdentifier(Undefined, typeReference)
+              handleNoTypeArguments(>)
+              handleType(Undefined, null)
+            endTypeArguments(1, <, >)
+            handleType(List, null)
+            handleIdentifier(foo8, fieldDeclaration)
+            beginFieldInitializer(=)
+              beginConstLiteral(<)
+                beginTypeArguments(<)
+                  handleIdentifier(List, typeReference)
+                  beginTypeArguments(<)
+                    handleIdentifier(int, typeReference)
+                    handleNoTypeArguments(>)
+                    handleType(int, null)
+                  endTypeArguments(1, <, >)
+                  handleType(List, null)
+                endTypeArguments(1, <, >)
+                handleLiteralNull(null)
+                handleLiteralList(1, [, const, ])
+              endConstLiteral(;)
+            endFieldInitializer(=, ;)
+          endClassFields(null, null, null, null, null, final, 1, final, ;)
+        endMember()
+        beginMetadataStar(final)
+        endMetadataStar(0)
+        beginMember()
+          beginFields(;)
+            handleIdentifier(List, typeReference)
+            beginTypeArguments(<)
+              handleIdentifier(Undefined, typeReference)
+              handleNoTypeArguments(>)
+              handleType(Undefined, null)
+            endTypeArguments(1, <, >)
+            handleType(List, null)
+            handleIdentifier(foo9, fieldDeclaration)
+            beginFieldInitializer(=)
+              beginConstLiteral([)
+                handleNoTypeArguments([)
+                handleLiteralNull(null)
+                handleLiteralList(1, [, const, ])
+              endConstLiteral(;)
+            endFieldInitializer(=, ;)
+          endClassFields(null, null, null, null, null, final, 1, final, ;)
+        endMember()
+      endClassOrMixinBody(DeclarationKind.Class, 9, {, })
+    endClassDeclaration(class, })
+  endTopLevelDeclaration()
+endCompilationUnit(1, )
diff --git a/pkg/front_end/parser_testcases/error_recovery/issue_45251_list_const.dart.intertwined.expect b/pkg/front_end/parser_testcases/error_recovery/issue_45251_list_const.dart.intertwined.expect
new file mode 100644
index 0000000..310f11d
--- /dev/null
+++ b/pkg/front_end/parser_testcases/error_recovery/issue_45251_list_const.dart.intertwined.expect
@@ -0,0 +1,425 @@
+parseUnit(class)
+  skipErrorTokens(class)
+  listener: beginCompilationUnit(class)
+  syntheticPreviousToken(class)
+  parseTopLevelDeclarationImpl(, Instance of 'DirectiveContext')
+    parseMetadataStar()
+      listener: beginMetadataStar(class)
+      listener: endMetadataStar(0)
+    parseTopLevelKeywordDeclaration(, class, Instance of 'DirectiveContext')
+      parseClassDeclarationModifiers(, class)
+      parseClassOrNamedMixinApplication(null, class)
+        listener: beginClassOrNamedMixinApplicationPrelude(class)
+        ensureIdentifier(class, classOrMixinDeclaration)
+          listener: handleIdentifier(F, classOrMixinDeclaration)
+        listener: handleNoTypeVariables({)
+        listener: beginClassDeclaration(class, null, F)
+        parseClass(F, class, class, F)
+          parseClassHeaderOpt(F, class, class)
+            parseClassExtendsOpt(F)
+              listener: handleNoType(F)
+              listener: handleClassExtends(null, 1)
+            parseWithClauseOpt(F)
+              listener: handleClassNoWithClause()
+            parseClassOrMixinImplementsOpt(F)
+              listener: handleClassOrMixinImplements(null, 0)
+            listener: handleClassHeader(class, class, null)
+          parseClassOrMixinOrExtensionBody(F, DeclarationKind.Class, F)
+            listener: beginClassOrMixinBody(DeclarationKind.Class, {)
+            notEofOrValue(}, final)
+            parseClassOrMixinOrExtensionMemberImpl({, DeclarationKind.Class, F)
+              parseMetadataStar({)
+                listener: beginMetadataStar(final)
+                listener: endMetadataStar(0)
+              listener: beginMember()
+              parseFields({, null, null, null, null, null, final, final, Instance of 'SimpleTypeWith1Argument', foo1, DeclarationKind.Class, F, false)
+                listener: beginFields({)
+                listener: handleIdentifier(List, typeReference)
+                listener: beginTypeArguments(<)
+                listener: handleIdentifier(Undefined, typeReference)
+                listener: handleNoTypeArguments(>)
+                listener: handleType(Undefined, null)
+                listener: endTypeArguments(1, <, >)
+                listener: handleType(List, null)
+                ensureIdentifierPotentiallyRecovered(>, fieldDeclaration, false)
+                  listener: handleIdentifier(foo1, fieldDeclaration)
+                parseFieldInitializerOpt(foo1, foo1, null, null, null, final, DeclarationKind.Class, F)
+                  listener: beginFieldInitializer(=)
+                  parseExpression(=)
+                    parsePrecedenceExpression(=, 1, true)
+                      parseUnaryExpression(=, true)
+                        parsePrimary(=, expression)
+                          parseConstExpression(=)
+                            reportRecoverableErrorWithToken(List, Instance of 'Template<(Token) => Message>')
+                              listener: handleRecoverableError(Message[UnexpectedToken, Unexpected token 'List'., null, {lexeme: List}], List, List)
+                            listener: beginConstLiteral(<)
+                            parseLiteralListSetMapOrFunction(List, const)
+                              listener: beginTypeArguments(<)
+                              listener: handleIdentifier(List, typeReference)
+                              listener: beginTypeArguments(<)
+                              listener: handleIdentifier(int, typeReference)
+                              listener: handleNoTypeArguments(>)
+                              listener: handleType(int, null)
+                              listener: endTypeArguments(1, <, >)
+                              listener: handleType(List, null)
+                              listener: endTypeArguments(1, <, >)
+                              parseLiteralListSuffix(>, const)
+                                rewriteSquareBrackets(>)
+                                  link([, ])
+                                  rewriter()
+                                listener: handleLiteralList(0, [, const, ])
+                            listener: endConstLiteral(;)
+                  listener: endFieldInitializer(=, ;)
+                listener: endClassFields(null, null, null, null, null, final, 1, final, ;)
+              listener: endMember()
+            notEofOrValue(}, final)
+            parseClassOrMixinOrExtensionMemberImpl(;, DeclarationKind.Class, F)
+              parseMetadataStar(;)
+                listener: beginMetadataStar(final)
+                listener: endMetadataStar(0)
+              listener: beginMember()
+              parseFields(;, null, null, null, null, null, final, final, Instance of 'SimpleTypeWith1Argument', foo2, DeclarationKind.Class, F, false)
+                listener: beginFields(;)
+                listener: handleIdentifier(List, typeReference)
+                listener: beginTypeArguments(<)
+                listener: handleIdentifier(Undefined, typeReference)
+                listener: handleNoTypeArguments(>)
+                listener: handleType(Undefined, null)
+                listener: endTypeArguments(1, <, >)
+                listener: handleType(List, null)
+                ensureIdentifierPotentiallyRecovered(>, fieldDeclaration, false)
+                  listener: handleIdentifier(foo2, fieldDeclaration)
+                parseFieldInitializerOpt(foo2, foo2, null, null, null, final, DeclarationKind.Class, F)
+                  listener: beginFieldInitializer(=)
+                  parseExpression(=)
+                    parsePrecedenceExpression(=, 1, true)
+                      parseUnaryExpression(=, true)
+                        parsePrimary(=, expression)
+                          parseConstExpression(=)
+                            listener: beginConstLiteral(<)
+                            parseLiteralListSetMapOrFunction(const, const)
+                              listener: beginTypeArguments(<)
+                              listener: handleIdentifier(List, typeReference)
+                              listener: beginTypeArguments(<)
+                              listener: handleIdentifier(int, typeReference)
+                              listener: handleNoTypeArguments(>)
+                              listener: handleType(int, null)
+                              listener: endTypeArguments(1, <, >)
+                              listener: handleType(List, null)
+                              listener: endTypeArguments(1, <, >)
+                              parseLiteralListSuffix(>, const)
+                                rewriteSquareBrackets(>)
+                                  link([, ])
+                                  rewriter()
+                                listener: handleLiteralList(0, [, const, ])
+                            listener: endConstLiteral(;)
+                  listener: endFieldInitializer(=, ;)
+                listener: endClassFields(null, null, null, null, null, final, 1, final, ;)
+              listener: endMember()
+            notEofOrValue(}, final)
+            parseClassOrMixinOrExtensionMemberImpl(;, DeclarationKind.Class, F)
+              parseMetadataStar(;)
+                listener: beginMetadataStar(final)
+                listener: endMetadataStar(0)
+              listener: beginMember()
+              parseFields(;, null, null, null, null, null, final, final, Instance of 'SimpleTypeWith1Argument', foo3, DeclarationKind.Class, F, false)
+                listener: beginFields(;)
+                listener: handleIdentifier(List, typeReference)
+                listener: beginTypeArguments(<)
+                listener: handleIdentifier(Undefined, typeReference)
+                listener: handleNoTypeArguments(>)
+                listener: handleType(Undefined, null)
+                listener: endTypeArguments(1, <, >)
+                listener: handleType(List, null)
+                ensureIdentifierPotentiallyRecovered(>, fieldDeclaration, false)
+                  listener: handleIdentifier(foo3, fieldDeclaration)
+                parseFieldInitializerOpt(foo3, foo3, null, null, null, final, DeclarationKind.Class, F)
+                  listener: beginFieldInitializer(=)
+                  parseExpression(=)
+                    parsePrecedenceExpression(=, 1, true)
+                      parseUnaryExpression(=, true)
+                        parsePrimary(=, expression)
+                          parseConstExpression(=)
+                            reportRecoverableErrorWithToken(List, Instance of 'Template<(Token) => Message>')
+                              listener: handleRecoverableError(Message[UnexpectedToken, Unexpected token 'List'., null, {lexeme: List}], List, List)
+                            listener: beginConstLiteral([])
+                            listener: handleNoTypeArguments([])
+                            parseLiteralListSuffix(List, const)
+                              rewriteSquareBrackets(List)
+                                link([, ])
+                                rewriter()
+                              listener: handleLiteralList(0, [, const, ])
+                            listener: endConstLiteral(;)
+                  listener: endFieldInitializer(=, ;)
+                listener: endClassFields(null, null, null, null, null, final, 1, final, ;)
+              listener: endMember()
+            notEofOrValue(}, final)
+            parseClassOrMixinOrExtensionMemberImpl(;, DeclarationKind.Class, F)
+              parseMetadataStar(;)
+                listener: beginMetadataStar(final)
+                listener: endMetadataStar(0)
+              listener: beginMember()
+              parseFields(;, null, null, null, null, null, final, final, Instance of 'SimpleTypeWith1Argument', foo4, DeclarationKind.Class, F, false)
+                listener: beginFields(;)
+                listener: handleIdentifier(List, typeReference)
+                listener: beginTypeArguments(<)
+                listener: handleIdentifier(Undefined, typeReference)
+                listener: handleNoTypeArguments(>)
+                listener: handleType(Undefined, null)
+                listener: endTypeArguments(1, <, >)
+                listener: handleType(List, null)
+                ensureIdentifierPotentiallyRecovered(>, fieldDeclaration, false)
+                  listener: handleIdentifier(foo4, fieldDeclaration)
+                parseFieldInitializerOpt(foo4, foo4, null, null, null, final, DeclarationKind.Class, F)
+                  listener: beginFieldInitializer(=)
+                  parseExpression(=)
+                    parsePrecedenceExpression(=, 1, true)
+                      parseUnaryExpression(=, true)
+                        parsePrimary(=, expression)
+                          parseConstExpression(=)
+                            listener: beginConstExpression(const)
+                            parseConstructorReference(const, Instance of 'ComplexTypeParamOrArgInfo')
+                              ensureIdentifier(const, constructorReference)
+                                listener: handleIdentifier(List, constructorReference)
+                              listener: beginConstructorReference(List)
+                              parseQualifiedRestOpt(List, constructorReferenceContinuation)
+                              listener: beginTypeArguments(<)
+                              listener: handleIdentifier(List, typeReference)
+                              listener: beginTypeArguments(<)
+                              listener: handleIdentifier(int, typeReference)
+                              listener: handleNoTypeArguments(>)
+                              listener: handleType(int, null)
+                              listener: endTypeArguments(1, <, >)
+                              listener: handleType(List, null)
+                              listener: endTypeArguments(1, <, >)
+                              listener: handleNoConstructorReferenceContinuationAfterTypeArguments(()
+                              listener: endConstructorReference(List, null, ()
+                            parseConstructorInvocationArguments(>)
+                              parseArgumentsRest(()
+                                listener: beginArguments(()
+                                listener: endArguments(0, (, ))
+                            listener: endConstExpression(const)
+                  listener: endFieldInitializer(=, ;)
+                listener: endClassFields(null, null, null, null, null, final, 1, final, ;)
+              listener: endMember()
+            notEofOrValue(}, final)
+            parseClassOrMixinOrExtensionMemberImpl(;, DeclarationKind.Class, F)
+              parseMetadataStar(;)
+                listener: beginMetadataStar(final)
+                listener: endMetadataStar(0)
+              listener: beginMember()
+              parseFields(;, null, null, null, null, null, final, final, Instance of 'SimpleTypeWith1Argument', foo5, DeclarationKind.Class, F, false)
+                listener: beginFields(;)
+                listener: handleIdentifier(List, typeReference)
+                listener: beginTypeArguments(<)
+                listener: handleIdentifier(Undefined, typeReference)
+                listener: handleNoTypeArguments(>)
+                listener: handleType(Undefined, null)
+                listener: endTypeArguments(1, <, >)
+                listener: handleType(List, null)
+                ensureIdentifierPotentiallyRecovered(>, fieldDeclaration, false)
+                  listener: handleIdentifier(foo5, fieldDeclaration)
+                parseFieldInitializerOpt(foo5, foo5, null, null, null, final, DeclarationKind.Class, F)
+                  listener: beginFieldInitializer(=)
+                  parseExpression(=)
+                    parsePrecedenceExpression(=, 1, true)
+                      parseUnaryExpression(=, true)
+                        parsePrimary(=, expression)
+                          parseConstExpression(=)
+                            listener: beginConstExpression(const)
+                            parseConstructorReference(const, Instance of 'NoTypeParamOrArg')
+                              ensureIdentifier(const, constructorReference)
+                                listener: handleIdentifier(List, constructorReference)
+                              listener: beginConstructorReference(List)
+                              parseQualifiedRestOpt(List, constructorReferenceContinuation)
+                              listener: handleNoTypeArguments(()
+                              listener: handleNoConstructorReferenceContinuationAfterTypeArguments(()
+                              listener: endConstructorReference(List, null, ()
+                            parseConstructorInvocationArguments(List)
+                              parseArgumentsRest(()
+                                listener: beginArguments(()
+                                listener: endArguments(0, (, ))
+                            listener: endConstExpression(const)
+                  listener: endFieldInitializer(=, ;)
+                listener: endClassFields(null, null, null, null, null, final, 1, final, ;)
+              listener: endMember()
+            notEofOrValue(}, final)
+            parseClassOrMixinOrExtensionMemberImpl(;, DeclarationKind.Class, F)
+              parseMetadataStar(;)
+                listener: beginMetadataStar(final)
+                listener: endMetadataStar(0)
+              listener: beginMember()
+              parseFields(;, null, null, null, null, null, final, final, Instance of 'SimpleTypeWith1Argument', foo6, DeclarationKind.Class, F, false)
+                listener: beginFields(;)
+                listener: handleIdentifier(List, typeReference)
+                listener: beginTypeArguments(<)
+                listener: handleIdentifier(Undefined, typeReference)
+                listener: handleNoTypeArguments(>)
+                listener: handleType(Undefined, null)
+                listener: endTypeArguments(1, <, >)
+                listener: handleType(List, null)
+                ensureIdentifierPotentiallyRecovered(>, fieldDeclaration, false)
+                  listener: handleIdentifier(foo6, fieldDeclaration)
+                parseFieldInitializerOpt(foo6, foo6, null, null, null, final, DeclarationKind.Class, F)
+                  listener: beginFieldInitializer(=)
+                  parseExpression(=)
+                    parsePrecedenceExpression(=, 1, true)
+                      parseUnaryExpression(=, true)
+                        parsePrimary(=, expression)
+                          parseConstExpression(=)
+                            reportRecoverableErrorWithToken(List, Instance of 'Template<(Token) => Message>')
+                              listener: handleRecoverableError(Message[UnexpectedToken, Unexpected token 'List'., null, {lexeme: List}], List, List)
+                            listener: beginConstLiteral(<)
+                            parseLiteralListSetMapOrFunction(List, const)
+                              listener: beginTypeArguments(<)
+                              listener: handleIdentifier(List, typeReference)
+                              listener: beginTypeArguments(<)
+                              listener: handleIdentifier(int, typeReference)
+                              listener: handleNoTypeArguments(>)
+                              listener: handleType(int, null)
+                              listener: endTypeArguments(1, <, >)
+                              listener: handleType(List, null)
+                              listener: endTypeArguments(1, <, >)
+                              parseLiteralListSuffix(>, const)
+                                parseExpression([)
+                                  parsePrecedenceExpression([, 1, true)
+                                    parseUnaryExpression([, true)
+                                      parsePrimary([, expression)
+                                        parseLiteralNull([)
+                                          listener: handleLiteralNull(null)
+                                listener: handleLiteralList(1, [, const, ])
+                            listener: endConstLiteral(;)
+                  listener: endFieldInitializer(=, ;)
+                listener: endClassFields(null, null, null, null, null, final, 1, final, ;)
+              listener: endMember()
+            notEofOrValue(}, final)
+            parseClassOrMixinOrExtensionMemberImpl(;, DeclarationKind.Class, F)
+              parseMetadataStar(;)
+                listener: beginMetadataStar(final)
+                listener: endMetadataStar(0)
+              listener: beginMember()
+              parseFields(;, null, null, null, null, null, final, final, Instance of 'SimpleTypeWith1Argument', foo7, DeclarationKind.Class, F, false)
+                listener: beginFields(;)
+                listener: handleIdentifier(List, typeReference)
+                listener: beginTypeArguments(<)
+                listener: handleIdentifier(Undefined, typeReference)
+                listener: handleNoTypeArguments(>)
+                listener: handleType(Undefined, null)
+                listener: endTypeArguments(1, <, >)
+                listener: handleType(List, null)
+                ensureIdentifierPotentiallyRecovered(>, fieldDeclaration, false)
+                  listener: handleIdentifier(foo7, fieldDeclaration)
+                parseFieldInitializerOpt(foo7, foo7, null, null, null, final, DeclarationKind.Class, F)
+                  listener: beginFieldInitializer(=)
+                  parseExpression(=)
+                    parsePrecedenceExpression(=, 1, true)
+                      parseUnaryExpression(=, true)
+                        parsePrimary(=, expression)
+                          parseConstExpression(=)
+                            reportRecoverableErrorWithToken(List, Instance of 'Template<(Token) => Message>')
+                              listener: handleRecoverableError(Message[UnexpectedToken, Unexpected token 'List'., null, {lexeme: List}], List, List)
+                            listener: beginConstLiteral([)
+                            listener: handleNoTypeArguments([)
+                            parseLiteralListSuffix(List, const)
+                              parseExpression([)
+                                parsePrecedenceExpression([, 1, true)
+                                  parseUnaryExpression([, true)
+                                    parsePrimary([, expression)
+                                      parseLiteralNull([)
+                                        listener: handleLiteralNull(null)
+                              listener: handleLiteralList(1, [, const, ])
+                            listener: endConstLiteral(;)
+                  listener: endFieldInitializer(=, ;)
+                listener: endClassFields(null, null, null, null, null, final, 1, final, ;)
+              listener: endMember()
+            notEofOrValue(}, final)
+            parseClassOrMixinOrExtensionMemberImpl(;, DeclarationKind.Class, F)
+              parseMetadataStar(;)
+                listener: beginMetadataStar(final)
+                listener: endMetadataStar(0)
+              listener: beginMember()
+              parseFields(;, null, null, null, null, null, final, final, Instance of 'SimpleTypeWith1Argument', foo8, DeclarationKind.Class, F, false)
+                listener: beginFields(;)
+                listener: handleIdentifier(List, typeReference)
+                listener: beginTypeArguments(<)
+                listener: handleIdentifier(Undefined, typeReference)
+                listener: handleNoTypeArguments(>)
+                listener: handleType(Undefined, null)
+                listener: endTypeArguments(1, <, >)
+                listener: handleType(List, null)
+                ensureIdentifierPotentiallyRecovered(>, fieldDeclaration, false)
+                  listener: handleIdentifier(foo8, fieldDeclaration)
+                parseFieldInitializerOpt(foo8, foo8, null, null, null, final, DeclarationKind.Class, F)
+                  listener: beginFieldInitializer(=)
+                  parseExpression(=)
+                    parsePrecedenceExpression(=, 1, true)
+                      parseUnaryExpression(=, true)
+                        parsePrimary(=, expression)
+                          parseConstExpression(=)
+                            listener: beginConstLiteral(<)
+                            parseLiteralListSetMapOrFunction(const, const)
+                              listener: beginTypeArguments(<)
+                              listener: handleIdentifier(List, typeReference)
+                              listener: beginTypeArguments(<)
+                              listener: handleIdentifier(int, typeReference)
+                              listener: handleNoTypeArguments(>)
+                              listener: handleType(int, null)
+                              listener: endTypeArguments(1, <, >)
+                              listener: handleType(List, null)
+                              listener: endTypeArguments(1, <, >)
+                              parseLiteralListSuffix(>, const)
+                                parseExpression([)
+                                  parsePrecedenceExpression([, 1, true)
+                                    parseUnaryExpression([, true)
+                                      parsePrimary([, expression)
+                                        parseLiteralNull([)
+                                          listener: handleLiteralNull(null)
+                                listener: handleLiteralList(1, [, const, ])
+                            listener: endConstLiteral(;)
+                  listener: endFieldInitializer(=, ;)
+                listener: endClassFields(null, null, null, null, null, final, 1, final, ;)
+              listener: endMember()
+            notEofOrValue(}, final)
+            parseClassOrMixinOrExtensionMemberImpl(;, DeclarationKind.Class, F)
+              parseMetadataStar(;)
+                listener: beginMetadataStar(final)
+                listener: endMetadataStar(0)
+              listener: beginMember()
+              parseFields(;, null, null, null, null, null, final, final, Instance of 'SimpleTypeWith1Argument', foo9, DeclarationKind.Class, F, false)
+                listener: beginFields(;)
+                listener: handleIdentifier(List, typeReference)
+                listener: beginTypeArguments(<)
+                listener: handleIdentifier(Undefined, typeReference)
+                listener: handleNoTypeArguments(>)
+                listener: handleType(Undefined, null)
+                listener: endTypeArguments(1, <, >)
+                listener: handleType(List, null)
+                ensureIdentifierPotentiallyRecovered(>, fieldDeclaration, false)
+                  listener: handleIdentifier(foo9, fieldDeclaration)
+                parseFieldInitializerOpt(foo9, foo9, null, null, null, final, DeclarationKind.Class, F)
+                  listener: beginFieldInitializer(=)
+                  parseExpression(=)
+                    parsePrecedenceExpression(=, 1, true)
+                      parseUnaryExpression(=, true)
+                        parsePrimary(=, expression)
+                          parseConstExpression(=)
+                            listener: beginConstLiteral([)
+                            listener: handleNoTypeArguments([)
+                            parseLiteralListSuffix(const, const)
+                              parseExpression([)
+                                parsePrecedenceExpression([, 1, true)
+                                  parseUnaryExpression([, true)
+                                    parsePrimary([, expression)
+                                      parseLiteralNull([)
+                                        listener: handleLiteralNull(null)
+                              listener: handleLiteralList(1, [, const, ])
+                            listener: endConstLiteral(;)
+                  listener: endFieldInitializer(=, ;)
+                listener: endClassFields(null, null, null, null, null, final, 1, final, ;)
+              listener: endMember()
+            notEofOrValue(}, })
+            listener: endClassOrMixinBody(DeclarationKind.Class, 9, {, })
+          listener: endClassDeclaration(class, })
+  listener: endTopLevelDeclaration()
+  reportAllErrorTokens(class)
+  listener: endCompilationUnit(1, )
diff --git a/pkg/front_end/parser_testcases/error_recovery/issue_45251_list_const.dart.parser.expect b/pkg/front_end/parser_testcases/error_recovery/issue_45251_list_const.dart.parser.expect
new file mode 100644
index 0000000..bbe5abb
--- /dev/null
+++ b/pkg/front_end/parser_testcases/error_recovery/issue_45251_list_const.dart.parser.expect
@@ -0,0 +1,61 @@
+NOTICE: Stream was rewritten by parser!
+
+class F {
+
+final List<Undefined> foo1 = const List<List<int>>[];
+
+
+final List<Undefined> foo2 = const <List<int>>[];
+
+
+final List<Undefined> foo3 = const List[];
+
+
+final List<Undefined> foo4 = const List<List<int>>();
+
+
+final List<Undefined> foo5 = const List();
+
+
+final List<Undefined> foo6 = const List<List<int>>[null];
+
+
+
+final List<Undefined> foo7 = const List[null];
+
+
+final List<Undefined> foo8 = const <List<int>>[null];
+
+
+final List<Undefined> foo9 = const [null];
+}
+
+class[KeywordToken] F[StringToken] {[BeginToken]
+
+final[KeywordToken] List[StringToken]<[BeginToken]Undefined[StringToken]>[SimpleToken] foo1[StringToken] =[SimpleToken] const[KeywordToken] List[StringToken]<[BeginToken]List[StringToken]<[BeginToken]int[StringToken]>[SimpleToken]>[SimpleToken][[BeginToken]][SimpleToken];[SimpleToken]
+
+
+final[KeywordToken] List[StringToken]<[BeginToken]Undefined[StringToken]>[SimpleToken] foo2[StringToken] =[SimpleToken] const[KeywordToken] <[BeginToken]List[StringToken]<[BeginToken]int[StringToken]>[SimpleToken]>[SimpleToken][[BeginToken]][SimpleToken];[SimpleToken]
+
+
+final[KeywordToken] List[StringToken]<[BeginToken]Undefined[StringToken]>[SimpleToken] foo3[StringToken] =[SimpleToken] const[KeywordToken] List[StringToken][[BeginToken]][SimpleToken];[SimpleToken]
+
+
+final[KeywordToken] List[StringToken]<[BeginToken]Undefined[StringToken]>[SimpleToken] foo4[StringToken] =[SimpleToken] const[KeywordToken] List[StringToken]<[BeginToken]List[StringToken]<[BeginToken]int[StringToken]>[SimpleToken]>[SimpleToken]([BeginToken])[SimpleToken];[SimpleToken]
+
+
+final[KeywordToken] List[StringToken]<[BeginToken]Undefined[StringToken]>[SimpleToken] foo5[StringToken] =[SimpleToken] const[KeywordToken] List[StringToken]([BeginToken])[SimpleToken];[SimpleToken]
+
+
+final[KeywordToken] List[StringToken]<[BeginToken]Undefined[StringToken]>[SimpleToken] foo6[StringToken] =[SimpleToken] const[KeywordToken] List[StringToken]<[BeginToken]List[StringToken]<[BeginToken]int[StringToken]>[SimpleToken]>[SimpleToken][[BeginToken]null[KeywordToken]][SimpleToken];[SimpleToken]
+
+
+
+final[KeywordToken] List[StringToken]<[BeginToken]Undefined[StringToken]>[SimpleToken] foo7[StringToken] =[SimpleToken] const[KeywordToken] List[StringToken][[BeginToken]null[KeywordToken]][SimpleToken];[SimpleToken]
+
+
+final[KeywordToken] List[StringToken]<[BeginToken]Undefined[StringToken]>[SimpleToken] foo8[StringToken] =[SimpleToken] const[KeywordToken] <[BeginToken]List[StringToken]<[BeginToken]int[StringToken]>[SimpleToken]>[SimpleToken][[BeginToken]null[KeywordToken]][SimpleToken];[SimpleToken]
+
+
+final[KeywordToken] List[StringToken]<[BeginToken]Undefined[StringToken]>[SimpleToken] foo9[StringToken] =[SimpleToken] const[KeywordToken] [[BeginToken]null[KeywordToken]][SimpleToken];[SimpleToken]
+}[SimpleToken][SimpleToken]
diff --git a/pkg/front_end/parser_testcases/error_recovery/issue_45251_list_const.dart.scanner.expect b/pkg/front_end/parser_testcases/error_recovery/issue_45251_list_const.dart.scanner.expect
new file mode 100644
index 0000000..12dac96
--- /dev/null
+++ b/pkg/front_end/parser_testcases/error_recovery/issue_45251_list_const.dart.scanner.expect
@@ -0,0 +1,59 @@
+class F {
+
+final List<Undefined> foo1 = const List<List<int>>[];
+
+
+final List<Undefined> foo2 = const <List<int>>[];
+
+
+final List<Undefined> foo3 = const List[];
+
+
+final List<Undefined> foo4 = const List<List<int>>();
+
+
+final List<Undefined> foo5 = const List();
+
+
+final List<Undefined> foo6 = const List<List<int>>[null];
+
+
+
+final List<Undefined> foo7 = const List[null];
+
+
+final List<Undefined> foo8 = const <List<int>>[null];
+
+
+final List<Undefined> foo9 = const [null];
+}
+
+class[KeywordToken] F[StringToken] {[BeginToken]
+
+final[KeywordToken] List[StringToken]<[BeginToken]Undefined[StringToken]>[SimpleToken] foo1[StringToken] =[SimpleToken] const[KeywordToken] List[StringToken]<[BeginToken]List[StringToken]<[BeginToken]int[StringToken]>>[SimpleToken][][SimpleToken];[SimpleToken]
+
+
+final[KeywordToken] List[StringToken]<[BeginToken]Undefined[StringToken]>[SimpleToken] foo2[StringToken] =[SimpleToken] const[KeywordToken] <[BeginToken]List[StringToken]<[BeginToken]int[StringToken]>>[SimpleToken][][SimpleToken];[SimpleToken]
+
+
+final[KeywordToken] List[StringToken]<[BeginToken]Undefined[StringToken]>[SimpleToken] foo3[StringToken] =[SimpleToken] const[KeywordToken] List[StringToken][][SimpleToken];[SimpleToken]
+
+
+final[KeywordToken] List[StringToken]<[BeginToken]Undefined[StringToken]>[SimpleToken] foo4[StringToken] =[SimpleToken] const[KeywordToken] List[StringToken]<[BeginToken]List[StringToken]<[BeginToken]int[StringToken]>>[SimpleToken]([BeginToken])[SimpleToken];[SimpleToken]
+
+
+final[KeywordToken] List[StringToken]<[BeginToken]Undefined[StringToken]>[SimpleToken] foo5[StringToken] =[SimpleToken] const[KeywordToken] List[StringToken]([BeginToken])[SimpleToken];[SimpleToken]
+
+
+final[KeywordToken] List[StringToken]<[BeginToken]Undefined[StringToken]>[SimpleToken] foo6[StringToken] =[SimpleToken] const[KeywordToken] List[StringToken]<[BeginToken]List[StringToken]<[BeginToken]int[StringToken]>>[SimpleToken][[BeginToken]null[KeywordToken]][SimpleToken];[SimpleToken]
+
+
+
+final[KeywordToken] List[StringToken]<[BeginToken]Undefined[StringToken]>[SimpleToken] foo7[StringToken] =[SimpleToken] const[KeywordToken] List[StringToken][[BeginToken]null[KeywordToken]][SimpleToken];[SimpleToken]
+
+
+final[KeywordToken] List[StringToken]<[BeginToken]Undefined[StringToken]>[SimpleToken] foo8[StringToken] =[SimpleToken] const[KeywordToken] <[BeginToken]List[StringToken]<[BeginToken]int[StringToken]>>[SimpleToken][[BeginToken]null[KeywordToken]][SimpleToken];[SimpleToken]
+
+
+final[KeywordToken] List[StringToken]<[BeginToken]Undefined[StringToken]>[SimpleToken] foo9[StringToken] =[SimpleToken] const[KeywordToken] [[BeginToken]null[KeywordToken]][SimpleToken];[SimpleToken]
+}[SimpleToken][SimpleToken]
diff --git a/pkg/front_end/parser_testcases/error_recovery/issue_45251_list_new.dart b/pkg/front_end/parser_testcases/error_recovery/issue_45251_list_new.dart
new file mode 100644
index 0000000..d05a529
--- /dev/null
+++ b/pkg/front_end/parser_testcases/error_recovery/issue_45251_list_new.dart
@@ -0,0 +1,29 @@
+class F {
+  /* notice the bracket at the end instead of parenthesis! */
+  final List<Undefined> foo1 = new List<List<int>>[];
+
+  // variation #1: new makes it bad.
+  final List<Undefined> foo2 = new <List<int>>[];
+
+  // variation #2: Bad.
+  final List<Undefined> foo3 = new List[];
+
+  // variation #3: OK.
+  final List<Undefined> foo4 = new List<List<int>>();
+
+  // variation #4: OK.
+  final List<Undefined> foo5 = new List();
+
+  // variation #5: Bad.
+  final List<Undefined> foo6 = new List<List<int>>[null];
+
+  // variation #6: new makes it bad. Without new it would be an indexed
+  // expression; We should probably recover as `[null]`.
+  final List<Undefined> foo7 = new List[null];
+
+  // variation #7: new makes it bad.
+  final List<Undefined> foo8 = new <List<int>>[null];
+
+  // variation #8: new makes it bad.
+  final List<Undefined> foo9 = new [null];
+}
\ No newline at end of file
diff --git a/pkg/front_end/parser_testcases/error_recovery/issue_45251_list_new.dart.expect b/pkg/front_end/parser_testcases/error_recovery/issue_45251_list_new.dart.expect
new file mode 100644
index 0000000..af78fd6
--- /dev/null
+++ b/pkg/front_end/parser_testcases/error_recovery/issue_45251_list_new.dart.expect
@@ -0,0 +1,294 @@
+Problems reported:
+
+parser/error_recovery/issue_45251_list_new:3:32: Unexpected token 'new'.
+  final List<Undefined> foo1 = new List<List<int>>[];
+                               ^^^
+
+parser/error_recovery/issue_45251_list_new:3:36: Unexpected token 'List'.
+  final List<Undefined> foo1 = new List<List<int>>[];
+                                   ^^^^
+
+parser/error_recovery/issue_45251_list_new:6:32: Unexpected token 'new'.
+  final List<Undefined> foo2 = new <List<int>>[];
+                               ^^^
+
+parser/error_recovery/issue_45251_list_new:9:32: Unexpected token 'new'.
+  final List<Undefined> foo3 = new List[];
+                               ^^^
+
+parser/error_recovery/issue_45251_list_new:9:36: Unexpected token 'List'.
+  final List<Undefined> foo3 = new List[];
+                                   ^^^^
+
+parser/error_recovery/issue_45251_list_new:18:32: Unexpected token 'new'.
+  final List<Undefined> foo6 = new List<List<int>>[null];
+                               ^^^
+
+parser/error_recovery/issue_45251_list_new:18:36: Unexpected token 'List'.
+  final List<Undefined> foo6 = new List<List<int>>[null];
+                                   ^^^^
+
+parser/error_recovery/issue_45251_list_new:22:32: Unexpected token 'new'.
+  final List<Undefined> foo7 = new List[null];
+                               ^^^
+
+parser/error_recovery/issue_45251_list_new:22:36: Unexpected token 'List'.
+  final List<Undefined> foo7 = new List[null];
+                                   ^^^^
+
+parser/error_recovery/issue_45251_list_new:25:32: Unexpected token 'new'.
+  final List<Undefined> foo8 = new <List<int>>[null];
+                               ^^^
+
+parser/error_recovery/issue_45251_list_new:28:32: Unexpected token 'new'.
+  final List<Undefined> foo9 = new [null];
+                               ^^^
+
+beginCompilationUnit(class)
+  beginMetadataStar(class)
+  endMetadataStar(0)
+  beginClassOrNamedMixinApplicationPrelude(class)
+    handleIdentifier(F, classOrMixinDeclaration)
+    handleNoTypeVariables({)
+    beginClassDeclaration(class, null, F)
+      handleNoType(F)
+      handleClassExtends(null, 1)
+      handleClassNoWithClause()
+      handleClassOrMixinImplements(null, 0)
+      handleClassHeader(class, class, null)
+      beginClassOrMixinBody(DeclarationKind.Class, {)
+        beginMetadataStar(final)
+        endMetadataStar(0)
+        beginMember()
+          beginFields({)
+            handleIdentifier(List, typeReference)
+            beginTypeArguments(<)
+              handleIdentifier(Undefined, typeReference)
+              handleNoTypeArguments(>)
+              handleType(Undefined, null)
+            endTypeArguments(1, <, >)
+            handleType(List, null)
+            handleIdentifier(foo1, fieldDeclaration)
+            beginFieldInitializer(=)
+              handleRecoverableError(Message[UnexpectedToken, Unexpected token 'new'., null, {lexeme: new}], new, new)
+              handleRecoverableError(Message[UnexpectedToken, Unexpected token 'List'., null, {lexeme: List}], List, List)
+              beginTypeArguments(<)
+                handleIdentifier(List, typeReference)
+                beginTypeArguments(<)
+                  handleIdentifier(int, typeReference)
+                  handleNoTypeArguments(>)
+                  handleType(int, null)
+                endTypeArguments(1, <, >)
+                handleType(List, null)
+              endTypeArguments(1, <, >)
+              handleLiteralList(0, [, null, ])
+            endFieldInitializer(=, ;)
+          endClassFields(null, null, null, null, null, final, 1, final, ;)
+        endMember()
+        beginMetadataStar(final)
+        endMetadataStar(0)
+        beginMember()
+          beginFields(;)
+            handleIdentifier(List, typeReference)
+            beginTypeArguments(<)
+              handleIdentifier(Undefined, typeReference)
+              handleNoTypeArguments(>)
+              handleType(Undefined, null)
+            endTypeArguments(1, <, >)
+            handleType(List, null)
+            handleIdentifier(foo2, fieldDeclaration)
+            beginFieldInitializer(=)
+              handleRecoverableError(Message[UnexpectedToken, Unexpected token 'new'., null, {lexeme: new}], new, new)
+              beginTypeArguments(<)
+                handleIdentifier(List, typeReference)
+                beginTypeArguments(<)
+                  handleIdentifier(int, typeReference)
+                  handleNoTypeArguments(>)
+                  handleType(int, null)
+                endTypeArguments(1, <, >)
+                handleType(List, null)
+              endTypeArguments(1, <, >)
+              handleLiteralList(0, [, null, ])
+            endFieldInitializer(=, ;)
+          endClassFields(null, null, null, null, null, final, 1, final, ;)
+        endMember()
+        beginMetadataStar(final)
+        endMetadataStar(0)
+        beginMember()
+          beginFields(;)
+            handleIdentifier(List, typeReference)
+            beginTypeArguments(<)
+              handleIdentifier(Undefined, typeReference)
+              handleNoTypeArguments(>)
+              handleType(Undefined, null)
+            endTypeArguments(1, <, >)
+            handleType(List, null)
+            handleIdentifier(foo3, fieldDeclaration)
+            beginFieldInitializer(=)
+              handleRecoverableError(Message[UnexpectedToken, Unexpected token 'new'., null, {lexeme: new}], new, new)
+              handleRecoverableError(Message[UnexpectedToken, Unexpected token 'List'., null, {lexeme: List}], List, List)
+              handleNoTypeArguments([])
+              handleLiteralList(0, [, null, ])
+            endFieldInitializer(=, ;)
+          endClassFields(null, null, null, null, null, final, 1, final, ;)
+        endMember()
+        beginMetadataStar(final)
+        endMetadataStar(0)
+        beginMember()
+          beginFields(;)
+            handleIdentifier(List, typeReference)
+            beginTypeArguments(<)
+              handleIdentifier(Undefined, typeReference)
+              handleNoTypeArguments(>)
+              handleType(Undefined, null)
+            endTypeArguments(1, <, >)
+            handleType(List, null)
+            handleIdentifier(foo4, fieldDeclaration)
+            beginFieldInitializer(=)
+              beginNewExpression(new)
+                handleIdentifier(List, constructorReference)
+                beginConstructorReference(List)
+                  beginTypeArguments(<)
+                    handleIdentifier(List, typeReference)
+                    beginTypeArguments(<)
+                      handleIdentifier(int, typeReference)
+                      handleNoTypeArguments(>)
+                      handleType(int, null)
+                    endTypeArguments(1, <, >)
+                    handleType(List, null)
+                  endTypeArguments(1, <, >)
+                  handleNoConstructorReferenceContinuationAfterTypeArguments(()
+                endConstructorReference(List, null, ()
+                beginArguments(()
+                endArguments(0, (, ))
+              endNewExpression(new)
+            endFieldInitializer(=, ;)
+          endClassFields(null, null, null, null, null, final, 1, final, ;)
+        endMember()
+        beginMetadataStar(final)
+        endMetadataStar(0)
+        beginMember()
+          beginFields(;)
+            handleIdentifier(List, typeReference)
+            beginTypeArguments(<)
+              handleIdentifier(Undefined, typeReference)
+              handleNoTypeArguments(>)
+              handleType(Undefined, null)
+            endTypeArguments(1, <, >)
+            handleType(List, null)
+            handleIdentifier(foo5, fieldDeclaration)
+            beginFieldInitializer(=)
+              beginNewExpression(new)
+                handleIdentifier(List, constructorReference)
+                beginConstructorReference(List)
+                  handleNoTypeArguments(()
+                  handleNoConstructorReferenceContinuationAfterTypeArguments(()
+                endConstructorReference(List, null, ()
+                beginArguments(()
+                endArguments(0, (, ))
+              endNewExpression(new)
+            endFieldInitializer(=, ;)
+          endClassFields(null, null, null, null, null, final, 1, final, ;)
+        endMember()
+        beginMetadataStar(final)
+        endMetadataStar(0)
+        beginMember()
+          beginFields(;)
+            handleIdentifier(List, typeReference)
+            beginTypeArguments(<)
+              handleIdentifier(Undefined, typeReference)
+              handleNoTypeArguments(>)
+              handleType(Undefined, null)
+            endTypeArguments(1, <, >)
+            handleType(List, null)
+            handleIdentifier(foo6, fieldDeclaration)
+            beginFieldInitializer(=)
+              handleRecoverableError(Message[UnexpectedToken, Unexpected token 'new'., null, {lexeme: new}], new, new)
+              handleRecoverableError(Message[UnexpectedToken, Unexpected token 'List'., null, {lexeme: List}], List, List)
+              beginTypeArguments(<)
+                handleIdentifier(List, typeReference)
+                beginTypeArguments(<)
+                  handleIdentifier(int, typeReference)
+                  handleNoTypeArguments(>)
+                  handleType(int, null)
+                endTypeArguments(1, <, >)
+                handleType(List, null)
+              endTypeArguments(1, <, >)
+              handleLiteralNull(null)
+              handleLiteralList(1, [, null, ])
+            endFieldInitializer(=, ;)
+          endClassFields(null, null, null, null, null, final, 1, final, ;)
+        endMember()
+        beginMetadataStar(final)
+        endMetadataStar(0)
+        beginMember()
+          beginFields(;)
+            handleIdentifier(List, typeReference)
+            beginTypeArguments(<)
+              handleIdentifier(Undefined, typeReference)
+              handleNoTypeArguments(>)
+              handleType(Undefined, null)
+            endTypeArguments(1, <, >)
+            handleType(List, null)
+            handleIdentifier(foo7, fieldDeclaration)
+            beginFieldInitializer(=)
+              handleRecoverableError(Message[UnexpectedToken, Unexpected token 'new'., null, {lexeme: new}], new, new)
+              handleRecoverableError(Message[UnexpectedToken, Unexpected token 'List'., null, {lexeme: List}], List, List)
+              handleNoTypeArguments([)
+              handleLiteralNull(null)
+              handleLiteralList(1, [, null, ])
+            endFieldInitializer(=, ;)
+          endClassFields(null, null, null, null, null, final, 1, final, ;)
+        endMember()
+        beginMetadataStar(final)
+        endMetadataStar(0)
+        beginMember()
+          beginFields(;)
+            handleIdentifier(List, typeReference)
+            beginTypeArguments(<)
+              handleIdentifier(Undefined, typeReference)
+              handleNoTypeArguments(>)
+              handleType(Undefined, null)
+            endTypeArguments(1, <, >)
+            handleType(List, null)
+            handleIdentifier(foo8, fieldDeclaration)
+            beginFieldInitializer(=)
+              handleRecoverableError(Message[UnexpectedToken, Unexpected token 'new'., null, {lexeme: new}], new, new)
+              beginTypeArguments(<)
+                handleIdentifier(List, typeReference)
+                beginTypeArguments(<)
+                  handleIdentifier(int, typeReference)
+                  handleNoTypeArguments(>)
+                  handleType(int, null)
+                endTypeArguments(1, <, >)
+                handleType(List, null)
+              endTypeArguments(1, <, >)
+              handleLiteralNull(null)
+              handleLiteralList(1, [, null, ])
+            endFieldInitializer(=, ;)
+          endClassFields(null, null, null, null, null, final, 1, final, ;)
+        endMember()
+        beginMetadataStar(final)
+        endMetadataStar(0)
+        beginMember()
+          beginFields(;)
+            handleIdentifier(List, typeReference)
+            beginTypeArguments(<)
+              handleIdentifier(Undefined, typeReference)
+              handleNoTypeArguments(>)
+              handleType(Undefined, null)
+            endTypeArguments(1, <, >)
+            handleType(List, null)
+            handleIdentifier(foo9, fieldDeclaration)
+            beginFieldInitializer(=)
+              handleRecoverableError(Message[UnexpectedToken, Unexpected token 'new'., null, {lexeme: new}], new, new)
+              handleNoTypeArguments([)
+              handleLiteralNull(null)
+              handleLiteralList(1, [, null, ])
+            endFieldInitializer(=, ;)
+          endClassFields(null, null, null, null, null, final, 1, final, ;)
+        endMember()
+      endClassOrMixinBody(DeclarationKind.Class, 9, {, })
+    endClassDeclaration(class, })
+  endTopLevelDeclaration()
+endCompilationUnit(1, )
diff --git a/pkg/front_end/parser_testcases/error_recovery/issue_45251_list_new.dart.intertwined.expect b/pkg/front_end/parser_testcases/error_recovery/issue_45251_list_new.dart.intertwined.expect
new file mode 100644
index 0000000..bad29ab
--- /dev/null
+++ b/pkg/front_end/parser_testcases/error_recovery/issue_45251_list_new.dart.intertwined.expect
@@ -0,0 +1,432 @@
+parseUnit(class)
+  skipErrorTokens(class)
+  listener: beginCompilationUnit(class)
+  syntheticPreviousToken(class)
+  parseTopLevelDeclarationImpl(, Instance of 'DirectiveContext')
+    parseMetadataStar()
+      listener: beginMetadataStar(class)
+      listener: endMetadataStar(0)
+    parseTopLevelKeywordDeclaration(, class, Instance of 'DirectiveContext')
+      parseClassDeclarationModifiers(, class)
+      parseClassOrNamedMixinApplication(null, class)
+        listener: beginClassOrNamedMixinApplicationPrelude(class)
+        ensureIdentifier(class, classOrMixinDeclaration)
+          listener: handleIdentifier(F, classOrMixinDeclaration)
+        listener: handleNoTypeVariables({)
+        listener: beginClassDeclaration(class, null, F)
+        parseClass(F, class, class, F)
+          parseClassHeaderOpt(F, class, class)
+            parseClassExtendsOpt(F)
+              listener: handleNoType(F)
+              listener: handleClassExtends(null, 1)
+            parseWithClauseOpt(F)
+              listener: handleClassNoWithClause()
+            parseClassOrMixinImplementsOpt(F)
+              listener: handleClassOrMixinImplements(null, 0)
+            listener: handleClassHeader(class, class, null)
+          parseClassOrMixinOrExtensionBody(F, DeclarationKind.Class, F)
+            listener: beginClassOrMixinBody(DeclarationKind.Class, {)
+            notEofOrValue(}, final)
+            parseClassOrMixinOrExtensionMemberImpl({, DeclarationKind.Class, F)
+              parseMetadataStar({)
+                listener: beginMetadataStar(final)
+                listener: endMetadataStar(0)
+              listener: beginMember()
+              parseFields({, null, null, null, null, null, final, final, Instance of 'SimpleTypeWith1Argument', foo1, DeclarationKind.Class, F, false)
+                listener: beginFields({)
+                listener: handleIdentifier(List, typeReference)
+                listener: beginTypeArguments(<)
+                listener: handleIdentifier(Undefined, typeReference)
+                listener: handleNoTypeArguments(>)
+                listener: handleType(Undefined, null)
+                listener: endTypeArguments(1, <, >)
+                listener: handleType(List, null)
+                ensureIdentifierPotentiallyRecovered(>, fieldDeclaration, false)
+                  listener: handleIdentifier(foo1, fieldDeclaration)
+                parseFieldInitializerOpt(foo1, foo1, null, null, null, final, DeclarationKind.Class, F)
+                  listener: beginFieldInitializer(=)
+                  parseExpression(=)
+                    parsePrecedenceExpression(=, 1, true)
+                      parseUnaryExpression(=, true)
+                        parsePrimary(=, expression)
+                          parseNewExpression(=)
+                            reportRecoverableErrorWithToken(new, Instance of 'Template<(Token) => Message>')
+                              listener: handleRecoverableError(Message[UnexpectedToken, Unexpected token 'new'., null, {lexeme: new}], new, new)
+                            reportRecoverableErrorWithToken(List, Instance of 'Template<(Token) => Message>')
+                              listener: handleRecoverableError(Message[UnexpectedToken, Unexpected token 'List'., null, {lexeme: List}], List, List)
+                            parsePrimary(List, expression)
+                              parseLiteralListSetMapOrFunction(List, null)
+                                listener: beginTypeArguments(<)
+                                listener: handleIdentifier(List, typeReference)
+                                listener: beginTypeArguments(<)
+                                listener: handleIdentifier(int, typeReference)
+                                listener: handleNoTypeArguments(>)
+                                listener: handleType(int, null)
+                                listener: endTypeArguments(1, <, >)
+                                listener: handleType(List, null)
+                                listener: endTypeArguments(1, <, >)
+                                parseLiteralListSuffix(>, null)
+                                  rewriteSquareBrackets(>)
+                                    link([, ])
+                                    rewriter()
+                                  listener: handleLiteralList(0, [, null, ])
+                  listener: endFieldInitializer(=, ;)
+                listener: endClassFields(null, null, null, null, null, final, 1, final, ;)
+              listener: endMember()
+            notEofOrValue(}, final)
+            parseClassOrMixinOrExtensionMemberImpl(;, DeclarationKind.Class, F)
+              parseMetadataStar(;)
+                listener: beginMetadataStar(final)
+                listener: endMetadataStar(0)
+              listener: beginMember()
+              parseFields(;, null, null, null, null, null, final, final, Instance of 'SimpleTypeWith1Argument', foo2, DeclarationKind.Class, F, false)
+                listener: beginFields(;)
+                listener: handleIdentifier(List, typeReference)
+                listener: beginTypeArguments(<)
+                listener: handleIdentifier(Undefined, typeReference)
+                listener: handleNoTypeArguments(>)
+                listener: handleType(Undefined, null)
+                listener: endTypeArguments(1, <, >)
+                listener: handleType(List, null)
+                ensureIdentifierPotentiallyRecovered(>, fieldDeclaration, false)
+                  listener: handleIdentifier(foo2, fieldDeclaration)
+                parseFieldInitializerOpt(foo2, foo2, null, null, null, final, DeclarationKind.Class, F)
+                  listener: beginFieldInitializer(=)
+                  parseExpression(=)
+                    parsePrecedenceExpression(=, 1, true)
+                      parseUnaryExpression(=, true)
+                        parsePrimary(=, expression)
+                          parseNewExpression(=)
+                            reportRecoverableErrorWithToken(new, Instance of 'Template<(Token) => Message>')
+                              listener: handleRecoverableError(Message[UnexpectedToken, Unexpected token 'new'., null, {lexeme: new}], new, new)
+                            parsePrimary(new, expression)
+                              parseLiteralListSetMapOrFunction(new, null)
+                                listener: beginTypeArguments(<)
+                                listener: handleIdentifier(List, typeReference)
+                                listener: beginTypeArguments(<)
+                                listener: handleIdentifier(int, typeReference)
+                                listener: handleNoTypeArguments(>)
+                                listener: handleType(int, null)
+                                listener: endTypeArguments(1, <, >)
+                                listener: handleType(List, null)
+                                listener: endTypeArguments(1, <, >)
+                                parseLiteralListSuffix(>, null)
+                                  rewriteSquareBrackets(>)
+                                    link([, ])
+                                    rewriter()
+                                  listener: handleLiteralList(0, [, null, ])
+                  listener: endFieldInitializer(=, ;)
+                listener: endClassFields(null, null, null, null, null, final, 1, final, ;)
+              listener: endMember()
+            notEofOrValue(}, final)
+            parseClassOrMixinOrExtensionMemberImpl(;, DeclarationKind.Class, F)
+              parseMetadataStar(;)
+                listener: beginMetadataStar(final)
+                listener: endMetadataStar(0)
+              listener: beginMember()
+              parseFields(;, null, null, null, null, null, final, final, Instance of 'SimpleTypeWith1Argument', foo3, DeclarationKind.Class, F, false)
+                listener: beginFields(;)
+                listener: handleIdentifier(List, typeReference)
+                listener: beginTypeArguments(<)
+                listener: handleIdentifier(Undefined, typeReference)
+                listener: handleNoTypeArguments(>)
+                listener: handleType(Undefined, null)
+                listener: endTypeArguments(1, <, >)
+                listener: handleType(List, null)
+                ensureIdentifierPotentiallyRecovered(>, fieldDeclaration, false)
+                  listener: handleIdentifier(foo3, fieldDeclaration)
+                parseFieldInitializerOpt(foo3, foo3, null, null, null, final, DeclarationKind.Class, F)
+                  listener: beginFieldInitializer(=)
+                  parseExpression(=)
+                    parsePrecedenceExpression(=, 1, true)
+                      parseUnaryExpression(=, true)
+                        parsePrimary(=, expression)
+                          parseNewExpression(=)
+                            reportRecoverableErrorWithToken(new, Instance of 'Template<(Token) => Message>')
+                              listener: handleRecoverableError(Message[UnexpectedToken, Unexpected token 'new'., null, {lexeme: new}], new, new)
+                            reportRecoverableErrorWithToken(List, Instance of 'Template<(Token) => Message>')
+                              listener: handleRecoverableError(Message[UnexpectedToken, Unexpected token 'List'., null, {lexeme: List}], List, List)
+                            parsePrimary(List, expression)
+                              listener: handleNoTypeArguments([])
+                              parseLiteralListSuffix(List, null)
+                                rewriteSquareBrackets(List)
+                                  link([, ])
+                                  rewriter()
+                                listener: handleLiteralList(0, [, null, ])
+                  listener: endFieldInitializer(=, ;)
+                listener: endClassFields(null, null, null, null, null, final, 1, final, ;)
+              listener: endMember()
+            notEofOrValue(}, final)
+            parseClassOrMixinOrExtensionMemberImpl(;, DeclarationKind.Class, F)
+              parseMetadataStar(;)
+                listener: beginMetadataStar(final)
+                listener: endMetadataStar(0)
+              listener: beginMember()
+              parseFields(;, null, null, null, null, null, final, final, Instance of 'SimpleTypeWith1Argument', foo4, DeclarationKind.Class, F, false)
+                listener: beginFields(;)
+                listener: handleIdentifier(List, typeReference)
+                listener: beginTypeArguments(<)
+                listener: handleIdentifier(Undefined, typeReference)
+                listener: handleNoTypeArguments(>)
+                listener: handleType(Undefined, null)
+                listener: endTypeArguments(1, <, >)
+                listener: handleType(List, null)
+                ensureIdentifierPotentiallyRecovered(>, fieldDeclaration, false)
+                  listener: handleIdentifier(foo4, fieldDeclaration)
+                parseFieldInitializerOpt(foo4, foo4, null, null, null, final, DeclarationKind.Class, F)
+                  listener: beginFieldInitializer(=)
+                  parseExpression(=)
+                    parsePrecedenceExpression(=, 1, true)
+                      parseUnaryExpression(=, true)
+                        parsePrimary(=, expression)
+                          parseNewExpression(=)
+                            listener: beginNewExpression(new)
+                            parseConstructorReference(new, Instance of 'ComplexTypeParamOrArgInfo')
+                              ensureIdentifier(new, constructorReference)
+                                listener: handleIdentifier(List, constructorReference)
+                              listener: beginConstructorReference(List)
+                              parseQualifiedRestOpt(List, constructorReferenceContinuation)
+                              listener: beginTypeArguments(<)
+                              listener: handleIdentifier(List, typeReference)
+                              listener: beginTypeArguments(<)
+                              listener: handleIdentifier(int, typeReference)
+                              listener: handleNoTypeArguments(>)
+                              listener: handleType(int, null)
+                              listener: endTypeArguments(1, <, >)
+                              listener: handleType(List, null)
+                              listener: endTypeArguments(1, <, >)
+                              listener: handleNoConstructorReferenceContinuationAfterTypeArguments(()
+                              listener: endConstructorReference(List, null, ()
+                            parseConstructorInvocationArguments(>)
+                              parseArgumentsRest(()
+                                listener: beginArguments(()
+                                listener: endArguments(0, (, ))
+                            listener: endNewExpression(new)
+                  listener: endFieldInitializer(=, ;)
+                listener: endClassFields(null, null, null, null, null, final, 1, final, ;)
+              listener: endMember()
+            notEofOrValue(}, final)
+            parseClassOrMixinOrExtensionMemberImpl(;, DeclarationKind.Class, F)
+              parseMetadataStar(;)
+                listener: beginMetadataStar(final)
+                listener: endMetadataStar(0)
+              listener: beginMember()
+              parseFields(;, null, null, null, null, null, final, final, Instance of 'SimpleTypeWith1Argument', foo5, DeclarationKind.Class, F, false)
+                listener: beginFields(;)
+                listener: handleIdentifier(List, typeReference)
+                listener: beginTypeArguments(<)
+                listener: handleIdentifier(Undefined, typeReference)
+                listener: handleNoTypeArguments(>)
+                listener: handleType(Undefined, null)
+                listener: endTypeArguments(1, <, >)
+                listener: handleType(List, null)
+                ensureIdentifierPotentiallyRecovered(>, fieldDeclaration, false)
+                  listener: handleIdentifier(foo5, fieldDeclaration)
+                parseFieldInitializerOpt(foo5, foo5, null, null, null, final, DeclarationKind.Class, F)
+                  listener: beginFieldInitializer(=)
+                  parseExpression(=)
+                    parsePrecedenceExpression(=, 1, true)
+                      parseUnaryExpression(=, true)
+                        parsePrimary(=, expression)
+                          parseNewExpression(=)
+                            listener: beginNewExpression(new)
+                            parseConstructorReference(new, Instance of 'NoTypeParamOrArg')
+                              ensureIdentifier(new, constructorReference)
+                                listener: handleIdentifier(List, constructorReference)
+                              listener: beginConstructorReference(List)
+                              parseQualifiedRestOpt(List, constructorReferenceContinuation)
+                              listener: handleNoTypeArguments(()
+                              listener: handleNoConstructorReferenceContinuationAfterTypeArguments(()
+                              listener: endConstructorReference(List, null, ()
+                            parseConstructorInvocationArguments(List)
+                              parseArgumentsRest(()
+                                listener: beginArguments(()
+                                listener: endArguments(0, (, ))
+                            listener: endNewExpression(new)
+                  listener: endFieldInitializer(=, ;)
+                listener: endClassFields(null, null, null, null, null, final, 1, final, ;)
+              listener: endMember()
+            notEofOrValue(}, final)
+            parseClassOrMixinOrExtensionMemberImpl(;, DeclarationKind.Class, F)
+              parseMetadataStar(;)
+                listener: beginMetadataStar(final)
+                listener: endMetadataStar(0)
+              listener: beginMember()
+              parseFields(;, null, null, null, null, null, final, final, Instance of 'SimpleTypeWith1Argument', foo6, DeclarationKind.Class, F, false)
+                listener: beginFields(;)
+                listener: handleIdentifier(List, typeReference)
+                listener: beginTypeArguments(<)
+                listener: handleIdentifier(Undefined, typeReference)
+                listener: handleNoTypeArguments(>)
+                listener: handleType(Undefined, null)
+                listener: endTypeArguments(1, <, >)
+                listener: handleType(List, null)
+                ensureIdentifierPotentiallyRecovered(>, fieldDeclaration, false)
+                  listener: handleIdentifier(foo6, fieldDeclaration)
+                parseFieldInitializerOpt(foo6, foo6, null, null, null, final, DeclarationKind.Class, F)
+                  listener: beginFieldInitializer(=)
+                  parseExpression(=)
+                    parsePrecedenceExpression(=, 1, true)
+                      parseUnaryExpression(=, true)
+                        parsePrimary(=, expression)
+                          parseNewExpression(=)
+                            reportRecoverableErrorWithToken(new, Instance of 'Template<(Token) => Message>')
+                              listener: handleRecoverableError(Message[UnexpectedToken, Unexpected token 'new'., null, {lexeme: new}], new, new)
+                            reportRecoverableErrorWithToken(List, Instance of 'Template<(Token) => Message>')
+                              listener: handleRecoverableError(Message[UnexpectedToken, Unexpected token 'List'., null, {lexeme: List}], List, List)
+                            parsePrimary(List, expression)
+                              parseLiteralListSetMapOrFunction(List, null)
+                                listener: beginTypeArguments(<)
+                                listener: handleIdentifier(List, typeReference)
+                                listener: beginTypeArguments(<)
+                                listener: handleIdentifier(int, typeReference)
+                                listener: handleNoTypeArguments(>)
+                                listener: handleType(int, null)
+                                listener: endTypeArguments(1, <, >)
+                                listener: handleType(List, null)
+                                listener: endTypeArguments(1, <, >)
+                                parseLiteralListSuffix(>, null)
+                                  parseExpression([)
+                                    parsePrecedenceExpression([, 1, true)
+                                      parseUnaryExpression([, true)
+                                        parsePrimary([, expression)
+                                          parseLiteralNull([)
+                                            listener: handleLiteralNull(null)
+                                  listener: handleLiteralList(1, [, null, ])
+                  listener: endFieldInitializer(=, ;)
+                listener: endClassFields(null, null, null, null, null, final, 1, final, ;)
+              listener: endMember()
+            notEofOrValue(}, final)
+            parseClassOrMixinOrExtensionMemberImpl(;, DeclarationKind.Class, F)
+              parseMetadataStar(;)
+                listener: beginMetadataStar(final)
+                listener: endMetadataStar(0)
+              listener: beginMember()
+              parseFields(;, null, null, null, null, null, final, final, Instance of 'SimpleTypeWith1Argument', foo7, DeclarationKind.Class, F, false)
+                listener: beginFields(;)
+                listener: handleIdentifier(List, typeReference)
+                listener: beginTypeArguments(<)
+                listener: handleIdentifier(Undefined, typeReference)
+                listener: handleNoTypeArguments(>)
+                listener: handleType(Undefined, null)
+                listener: endTypeArguments(1, <, >)
+                listener: handleType(List, null)
+                ensureIdentifierPotentiallyRecovered(>, fieldDeclaration, false)
+                  listener: handleIdentifier(foo7, fieldDeclaration)
+                parseFieldInitializerOpt(foo7, foo7, null, null, null, final, DeclarationKind.Class, F)
+                  listener: beginFieldInitializer(=)
+                  parseExpression(=)
+                    parsePrecedenceExpression(=, 1, true)
+                      parseUnaryExpression(=, true)
+                        parsePrimary(=, expression)
+                          parseNewExpression(=)
+                            reportRecoverableErrorWithToken(new, Instance of 'Template<(Token) => Message>')
+                              listener: handleRecoverableError(Message[UnexpectedToken, Unexpected token 'new'., null, {lexeme: new}], new, new)
+                            reportRecoverableErrorWithToken(List, Instance of 'Template<(Token) => Message>')
+                              listener: handleRecoverableError(Message[UnexpectedToken, Unexpected token 'List'., null, {lexeme: List}], List, List)
+                            parsePrimary(List, expression)
+                              listener: handleNoTypeArguments([)
+                              parseLiteralListSuffix(List, null)
+                                parseExpression([)
+                                  parsePrecedenceExpression([, 1, true)
+                                    parseUnaryExpression([, true)
+                                      parsePrimary([, expression)
+                                        parseLiteralNull([)
+                                          listener: handleLiteralNull(null)
+                                listener: handleLiteralList(1, [, null, ])
+                  listener: endFieldInitializer(=, ;)
+                listener: endClassFields(null, null, null, null, null, final, 1, final, ;)
+              listener: endMember()
+            notEofOrValue(}, final)
+            parseClassOrMixinOrExtensionMemberImpl(;, DeclarationKind.Class, F)
+              parseMetadataStar(;)
+                listener: beginMetadataStar(final)
+                listener: endMetadataStar(0)
+              listener: beginMember()
+              parseFields(;, null, null, null, null, null, final, final, Instance of 'SimpleTypeWith1Argument', foo8, DeclarationKind.Class, F, false)
+                listener: beginFields(;)
+                listener: handleIdentifier(List, typeReference)
+                listener: beginTypeArguments(<)
+                listener: handleIdentifier(Undefined, typeReference)
+                listener: handleNoTypeArguments(>)
+                listener: handleType(Undefined, null)
+                listener: endTypeArguments(1, <, >)
+                listener: handleType(List, null)
+                ensureIdentifierPotentiallyRecovered(>, fieldDeclaration, false)
+                  listener: handleIdentifier(foo8, fieldDeclaration)
+                parseFieldInitializerOpt(foo8, foo8, null, null, null, final, DeclarationKind.Class, F)
+                  listener: beginFieldInitializer(=)
+                  parseExpression(=)
+                    parsePrecedenceExpression(=, 1, true)
+                      parseUnaryExpression(=, true)
+                        parsePrimary(=, expression)
+                          parseNewExpression(=)
+                            reportRecoverableErrorWithToken(new, Instance of 'Template<(Token) => Message>')
+                              listener: handleRecoverableError(Message[UnexpectedToken, Unexpected token 'new'., null, {lexeme: new}], new, new)
+                            parsePrimary(new, expression)
+                              parseLiteralListSetMapOrFunction(new, null)
+                                listener: beginTypeArguments(<)
+                                listener: handleIdentifier(List, typeReference)
+                                listener: beginTypeArguments(<)
+                                listener: handleIdentifier(int, typeReference)
+                                listener: handleNoTypeArguments(>)
+                                listener: handleType(int, null)
+                                listener: endTypeArguments(1, <, >)
+                                listener: handleType(List, null)
+                                listener: endTypeArguments(1, <, >)
+                                parseLiteralListSuffix(>, null)
+                                  parseExpression([)
+                                    parsePrecedenceExpression([, 1, true)
+                                      parseUnaryExpression([, true)
+                                        parsePrimary([, expression)
+                                          parseLiteralNull([)
+                                            listener: handleLiteralNull(null)
+                                  listener: handleLiteralList(1, [, null, ])
+                  listener: endFieldInitializer(=, ;)
+                listener: endClassFields(null, null, null, null, null, final, 1, final, ;)
+              listener: endMember()
+            notEofOrValue(}, final)
+            parseClassOrMixinOrExtensionMemberImpl(;, DeclarationKind.Class, F)
+              parseMetadataStar(;)
+                listener: beginMetadataStar(final)
+                listener: endMetadataStar(0)
+              listener: beginMember()
+              parseFields(;, null, null, null, null, null, final, final, Instance of 'SimpleTypeWith1Argument', foo9, DeclarationKind.Class, F, false)
+                listener: beginFields(;)
+                listener: handleIdentifier(List, typeReference)
+                listener: beginTypeArguments(<)
+                listener: handleIdentifier(Undefined, typeReference)
+                listener: handleNoTypeArguments(>)
+                listener: handleType(Undefined, null)
+                listener: endTypeArguments(1, <, >)
+                listener: handleType(List, null)
+                ensureIdentifierPotentiallyRecovered(>, fieldDeclaration, false)
+                  listener: handleIdentifier(foo9, fieldDeclaration)
+                parseFieldInitializerOpt(foo9, foo9, null, null, null, final, DeclarationKind.Class, F)
+                  listener: beginFieldInitializer(=)
+                  parseExpression(=)
+                    parsePrecedenceExpression(=, 1, true)
+                      parseUnaryExpression(=, true)
+                        parsePrimary(=, expression)
+                          parseNewExpression(=)
+                            reportRecoverableErrorWithToken(new, Instance of 'Template<(Token) => Message>')
+                              listener: handleRecoverableError(Message[UnexpectedToken, Unexpected token 'new'., null, {lexeme: new}], new, new)
+                            parsePrimary(new, expression)
+                              listener: handleNoTypeArguments([)
+                              parseLiteralListSuffix(new, null)
+                                parseExpression([)
+                                  parsePrecedenceExpression([, 1, true)
+                                    parseUnaryExpression([, true)
+                                      parsePrimary([, expression)
+                                        parseLiteralNull([)
+                                          listener: handleLiteralNull(null)
+                                listener: handleLiteralList(1, [, null, ])
+                  listener: endFieldInitializer(=, ;)
+                listener: endClassFields(null, null, null, null, null, final, 1, final, ;)
+              listener: endMember()
+            notEofOrValue(}, })
+            listener: endClassOrMixinBody(DeclarationKind.Class, 9, {, })
+          listener: endClassDeclaration(class, })
+  listener: endTopLevelDeclaration()
+  reportAllErrorTokens(class)
+  listener: endCompilationUnit(1, )
diff --git a/pkg/front_end/parser_testcases/error_recovery/issue_45251_list_new.dart.parser.expect b/pkg/front_end/parser_testcases/error_recovery/issue_45251_list_new.dart.parser.expect
new file mode 100644
index 0000000..4d592a3
--- /dev/null
+++ b/pkg/front_end/parser_testcases/error_recovery/issue_45251_list_new.dart.parser.expect
@@ -0,0 +1,61 @@
+NOTICE: Stream was rewritten by parser!
+
+class F {
+
+final List<Undefined> foo1 = new List<List<int>>[];
+
+
+final List<Undefined> foo2 = new <List<int>>[];
+
+
+final List<Undefined> foo3 = new List[];
+
+
+final List<Undefined> foo4 = new List<List<int>>();
+
+
+final List<Undefined> foo5 = new List();
+
+
+final List<Undefined> foo6 = new List<List<int>>[null];
+
+
+
+final List<Undefined> foo7 = new List[null];
+
+
+final List<Undefined> foo8 = new <List<int>>[null];
+
+
+final List<Undefined> foo9 = new [null];
+}
+
+class[KeywordToken] F[StringToken] {[BeginToken]
+
+final[KeywordToken] List[StringToken]<[BeginToken]Undefined[StringToken]>[SimpleToken] foo1[StringToken] =[SimpleToken] new[KeywordToken] List[StringToken]<[BeginToken]List[StringToken]<[BeginToken]int[StringToken]>[SimpleToken]>[SimpleToken][[BeginToken]][SimpleToken];[SimpleToken]
+
+
+final[KeywordToken] List[StringToken]<[BeginToken]Undefined[StringToken]>[SimpleToken] foo2[StringToken] =[SimpleToken] new[KeywordToken] <[BeginToken]List[StringToken]<[BeginToken]int[StringToken]>[SimpleToken]>[SimpleToken][[BeginToken]][SimpleToken];[SimpleToken]
+
+
+final[KeywordToken] List[StringToken]<[BeginToken]Undefined[StringToken]>[SimpleToken] foo3[StringToken] =[SimpleToken] new[KeywordToken] List[StringToken][[BeginToken]][SimpleToken];[SimpleToken]
+
+
+final[KeywordToken] List[StringToken]<[BeginToken]Undefined[StringToken]>[SimpleToken] foo4[StringToken] =[SimpleToken] new[KeywordToken] List[StringToken]<[BeginToken]List[StringToken]<[BeginToken]int[StringToken]>[SimpleToken]>[SimpleToken]([BeginToken])[SimpleToken];[SimpleToken]
+
+
+final[KeywordToken] List[StringToken]<[BeginToken]Undefined[StringToken]>[SimpleToken] foo5[StringToken] =[SimpleToken] new[KeywordToken] List[StringToken]([BeginToken])[SimpleToken];[SimpleToken]
+
+
+final[KeywordToken] List[StringToken]<[BeginToken]Undefined[StringToken]>[SimpleToken] foo6[StringToken] =[SimpleToken] new[KeywordToken] List[StringToken]<[BeginToken]List[StringToken]<[BeginToken]int[StringToken]>[SimpleToken]>[SimpleToken][[BeginToken]null[KeywordToken]][SimpleToken];[SimpleToken]
+
+
+
+final[KeywordToken] List[StringToken]<[BeginToken]Undefined[StringToken]>[SimpleToken] foo7[StringToken] =[SimpleToken] new[KeywordToken] List[StringToken][[BeginToken]null[KeywordToken]][SimpleToken];[SimpleToken]
+
+
+final[KeywordToken] List[StringToken]<[BeginToken]Undefined[StringToken]>[SimpleToken] foo8[StringToken] =[SimpleToken] new[KeywordToken] <[BeginToken]List[StringToken]<[BeginToken]int[StringToken]>[SimpleToken]>[SimpleToken][[BeginToken]null[KeywordToken]][SimpleToken];[SimpleToken]
+
+
+final[KeywordToken] List[StringToken]<[BeginToken]Undefined[StringToken]>[SimpleToken] foo9[StringToken] =[SimpleToken] new[KeywordToken] [[BeginToken]null[KeywordToken]][SimpleToken];[SimpleToken]
+}[SimpleToken][SimpleToken]
diff --git a/pkg/front_end/parser_testcases/error_recovery/issue_45251_list_new.dart.scanner.expect b/pkg/front_end/parser_testcases/error_recovery/issue_45251_list_new.dart.scanner.expect
new file mode 100644
index 0000000..9905387
--- /dev/null
+++ b/pkg/front_end/parser_testcases/error_recovery/issue_45251_list_new.dart.scanner.expect
@@ -0,0 +1,59 @@
+class F {
+
+final List<Undefined> foo1 = new List<List<int>>[];
+
+
+final List<Undefined> foo2 = new <List<int>>[];
+
+
+final List<Undefined> foo3 = new List[];
+
+
+final List<Undefined> foo4 = new List<List<int>>();
+
+
+final List<Undefined> foo5 = new List();
+
+
+final List<Undefined> foo6 = new List<List<int>>[null];
+
+
+
+final List<Undefined> foo7 = new List[null];
+
+
+final List<Undefined> foo8 = new <List<int>>[null];
+
+
+final List<Undefined> foo9 = new [null];
+}
+
+class[KeywordToken] F[StringToken] {[BeginToken]
+
+final[KeywordToken] List[StringToken]<[BeginToken]Undefined[StringToken]>[SimpleToken] foo1[StringToken] =[SimpleToken] new[KeywordToken] List[StringToken]<[BeginToken]List[StringToken]<[BeginToken]int[StringToken]>>[SimpleToken][][SimpleToken];[SimpleToken]
+
+
+final[KeywordToken] List[StringToken]<[BeginToken]Undefined[StringToken]>[SimpleToken] foo2[StringToken] =[SimpleToken] new[KeywordToken] <[BeginToken]List[StringToken]<[BeginToken]int[StringToken]>>[SimpleToken][][SimpleToken];[SimpleToken]
+
+
+final[KeywordToken] List[StringToken]<[BeginToken]Undefined[StringToken]>[SimpleToken] foo3[StringToken] =[SimpleToken] new[KeywordToken] List[StringToken][][SimpleToken];[SimpleToken]
+
+
+final[KeywordToken] List[StringToken]<[BeginToken]Undefined[StringToken]>[SimpleToken] foo4[StringToken] =[SimpleToken] new[KeywordToken] List[StringToken]<[BeginToken]List[StringToken]<[BeginToken]int[StringToken]>>[SimpleToken]([BeginToken])[SimpleToken];[SimpleToken]
+
+
+final[KeywordToken] List[StringToken]<[BeginToken]Undefined[StringToken]>[SimpleToken] foo5[StringToken] =[SimpleToken] new[KeywordToken] List[StringToken]([BeginToken])[SimpleToken];[SimpleToken]
+
+
+final[KeywordToken] List[StringToken]<[BeginToken]Undefined[StringToken]>[SimpleToken] foo6[StringToken] =[SimpleToken] new[KeywordToken] List[StringToken]<[BeginToken]List[StringToken]<[BeginToken]int[StringToken]>>[SimpleToken][[BeginToken]null[KeywordToken]][SimpleToken];[SimpleToken]
+
+
+
+final[KeywordToken] List[StringToken]<[BeginToken]Undefined[StringToken]>[SimpleToken] foo7[StringToken] =[SimpleToken] new[KeywordToken] List[StringToken][[BeginToken]null[KeywordToken]][SimpleToken];[SimpleToken]
+
+
+final[KeywordToken] List[StringToken]<[BeginToken]Undefined[StringToken]>[SimpleToken] foo8[StringToken] =[SimpleToken] new[KeywordToken] <[BeginToken]List[StringToken]<[BeginToken]int[StringToken]>>[SimpleToken][[BeginToken]null[KeywordToken]][SimpleToken];[SimpleToken]
+
+
+final[KeywordToken] List[StringToken]<[BeginToken]Undefined[StringToken]>[SimpleToken] foo9[StringToken] =[SimpleToken] new[KeywordToken] [[BeginToken]null[KeywordToken]][SimpleToken];[SimpleToken]
+}[SimpleToken][SimpleToken]
diff --git a/pkg/front_end/parser_testcases/error_recovery/issue_45251_new.dart b/pkg/front_end/parser_testcases/error_recovery/issue_45251_new.dart
new file mode 100644
index 0000000..7ce5659
--- /dev/null
+++ b/pkg/front_end/parser_testcases/error_recovery/issue_45251_new.dart
@@ -0,0 +1,28 @@
+class F {
+  /* notice the braces at the end instead of parenthesis! */
+  final Map<String, Undefined> foo1 = new Map<String, List<int>>{};
+
+  // variation #1: new makes it bad.
+  final Map<String, Undefined> foo2 = new <String, List<int>>{};
+
+  // variation #2: Bad.
+  final Map<String, Undefined> foo3 = new Map{};
+
+  // variation #3: OK.
+  final Map<String, Undefined> foo4 = new Map<String, List<int>>();
+
+  // variation #4: OK.
+  final Map<String, Undefined> foo5 = new Map();
+
+  // variation #5: Bad.
+  final Map<String, Undefined> foo6 = new Map<String, List<int>>{"a": null};
+
+  // variation #6: Bad.
+  final Map<String, Undefined> foo7 = new Map{"a": null};
+
+  // variation #7: OK.
+  final Map<String, Undefined> foo8 = new <String, List<int>>{"a": null};
+
+  // variation #8: new makes it bad.
+  final Map<String, Undefined> foo9 = new {"a": null};
+}
\ No newline at end of file
diff --git a/pkg/front_end/parser_testcases/error_recovery/issue_45251_new.dart.expect b/pkg/front_end/parser_testcases/error_recovery/issue_45251_new.dart.expect
new file mode 100644
index 0000000..7854a53
--- /dev/null
+++ b/pkg/front_end/parser_testcases/error_recovery/issue_45251_new.dart.expect
@@ -0,0 +1,348 @@
+Problems reported:
+
+parser/error_recovery/issue_45251_new:3:39: Unexpected token 'new'.
+  final Map<String, Undefined> foo1 = new Map<String, List<int>>{};
+                                      ^^^
+
+parser/error_recovery/issue_45251_new:3:43: Unexpected token 'Map'.
+  final Map<String, Undefined> foo1 = new Map<String, List<int>>{};
+                                          ^^^
+
+parser/error_recovery/issue_45251_new:6:39: Unexpected token 'new'.
+  final Map<String, Undefined> foo2 = new <String, List<int>>{};
+                                      ^^^
+
+parser/error_recovery/issue_45251_new:9:39: Unexpected token 'new'.
+  final Map<String, Undefined> foo3 = new Map{};
+                                      ^^^
+
+parser/error_recovery/issue_45251_new:9:43: Unexpected token 'Map'.
+  final Map<String, Undefined> foo3 = new Map{};
+                                          ^^^
+
+parser/error_recovery/issue_45251_new:18:39: Unexpected token 'new'.
+  final Map<String, Undefined> foo6 = new Map<String, List<int>>{"a": null};
+                                      ^^^
+
+parser/error_recovery/issue_45251_new:18:43: Unexpected token 'Map'.
+  final Map<String, Undefined> foo6 = new Map<String, List<int>>{"a": null};
+                                          ^^^
+
+parser/error_recovery/issue_45251_new:21:39: Unexpected token 'new'.
+  final Map<String, Undefined> foo7 = new Map{"a": null};
+                                      ^^^
+
+parser/error_recovery/issue_45251_new:21:43: Unexpected token 'Map'.
+  final Map<String, Undefined> foo7 = new Map{"a": null};
+                                          ^^^
+
+parser/error_recovery/issue_45251_new:24:39: Unexpected token 'new'.
+  final Map<String, Undefined> foo8 = new <String, List<int>>{"a": null};
+                                      ^^^
+
+parser/error_recovery/issue_45251_new:27:39: Unexpected token 'new'.
+  final Map<String, Undefined> foo9 = new {"a": null};
+                                      ^^^
+
+beginCompilationUnit(class)
+  beginMetadataStar(class)
+  endMetadataStar(0)
+  beginClassOrNamedMixinApplicationPrelude(class)
+    handleIdentifier(F, classOrMixinDeclaration)
+    handleNoTypeVariables({)
+    beginClassDeclaration(class, null, F)
+      handleNoType(F)
+      handleClassExtends(null, 1)
+      handleClassNoWithClause()
+      handleClassOrMixinImplements(null, 0)
+      handleClassHeader(class, class, null)
+      beginClassOrMixinBody(DeclarationKind.Class, {)
+        beginMetadataStar(final)
+        endMetadataStar(0)
+        beginMember()
+          beginFields({)
+            handleIdentifier(Map, typeReference)
+            beginTypeArguments(<)
+              handleIdentifier(String, typeReference)
+              handleNoTypeArguments(,)
+              handleType(String, null)
+              handleIdentifier(Undefined, typeReference)
+              handleNoTypeArguments(>)
+              handleType(Undefined, null)
+            endTypeArguments(2, <, >)
+            handleType(Map, null)
+            handleIdentifier(foo1, fieldDeclaration)
+            beginFieldInitializer(=)
+              handleRecoverableError(Message[UnexpectedToken, Unexpected token 'new'., null, {lexeme: new}], new, new)
+              handleRecoverableError(Message[UnexpectedToken, Unexpected token 'Map'., null, {lexeme: Map}], Map, Map)
+              beginTypeArguments(<)
+                handleIdentifier(String, typeReference)
+                handleNoTypeArguments(,)
+                handleType(String, null)
+                handleIdentifier(List, typeReference)
+                beginTypeArguments(<)
+                  handleIdentifier(int, typeReference)
+                  handleNoTypeArguments(>)
+                  handleType(int, null)
+                endTypeArguments(1, <, >)
+                handleType(List, null)
+              endTypeArguments(2, <, >)
+              handleLiteralSetOrMap(0, {, null, }, false)
+            endFieldInitializer(=, ;)
+          endClassFields(null, null, null, null, null, final, 1, final, ;)
+        endMember()
+        beginMetadataStar(final)
+        endMetadataStar(0)
+        beginMember()
+          beginFields(;)
+            handleIdentifier(Map, typeReference)
+            beginTypeArguments(<)
+              handleIdentifier(String, typeReference)
+              handleNoTypeArguments(,)
+              handleType(String, null)
+              handleIdentifier(Undefined, typeReference)
+              handleNoTypeArguments(>)
+              handleType(Undefined, null)
+            endTypeArguments(2, <, >)
+            handleType(Map, null)
+            handleIdentifier(foo2, fieldDeclaration)
+            beginFieldInitializer(=)
+              handleRecoverableError(Message[UnexpectedToken, Unexpected token 'new'., null, {lexeme: new}], new, new)
+              beginTypeArguments(<)
+                handleIdentifier(String, typeReference)
+                handleNoTypeArguments(,)
+                handleType(String, null)
+                handleIdentifier(List, typeReference)
+                beginTypeArguments(<)
+                  handleIdentifier(int, typeReference)
+                  handleNoTypeArguments(>)
+                  handleType(int, null)
+                endTypeArguments(1, <, >)
+                handleType(List, null)
+              endTypeArguments(2, <, >)
+              handleLiteralSetOrMap(0, {, null, }, false)
+            endFieldInitializer(=, ;)
+          endClassFields(null, null, null, null, null, final, 1, final, ;)
+        endMember()
+        beginMetadataStar(final)
+        endMetadataStar(0)
+        beginMember()
+          beginFields(;)
+            handleIdentifier(Map, typeReference)
+            beginTypeArguments(<)
+              handleIdentifier(String, typeReference)
+              handleNoTypeArguments(,)
+              handleType(String, null)
+              handleIdentifier(Undefined, typeReference)
+              handleNoTypeArguments(>)
+              handleType(Undefined, null)
+            endTypeArguments(2, <, >)
+            handleType(Map, null)
+            handleIdentifier(foo3, fieldDeclaration)
+            beginFieldInitializer(=)
+              handleRecoverableError(Message[UnexpectedToken, Unexpected token 'new'., null, {lexeme: new}], new, new)
+              handleRecoverableError(Message[UnexpectedToken, Unexpected token 'Map'., null, {lexeme: Map}], Map, Map)
+              handleNoTypeArguments({)
+              handleLiteralSetOrMap(0, {, null, }, false)
+            endFieldInitializer(=, ;)
+          endClassFields(null, null, null, null, null, final, 1, final, ;)
+        endMember()
+        beginMetadataStar(final)
+        endMetadataStar(0)
+        beginMember()
+          beginFields(;)
+            handleIdentifier(Map, typeReference)
+            beginTypeArguments(<)
+              handleIdentifier(String, typeReference)
+              handleNoTypeArguments(,)
+              handleType(String, null)
+              handleIdentifier(Undefined, typeReference)
+              handleNoTypeArguments(>)
+              handleType(Undefined, null)
+            endTypeArguments(2, <, >)
+            handleType(Map, null)
+            handleIdentifier(foo4, fieldDeclaration)
+            beginFieldInitializer(=)
+              beginNewExpression(new)
+                handleIdentifier(Map, constructorReference)
+                beginConstructorReference(Map)
+                  beginTypeArguments(<)
+                    handleIdentifier(String, typeReference)
+                    handleNoTypeArguments(,)
+                    handleType(String, null)
+                    handleIdentifier(List, typeReference)
+                    beginTypeArguments(<)
+                      handleIdentifier(int, typeReference)
+                      handleNoTypeArguments(>)
+                      handleType(int, null)
+                    endTypeArguments(1, <, >)
+                    handleType(List, null)
+                  endTypeArguments(2, <, >)
+                  handleNoConstructorReferenceContinuationAfterTypeArguments(()
+                endConstructorReference(Map, null, ()
+                beginArguments(()
+                endArguments(0, (, ))
+              endNewExpression(new)
+            endFieldInitializer(=, ;)
+          endClassFields(null, null, null, null, null, final, 1, final, ;)
+        endMember()
+        beginMetadataStar(final)
+        endMetadataStar(0)
+        beginMember()
+          beginFields(;)
+            handleIdentifier(Map, typeReference)
+            beginTypeArguments(<)
+              handleIdentifier(String, typeReference)
+              handleNoTypeArguments(,)
+              handleType(String, null)
+              handleIdentifier(Undefined, typeReference)
+              handleNoTypeArguments(>)
+              handleType(Undefined, null)
+            endTypeArguments(2, <, >)
+            handleType(Map, null)
+            handleIdentifier(foo5, fieldDeclaration)
+            beginFieldInitializer(=)
+              beginNewExpression(new)
+                handleIdentifier(Map, constructorReference)
+                beginConstructorReference(Map)
+                  handleNoTypeArguments(()
+                  handleNoConstructorReferenceContinuationAfterTypeArguments(()
+                endConstructorReference(Map, null, ()
+                beginArguments(()
+                endArguments(0, (, ))
+              endNewExpression(new)
+            endFieldInitializer(=, ;)
+          endClassFields(null, null, null, null, null, final, 1, final, ;)
+        endMember()
+        beginMetadataStar(final)
+        endMetadataStar(0)
+        beginMember()
+          beginFields(;)
+            handleIdentifier(Map, typeReference)
+            beginTypeArguments(<)
+              handleIdentifier(String, typeReference)
+              handleNoTypeArguments(,)
+              handleType(String, null)
+              handleIdentifier(Undefined, typeReference)
+              handleNoTypeArguments(>)
+              handleType(Undefined, null)
+            endTypeArguments(2, <, >)
+            handleType(Map, null)
+            handleIdentifier(foo6, fieldDeclaration)
+            beginFieldInitializer(=)
+              handleRecoverableError(Message[UnexpectedToken, Unexpected token 'new'., null, {lexeme: new}], new, new)
+              handleRecoverableError(Message[UnexpectedToken, Unexpected token 'Map'., null, {lexeme: Map}], Map, Map)
+              beginTypeArguments(<)
+                handleIdentifier(String, typeReference)
+                handleNoTypeArguments(,)
+                handleType(String, null)
+                handleIdentifier(List, typeReference)
+                beginTypeArguments(<)
+                  handleIdentifier(int, typeReference)
+                  handleNoTypeArguments(>)
+                  handleType(int, null)
+                endTypeArguments(1, <, >)
+                handleType(List, null)
+              endTypeArguments(2, <, >)
+              beginLiteralString("a")
+              endLiteralString(0, :)
+              handleLiteralNull(null)
+              handleLiteralMapEntry(:, })
+              handleLiteralSetOrMap(1, {, null, }, false)
+            endFieldInitializer(=, ;)
+          endClassFields(null, null, null, null, null, final, 1, final, ;)
+        endMember()
+        beginMetadataStar(final)
+        endMetadataStar(0)
+        beginMember()
+          beginFields(;)
+            handleIdentifier(Map, typeReference)
+            beginTypeArguments(<)
+              handleIdentifier(String, typeReference)
+              handleNoTypeArguments(,)
+              handleType(String, null)
+              handleIdentifier(Undefined, typeReference)
+              handleNoTypeArguments(>)
+              handleType(Undefined, null)
+            endTypeArguments(2, <, >)
+            handleType(Map, null)
+            handleIdentifier(foo7, fieldDeclaration)
+            beginFieldInitializer(=)
+              handleRecoverableError(Message[UnexpectedToken, Unexpected token 'new'., null, {lexeme: new}], new, new)
+              handleRecoverableError(Message[UnexpectedToken, Unexpected token 'Map'., null, {lexeme: Map}], Map, Map)
+              handleNoTypeArguments({)
+              beginLiteralString("a")
+              endLiteralString(0, :)
+              handleLiteralNull(null)
+              handleLiteralMapEntry(:, })
+              handleLiteralSetOrMap(1, {, null, }, false)
+            endFieldInitializer(=, ;)
+          endClassFields(null, null, null, null, null, final, 1, final, ;)
+        endMember()
+        beginMetadataStar(final)
+        endMetadataStar(0)
+        beginMember()
+          beginFields(;)
+            handleIdentifier(Map, typeReference)
+            beginTypeArguments(<)
+              handleIdentifier(String, typeReference)
+              handleNoTypeArguments(,)
+              handleType(String, null)
+              handleIdentifier(Undefined, typeReference)
+              handleNoTypeArguments(>)
+              handleType(Undefined, null)
+            endTypeArguments(2, <, >)
+            handleType(Map, null)
+            handleIdentifier(foo8, fieldDeclaration)
+            beginFieldInitializer(=)
+              handleRecoverableError(Message[UnexpectedToken, Unexpected token 'new'., null, {lexeme: new}], new, new)
+              beginTypeArguments(<)
+                handleIdentifier(String, typeReference)
+                handleNoTypeArguments(,)
+                handleType(String, null)
+                handleIdentifier(List, typeReference)
+                beginTypeArguments(<)
+                  handleIdentifier(int, typeReference)
+                  handleNoTypeArguments(>)
+                  handleType(int, null)
+                endTypeArguments(1, <, >)
+                handleType(List, null)
+              endTypeArguments(2, <, >)
+              beginLiteralString("a")
+              endLiteralString(0, :)
+              handleLiteralNull(null)
+              handleLiteralMapEntry(:, })
+              handleLiteralSetOrMap(1, {, null, }, false)
+            endFieldInitializer(=, ;)
+          endClassFields(null, null, null, null, null, final, 1, final, ;)
+        endMember()
+        beginMetadataStar(final)
+        endMetadataStar(0)
+        beginMember()
+          beginFields(;)
+            handleIdentifier(Map, typeReference)
+            beginTypeArguments(<)
+              handleIdentifier(String, typeReference)
+              handleNoTypeArguments(,)
+              handleType(String, null)
+              handleIdentifier(Undefined, typeReference)
+              handleNoTypeArguments(>)
+              handleType(Undefined, null)
+            endTypeArguments(2, <, >)
+            handleType(Map, null)
+            handleIdentifier(foo9, fieldDeclaration)
+            beginFieldInitializer(=)
+              handleRecoverableError(Message[UnexpectedToken, Unexpected token 'new'., null, {lexeme: new}], new, new)
+              handleNoTypeArguments({)
+              beginLiteralString("a")
+              endLiteralString(0, :)
+              handleLiteralNull(null)
+              handleLiteralMapEntry(:, })
+              handleLiteralSetOrMap(1, {, null, }, false)
+            endFieldInitializer(=, ;)
+          endClassFields(null, null, null, null, null, final, 1, final, ;)
+        endMember()
+      endClassOrMixinBody(DeclarationKind.Class, 9, {, })
+    endClassDeclaration(class, })
+  endTopLevelDeclaration()
+endCompilationUnit(1, )
diff --git a/pkg/front_end/parser_testcases/error_recovery/issue_45251_new.dart.intertwined.expect b/pkg/front_end/parser_testcases/error_recovery/issue_45251_new.dart.intertwined.expect
new file mode 100644
index 0000000..b4849db
--- /dev/null
+++ b/pkg/front_end/parser_testcases/error_recovery/issue_45251_new.dart.intertwined.expect
@@ -0,0 +1,510 @@
+parseUnit(class)
+  skipErrorTokens(class)
+  listener: beginCompilationUnit(class)
+  syntheticPreviousToken(class)
+  parseTopLevelDeclarationImpl(, Instance of 'DirectiveContext')
+    parseMetadataStar()
+      listener: beginMetadataStar(class)
+      listener: endMetadataStar(0)
+    parseTopLevelKeywordDeclaration(, class, Instance of 'DirectiveContext')
+      parseClassDeclarationModifiers(, class)
+      parseClassOrNamedMixinApplication(null, class)
+        listener: beginClassOrNamedMixinApplicationPrelude(class)
+        ensureIdentifier(class, classOrMixinDeclaration)
+          listener: handleIdentifier(F, classOrMixinDeclaration)
+        listener: handleNoTypeVariables({)
+        listener: beginClassDeclaration(class, null, F)
+        parseClass(F, class, class, F)
+          parseClassHeaderOpt(F, class, class)
+            parseClassExtendsOpt(F)
+              listener: handleNoType(F)
+              listener: handleClassExtends(null, 1)
+            parseWithClauseOpt(F)
+              listener: handleClassNoWithClause()
+            parseClassOrMixinImplementsOpt(F)
+              listener: handleClassOrMixinImplements(null, 0)
+            listener: handleClassHeader(class, class, null)
+          parseClassOrMixinOrExtensionBody(F, DeclarationKind.Class, F)
+            listener: beginClassOrMixinBody(DeclarationKind.Class, {)
+            notEofOrValue(}, final)
+            parseClassOrMixinOrExtensionMemberImpl({, DeclarationKind.Class, F)
+              parseMetadataStar({)
+                listener: beginMetadataStar(final)
+                listener: endMetadataStar(0)
+              listener: beginMember()
+              parseFields({, null, null, null, null, null, final, final, Instance of 'ComplexTypeInfo', foo1, DeclarationKind.Class, F, false)
+                listener: beginFields({)
+                ensureIdentifier(final, typeReference)
+                  listener: handleIdentifier(Map, typeReference)
+                listener: beginTypeArguments(<)
+                listener: handleIdentifier(String, typeReference)
+                listener: handleNoTypeArguments(,)
+                listener: handleType(String, null)
+                listener: handleIdentifier(Undefined, typeReference)
+                listener: handleNoTypeArguments(>)
+                listener: handleType(Undefined, null)
+                listener: endTypeArguments(2, <, >)
+                listener: handleType(Map, null)
+                ensureIdentifierPotentiallyRecovered(>, fieldDeclaration, false)
+                  listener: handleIdentifier(foo1, fieldDeclaration)
+                parseFieldInitializerOpt(foo1, foo1, null, null, null, final, DeclarationKind.Class, F)
+                  listener: beginFieldInitializer(=)
+                  parseExpression(=)
+                    parsePrecedenceExpression(=, 1, true)
+                      parseUnaryExpression(=, true)
+                        parsePrimary(=, expression)
+                          parseNewExpression(=)
+                            reportRecoverableErrorWithToken(new, Instance of 'Template<(Token) => Message>')
+                              listener: handleRecoverableError(Message[UnexpectedToken, Unexpected token 'new'., null, {lexeme: new}], new, new)
+                            reportRecoverableErrorWithToken(Map, Instance of 'Template<(Token) => Message>')
+                              listener: handleRecoverableError(Message[UnexpectedToken, Unexpected token 'Map'., null, {lexeme: Map}], Map, Map)
+                            parsePrimary(Map, expression)
+                              parseLiteralListSetMapOrFunction(Map, null)
+                                listener: beginTypeArguments(<)
+                                listener: handleIdentifier(String, typeReference)
+                                listener: handleNoTypeArguments(,)
+                                listener: handleType(String, null)
+                                listener: handleIdentifier(List, typeReference)
+                                listener: beginTypeArguments(<)
+                                listener: handleIdentifier(int, typeReference)
+                                listener: handleNoTypeArguments(>)
+                                listener: handleType(int, null)
+                                listener: endTypeArguments(1, <, >)
+                                listener: handleType(List, null)
+                                listener: endTypeArguments(2, <, >)
+                                parseLiteralSetOrMapSuffix(>, null)
+                                  listener: handleLiteralSetOrMap(0, {, null, }, false)
+                  listener: endFieldInitializer(=, ;)
+                listener: endClassFields(null, null, null, null, null, final, 1, final, ;)
+              listener: endMember()
+            notEofOrValue(}, final)
+            parseClassOrMixinOrExtensionMemberImpl(;, DeclarationKind.Class, F)
+              parseMetadataStar(;)
+                listener: beginMetadataStar(final)
+                listener: endMetadataStar(0)
+              listener: beginMember()
+              parseFields(;, null, null, null, null, null, final, final, Instance of 'ComplexTypeInfo', foo2, DeclarationKind.Class, F, false)
+                listener: beginFields(;)
+                ensureIdentifier(final, typeReference)
+                  listener: handleIdentifier(Map, typeReference)
+                listener: beginTypeArguments(<)
+                listener: handleIdentifier(String, typeReference)
+                listener: handleNoTypeArguments(,)
+                listener: handleType(String, null)
+                listener: handleIdentifier(Undefined, typeReference)
+                listener: handleNoTypeArguments(>)
+                listener: handleType(Undefined, null)
+                listener: endTypeArguments(2, <, >)
+                listener: handleType(Map, null)
+                ensureIdentifierPotentiallyRecovered(>, fieldDeclaration, false)
+                  listener: handleIdentifier(foo2, fieldDeclaration)
+                parseFieldInitializerOpt(foo2, foo2, null, null, null, final, DeclarationKind.Class, F)
+                  listener: beginFieldInitializer(=)
+                  parseExpression(=)
+                    parsePrecedenceExpression(=, 1, true)
+                      parseUnaryExpression(=, true)
+                        parsePrimary(=, expression)
+                          parseNewExpression(=)
+                            reportRecoverableErrorWithToken(new, Instance of 'Template<(Token) => Message>')
+                              listener: handleRecoverableError(Message[UnexpectedToken, Unexpected token 'new'., null, {lexeme: new}], new, new)
+                            parsePrimary(new, expression)
+                              parseLiteralListSetMapOrFunction(new, null)
+                                listener: beginTypeArguments(<)
+                                listener: handleIdentifier(String, typeReference)
+                                listener: handleNoTypeArguments(,)
+                                listener: handleType(String, null)
+                                listener: handleIdentifier(List, typeReference)
+                                listener: beginTypeArguments(<)
+                                listener: handleIdentifier(int, typeReference)
+                                listener: handleNoTypeArguments(>)
+                                listener: handleType(int, null)
+                                listener: endTypeArguments(1, <, >)
+                                listener: handleType(List, null)
+                                listener: endTypeArguments(2, <, >)
+                                parseLiteralSetOrMapSuffix(>, null)
+                                  listener: handleLiteralSetOrMap(0, {, null, }, false)
+                  listener: endFieldInitializer(=, ;)
+                listener: endClassFields(null, null, null, null, null, final, 1, final, ;)
+              listener: endMember()
+            notEofOrValue(}, final)
+            parseClassOrMixinOrExtensionMemberImpl(;, DeclarationKind.Class, F)
+              parseMetadataStar(;)
+                listener: beginMetadataStar(final)
+                listener: endMetadataStar(0)
+              listener: beginMember()
+              parseFields(;, null, null, null, null, null, final, final, Instance of 'ComplexTypeInfo', foo3, DeclarationKind.Class, F, false)
+                listener: beginFields(;)
+                ensureIdentifier(final, typeReference)
+                  listener: handleIdentifier(Map, typeReference)
+                listener: beginTypeArguments(<)
+                listener: handleIdentifier(String, typeReference)
+                listener: handleNoTypeArguments(,)
+                listener: handleType(String, null)
+                listener: handleIdentifier(Undefined, typeReference)
+                listener: handleNoTypeArguments(>)
+                listener: handleType(Undefined, null)
+                listener: endTypeArguments(2, <, >)
+                listener: handleType(Map, null)
+                ensureIdentifierPotentiallyRecovered(>, fieldDeclaration, false)
+                  listener: handleIdentifier(foo3, fieldDeclaration)
+                parseFieldInitializerOpt(foo3, foo3, null, null, null, final, DeclarationKind.Class, F)
+                  listener: beginFieldInitializer(=)
+                  parseExpression(=)
+                    parsePrecedenceExpression(=, 1, true)
+                      parseUnaryExpression(=, true)
+                        parsePrimary(=, expression)
+                          parseNewExpression(=)
+                            reportRecoverableErrorWithToken(new, Instance of 'Template<(Token) => Message>')
+                              listener: handleRecoverableError(Message[UnexpectedToken, Unexpected token 'new'., null, {lexeme: new}], new, new)
+                            reportRecoverableErrorWithToken(Map, Instance of 'Template<(Token) => Message>')
+                              listener: handleRecoverableError(Message[UnexpectedToken, Unexpected token 'Map'., null, {lexeme: Map}], Map, Map)
+                            parsePrimary(Map, expression)
+                              listener: handleNoTypeArguments({)
+                              parseLiteralSetOrMapSuffix(Map, null)
+                                listener: handleLiteralSetOrMap(0, {, null, }, false)
+                  listener: endFieldInitializer(=, ;)
+                listener: endClassFields(null, null, null, null, null, final, 1, final, ;)
+              listener: endMember()
+            notEofOrValue(}, final)
+            parseClassOrMixinOrExtensionMemberImpl(;, DeclarationKind.Class, F)
+              parseMetadataStar(;)
+                listener: beginMetadataStar(final)
+                listener: endMetadataStar(0)
+              listener: beginMember()
+              parseFields(;, null, null, null, null, null, final, final, Instance of 'ComplexTypeInfo', foo4, DeclarationKind.Class, F, false)
+                listener: beginFields(;)
+                ensureIdentifier(final, typeReference)
+                  listener: handleIdentifier(Map, typeReference)
+                listener: beginTypeArguments(<)
+                listener: handleIdentifier(String, typeReference)
+                listener: handleNoTypeArguments(,)
+                listener: handleType(String, null)
+                listener: handleIdentifier(Undefined, typeReference)
+                listener: handleNoTypeArguments(>)
+                listener: handleType(Undefined, null)
+                listener: endTypeArguments(2, <, >)
+                listener: handleType(Map, null)
+                ensureIdentifierPotentiallyRecovered(>, fieldDeclaration, false)
+                  listener: handleIdentifier(foo4, fieldDeclaration)
+                parseFieldInitializerOpt(foo4, foo4, null, null, null, final, DeclarationKind.Class, F)
+                  listener: beginFieldInitializer(=)
+                  parseExpression(=)
+                    parsePrecedenceExpression(=, 1, true)
+                      parseUnaryExpression(=, true)
+                        parsePrimary(=, expression)
+                          parseNewExpression(=)
+                            listener: beginNewExpression(new)
+                            parseConstructorReference(new, Instance of 'ComplexTypeParamOrArgInfo')
+                              ensureIdentifier(new, constructorReference)
+                                listener: handleIdentifier(Map, constructorReference)
+                              listener: beginConstructorReference(Map)
+                              parseQualifiedRestOpt(Map, constructorReferenceContinuation)
+                              listener: beginTypeArguments(<)
+                              listener: handleIdentifier(String, typeReference)
+                              listener: handleNoTypeArguments(,)
+                              listener: handleType(String, null)
+                              listener: handleIdentifier(List, typeReference)
+                              listener: beginTypeArguments(<)
+                              listener: handleIdentifier(int, typeReference)
+                              listener: handleNoTypeArguments(>)
+                              listener: handleType(int, null)
+                              listener: endTypeArguments(1, <, >)
+                              listener: handleType(List, null)
+                              listener: endTypeArguments(2, <, >)
+                              listener: handleNoConstructorReferenceContinuationAfterTypeArguments(()
+                              listener: endConstructorReference(Map, null, ()
+                            parseConstructorInvocationArguments(>)
+                              parseArgumentsRest(()
+                                listener: beginArguments(()
+                                listener: endArguments(0, (, ))
+                            listener: endNewExpression(new)
+                  listener: endFieldInitializer(=, ;)
+                listener: endClassFields(null, null, null, null, null, final, 1, final, ;)
+              listener: endMember()
+            notEofOrValue(}, final)
+            parseClassOrMixinOrExtensionMemberImpl(;, DeclarationKind.Class, F)
+              parseMetadataStar(;)
+                listener: beginMetadataStar(final)
+                listener: endMetadataStar(0)
+              listener: beginMember()
+              parseFields(;, null, null, null, null, null, final, final, Instance of 'ComplexTypeInfo', foo5, DeclarationKind.Class, F, false)
+                listener: beginFields(;)
+                ensureIdentifier(final, typeReference)
+                  listener: handleIdentifier(Map, typeReference)
+                listener: beginTypeArguments(<)
+                listener: handleIdentifier(String, typeReference)
+                listener: handleNoTypeArguments(,)
+                listener: handleType(String, null)
+                listener: handleIdentifier(Undefined, typeReference)
+                listener: handleNoTypeArguments(>)
+                listener: handleType(Undefined, null)
+                listener: endTypeArguments(2, <, >)
+                listener: handleType(Map, null)
+                ensureIdentifierPotentiallyRecovered(>, fieldDeclaration, false)
+                  listener: handleIdentifier(foo5, fieldDeclaration)
+                parseFieldInitializerOpt(foo5, foo5, null, null, null, final, DeclarationKind.Class, F)
+                  listener: beginFieldInitializer(=)
+                  parseExpression(=)
+                    parsePrecedenceExpression(=, 1, true)
+                      parseUnaryExpression(=, true)
+                        parsePrimary(=, expression)
+                          parseNewExpression(=)
+                            listener: beginNewExpression(new)
+                            parseConstructorReference(new, Instance of 'NoTypeParamOrArg')
+                              ensureIdentifier(new, constructorReference)
+                                listener: handleIdentifier(Map, constructorReference)
+                              listener: beginConstructorReference(Map)
+                              parseQualifiedRestOpt(Map, constructorReferenceContinuation)
+                              listener: handleNoTypeArguments(()
+                              listener: handleNoConstructorReferenceContinuationAfterTypeArguments(()
+                              listener: endConstructorReference(Map, null, ()
+                            parseConstructorInvocationArguments(Map)
+                              parseArgumentsRest(()
+                                listener: beginArguments(()
+                                listener: endArguments(0, (, ))
+                            listener: endNewExpression(new)
+                  listener: endFieldInitializer(=, ;)
+                listener: endClassFields(null, null, null, null, null, final, 1, final, ;)
+              listener: endMember()
+            notEofOrValue(}, final)
+            parseClassOrMixinOrExtensionMemberImpl(;, DeclarationKind.Class, F)
+              parseMetadataStar(;)
+                listener: beginMetadataStar(final)
+                listener: endMetadataStar(0)
+              listener: beginMember()
+              parseFields(;, null, null, null, null, null, final, final, Instance of 'ComplexTypeInfo', foo6, DeclarationKind.Class, F, false)
+                listener: beginFields(;)
+                ensureIdentifier(final, typeReference)
+                  listener: handleIdentifier(Map, typeReference)
+                listener: beginTypeArguments(<)
+                listener: handleIdentifier(String, typeReference)
+                listener: handleNoTypeArguments(,)
+                listener: handleType(String, null)
+                listener: handleIdentifier(Undefined, typeReference)
+                listener: handleNoTypeArguments(>)
+                listener: handleType(Undefined, null)
+                listener: endTypeArguments(2, <, >)
+                listener: handleType(Map, null)
+                ensureIdentifierPotentiallyRecovered(>, fieldDeclaration, false)
+                  listener: handleIdentifier(foo6, fieldDeclaration)
+                parseFieldInitializerOpt(foo6, foo6, null, null, null, final, DeclarationKind.Class, F)
+                  listener: beginFieldInitializer(=)
+                  parseExpression(=)
+                    parsePrecedenceExpression(=, 1, true)
+                      parseUnaryExpression(=, true)
+                        parsePrimary(=, expression)
+                          parseNewExpression(=)
+                            reportRecoverableErrorWithToken(new, Instance of 'Template<(Token) => Message>')
+                              listener: handleRecoverableError(Message[UnexpectedToken, Unexpected token 'new'., null, {lexeme: new}], new, new)
+                            reportRecoverableErrorWithToken(Map, Instance of 'Template<(Token) => Message>')
+                              listener: handleRecoverableError(Message[UnexpectedToken, Unexpected token 'Map'., null, {lexeme: Map}], Map, Map)
+                            parsePrimary(Map, expression)
+                              parseLiteralListSetMapOrFunction(Map, null)
+                                listener: beginTypeArguments(<)
+                                listener: handleIdentifier(String, typeReference)
+                                listener: handleNoTypeArguments(,)
+                                listener: handleType(String, null)
+                                listener: handleIdentifier(List, typeReference)
+                                listener: beginTypeArguments(<)
+                                listener: handleIdentifier(int, typeReference)
+                                listener: handleNoTypeArguments(>)
+                                listener: handleType(int, null)
+                                listener: endTypeArguments(1, <, >)
+                                listener: handleType(List, null)
+                                listener: endTypeArguments(2, <, >)
+                                parseLiteralSetOrMapSuffix(>, null)
+                                  parseExpression({)
+                                    parsePrecedenceExpression({, 1, true)
+                                      parseUnaryExpression({, true)
+                                        parsePrimary({, expression)
+                                          parseLiteralString({)
+                                            parseSingleLiteralString({)
+                                              listener: beginLiteralString("a")
+                                              listener: endLiteralString(0, :)
+                                  parseExpression(:)
+                                    parsePrecedenceExpression(:, 1, true)
+                                      parseUnaryExpression(:, true)
+                                        parsePrimary(:, expression)
+                                          parseLiteralNull(:)
+                                            listener: handleLiteralNull(null)
+                                  listener: handleLiteralMapEntry(:, })
+                                  listener: handleLiteralSetOrMap(1, {, null, }, false)
+                  listener: endFieldInitializer(=, ;)
+                listener: endClassFields(null, null, null, null, null, final, 1, final, ;)
+              listener: endMember()
+            notEofOrValue(}, final)
+            parseClassOrMixinOrExtensionMemberImpl(;, DeclarationKind.Class, F)
+              parseMetadataStar(;)
+                listener: beginMetadataStar(final)
+                listener: endMetadataStar(0)
+              listener: beginMember()
+              parseFields(;, null, null, null, null, null, final, final, Instance of 'ComplexTypeInfo', foo7, DeclarationKind.Class, F, false)
+                listener: beginFields(;)
+                ensureIdentifier(final, typeReference)
+                  listener: handleIdentifier(Map, typeReference)
+                listener: beginTypeArguments(<)
+                listener: handleIdentifier(String, typeReference)
+                listener: handleNoTypeArguments(,)
+                listener: handleType(String, null)
+                listener: handleIdentifier(Undefined, typeReference)
+                listener: handleNoTypeArguments(>)
+                listener: handleType(Undefined, null)
+                listener: endTypeArguments(2, <, >)
+                listener: handleType(Map, null)
+                ensureIdentifierPotentiallyRecovered(>, fieldDeclaration, false)
+                  listener: handleIdentifier(foo7, fieldDeclaration)
+                parseFieldInitializerOpt(foo7, foo7, null, null, null, final, DeclarationKind.Class, F)
+                  listener: beginFieldInitializer(=)
+                  parseExpression(=)
+                    parsePrecedenceExpression(=, 1, true)
+                      parseUnaryExpression(=, true)
+                        parsePrimary(=, expression)
+                          parseNewExpression(=)
+                            reportRecoverableErrorWithToken(new, Instance of 'Template<(Token) => Message>')
+                              listener: handleRecoverableError(Message[UnexpectedToken, Unexpected token 'new'., null, {lexeme: new}], new, new)
+                            reportRecoverableErrorWithToken(Map, Instance of 'Template<(Token) => Message>')
+                              listener: handleRecoverableError(Message[UnexpectedToken, Unexpected token 'Map'., null, {lexeme: Map}], Map, Map)
+                            parsePrimary(Map, expression)
+                              listener: handleNoTypeArguments({)
+                              parseLiteralSetOrMapSuffix(Map, null)
+                                parseExpression({)
+                                  parsePrecedenceExpression({, 1, true)
+                                    parseUnaryExpression({, true)
+                                      parsePrimary({, expression)
+                                        parseLiteralString({)
+                                          parseSingleLiteralString({)
+                                            listener: beginLiteralString("a")
+                                            listener: endLiteralString(0, :)
+                                parseExpression(:)
+                                  parsePrecedenceExpression(:, 1, true)
+                                    parseUnaryExpression(:, true)
+                                      parsePrimary(:, expression)
+                                        parseLiteralNull(:)
+                                          listener: handleLiteralNull(null)
+                                listener: handleLiteralMapEntry(:, })
+                                listener: handleLiteralSetOrMap(1, {, null, }, false)
+                  listener: endFieldInitializer(=, ;)
+                listener: endClassFields(null, null, null, null, null, final, 1, final, ;)
+              listener: endMember()
+            notEofOrValue(}, final)
+            parseClassOrMixinOrExtensionMemberImpl(;, DeclarationKind.Class, F)
+              parseMetadataStar(;)
+                listener: beginMetadataStar(final)
+                listener: endMetadataStar(0)
+              listener: beginMember()
+              parseFields(;, null, null, null, null, null, final, final, Instance of 'ComplexTypeInfo', foo8, DeclarationKind.Class, F, false)
+                listener: beginFields(;)
+                ensureIdentifier(final, typeReference)
+                  listener: handleIdentifier(Map, typeReference)
+                listener: beginTypeArguments(<)
+                listener: handleIdentifier(String, typeReference)
+                listener: handleNoTypeArguments(,)
+                listener: handleType(String, null)
+                listener: handleIdentifier(Undefined, typeReference)
+                listener: handleNoTypeArguments(>)
+                listener: handleType(Undefined, null)
+                listener: endTypeArguments(2, <, >)
+                listener: handleType(Map, null)
+                ensureIdentifierPotentiallyRecovered(>, fieldDeclaration, false)
+                  listener: handleIdentifier(foo8, fieldDeclaration)
+                parseFieldInitializerOpt(foo8, foo8, null, null, null, final, DeclarationKind.Class, F)
+                  listener: beginFieldInitializer(=)
+                  parseExpression(=)
+                    parsePrecedenceExpression(=, 1, true)
+                      parseUnaryExpression(=, true)
+                        parsePrimary(=, expression)
+                          parseNewExpression(=)
+                            reportRecoverableErrorWithToken(new, Instance of 'Template<(Token) => Message>')
+                              listener: handleRecoverableError(Message[UnexpectedToken, Unexpected token 'new'., null, {lexeme: new}], new, new)
+                            parsePrimary(new, expression)
+                              parseLiteralListSetMapOrFunction(new, null)
+                                listener: beginTypeArguments(<)
+                                listener: handleIdentifier(String, typeReference)
+                                listener: handleNoTypeArguments(,)
+                                listener: handleType(String, null)
+                                listener: handleIdentifier(List, typeReference)
+                                listener: beginTypeArguments(<)
+                                listener: handleIdentifier(int, typeReference)
+                                listener: handleNoTypeArguments(>)
+                                listener: handleType(int, null)
+                                listener: endTypeArguments(1, <, >)
+                                listener: handleType(List, null)
+                                listener: endTypeArguments(2, <, >)
+                                parseLiteralSetOrMapSuffix(>, null)
+                                  parseExpression({)
+                                    parsePrecedenceExpression({, 1, true)
+                                      parseUnaryExpression({, true)
+                                        parsePrimary({, expression)
+                                          parseLiteralString({)
+                                            parseSingleLiteralString({)
+                                              listener: beginLiteralString("a")
+                                              listener: endLiteralString(0, :)
+                                  parseExpression(:)
+                                    parsePrecedenceExpression(:, 1, true)
+                                      parseUnaryExpression(:, true)
+                                        parsePrimary(:, expression)
+                                          parseLiteralNull(:)
+                                            listener: handleLiteralNull(null)
+                                  listener: handleLiteralMapEntry(:, })
+                                  listener: handleLiteralSetOrMap(1, {, null, }, false)
+                  listener: endFieldInitializer(=, ;)
+                listener: endClassFields(null, null, null, null, null, final, 1, final, ;)
+              listener: endMember()
+            notEofOrValue(}, final)
+            parseClassOrMixinOrExtensionMemberImpl(;, DeclarationKind.Class, F)
+              parseMetadataStar(;)
+                listener: beginMetadataStar(final)
+                listener: endMetadataStar(0)
+              listener: beginMember()
+              parseFields(;, null, null, null, null, null, final, final, Instance of 'ComplexTypeInfo', foo9, DeclarationKind.Class, F, false)
+                listener: beginFields(;)
+                ensureIdentifier(final, typeReference)
+                  listener: handleIdentifier(Map, typeReference)
+                listener: beginTypeArguments(<)
+                listener: handleIdentifier(String, typeReference)
+                listener: handleNoTypeArguments(,)
+                listener: handleType(String, null)
+                listener: handleIdentifier(Undefined, typeReference)
+                listener: handleNoTypeArguments(>)
+                listener: handleType(Undefined, null)
+                listener: endTypeArguments(2, <, >)
+                listener: handleType(Map, null)
+                ensureIdentifierPotentiallyRecovered(>, fieldDeclaration, false)
+                  listener: handleIdentifier(foo9, fieldDeclaration)
+                parseFieldInitializerOpt(foo9, foo9, null, null, null, final, DeclarationKind.Class, F)
+                  listener: beginFieldInitializer(=)
+                  parseExpression(=)
+                    parsePrecedenceExpression(=, 1, true)
+                      parseUnaryExpression(=, true)
+                        parsePrimary(=, expression)
+                          parseNewExpression(=)
+                            reportRecoverableErrorWithToken(new, Instance of 'Template<(Token) => Message>')
+                              listener: handleRecoverableError(Message[UnexpectedToken, Unexpected token 'new'., null, {lexeme: new}], new, new)
+                            parsePrimary(new, expression)
+                              listener: handleNoTypeArguments({)
+                              parseLiteralSetOrMapSuffix(new, null)
+                                parseExpression({)
+                                  parsePrecedenceExpression({, 1, true)
+                                    parseUnaryExpression({, true)
+                                      parsePrimary({, expression)
+                                        parseLiteralString({)
+                                          parseSingleLiteralString({)
+                                            listener: beginLiteralString("a")
+                                            listener: endLiteralString(0, :)
+                                parseExpression(:)
+                                  parsePrecedenceExpression(:, 1, true)
+                                    parseUnaryExpression(:, true)
+                                      parsePrimary(:, expression)
+                                        parseLiteralNull(:)
+                                          listener: handleLiteralNull(null)
+                                listener: handleLiteralMapEntry(:, })
+                                listener: handleLiteralSetOrMap(1, {, null, }, false)
+                  listener: endFieldInitializer(=, ;)
+                listener: endClassFields(null, null, null, null, null, final, 1, final, ;)
+              listener: endMember()
+            notEofOrValue(}, })
+            listener: endClassOrMixinBody(DeclarationKind.Class, 9, {, })
+          listener: endClassDeclaration(class, })
+  listener: endTopLevelDeclaration()
+  reportAllErrorTokens(class)
+  listener: endCompilationUnit(1, )
diff --git a/pkg/front_end/parser_testcases/error_recovery/issue_45251_new.dart.parser.expect b/pkg/front_end/parser_testcases/error_recovery/issue_45251_new.dart.parser.expect
new file mode 100644
index 0000000..298d0ec
--- /dev/null
+++ b/pkg/front_end/parser_testcases/error_recovery/issue_45251_new.dart.parser.expect
@@ -0,0 +1,59 @@
+NOTICE: Stream was rewritten by parser!
+
+class F {
+
+final Map<String, Undefined> foo1 = new Map<String, List<int>>{};
+
+
+final Map<String, Undefined> foo2 = new <String, List<int>>{};
+
+
+final Map<String, Undefined> foo3 = new Map{};
+
+
+final Map<String, Undefined> foo4 = new Map<String, List<int>>();
+
+
+final Map<String, Undefined> foo5 = new Map();
+
+
+final Map<String, Undefined> foo6 = new Map<String, List<int>>{"a": null};
+
+
+final Map<String, Undefined> foo7 = new Map{"a": null};
+
+
+final Map<String, Undefined> foo8 = new <String, List<int>>{"a": null};
+
+
+final Map<String, Undefined> foo9 = new {"a": null};
+}
+
+class[KeywordToken] F[StringToken] {[BeginToken]
+
+final[KeywordToken] Map[StringToken]<[BeginToken]String[StringToken],[SimpleToken] Undefined[StringToken]>[SimpleToken] foo1[StringToken] =[SimpleToken] new[KeywordToken] Map[StringToken]<[BeginToken]String[StringToken],[SimpleToken] List[StringToken]<[BeginToken]int[StringToken]>[SimpleToken]>[SimpleToken]{[BeginToken]}[SimpleToken];[SimpleToken]
+
+
+final[KeywordToken] Map[StringToken]<[BeginToken]String[StringToken],[SimpleToken] Undefined[StringToken]>[SimpleToken] foo2[StringToken] =[SimpleToken] new[KeywordToken] <[BeginToken]String[StringToken],[SimpleToken] List[StringToken]<[BeginToken]int[StringToken]>[SimpleToken]>[SimpleToken]{[BeginToken]}[SimpleToken];[SimpleToken]
+
+
+final[KeywordToken] Map[StringToken]<[BeginToken]String[StringToken],[SimpleToken] Undefined[StringToken]>[SimpleToken] foo3[StringToken] =[SimpleToken] new[KeywordToken] Map[StringToken]{[BeginToken]}[SimpleToken];[SimpleToken]
+
+
+final[KeywordToken] Map[StringToken]<[BeginToken]String[StringToken],[SimpleToken] Undefined[StringToken]>[SimpleToken] foo4[StringToken] =[SimpleToken] new[KeywordToken] Map[StringToken]<[BeginToken]String[StringToken],[SimpleToken] List[StringToken]<[BeginToken]int[StringToken]>[SimpleToken]>[SimpleToken]([BeginToken])[SimpleToken];[SimpleToken]
+
+
+final[KeywordToken] Map[StringToken]<[BeginToken]String[StringToken],[SimpleToken] Undefined[StringToken]>[SimpleToken] foo5[StringToken] =[SimpleToken] new[KeywordToken] Map[StringToken]([BeginToken])[SimpleToken];[SimpleToken]
+
+
+final[KeywordToken] Map[StringToken]<[BeginToken]String[StringToken],[SimpleToken] Undefined[StringToken]>[SimpleToken] foo6[StringToken] =[SimpleToken] new[KeywordToken] Map[StringToken]<[BeginToken]String[StringToken],[SimpleToken] List[StringToken]<[BeginToken]int[StringToken]>[SimpleToken]>[SimpleToken]{[BeginToken]"a"[StringToken]:[SimpleToken] null[KeywordToken]}[SimpleToken];[SimpleToken]
+
+
+final[KeywordToken] Map[StringToken]<[BeginToken]String[StringToken],[SimpleToken] Undefined[StringToken]>[SimpleToken] foo7[StringToken] =[SimpleToken] new[KeywordToken] Map[StringToken]{[BeginToken]"a"[StringToken]:[SimpleToken] null[KeywordToken]}[SimpleToken];[SimpleToken]
+
+
+final[KeywordToken] Map[StringToken]<[BeginToken]String[StringToken],[SimpleToken] Undefined[StringToken]>[SimpleToken] foo8[StringToken] =[SimpleToken] new[KeywordToken] <[BeginToken]String[StringToken],[SimpleToken] List[StringToken]<[BeginToken]int[StringToken]>[SimpleToken]>[SimpleToken]{[BeginToken]"a"[StringToken]:[SimpleToken] null[KeywordToken]}[SimpleToken];[SimpleToken]
+
+
+final[KeywordToken] Map[StringToken]<[BeginToken]String[StringToken],[SimpleToken] Undefined[StringToken]>[SimpleToken] foo9[StringToken] =[SimpleToken] new[KeywordToken] {[BeginToken]"a"[StringToken]:[SimpleToken] null[KeywordToken]}[SimpleToken];[SimpleToken]
+}[SimpleToken][SimpleToken]
diff --git a/pkg/front_end/parser_testcases/error_recovery/issue_45251_new.dart.scanner.expect b/pkg/front_end/parser_testcases/error_recovery/issue_45251_new.dart.scanner.expect
new file mode 100644
index 0000000..f04fbe0
--- /dev/null
+++ b/pkg/front_end/parser_testcases/error_recovery/issue_45251_new.dart.scanner.expect
@@ -0,0 +1,57 @@
+class F {
+
+final Map<String, Undefined> foo1 = new Map<String, List<int>>{};
+
+
+final Map<String, Undefined> foo2 = new <String, List<int>>{};
+
+
+final Map<String, Undefined> foo3 = new Map{};
+
+
+final Map<String, Undefined> foo4 = new Map<String, List<int>>();
+
+
+final Map<String, Undefined> foo5 = new Map();
+
+
+final Map<String, Undefined> foo6 = new Map<String, List<int>>{"a": null};
+
+
+final Map<String, Undefined> foo7 = new Map{"a": null};
+
+
+final Map<String, Undefined> foo8 = new <String, List<int>>{"a": null};
+
+
+final Map<String, Undefined> foo9 = new {"a": null};
+}
+
+class[KeywordToken] F[StringToken] {[BeginToken]
+
+final[KeywordToken] Map[StringToken]<[BeginToken]String[StringToken],[SimpleToken] Undefined[StringToken]>[SimpleToken] foo1[StringToken] =[SimpleToken] new[KeywordToken] Map[StringToken]<[BeginToken]String[StringToken],[SimpleToken] List[StringToken]<[BeginToken]int[StringToken]>>[SimpleToken]{[BeginToken]}[SimpleToken];[SimpleToken]
+
+
+final[KeywordToken] Map[StringToken]<[BeginToken]String[StringToken],[SimpleToken] Undefined[StringToken]>[SimpleToken] foo2[StringToken] =[SimpleToken] new[KeywordToken] <[BeginToken]String[StringToken],[SimpleToken] List[StringToken]<[BeginToken]int[StringToken]>>[SimpleToken]{[BeginToken]}[SimpleToken];[SimpleToken]
+
+
+final[KeywordToken] Map[StringToken]<[BeginToken]String[StringToken],[SimpleToken] Undefined[StringToken]>[SimpleToken] foo3[StringToken] =[SimpleToken] new[KeywordToken] Map[StringToken]{[BeginToken]}[SimpleToken];[SimpleToken]
+
+
+final[KeywordToken] Map[StringToken]<[BeginToken]String[StringToken],[SimpleToken] Undefined[StringToken]>[SimpleToken] foo4[StringToken] =[SimpleToken] new[KeywordToken] Map[StringToken]<[BeginToken]String[StringToken],[SimpleToken] List[StringToken]<[BeginToken]int[StringToken]>>[SimpleToken]([BeginToken])[SimpleToken];[SimpleToken]
+
+
+final[KeywordToken] Map[StringToken]<[BeginToken]String[StringToken],[SimpleToken] Undefined[StringToken]>[SimpleToken] foo5[StringToken] =[SimpleToken] new[KeywordToken] Map[StringToken]([BeginToken])[SimpleToken];[SimpleToken]
+
+
+final[KeywordToken] Map[StringToken]<[BeginToken]String[StringToken],[SimpleToken] Undefined[StringToken]>[SimpleToken] foo6[StringToken] =[SimpleToken] new[KeywordToken] Map[StringToken]<[BeginToken]String[StringToken],[SimpleToken] List[StringToken]<[BeginToken]int[StringToken]>>[SimpleToken]{[BeginToken]"a"[StringToken]:[SimpleToken] null[KeywordToken]}[SimpleToken];[SimpleToken]
+
+
+final[KeywordToken] Map[StringToken]<[BeginToken]String[StringToken],[SimpleToken] Undefined[StringToken]>[SimpleToken] foo7[StringToken] =[SimpleToken] new[KeywordToken] Map[StringToken]{[BeginToken]"a"[StringToken]:[SimpleToken] null[KeywordToken]}[SimpleToken];[SimpleToken]
+
+
+final[KeywordToken] Map[StringToken]<[BeginToken]String[StringToken],[SimpleToken] Undefined[StringToken]>[SimpleToken] foo8[StringToken] =[SimpleToken] new[KeywordToken] <[BeginToken]String[StringToken],[SimpleToken] List[StringToken]<[BeginToken]int[StringToken]>>[SimpleToken]{[BeginToken]"a"[StringToken]:[SimpleToken] null[KeywordToken]}[SimpleToken];[SimpleToken]
+
+
+final[KeywordToken] Map[StringToken]<[BeginToken]String[StringToken],[SimpleToken] Undefined[StringToken]>[SimpleToken] foo9[StringToken] =[SimpleToken] new[KeywordToken] {[BeginToken]"a"[StringToken]:[SimpleToken] null[KeywordToken]}[SimpleToken];[SimpleToken]
+}[SimpleToken][SimpleToken]
diff --git a/pkg/front_end/parser_testcases/error_recovery/issue_45251_set.dart b/pkg/front_end/parser_testcases/error_recovery/issue_45251_set.dart
new file mode 100644
index 0000000..2824c09
--- /dev/null
+++ b/pkg/front_end/parser_testcases/error_recovery/issue_45251_set.dart
@@ -0,0 +1,28 @@
+class F {
+  /* notice the braces at the end instead of parenthesis! */
+  final Set<Undefined> foo1 = Set<List<int>>{};
+
+  // variation #1: OK.
+  final Set<Undefined> foo2 = <List<int>>{};
+
+  // variation #2: Bad.
+  final Set<Undefined> foo3 = Set{};
+
+  // variation #3: OK.
+  final Set<Undefined> foo4 = Set<List<int>>();
+
+  // variation #4: OK.
+  final Set<Undefined> foo5 = Set();
+
+  // variation #5: Bad.
+  final Set<Undefined> foo6 = Set<List<int>>{null};
+
+  // variation #6: Bad.
+  final Set<Undefined> foo7 = Set{null};
+
+  // variation #7: OK.
+  final Set<Undefined> foo8 = <List<int>>{null};
+
+  // variation #8: OK.
+  final Set<Undefined> foo9 = {null};
+}
\ No newline at end of file
diff --git a/pkg/front_end/parser_testcases/error_recovery/issue_45251_set.dart.expect b/pkg/front_end/parser_testcases/error_recovery/issue_45251_set.dart.expect
new file mode 100644
index 0000000..d8f4e89
--- /dev/null
+++ b/pkg/front_end/parser_testcases/error_recovery/issue_45251_set.dart.expect
@@ -0,0 +1,251 @@
+Problems reported:
+
+parser/error_recovery/issue_45251_set:3:31: Unexpected token 'Set'.
+  final Set<Undefined> foo1 = Set<List<int>>{};
+                              ^^^
+
+parser/error_recovery/issue_45251_set:9:31: Unexpected token 'Set'.
+  final Set<Undefined> foo3 = Set{};
+                              ^^^
+
+parser/error_recovery/issue_45251_set:18:31: Unexpected token 'Set'.
+  final Set<Undefined> foo6 = Set<List<int>>{null};
+                              ^^^
+
+parser/error_recovery/issue_45251_set:21:31: Unexpected token 'Set'.
+  final Set<Undefined> foo7 = Set{null};
+                              ^^^
+
+beginCompilationUnit(class)
+  beginMetadataStar(class)
+  endMetadataStar(0)
+  beginClassOrNamedMixinApplicationPrelude(class)
+    handleIdentifier(F, classOrMixinDeclaration)
+    handleNoTypeVariables({)
+    beginClassDeclaration(class, null, F)
+      handleNoType(F)
+      handleClassExtends(null, 1)
+      handleClassNoWithClause()
+      handleClassOrMixinImplements(null, 0)
+      handleClassHeader(class, class, null)
+      beginClassOrMixinBody(DeclarationKind.Class, {)
+        beginMetadataStar(final)
+        endMetadataStar(0)
+        beginMember()
+          beginFields({)
+            handleIdentifier(Set, typeReference)
+            beginTypeArguments(<)
+              handleIdentifier(Undefined, typeReference)
+              handleNoTypeArguments(>)
+              handleType(Undefined, null)
+            endTypeArguments(1, <, >)
+            handleType(Set, null)
+            handleIdentifier(foo1, fieldDeclaration)
+            beginFieldInitializer(=)
+              handleRecoverableError(Message[UnexpectedToken, Unexpected token 'Set'., null, {lexeme: Set}], Set, Set)
+              beginTypeArguments(<)
+                handleIdentifier(List, typeReference)
+                beginTypeArguments(<)
+                  handleIdentifier(int, typeReference)
+                  handleNoTypeArguments(>)
+                  handleType(int, null)
+                endTypeArguments(1, <, >)
+                handleType(List, null)
+              endTypeArguments(1, <, >)
+              handleLiteralSetOrMap(0, {, null, }, false)
+            endFieldInitializer(=, ;)
+          endClassFields(null, null, null, null, null, final, 1, final, ;)
+        endMember()
+        beginMetadataStar(final)
+        endMetadataStar(0)
+        beginMember()
+          beginFields(;)
+            handleIdentifier(Set, typeReference)
+            beginTypeArguments(<)
+              handleIdentifier(Undefined, typeReference)
+              handleNoTypeArguments(>)
+              handleType(Undefined, null)
+            endTypeArguments(1, <, >)
+            handleType(Set, null)
+            handleIdentifier(foo2, fieldDeclaration)
+            beginFieldInitializer(=)
+              beginTypeArguments(<)
+                handleIdentifier(List, typeReference)
+                beginTypeArguments(<)
+                  handleIdentifier(int, typeReference)
+                  handleNoTypeArguments(>)
+                  handleType(int, null)
+                endTypeArguments(1, <, >)
+                handleType(List, null)
+              endTypeArguments(1, <, >)
+              handleLiteralSetOrMap(0, {, null, }, false)
+            endFieldInitializer(=, ;)
+          endClassFields(null, null, null, null, null, final, 1, final, ;)
+        endMember()
+        beginMetadataStar(final)
+        endMetadataStar(0)
+        beginMember()
+          beginFields(;)
+            handleIdentifier(Set, typeReference)
+            beginTypeArguments(<)
+              handleIdentifier(Undefined, typeReference)
+              handleNoTypeArguments(>)
+              handleType(Undefined, null)
+            endTypeArguments(1, <, >)
+            handleType(Set, null)
+            handleIdentifier(foo3, fieldDeclaration)
+            beginFieldInitializer(=)
+              handleRecoverableError(Message[UnexpectedToken, Unexpected token 'Set'., null, {lexeme: Set}], Set, Set)
+              handleNoTypeArguments({)
+              handleLiteralSetOrMap(0, {, null, }, false)
+            endFieldInitializer(=, ;)
+          endClassFields(null, null, null, null, null, final, 1, final, ;)
+        endMember()
+        beginMetadataStar(final)
+        endMetadataStar(0)
+        beginMember()
+          beginFields(;)
+            handleIdentifier(Set, typeReference)
+            beginTypeArguments(<)
+              handleIdentifier(Undefined, typeReference)
+              handleNoTypeArguments(>)
+              handleType(Undefined, null)
+            endTypeArguments(1, <, >)
+            handleType(Set, null)
+            handleIdentifier(foo4, fieldDeclaration)
+            beginFieldInitializer(=)
+              handleIdentifier(Set, expression)
+              beginTypeArguments(<)
+                handleIdentifier(List, typeReference)
+                beginTypeArguments(<)
+                  handleIdentifier(int, typeReference)
+                  handleNoTypeArguments(>)
+                  handleType(int, null)
+                endTypeArguments(1, <, >)
+                handleType(List, null)
+              endTypeArguments(1, <, >)
+              beginArguments(()
+              endArguments(0, (, ))
+              handleSend(Set, ;)
+            endFieldInitializer(=, ;)
+          endClassFields(null, null, null, null, null, final, 1, final, ;)
+        endMember()
+        beginMetadataStar(final)
+        endMetadataStar(0)
+        beginMember()
+          beginFields(;)
+            handleIdentifier(Set, typeReference)
+            beginTypeArguments(<)
+              handleIdentifier(Undefined, typeReference)
+              handleNoTypeArguments(>)
+              handleType(Undefined, null)
+            endTypeArguments(1, <, >)
+            handleType(Set, null)
+            handleIdentifier(foo5, fieldDeclaration)
+            beginFieldInitializer(=)
+              handleIdentifier(Set, expression)
+              handleNoTypeArguments(()
+              beginArguments(()
+              endArguments(0, (, ))
+              handleSend(Set, ;)
+            endFieldInitializer(=, ;)
+          endClassFields(null, null, null, null, null, final, 1, final, ;)
+        endMember()
+        beginMetadataStar(final)
+        endMetadataStar(0)
+        beginMember()
+          beginFields(;)
+            handleIdentifier(Set, typeReference)
+            beginTypeArguments(<)
+              handleIdentifier(Undefined, typeReference)
+              handleNoTypeArguments(>)
+              handleType(Undefined, null)
+            endTypeArguments(1, <, >)
+            handleType(Set, null)
+            handleIdentifier(foo6, fieldDeclaration)
+            beginFieldInitializer(=)
+              handleRecoverableError(Message[UnexpectedToken, Unexpected token 'Set'., null, {lexeme: Set}], Set, Set)
+              beginTypeArguments(<)
+                handleIdentifier(List, typeReference)
+                beginTypeArguments(<)
+                  handleIdentifier(int, typeReference)
+                  handleNoTypeArguments(>)
+                  handleType(int, null)
+                endTypeArguments(1, <, >)
+                handleType(List, null)
+              endTypeArguments(1, <, >)
+              handleLiteralNull(null)
+              handleLiteralSetOrMap(1, {, null, }, true)
+            endFieldInitializer(=, ;)
+          endClassFields(null, null, null, null, null, final, 1, final, ;)
+        endMember()
+        beginMetadataStar(final)
+        endMetadataStar(0)
+        beginMember()
+          beginFields(;)
+            handleIdentifier(Set, typeReference)
+            beginTypeArguments(<)
+              handleIdentifier(Undefined, typeReference)
+              handleNoTypeArguments(>)
+              handleType(Undefined, null)
+            endTypeArguments(1, <, >)
+            handleType(Set, null)
+            handleIdentifier(foo7, fieldDeclaration)
+            beginFieldInitializer(=)
+              handleRecoverableError(Message[UnexpectedToken, Unexpected token 'Set'., null, {lexeme: Set}], Set, Set)
+              handleNoTypeArguments({)
+              handleLiteralNull(null)
+              handleLiteralSetOrMap(1, {, null, }, true)
+            endFieldInitializer(=, ;)
+          endClassFields(null, null, null, null, null, final, 1, final, ;)
+        endMember()
+        beginMetadataStar(final)
+        endMetadataStar(0)
+        beginMember()
+          beginFields(;)
+            handleIdentifier(Set, typeReference)
+            beginTypeArguments(<)
+              handleIdentifier(Undefined, typeReference)
+              handleNoTypeArguments(>)
+              handleType(Undefined, null)
+            endTypeArguments(1, <, >)
+            handleType(Set, null)
+            handleIdentifier(foo8, fieldDeclaration)
+            beginFieldInitializer(=)
+              beginTypeArguments(<)
+                handleIdentifier(List, typeReference)
+                beginTypeArguments(<)
+                  handleIdentifier(int, typeReference)
+                  handleNoTypeArguments(>)
+                  handleType(int, null)
+                endTypeArguments(1, <, >)
+                handleType(List, null)
+              endTypeArguments(1, <, >)
+              handleLiteralNull(null)
+              handleLiteralSetOrMap(1, {, null, }, true)
+            endFieldInitializer(=, ;)
+          endClassFields(null, null, null, null, null, final, 1, final, ;)
+        endMember()
+        beginMetadataStar(final)
+        endMetadataStar(0)
+        beginMember()
+          beginFields(;)
+            handleIdentifier(Set, typeReference)
+            beginTypeArguments(<)
+              handleIdentifier(Undefined, typeReference)
+              handleNoTypeArguments(>)
+              handleType(Undefined, null)
+            endTypeArguments(1, <, >)
+            handleType(Set, null)
+            handleIdentifier(foo9, fieldDeclaration)
+            beginFieldInitializer(=)
+              handleNoTypeArguments({)
+              handleLiteralNull(null)
+              handleLiteralSetOrMap(1, {, null, }, true)
+            endFieldInitializer(=, ;)
+          endClassFields(null, null, null, null, null, final, 1, final, ;)
+        endMember()
+      endClassOrMixinBody(DeclarationKind.Class, 9, {, })
+    endClassDeclaration(class, })
+  endTopLevelDeclaration()
+endCompilationUnit(1, )
diff --git a/pkg/front_end/parser_testcases/error_recovery/issue_45251_set.dart.intertwined.expect b/pkg/front_end/parser_testcases/error_recovery/issue_45251_set.dart.intertwined.expect
new file mode 100644
index 0000000..aa44787
--- /dev/null
+++ b/pkg/front_end/parser_testcases/error_recovery/issue_45251_set.dart.intertwined.expect
@@ -0,0 +1,401 @@
+parseUnit(class)
+  skipErrorTokens(class)
+  listener: beginCompilationUnit(class)
+  syntheticPreviousToken(class)
+  parseTopLevelDeclarationImpl(, Instance of 'DirectiveContext')
+    parseMetadataStar()
+      listener: beginMetadataStar(class)
+      listener: endMetadataStar(0)
+    parseTopLevelKeywordDeclaration(, class, Instance of 'DirectiveContext')
+      parseClassDeclarationModifiers(, class)
+      parseClassOrNamedMixinApplication(null, class)
+        listener: beginClassOrNamedMixinApplicationPrelude(class)
+        ensureIdentifier(class, classOrMixinDeclaration)
+          listener: handleIdentifier(F, classOrMixinDeclaration)
+        listener: handleNoTypeVariables({)
+        listener: beginClassDeclaration(class, null, F)
+        parseClass(F, class, class, F)
+          parseClassHeaderOpt(F, class, class)
+            parseClassExtendsOpt(F)
+              listener: handleNoType(F)
+              listener: handleClassExtends(null, 1)
+            parseWithClauseOpt(F)
+              listener: handleClassNoWithClause()
+            parseClassOrMixinImplementsOpt(F)
+              listener: handleClassOrMixinImplements(null, 0)
+            listener: handleClassHeader(class, class, null)
+          parseClassOrMixinOrExtensionBody(F, DeclarationKind.Class, F)
+            listener: beginClassOrMixinBody(DeclarationKind.Class, {)
+            notEofOrValue(}, final)
+            parseClassOrMixinOrExtensionMemberImpl({, DeclarationKind.Class, F)
+              parseMetadataStar({)
+                listener: beginMetadataStar(final)
+                listener: endMetadataStar(0)
+              listener: beginMember()
+              parseFields({, null, null, null, null, null, final, final, Instance of 'SimpleTypeWith1Argument', foo1, DeclarationKind.Class, F, false)
+                listener: beginFields({)
+                listener: handleIdentifier(Set, typeReference)
+                listener: beginTypeArguments(<)
+                listener: handleIdentifier(Undefined, typeReference)
+                listener: handleNoTypeArguments(>)
+                listener: handleType(Undefined, null)
+                listener: endTypeArguments(1, <, >)
+                listener: handleType(Set, null)
+                ensureIdentifierPotentiallyRecovered(>, fieldDeclaration, false)
+                  listener: handleIdentifier(foo1, fieldDeclaration)
+                parseFieldInitializerOpt(foo1, foo1, null, null, null, final, DeclarationKind.Class, F)
+                  listener: beginFieldInitializer(=)
+                  parseExpression(=)
+                    parsePrecedenceExpression(=, 1, true)
+                      parseUnaryExpression(=, true)
+                        parsePrimary(=, expression)
+                          parseSendOrFunctionLiteral(=, expression)
+                            parseSend(=, expression)
+                              reportRecoverableErrorWithToken(Set, Instance of 'Template<(Token) => Message>')
+                                listener: handleRecoverableError(Message[UnexpectedToken, Unexpected token 'Set'., null, {lexeme: Set}], Set, Set)
+                              parsePrimary(Set, expression)
+                                parseLiteralListSetMapOrFunction(Set, null)
+                                  listener: beginTypeArguments(<)
+                                  listener: handleIdentifier(List, typeReference)
+                                  listener: beginTypeArguments(<)
+                                  listener: handleIdentifier(int, typeReference)
+                                  listener: handleNoTypeArguments(>)
+                                  listener: handleType(int, null)
+                                  listener: endTypeArguments(1, <, >)
+                                  listener: handleType(List, null)
+                                  listener: endTypeArguments(1, <, >)
+                                  parseLiteralSetOrMapSuffix(>, null)
+                                    listener: handleLiteralSetOrMap(0, {, null, }, false)
+                  listener: endFieldInitializer(=, ;)
+                listener: endClassFields(null, null, null, null, null, final, 1, final, ;)
+              listener: endMember()
+            notEofOrValue(}, final)
+            parseClassOrMixinOrExtensionMemberImpl(;, DeclarationKind.Class, F)
+              parseMetadataStar(;)
+                listener: beginMetadataStar(final)
+                listener: endMetadataStar(0)
+              listener: beginMember()
+              parseFields(;, null, null, null, null, null, final, final, Instance of 'SimpleTypeWith1Argument', foo2, DeclarationKind.Class, F, false)
+                listener: beginFields(;)
+                listener: handleIdentifier(Set, typeReference)
+                listener: beginTypeArguments(<)
+                listener: handleIdentifier(Undefined, typeReference)
+                listener: handleNoTypeArguments(>)
+                listener: handleType(Undefined, null)
+                listener: endTypeArguments(1, <, >)
+                listener: handleType(Set, null)
+                ensureIdentifierPotentiallyRecovered(>, fieldDeclaration, false)
+                  listener: handleIdentifier(foo2, fieldDeclaration)
+                parseFieldInitializerOpt(foo2, foo2, null, null, null, final, DeclarationKind.Class, F)
+                  listener: beginFieldInitializer(=)
+                  parseExpression(=)
+                    parsePrecedenceExpression(=, 1, true)
+                      parseUnaryExpression(=, true)
+                        parsePrimary(=, expression)
+                          parseLiteralListSetMapOrFunction(=, null)
+                            listener: beginTypeArguments(<)
+                            listener: handleIdentifier(List, typeReference)
+                            listener: beginTypeArguments(<)
+                            listener: handleIdentifier(int, typeReference)
+                            listener: handleNoTypeArguments(>)
+                            listener: handleType(int, null)
+                            listener: endTypeArguments(1, <, >)
+                            listener: handleType(List, null)
+                            listener: endTypeArguments(1, <, >)
+                            parseLiteralSetOrMapSuffix(>, null)
+                              listener: handleLiteralSetOrMap(0, {, null, }, false)
+                  listener: endFieldInitializer(=, ;)
+                listener: endClassFields(null, null, null, null, null, final, 1, final, ;)
+              listener: endMember()
+            notEofOrValue(}, final)
+            parseClassOrMixinOrExtensionMemberImpl(;, DeclarationKind.Class, F)
+              parseMetadataStar(;)
+                listener: beginMetadataStar(final)
+                listener: endMetadataStar(0)
+              listener: beginMember()
+              parseFields(;, null, null, null, null, null, final, final, Instance of 'SimpleTypeWith1Argument', foo3, DeclarationKind.Class, F, false)
+                listener: beginFields(;)
+                listener: handleIdentifier(Set, typeReference)
+                listener: beginTypeArguments(<)
+                listener: handleIdentifier(Undefined, typeReference)
+                listener: handleNoTypeArguments(>)
+                listener: handleType(Undefined, null)
+                listener: endTypeArguments(1, <, >)
+                listener: handleType(Set, null)
+                ensureIdentifierPotentiallyRecovered(>, fieldDeclaration, false)
+                  listener: handleIdentifier(foo3, fieldDeclaration)
+                parseFieldInitializerOpt(foo3, foo3, null, null, null, final, DeclarationKind.Class, F)
+                  listener: beginFieldInitializer(=)
+                  parseExpression(=)
+                    parsePrecedenceExpression(=, 1, true)
+                      parseUnaryExpression(=, true)
+                        parsePrimary(=, expression)
+                          parseSendOrFunctionLiteral(=, expression)
+                            parseSend(=, expression)
+                              reportRecoverableErrorWithToken(Set, Instance of 'Template<(Token) => Message>')
+                                listener: handleRecoverableError(Message[UnexpectedToken, Unexpected token 'Set'., null, {lexeme: Set}], Set, Set)
+                              parsePrimary(Set, expression)
+                                listener: handleNoTypeArguments({)
+                                parseLiteralSetOrMapSuffix(Set, null)
+                                  listener: handleLiteralSetOrMap(0, {, null, }, false)
+                  listener: endFieldInitializer(=, ;)
+                listener: endClassFields(null, null, null, null, null, final, 1, final, ;)
+              listener: endMember()
+            notEofOrValue(}, final)
+            parseClassOrMixinOrExtensionMemberImpl(;, DeclarationKind.Class, F)
+              parseMetadataStar(;)
+                listener: beginMetadataStar(final)
+                listener: endMetadataStar(0)
+              listener: beginMember()
+              parseFields(;, null, null, null, null, null, final, final, Instance of 'SimpleTypeWith1Argument', foo4, DeclarationKind.Class, F, false)
+                listener: beginFields(;)
+                listener: handleIdentifier(Set, typeReference)
+                listener: beginTypeArguments(<)
+                listener: handleIdentifier(Undefined, typeReference)
+                listener: handleNoTypeArguments(>)
+                listener: handleType(Undefined, null)
+                listener: endTypeArguments(1, <, >)
+                listener: handleType(Set, null)
+                ensureIdentifierPotentiallyRecovered(>, fieldDeclaration, false)
+                  listener: handleIdentifier(foo4, fieldDeclaration)
+                parseFieldInitializerOpt(foo4, foo4, null, null, null, final, DeclarationKind.Class, F)
+                  listener: beginFieldInitializer(=)
+                  parseExpression(=)
+                    parsePrecedenceExpression(=, 1, true)
+                      parseUnaryExpression(=, true)
+                        parsePrimary(=, expression)
+                          parseSendOrFunctionLiteral(=, expression)
+                            looksLikeFunctionBody(;)
+                            parseSend(=, expression)
+                              ensureIdentifier(=, expression)
+                                listener: handleIdentifier(Set, expression)
+                              listener: beginTypeArguments(<)
+                              listener: handleIdentifier(List, typeReference)
+                              listener: beginTypeArguments(<)
+                              listener: handleIdentifier(int, typeReference)
+                              listener: handleNoTypeArguments(>)
+                              listener: handleType(int, null)
+                              listener: endTypeArguments(1, <, >)
+                              listener: handleType(List, null)
+                              listener: endTypeArguments(1, <, >)
+                              parseArgumentsOpt(>)
+                                parseArguments(>)
+                                  parseArgumentsRest(()
+                                    listener: beginArguments(()
+                                    listener: endArguments(0, (, ))
+                              listener: handleSend(Set, ;)
+                  listener: endFieldInitializer(=, ;)
+                listener: endClassFields(null, null, null, null, null, final, 1, final, ;)
+              listener: endMember()
+            notEofOrValue(}, final)
+            parseClassOrMixinOrExtensionMemberImpl(;, DeclarationKind.Class, F)
+              parseMetadataStar(;)
+                listener: beginMetadataStar(final)
+                listener: endMetadataStar(0)
+              listener: beginMember()
+              parseFields(;, null, null, null, null, null, final, final, Instance of 'SimpleTypeWith1Argument', foo5, DeclarationKind.Class, F, false)
+                listener: beginFields(;)
+                listener: handleIdentifier(Set, typeReference)
+                listener: beginTypeArguments(<)
+                listener: handleIdentifier(Undefined, typeReference)
+                listener: handleNoTypeArguments(>)
+                listener: handleType(Undefined, null)
+                listener: endTypeArguments(1, <, >)
+                listener: handleType(Set, null)
+                ensureIdentifierPotentiallyRecovered(>, fieldDeclaration, false)
+                  listener: handleIdentifier(foo5, fieldDeclaration)
+                parseFieldInitializerOpt(foo5, foo5, null, null, null, final, DeclarationKind.Class, F)
+                  listener: beginFieldInitializer(=)
+                  parseExpression(=)
+                    parsePrecedenceExpression(=, 1, true)
+                      parseUnaryExpression(=, true)
+                        parsePrimary(=, expression)
+                          parseSendOrFunctionLiteral(=, expression)
+                            looksLikeFunctionBody(;)
+                            parseSend(=, expression)
+                              ensureIdentifier(=, expression)
+                                listener: handleIdentifier(Set, expression)
+                              listener: handleNoTypeArguments(()
+                              parseArgumentsOpt(Set)
+                                parseArguments(Set)
+                                  parseArgumentsRest(()
+                                    listener: beginArguments(()
+                                    listener: endArguments(0, (, ))
+                              listener: handleSend(Set, ;)
+                  listener: endFieldInitializer(=, ;)
+                listener: endClassFields(null, null, null, null, null, final, 1, final, ;)
+              listener: endMember()
+            notEofOrValue(}, final)
+            parseClassOrMixinOrExtensionMemberImpl(;, DeclarationKind.Class, F)
+              parseMetadataStar(;)
+                listener: beginMetadataStar(final)
+                listener: endMetadataStar(0)
+              listener: beginMember()
+              parseFields(;, null, null, null, null, null, final, final, Instance of 'SimpleTypeWith1Argument', foo6, DeclarationKind.Class, F, false)
+                listener: beginFields(;)
+                listener: handleIdentifier(Set, typeReference)
+                listener: beginTypeArguments(<)
+                listener: handleIdentifier(Undefined, typeReference)
+                listener: handleNoTypeArguments(>)
+                listener: handleType(Undefined, null)
+                listener: endTypeArguments(1, <, >)
+                listener: handleType(Set, null)
+                ensureIdentifierPotentiallyRecovered(>, fieldDeclaration, false)
+                  listener: handleIdentifier(foo6, fieldDeclaration)
+                parseFieldInitializerOpt(foo6, foo6, null, null, null, final, DeclarationKind.Class, F)
+                  listener: beginFieldInitializer(=)
+                  parseExpression(=)
+                    parsePrecedenceExpression(=, 1, true)
+                      parseUnaryExpression(=, true)
+                        parsePrimary(=, expression)
+                          parseSendOrFunctionLiteral(=, expression)
+                            parseSend(=, expression)
+                              reportRecoverableErrorWithToken(Set, Instance of 'Template<(Token) => Message>')
+                                listener: handleRecoverableError(Message[UnexpectedToken, Unexpected token 'Set'., null, {lexeme: Set}], Set, Set)
+                              parsePrimary(Set, expression)
+                                parseLiteralListSetMapOrFunction(Set, null)
+                                  listener: beginTypeArguments(<)
+                                  listener: handleIdentifier(List, typeReference)
+                                  listener: beginTypeArguments(<)
+                                  listener: handleIdentifier(int, typeReference)
+                                  listener: handleNoTypeArguments(>)
+                                  listener: handleType(int, null)
+                                  listener: endTypeArguments(1, <, >)
+                                  listener: handleType(List, null)
+                                  listener: endTypeArguments(1, <, >)
+                                  parseLiteralSetOrMapSuffix(>, null)
+                                    parseExpression({)
+                                      parsePrecedenceExpression({, 1, true)
+                                        parseUnaryExpression({, true)
+                                          parsePrimary({, expression)
+                                            parseLiteralNull({)
+                                              listener: handleLiteralNull(null)
+                                    listener: handleLiteralSetOrMap(1, {, null, }, true)
+                  listener: endFieldInitializer(=, ;)
+                listener: endClassFields(null, null, null, null, null, final, 1, final, ;)
+              listener: endMember()
+            notEofOrValue(}, final)
+            parseClassOrMixinOrExtensionMemberImpl(;, DeclarationKind.Class, F)
+              parseMetadataStar(;)
+                listener: beginMetadataStar(final)
+                listener: endMetadataStar(0)
+              listener: beginMember()
+              parseFields(;, null, null, null, null, null, final, final, Instance of 'SimpleTypeWith1Argument', foo7, DeclarationKind.Class, F, false)
+                listener: beginFields(;)
+                listener: handleIdentifier(Set, typeReference)
+                listener: beginTypeArguments(<)
+                listener: handleIdentifier(Undefined, typeReference)
+                listener: handleNoTypeArguments(>)
+                listener: handleType(Undefined, null)
+                listener: endTypeArguments(1, <, >)
+                listener: handleType(Set, null)
+                ensureIdentifierPotentiallyRecovered(>, fieldDeclaration, false)
+                  listener: handleIdentifier(foo7, fieldDeclaration)
+                parseFieldInitializerOpt(foo7, foo7, null, null, null, final, DeclarationKind.Class, F)
+                  listener: beginFieldInitializer(=)
+                  parseExpression(=)
+                    parsePrecedenceExpression(=, 1, true)
+                      parseUnaryExpression(=, true)
+                        parsePrimary(=, expression)
+                          parseSendOrFunctionLiteral(=, expression)
+                            parseSend(=, expression)
+                              reportRecoverableErrorWithToken(Set, Instance of 'Template<(Token) => Message>')
+                                listener: handleRecoverableError(Message[UnexpectedToken, Unexpected token 'Set'., null, {lexeme: Set}], Set, Set)
+                              parsePrimary(Set, expression)
+                                listener: handleNoTypeArguments({)
+                                parseLiteralSetOrMapSuffix(Set, null)
+                                  parseExpression({)
+                                    parsePrecedenceExpression({, 1, true)
+                                      parseUnaryExpression({, true)
+                                        parsePrimary({, expression)
+                                          parseLiteralNull({)
+                                            listener: handleLiteralNull(null)
+                                  listener: handleLiteralSetOrMap(1, {, null, }, true)
+                  listener: endFieldInitializer(=, ;)
+                listener: endClassFields(null, null, null, null, null, final, 1, final, ;)
+              listener: endMember()
+            notEofOrValue(}, final)
+            parseClassOrMixinOrExtensionMemberImpl(;, DeclarationKind.Class, F)
+              parseMetadataStar(;)
+                listener: beginMetadataStar(final)
+                listener: endMetadataStar(0)
+              listener: beginMember()
+              parseFields(;, null, null, null, null, null, final, final, Instance of 'SimpleTypeWith1Argument', foo8, DeclarationKind.Class, F, false)
+                listener: beginFields(;)
+                listener: handleIdentifier(Set, typeReference)
+                listener: beginTypeArguments(<)
+                listener: handleIdentifier(Undefined, typeReference)
+                listener: handleNoTypeArguments(>)
+                listener: handleType(Undefined, null)
+                listener: endTypeArguments(1, <, >)
+                listener: handleType(Set, null)
+                ensureIdentifierPotentiallyRecovered(>, fieldDeclaration, false)
+                  listener: handleIdentifier(foo8, fieldDeclaration)
+                parseFieldInitializerOpt(foo8, foo8, null, null, null, final, DeclarationKind.Class, F)
+                  listener: beginFieldInitializer(=)
+                  parseExpression(=)
+                    parsePrecedenceExpression(=, 1, true)
+                      parseUnaryExpression(=, true)
+                        parsePrimary(=, expression)
+                          parseLiteralListSetMapOrFunction(=, null)
+                            listener: beginTypeArguments(<)
+                            listener: handleIdentifier(List, typeReference)
+                            listener: beginTypeArguments(<)
+                            listener: handleIdentifier(int, typeReference)
+                            listener: handleNoTypeArguments(>)
+                            listener: handleType(int, null)
+                            listener: endTypeArguments(1, <, >)
+                            listener: handleType(List, null)
+                            listener: endTypeArguments(1, <, >)
+                            parseLiteralSetOrMapSuffix(>, null)
+                              parseExpression({)
+                                parsePrecedenceExpression({, 1, true)
+                                  parseUnaryExpression({, true)
+                                    parsePrimary({, expression)
+                                      parseLiteralNull({)
+                                        listener: handleLiteralNull(null)
+                              listener: handleLiteralSetOrMap(1, {, null, }, true)
+                  listener: endFieldInitializer(=, ;)
+                listener: endClassFields(null, null, null, null, null, final, 1, final, ;)
+              listener: endMember()
+            notEofOrValue(}, final)
+            parseClassOrMixinOrExtensionMemberImpl(;, DeclarationKind.Class, F)
+              parseMetadataStar(;)
+                listener: beginMetadataStar(final)
+                listener: endMetadataStar(0)
+              listener: beginMember()
+              parseFields(;, null, null, null, null, null, final, final, Instance of 'SimpleTypeWith1Argument', foo9, DeclarationKind.Class, F, false)
+                listener: beginFields(;)
+                listener: handleIdentifier(Set, typeReference)
+                listener: beginTypeArguments(<)
+                listener: handleIdentifier(Undefined, typeReference)
+                listener: handleNoTypeArguments(>)
+                listener: handleType(Undefined, null)
+                listener: endTypeArguments(1, <, >)
+                listener: handleType(Set, null)
+                ensureIdentifierPotentiallyRecovered(>, fieldDeclaration, false)
+                  listener: handleIdentifier(foo9, fieldDeclaration)
+                parseFieldInitializerOpt(foo9, foo9, null, null, null, final, DeclarationKind.Class, F)
+                  listener: beginFieldInitializer(=)
+                  parseExpression(=)
+                    parsePrecedenceExpression(=, 1, true)
+                      parseUnaryExpression(=, true)
+                        parsePrimary(=, expression)
+                          listener: handleNoTypeArguments({)
+                          parseLiteralSetOrMapSuffix(=, null)
+                            parseExpression({)
+                              parsePrecedenceExpression({, 1, true)
+                                parseUnaryExpression({, true)
+                                  parsePrimary({, expression)
+                                    parseLiteralNull({)
+                                      listener: handleLiteralNull(null)
+                            listener: handleLiteralSetOrMap(1, {, null, }, true)
+                  listener: endFieldInitializer(=, ;)
+                listener: endClassFields(null, null, null, null, null, final, 1, final, ;)
+              listener: endMember()
+            notEofOrValue(}, })
+            listener: endClassOrMixinBody(DeclarationKind.Class, 9, {, })
+          listener: endClassDeclaration(class, })
+  listener: endTopLevelDeclaration()
+  reportAllErrorTokens(class)
+  listener: endCompilationUnit(1, )
diff --git a/pkg/front_end/parser_testcases/error_recovery/issue_45251_set.dart.parser.expect b/pkg/front_end/parser_testcases/error_recovery/issue_45251_set.dart.parser.expect
new file mode 100644
index 0000000..a8976df
--- /dev/null
+++ b/pkg/front_end/parser_testcases/error_recovery/issue_45251_set.dart.parser.expect
@@ -0,0 +1,59 @@
+NOTICE: Stream was rewritten by parser!
+
+class F {
+
+final Set<Undefined> foo1 = Set<List<int>>{};
+
+
+final Set<Undefined> foo2 = <List<int>>{};
+
+
+final Set<Undefined> foo3 = Set{};
+
+
+final Set<Undefined> foo4 = Set<List<int>>();
+
+
+final Set<Undefined> foo5 = Set();
+
+
+final Set<Undefined> foo6 = Set<List<int>>{null};
+
+
+final Set<Undefined> foo7 = Set{null};
+
+
+final Set<Undefined> foo8 = <List<int>>{null};
+
+
+final Set<Undefined> foo9 = {null};
+}
+
+class[KeywordToken] F[StringToken] {[BeginToken]
+
+final[KeywordToken] Set[StringToken]<[BeginToken]Undefined[StringToken]>[SimpleToken] foo1[StringToken] =[SimpleToken] Set[StringToken]<[BeginToken]List[StringToken]<[BeginToken]int[StringToken]>[SimpleToken]>[SimpleToken]{[BeginToken]}[SimpleToken];[SimpleToken]
+
+
+final[KeywordToken] Set[StringToken]<[BeginToken]Undefined[StringToken]>[SimpleToken] foo2[StringToken] =[SimpleToken] <[BeginToken]List[StringToken]<[BeginToken]int[StringToken]>[SimpleToken]>[SimpleToken]{[BeginToken]}[SimpleToken];[SimpleToken]
+
+
+final[KeywordToken] Set[StringToken]<[BeginToken]Undefined[StringToken]>[SimpleToken] foo3[StringToken] =[SimpleToken] Set[StringToken]{[BeginToken]}[SimpleToken];[SimpleToken]
+
+
+final[KeywordToken] Set[StringToken]<[BeginToken]Undefined[StringToken]>[SimpleToken] foo4[StringToken] =[SimpleToken] Set[StringToken]<[BeginToken]List[StringToken]<[BeginToken]int[StringToken]>[SimpleToken]>[SimpleToken]([BeginToken])[SimpleToken];[SimpleToken]
+
+
+final[KeywordToken] Set[StringToken]<[BeginToken]Undefined[StringToken]>[SimpleToken] foo5[StringToken] =[SimpleToken] Set[StringToken]([BeginToken])[SimpleToken];[SimpleToken]
+
+
+final[KeywordToken] Set[StringToken]<[BeginToken]Undefined[StringToken]>[SimpleToken] foo6[StringToken] =[SimpleToken] Set[StringToken]<[BeginToken]List[StringToken]<[BeginToken]int[StringToken]>[SimpleToken]>[SimpleToken]{[BeginToken]null[KeywordToken]}[SimpleToken];[SimpleToken]
+
+
+final[KeywordToken] Set[StringToken]<[BeginToken]Undefined[StringToken]>[SimpleToken] foo7[StringToken] =[SimpleToken] Set[StringToken]{[BeginToken]null[KeywordToken]}[SimpleToken];[SimpleToken]
+
+
+final[KeywordToken] Set[StringToken]<[BeginToken]Undefined[StringToken]>[SimpleToken] foo8[StringToken] =[SimpleToken] <[BeginToken]List[StringToken]<[BeginToken]int[StringToken]>[SimpleToken]>[SimpleToken]{[BeginToken]null[KeywordToken]}[SimpleToken];[SimpleToken]
+
+
+final[KeywordToken] Set[StringToken]<[BeginToken]Undefined[StringToken]>[SimpleToken] foo9[StringToken] =[SimpleToken] {[BeginToken]null[KeywordToken]}[SimpleToken];[SimpleToken]
+}[SimpleToken][SimpleToken]
diff --git a/pkg/front_end/parser_testcases/error_recovery/issue_45251_set.dart.scanner.expect b/pkg/front_end/parser_testcases/error_recovery/issue_45251_set.dart.scanner.expect
new file mode 100644
index 0000000..aac5540
--- /dev/null
+++ b/pkg/front_end/parser_testcases/error_recovery/issue_45251_set.dart.scanner.expect
@@ -0,0 +1,57 @@
+class F {
+
+final Set<Undefined> foo1 = Set<List<int>>{};
+
+
+final Set<Undefined> foo2 = <List<int>>{};
+
+
+final Set<Undefined> foo3 = Set{};
+
+
+final Set<Undefined> foo4 = Set<List<int>>();
+
+
+final Set<Undefined> foo5 = Set();
+
+
+final Set<Undefined> foo6 = Set<List<int>>{null};
+
+
+final Set<Undefined> foo7 = Set{null};
+
+
+final Set<Undefined> foo8 = <List<int>>{null};
+
+
+final Set<Undefined> foo9 = {null};
+}
+
+class[KeywordToken] F[StringToken] {[BeginToken]
+
+final[KeywordToken] Set[StringToken]<[BeginToken]Undefined[StringToken]>[SimpleToken] foo1[StringToken] =[SimpleToken] Set[StringToken]<[BeginToken]List[StringToken]<[BeginToken]int[StringToken]>>[SimpleToken]{[BeginToken]}[SimpleToken];[SimpleToken]
+
+
+final[KeywordToken] Set[StringToken]<[BeginToken]Undefined[StringToken]>[SimpleToken] foo2[StringToken] =[SimpleToken] <[BeginToken]List[StringToken]<[BeginToken]int[StringToken]>>[SimpleToken]{[BeginToken]}[SimpleToken];[SimpleToken]
+
+
+final[KeywordToken] Set[StringToken]<[BeginToken]Undefined[StringToken]>[SimpleToken] foo3[StringToken] =[SimpleToken] Set[StringToken]{[BeginToken]}[SimpleToken];[SimpleToken]
+
+
+final[KeywordToken] Set[StringToken]<[BeginToken]Undefined[StringToken]>[SimpleToken] foo4[StringToken] =[SimpleToken] Set[StringToken]<[BeginToken]List[StringToken]<[BeginToken]int[StringToken]>>[SimpleToken]([BeginToken])[SimpleToken];[SimpleToken]
+
+
+final[KeywordToken] Set[StringToken]<[BeginToken]Undefined[StringToken]>[SimpleToken] foo5[StringToken] =[SimpleToken] Set[StringToken]([BeginToken])[SimpleToken];[SimpleToken]
+
+
+final[KeywordToken] Set[StringToken]<[BeginToken]Undefined[StringToken]>[SimpleToken] foo6[StringToken] =[SimpleToken] Set[StringToken]<[BeginToken]List[StringToken]<[BeginToken]int[StringToken]>>[SimpleToken]{[BeginToken]null[KeywordToken]}[SimpleToken];[SimpleToken]
+
+
+final[KeywordToken] Set[StringToken]<[BeginToken]Undefined[StringToken]>[SimpleToken] foo7[StringToken] =[SimpleToken] Set[StringToken]{[BeginToken]null[KeywordToken]}[SimpleToken];[SimpleToken]
+
+
+final[KeywordToken] Set[StringToken]<[BeginToken]Undefined[StringToken]>[SimpleToken] foo8[StringToken] =[SimpleToken] <[BeginToken]List[StringToken]<[BeginToken]int[StringToken]>>[SimpleToken]{[BeginToken]null[KeywordToken]}[SimpleToken];[SimpleToken]
+
+
+final[KeywordToken] Set[StringToken]<[BeginToken]Undefined[StringToken]>[SimpleToken] foo9[StringToken] =[SimpleToken] {[BeginToken]null[KeywordToken]}[SimpleToken];[SimpleToken]
+}[SimpleToken][SimpleToken]
diff --git a/pkg/front_end/parser_testcases/error_recovery/issue_45251_set_const.dart b/pkg/front_end/parser_testcases/error_recovery/issue_45251_set_const.dart
new file mode 100644
index 0000000..58f00b2
--- /dev/null
+++ b/pkg/front_end/parser_testcases/error_recovery/issue_45251_set_const.dart
@@ -0,0 +1,28 @@
+class F {
+  /* notice the braces at the end instead of parenthesis! */
+  final Set<Undefined> foo1 = const Set<List<int>>{};
+
+  // variation #1: OK.
+  final Set<Undefined> foo2 = const <List<int>>{};
+
+  // variation #2: Bad.
+  final Set<Undefined> foo3 = const Set{};
+
+  // variation #3: OK.
+  final Set<Undefined> foo4 = const Set<List<int>>();
+
+  // variation #4: OK.
+  final Set<Undefined> foo5 = const Set();
+
+  // variation #5: Bad.
+  final Set<Undefined> foo6 = const Set<List<int>>{null};
+
+  // variation #6: Bad.
+  final Set<Undefined> foo7 = const Set{null};
+
+  // variation #7: OK.
+  final Set<Undefined> foo8 = const <List<int>>{null};
+
+  // variation #8: OK.
+  final Set<Undefined> foo9 = const {null};
+}
\ No newline at end of file
diff --git a/pkg/front_end/parser_testcases/error_recovery/issue_45251_set_const.dart.expect b/pkg/front_end/parser_testcases/error_recovery/issue_45251_set_const.dart.expect
new file mode 100644
index 0000000..4d44965
--- /dev/null
+++ b/pkg/front_end/parser_testcases/error_recovery/issue_45251_set_const.dart.expect
@@ -0,0 +1,273 @@
+Problems reported:
+
+parser/error_recovery/issue_45251_set_const:3:37: Unexpected token 'Set'.
+  final Set<Undefined> foo1 = const Set<List<int>>{};
+                                    ^^^
+
+parser/error_recovery/issue_45251_set_const:9:37: Unexpected token 'Set'.
+  final Set<Undefined> foo3 = const Set{};
+                                    ^^^
+
+parser/error_recovery/issue_45251_set_const:18:37: Unexpected token 'Set'.
+  final Set<Undefined> foo6 = const Set<List<int>>{null};
+                                    ^^^
+
+parser/error_recovery/issue_45251_set_const:21:37: Unexpected token 'Set'.
+  final Set<Undefined> foo7 = const Set{null};
+                                    ^^^
+
+beginCompilationUnit(class)
+  beginMetadataStar(class)
+  endMetadataStar(0)
+  beginClassOrNamedMixinApplicationPrelude(class)
+    handleIdentifier(F, classOrMixinDeclaration)
+    handleNoTypeVariables({)
+    beginClassDeclaration(class, null, F)
+      handleNoType(F)
+      handleClassExtends(null, 1)
+      handleClassNoWithClause()
+      handleClassOrMixinImplements(null, 0)
+      handleClassHeader(class, class, null)
+      beginClassOrMixinBody(DeclarationKind.Class, {)
+        beginMetadataStar(final)
+        endMetadataStar(0)
+        beginMember()
+          beginFields({)
+            handleIdentifier(Set, typeReference)
+            beginTypeArguments(<)
+              handleIdentifier(Undefined, typeReference)
+              handleNoTypeArguments(>)
+              handleType(Undefined, null)
+            endTypeArguments(1, <, >)
+            handleType(Set, null)
+            handleIdentifier(foo1, fieldDeclaration)
+            beginFieldInitializer(=)
+              handleRecoverableError(Message[UnexpectedToken, Unexpected token 'Set'., null, {lexeme: Set}], Set, Set)
+              beginConstLiteral(<)
+                beginTypeArguments(<)
+                  handleIdentifier(List, typeReference)
+                  beginTypeArguments(<)
+                    handleIdentifier(int, typeReference)
+                    handleNoTypeArguments(>)
+                    handleType(int, null)
+                  endTypeArguments(1, <, >)
+                  handleType(List, null)
+                endTypeArguments(1, <, >)
+                handleLiteralSetOrMap(0, {, const, }, false)
+              endConstLiteral(;)
+            endFieldInitializer(=, ;)
+          endClassFields(null, null, null, null, null, final, 1, final, ;)
+        endMember()
+        beginMetadataStar(final)
+        endMetadataStar(0)
+        beginMember()
+          beginFields(;)
+            handleIdentifier(Set, typeReference)
+            beginTypeArguments(<)
+              handleIdentifier(Undefined, typeReference)
+              handleNoTypeArguments(>)
+              handleType(Undefined, null)
+            endTypeArguments(1, <, >)
+            handleType(Set, null)
+            handleIdentifier(foo2, fieldDeclaration)
+            beginFieldInitializer(=)
+              beginConstLiteral(<)
+                beginTypeArguments(<)
+                  handleIdentifier(List, typeReference)
+                  beginTypeArguments(<)
+                    handleIdentifier(int, typeReference)
+                    handleNoTypeArguments(>)
+                    handleType(int, null)
+                  endTypeArguments(1, <, >)
+                  handleType(List, null)
+                endTypeArguments(1, <, >)
+                handleLiteralSetOrMap(0, {, const, }, false)
+              endConstLiteral(;)
+            endFieldInitializer(=, ;)
+          endClassFields(null, null, null, null, null, final, 1, final, ;)
+        endMember()
+        beginMetadataStar(final)
+        endMetadataStar(0)
+        beginMember()
+          beginFields(;)
+            handleIdentifier(Set, typeReference)
+            beginTypeArguments(<)
+              handleIdentifier(Undefined, typeReference)
+              handleNoTypeArguments(>)
+              handleType(Undefined, null)
+            endTypeArguments(1, <, >)
+            handleType(Set, null)
+            handleIdentifier(foo3, fieldDeclaration)
+            beginFieldInitializer(=)
+              handleRecoverableError(Message[UnexpectedToken, Unexpected token 'Set'., null, {lexeme: Set}], Set, Set)
+              beginConstLiteral({)
+                handleNoTypeArguments({)
+                handleLiteralSetOrMap(0, {, const, }, false)
+              endConstLiteral(;)
+            endFieldInitializer(=, ;)
+          endClassFields(null, null, null, null, null, final, 1, final, ;)
+        endMember()
+        beginMetadataStar(final)
+        endMetadataStar(0)
+        beginMember()
+          beginFields(;)
+            handleIdentifier(Set, typeReference)
+            beginTypeArguments(<)
+              handleIdentifier(Undefined, typeReference)
+              handleNoTypeArguments(>)
+              handleType(Undefined, null)
+            endTypeArguments(1, <, >)
+            handleType(Set, null)
+            handleIdentifier(foo4, fieldDeclaration)
+            beginFieldInitializer(=)
+              beginConstExpression(const)
+                handleIdentifier(Set, constructorReference)
+                beginConstructorReference(Set)
+                  beginTypeArguments(<)
+                    handleIdentifier(List, typeReference)
+                    beginTypeArguments(<)
+                      handleIdentifier(int, typeReference)
+                      handleNoTypeArguments(>)
+                      handleType(int, null)
+                    endTypeArguments(1, <, >)
+                    handleType(List, null)
+                  endTypeArguments(1, <, >)
+                  handleNoConstructorReferenceContinuationAfterTypeArguments(()
+                endConstructorReference(Set, null, ()
+                beginArguments(()
+                endArguments(0, (, ))
+              endConstExpression(const)
+            endFieldInitializer(=, ;)
+          endClassFields(null, null, null, null, null, final, 1, final, ;)
+        endMember()
+        beginMetadataStar(final)
+        endMetadataStar(0)
+        beginMember()
+          beginFields(;)
+            handleIdentifier(Set, typeReference)
+            beginTypeArguments(<)
+              handleIdentifier(Undefined, typeReference)
+              handleNoTypeArguments(>)
+              handleType(Undefined, null)
+            endTypeArguments(1, <, >)
+            handleType(Set, null)
+            handleIdentifier(foo5, fieldDeclaration)
+            beginFieldInitializer(=)
+              beginConstExpression(const)
+                handleIdentifier(Set, constructorReference)
+                beginConstructorReference(Set)
+                  handleNoTypeArguments(()
+                  handleNoConstructorReferenceContinuationAfterTypeArguments(()
+                endConstructorReference(Set, null, ()
+                beginArguments(()
+                endArguments(0, (, ))
+              endConstExpression(const)
+            endFieldInitializer(=, ;)
+          endClassFields(null, null, null, null, null, final, 1, final, ;)
+        endMember()
+        beginMetadataStar(final)
+        endMetadataStar(0)
+        beginMember()
+          beginFields(;)
+            handleIdentifier(Set, typeReference)
+            beginTypeArguments(<)
+              handleIdentifier(Undefined, typeReference)
+              handleNoTypeArguments(>)
+              handleType(Undefined, null)
+            endTypeArguments(1, <, >)
+            handleType(Set, null)
+            handleIdentifier(foo6, fieldDeclaration)
+            beginFieldInitializer(=)
+              handleRecoverableError(Message[UnexpectedToken, Unexpected token 'Set'., null, {lexeme: Set}], Set, Set)
+              beginConstLiteral(<)
+                beginTypeArguments(<)
+                  handleIdentifier(List, typeReference)
+                  beginTypeArguments(<)
+                    handleIdentifier(int, typeReference)
+                    handleNoTypeArguments(>)
+                    handleType(int, null)
+                  endTypeArguments(1, <, >)
+                  handleType(List, null)
+                endTypeArguments(1, <, >)
+                handleLiteralNull(null)
+                handleLiteralSetOrMap(1, {, const, }, true)
+              endConstLiteral(;)
+            endFieldInitializer(=, ;)
+          endClassFields(null, null, null, null, null, final, 1, final, ;)
+        endMember()
+        beginMetadataStar(final)
+        endMetadataStar(0)
+        beginMember()
+          beginFields(;)
+            handleIdentifier(Set, typeReference)
+            beginTypeArguments(<)
+              handleIdentifier(Undefined, typeReference)
+              handleNoTypeArguments(>)
+              handleType(Undefined, null)
+            endTypeArguments(1, <, >)
+            handleType(Set, null)
+            handleIdentifier(foo7, fieldDeclaration)
+            beginFieldInitializer(=)
+              handleRecoverableError(Message[UnexpectedToken, Unexpected token 'Set'., null, {lexeme: Set}], Set, Set)
+              beginConstLiteral({)
+                handleNoTypeArguments({)
+                handleLiteralNull(null)
+                handleLiteralSetOrMap(1, {, const, }, true)
+              endConstLiteral(;)
+            endFieldInitializer(=, ;)
+          endClassFields(null, null, null, null, null, final, 1, final, ;)
+        endMember()
+        beginMetadataStar(final)
+        endMetadataStar(0)
+        beginMember()
+          beginFields(;)
+            handleIdentifier(Set, typeReference)
+            beginTypeArguments(<)
+              handleIdentifier(Undefined, typeReference)
+              handleNoTypeArguments(>)
+              handleType(Undefined, null)
+            endTypeArguments(1, <, >)
+            handleType(Set, null)
+            handleIdentifier(foo8, fieldDeclaration)
+            beginFieldInitializer(=)
+              beginConstLiteral(<)
+                beginTypeArguments(<)
+                  handleIdentifier(List, typeReference)
+                  beginTypeArguments(<)
+                    handleIdentifier(int, typeReference)
+                    handleNoTypeArguments(>)
+                    handleType(int, null)
+                  endTypeArguments(1, <, >)
+                  handleType(List, null)
+                endTypeArguments(1, <, >)
+                handleLiteralNull(null)
+                handleLiteralSetOrMap(1, {, const, }, true)
+              endConstLiteral(;)
+            endFieldInitializer(=, ;)
+          endClassFields(null, null, null, null, null, final, 1, final, ;)
+        endMember()
+        beginMetadataStar(final)
+        endMetadataStar(0)
+        beginMember()
+          beginFields(;)
+            handleIdentifier(Set, typeReference)
+            beginTypeArguments(<)
+              handleIdentifier(Undefined, typeReference)
+              handleNoTypeArguments(>)
+              handleType(Undefined, null)
+            endTypeArguments(1, <, >)
+            handleType(Set, null)
+            handleIdentifier(foo9, fieldDeclaration)
+            beginFieldInitializer(=)
+              beginConstLiteral({)
+                handleNoTypeArguments({)
+                handleLiteralNull(null)
+                handleLiteralSetOrMap(1, {, const, }, true)
+              endConstLiteral(;)
+            endFieldInitializer(=, ;)
+          endClassFields(null, null, null, null, null, final, 1, final, ;)
+        endMember()
+      endClassOrMixinBody(DeclarationKind.Class, 9, {, })
+    endClassDeclaration(class, })
+  endTopLevelDeclaration()
+endCompilationUnit(1, )
diff --git a/pkg/front_end/parser_testcases/error_recovery/issue_45251_set_const.dart.intertwined.expect b/pkg/front_end/parser_testcases/error_recovery/issue_45251_set_const.dart.intertwined.expect
new file mode 100644
index 0000000..8239dcb
--- /dev/null
+++ b/pkg/front_end/parser_testcases/error_recovery/issue_45251_set_const.dart.intertwined.expect
@@ -0,0 +1,416 @@
+parseUnit(class)
+  skipErrorTokens(class)
+  listener: beginCompilationUnit(class)
+  syntheticPreviousToken(class)
+  parseTopLevelDeclarationImpl(, Instance of 'DirectiveContext')
+    parseMetadataStar()
+      listener: beginMetadataStar(class)
+      listener: endMetadataStar(0)
+    parseTopLevelKeywordDeclaration(, class, Instance of 'DirectiveContext')
+      parseClassDeclarationModifiers(, class)
+      parseClassOrNamedMixinApplication(null, class)
+        listener: beginClassOrNamedMixinApplicationPrelude(class)
+        ensureIdentifier(class, classOrMixinDeclaration)
+          listener: handleIdentifier(F, classOrMixinDeclaration)
+        listener: handleNoTypeVariables({)
+        listener: beginClassDeclaration(class, null, F)
+        parseClass(F, class, class, F)
+          parseClassHeaderOpt(F, class, class)
+            parseClassExtendsOpt(F)
+              listener: handleNoType(F)
+              listener: handleClassExtends(null, 1)
+            parseWithClauseOpt(F)
+              listener: handleClassNoWithClause()
+            parseClassOrMixinImplementsOpt(F)
+              listener: handleClassOrMixinImplements(null, 0)
+            listener: handleClassHeader(class, class, null)
+          parseClassOrMixinOrExtensionBody(F, DeclarationKind.Class, F)
+            listener: beginClassOrMixinBody(DeclarationKind.Class, {)
+            notEofOrValue(}, final)
+            parseClassOrMixinOrExtensionMemberImpl({, DeclarationKind.Class, F)
+              parseMetadataStar({)
+                listener: beginMetadataStar(final)
+                listener: endMetadataStar(0)
+              listener: beginMember()
+              parseFields({, null, null, null, null, null, final, final, Instance of 'SimpleTypeWith1Argument', foo1, DeclarationKind.Class, F, false)
+                listener: beginFields({)
+                listener: handleIdentifier(Set, typeReference)
+                listener: beginTypeArguments(<)
+                listener: handleIdentifier(Undefined, typeReference)
+                listener: handleNoTypeArguments(>)
+                listener: handleType(Undefined, null)
+                listener: endTypeArguments(1, <, >)
+                listener: handleType(Set, null)
+                ensureIdentifierPotentiallyRecovered(>, fieldDeclaration, false)
+                  listener: handleIdentifier(foo1, fieldDeclaration)
+                parseFieldInitializerOpt(foo1, foo1, null, null, null, final, DeclarationKind.Class, F)
+                  listener: beginFieldInitializer(=)
+                  parseExpression(=)
+                    parsePrecedenceExpression(=, 1, true)
+                      parseUnaryExpression(=, true)
+                        parsePrimary(=, expression)
+                          parseConstExpression(=)
+                            reportRecoverableErrorWithToken(Set, Instance of 'Template<(Token) => Message>')
+                              listener: handleRecoverableError(Message[UnexpectedToken, Unexpected token 'Set'., null, {lexeme: Set}], Set, Set)
+                            listener: beginConstLiteral(<)
+                            parseLiteralListSetMapOrFunction(Set, const)
+                              listener: beginTypeArguments(<)
+                              listener: handleIdentifier(List, typeReference)
+                              listener: beginTypeArguments(<)
+                              listener: handleIdentifier(int, typeReference)
+                              listener: handleNoTypeArguments(>)
+                              listener: handleType(int, null)
+                              listener: endTypeArguments(1, <, >)
+                              listener: handleType(List, null)
+                              listener: endTypeArguments(1, <, >)
+                              parseLiteralSetOrMapSuffix(>, const)
+                                listener: handleLiteralSetOrMap(0, {, const, }, false)
+                            listener: endConstLiteral(;)
+                  listener: endFieldInitializer(=, ;)
+                listener: endClassFields(null, null, null, null, null, final, 1, final, ;)
+              listener: endMember()
+            notEofOrValue(}, final)
+            parseClassOrMixinOrExtensionMemberImpl(;, DeclarationKind.Class, F)
+              parseMetadataStar(;)
+                listener: beginMetadataStar(final)
+                listener: endMetadataStar(0)
+              listener: beginMember()
+              parseFields(;, null, null, null, null, null, final, final, Instance of 'SimpleTypeWith1Argument', foo2, DeclarationKind.Class, F, false)
+                listener: beginFields(;)
+                listener: handleIdentifier(Set, typeReference)
+                listener: beginTypeArguments(<)
+                listener: handleIdentifier(Undefined, typeReference)
+                listener: handleNoTypeArguments(>)
+                listener: handleType(Undefined, null)
+                listener: endTypeArguments(1, <, >)
+                listener: handleType(Set, null)
+                ensureIdentifierPotentiallyRecovered(>, fieldDeclaration, false)
+                  listener: handleIdentifier(foo2, fieldDeclaration)
+                parseFieldInitializerOpt(foo2, foo2, null, null, null, final, DeclarationKind.Class, F)
+                  listener: beginFieldInitializer(=)
+                  parseExpression(=)
+                    parsePrecedenceExpression(=, 1, true)
+                      parseUnaryExpression(=, true)
+                        parsePrimary(=, expression)
+                          parseConstExpression(=)
+                            listener: beginConstLiteral(<)
+                            parseLiteralListSetMapOrFunction(const, const)
+                              listener: beginTypeArguments(<)
+                              listener: handleIdentifier(List, typeReference)
+                              listener: beginTypeArguments(<)
+                              listener: handleIdentifier(int, typeReference)
+                              listener: handleNoTypeArguments(>)
+                              listener: handleType(int, null)
+                              listener: endTypeArguments(1, <, >)
+                              listener: handleType(List, null)
+                              listener: endTypeArguments(1, <, >)
+                              parseLiteralSetOrMapSuffix(>, const)
+                                listener: handleLiteralSetOrMap(0, {, const, }, false)
+                            listener: endConstLiteral(;)
+                  listener: endFieldInitializer(=, ;)
+                listener: endClassFields(null, null, null, null, null, final, 1, final, ;)
+              listener: endMember()
+            notEofOrValue(}, final)
+            parseClassOrMixinOrExtensionMemberImpl(;, DeclarationKind.Class, F)
+              parseMetadataStar(;)
+                listener: beginMetadataStar(final)
+                listener: endMetadataStar(0)
+              listener: beginMember()
+              parseFields(;, null, null, null, null, null, final, final, Instance of 'SimpleTypeWith1Argument', foo3, DeclarationKind.Class, F, false)
+                listener: beginFields(;)
+                listener: handleIdentifier(Set, typeReference)
+                listener: beginTypeArguments(<)
+                listener: handleIdentifier(Undefined, typeReference)
+                listener: handleNoTypeArguments(>)
+                listener: handleType(Undefined, null)
+                listener: endTypeArguments(1, <, >)
+                listener: handleType(Set, null)
+                ensureIdentifierPotentiallyRecovered(>, fieldDeclaration, false)
+                  listener: handleIdentifier(foo3, fieldDeclaration)
+                parseFieldInitializerOpt(foo3, foo3, null, null, null, final, DeclarationKind.Class, F)
+                  listener: beginFieldInitializer(=)
+                  parseExpression(=)
+                    parsePrecedenceExpression(=, 1, true)
+                      parseUnaryExpression(=, true)
+                        parsePrimary(=, expression)
+                          parseConstExpression(=)
+                            reportRecoverableErrorWithToken(Set, Instance of 'Template<(Token) => Message>')
+                              listener: handleRecoverableError(Message[UnexpectedToken, Unexpected token 'Set'., null, {lexeme: Set}], Set, Set)
+                            listener: beginConstLiteral({)
+                            listener: handleNoTypeArguments({)
+                            parseLiteralSetOrMapSuffix(Set, const)
+                              listener: handleLiteralSetOrMap(0, {, const, }, false)
+                            listener: endConstLiteral(;)
+                  listener: endFieldInitializer(=, ;)
+                listener: endClassFields(null, null, null, null, null, final, 1, final, ;)
+              listener: endMember()
+            notEofOrValue(}, final)
+            parseClassOrMixinOrExtensionMemberImpl(;, DeclarationKind.Class, F)
+              parseMetadataStar(;)
+                listener: beginMetadataStar(final)
+                listener: endMetadataStar(0)
+              listener: beginMember()
+              parseFields(;, null, null, null, null, null, final, final, Instance of 'SimpleTypeWith1Argument', foo4, DeclarationKind.Class, F, false)
+                listener: beginFields(;)
+                listener: handleIdentifier(Set, typeReference)
+                listener: beginTypeArguments(<)
+                listener: handleIdentifier(Undefined, typeReference)
+                listener: handleNoTypeArguments(>)
+                listener: handleType(Undefined, null)
+                listener: endTypeArguments(1, <, >)
+                listener: handleType(Set, null)
+                ensureIdentifierPotentiallyRecovered(>, fieldDeclaration, false)
+                  listener: handleIdentifier(foo4, fieldDeclaration)
+                parseFieldInitializerOpt(foo4, foo4, null, null, null, final, DeclarationKind.Class, F)
+                  listener: beginFieldInitializer(=)
+                  parseExpression(=)
+                    parsePrecedenceExpression(=, 1, true)
+                      parseUnaryExpression(=, true)
+                        parsePrimary(=, expression)
+                          parseConstExpression(=)
+                            listener: beginConstExpression(const)
+                            parseConstructorReference(const, Instance of 'ComplexTypeParamOrArgInfo')
+                              ensureIdentifier(const, constructorReference)
+                                listener: handleIdentifier(Set, constructorReference)
+                              listener: beginConstructorReference(Set)
+                              parseQualifiedRestOpt(Set, constructorReferenceContinuation)
+                              listener: beginTypeArguments(<)
+                              listener: handleIdentifier(List, typeReference)
+                              listener: beginTypeArguments(<)
+                              listener: handleIdentifier(int, typeReference)
+                              listener: handleNoTypeArguments(>)
+                              listener: handleType(int, null)
+                              listener: endTypeArguments(1, <, >)
+                              listener: handleType(List, null)
+                              listener: endTypeArguments(1, <, >)
+                              listener: handleNoConstructorReferenceContinuationAfterTypeArguments(()
+                              listener: endConstructorReference(Set, null, ()
+                            parseConstructorInvocationArguments(>)
+                              parseArgumentsRest(()
+                                listener: beginArguments(()
+                                listener: endArguments(0, (, ))
+                            listener: endConstExpression(const)
+                  listener: endFieldInitializer(=, ;)
+                listener: endClassFields(null, null, null, null, null, final, 1, final, ;)
+              listener: endMember()
+            notEofOrValue(}, final)
+            parseClassOrMixinOrExtensionMemberImpl(;, DeclarationKind.Class, F)
+              parseMetadataStar(;)
+                listener: beginMetadataStar(final)
+                listener: endMetadataStar(0)
+              listener: beginMember()
+              parseFields(;, null, null, null, null, null, final, final, Instance of 'SimpleTypeWith1Argument', foo5, DeclarationKind.Class, F, false)
+                listener: beginFields(;)
+                listener: handleIdentifier(Set, typeReference)
+                listener: beginTypeArguments(<)
+                listener: handleIdentifier(Undefined, typeReference)
+                listener: handleNoTypeArguments(>)
+                listener: handleType(Undefined, null)
+                listener: endTypeArguments(1, <, >)
+                listener: handleType(Set, null)
+                ensureIdentifierPotentiallyRecovered(>, fieldDeclaration, false)
+                  listener: handleIdentifier(foo5, fieldDeclaration)
+                parseFieldInitializerOpt(foo5, foo5, null, null, null, final, DeclarationKind.Class, F)
+                  listener: beginFieldInitializer(=)
+                  parseExpression(=)
+                    parsePrecedenceExpression(=, 1, true)
+                      parseUnaryExpression(=, true)
+                        parsePrimary(=, expression)
+                          parseConstExpression(=)
+                            listener: beginConstExpression(const)
+                            parseConstructorReference(const, Instance of 'NoTypeParamOrArg')
+                              ensureIdentifier(const, constructorReference)
+                                listener: handleIdentifier(Set, constructorReference)
+                              listener: beginConstructorReference(Set)
+                              parseQualifiedRestOpt(Set, constructorReferenceContinuation)
+                              listener: handleNoTypeArguments(()
+                              listener: handleNoConstructorReferenceContinuationAfterTypeArguments(()
+                              listener: endConstructorReference(Set, null, ()
+                            parseConstructorInvocationArguments(Set)
+                              parseArgumentsRest(()
+                                listener: beginArguments(()
+                                listener: endArguments(0, (, ))
+                            listener: endConstExpression(const)
+                  listener: endFieldInitializer(=, ;)
+                listener: endClassFields(null, null, null, null, null, final, 1, final, ;)
+              listener: endMember()
+            notEofOrValue(}, final)
+            parseClassOrMixinOrExtensionMemberImpl(;, DeclarationKind.Class, F)
+              parseMetadataStar(;)
+                listener: beginMetadataStar(final)
+                listener: endMetadataStar(0)
+              listener: beginMember()
+              parseFields(;, null, null, null, null, null, final, final, Instance of 'SimpleTypeWith1Argument', foo6, DeclarationKind.Class, F, false)
+                listener: beginFields(;)
+                listener: handleIdentifier(Set, typeReference)
+                listener: beginTypeArguments(<)
+                listener: handleIdentifier(Undefined, typeReference)
+                listener: handleNoTypeArguments(>)
+                listener: handleType(Undefined, null)
+                listener: endTypeArguments(1, <, >)
+                listener: handleType(Set, null)
+                ensureIdentifierPotentiallyRecovered(>, fieldDeclaration, false)
+                  listener: handleIdentifier(foo6, fieldDeclaration)
+                parseFieldInitializerOpt(foo6, foo6, null, null, null, final, DeclarationKind.Class, F)
+                  listener: beginFieldInitializer(=)
+                  parseExpression(=)
+                    parsePrecedenceExpression(=, 1, true)
+                      parseUnaryExpression(=, true)
+                        parsePrimary(=, expression)
+                          parseConstExpression(=)
+                            reportRecoverableErrorWithToken(Set, Instance of 'Template<(Token) => Message>')
+                              listener: handleRecoverableError(Message[UnexpectedToken, Unexpected token 'Set'., null, {lexeme: Set}], Set, Set)
+                            listener: beginConstLiteral(<)
+                            parseLiteralListSetMapOrFunction(Set, const)
+                              listener: beginTypeArguments(<)
+                              listener: handleIdentifier(List, typeReference)
+                              listener: beginTypeArguments(<)
+                              listener: handleIdentifier(int, typeReference)
+                              listener: handleNoTypeArguments(>)
+                              listener: handleType(int, null)
+                              listener: endTypeArguments(1, <, >)
+                              listener: handleType(List, null)
+                              listener: endTypeArguments(1, <, >)
+                              parseLiteralSetOrMapSuffix(>, const)
+                                parseExpression({)
+                                  parsePrecedenceExpression({, 1, true)
+                                    parseUnaryExpression({, true)
+                                      parsePrimary({, expression)
+                                        parseLiteralNull({)
+                                          listener: handleLiteralNull(null)
+                                listener: handleLiteralSetOrMap(1, {, const, }, true)
+                            listener: endConstLiteral(;)
+                  listener: endFieldInitializer(=, ;)
+                listener: endClassFields(null, null, null, null, null, final, 1, final, ;)
+              listener: endMember()
+            notEofOrValue(}, final)
+            parseClassOrMixinOrExtensionMemberImpl(;, DeclarationKind.Class, F)
+              parseMetadataStar(;)
+                listener: beginMetadataStar(final)
+                listener: endMetadataStar(0)
+              listener: beginMember()
+              parseFields(;, null, null, null, null, null, final, final, Instance of 'SimpleTypeWith1Argument', foo7, DeclarationKind.Class, F, false)
+                listener: beginFields(;)
+                listener: handleIdentifier(Set, typeReference)
+                listener: beginTypeArguments(<)
+                listener: handleIdentifier(Undefined, typeReference)
+                listener: handleNoTypeArguments(>)
+                listener: handleType(Undefined, null)
+                listener: endTypeArguments(1, <, >)
+                listener: handleType(Set, null)
+                ensureIdentifierPotentiallyRecovered(>, fieldDeclaration, false)
+                  listener: handleIdentifier(foo7, fieldDeclaration)
+                parseFieldInitializerOpt(foo7, foo7, null, null, null, final, DeclarationKind.Class, F)
+                  listener: beginFieldInitializer(=)
+                  parseExpression(=)
+                    parsePrecedenceExpression(=, 1, true)
+                      parseUnaryExpression(=, true)
+                        parsePrimary(=, expression)
+                          parseConstExpression(=)
+                            reportRecoverableErrorWithToken(Set, Instance of 'Template<(Token) => Message>')
+                              listener: handleRecoverableError(Message[UnexpectedToken, Unexpected token 'Set'., null, {lexeme: Set}], Set, Set)
+                            listener: beginConstLiteral({)
+                            listener: handleNoTypeArguments({)
+                            parseLiteralSetOrMapSuffix(Set, const)
+                              parseExpression({)
+                                parsePrecedenceExpression({, 1, true)
+                                  parseUnaryExpression({, true)
+                                    parsePrimary({, expression)
+                                      parseLiteralNull({)
+                                        listener: handleLiteralNull(null)
+                              listener: handleLiteralSetOrMap(1, {, const, }, true)
+                            listener: endConstLiteral(;)
+                  listener: endFieldInitializer(=, ;)
+                listener: endClassFields(null, null, null, null, null, final, 1, final, ;)
+              listener: endMember()
+            notEofOrValue(}, final)
+            parseClassOrMixinOrExtensionMemberImpl(;, DeclarationKind.Class, F)
+              parseMetadataStar(;)
+                listener: beginMetadataStar(final)
+                listener: endMetadataStar(0)
+              listener: beginMember()
+              parseFields(;, null, null, null, null, null, final, final, Instance of 'SimpleTypeWith1Argument', foo8, DeclarationKind.Class, F, false)
+                listener: beginFields(;)
+                listener: handleIdentifier(Set, typeReference)
+                listener: beginTypeArguments(<)
+                listener: handleIdentifier(Undefined, typeReference)
+                listener: handleNoTypeArguments(>)
+                listener: handleType(Undefined, null)
+                listener: endTypeArguments(1, <, >)
+                listener: handleType(Set, null)
+                ensureIdentifierPotentiallyRecovered(>, fieldDeclaration, false)
+                  listener: handleIdentifier(foo8, fieldDeclaration)
+                parseFieldInitializerOpt(foo8, foo8, null, null, null, final, DeclarationKind.Class, F)
+                  listener: beginFieldInitializer(=)
+                  parseExpression(=)
+                    parsePrecedenceExpression(=, 1, true)
+                      parseUnaryExpression(=, true)
+                        parsePrimary(=, expression)
+                          parseConstExpression(=)
+                            listener: beginConstLiteral(<)
+                            parseLiteralListSetMapOrFunction(const, const)
+                              listener: beginTypeArguments(<)
+                              listener: handleIdentifier(List, typeReference)
+                              listener: beginTypeArguments(<)
+                              listener: handleIdentifier(int, typeReference)
+                              listener: handleNoTypeArguments(>)
+                              listener: handleType(int, null)
+                              listener: endTypeArguments(1, <, >)
+                              listener: handleType(List, null)
+                              listener: endTypeArguments(1, <, >)
+                              parseLiteralSetOrMapSuffix(>, const)
+                                parseExpression({)
+                                  parsePrecedenceExpression({, 1, true)
+                                    parseUnaryExpression({, true)
+                                      parsePrimary({, expression)
+                                        parseLiteralNull({)
+                                          listener: handleLiteralNull(null)
+                                listener: handleLiteralSetOrMap(1, {, const, }, true)
+                            listener: endConstLiteral(;)
+                  listener: endFieldInitializer(=, ;)
+                listener: endClassFields(null, null, null, null, null, final, 1, final, ;)
+              listener: endMember()
+            notEofOrValue(}, final)
+            parseClassOrMixinOrExtensionMemberImpl(;, DeclarationKind.Class, F)
+              parseMetadataStar(;)
+                listener: beginMetadataStar(final)
+                listener: endMetadataStar(0)
+              listener: beginMember()
+              parseFields(;, null, null, null, null, null, final, final, Instance of 'SimpleTypeWith1Argument', foo9, DeclarationKind.Class, F, false)
+                listener: beginFields(;)
+                listener: handleIdentifier(Set, typeReference)
+                listener: beginTypeArguments(<)
+                listener: handleIdentifier(Undefined, typeReference)
+                listener: handleNoTypeArguments(>)
+                listener: handleType(Undefined, null)
+                listener: endTypeArguments(1, <, >)
+                listener: handleType(Set, null)
+                ensureIdentifierPotentiallyRecovered(>, fieldDeclaration, false)
+                  listener: handleIdentifier(foo9, fieldDeclaration)
+                parseFieldInitializerOpt(foo9, foo9, null, null, null, final, DeclarationKind.Class, F)
+                  listener: beginFieldInitializer(=)
+                  parseExpression(=)
+                    parsePrecedenceExpression(=, 1, true)
+                      parseUnaryExpression(=, true)
+                        parsePrimary(=, expression)
+                          parseConstExpression(=)
+                            listener: beginConstLiteral({)
+                            listener: handleNoTypeArguments({)
+                            parseLiteralSetOrMapSuffix(const, const)
+                              parseExpression({)
+                                parsePrecedenceExpression({, 1, true)
+                                  parseUnaryExpression({, true)
+                                    parsePrimary({, expression)
+                                      parseLiteralNull({)
+                                        listener: handleLiteralNull(null)
+                              listener: handleLiteralSetOrMap(1, {, const, }, true)
+                            listener: endConstLiteral(;)
+                  listener: endFieldInitializer(=, ;)
+                listener: endClassFields(null, null, null, null, null, final, 1, final, ;)
+              listener: endMember()
+            notEofOrValue(}, })
+            listener: endClassOrMixinBody(DeclarationKind.Class, 9, {, })
+          listener: endClassDeclaration(class, })
+  listener: endTopLevelDeclaration()
+  reportAllErrorTokens(class)
+  listener: endCompilationUnit(1, )
diff --git a/pkg/front_end/parser_testcases/error_recovery/issue_45251_set_const.dart.parser.expect b/pkg/front_end/parser_testcases/error_recovery/issue_45251_set_const.dart.parser.expect
new file mode 100644
index 0000000..2cbb213
--- /dev/null
+++ b/pkg/front_end/parser_testcases/error_recovery/issue_45251_set_const.dart.parser.expect
@@ -0,0 +1,59 @@
+NOTICE: Stream was rewritten by parser!
+
+class F {
+
+final Set<Undefined> foo1 = const Set<List<int>>{};
+
+
+final Set<Undefined> foo2 = const <List<int>>{};
+
+
+final Set<Undefined> foo3 = const Set{};
+
+
+final Set<Undefined> foo4 = const Set<List<int>>();
+
+
+final Set<Undefined> foo5 = const Set();
+
+
+final Set<Undefined> foo6 = const Set<List<int>>{null};
+
+
+final Set<Undefined> foo7 = const Set{null};
+
+
+final Set<Undefined> foo8 = const <List<int>>{null};
+
+
+final Set<Undefined> foo9 = const {null};
+}
+
+class[KeywordToken] F[StringToken] {[BeginToken]
+
+final[KeywordToken] Set[StringToken]<[BeginToken]Undefined[StringToken]>[SimpleToken] foo1[StringToken] =[SimpleToken] const[KeywordToken] Set[StringToken]<[BeginToken]List[StringToken]<[BeginToken]int[StringToken]>[SimpleToken]>[SimpleToken]{[BeginToken]}[SimpleToken];[SimpleToken]
+
+
+final[KeywordToken] Set[StringToken]<[BeginToken]Undefined[StringToken]>[SimpleToken] foo2[StringToken] =[SimpleToken] const[KeywordToken] <[BeginToken]List[StringToken]<[BeginToken]int[StringToken]>[SimpleToken]>[SimpleToken]{[BeginToken]}[SimpleToken];[SimpleToken]
+
+
+final[KeywordToken] Set[StringToken]<[BeginToken]Undefined[StringToken]>[SimpleToken] foo3[StringToken] =[SimpleToken] const[KeywordToken] Set[StringToken]{[BeginToken]}[SimpleToken];[SimpleToken]
+
+
+final[KeywordToken] Set[StringToken]<[BeginToken]Undefined[StringToken]>[SimpleToken] foo4[StringToken] =[SimpleToken] const[KeywordToken] Set[StringToken]<[BeginToken]List[StringToken]<[BeginToken]int[StringToken]>[SimpleToken]>[SimpleToken]([BeginToken])[SimpleToken];[SimpleToken]
+
+
+final[KeywordToken] Set[StringToken]<[BeginToken]Undefined[StringToken]>[SimpleToken] foo5[StringToken] =[SimpleToken] const[KeywordToken] Set[StringToken]([BeginToken])[SimpleToken];[SimpleToken]
+
+
+final[KeywordToken] Set[StringToken]<[BeginToken]Undefined[StringToken]>[SimpleToken] foo6[StringToken] =[SimpleToken] const[KeywordToken] Set[StringToken]<[BeginToken]List[StringToken]<[BeginToken]int[StringToken]>[SimpleToken]>[SimpleToken]{[BeginToken]null[KeywordToken]}[SimpleToken];[SimpleToken]
+
+
+final[KeywordToken] Set[StringToken]<[BeginToken]Undefined[StringToken]>[SimpleToken] foo7[StringToken] =[SimpleToken] const[KeywordToken] Set[StringToken]{[BeginToken]null[KeywordToken]}[SimpleToken];[SimpleToken]
+
+
+final[KeywordToken] Set[StringToken]<[BeginToken]Undefined[StringToken]>[SimpleToken] foo8[StringToken] =[SimpleToken] const[KeywordToken] <[BeginToken]List[StringToken]<[BeginToken]int[StringToken]>[SimpleToken]>[SimpleToken]{[BeginToken]null[KeywordToken]}[SimpleToken];[SimpleToken]
+
+
+final[KeywordToken] Set[StringToken]<[BeginToken]Undefined[StringToken]>[SimpleToken] foo9[StringToken] =[SimpleToken] const[KeywordToken] {[BeginToken]null[KeywordToken]}[SimpleToken];[SimpleToken]
+}[SimpleToken][SimpleToken]
diff --git a/pkg/front_end/parser_testcases/error_recovery/issue_45251_set_const.dart.scanner.expect b/pkg/front_end/parser_testcases/error_recovery/issue_45251_set_const.dart.scanner.expect
new file mode 100644
index 0000000..4f0046a
--- /dev/null
+++ b/pkg/front_end/parser_testcases/error_recovery/issue_45251_set_const.dart.scanner.expect
@@ -0,0 +1,57 @@
+class F {
+
+final Set<Undefined> foo1 = const Set<List<int>>{};
+
+
+final Set<Undefined> foo2 = const <List<int>>{};
+
+
+final Set<Undefined> foo3 = const Set{};
+
+
+final Set<Undefined> foo4 = const Set<List<int>>();
+
+
+final Set<Undefined> foo5 = const Set();
+
+
+final Set<Undefined> foo6 = const Set<List<int>>{null};
+
+
+final Set<Undefined> foo7 = const Set{null};
+
+
+final Set<Undefined> foo8 = const <List<int>>{null};
+
+
+final Set<Undefined> foo9 = const {null};
+}
+
+class[KeywordToken] F[StringToken] {[BeginToken]
+
+final[KeywordToken] Set[StringToken]<[BeginToken]Undefined[StringToken]>[SimpleToken] foo1[StringToken] =[SimpleToken] const[KeywordToken] Set[StringToken]<[BeginToken]List[StringToken]<[BeginToken]int[StringToken]>>[SimpleToken]{[BeginToken]}[SimpleToken];[SimpleToken]
+
+
+final[KeywordToken] Set[StringToken]<[BeginToken]Undefined[StringToken]>[SimpleToken] foo2[StringToken] =[SimpleToken] const[KeywordToken] <[BeginToken]List[StringToken]<[BeginToken]int[StringToken]>>[SimpleToken]{[BeginToken]}[SimpleToken];[SimpleToken]
+
+
+final[KeywordToken] Set[StringToken]<[BeginToken]Undefined[StringToken]>[SimpleToken] foo3[StringToken] =[SimpleToken] const[KeywordToken] Set[StringToken]{[BeginToken]}[SimpleToken];[SimpleToken]
+
+
+final[KeywordToken] Set[StringToken]<[BeginToken]Undefined[StringToken]>[SimpleToken] foo4[StringToken] =[SimpleToken] const[KeywordToken] Set[StringToken]<[BeginToken]List[StringToken]<[BeginToken]int[StringToken]>>[SimpleToken]([BeginToken])[SimpleToken];[SimpleToken]
+
+
+final[KeywordToken] Set[StringToken]<[BeginToken]Undefined[StringToken]>[SimpleToken] foo5[StringToken] =[SimpleToken] const[KeywordToken] Set[StringToken]([BeginToken])[SimpleToken];[SimpleToken]
+
+
+final[KeywordToken] Set[StringToken]<[BeginToken]Undefined[StringToken]>[SimpleToken] foo6[StringToken] =[SimpleToken] const[KeywordToken] Set[StringToken]<[BeginToken]List[StringToken]<[BeginToken]int[StringToken]>>[SimpleToken]{[BeginToken]null[KeywordToken]}[SimpleToken];[SimpleToken]
+
+
+final[KeywordToken] Set[StringToken]<[BeginToken]Undefined[StringToken]>[SimpleToken] foo7[StringToken] =[SimpleToken] const[KeywordToken] Set[StringToken]{[BeginToken]null[KeywordToken]}[SimpleToken];[SimpleToken]
+
+
+final[KeywordToken] Set[StringToken]<[BeginToken]Undefined[StringToken]>[SimpleToken] foo8[StringToken] =[SimpleToken] const[KeywordToken] <[BeginToken]List[StringToken]<[BeginToken]int[StringToken]>>[SimpleToken]{[BeginToken]null[KeywordToken]}[SimpleToken];[SimpleToken]
+
+
+final[KeywordToken] Set[StringToken]<[BeginToken]Undefined[StringToken]>[SimpleToken] foo9[StringToken] =[SimpleToken] const[KeywordToken] {[BeginToken]null[KeywordToken]}[SimpleToken];[SimpleToken]
+}[SimpleToken][SimpleToken]
diff --git a/pkg/front_end/parser_testcases/error_recovery/issue_45251_set_new.dart b/pkg/front_end/parser_testcases/error_recovery/issue_45251_set_new.dart
new file mode 100644
index 0000000..a949b83
--- /dev/null
+++ b/pkg/front_end/parser_testcases/error_recovery/issue_45251_set_new.dart
@@ -0,0 +1,28 @@
+class F {
+  /* notice the braces at the end instead of parenthesis! */
+  final Set<Undefined> foo1 = new Set<List<int>>{};
+
+  // variation #1: new makes it bad.
+  final Set<Undefined> foo2 = new <List<int>>{};
+
+  // variation #2: Bad.
+  final Set<Undefined> foo3 = new Set{};
+
+  // variation #3: OK.
+  final Set<Undefined> foo4 = new Set<List<int>>();
+
+  // variation #4: OK.
+  final Set<Undefined> foo5 = new Set();
+
+  // variation #5: Bad.
+  final Set<Undefined> foo6 = new Set<List<int>>{null};
+
+  // variation #6: Bad.
+  final Set<Undefined> foo7 = new Set{null};
+
+  // variation #7: new makes it bad.
+  final Set<Undefined> foo8 = new <List<int>>{null};
+
+  // variation #8: new makes it bad.
+  final Set<Undefined> foo9 = new {null};
+}
\ No newline at end of file
diff --git a/pkg/front_end/parser_testcases/error_recovery/issue_45251_set_new.dart.expect b/pkg/front_end/parser_testcases/error_recovery/issue_45251_set_new.dart.expect
new file mode 100644
index 0000000..aa57003
--- /dev/null
+++ b/pkg/front_end/parser_testcases/error_recovery/issue_45251_set_new.dart.expect
@@ -0,0 +1,294 @@
+Problems reported:
+
+parser/error_recovery/issue_45251_set_new:3:31: Unexpected token 'new'.
+  final Set<Undefined> foo1 = new Set<List<int>>{};
+                              ^^^
+
+parser/error_recovery/issue_45251_set_new:3:35: Unexpected token 'Set'.
+  final Set<Undefined> foo1 = new Set<List<int>>{};
+                                  ^^^
+
+parser/error_recovery/issue_45251_set_new:6:31: Unexpected token 'new'.
+  final Set<Undefined> foo2 = new <List<int>>{};
+                              ^^^
+
+parser/error_recovery/issue_45251_set_new:9:31: Unexpected token 'new'.
+  final Set<Undefined> foo3 = new Set{};
+                              ^^^
+
+parser/error_recovery/issue_45251_set_new:9:35: Unexpected token 'Set'.
+  final Set<Undefined> foo3 = new Set{};
+                                  ^^^
+
+parser/error_recovery/issue_45251_set_new:18:31: Unexpected token 'new'.
+  final Set<Undefined> foo6 = new Set<List<int>>{null};
+                              ^^^
+
+parser/error_recovery/issue_45251_set_new:18:35: Unexpected token 'Set'.
+  final Set<Undefined> foo6 = new Set<List<int>>{null};
+                                  ^^^
+
+parser/error_recovery/issue_45251_set_new:21:31: Unexpected token 'new'.
+  final Set<Undefined> foo7 = new Set{null};
+                              ^^^
+
+parser/error_recovery/issue_45251_set_new:21:35: Unexpected token 'Set'.
+  final Set<Undefined> foo7 = new Set{null};
+                                  ^^^
+
+parser/error_recovery/issue_45251_set_new:24:31: Unexpected token 'new'.
+  final Set<Undefined> foo8 = new <List<int>>{null};
+                              ^^^
+
+parser/error_recovery/issue_45251_set_new:27:31: Unexpected token 'new'.
+  final Set<Undefined> foo9 = new {null};
+                              ^^^
+
+beginCompilationUnit(class)
+  beginMetadataStar(class)
+  endMetadataStar(0)
+  beginClassOrNamedMixinApplicationPrelude(class)
+    handleIdentifier(F, classOrMixinDeclaration)
+    handleNoTypeVariables({)
+    beginClassDeclaration(class, null, F)
+      handleNoType(F)
+      handleClassExtends(null, 1)
+      handleClassNoWithClause()
+      handleClassOrMixinImplements(null, 0)
+      handleClassHeader(class, class, null)
+      beginClassOrMixinBody(DeclarationKind.Class, {)
+        beginMetadataStar(final)
+        endMetadataStar(0)
+        beginMember()
+          beginFields({)
+            handleIdentifier(Set, typeReference)
+            beginTypeArguments(<)
+              handleIdentifier(Undefined, typeReference)
+              handleNoTypeArguments(>)
+              handleType(Undefined, null)
+            endTypeArguments(1, <, >)
+            handleType(Set, null)
+            handleIdentifier(foo1, fieldDeclaration)
+            beginFieldInitializer(=)
+              handleRecoverableError(Message[UnexpectedToken, Unexpected token 'new'., null, {lexeme: new}], new, new)
+              handleRecoverableError(Message[UnexpectedToken, Unexpected token 'Set'., null, {lexeme: Set}], Set, Set)
+              beginTypeArguments(<)
+                handleIdentifier(List, typeReference)
+                beginTypeArguments(<)
+                  handleIdentifier(int, typeReference)
+                  handleNoTypeArguments(>)
+                  handleType(int, null)
+                endTypeArguments(1, <, >)
+                handleType(List, null)
+              endTypeArguments(1, <, >)
+              handleLiteralSetOrMap(0, {, null, }, false)
+            endFieldInitializer(=, ;)
+          endClassFields(null, null, null, null, null, final, 1, final, ;)
+        endMember()
+        beginMetadataStar(final)
+        endMetadataStar(0)
+        beginMember()
+          beginFields(;)
+            handleIdentifier(Set, typeReference)
+            beginTypeArguments(<)
+              handleIdentifier(Undefined, typeReference)
+              handleNoTypeArguments(>)
+              handleType(Undefined, null)
+            endTypeArguments(1, <, >)
+            handleType(Set, null)
+            handleIdentifier(foo2, fieldDeclaration)
+            beginFieldInitializer(=)
+              handleRecoverableError(Message[UnexpectedToken, Unexpected token 'new'., null, {lexeme: new}], new, new)
+              beginTypeArguments(<)
+                handleIdentifier(List, typeReference)
+                beginTypeArguments(<)
+                  handleIdentifier(int, typeReference)
+                  handleNoTypeArguments(>)
+                  handleType(int, null)
+                endTypeArguments(1, <, >)
+                handleType(List, null)
+              endTypeArguments(1, <, >)
+              handleLiteralSetOrMap(0, {, null, }, false)
+            endFieldInitializer(=, ;)
+          endClassFields(null, null, null, null, null, final, 1, final, ;)
+        endMember()
+        beginMetadataStar(final)
+        endMetadataStar(0)
+        beginMember()
+          beginFields(;)
+            handleIdentifier(Set, typeReference)
+            beginTypeArguments(<)
+              handleIdentifier(Undefined, typeReference)
+              handleNoTypeArguments(>)
+              handleType(Undefined, null)
+            endTypeArguments(1, <, >)
+            handleType(Set, null)
+            handleIdentifier(foo3, fieldDeclaration)
+            beginFieldInitializer(=)
+              handleRecoverableError(Message[UnexpectedToken, Unexpected token 'new'., null, {lexeme: new}], new, new)
+              handleRecoverableError(Message[UnexpectedToken, Unexpected token 'Set'., null, {lexeme: Set}], Set, Set)
+              handleNoTypeArguments({)
+              handleLiteralSetOrMap(0, {, null, }, false)
+            endFieldInitializer(=, ;)
+          endClassFields(null, null, null, null, null, final, 1, final, ;)
+        endMember()
+        beginMetadataStar(final)
+        endMetadataStar(0)
+        beginMember()
+          beginFields(;)
+            handleIdentifier(Set, typeReference)
+            beginTypeArguments(<)
+              handleIdentifier(Undefined, typeReference)
+              handleNoTypeArguments(>)
+              handleType(Undefined, null)
+            endTypeArguments(1, <, >)
+            handleType(Set, null)
+            handleIdentifier(foo4, fieldDeclaration)
+            beginFieldInitializer(=)
+              beginNewExpression(new)
+                handleIdentifier(Set, constructorReference)
+                beginConstructorReference(Set)
+                  beginTypeArguments(<)
+                    handleIdentifier(List, typeReference)
+                    beginTypeArguments(<)
+                      handleIdentifier(int, typeReference)
+                      handleNoTypeArguments(>)
+                      handleType(int, null)
+                    endTypeArguments(1, <, >)
+                    handleType(List, null)
+                  endTypeArguments(1, <, >)
+                  handleNoConstructorReferenceContinuationAfterTypeArguments(()
+                endConstructorReference(Set, null, ()
+                beginArguments(()
+                endArguments(0, (, ))
+              endNewExpression(new)
+            endFieldInitializer(=, ;)
+          endClassFields(null, null, null, null, null, final, 1, final, ;)
+        endMember()
+        beginMetadataStar(final)
+        endMetadataStar(0)
+        beginMember()
+          beginFields(;)
+            handleIdentifier(Set, typeReference)
+            beginTypeArguments(<)
+              handleIdentifier(Undefined, typeReference)
+              handleNoTypeArguments(>)
+              handleType(Undefined, null)
+            endTypeArguments(1, <, >)
+            handleType(Set, null)
+            handleIdentifier(foo5, fieldDeclaration)
+            beginFieldInitializer(=)
+              beginNewExpression(new)
+                handleIdentifier(Set, constructorReference)
+                beginConstructorReference(Set)
+                  handleNoTypeArguments(()
+                  handleNoConstructorReferenceContinuationAfterTypeArguments(()
+                endConstructorReference(Set, null, ()
+                beginArguments(()
+                endArguments(0, (, ))
+              endNewExpression(new)
+            endFieldInitializer(=, ;)
+          endClassFields(null, null, null, null, null, final, 1, final, ;)
+        endMember()
+        beginMetadataStar(final)
+        endMetadataStar(0)
+        beginMember()
+          beginFields(;)
+            handleIdentifier(Set, typeReference)
+            beginTypeArguments(<)
+              handleIdentifier(Undefined, typeReference)
+              handleNoTypeArguments(>)
+              handleType(Undefined, null)
+            endTypeArguments(1, <, >)
+            handleType(Set, null)
+            handleIdentifier(foo6, fieldDeclaration)
+            beginFieldInitializer(=)
+              handleRecoverableError(Message[UnexpectedToken, Unexpected token 'new'., null, {lexeme: new}], new, new)
+              handleRecoverableError(Message[UnexpectedToken, Unexpected token 'Set'., null, {lexeme: Set}], Set, Set)
+              beginTypeArguments(<)
+                handleIdentifier(List, typeReference)
+                beginTypeArguments(<)
+                  handleIdentifier(int, typeReference)
+                  handleNoTypeArguments(>)
+                  handleType(int, null)
+                endTypeArguments(1, <, >)
+                handleType(List, null)
+              endTypeArguments(1, <, >)
+              handleLiteralNull(null)
+              handleLiteralSetOrMap(1, {, null, }, true)
+            endFieldInitializer(=, ;)
+          endClassFields(null, null, null, null, null, final, 1, final, ;)
+        endMember()
+        beginMetadataStar(final)
+        endMetadataStar(0)
+        beginMember()
+          beginFields(;)
+            handleIdentifier(Set, typeReference)
+            beginTypeArguments(<)
+              handleIdentifier(Undefined, typeReference)
+              handleNoTypeArguments(>)
+              handleType(Undefined, null)
+            endTypeArguments(1, <, >)
+            handleType(Set, null)
+            handleIdentifier(foo7, fieldDeclaration)
+            beginFieldInitializer(=)
+              handleRecoverableError(Message[UnexpectedToken, Unexpected token 'new'., null, {lexeme: new}], new, new)
+              handleRecoverableError(Message[UnexpectedToken, Unexpected token 'Set'., null, {lexeme: Set}], Set, Set)
+              handleNoTypeArguments({)
+              handleLiteralNull(null)
+              handleLiteralSetOrMap(1, {, null, }, true)
+            endFieldInitializer(=, ;)
+          endClassFields(null, null, null, null, null, final, 1, final, ;)
+        endMember()
+        beginMetadataStar(final)
+        endMetadataStar(0)
+        beginMember()
+          beginFields(;)
+            handleIdentifier(Set, typeReference)
+            beginTypeArguments(<)
+              handleIdentifier(Undefined, typeReference)
+              handleNoTypeArguments(>)
+              handleType(Undefined, null)
+            endTypeArguments(1, <, >)
+            handleType(Set, null)
+            handleIdentifier(foo8, fieldDeclaration)
+            beginFieldInitializer(=)
+              handleRecoverableError(Message[UnexpectedToken, Unexpected token 'new'., null, {lexeme: new}], new, new)
+              beginTypeArguments(<)
+                handleIdentifier(List, typeReference)
+                beginTypeArguments(<)
+                  handleIdentifier(int, typeReference)
+                  handleNoTypeArguments(>)
+                  handleType(int, null)
+                endTypeArguments(1, <, >)
+                handleType(List, null)
+              endTypeArguments(1, <, >)
+              handleLiteralNull(null)
+              handleLiteralSetOrMap(1, {, null, }, true)
+            endFieldInitializer(=, ;)
+          endClassFields(null, null, null, null, null, final, 1, final, ;)
+        endMember()
+        beginMetadataStar(final)
+        endMetadataStar(0)
+        beginMember()
+          beginFields(;)
+            handleIdentifier(Set, typeReference)
+            beginTypeArguments(<)
+              handleIdentifier(Undefined, typeReference)
+              handleNoTypeArguments(>)
+              handleType(Undefined, null)
+            endTypeArguments(1, <, >)
+            handleType(Set, null)
+            handleIdentifier(foo9, fieldDeclaration)
+            beginFieldInitializer(=)
+              handleRecoverableError(Message[UnexpectedToken, Unexpected token 'new'., null, {lexeme: new}], new, new)
+              handleNoTypeArguments({)
+              handleLiteralNull(null)
+              handleLiteralSetOrMap(1, {, null, }, true)
+            endFieldInitializer(=, ;)
+          endClassFields(null, null, null, null, null, final, 1, final, ;)
+        endMember()
+      endClassOrMixinBody(DeclarationKind.Class, 9, {, })
+    endClassDeclaration(class, })
+  endTopLevelDeclaration()
+endCompilationUnit(1, )
diff --git a/pkg/front_end/parser_testcases/error_recovery/issue_45251_set_new.dart.intertwined.expect b/pkg/front_end/parser_testcases/error_recovery/issue_45251_set_new.dart.intertwined.expect
new file mode 100644
index 0000000..2eb284f
--- /dev/null
+++ b/pkg/front_end/parser_testcases/error_recovery/issue_45251_set_new.dart.intertwined.expect
@@ -0,0 +1,423 @@
+parseUnit(class)
+  skipErrorTokens(class)
+  listener: beginCompilationUnit(class)
+  syntheticPreviousToken(class)
+  parseTopLevelDeclarationImpl(, Instance of 'DirectiveContext')
+    parseMetadataStar()
+      listener: beginMetadataStar(class)
+      listener: endMetadataStar(0)
+    parseTopLevelKeywordDeclaration(, class, Instance of 'DirectiveContext')
+      parseClassDeclarationModifiers(, class)
+      parseClassOrNamedMixinApplication(null, class)
+        listener: beginClassOrNamedMixinApplicationPrelude(class)
+        ensureIdentifier(class, classOrMixinDeclaration)
+          listener: handleIdentifier(F, classOrMixinDeclaration)
+        listener: handleNoTypeVariables({)
+        listener: beginClassDeclaration(class, null, F)
+        parseClass(F, class, class, F)
+          parseClassHeaderOpt(F, class, class)
+            parseClassExtendsOpt(F)
+              listener: handleNoType(F)
+              listener: handleClassExtends(null, 1)
+            parseWithClauseOpt(F)
+              listener: handleClassNoWithClause()
+            parseClassOrMixinImplementsOpt(F)
+              listener: handleClassOrMixinImplements(null, 0)
+            listener: handleClassHeader(class, class, null)
+          parseClassOrMixinOrExtensionBody(F, DeclarationKind.Class, F)
+            listener: beginClassOrMixinBody(DeclarationKind.Class, {)
+            notEofOrValue(}, final)
+            parseClassOrMixinOrExtensionMemberImpl({, DeclarationKind.Class, F)
+              parseMetadataStar({)
+                listener: beginMetadataStar(final)
+                listener: endMetadataStar(0)
+              listener: beginMember()
+              parseFields({, null, null, null, null, null, final, final, Instance of 'SimpleTypeWith1Argument', foo1, DeclarationKind.Class, F, false)
+                listener: beginFields({)
+                listener: handleIdentifier(Set, typeReference)
+                listener: beginTypeArguments(<)
+                listener: handleIdentifier(Undefined, typeReference)
+                listener: handleNoTypeArguments(>)
+                listener: handleType(Undefined, null)
+                listener: endTypeArguments(1, <, >)
+                listener: handleType(Set, null)
+                ensureIdentifierPotentiallyRecovered(>, fieldDeclaration, false)
+                  listener: handleIdentifier(foo1, fieldDeclaration)
+                parseFieldInitializerOpt(foo1, foo1, null, null, null, final, DeclarationKind.Class, F)
+                  listener: beginFieldInitializer(=)
+                  parseExpression(=)
+                    parsePrecedenceExpression(=, 1, true)
+                      parseUnaryExpression(=, true)
+                        parsePrimary(=, expression)
+                          parseNewExpression(=)
+                            reportRecoverableErrorWithToken(new, Instance of 'Template<(Token) => Message>')
+                              listener: handleRecoverableError(Message[UnexpectedToken, Unexpected token 'new'., null, {lexeme: new}], new, new)
+                            reportRecoverableErrorWithToken(Set, Instance of 'Template<(Token) => Message>')
+                              listener: handleRecoverableError(Message[UnexpectedToken, Unexpected token 'Set'., null, {lexeme: Set}], Set, Set)
+                            parsePrimary(Set, expression)
+                              parseLiteralListSetMapOrFunction(Set, null)
+                                listener: beginTypeArguments(<)
+                                listener: handleIdentifier(List, typeReference)
+                                listener: beginTypeArguments(<)
+                                listener: handleIdentifier(int, typeReference)
+                                listener: handleNoTypeArguments(>)
+                                listener: handleType(int, null)
+                                listener: endTypeArguments(1, <, >)
+                                listener: handleType(List, null)
+                                listener: endTypeArguments(1, <, >)
+                                parseLiteralSetOrMapSuffix(>, null)
+                                  listener: handleLiteralSetOrMap(0, {, null, }, false)
+                  listener: endFieldInitializer(=, ;)
+                listener: endClassFields(null, null, null, null, null, final, 1, final, ;)
+              listener: endMember()
+            notEofOrValue(}, final)
+            parseClassOrMixinOrExtensionMemberImpl(;, DeclarationKind.Class, F)
+              parseMetadataStar(;)
+                listener: beginMetadataStar(final)
+                listener: endMetadataStar(0)
+              listener: beginMember()
+              parseFields(;, null, null, null, null, null, final, final, Instance of 'SimpleTypeWith1Argument', foo2, DeclarationKind.Class, F, false)
+                listener: beginFields(;)
+                listener: handleIdentifier(Set, typeReference)
+                listener: beginTypeArguments(<)
+                listener: handleIdentifier(Undefined, typeReference)
+                listener: handleNoTypeArguments(>)
+                listener: handleType(Undefined, null)
+                listener: endTypeArguments(1, <, >)
+                listener: handleType(Set, null)
+                ensureIdentifierPotentiallyRecovered(>, fieldDeclaration, false)
+                  listener: handleIdentifier(foo2, fieldDeclaration)
+                parseFieldInitializerOpt(foo2, foo2, null, null, null, final, DeclarationKind.Class, F)
+                  listener: beginFieldInitializer(=)
+                  parseExpression(=)
+                    parsePrecedenceExpression(=, 1, true)
+                      parseUnaryExpression(=, true)
+                        parsePrimary(=, expression)
+                          parseNewExpression(=)
+                            reportRecoverableErrorWithToken(new, Instance of 'Template<(Token) => Message>')
+                              listener: handleRecoverableError(Message[UnexpectedToken, Unexpected token 'new'., null, {lexeme: new}], new, new)
+                            parsePrimary(new, expression)
+                              parseLiteralListSetMapOrFunction(new, null)
+                                listener: beginTypeArguments(<)
+                                listener: handleIdentifier(List, typeReference)
+                                listener: beginTypeArguments(<)
+                                listener: handleIdentifier(int, typeReference)
+                                listener: handleNoTypeArguments(>)
+                                listener: handleType(int, null)
+                                listener: endTypeArguments(1, <, >)
+                                listener: handleType(List, null)
+                                listener: endTypeArguments(1, <, >)
+                                parseLiteralSetOrMapSuffix(>, null)
+                                  listener: handleLiteralSetOrMap(0, {, null, }, false)
+                  listener: endFieldInitializer(=, ;)
+                listener: endClassFields(null, null, null, null, null, final, 1, final, ;)
+              listener: endMember()
+            notEofOrValue(}, final)
+            parseClassOrMixinOrExtensionMemberImpl(;, DeclarationKind.Class, F)
+              parseMetadataStar(;)
+                listener: beginMetadataStar(final)
+                listener: endMetadataStar(0)
+              listener: beginMember()
+              parseFields(;, null, null, null, null, null, final, final, Instance of 'SimpleTypeWith1Argument', foo3, DeclarationKind.Class, F, false)
+                listener: beginFields(;)
+                listener: handleIdentifier(Set, typeReference)
+                listener: beginTypeArguments(<)
+                listener: handleIdentifier(Undefined, typeReference)
+                listener: handleNoTypeArguments(>)
+                listener: handleType(Undefined, null)
+                listener: endTypeArguments(1, <, >)
+                listener: handleType(Set, null)
+                ensureIdentifierPotentiallyRecovered(>, fieldDeclaration, false)
+                  listener: handleIdentifier(foo3, fieldDeclaration)
+                parseFieldInitializerOpt(foo3, foo3, null, null, null, final, DeclarationKind.Class, F)
+                  listener: beginFieldInitializer(=)
+                  parseExpression(=)
+                    parsePrecedenceExpression(=, 1, true)
+                      parseUnaryExpression(=, true)
+                        parsePrimary(=, expression)
+                          parseNewExpression(=)
+                            reportRecoverableErrorWithToken(new, Instance of 'Template<(Token) => Message>')
+                              listener: handleRecoverableError(Message[UnexpectedToken, Unexpected token 'new'., null, {lexeme: new}], new, new)
+                            reportRecoverableErrorWithToken(Set, Instance of 'Template<(Token) => Message>')
+                              listener: handleRecoverableError(Message[UnexpectedToken, Unexpected token 'Set'., null, {lexeme: Set}], Set, Set)
+                            parsePrimary(Set, expression)
+                              listener: handleNoTypeArguments({)
+                              parseLiteralSetOrMapSuffix(Set, null)
+                                listener: handleLiteralSetOrMap(0, {, null, }, false)
+                  listener: endFieldInitializer(=, ;)
+                listener: endClassFields(null, null, null, null, null, final, 1, final, ;)
+              listener: endMember()
+            notEofOrValue(}, final)
+            parseClassOrMixinOrExtensionMemberImpl(;, DeclarationKind.Class, F)
+              parseMetadataStar(;)
+                listener: beginMetadataStar(final)
+                listener: endMetadataStar(0)
+              listener: beginMember()
+              parseFields(;, null, null, null, null, null, final, final, Instance of 'SimpleTypeWith1Argument', foo4, DeclarationKind.Class, F, false)
+                listener: beginFields(;)
+                listener: handleIdentifier(Set, typeReference)
+                listener: beginTypeArguments(<)
+                listener: handleIdentifier(Undefined, typeReference)
+                listener: handleNoTypeArguments(>)
+                listener: handleType(Undefined, null)
+                listener: endTypeArguments(1, <, >)
+                listener: handleType(Set, null)
+                ensureIdentifierPotentiallyRecovered(>, fieldDeclaration, false)
+                  listener: handleIdentifier(foo4, fieldDeclaration)
+                parseFieldInitializerOpt(foo4, foo4, null, null, null, final, DeclarationKind.Class, F)
+                  listener: beginFieldInitializer(=)
+                  parseExpression(=)
+                    parsePrecedenceExpression(=, 1, true)
+                      parseUnaryExpression(=, true)
+                        parsePrimary(=, expression)
+                          parseNewExpression(=)
+                            listener: beginNewExpression(new)
+                            parseConstructorReference(new, Instance of 'ComplexTypeParamOrArgInfo')
+                              ensureIdentifier(new, constructorReference)
+                                listener: handleIdentifier(Set, constructorReference)
+                              listener: beginConstructorReference(Set)
+                              parseQualifiedRestOpt(Set, constructorReferenceContinuation)
+                              listener: beginTypeArguments(<)
+                              listener: handleIdentifier(List, typeReference)
+                              listener: beginTypeArguments(<)
+                              listener: handleIdentifier(int, typeReference)
+                              listener: handleNoTypeArguments(>)
+                              listener: handleType(int, null)
+                              listener: endTypeArguments(1, <, >)
+                              listener: handleType(List, null)
+                              listener: endTypeArguments(1, <, >)
+                              listener: handleNoConstructorReferenceContinuationAfterTypeArguments(()
+                              listener: endConstructorReference(Set, null, ()
+                            parseConstructorInvocationArguments(>)
+                              parseArgumentsRest(()
+                                listener: beginArguments(()
+                                listener: endArguments(0, (, ))
+                            listener: endNewExpression(new)
+                  listener: endFieldInitializer(=, ;)
+                listener: endClassFields(null, null, null, null, null, final, 1, final, ;)
+              listener: endMember()
+            notEofOrValue(}, final)
+            parseClassOrMixinOrExtensionMemberImpl(;, DeclarationKind.Class, F)
+              parseMetadataStar(;)
+                listener: beginMetadataStar(final)
+                listener: endMetadataStar(0)
+              listener: beginMember()
+              parseFields(;, null, null, null, null, null, final, final, Instance of 'SimpleTypeWith1Argument', foo5, DeclarationKind.Class, F, false)
+                listener: beginFields(;)
+                listener: handleIdentifier(Set, typeReference)
+                listener: beginTypeArguments(<)
+                listener: handleIdentifier(Undefined, typeReference)
+                listener: handleNoTypeArguments(>)
+                listener: handleType(Undefined, null)
+                listener: endTypeArguments(1, <, >)
+                listener: handleType(Set, null)
+                ensureIdentifierPotentiallyRecovered(>, fieldDeclaration, false)
+                  listener: handleIdentifier(foo5, fieldDeclaration)
+                parseFieldInitializerOpt(foo5, foo5, null, null, null, final, DeclarationKind.Class, F)
+                  listener: beginFieldInitializer(=)
+                  parseExpression(=)
+                    parsePrecedenceExpression(=, 1, true)
+                      parseUnaryExpression(=, true)
+                        parsePrimary(=, expression)
+                          parseNewExpression(=)
+                            listener: beginNewExpression(new)
+                            parseConstructorReference(new, Instance of 'NoTypeParamOrArg')
+                              ensureIdentifier(new, constructorReference)
+                                listener: handleIdentifier(Set, constructorReference)
+                              listener: beginConstructorReference(Set)
+                              parseQualifiedRestOpt(Set, constructorReferenceContinuation)
+                              listener: handleNoTypeArguments(()
+                              listener: handleNoConstructorReferenceContinuationAfterTypeArguments(()
+                              listener: endConstructorReference(Set, null, ()
+                            parseConstructorInvocationArguments(Set)
+                              parseArgumentsRest(()
+                                listener: beginArguments(()
+                                listener: endArguments(0, (, ))
+                            listener: endNewExpression(new)
+                  listener: endFieldInitializer(=, ;)
+                listener: endClassFields(null, null, null, null, null, final, 1, final, ;)
+              listener: endMember()
+            notEofOrValue(}, final)
+            parseClassOrMixinOrExtensionMemberImpl(;, DeclarationKind.Class, F)
+              parseMetadataStar(;)
+                listener: beginMetadataStar(final)
+                listener: endMetadataStar(0)
+              listener: beginMember()
+              parseFields(;, null, null, null, null, null, final, final, Instance of 'SimpleTypeWith1Argument', foo6, DeclarationKind.Class, F, false)
+                listener: beginFields(;)
+                listener: handleIdentifier(Set, typeReference)
+                listener: beginTypeArguments(<)
+                listener: handleIdentifier(Undefined, typeReference)
+                listener: handleNoTypeArguments(>)
+                listener: handleType(Undefined, null)
+                listener: endTypeArguments(1, <, >)
+                listener: handleType(Set, null)
+                ensureIdentifierPotentiallyRecovered(>, fieldDeclaration, false)
+                  listener: handleIdentifier(foo6, fieldDeclaration)
+                parseFieldInitializerOpt(foo6, foo6, null, null, null, final, DeclarationKind.Class, F)
+                  listener: beginFieldInitializer(=)
+                  parseExpression(=)
+                    parsePrecedenceExpression(=, 1, true)
+                      parseUnaryExpression(=, true)
+                        parsePrimary(=, expression)
+                          parseNewExpression(=)
+                            reportRecoverableErrorWithToken(new, Instance of 'Template<(Token) => Message>')
+                              listener: handleRecoverableError(Message[UnexpectedToken, Unexpected token 'new'., null, {lexeme: new}], new, new)
+                            reportRecoverableErrorWithToken(Set, Instance of 'Template<(Token) => Message>')
+                              listener: handleRecoverableError(Message[UnexpectedToken, Unexpected token 'Set'., null, {lexeme: Set}], Set, Set)
+                            parsePrimary(Set, expression)
+                              parseLiteralListSetMapOrFunction(Set, null)
+                                listener: beginTypeArguments(<)
+                                listener: handleIdentifier(List, typeReference)
+                                listener: beginTypeArguments(<)
+                                listener: handleIdentifier(int, typeReference)
+                                listener: handleNoTypeArguments(>)
+                                listener: handleType(int, null)
+                                listener: endTypeArguments(1, <, >)
+                                listener: handleType(List, null)
+                                listener: endTypeArguments(1, <, >)
+                                parseLiteralSetOrMapSuffix(>, null)
+                                  parseExpression({)
+                                    parsePrecedenceExpression({, 1, true)
+                                      parseUnaryExpression({, true)
+                                        parsePrimary({, expression)
+                                          parseLiteralNull({)
+                                            listener: handleLiteralNull(null)
+                                  listener: handleLiteralSetOrMap(1, {, null, }, true)
+                  listener: endFieldInitializer(=, ;)
+                listener: endClassFields(null, null, null, null, null, final, 1, final, ;)
+              listener: endMember()
+            notEofOrValue(}, final)
+            parseClassOrMixinOrExtensionMemberImpl(;, DeclarationKind.Class, F)
+              parseMetadataStar(;)
+                listener: beginMetadataStar(final)
+                listener: endMetadataStar(0)
+              listener: beginMember()
+              parseFields(;, null, null, null, null, null, final, final, Instance of 'SimpleTypeWith1Argument', foo7, DeclarationKind.Class, F, false)
+                listener: beginFields(;)
+                listener: handleIdentifier(Set, typeReference)
+                listener: beginTypeArguments(<)
+                listener: handleIdentifier(Undefined, typeReference)
+                listener: handleNoTypeArguments(>)
+                listener: handleType(Undefined, null)
+                listener: endTypeArguments(1, <, >)
+                listener: handleType(Set, null)
+                ensureIdentifierPotentiallyRecovered(>, fieldDeclaration, false)
+                  listener: handleIdentifier(foo7, fieldDeclaration)
+                parseFieldInitializerOpt(foo7, foo7, null, null, null, final, DeclarationKind.Class, F)
+                  listener: beginFieldInitializer(=)
+                  parseExpression(=)
+                    parsePrecedenceExpression(=, 1, true)
+                      parseUnaryExpression(=, true)
+                        parsePrimary(=, expression)
+                          parseNewExpression(=)
+                            reportRecoverableErrorWithToken(new, Instance of 'Template<(Token) => Message>')
+                              listener: handleRecoverableError(Message[UnexpectedToken, Unexpected token 'new'., null, {lexeme: new}], new, new)
+                            reportRecoverableErrorWithToken(Set, Instance of 'Template<(Token) => Message>')
+                              listener: handleRecoverableError(Message[UnexpectedToken, Unexpected token 'Set'., null, {lexeme: Set}], Set, Set)
+                            parsePrimary(Set, expression)
+                              listener: handleNoTypeArguments({)
+                              parseLiteralSetOrMapSuffix(Set, null)
+                                parseExpression({)
+                                  parsePrecedenceExpression({, 1, true)
+                                    parseUnaryExpression({, true)
+                                      parsePrimary({, expression)
+                                        parseLiteralNull({)
+                                          listener: handleLiteralNull(null)
+                                listener: handleLiteralSetOrMap(1, {, null, }, true)
+                  listener: endFieldInitializer(=, ;)
+                listener: endClassFields(null, null, null, null, null, final, 1, final, ;)
+              listener: endMember()
+            notEofOrValue(}, final)
+            parseClassOrMixinOrExtensionMemberImpl(;, DeclarationKind.Class, F)
+              parseMetadataStar(;)
+                listener: beginMetadataStar(final)
+                listener: endMetadataStar(0)
+              listener: beginMember()
+              parseFields(;, null, null, null, null, null, final, final, Instance of 'SimpleTypeWith1Argument', foo8, DeclarationKind.Class, F, false)
+                listener: beginFields(;)
+                listener: handleIdentifier(Set, typeReference)
+                listener: beginTypeArguments(<)
+                listener: handleIdentifier(Undefined, typeReference)
+                listener: handleNoTypeArguments(>)
+                listener: handleType(Undefined, null)
+                listener: endTypeArguments(1, <, >)
+                listener: handleType(Set, null)
+                ensureIdentifierPotentiallyRecovered(>, fieldDeclaration, false)
+                  listener: handleIdentifier(foo8, fieldDeclaration)
+                parseFieldInitializerOpt(foo8, foo8, null, null, null, final, DeclarationKind.Class, F)
+                  listener: beginFieldInitializer(=)
+                  parseExpression(=)
+                    parsePrecedenceExpression(=, 1, true)
+                      parseUnaryExpression(=, true)
+                        parsePrimary(=, expression)
+                          parseNewExpression(=)
+                            reportRecoverableErrorWithToken(new, Instance of 'Template<(Token) => Message>')
+                              listener: handleRecoverableError(Message[UnexpectedToken, Unexpected token 'new'., null, {lexeme: new}], new, new)
+                            parsePrimary(new, expression)
+                              parseLiteralListSetMapOrFunction(new, null)
+                                listener: beginTypeArguments(<)
+                                listener: handleIdentifier(List, typeReference)
+                                listener: beginTypeArguments(<)
+                                listener: handleIdentifier(int, typeReference)
+                                listener: handleNoTypeArguments(>)
+                                listener: handleType(int, null)
+                                listener: endTypeArguments(1, <, >)
+                                listener: handleType(List, null)
+                                listener: endTypeArguments(1, <, >)
+                                parseLiteralSetOrMapSuffix(>, null)
+                                  parseExpression({)
+                                    parsePrecedenceExpression({, 1, true)
+                                      parseUnaryExpression({, true)
+                                        parsePrimary({, expression)
+                                          parseLiteralNull({)
+                                            listener: handleLiteralNull(null)
+                                  listener: handleLiteralSetOrMap(1, {, null, }, true)
+                  listener: endFieldInitializer(=, ;)
+                listener: endClassFields(null, null, null, null, null, final, 1, final, ;)
+              listener: endMember()
+            notEofOrValue(}, final)
+            parseClassOrMixinOrExtensionMemberImpl(;, DeclarationKind.Class, F)
+              parseMetadataStar(;)
+                listener: beginMetadataStar(final)
+                listener: endMetadataStar(0)
+              listener: beginMember()
+              parseFields(;, null, null, null, null, null, final, final, Instance of 'SimpleTypeWith1Argument', foo9, DeclarationKind.Class, F, false)
+                listener: beginFields(;)
+                listener: handleIdentifier(Set, typeReference)
+                listener: beginTypeArguments(<)
+                listener: handleIdentifier(Undefined, typeReference)
+                listener: handleNoTypeArguments(>)
+                listener: handleType(Undefined, null)
+                listener: endTypeArguments(1, <, >)
+                listener: handleType(Set, null)
+                ensureIdentifierPotentiallyRecovered(>, fieldDeclaration, false)
+                  listener: handleIdentifier(foo9, fieldDeclaration)
+                parseFieldInitializerOpt(foo9, foo9, null, null, null, final, DeclarationKind.Class, F)
+                  listener: beginFieldInitializer(=)
+                  parseExpression(=)
+                    parsePrecedenceExpression(=, 1, true)
+                      parseUnaryExpression(=, true)
+                        parsePrimary(=, expression)
+                          parseNewExpression(=)
+                            reportRecoverableErrorWithToken(new, Instance of 'Template<(Token) => Message>')
+                              listener: handleRecoverableError(Message[UnexpectedToken, Unexpected token 'new'., null, {lexeme: new}], new, new)
+                            parsePrimary(new, expression)
+                              listener: handleNoTypeArguments({)
+                              parseLiteralSetOrMapSuffix(new, null)
+                                parseExpression({)
+                                  parsePrecedenceExpression({, 1, true)
+                                    parseUnaryExpression({, true)
+                                      parsePrimary({, expression)
+                                        parseLiteralNull({)
+                                          listener: handleLiteralNull(null)
+                                listener: handleLiteralSetOrMap(1, {, null, }, true)
+                  listener: endFieldInitializer(=, ;)
+                listener: endClassFields(null, null, null, null, null, final, 1, final, ;)
+              listener: endMember()
+            notEofOrValue(}, })
+            listener: endClassOrMixinBody(DeclarationKind.Class, 9, {, })
+          listener: endClassDeclaration(class, })
+  listener: endTopLevelDeclaration()
+  reportAllErrorTokens(class)
+  listener: endCompilationUnit(1, )
diff --git a/pkg/front_end/parser_testcases/error_recovery/issue_45251_set_new.dart.parser.expect b/pkg/front_end/parser_testcases/error_recovery/issue_45251_set_new.dart.parser.expect
new file mode 100644
index 0000000..2f51b76
--- /dev/null
+++ b/pkg/front_end/parser_testcases/error_recovery/issue_45251_set_new.dart.parser.expect
@@ -0,0 +1,59 @@
+NOTICE: Stream was rewritten by parser!
+
+class F {
+
+final Set<Undefined> foo1 = new Set<List<int>>{};
+
+
+final Set<Undefined> foo2 = new <List<int>>{};
+
+
+final Set<Undefined> foo3 = new Set{};
+
+
+final Set<Undefined> foo4 = new Set<List<int>>();
+
+
+final Set<Undefined> foo5 = new Set();
+
+
+final Set<Undefined> foo6 = new Set<List<int>>{null};
+
+
+final Set<Undefined> foo7 = new Set{null};
+
+
+final Set<Undefined> foo8 = new <List<int>>{null};
+
+
+final Set<Undefined> foo9 = new {null};
+}
+
+class[KeywordToken] F[StringToken] {[BeginToken]
+
+final[KeywordToken] Set[StringToken]<[BeginToken]Undefined[StringToken]>[SimpleToken] foo1[StringToken] =[SimpleToken] new[KeywordToken] Set[StringToken]<[BeginToken]List[StringToken]<[BeginToken]int[StringToken]>[SimpleToken]>[SimpleToken]{[BeginToken]}[SimpleToken];[SimpleToken]
+
+
+final[KeywordToken] Set[StringToken]<[BeginToken]Undefined[StringToken]>[SimpleToken] foo2[StringToken] =[SimpleToken] new[KeywordToken] <[BeginToken]List[StringToken]<[BeginToken]int[StringToken]>[SimpleToken]>[SimpleToken]{[BeginToken]}[SimpleToken];[SimpleToken]
+
+
+final[KeywordToken] Set[StringToken]<[BeginToken]Undefined[StringToken]>[SimpleToken] foo3[StringToken] =[SimpleToken] new[KeywordToken] Set[StringToken]{[BeginToken]}[SimpleToken];[SimpleToken]
+
+
+final[KeywordToken] Set[StringToken]<[BeginToken]Undefined[StringToken]>[SimpleToken] foo4[StringToken] =[SimpleToken] new[KeywordToken] Set[StringToken]<[BeginToken]List[StringToken]<[BeginToken]int[StringToken]>[SimpleToken]>[SimpleToken]([BeginToken])[SimpleToken];[SimpleToken]
+
+
+final[KeywordToken] Set[StringToken]<[BeginToken]Undefined[StringToken]>[SimpleToken] foo5[StringToken] =[SimpleToken] new[KeywordToken] Set[StringToken]([BeginToken])[SimpleToken];[SimpleToken]
+
+
+final[KeywordToken] Set[StringToken]<[BeginToken]Undefined[StringToken]>[SimpleToken] foo6[StringToken] =[SimpleToken] new[KeywordToken] Set[StringToken]<[BeginToken]List[StringToken]<[BeginToken]int[StringToken]>[SimpleToken]>[SimpleToken]{[BeginToken]null[KeywordToken]}[SimpleToken];[SimpleToken]
+
+
+final[KeywordToken] Set[StringToken]<[BeginToken]Undefined[StringToken]>[SimpleToken] foo7[StringToken] =[SimpleToken] new[KeywordToken] Set[StringToken]{[BeginToken]null[KeywordToken]}[SimpleToken];[SimpleToken]
+
+
+final[KeywordToken] Set[StringToken]<[BeginToken]Undefined[StringToken]>[SimpleToken] foo8[StringToken] =[SimpleToken] new[KeywordToken] <[BeginToken]List[StringToken]<[BeginToken]int[StringToken]>[SimpleToken]>[SimpleToken]{[BeginToken]null[KeywordToken]}[SimpleToken];[SimpleToken]
+
+
+final[KeywordToken] Set[StringToken]<[BeginToken]Undefined[StringToken]>[SimpleToken] foo9[StringToken] =[SimpleToken] new[KeywordToken] {[BeginToken]null[KeywordToken]}[SimpleToken];[SimpleToken]
+}[SimpleToken][SimpleToken]
diff --git a/pkg/front_end/parser_testcases/error_recovery/issue_45251_set_new.dart.scanner.expect b/pkg/front_end/parser_testcases/error_recovery/issue_45251_set_new.dart.scanner.expect
new file mode 100644
index 0000000..a92bb6a
--- /dev/null
+++ b/pkg/front_end/parser_testcases/error_recovery/issue_45251_set_new.dart.scanner.expect
@@ -0,0 +1,57 @@
+class F {
+
+final Set<Undefined> foo1 = new Set<List<int>>{};
+
+
+final Set<Undefined> foo2 = new <List<int>>{};
+
+
+final Set<Undefined> foo3 = new Set{};
+
+
+final Set<Undefined> foo4 = new Set<List<int>>();
+
+
+final Set<Undefined> foo5 = new Set();
+
+
+final Set<Undefined> foo6 = new Set<List<int>>{null};
+
+
+final Set<Undefined> foo7 = new Set{null};
+
+
+final Set<Undefined> foo8 = new <List<int>>{null};
+
+
+final Set<Undefined> foo9 = new {null};
+}
+
+class[KeywordToken] F[StringToken] {[BeginToken]
+
+final[KeywordToken] Set[StringToken]<[BeginToken]Undefined[StringToken]>[SimpleToken] foo1[StringToken] =[SimpleToken] new[KeywordToken] Set[StringToken]<[BeginToken]List[StringToken]<[BeginToken]int[StringToken]>>[SimpleToken]{[BeginToken]}[SimpleToken];[SimpleToken]
+
+
+final[KeywordToken] Set[StringToken]<[BeginToken]Undefined[StringToken]>[SimpleToken] foo2[StringToken] =[SimpleToken] new[KeywordToken] <[BeginToken]List[StringToken]<[BeginToken]int[StringToken]>>[SimpleToken]{[BeginToken]}[SimpleToken];[SimpleToken]
+
+
+final[KeywordToken] Set[StringToken]<[BeginToken]Undefined[StringToken]>[SimpleToken] foo3[StringToken] =[SimpleToken] new[KeywordToken] Set[StringToken]{[BeginToken]}[SimpleToken];[SimpleToken]
+
+
+final[KeywordToken] Set[StringToken]<[BeginToken]Undefined[StringToken]>[SimpleToken] foo4[StringToken] =[SimpleToken] new[KeywordToken] Set[StringToken]<[BeginToken]List[StringToken]<[BeginToken]int[StringToken]>>[SimpleToken]([BeginToken])[SimpleToken];[SimpleToken]
+
+
+final[KeywordToken] Set[StringToken]<[BeginToken]Undefined[StringToken]>[SimpleToken] foo5[StringToken] =[SimpleToken] new[KeywordToken] Set[StringToken]([BeginToken])[SimpleToken];[SimpleToken]
+
+
+final[KeywordToken] Set[StringToken]<[BeginToken]Undefined[StringToken]>[SimpleToken] foo6[StringToken] =[SimpleToken] new[KeywordToken] Set[StringToken]<[BeginToken]List[StringToken]<[BeginToken]int[StringToken]>>[SimpleToken]{[BeginToken]null[KeywordToken]}[SimpleToken];[SimpleToken]
+
+
+final[KeywordToken] Set[StringToken]<[BeginToken]Undefined[StringToken]>[SimpleToken] foo7[StringToken] =[SimpleToken] new[KeywordToken] Set[StringToken]{[BeginToken]null[KeywordToken]}[SimpleToken];[SimpleToken]
+
+
+final[KeywordToken] Set[StringToken]<[BeginToken]Undefined[StringToken]>[SimpleToken] foo8[StringToken] =[SimpleToken] new[KeywordToken] <[BeginToken]List[StringToken]<[BeginToken]int[StringToken]>>[SimpleToken]{[BeginToken]null[KeywordToken]}[SimpleToken];[SimpleToken]
+
+
+final[KeywordToken] Set[StringToken]<[BeginToken]Undefined[StringToken]>[SimpleToken] foo9[StringToken] =[SimpleToken] new[KeywordToken] {[BeginToken]null[KeywordToken]}[SimpleToken];[SimpleToken]
+}[SimpleToken][SimpleToken]
diff --git a/pkg/front_end/test/spell_checking_list_code.txt b/pkg/front_end/test/spell_checking_list_code.txt
index ebe668e..517d068 100644
--- a/pkg/front_end/test/spell_checking_list_code.txt
+++ b/pkg/front_end/test/spell_checking_list_code.txt
@@ -251,6 +251,7 @@
 corrected
 corrections
 cosmetic
+costly
 counters
 covariances
 coverage
@@ -1376,6 +1377,7 @@
 wn
 worthwhile
 worthy
+woven
 writeln
 wrongfully
 wrt
diff --git a/pkg/front_end/testcases/regress/issue_31155.dart.textual_outline.expect b/pkg/front_end/testcases/regress/issue_31155.dart.textual_outline.expect
index 79e9364..89f0128 100644
--- a/pkg/front_end/testcases/regress/issue_31155.dart.textual_outline.expect
+++ b/pkg/front_end/testcases/regress/issue_31155.dart.textual_outline.expect
@@ -2,8 +2,6 @@
 class A {}
 class B {}
 class C {
-  var f = Map<A, B;
-  operator> (){}
-  ;
+  var f = Map<A, B> {};
 }
 void main() {}
diff --git a/pkg/front_end/testcases/regress/issue_31155.dart.weak.expect b/pkg/front_end/testcases/regress/issue_31155.dart.weak.expect
index 1cad098..0acdfa9 100644
--- a/pkg/front_end/testcases/regress/issue_31155.dart.weak.expect
+++ b/pkg/front_end/testcases/regress/issue_31155.dart.weak.expect
@@ -2,33 +2,9 @@
 //
 // Problems in library:
 //
-// pkg/front_end/testcases/regress/issue_31155.dart:11:18: Error: Expected ';' after this.
+// pkg/front_end/testcases/regress/issue_31155.dart:11:11: Error: Unexpected token 'Map'.
 //   var f = Map<A, B> {};
-//                  ^
-//
-// pkg/front_end/testcases/regress/issue_31155.dart:11:19: Error: Operator declarations must be preceded by the keyword 'operator'.
-// Try adding the keyword 'operator'.
-//   var f = Map<A, B> {};
-//                   ^
-//
-// pkg/front_end/testcases/regress/issue_31155.dart:11:19: Error: A method declaration needs an explicit list of parameters.
-// Try adding a parameter list to the method declaration.
-//   var f = Map<A, B> {};
-//                   ^
-//
-// pkg/front_end/testcases/regress/issue_31155.dart:11:19: Error: Operator '>' should have exactly one parameter.
-//   var f = Map<A, B> {};
-//                   ^
-//
-// pkg/front_end/testcases/regress/issue_31155.dart:11:23: Error: Expected a class member, but got ';'.
-//   var f = Map<A, B> {};
-//                       ^
-//
-// pkg/front_end/testcases/regress/issue_31155.dart:11:14: Error: The operator '<' isn't defined for the class 'Type'.
-//  - 'Type' is from 'dart:core'.
-// Try correcting the operator to an existing operator, or defining a '<' operator.
-//   var f = Map<A, B> {};
-//              ^
+//           ^^^
 //
 import self as self;
 import "dart:core" as core;
@@ -64,16 +40,10 @@
   abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
 }
 class C extends core::Object {
-  field dynamic f = invalid-expression "pkg/front_end/testcases/regress/issue_31155.dart:11:14: Error: The operator '<' isn't defined for the class 'Type'.
- - 'Type' is from 'dart:core'.
-Try correcting the operator to an existing operator, or defining a '<' operator.
-  var f = Map<A, B> {};
-             ^";
-  field dynamic B = null;
+  field core::Map<self::A*, self::B*>* f = <self::A*, self::B*>{};
   synthetic constructor •() → self::C*
     : super core::Object::•()
     ;
-  operator >() → dynamic {}
   abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
   abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
   abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
diff --git a/pkg/front_end/testcases/regress/issue_31155.dart.weak.outline.expect b/pkg/front_end/testcases/regress/issue_31155.dart.weak.outline.expect
index 86f986c..45d6de2 100644
--- a/pkg/front_end/testcases/regress/issue_31155.dart.weak.outline.expect
+++ b/pkg/front_end/testcases/regress/issue_31155.dart.weak.outline.expect
@@ -2,27 +2,9 @@
 //
 // Problems in library:
 //
-// pkg/front_end/testcases/regress/issue_31155.dart:11:18: Error: Expected ';' after this.
+// pkg/front_end/testcases/regress/issue_31155.dart:11:11: Error: Unexpected token 'Map'.
 //   var f = Map<A, B> {};
-//                  ^
-//
-// pkg/front_end/testcases/regress/issue_31155.dart:11:19: Error: Operator declarations must be preceded by the keyword 'operator'.
-// Try adding the keyword 'operator'.
-//   var f = Map<A, B> {};
-//                   ^
-//
-// pkg/front_end/testcases/regress/issue_31155.dart:11:19: Error: A method declaration needs an explicit list of parameters.
-// Try adding a parameter list to the method declaration.
-//   var f = Map<A, B> {};
-//                   ^
-//
-// pkg/front_end/testcases/regress/issue_31155.dart:11:19: Error: Operator '>' should have exactly one parameter.
-//   var f = Map<A, B> {};
-//                   ^
-//
-// pkg/front_end/testcases/regress/issue_31155.dart:11:23: Error: Expected a class member, but got ';'.
-//   var f = Map<A, B> {};
-//                       ^
+//           ^^^
 //
 import self as self;
 import "dart:core" as core;
@@ -56,12 +38,9 @@
   abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
 }
 class C extends core::Object {
-  field dynamic f;
-  field dynamic B;
+  field core::Map<self::A*, self::B*>* f;
   synthetic constructor •() → self::C*
     ;
-  operator >() → dynamic
-    ;
   abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
   abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
   abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
diff --git a/pkg/front_end/testcases/regress/issue_31155.dart.weak.transformed.expect b/pkg/front_end/testcases/regress/issue_31155.dart.weak.transformed.expect
index 1cad098..0acdfa9 100644
--- a/pkg/front_end/testcases/regress/issue_31155.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/regress/issue_31155.dart.weak.transformed.expect
@@ -2,33 +2,9 @@
 //
 // Problems in library:
 //
-// pkg/front_end/testcases/regress/issue_31155.dart:11:18: Error: Expected ';' after this.
+// pkg/front_end/testcases/regress/issue_31155.dart:11:11: Error: Unexpected token 'Map'.
 //   var f = Map<A, B> {};
-//                  ^
-//
-// pkg/front_end/testcases/regress/issue_31155.dart:11:19: Error: Operator declarations must be preceded by the keyword 'operator'.
-// Try adding the keyword 'operator'.
-//   var f = Map<A, B> {};
-//                   ^
-//
-// pkg/front_end/testcases/regress/issue_31155.dart:11:19: Error: A method declaration needs an explicit list of parameters.
-// Try adding a parameter list to the method declaration.
-//   var f = Map<A, B> {};
-//                   ^
-//
-// pkg/front_end/testcases/regress/issue_31155.dart:11:19: Error: Operator '>' should have exactly one parameter.
-//   var f = Map<A, B> {};
-//                   ^
-//
-// pkg/front_end/testcases/regress/issue_31155.dart:11:23: Error: Expected a class member, but got ';'.
-//   var f = Map<A, B> {};
-//                       ^
-//
-// pkg/front_end/testcases/regress/issue_31155.dart:11:14: Error: The operator '<' isn't defined for the class 'Type'.
-//  - 'Type' is from 'dart:core'.
-// Try correcting the operator to an existing operator, or defining a '<' operator.
-//   var f = Map<A, B> {};
-//              ^
+//           ^^^
 //
 import self as self;
 import "dart:core" as core;
@@ -64,16 +40,10 @@
   abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
 }
 class C extends core::Object {
-  field dynamic f = invalid-expression "pkg/front_end/testcases/regress/issue_31155.dart:11:14: Error: The operator '<' isn't defined for the class 'Type'.
- - 'Type' is from 'dart:core'.
-Try correcting the operator to an existing operator, or defining a '<' operator.
-  var f = Map<A, B> {};
-             ^";
-  field dynamic B = null;
+  field core::Map<self::A*, self::B*>* f = <self::A*, self::B*>{};
   synthetic constructor •() → self::C*
     : super core::Object::•()
     ;
-  operator >() → dynamic {}
   abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
   abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
   abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
diff --git a/tests/language/list/literal5_test.dart b/tests/language/list/literal5_test.dart
index a1cbe6a..5226bb7 100644
--- a/tests/language/list/literal5_test.dart
+++ b/tests/language/list/literal5_test.dart
@@ -6,13 +6,10 @@
 
 main() {
   new List<int>[1, 2];
-  //  ^^^^^^^^^
-  // [analyzer] COMPILE_TIME_ERROR.DEFAULT_LIST_CONSTRUCTOR
-  // [cfe] Can't use the default List constructor.
-  //          ^
-  // [analyzer] SYNTACTIC_ERROR.EXPECTED_TOKEN
-  // [cfe] Expected '(' after this.
-  //             ^
-  // [analyzer] SYNTACTIC_ERROR.EXPECTED_TOKEN
-  // [cfe] Expected ']' before this.
+//^^^
+// [analyzer] SYNTACTIC_ERROR.UNEXPECTED_TOKEN
+// [cfe] Unexpected token 'new'.
+  //  ^^^^
+  // [analyzer] SYNTACTIC_ERROR.UNEXPECTED_TOKEN
+  // [cfe] Unexpected token 'List'.
 }
diff --git a/tests/language/map/literal13_test.dart b/tests/language/map/literal13_test.dart
index 08f06e4..5ebbbc9 100644
--- a/tests/language/map/literal13_test.dart
+++ b/tests/language/map/literal13_test.dart
@@ -6,76 +6,22 @@
 
 main() {
   var map = new Map<int>{ "a": 1, "b": 2, "c": 3 };
-  //            ^^^^^^^^
-  // [analyzer] COMPILE_TIME_ERROR.WRONG_NUMBER_OF_TYPE_ARGUMENTS
-  // [cfe] Expected 2 type arguments.
-  //                   ^
-  // [analyzer] SYNTACTIC_ERROR.EXPECTED_TOKEN
-  // [cfe] Expected '(' after this.
-  //                    ^
-  // [analyzer] SYNTACTIC_ERROR.EXPECTED_TOKEN
-  // [cfe] Expected ';' after this.
-  //                      ^^^
-  // [analyzer] SYNTACTIC_ERROR.EXPECTED_TOKEN
-  // [cfe] Expected ';' after this.
+  //        ^^^
+  // [analyzer] SYNTACTIC_ERROR.UNEXPECTED_TOKEN
+  // [cfe] Unexpected token 'new'.
+  //            ^^^
+  // [analyzer] SYNTACTIC_ERROR.UNEXPECTED_TOKEN
+  // [cfe] Unexpected token 'Map'.
+  //                      ^^^^^^
+  // [analyzer] COMPILE_TIME_ERROR.MAP_ENTRY_NOT_IN_MAP
   //                         ^
-  // [analyzer] SYNTACTIC_ERROR.EXPECTED_TOKEN
-  // [cfe] Expected ';' after this.
-  //                         ^
-  // [analyzer] SYNTACTIC_ERROR.MISSING_IDENTIFIER
-  // [cfe] Expected an identifier, but got ':'.
-  //                         ^
-  // [analyzer] SYNTACTIC_ERROR.UNEXPECTED_TOKEN
-  // [cfe] Unexpected token ':'.
-  //                           ^
-  // [analyzer] SYNTACTIC_ERROR.EXPECTED_TOKEN
-  // [cfe] Expected ';' after this.
-  //                            ^
-  // [analyzer] SYNTACTIC_ERROR.EXPECTED_TOKEN
-  // [cfe] Expected ';' after this.
-  //                            ^
-  // [analyzer] SYNTACTIC_ERROR.MISSING_IDENTIFIER
-  // [cfe] Expected an identifier, but got ','.
-  //                            ^
-  // [analyzer] SYNTACTIC_ERROR.UNEXPECTED_TOKEN
-  // [cfe] Unexpected token ','.
-  //                              ^^^
-  // [analyzer] SYNTACTIC_ERROR.EXPECTED_TOKEN
-  // [cfe] Expected ';' after this.
+  // [cfe] Expected ',' before this.
+  //                              ^^^^^^
+  // [analyzer] COMPILE_TIME_ERROR.MAP_ENTRY_NOT_IN_MAP
   //                                 ^
-  // [analyzer] SYNTACTIC_ERROR.EXPECTED_TOKEN
-  // [cfe] Expected ';' after this.
-  //                                 ^
-  // [analyzer] SYNTACTIC_ERROR.MISSING_IDENTIFIER
-  // [cfe] Expected an identifier, but got ':'.
-  //                                 ^
-  // [analyzer] SYNTACTIC_ERROR.UNEXPECTED_TOKEN
-  // [cfe] Unexpected token ':'.
-  //                                   ^
-  // [analyzer] SYNTACTIC_ERROR.EXPECTED_TOKEN
-  // [cfe] Expected ';' after this.
-  //                                    ^
-  // [analyzer] SYNTACTIC_ERROR.EXPECTED_TOKEN
-  // [cfe] Expected ';' after this.
-  //                                    ^
-  // [analyzer] SYNTACTIC_ERROR.MISSING_IDENTIFIER
-  // [cfe] Expected an identifier, but got ','.
-  //                                    ^
-  // [analyzer] SYNTACTIC_ERROR.UNEXPECTED_TOKEN
-  // [cfe] Unexpected token ','.
-  //                                      ^^^
-  // [analyzer] SYNTACTIC_ERROR.EXPECTED_TOKEN
-  // [cfe] Expected ';' after this.
+  // [cfe] Expected ',' before this.
+  //                                      ^^^^^^
+  // [analyzer] COMPILE_TIME_ERROR.MAP_ENTRY_NOT_IN_MAP
   //                                         ^
-  // [analyzer] SYNTACTIC_ERROR.EXPECTED_TOKEN
-  // [cfe] Expected ';' after this.
-  //                                         ^
-  // [analyzer] SYNTACTIC_ERROR.MISSING_IDENTIFIER
-  // [cfe] Expected an identifier, but got ':'.
-  //                                         ^
-  // [analyzer] SYNTACTIC_ERROR.UNEXPECTED_TOKEN
-  // [cfe] Unexpected token ':'.
-  //                                           ^
-  // [analyzer] SYNTACTIC_ERROR.EXPECTED_TOKEN
-  // [cfe] Expected ';' after this.
+  // [cfe] Expected ',' before this.
 }
diff --git a/tests/language_2/list/literal5_test.dart b/tests/language_2/list/literal5_test.dart
index 81969be..5226bb7 100644
--- a/tests/language_2/list/literal5_test.dart
+++ b/tests/language_2/list/literal5_test.dart
@@ -6,10 +6,10 @@
 
 main() {
   new List<int>[1, 2];
-  //          ^
-  // [analyzer] SYNTACTIC_ERROR.EXPECTED_TOKEN
-  // [cfe] Expected '(' after this.
-  //             ^
-  // [analyzer] SYNTACTIC_ERROR.EXPECTED_TOKEN
-  // [cfe] Expected ']' before this.
+//^^^
+// [analyzer] SYNTACTIC_ERROR.UNEXPECTED_TOKEN
+// [cfe] Unexpected token 'new'.
+  //  ^^^^
+  // [analyzer] SYNTACTIC_ERROR.UNEXPECTED_TOKEN
+  // [cfe] Unexpected token 'List'.
 }
diff --git a/tests/language_2/map/literal13_test.dart b/tests/language_2/map/literal13_test.dart
index 08f06e4..5ebbbc9 100644
--- a/tests/language_2/map/literal13_test.dart
+++ b/tests/language_2/map/literal13_test.dart
@@ -6,76 +6,22 @@
 
 main() {
   var map = new Map<int>{ "a": 1, "b": 2, "c": 3 };
-  //            ^^^^^^^^
-  // [analyzer] COMPILE_TIME_ERROR.WRONG_NUMBER_OF_TYPE_ARGUMENTS
-  // [cfe] Expected 2 type arguments.
-  //                   ^
-  // [analyzer] SYNTACTIC_ERROR.EXPECTED_TOKEN
-  // [cfe] Expected '(' after this.
-  //                    ^
-  // [analyzer] SYNTACTIC_ERROR.EXPECTED_TOKEN
-  // [cfe] Expected ';' after this.
-  //                      ^^^
-  // [analyzer] SYNTACTIC_ERROR.EXPECTED_TOKEN
-  // [cfe] Expected ';' after this.
+  //        ^^^
+  // [analyzer] SYNTACTIC_ERROR.UNEXPECTED_TOKEN
+  // [cfe] Unexpected token 'new'.
+  //            ^^^
+  // [analyzer] SYNTACTIC_ERROR.UNEXPECTED_TOKEN
+  // [cfe] Unexpected token 'Map'.
+  //                      ^^^^^^
+  // [analyzer] COMPILE_TIME_ERROR.MAP_ENTRY_NOT_IN_MAP
   //                         ^
-  // [analyzer] SYNTACTIC_ERROR.EXPECTED_TOKEN
-  // [cfe] Expected ';' after this.
-  //                         ^
-  // [analyzer] SYNTACTIC_ERROR.MISSING_IDENTIFIER
-  // [cfe] Expected an identifier, but got ':'.
-  //                         ^
-  // [analyzer] SYNTACTIC_ERROR.UNEXPECTED_TOKEN
-  // [cfe] Unexpected token ':'.
-  //                           ^
-  // [analyzer] SYNTACTIC_ERROR.EXPECTED_TOKEN
-  // [cfe] Expected ';' after this.
-  //                            ^
-  // [analyzer] SYNTACTIC_ERROR.EXPECTED_TOKEN
-  // [cfe] Expected ';' after this.
-  //                            ^
-  // [analyzer] SYNTACTIC_ERROR.MISSING_IDENTIFIER
-  // [cfe] Expected an identifier, but got ','.
-  //                            ^
-  // [analyzer] SYNTACTIC_ERROR.UNEXPECTED_TOKEN
-  // [cfe] Unexpected token ','.
-  //                              ^^^
-  // [analyzer] SYNTACTIC_ERROR.EXPECTED_TOKEN
-  // [cfe] Expected ';' after this.
+  // [cfe] Expected ',' before this.
+  //                              ^^^^^^
+  // [analyzer] COMPILE_TIME_ERROR.MAP_ENTRY_NOT_IN_MAP
   //                                 ^
-  // [analyzer] SYNTACTIC_ERROR.EXPECTED_TOKEN
-  // [cfe] Expected ';' after this.
-  //                                 ^
-  // [analyzer] SYNTACTIC_ERROR.MISSING_IDENTIFIER
-  // [cfe] Expected an identifier, but got ':'.
-  //                                 ^
-  // [analyzer] SYNTACTIC_ERROR.UNEXPECTED_TOKEN
-  // [cfe] Unexpected token ':'.
-  //                                   ^
-  // [analyzer] SYNTACTIC_ERROR.EXPECTED_TOKEN
-  // [cfe] Expected ';' after this.
-  //                                    ^
-  // [analyzer] SYNTACTIC_ERROR.EXPECTED_TOKEN
-  // [cfe] Expected ';' after this.
-  //                                    ^
-  // [analyzer] SYNTACTIC_ERROR.MISSING_IDENTIFIER
-  // [cfe] Expected an identifier, but got ','.
-  //                                    ^
-  // [analyzer] SYNTACTIC_ERROR.UNEXPECTED_TOKEN
-  // [cfe] Unexpected token ','.
-  //                                      ^^^
-  // [analyzer] SYNTACTIC_ERROR.EXPECTED_TOKEN
-  // [cfe] Expected ';' after this.
+  // [cfe] Expected ',' before this.
+  //                                      ^^^^^^
+  // [analyzer] COMPILE_TIME_ERROR.MAP_ENTRY_NOT_IN_MAP
   //                                         ^
-  // [analyzer] SYNTACTIC_ERROR.EXPECTED_TOKEN
-  // [cfe] Expected ';' after this.
-  //                                         ^
-  // [analyzer] SYNTACTIC_ERROR.MISSING_IDENTIFIER
-  // [cfe] Expected an identifier, but got ':'.
-  //                                         ^
-  // [analyzer] SYNTACTIC_ERROR.UNEXPECTED_TOKEN
-  // [cfe] Unexpected token ':'.
-  //                                           ^
-  // [analyzer] SYNTACTIC_ERROR.EXPECTED_TOKEN
-  // [cfe] Expected ';' after this.
+  // [cfe] Expected ',' before this.
 }
diff --git a/tools/VERSION b/tools/VERSION
index 132037c..d465aa8 100644
--- a/tools/VERSION
+++ b/tools/VERSION
@@ -27,5 +27,5 @@
 MAJOR 2
 MINOR 13
 PATCH 0
-PRERELEASE 132
+PRERELEASE 133
 PRERELEASE_PATCH 0
\ No newline at end of file
