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 097e4fa..a1749b6 100644
--- a/pkg/_fe_analyzer_shared/lib/src/parser/parser_impl.dart
+++ b/pkg/_fe_analyzer_shared/lib/src/parser/parser_impl.dart
@@ -1044,10 +1044,43 @@
   }
 
   /// ```
-  /// annotation:
-  ///   '@' qualified ('.' identifier)? arguments?
-  /// ;
+  /// <metadata> ::= (‘@’ <metadatum>)*
+  /// <metadatum> ::= <identifier>
+  ///   | <qualifiedName>
+  ///   | <constructorDesignation> <arguments>
+  /// <qualifiedName> ::= <typeIdentifier> ‘.’ <identifier>
+  ///   | <typeIdentifier> ‘.’ <typeIdentifier> ‘.’ <identifier>
+  /// <constructorDesignation> ::= <typeIdentifier>
+  ///   | <qualifiedName>
+  ///   | <typeName> <typeArguments> (‘.’ <identifier>)?
+  /// <typeName> ::= <typeIdentifier> (‘.’ <typeIdentifier>)?
   /// ```
+  /// (where typeIdentifier is an identifier that's not on the list of
+  /// built in identifiers)
+  /// So these are legal:
+  /// * identifier
+  /// qualifiedName:
+  /// * typeIdentifier.identifier
+  /// * typeIdentifier.typeIdentifier.identifier
+  /// via constructorDesignation part 1
+  /// * typeIdentifier(arguments)
+  /// via constructorDesignation part 2
+  /// * typeIdentifier.identifier(arguments)
+  /// * typeIdentifier.typeIdentifier.identifier(arguments)
+  /// via constructorDesignation part 3
+  /// * typeIdentifier<typeArguments>(arguments)
+  /// * typeIdentifier<typeArguments>.identifier(arguments)
+  /// * typeIdentifier.typeIdentifier<typeArguments>(arguments)
+  /// * typeIdentifier.typeIdentifier<typeArguments>.identifier(arguments)
+  ///
+  /// So in another way (ignoring the difference between typeIdentifier and
+  /// identifier):
+  /// * 1, 2 or 3 identifiers with or without arguments.
+  /// * 1 or 2 identifiers, then type arguments, then possibly followed by a
+  ///   single identifier, and then (required!) arguments.
+  ///
+  /// Note that if this is updated [skipMetadata] (in util.dart) should be
+  /// updated as well.
   Token parseMetadata(Token token) {
     Token atToken = token.next!;
     assert(optional('@', atToken));
diff --git a/pkg/_fe_analyzer_shared/lib/src/parser/util.dart b/pkg/_fe_analyzer_shared/lib/src/parser/util.dart
index f6f1939..6891278 100644
--- a/pkg/_fe_analyzer_shared/lib/src/parser/util.dart
+++ b/pkg/_fe_analyzer_shared/lib/src/parser/util.dart
@@ -105,10 +105,12 @@
   token = token.next!;
   assert(optional('@', token));
   Token next = token.next!;
+  // Corresponds to 'ensureIdentifier' in [parseMetadata].
   if (next.isIdentifier) {
     token = next;
     next = token.next!;
-    while (optional('.', next)) {
+    // Corresponds to 'parseQualifiedRestOpt' in [parseMetadata].
+    if (optional('.', next)) {
       token = next;
       next = token.next!;
       if (next.isIdentifier) {
@@ -116,6 +118,23 @@
         next = token.next!;
       }
     }
+    // Corresponds to 'computeTypeParamOrArg' in [parseMetadata].
+    if (optional('<', next) && !next.endGroup!.isSynthetic) {
+      token = next.endGroup!;
+      next = token.next!;
+    }
+
+    // The extra .identifier after arguments in in [parseMetadata].
+    if (optional('.', next)) {
+      token = next;
+      next = token.next!;
+      if (next.isIdentifier) {
+        token = next;
+        next = token.next!;
+      }
+    }
+
+    // Corresponds to 'parseArgumentsOpt' in [parseMetadata].
     if (optional('(', next) && !next.endGroup!.isSynthetic) {
       token = next.endGroup!;
       next = token.next!;
diff --git a/pkg/front_end/lib/src/fasta/kernel/body_builder.dart b/pkg/front_end/lib/src/fasta/kernel/body_builder.dart
index 4c6b895..93add07 100644
--- a/pkg/front_end/lib/src/fasta/kernel/body_builder.dart
+++ b/pkg/front_end/lib/src/fasta/kernel/body_builder.dart
@@ -4253,7 +4253,8 @@
       {bool isTearOff}) {
     List<TypeParameter> typeParameters = target.function.typeParameters;
     LocatedMessage argMessage = checkArgumentsForFunction(
-        target.function, arguments, fileOffset, typeParameters);
+        target.function, arguments, fileOffset, typeParameters,
+        isExtensionMemberInvocation: true);
     if (argMessage != null) {
       return throwNoSuchMethodError(forest.createNullLiteral(fileOffset),
           target.name.text, arguments, fileOffset,
@@ -4272,19 +4273,32 @@
 
   @override
   LocatedMessage checkArgumentsForFunction(FunctionNode function,
-      Arguments arguments, int offset, List<TypeParameter> typeParameters) {
+      Arguments arguments, int offset, List<TypeParameter> typeParameters,
+      {bool isExtensionMemberInvocation = false}) {
+    int requiredPositionalParameterCountToReport =
+        function.requiredParameterCount;
+    int positionalParameterCountToReport = function.positionalParameters.length;
+    int positionalArgumentCountToReport =
+        forest.argumentsPositional(arguments).length;
+    if (isExtensionMemberInvocation) {
+      // Extension member invocations have additional synthetic parameter for
+      // `this`.
+      --requiredPositionalParameterCountToReport;
+      --positionalParameterCountToReport;
+      --positionalArgumentCountToReport;
+    }
     if (forest.argumentsPositional(arguments).length <
         function.requiredParameterCount) {
       return fasta.templateTooFewArguments
-          .withArguments(function.requiredParameterCount,
-              forest.argumentsPositional(arguments).length)
+          .withArguments(requiredPositionalParameterCountToReport,
+              positionalArgumentCountToReport)
           .withLocation(uri, arguments.fileOffset, noLength);
     }
     if (forest.argumentsPositional(arguments).length >
         function.positionalParameters.length) {
       return fasta.templateTooManyArguments
-          .withArguments(function.positionalParameters.length,
-              forest.argumentsPositional(arguments).length)
+          .withArguments(
+              positionalParameterCountToReport, positionalArgumentCountToReport)
           .withLocation(uri, arguments.fileOffset, noLength);
     }
     List<NamedExpression> named = forest.argumentsNamed(arguments);
@@ -4331,19 +4345,32 @@
 
   @override
   LocatedMessage checkArgumentsForType(
-      FunctionType function, Arguments arguments, int offset) {
+      FunctionType function, Arguments arguments, int offset,
+      {bool isExtensionMemberInvocation = false}) {
+    int requiredPositionalParameterCountToReport =
+        function.requiredParameterCount;
+    int positionalParameterCountToReport = function.positionalParameters.length;
+    int positionalArgumentCountToReport =
+        forest.argumentsPositional(arguments).length;
+    if (isExtensionMemberInvocation) {
+      // Extension member invocations have additional synthetic parameter for
+      // `this`.
+      --requiredPositionalParameterCountToReport;
+      --positionalParameterCountToReport;
+      --positionalArgumentCountToReport;
+    }
     if (forest.argumentsPositional(arguments).length <
         function.requiredParameterCount) {
       return fasta.templateTooFewArguments
-          .withArguments(function.requiredParameterCount,
-              forest.argumentsPositional(arguments).length)
+          .withArguments(requiredPositionalParameterCountToReport,
+              positionalArgumentCountToReport)
           .withLocation(uri, arguments.fileOffset, noLength);
     }
     if (forest.argumentsPositional(arguments).length >
         function.positionalParameters.length) {
       return fasta.templateTooManyArguments
-          .withArguments(function.positionalParameters.length,
-              forest.argumentsPositional(arguments).length)
+          .withArguments(
+              positionalParameterCountToReport, positionalArgumentCountToReport)
           .withLocation(uri, arguments.fileOffset, noLength);
     }
     List<NamedExpression> named = forest.argumentsNamed(arguments);
diff --git a/pkg/front_end/lib/src/fasta/type_inference/inference_helper.dart b/pkg/front_end/lib/src/fasta/type_inference/inference_helper.dart
index 24f2850..572feea 100644
--- a/pkg/front_end/lib/src/fasta/type_inference/inference_helper.dart
+++ b/pkg/front_end/lib/src/fasta/type_inference/inference_helper.dart
@@ -21,7 +21,8 @@
       {List<LocatedMessage> context, bool suppressMessage});
 
   LocatedMessage checkArgumentsForType(
-      FunctionType function, Arguments arguments, int offset);
+      FunctionType function, Arguments arguments, int offset,
+      {bool isExtensionMemberInvocation = false});
 
   void addProblem(Message message, int charOffset, int length,
       {List<LocatedMessage> context, bool wasHandled});
diff --git a/pkg/front_end/lib/src/fasta/type_inference/type_inferrer.dart b/pkg/front_end/lib/src/fasta/type_inference/type_inferrer.dart
index 0c4eca9..78e4c89 100644
--- a/pkg/front_end/lib/src/fasta/type_inference/type_inferrer.dart
+++ b/pkg/front_end/lib/src/fasta/type_inference/type_inferrer.dart
@@ -2058,7 +2058,8 @@
       bool isConst: false,
       bool isImplicitExtensionMember: false,
       bool isImplicitCall: false,
-      Member staticTarget}) {
+      Member staticTarget,
+      bool isExtensionMemberInvocation = false}) {
     int extensionTypeParameterCount = getExtensionTypeParameterCount(arguments);
     if (extensionTypeParameterCount != 0) {
       return _inferGenericExtensionMethodInvocation(extensionTypeParameterCount,
@@ -2079,7 +2080,8 @@
         isConst: isConst,
         isImplicitExtensionMember: isImplicitExtensionMember,
         isImplicitCall: isImplicitCall,
-        staticTarget: staticTarget);
+        staticTarget: staticTarget,
+        isExtensionMemberInvocation: isExtensionMemberInvocation);
   }
 
   InvocationInferenceResult _inferGenericExtensionMethodInvocation(
@@ -2114,7 +2116,8 @@
         receiverType: receiverType,
         isImplicitExtensionMember: isImplicitExtensionMember,
         isImplicitCall: isImplicitCall,
-        staticTarget: staticTarget);
+        staticTarget: staticTarget,
+        isExtensionMemberInvocation: true);
     Substitution extensionSubstitution = Substitution.fromPairs(
         extensionFunctionType.typeParameters, extensionArguments.types);
 
@@ -2171,7 +2174,8 @@
       bool isConst: false,
       bool isImplicitExtensionMember: false,
       bool isImplicitCall,
-      Member staticTarget}) {
+      Member staticTarget,
+      bool isExtensionMemberInvocation: false}) {
     List<TypeParameter> calleeTypeParameters = calleeType.typeParameters;
     if (calleeTypeParameters.isNotEmpty) {
       // It's possible that one of the callee type parameters might match a type
@@ -2391,8 +2395,9 @@
     List<DartType> positionalArgumentTypes = [];
     List<NamedType> namedArgumentTypes = [];
     if (typeChecksNeeded && !identical(calleeType, unknownFunction)) {
-      LocatedMessage argMessage =
-          helper.checkArgumentsForType(calleeType, arguments, offset);
+      LocatedMessage argMessage = helper.checkArgumentsForType(
+          calleeType, arguments, offset,
+          isExtensionMemberInvocation: isExtensionMemberInvocation);
       if (argMessage != null) {
         return new WrapInProblemInferenceResult(
             const InvalidType(),
@@ -2860,7 +2865,8 @@
           hoistedExpressions: hoistedExpressions,
           receiverType: receiverType,
           isImplicitExtensionMember: true,
-          isImplicitCall: isImplicitCall);
+          isImplicitCall: isImplicitCall,
+          isExtensionMemberInvocation: true);
       if (!isTopLevel) {
         library.checkBoundsInStaticInvocation(staticInvocation,
             typeSchemaEnvironment, helper.uri, getTypeArgumentsInfo(arguments));
diff --git a/pkg/front_end/parser_testcases/general/issue_45120.dart b/pkg/front_end/parser_testcases/general/issue_45120.dart
new file mode 100644
index 0000000..bd3974e
--- /dev/null
+++ b/pkg/front_end/parser_testcases/general/issue_45120.dart
@@ -0,0 +1,7 @@
+@A<int>(0)
+typedef F<@A<int>(0) T> = int Function<@A<int>(0) X>(@A<int>(0) int);
+
+void main() {
+  @A<int>(0)
+  void Function<@A<int>(0) X>(@A<int>(0) int y)? f = null;
+}
diff --git a/pkg/front_end/parser_testcases/general/issue_45120.dart.expect b/pkg/front_end/parser_testcases/general/issue_45120.dart.expect
new file mode 100644
index 0000000..1effedc
--- /dev/null
+++ b/pkg/front_end/parser_testcases/general/issue_45120.dart.expect
@@ -0,0 +1,167 @@
+beginCompilationUnit(@)
+  beginMetadataStar(@)
+    beginMetadata(@)
+      handleIdentifier(A, metadataReference)
+      beginTypeArguments(<)
+        handleIdentifier(int, typeReference)
+        handleNoTypeArguments(>)
+        handleType(int, null)
+      endTypeArguments(1, <, >)
+      beginArguments(()
+        handleLiteralInt(0)
+      endArguments(1, (, ))
+    endMetadata(@, null, typedef)
+  endMetadataStar(1)
+  beginUncategorizedTopLevelDeclaration(typedef)
+    beginFunctionTypeAlias(typedef)
+      handleIdentifier(F, typedefDeclaration)
+      beginTypeVariables(<)
+        beginMetadataStar(@)
+          beginMetadata(@)
+            handleIdentifier(A, metadataReference)
+            beginTypeArguments(<)
+              handleIdentifier(int, typeReference)
+              handleNoTypeArguments(>)
+              handleType(int, null)
+            endTypeArguments(1, <, >)
+            beginArguments(()
+              handleLiteralInt(0)
+            endArguments(1, (, ))
+          endMetadata(@, null, T)
+        endMetadataStar(1)
+        handleIdentifier(T, typeVariableDeclaration)
+        beginTypeVariable(T)
+          handleTypeVariablesDefined(T, 1)
+          handleNoType(T)
+        endTypeVariable(>, 0, null, null)
+      endTypeVariables(<, >)
+      beginFunctionType(int)
+        beginTypeVariables(<)
+          beginMetadataStar(@)
+            beginMetadata(@)
+              handleIdentifier(A, metadataReference)
+              beginTypeArguments(<)
+                handleIdentifier(int, typeReference)
+                handleNoTypeArguments(>)
+                handleType(int, null)
+              endTypeArguments(1, <, >)
+              beginArguments(()
+                handleLiteralInt(0)
+              endArguments(1, (, ))
+            endMetadata(@, null, X)
+          endMetadataStar(1)
+          handleIdentifier(X, typeVariableDeclaration)
+          beginTypeVariable(X)
+            handleTypeVariablesDefined(X, 1)
+            handleNoType(X)
+          endTypeVariable(>, 0, null, null)
+        endTypeVariables(<, >)
+        handleIdentifier(int, typeReference)
+        handleNoTypeArguments(Function)
+        handleType(int, null)
+        beginFormalParameters((, MemberKind.GeneralizedFunctionType)
+          beginMetadataStar(@)
+            beginMetadata(@)
+              handleIdentifier(A, metadataReference)
+              beginTypeArguments(<)
+                handleIdentifier(int, typeReference)
+                handleNoTypeArguments(>)
+                handleType(int, null)
+              endTypeArguments(1, <, >)
+              beginArguments(()
+                handleLiteralInt(0)
+              endArguments(1, (, ))
+            endMetadata(@, null, int)
+          endMetadataStar(1)
+          beginFormalParameter(int, MemberKind.GeneralizedFunctionType, null, null, null)
+            handleIdentifier(int, typeReference)
+            handleNoTypeArguments())
+            handleType(int, null)
+            handleNoName())
+            handleFormalParameterWithoutValue())
+          endFormalParameter(null, null, ), null, null, FormalParameterKind.mandatory, MemberKind.GeneralizedFunctionType)
+        endFormalParameters(1, (, ), MemberKind.GeneralizedFunctionType)
+      endFunctionType(Function, null)
+    endFunctionTypeAlias(typedef, =, ;)
+  endTopLevelDeclaration(void)
+  beginMetadataStar(void)
+  endMetadataStar(0)
+  beginTopLevelMember(void)
+    beginTopLevelMethod(;, null)
+      handleVoidKeyword(void)
+      handleIdentifier(main, topLevelFunctionDeclaration)
+      handleNoTypeVariables(()
+      beginFormalParameters((, MemberKind.TopLevelMethod)
+      endFormalParameters(0, (, ), MemberKind.TopLevelMethod)
+      handleAsyncModifier(null, null)
+      beginBlockFunctionBody({)
+        beginMetadataStar(@)
+          beginMetadata(@)
+            handleIdentifier(A, metadataReference)
+            beginTypeArguments(<)
+              handleIdentifier(int, typeReference)
+              handleNoTypeArguments(>)
+              handleType(int, null)
+            endTypeArguments(1, <, >)
+            beginArguments(()
+              handleLiteralInt(0)
+            endArguments(1, (, ))
+          endMetadata(@, null, void)
+        endMetadataStar(1)
+        beginFunctionType(void)
+          beginTypeVariables(<)
+            beginMetadataStar(@)
+              beginMetadata(@)
+                handleIdentifier(A, metadataReference)
+                beginTypeArguments(<)
+                  handleIdentifier(int, typeReference)
+                  handleNoTypeArguments(>)
+                  handleType(int, null)
+                endTypeArguments(1, <, >)
+                beginArguments(()
+                  handleLiteralInt(0)
+                endArguments(1, (, ))
+              endMetadata(@, null, X)
+            endMetadataStar(1)
+            handleIdentifier(X, typeVariableDeclaration)
+            beginTypeVariable(X)
+              handleTypeVariablesDefined(X, 1)
+              handleNoType(X)
+            endTypeVariable(>, 0, null, null)
+          endTypeVariables(<, >)
+          handleVoidKeyword(void)
+          beginFormalParameters((, MemberKind.GeneralizedFunctionType)
+            beginMetadataStar(@)
+              beginMetadata(@)
+                handleIdentifier(A, metadataReference)
+                beginTypeArguments(<)
+                  handleIdentifier(int, typeReference)
+                  handleNoTypeArguments(>)
+                  handleType(int, null)
+                endTypeArguments(1, <, >)
+                beginArguments(()
+                  handleLiteralInt(0)
+                endArguments(1, (, ))
+              endMetadata(@, null, int)
+            endMetadataStar(1)
+            beginFormalParameter(int, MemberKind.GeneralizedFunctionType, null, null, null)
+              handleIdentifier(int, typeReference)
+              handleNoTypeArguments(y)
+              handleType(int, null)
+              handleIdentifier(y, formalParameterDeclaration)
+              handleFormalParameterWithoutValue())
+            endFormalParameter(null, null, y, null, null, FormalParameterKind.mandatory, MemberKind.GeneralizedFunctionType)
+          endFormalParameters(1, (, ), MemberKind.GeneralizedFunctionType)
+        endFunctionType(Function, ?)
+        beginVariablesDeclaration(f, null, null)
+          handleIdentifier(f, localVariableDeclaration)
+          beginInitializedIdentifier(f)
+            beginVariableInitializer(=)
+              handleLiteralNull(null)
+            endVariableInitializer(=)
+          endInitializedIdentifier(f)
+        endVariablesDeclaration(1, ;)
+      endBlockFunctionBody(1, {, })
+    endTopLevelMethod(void, null, })
+  endTopLevelDeclaration()
+endCompilationUnit(2, )
diff --git a/pkg/front_end/parser_testcases/general/issue_45120.dart.intertwined.expect b/pkg/front_end/parser_testcases/general/issue_45120.dart.intertwined.expect
new file mode 100644
index 0000000..63f2c9a
--- /dev/null
+++ b/pkg/front_end/parser_testcases/general/issue_45120.dart.intertwined.expect
@@ -0,0 +1,301 @@
+parseUnit(@)
+  skipErrorTokens(@)
+  listener: beginCompilationUnit(@)
+  syntheticPreviousToken(@)
+  parseTopLevelDeclarationImpl(, Instance of 'DirectiveContext')
+    parseMetadataStar()
+      listener: beginMetadataStar(@)
+      parseMetadata()
+        listener: beginMetadata(@)
+        ensureIdentifier(@, metadataReference)
+          listener: handleIdentifier(A, metadataReference)
+        parseQualifiedRestOpt(A, metadataContinuation)
+        listener: beginTypeArguments(<)
+        listener: handleIdentifier(int, typeReference)
+        listener: handleNoTypeArguments(>)
+        listener: handleType(int, null)
+        listener: endTypeArguments(1, <, >)
+        parseArgumentsOpt(>)
+          parseArguments(>)
+            parseArgumentsRest(()
+              listener: beginArguments(()
+              parseExpression(()
+                parsePrecedenceExpression((, 1, true)
+                  parseUnaryExpression((, true)
+                    parsePrimary((, expression)
+                      parseLiteralInt(()
+                        listener: handleLiteralInt(0)
+              listener: endArguments(1, (, ))
+        listener: endMetadata(@, null, typedef)
+      listener: endMetadataStar(1)
+    parseTopLevelKeywordDeclaration(), typedef, Instance of 'DirectiveContext')
+      parseTopLevelKeywordModifiers(), typedef)
+      parseTypedef(typedef)
+        listener: beginUncategorizedTopLevelDeclaration(typedef)
+        listener: beginFunctionTypeAlias(typedef)
+        ensureIdentifierPotentiallyRecovered(typedef, typedefDeclaration, true)
+          listener: handleIdentifier(F, typedefDeclaration)
+        listener: beginTypeVariables(<)
+        parseMetadataStar(<)
+          listener: beginMetadataStar(@)
+          parseMetadata(<)
+            listener: beginMetadata(@)
+            ensureIdentifier(@, metadataReference)
+              listener: handleIdentifier(A, metadataReference)
+            parseQualifiedRestOpt(A, metadataContinuation)
+            listener: beginTypeArguments(<)
+            listener: handleIdentifier(int, typeReference)
+            listener: handleNoTypeArguments(>)
+            listener: handleType(int, null)
+            listener: endTypeArguments(1, <, >)
+            parseArgumentsOpt(>)
+              parseArguments(>)
+                parseArgumentsRest(()
+                  listener: beginArguments(()
+                  parseExpression(()
+                    parsePrecedenceExpression((, 1, true)
+                      parseUnaryExpression((, true)
+                        parsePrimary((, expression)
+                          parseLiteralInt(()
+                            listener: handleLiteralInt(0)
+                  listener: endArguments(1, (, ))
+            listener: endMetadata(@, null, T)
+          listener: endMetadataStar(1)
+        ensureIdentifier(), typeVariableDeclaration)
+          listener: handleIdentifier(T, typeVariableDeclaration)
+        listener: beginTypeVariable(T)
+        listener: handleTypeVariablesDefined(T, 1)
+        listener: handleNoType(T)
+        listener: endTypeVariable(>, 0, null, null)
+        listener: endTypeVariables(<, >)
+        listener: beginFunctionType(int)
+        listener: beginTypeVariables(<)
+        parseMetadataStar(<)
+          listener: beginMetadataStar(@)
+          parseMetadata(<)
+            listener: beginMetadata(@)
+            ensureIdentifier(@, metadataReference)
+              listener: handleIdentifier(A, metadataReference)
+            parseQualifiedRestOpt(A, metadataContinuation)
+            listener: beginTypeArguments(<)
+            listener: handleIdentifier(int, typeReference)
+            listener: handleNoTypeArguments(>)
+            listener: handleType(int, null)
+            listener: endTypeArguments(1, <, >)
+            parseArgumentsOpt(>)
+              parseArguments(>)
+                parseArgumentsRest(()
+                  listener: beginArguments(()
+                  parseExpression(()
+                    parsePrecedenceExpression((, 1, true)
+                      parseUnaryExpression((, true)
+                        parsePrimary((, expression)
+                          parseLiteralInt(()
+                            listener: handleLiteralInt(0)
+                  listener: endArguments(1, (, ))
+            listener: endMetadata(@, null, X)
+          listener: endMetadataStar(1)
+        ensureIdentifier(), typeVariableDeclaration)
+          listener: handleIdentifier(X, typeVariableDeclaration)
+        listener: beginTypeVariable(X)
+        listener: handleTypeVariablesDefined(X, 1)
+        listener: handleNoType(X)
+        listener: endTypeVariable(>, 0, null, null)
+        listener: endTypeVariables(<, >)
+        ensureIdentifier(=, typeReference)
+          listener: handleIdentifier(int, typeReference)
+        listener: handleNoTypeArguments(Function)
+        listener: handleType(int, null)
+        parseFormalParametersRequiredOpt(>, MemberKind.GeneralizedFunctionType)
+          parseFormalParametersRest((, MemberKind.GeneralizedFunctionType)
+            listener: beginFormalParameters((, MemberKind.GeneralizedFunctionType)
+            parseFormalParameter((, FormalParameterKind.mandatory, MemberKind.GeneralizedFunctionType)
+              parseMetadataStar(()
+                listener: beginMetadataStar(@)
+                parseMetadata(()
+                  listener: beginMetadata(@)
+                  ensureIdentifier(@, metadataReference)
+                    listener: handleIdentifier(A, metadataReference)
+                  parseQualifiedRestOpt(A, metadataContinuation)
+                  listener: beginTypeArguments(<)
+                  listener: handleIdentifier(int, typeReference)
+                  listener: handleNoTypeArguments(>)
+                  listener: handleType(int, null)
+                  listener: endTypeArguments(1, <, >)
+                  parseArgumentsOpt(>)
+                    parseArguments(>)
+                      parseArgumentsRest(()
+                        listener: beginArguments(()
+                        parseExpression(()
+                          parsePrecedenceExpression((, 1, true)
+                            parseUnaryExpression((, true)
+                              parsePrimary((, expression)
+                                parseLiteralInt(()
+                                  listener: handleLiteralInt(0)
+                        listener: endArguments(1, (, ))
+                  listener: endMetadata(@, null, int)
+                listener: endMetadataStar(1)
+              listener: beginFormalParameter(int, MemberKind.GeneralizedFunctionType, null, null, null)
+              listener: handleIdentifier(int, typeReference)
+              listener: handleNoTypeArguments())
+              listener: handleType(int, null)
+              listener: handleNoName())
+              listener: handleFormalParameterWithoutValue())
+              listener: endFormalParameter(null, null, ), null, null, FormalParameterKind.mandatory, MemberKind.GeneralizedFunctionType)
+            listener: endFormalParameters(1, (, ), MemberKind.GeneralizedFunctionType)
+        listener: endFunctionType(Function, null)
+        ensureSemicolon())
+        listener: endFunctionTypeAlias(typedef, =, ;)
+  listener: endTopLevelDeclaration(void)
+  parseTopLevelDeclarationImpl(;, Instance of 'DirectiveContext')
+    parseMetadataStar(;)
+      listener: beginMetadataStar(void)
+      listener: endMetadataStar(0)
+    parseTopLevelMemberImpl(;)
+      listener: beginTopLevelMember(void)
+      parseTopLevelMethod(;, null, ;, Instance of 'VoidType', null, main, false)
+        listener: beginTopLevelMethod(;, null)
+        listener: handleVoidKeyword(void)
+        ensureIdentifierPotentiallyRecovered(void, topLevelFunctionDeclaration, false)
+          listener: handleIdentifier(main, topLevelFunctionDeclaration)
+        parseMethodTypeVar(main)
+          listener: handleNoTypeVariables(()
+        parseGetterOrFormalParameters(main, main, false, MemberKind.TopLevelMethod)
+          parseFormalParameters(main, MemberKind.TopLevelMethod)
+            parseFormalParametersRest((, MemberKind.TopLevelMethod)
+              listener: beginFormalParameters((, MemberKind.TopLevelMethod)
+              listener: endFormalParameters(0, (, ), MemberKind.TopLevelMethod)
+        parseAsyncModifierOpt())
+          listener: handleAsyncModifier(null, null)
+          inPlainSync()
+        parseFunctionBody(), false, false)
+          listener: beginBlockFunctionBody({)
+          notEofOrValue(}, @)
+          parseStatement({)
+            parseStatementX({)
+              parseExpressionStatementOrDeclaration({, false)
+                parseMetadataStar({)
+                  listener: beginMetadataStar(@)
+                  parseMetadata({)
+                    listener: beginMetadata(@)
+                    ensureIdentifier(@, metadataReference)
+                      listener: handleIdentifier(A, metadataReference)
+                    parseQualifiedRestOpt(A, metadataContinuation)
+                    listener: beginTypeArguments(<)
+                    listener: handleIdentifier(int, typeReference)
+                    listener: handleNoTypeArguments(>)
+                    listener: handleType(int, null)
+                    listener: endTypeArguments(1, <, >)
+                    parseArgumentsOpt(>)
+                      parseArguments(>)
+                        parseArgumentsRest(()
+                          listener: beginArguments(()
+                          parseExpression(()
+                            parsePrecedenceExpression((, 1, true)
+                              parseUnaryExpression((, true)
+                                parsePrimary((, expression)
+                                  parseLiteralInt(()
+                                    listener: handleLiteralInt(0)
+                          listener: endArguments(1, (, ))
+                    listener: endMetadata(@, null, void)
+                  listener: endMetadataStar(1)
+                parseExpressionStatementOrDeclarationAfterModifiers(), {, null, null, null, false)
+                  looksLikeLocalFunction(f)
+                  listener: beginFunctionType(void)
+                  listener: beginTypeVariables(<)
+                  parseMetadataStar(<)
+                    listener: beginMetadataStar(@)
+                    parseMetadata(<)
+                      listener: beginMetadata(@)
+                      ensureIdentifier(@, metadataReference)
+                        listener: handleIdentifier(A, metadataReference)
+                      parseQualifiedRestOpt(A, metadataContinuation)
+                      listener: beginTypeArguments(<)
+                      listener: handleIdentifier(int, typeReference)
+                      listener: handleNoTypeArguments(>)
+                      listener: handleType(int, null)
+                      listener: endTypeArguments(1, <, >)
+                      parseArgumentsOpt(>)
+                        parseArguments(>)
+                          parseArgumentsRest(()
+                            listener: beginArguments(()
+                            parseExpression(()
+                              parsePrecedenceExpression((, 1, true)
+                                parseUnaryExpression((, true)
+                                  parsePrimary((, expression)
+                                    parseLiteralInt(()
+                                      listener: handleLiteralInt(0)
+                            listener: endArguments(1, (, ))
+                      listener: endMetadata(@, null, X)
+                    listener: endMetadataStar(1)
+                  ensureIdentifier(), typeVariableDeclaration)
+                    listener: handleIdentifier(X, typeVariableDeclaration)
+                  listener: beginTypeVariable(X)
+                  listener: handleTypeVariablesDefined(X, 1)
+                  listener: handleNoType(X)
+                  listener: endTypeVariable(>, 0, null, null)
+                  listener: endTypeVariables(<, >)
+                  listener: handleVoidKeyword(void)
+                  parseFormalParametersRequiredOpt(>, MemberKind.GeneralizedFunctionType)
+                    parseFormalParametersRest((, MemberKind.GeneralizedFunctionType)
+                      listener: beginFormalParameters((, MemberKind.GeneralizedFunctionType)
+                      parseFormalParameter((, FormalParameterKind.mandatory, MemberKind.GeneralizedFunctionType)
+                        parseMetadataStar(()
+                          listener: beginMetadataStar(@)
+                          parseMetadata(()
+                            listener: beginMetadata(@)
+                            ensureIdentifier(@, metadataReference)
+                              listener: handleIdentifier(A, metadataReference)
+                            parseQualifiedRestOpt(A, metadataContinuation)
+                            listener: beginTypeArguments(<)
+                            listener: handleIdentifier(int, typeReference)
+                            listener: handleNoTypeArguments(>)
+                            listener: handleType(int, null)
+                            listener: endTypeArguments(1, <, >)
+                            parseArgumentsOpt(>)
+                              parseArguments(>)
+                                parseArgumentsRest(()
+                                  listener: beginArguments(()
+                                  parseExpression(()
+                                    parsePrecedenceExpression((, 1, true)
+                                      parseUnaryExpression((, true)
+                                        parsePrimary((, expression)
+                                          parseLiteralInt(()
+                                            listener: handleLiteralInt(0)
+                                  listener: endArguments(1, (, ))
+                            listener: endMetadata(@, null, int)
+                          listener: endMetadataStar(1)
+                        listener: beginFormalParameter(int, MemberKind.GeneralizedFunctionType, null, null, null)
+                        listener: handleIdentifier(int, typeReference)
+                        listener: handleNoTypeArguments(y)
+                        listener: handleType(int, null)
+                        ensureIdentifier(int, formalParameterDeclaration)
+                          listener: handleIdentifier(y, formalParameterDeclaration)
+                        listener: handleFormalParameterWithoutValue())
+                        listener: endFormalParameter(null, null, y, null, null, FormalParameterKind.mandatory, MemberKind.GeneralizedFunctionType)
+                      listener: endFormalParameters(1, (, ), MemberKind.GeneralizedFunctionType)
+                  listener: endFunctionType(Function, ?)
+                  listener: beginVariablesDeclaration(f, null, null)
+                  parseVariablesDeclarationRest(?, true)
+                    parseOptionallyInitializedIdentifier(?)
+                      ensureIdentifier(?, localVariableDeclaration)
+                        listener: handleIdentifier(f, localVariableDeclaration)
+                      listener: beginInitializedIdentifier(f)
+                      parseVariableInitializerOpt(f)
+                        listener: beginVariableInitializer(=)
+                        parseExpression(=)
+                          parsePrecedenceExpression(=, 1, true)
+                            parseUnaryExpression(=, true)
+                              parsePrimary(=, expression)
+                                parseLiteralNull(=)
+                                  listener: handleLiteralNull(null)
+                        listener: endVariableInitializer(=)
+                      listener: endInitializedIdentifier(f)
+                    ensureSemicolon(null)
+                    listener: endVariablesDeclaration(1, ;)
+          notEofOrValue(}, })
+          listener: endBlockFunctionBody(1, {, })
+        listener: endTopLevelMethod(void, null, })
+  listener: endTopLevelDeclaration()
+  reportAllErrorTokens(@)
+  listener: endCompilationUnit(2, )
diff --git a/pkg/front_end/parser_testcases/general/issue_45120.dart.parser.expect b/pkg/front_end/parser_testcases/general/issue_45120.dart.parser.expect
new file mode 100644
index 0000000..954f749
--- /dev/null
+++ b/pkg/front_end/parser_testcases/general/issue_45120.dart.parser.expect
@@ -0,0 +1,17 @@
+@A<int>(0)
+typedef F<@A<int>(0) T> = int Function<@A<int>(0) X>(@A<int>(0) int);
+
+void main() {
+@A<int>(0)
+void Function<@A<int>(0) X>(@A<int>(0) int y)? f = null;
+}
+
+
+@[SimpleToken]A[StringToken]<[BeginToken]int[StringToken]>[SimpleToken]([BeginToken]0[StringToken])[SimpleToken]
+typedef[KeywordToken] F[StringToken]<[BeginToken]@[SimpleToken]A[StringToken]<[BeginToken]int[StringToken]>[SimpleToken]([BeginToken]0[StringToken])[SimpleToken] T[StringToken]>[SimpleToken] =[SimpleToken] int[StringToken] Function[KeywordToken]<[BeginToken]@[SimpleToken]A[StringToken]<[BeginToken]int[StringToken]>[SimpleToken]([BeginToken]0[StringToken])[SimpleToken] X[StringToken]>[SimpleToken]([BeginToken]@[SimpleToken]A[StringToken]<[BeginToken]int[StringToken]>[SimpleToken]([BeginToken]0[StringToken])[SimpleToken] int[StringToken])[SimpleToken];[SimpleToken]
+
+void[KeywordToken] main[StringToken]([BeginToken])[SimpleToken] {[BeginToken]
+@[SimpleToken]A[StringToken]<[BeginToken]int[StringToken]>[SimpleToken]([BeginToken]0[StringToken])[SimpleToken]
+void[KeywordToken] Function[KeywordToken]<[BeginToken]@[SimpleToken]A[StringToken]<[BeginToken]int[StringToken]>[SimpleToken]([BeginToken]0[StringToken])[SimpleToken] X[StringToken]>[SimpleToken]([BeginToken]@[SimpleToken]A[StringToken]<[BeginToken]int[StringToken]>[SimpleToken]([BeginToken]0[StringToken])[SimpleToken] int[StringToken] y[StringToken])[SimpleToken]?[SimpleToken] f[StringToken] =[SimpleToken] null[KeywordToken];[SimpleToken]
+}[SimpleToken]
+[SimpleToken]
diff --git a/pkg/front_end/parser_testcases/general/issue_45120.dart.scanner.expect b/pkg/front_end/parser_testcases/general/issue_45120.dart.scanner.expect
new file mode 100644
index 0000000..954f749
--- /dev/null
+++ b/pkg/front_end/parser_testcases/general/issue_45120.dart.scanner.expect
@@ -0,0 +1,17 @@
+@A<int>(0)
+typedef F<@A<int>(0) T> = int Function<@A<int>(0) X>(@A<int>(0) int);
+
+void main() {
+@A<int>(0)
+void Function<@A<int>(0) X>(@A<int>(0) int y)? f = null;
+}
+
+
+@[SimpleToken]A[StringToken]<[BeginToken]int[StringToken]>[SimpleToken]([BeginToken]0[StringToken])[SimpleToken]
+typedef[KeywordToken] F[StringToken]<[BeginToken]@[SimpleToken]A[StringToken]<[BeginToken]int[StringToken]>[SimpleToken]([BeginToken]0[StringToken])[SimpleToken] T[StringToken]>[SimpleToken] =[SimpleToken] int[StringToken] Function[KeywordToken]<[BeginToken]@[SimpleToken]A[StringToken]<[BeginToken]int[StringToken]>[SimpleToken]([BeginToken]0[StringToken])[SimpleToken] X[StringToken]>[SimpleToken]([BeginToken]@[SimpleToken]A[StringToken]<[BeginToken]int[StringToken]>[SimpleToken]([BeginToken]0[StringToken])[SimpleToken] int[StringToken])[SimpleToken];[SimpleToken]
+
+void[KeywordToken] main[StringToken]([BeginToken])[SimpleToken] {[BeginToken]
+@[SimpleToken]A[StringToken]<[BeginToken]int[StringToken]>[SimpleToken]([BeginToken]0[StringToken])[SimpleToken]
+void[KeywordToken] Function[KeywordToken]<[BeginToken]@[SimpleToken]A[StringToken]<[BeginToken]int[StringToken]>[SimpleToken]([BeginToken]0[StringToken])[SimpleToken] X[StringToken]>[SimpleToken]([BeginToken]@[SimpleToken]A[StringToken]<[BeginToken]int[StringToken]>[SimpleToken]([BeginToken]0[StringToken])[SimpleToken] int[StringToken] y[StringToken])[SimpleToken]?[SimpleToken] f[StringToken] =[SimpleToken] null[KeywordToken];[SimpleToken]
+}[SimpleToken]
+[SimpleToken]
diff --git a/pkg/front_end/parser_testcases/general/metadata.dart b/pkg/front_end/parser_testcases/general/metadata.dart
new file mode 100644
index 0000000..53003ad
--- /dev/null
+++ b/pkg/front_end/parser_testcases/general/metadata.dart
@@ -0,0 +1,40 @@
+// These 10 should be OK.
+@abstract
+@foo.abstract
+@foo.bar.abstract
+@foo("hello")
+@foo.abstract("hello")
+@foo.bar.abstract("hello")
+@foo<int>("hello")
+@foo<int>.abstract("hello")
+@foo.bar<int>("hello")
+@foo.bar<int>.abstract("hello")
+class X {}
+
+// They should also be OK in various places for instance:
+typedef F<@abstract T> = int Function<@abstract X>(@abstract int);
+typedef F<@foo.abstract T> = int Function<@foo.abstract X>(@foo.abstract int);
+typedef F<@foo.bar.abstract T> = int Function<@foo.bar.abstract X>(@foo.bar.abstract int);
+typedef F<@foo("hello") T> = int Function<@foo("hello") X>(@foo("hello") int);
+typedef F<@foo.abstract("hello") T> = int Function<@foo.abstract("hello") X>(@foo.abstract("hello") int);
+typedef F<@foo.bar.abstract("hello") T> = int Function<@foo.bar.abstract("hello") X>(@foo.bar.abstract("hello") int);
+typedef F<@foo<int>("hello") T> = int Function<@foo<int>("hello") X>(@foo<int>("hello") int);
+typedef F<@foo<int>.abstract("hello") T> = int Function<@foo<int>.abstract("hello") X>(@foo<int>.abstract("hello") int);
+typedef F<@foo.bar<int>("hello") T> = int Function<@foo.bar<int>("hello") X>(@foo.bar<int>("hello") int);
+typedef F<@foo.bar<int>.abstract("hello") T> = int Function<@foo.bar<int>.abstract("hello") X>(@foo.bar<int>.abstract("hello") int);
+
+// These 9 should fail because they start with a built in which is an
+// identifier but not a typeIdentifier.
+// We don't necessarily expect that parser to give the error though, the further
+// pipeline will give an error because there's no class, variable etc with that
+// name.
+@abstract.abstract
+@abstract.bar.abstract
+@abstract("hello")
+@abstract.abstract("hello")
+@abstract.bar.abstract("hello")
+@abstract<int>("hello")
+@abstract<int>.abstract("hello")
+@abstract.bar<int>("hello")
+@abstract.bar<int>.abstract("hello")
+class Y {}
\ No newline at end of file
diff --git a/pkg/front_end/parser_testcases/general/metadata.dart.expect b/pkg/front_end/parser_testcases/general/metadata.dart.expect
new file mode 100644
index 0000000..d342b49
--- /dev/null
+++ b/pkg/front_end/parser_testcases/general/metadata.dart.expect
@@ -0,0 +1,952 @@
+beginCompilationUnit(@)
+  beginMetadataStar(@)
+    beginMetadata(@)
+      handleIdentifier(abstract, metadataReference)
+      handleNoTypeArguments(@)
+      handleNoArguments(@)
+    endMetadata(@, null, @)
+    beginMetadata(@)
+      handleIdentifier(foo, metadataReference)
+      handleIdentifier(abstract, metadataContinuation)
+      handleQualified(.)
+      handleNoTypeArguments(@)
+      handleNoArguments(@)
+    endMetadata(@, null, @)
+    beginMetadata(@)
+      handleIdentifier(foo, metadataReference)
+      handleIdentifier(bar, metadataContinuation)
+      handleQualified(.)
+      handleNoTypeArguments(.)
+      handleIdentifier(abstract, metadataContinuationAfterTypeArguments)
+      handleNoArguments(@)
+    endMetadata(@, ., @)
+    beginMetadata(@)
+      handleIdentifier(foo, metadataReference)
+      handleNoTypeArguments(()
+      beginArguments(()
+        beginLiteralString("hello")
+        endLiteralString(0, ))
+      endArguments(1, (, ))
+    endMetadata(@, null, @)
+    beginMetadata(@)
+      handleIdentifier(foo, metadataReference)
+      handleIdentifier(abstract, metadataContinuation)
+      handleQualified(.)
+      handleNoTypeArguments(()
+      beginArguments(()
+        beginLiteralString("hello")
+        endLiteralString(0, ))
+      endArguments(1, (, ))
+    endMetadata(@, null, @)
+    beginMetadata(@)
+      handleIdentifier(foo, metadataReference)
+      handleIdentifier(bar, metadataContinuation)
+      handleQualified(.)
+      handleNoTypeArguments(.)
+      handleIdentifier(abstract, metadataContinuationAfterTypeArguments)
+      beginArguments(()
+        beginLiteralString("hello")
+        endLiteralString(0, ))
+      endArguments(1, (, ))
+    endMetadata(@, ., @)
+    beginMetadata(@)
+      handleIdentifier(foo, metadataReference)
+      beginTypeArguments(<)
+        handleIdentifier(int, typeReference)
+        handleNoTypeArguments(>)
+        handleType(int, null)
+      endTypeArguments(1, <, >)
+      beginArguments(()
+        beginLiteralString("hello")
+        endLiteralString(0, ))
+      endArguments(1, (, ))
+    endMetadata(@, null, @)
+    beginMetadata(@)
+      handleIdentifier(foo, metadataReference)
+      beginTypeArguments(<)
+        handleIdentifier(int, typeReference)
+        handleNoTypeArguments(>)
+        handleType(int, null)
+      endTypeArguments(1, <, >)
+      handleIdentifier(abstract, metadataContinuationAfterTypeArguments)
+      beginArguments(()
+        beginLiteralString("hello")
+        endLiteralString(0, ))
+      endArguments(1, (, ))
+    endMetadata(@, ., @)
+    beginMetadata(@)
+      handleIdentifier(foo, metadataReference)
+      handleIdentifier(bar, metadataContinuation)
+      handleQualified(.)
+      beginTypeArguments(<)
+        handleIdentifier(int, typeReference)
+        handleNoTypeArguments(>)
+        handleType(int, null)
+      endTypeArguments(1, <, >)
+      beginArguments(()
+        beginLiteralString("hello")
+        endLiteralString(0, ))
+      endArguments(1, (, ))
+    endMetadata(@, null, @)
+    beginMetadata(@)
+      handleIdentifier(foo, metadataReference)
+      handleIdentifier(bar, metadataContinuation)
+      handleQualified(.)
+      beginTypeArguments(<)
+        handleIdentifier(int, typeReference)
+        handleNoTypeArguments(>)
+        handleType(int, null)
+      endTypeArguments(1, <, >)
+      handleIdentifier(abstract, metadataContinuationAfterTypeArguments)
+      beginArguments(()
+        beginLiteralString("hello")
+        endLiteralString(0, ))
+      endArguments(1, (, ))
+    endMetadata(@, ., class)
+  endMetadataStar(10)
+  beginClassOrNamedMixinApplicationPrelude(class)
+    handleIdentifier(X, classOrMixinDeclaration)
+    handleNoTypeVariables({)
+    beginClassDeclaration(class, null, X)
+      handleNoType(X)
+      handleClassExtends(null, 1)
+      handleClassNoWithClause()
+      handleClassOrMixinImplements(null, 0)
+      handleClassHeader(class, class, null)
+      beginClassOrMixinBody(DeclarationKind.Class, {)
+      endClassOrMixinBody(DeclarationKind.Class, 0, {, })
+    endClassDeclaration(class, })
+  endTopLevelDeclaration(typedef)
+  beginMetadataStar(typedef)
+  endMetadataStar(0)
+  beginUncategorizedTopLevelDeclaration(typedef)
+    beginFunctionTypeAlias(typedef)
+      handleIdentifier(F, typedefDeclaration)
+      beginTypeVariables(<)
+        beginMetadataStar(@)
+          beginMetadata(@)
+            handleIdentifier(abstract, metadataReference)
+            handleNoTypeArguments(T)
+            handleNoArguments(T)
+          endMetadata(@, null, T)
+        endMetadataStar(1)
+        handleIdentifier(T, typeVariableDeclaration)
+        beginTypeVariable(T)
+          handleTypeVariablesDefined(T, 1)
+          handleNoType(T)
+        endTypeVariable(>, 0, null, null)
+      endTypeVariables(<, >)
+      beginFunctionType(int)
+        beginTypeVariables(<)
+          beginMetadataStar(@)
+            beginMetadata(@)
+              handleIdentifier(abstract, metadataReference)
+              handleNoTypeArguments(X)
+              handleNoArguments(X)
+            endMetadata(@, null, X)
+          endMetadataStar(1)
+          handleIdentifier(X, typeVariableDeclaration)
+          beginTypeVariable(X)
+            handleTypeVariablesDefined(X, 1)
+            handleNoType(X)
+          endTypeVariable(>, 0, null, null)
+        endTypeVariables(<, >)
+        handleIdentifier(int, typeReference)
+        handleNoTypeArguments(Function)
+        handleType(int, null)
+        beginFormalParameters((, MemberKind.GeneralizedFunctionType)
+          beginMetadataStar(@)
+            beginMetadata(@)
+              handleIdentifier(abstract, metadataReference)
+              handleNoTypeArguments(int)
+              handleNoArguments(int)
+            endMetadata(@, null, int)
+          endMetadataStar(1)
+          beginFormalParameter(int, MemberKind.GeneralizedFunctionType, null, null, null)
+            handleIdentifier(int, typeReference)
+            handleNoTypeArguments())
+            handleType(int, null)
+            handleNoName())
+            handleFormalParameterWithoutValue())
+          endFormalParameter(null, null, ), null, null, FormalParameterKind.mandatory, MemberKind.GeneralizedFunctionType)
+        endFormalParameters(1, (, ), MemberKind.GeneralizedFunctionType)
+      endFunctionType(Function, null)
+    endFunctionTypeAlias(typedef, =, ;)
+  endTopLevelDeclaration(typedef)
+  beginMetadataStar(typedef)
+  endMetadataStar(0)
+  beginUncategorizedTopLevelDeclaration(typedef)
+    beginFunctionTypeAlias(typedef)
+      handleIdentifier(F, typedefDeclaration)
+      beginTypeVariables(<)
+        beginMetadataStar(@)
+          beginMetadata(@)
+            handleIdentifier(foo, metadataReference)
+            handleIdentifier(abstract, metadataContinuation)
+            handleQualified(.)
+            handleNoTypeArguments(T)
+            handleNoArguments(T)
+          endMetadata(@, null, T)
+        endMetadataStar(1)
+        handleIdentifier(T, typeVariableDeclaration)
+        beginTypeVariable(T)
+          handleTypeVariablesDefined(T, 1)
+          handleNoType(T)
+        endTypeVariable(>, 0, null, null)
+      endTypeVariables(<, >)
+      beginFunctionType(int)
+        beginTypeVariables(<)
+          beginMetadataStar(@)
+            beginMetadata(@)
+              handleIdentifier(foo, metadataReference)
+              handleIdentifier(abstract, metadataContinuation)
+              handleQualified(.)
+              handleNoTypeArguments(X)
+              handleNoArguments(X)
+            endMetadata(@, null, X)
+          endMetadataStar(1)
+          handleIdentifier(X, typeVariableDeclaration)
+          beginTypeVariable(X)
+            handleTypeVariablesDefined(X, 1)
+            handleNoType(X)
+          endTypeVariable(>, 0, null, null)
+        endTypeVariables(<, >)
+        handleIdentifier(int, typeReference)
+        handleNoTypeArguments(Function)
+        handleType(int, null)
+        beginFormalParameters((, MemberKind.GeneralizedFunctionType)
+          beginMetadataStar(@)
+            beginMetadata(@)
+              handleIdentifier(foo, metadataReference)
+              handleIdentifier(abstract, metadataContinuation)
+              handleQualified(.)
+              handleNoTypeArguments(int)
+              handleNoArguments(int)
+            endMetadata(@, null, int)
+          endMetadataStar(1)
+          beginFormalParameter(int, MemberKind.GeneralizedFunctionType, null, null, null)
+            handleIdentifier(int, typeReference)
+            handleNoTypeArguments())
+            handleType(int, null)
+            handleNoName())
+            handleFormalParameterWithoutValue())
+          endFormalParameter(null, null, ), null, null, FormalParameterKind.mandatory, MemberKind.GeneralizedFunctionType)
+        endFormalParameters(1, (, ), MemberKind.GeneralizedFunctionType)
+      endFunctionType(Function, null)
+    endFunctionTypeAlias(typedef, =, ;)
+  endTopLevelDeclaration(typedef)
+  beginMetadataStar(typedef)
+  endMetadataStar(0)
+  beginUncategorizedTopLevelDeclaration(typedef)
+    beginFunctionTypeAlias(typedef)
+      handleIdentifier(F, typedefDeclaration)
+      beginTypeVariables(<)
+        beginMetadataStar(@)
+          beginMetadata(@)
+            handleIdentifier(foo, metadataReference)
+            handleIdentifier(bar, metadataContinuation)
+            handleQualified(.)
+            handleNoTypeArguments(.)
+            handleIdentifier(abstract, metadataContinuationAfterTypeArguments)
+            handleNoArguments(T)
+          endMetadata(@, ., T)
+        endMetadataStar(1)
+        handleIdentifier(T, typeVariableDeclaration)
+        beginTypeVariable(T)
+          handleTypeVariablesDefined(T, 1)
+          handleNoType(T)
+        endTypeVariable(>, 0, null, null)
+      endTypeVariables(<, >)
+      beginFunctionType(int)
+        beginTypeVariables(<)
+          beginMetadataStar(@)
+            beginMetadata(@)
+              handleIdentifier(foo, metadataReference)
+              handleIdentifier(bar, metadataContinuation)
+              handleQualified(.)
+              handleNoTypeArguments(.)
+              handleIdentifier(abstract, metadataContinuationAfterTypeArguments)
+              handleNoArguments(X)
+            endMetadata(@, ., X)
+          endMetadataStar(1)
+          handleIdentifier(X, typeVariableDeclaration)
+          beginTypeVariable(X)
+            handleTypeVariablesDefined(X, 1)
+            handleNoType(X)
+          endTypeVariable(>, 0, null, null)
+        endTypeVariables(<, >)
+        handleIdentifier(int, typeReference)
+        handleNoTypeArguments(Function)
+        handleType(int, null)
+        beginFormalParameters((, MemberKind.GeneralizedFunctionType)
+          beginMetadataStar(@)
+            beginMetadata(@)
+              handleIdentifier(foo, metadataReference)
+              handleIdentifier(bar, metadataContinuation)
+              handleQualified(.)
+              handleNoTypeArguments(.)
+              handleIdentifier(abstract, metadataContinuationAfterTypeArguments)
+              handleNoArguments(int)
+            endMetadata(@, ., int)
+          endMetadataStar(1)
+          beginFormalParameter(int, MemberKind.GeneralizedFunctionType, null, null, null)
+            handleIdentifier(int, typeReference)
+            handleNoTypeArguments())
+            handleType(int, null)
+            handleNoName())
+            handleFormalParameterWithoutValue())
+          endFormalParameter(null, null, ), null, null, FormalParameterKind.mandatory, MemberKind.GeneralizedFunctionType)
+        endFormalParameters(1, (, ), MemberKind.GeneralizedFunctionType)
+      endFunctionType(Function, null)
+    endFunctionTypeAlias(typedef, =, ;)
+  endTopLevelDeclaration(typedef)
+  beginMetadataStar(typedef)
+  endMetadataStar(0)
+  beginUncategorizedTopLevelDeclaration(typedef)
+    beginFunctionTypeAlias(typedef)
+      handleIdentifier(F, typedefDeclaration)
+      beginTypeVariables(<)
+        beginMetadataStar(@)
+          beginMetadata(@)
+            handleIdentifier(foo, metadataReference)
+            handleNoTypeArguments(()
+            beginArguments(()
+              beginLiteralString("hello")
+              endLiteralString(0, ))
+            endArguments(1, (, ))
+          endMetadata(@, null, T)
+        endMetadataStar(1)
+        handleIdentifier(T, typeVariableDeclaration)
+        beginTypeVariable(T)
+          handleTypeVariablesDefined(T, 1)
+          handleNoType(T)
+        endTypeVariable(>, 0, null, null)
+      endTypeVariables(<, >)
+      beginFunctionType(int)
+        beginTypeVariables(<)
+          beginMetadataStar(@)
+            beginMetadata(@)
+              handleIdentifier(foo, metadataReference)
+              handleNoTypeArguments(()
+              beginArguments(()
+                beginLiteralString("hello")
+                endLiteralString(0, ))
+              endArguments(1, (, ))
+            endMetadata(@, null, X)
+          endMetadataStar(1)
+          handleIdentifier(X, typeVariableDeclaration)
+          beginTypeVariable(X)
+            handleTypeVariablesDefined(X, 1)
+            handleNoType(X)
+          endTypeVariable(>, 0, null, null)
+        endTypeVariables(<, >)
+        handleIdentifier(int, typeReference)
+        handleNoTypeArguments(Function)
+        handleType(int, null)
+        beginFormalParameters((, MemberKind.GeneralizedFunctionType)
+          beginMetadataStar(@)
+            beginMetadata(@)
+              handleIdentifier(foo, metadataReference)
+              handleNoTypeArguments(()
+              beginArguments(()
+                beginLiteralString("hello")
+                endLiteralString(0, ))
+              endArguments(1, (, ))
+            endMetadata(@, null, int)
+          endMetadataStar(1)
+          beginFormalParameter(int, MemberKind.GeneralizedFunctionType, null, null, null)
+            handleIdentifier(int, typeReference)
+            handleNoTypeArguments())
+            handleType(int, null)
+            handleNoName())
+            handleFormalParameterWithoutValue())
+          endFormalParameter(null, null, ), null, null, FormalParameterKind.mandatory, MemberKind.GeneralizedFunctionType)
+        endFormalParameters(1, (, ), MemberKind.GeneralizedFunctionType)
+      endFunctionType(Function, null)
+    endFunctionTypeAlias(typedef, =, ;)
+  endTopLevelDeclaration(typedef)
+  beginMetadataStar(typedef)
+  endMetadataStar(0)
+  beginUncategorizedTopLevelDeclaration(typedef)
+    beginFunctionTypeAlias(typedef)
+      handleIdentifier(F, typedefDeclaration)
+      beginTypeVariables(<)
+        beginMetadataStar(@)
+          beginMetadata(@)
+            handleIdentifier(foo, metadataReference)
+            handleIdentifier(abstract, metadataContinuation)
+            handleQualified(.)
+            handleNoTypeArguments(()
+            beginArguments(()
+              beginLiteralString("hello")
+              endLiteralString(0, ))
+            endArguments(1, (, ))
+          endMetadata(@, null, T)
+        endMetadataStar(1)
+        handleIdentifier(T, typeVariableDeclaration)
+        beginTypeVariable(T)
+          handleTypeVariablesDefined(T, 1)
+          handleNoType(T)
+        endTypeVariable(>, 0, null, null)
+      endTypeVariables(<, >)
+      beginFunctionType(int)
+        beginTypeVariables(<)
+          beginMetadataStar(@)
+            beginMetadata(@)
+              handleIdentifier(foo, metadataReference)
+              handleIdentifier(abstract, metadataContinuation)
+              handleQualified(.)
+              handleNoTypeArguments(()
+              beginArguments(()
+                beginLiteralString("hello")
+                endLiteralString(0, ))
+              endArguments(1, (, ))
+            endMetadata(@, null, X)
+          endMetadataStar(1)
+          handleIdentifier(X, typeVariableDeclaration)
+          beginTypeVariable(X)
+            handleTypeVariablesDefined(X, 1)
+            handleNoType(X)
+          endTypeVariable(>, 0, null, null)
+        endTypeVariables(<, >)
+        handleIdentifier(int, typeReference)
+        handleNoTypeArguments(Function)
+        handleType(int, null)
+        beginFormalParameters((, MemberKind.GeneralizedFunctionType)
+          beginMetadataStar(@)
+            beginMetadata(@)
+              handleIdentifier(foo, metadataReference)
+              handleIdentifier(abstract, metadataContinuation)
+              handleQualified(.)
+              handleNoTypeArguments(()
+              beginArguments(()
+                beginLiteralString("hello")
+                endLiteralString(0, ))
+              endArguments(1, (, ))
+            endMetadata(@, null, int)
+          endMetadataStar(1)
+          beginFormalParameter(int, MemberKind.GeneralizedFunctionType, null, null, null)
+            handleIdentifier(int, typeReference)
+            handleNoTypeArguments())
+            handleType(int, null)
+            handleNoName())
+            handleFormalParameterWithoutValue())
+          endFormalParameter(null, null, ), null, null, FormalParameterKind.mandatory, MemberKind.GeneralizedFunctionType)
+        endFormalParameters(1, (, ), MemberKind.GeneralizedFunctionType)
+      endFunctionType(Function, null)
+    endFunctionTypeAlias(typedef, =, ;)
+  endTopLevelDeclaration(typedef)
+  beginMetadataStar(typedef)
+  endMetadataStar(0)
+  beginUncategorizedTopLevelDeclaration(typedef)
+    beginFunctionTypeAlias(typedef)
+      handleIdentifier(F, typedefDeclaration)
+      beginTypeVariables(<)
+        beginMetadataStar(@)
+          beginMetadata(@)
+            handleIdentifier(foo, metadataReference)
+            handleIdentifier(bar, metadataContinuation)
+            handleQualified(.)
+            handleNoTypeArguments(.)
+            handleIdentifier(abstract, metadataContinuationAfterTypeArguments)
+            beginArguments(()
+              beginLiteralString("hello")
+              endLiteralString(0, ))
+            endArguments(1, (, ))
+          endMetadata(@, ., T)
+        endMetadataStar(1)
+        handleIdentifier(T, typeVariableDeclaration)
+        beginTypeVariable(T)
+          handleTypeVariablesDefined(T, 1)
+          handleNoType(T)
+        endTypeVariable(>, 0, null, null)
+      endTypeVariables(<, >)
+      beginFunctionType(int)
+        beginTypeVariables(<)
+          beginMetadataStar(@)
+            beginMetadata(@)
+              handleIdentifier(foo, metadataReference)
+              handleIdentifier(bar, metadataContinuation)
+              handleQualified(.)
+              handleNoTypeArguments(.)
+              handleIdentifier(abstract, metadataContinuationAfterTypeArguments)
+              beginArguments(()
+                beginLiteralString("hello")
+                endLiteralString(0, ))
+              endArguments(1, (, ))
+            endMetadata(@, ., X)
+          endMetadataStar(1)
+          handleIdentifier(X, typeVariableDeclaration)
+          beginTypeVariable(X)
+            handleTypeVariablesDefined(X, 1)
+            handleNoType(X)
+          endTypeVariable(>, 0, null, null)
+        endTypeVariables(<, >)
+        handleIdentifier(int, typeReference)
+        handleNoTypeArguments(Function)
+        handleType(int, null)
+        beginFormalParameters((, MemberKind.GeneralizedFunctionType)
+          beginMetadataStar(@)
+            beginMetadata(@)
+              handleIdentifier(foo, metadataReference)
+              handleIdentifier(bar, metadataContinuation)
+              handleQualified(.)
+              handleNoTypeArguments(.)
+              handleIdentifier(abstract, metadataContinuationAfterTypeArguments)
+              beginArguments(()
+                beginLiteralString("hello")
+                endLiteralString(0, ))
+              endArguments(1, (, ))
+            endMetadata(@, ., int)
+          endMetadataStar(1)
+          beginFormalParameter(int, MemberKind.GeneralizedFunctionType, null, null, null)
+            handleIdentifier(int, typeReference)
+            handleNoTypeArguments())
+            handleType(int, null)
+            handleNoName())
+            handleFormalParameterWithoutValue())
+          endFormalParameter(null, null, ), null, null, FormalParameterKind.mandatory, MemberKind.GeneralizedFunctionType)
+        endFormalParameters(1, (, ), MemberKind.GeneralizedFunctionType)
+      endFunctionType(Function, null)
+    endFunctionTypeAlias(typedef, =, ;)
+  endTopLevelDeclaration(typedef)
+  beginMetadataStar(typedef)
+  endMetadataStar(0)
+  beginUncategorizedTopLevelDeclaration(typedef)
+    beginFunctionTypeAlias(typedef)
+      handleIdentifier(F, typedefDeclaration)
+      beginTypeVariables(<)
+        beginMetadataStar(@)
+          beginMetadata(@)
+            handleIdentifier(foo, metadataReference)
+            beginTypeArguments(<)
+              handleIdentifier(int, typeReference)
+              handleNoTypeArguments(>)
+              handleType(int, null)
+            endTypeArguments(1, <, >)
+            beginArguments(()
+              beginLiteralString("hello")
+              endLiteralString(0, ))
+            endArguments(1, (, ))
+          endMetadata(@, null, T)
+        endMetadataStar(1)
+        handleIdentifier(T, typeVariableDeclaration)
+        beginTypeVariable(T)
+          handleTypeVariablesDefined(T, 1)
+          handleNoType(T)
+        endTypeVariable(>, 0, null, null)
+      endTypeVariables(<, >)
+      beginFunctionType(int)
+        beginTypeVariables(<)
+          beginMetadataStar(@)
+            beginMetadata(@)
+              handleIdentifier(foo, metadataReference)
+              beginTypeArguments(<)
+                handleIdentifier(int, typeReference)
+                handleNoTypeArguments(>)
+                handleType(int, null)
+              endTypeArguments(1, <, >)
+              beginArguments(()
+                beginLiteralString("hello")
+                endLiteralString(0, ))
+              endArguments(1, (, ))
+            endMetadata(@, null, X)
+          endMetadataStar(1)
+          handleIdentifier(X, typeVariableDeclaration)
+          beginTypeVariable(X)
+            handleTypeVariablesDefined(X, 1)
+            handleNoType(X)
+          endTypeVariable(>, 0, null, null)
+        endTypeVariables(<, >)
+        handleIdentifier(int, typeReference)
+        handleNoTypeArguments(Function)
+        handleType(int, null)
+        beginFormalParameters((, MemberKind.GeneralizedFunctionType)
+          beginMetadataStar(@)
+            beginMetadata(@)
+              handleIdentifier(foo, metadataReference)
+              beginTypeArguments(<)
+                handleIdentifier(int, typeReference)
+                handleNoTypeArguments(>)
+                handleType(int, null)
+              endTypeArguments(1, <, >)
+              beginArguments(()
+                beginLiteralString("hello")
+                endLiteralString(0, ))
+              endArguments(1, (, ))
+            endMetadata(@, null, int)
+          endMetadataStar(1)
+          beginFormalParameter(int, MemberKind.GeneralizedFunctionType, null, null, null)
+            handleIdentifier(int, typeReference)
+            handleNoTypeArguments())
+            handleType(int, null)
+            handleNoName())
+            handleFormalParameterWithoutValue())
+          endFormalParameter(null, null, ), null, null, FormalParameterKind.mandatory, MemberKind.GeneralizedFunctionType)
+        endFormalParameters(1, (, ), MemberKind.GeneralizedFunctionType)
+      endFunctionType(Function, null)
+    endFunctionTypeAlias(typedef, =, ;)
+  endTopLevelDeclaration(typedef)
+  beginMetadataStar(typedef)
+  endMetadataStar(0)
+  beginUncategorizedTopLevelDeclaration(typedef)
+    beginFunctionTypeAlias(typedef)
+      handleIdentifier(F, typedefDeclaration)
+      beginTypeVariables(<)
+        beginMetadataStar(@)
+          beginMetadata(@)
+            handleIdentifier(foo, metadataReference)
+            beginTypeArguments(<)
+              handleIdentifier(int, typeReference)
+              handleNoTypeArguments(>)
+              handleType(int, null)
+            endTypeArguments(1, <, >)
+            handleIdentifier(abstract, metadataContinuationAfterTypeArguments)
+            beginArguments(()
+              beginLiteralString("hello")
+              endLiteralString(0, ))
+            endArguments(1, (, ))
+          endMetadata(@, ., T)
+        endMetadataStar(1)
+        handleIdentifier(T, typeVariableDeclaration)
+        beginTypeVariable(T)
+          handleTypeVariablesDefined(T, 1)
+          handleNoType(T)
+        endTypeVariable(>, 0, null, null)
+      endTypeVariables(<, >)
+      beginFunctionType(int)
+        beginTypeVariables(<)
+          beginMetadataStar(@)
+            beginMetadata(@)
+              handleIdentifier(foo, metadataReference)
+              beginTypeArguments(<)
+                handleIdentifier(int, typeReference)
+                handleNoTypeArguments(>)
+                handleType(int, null)
+              endTypeArguments(1, <, >)
+              handleIdentifier(abstract, metadataContinuationAfterTypeArguments)
+              beginArguments(()
+                beginLiteralString("hello")
+                endLiteralString(0, ))
+              endArguments(1, (, ))
+            endMetadata(@, ., X)
+          endMetadataStar(1)
+          handleIdentifier(X, typeVariableDeclaration)
+          beginTypeVariable(X)
+            handleTypeVariablesDefined(X, 1)
+            handleNoType(X)
+          endTypeVariable(>, 0, null, null)
+        endTypeVariables(<, >)
+        handleIdentifier(int, typeReference)
+        handleNoTypeArguments(Function)
+        handleType(int, null)
+        beginFormalParameters((, MemberKind.GeneralizedFunctionType)
+          beginMetadataStar(@)
+            beginMetadata(@)
+              handleIdentifier(foo, metadataReference)
+              beginTypeArguments(<)
+                handleIdentifier(int, typeReference)
+                handleNoTypeArguments(>)
+                handleType(int, null)
+              endTypeArguments(1, <, >)
+              handleIdentifier(abstract, metadataContinuationAfterTypeArguments)
+              beginArguments(()
+                beginLiteralString("hello")
+                endLiteralString(0, ))
+              endArguments(1, (, ))
+            endMetadata(@, ., int)
+          endMetadataStar(1)
+          beginFormalParameter(int, MemberKind.GeneralizedFunctionType, null, null, null)
+            handleIdentifier(int, typeReference)
+            handleNoTypeArguments())
+            handleType(int, null)
+            handleNoName())
+            handleFormalParameterWithoutValue())
+          endFormalParameter(null, null, ), null, null, FormalParameterKind.mandatory, MemberKind.GeneralizedFunctionType)
+        endFormalParameters(1, (, ), MemberKind.GeneralizedFunctionType)
+      endFunctionType(Function, null)
+    endFunctionTypeAlias(typedef, =, ;)
+  endTopLevelDeclaration(typedef)
+  beginMetadataStar(typedef)
+  endMetadataStar(0)
+  beginUncategorizedTopLevelDeclaration(typedef)
+    beginFunctionTypeAlias(typedef)
+      handleIdentifier(F, typedefDeclaration)
+      beginTypeVariables(<)
+        beginMetadataStar(@)
+          beginMetadata(@)
+            handleIdentifier(foo, metadataReference)
+            handleIdentifier(bar, metadataContinuation)
+            handleQualified(.)
+            beginTypeArguments(<)
+              handleIdentifier(int, typeReference)
+              handleNoTypeArguments(>)
+              handleType(int, null)
+            endTypeArguments(1, <, >)
+            beginArguments(()
+              beginLiteralString("hello")
+              endLiteralString(0, ))
+            endArguments(1, (, ))
+          endMetadata(@, null, T)
+        endMetadataStar(1)
+        handleIdentifier(T, typeVariableDeclaration)
+        beginTypeVariable(T)
+          handleTypeVariablesDefined(T, 1)
+          handleNoType(T)
+        endTypeVariable(>, 0, null, null)
+      endTypeVariables(<, >)
+      beginFunctionType(int)
+        beginTypeVariables(<)
+          beginMetadataStar(@)
+            beginMetadata(@)
+              handleIdentifier(foo, metadataReference)
+              handleIdentifier(bar, metadataContinuation)
+              handleQualified(.)
+              beginTypeArguments(<)
+                handleIdentifier(int, typeReference)
+                handleNoTypeArguments(>)
+                handleType(int, null)
+              endTypeArguments(1, <, >)
+              beginArguments(()
+                beginLiteralString("hello")
+                endLiteralString(0, ))
+              endArguments(1, (, ))
+            endMetadata(@, null, X)
+          endMetadataStar(1)
+          handleIdentifier(X, typeVariableDeclaration)
+          beginTypeVariable(X)
+            handleTypeVariablesDefined(X, 1)
+            handleNoType(X)
+          endTypeVariable(>, 0, null, null)
+        endTypeVariables(<, >)
+        handleIdentifier(int, typeReference)
+        handleNoTypeArguments(Function)
+        handleType(int, null)
+        beginFormalParameters((, MemberKind.GeneralizedFunctionType)
+          beginMetadataStar(@)
+            beginMetadata(@)
+              handleIdentifier(foo, metadataReference)
+              handleIdentifier(bar, metadataContinuation)
+              handleQualified(.)
+              beginTypeArguments(<)
+                handleIdentifier(int, typeReference)
+                handleNoTypeArguments(>)
+                handleType(int, null)
+              endTypeArguments(1, <, >)
+              beginArguments(()
+                beginLiteralString("hello")
+                endLiteralString(0, ))
+              endArguments(1, (, ))
+            endMetadata(@, null, int)
+          endMetadataStar(1)
+          beginFormalParameter(int, MemberKind.GeneralizedFunctionType, null, null, null)
+            handleIdentifier(int, typeReference)
+            handleNoTypeArguments())
+            handleType(int, null)
+            handleNoName())
+            handleFormalParameterWithoutValue())
+          endFormalParameter(null, null, ), null, null, FormalParameterKind.mandatory, MemberKind.GeneralizedFunctionType)
+        endFormalParameters(1, (, ), MemberKind.GeneralizedFunctionType)
+      endFunctionType(Function, null)
+    endFunctionTypeAlias(typedef, =, ;)
+  endTopLevelDeclaration(typedef)
+  beginMetadataStar(typedef)
+  endMetadataStar(0)
+  beginUncategorizedTopLevelDeclaration(typedef)
+    beginFunctionTypeAlias(typedef)
+      handleIdentifier(F, typedefDeclaration)
+      beginTypeVariables(<)
+        beginMetadataStar(@)
+          beginMetadata(@)
+            handleIdentifier(foo, metadataReference)
+            handleIdentifier(bar, metadataContinuation)
+            handleQualified(.)
+            beginTypeArguments(<)
+              handleIdentifier(int, typeReference)
+              handleNoTypeArguments(>)
+              handleType(int, null)
+            endTypeArguments(1, <, >)
+            handleIdentifier(abstract, metadataContinuationAfterTypeArguments)
+            beginArguments(()
+              beginLiteralString("hello")
+              endLiteralString(0, ))
+            endArguments(1, (, ))
+          endMetadata(@, ., T)
+        endMetadataStar(1)
+        handleIdentifier(T, typeVariableDeclaration)
+        beginTypeVariable(T)
+          handleTypeVariablesDefined(T, 1)
+          handleNoType(T)
+        endTypeVariable(>, 0, null, null)
+      endTypeVariables(<, >)
+      beginFunctionType(int)
+        beginTypeVariables(<)
+          beginMetadataStar(@)
+            beginMetadata(@)
+              handleIdentifier(foo, metadataReference)
+              handleIdentifier(bar, metadataContinuation)
+              handleQualified(.)
+              beginTypeArguments(<)
+                handleIdentifier(int, typeReference)
+                handleNoTypeArguments(>)
+                handleType(int, null)
+              endTypeArguments(1, <, >)
+              handleIdentifier(abstract, metadataContinuationAfterTypeArguments)
+              beginArguments(()
+                beginLiteralString("hello")
+                endLiteralString(0, ))
+              endArguments(1, (, ))
+            endMetadata(@, ., X)
+          endMetadataStar(1)
+          handleIdentifier(X, typeVariableDeclaration)
+          beginTypeVariable(X)
+            handleTypeVariablesDefined(X, 1)
+            handleNoType(X)
+          endTypeVariable(>, 0, null, null)
+        endTypeVariables(<, >)
+        handleIdentifier(int, typeReference)
+        handleNoTypeArguments(Function)
+        handleType(int, null)
+        beginFormalParameters((, MemberKind.GeneralizedFunctionType)
+          beginMetadataStar(@)
+            beginMetadata(@)
+              handleIdentifier(foo, metadataReference)
+              handleIdentifier(bar, metadataContinuation)
+              handleQualified(.)
+              beginTypeArguments(<)
+                handleIdentifier(int, typeReference)
+                handleNoTypeArguments(>)
+                handleType(int, null)
+              endTypeArguments(1, <, >)
+              handleIdentifier(abstract, metadataContinuationAfterTypeArguments)
+              beginArguments(()
+                beginLiteralString("hello")
+                endLiteralString(0, ))
+              endArguments(1, (, ))
+            endMetadata(@, ., int)
+          endMetadataStar(1)
+          beginFormalParameter(int, MemberKind.GeneralizedFunctionType, null, null, null)
+            handleIdentifier(int, typeReference)
+            handleNoTypeArguments())
+            handleType(int, null)
+            handleNoName())
+            handleFormalParameterWithoutValue())
+          endFormalParameter(null, null, ), null, null, FormalParameterKind.mandatory, MemberKind.GeneralizedFunctionType)
+        endFormalParameters(1, (, ), MemberKind.GeneralizedFunctionType)
+      endFunctionType(Function, null)
+    endFunctionTypeAlias(typedef, =, ;)
+  endTopLevelDeclaration(@)
+  beginMetadataStar(@)
+    beginMetadata(@)
+      handleIdentifier(abstract, metadataReference)
+      handleIdentifier(abstract, metadataContinuation)
+      handleQualified(.)
+      handleNoTypeArguments(@)
+      handleNoArguments(@)
+    endMetadata(@, null, @)
+    beginMetadata(@)
+      handleIdentifier(abstract, metadataReference)
+      handleIdentifier(bar, metadataContinuation)
+      handleQualified(.)
+      handleNoTypeArguments(.)
+      handleIdentifier(abstract, metadataContinuationAfterTypeArguments)
+      handleNoArguments(@)
+    endMetadata(@, ., @)
+    beginMetadata(@)
+      handleIdentifier(abstract, metadataReference)
+      handleNoTypeArguments(()
+      beginArguments(()
+        beginLiteralString("hello")
+        endLiteralString(0, ))
+      endArguments(1, (, ))
+    endMetadata(@, null, @)
+    beginMetadata(@)
+      handleIdentifier(abstract, metadataReference)
+      handleIdentifier(abstract, metadataContinuation)
+      handleQualified(.)
+      handleNoTypeArguments(()
+      beginArguments(()
+        beginLiteralString("hello")
+        endLiteralString(0, ))
+      endArguments(1, (, ))
+    endMetadata(@, null, @)
+    beginMetadata(@)
+      handleIdentifier(abstract, metadataReference)
+      handleIdentifier(bar, metadataContinuation)
+      handleQualified(.)
+      handleNoTypeArguments(.)
+      handleIdentifier(abstract, metadataContinuationAfterTypeArguments)
+      beginArguments(()
+        beginLiteralString("hello")
+        endLiteralString(0, ))
+      endArguments(1, (, ))
+    endMetadata(@, ., @)
+    beginMetadata(@)
+      handleIdentifier(abstract, metadataReference)
+      beginTypeArguments(<)
+        handleIdentifier(int, typeReference)
+        handleNoTypeArguments(>)
+        handleType(int, null)
+      endTypeArguments(1, <, >)
+      beginArguments(()
+        beginLiteralString("hello")
+        endLiteralString(0, ))
+      endArguments(1, (, ))
+    endMetadata(@, null, @)
+    beginMetadata(@)
+      handleIdentifier(abstract, metadataReference)
+      beginTypeArguments(<)
+        handleIdentifier(int, typeReference)
+        handleNoTypeArguments(>)
+        handleType(int, null)
+      endTypeArguments(1, <, >)
+      handleIdentifier(abstract, metadataContinuationAfterTypeArguments)
+      beginArguments(()
+        beginLiteralString("hello")
+        endLiteralString(0, ))
+      endArguments(1, (, ))
+    endMetadata(@, ., @)
+    beginMetadata(@)
+      handleIdentifier(abstract, metadataReference)
+      handleIdentifier(bar, metadataContinuation)
+      handleQualified(.)
+      beginTypeArguments(<)
+        handleIdentifier(int, typeReference)
+        handleNoTypeArguments(>)
+        handleType(int, null)
+      endTypeArguments(1, <, >)
+      beginArguments(()
+        beginLiteralString("hello")
+        endLiteralString(0, ))
+      endArguments(1, (, ))
+    endMetadata(@, null, @)
+    beginMetadata(@)
+      handleIdentifier(abstract, metadataReference)
+      handleIdentifier(bar, metadataContinuation)
+      handleQualified(.)
+      beginTypeArguments(<)
+        handleIdentifier(int, typeReference)
+        handleNoTypeArguments(>)
+        handleType(int, null)
+      endTypeArguments(1, <, >)
+      handleIdentifier(abstract, metadataContinuationAfterTypeArguments)
+      beginArguments(()
+        beginLiteralString("hello")
+        endLiteralString(0, ))
+      endArguments(1, (, ))
+    endMetadata(@, ., class)
+  endMetadataStar(9)
+  beginClassOrNamedMixinApplicationPrelude(class)
+    handleIdentifier(Y, classOrMixinDeclaration)
+    handleNoTypeVariables({)
+    beginClassDeclaration(class, null, Y)
+      handleNoType(Y)
+      handleClassExtends(null, 1)
+      handleClassNoWithClause()
+      handleClassOrMixinImplements(null, 0)
+      handleClassHeader(class, class, null)
+      beginClassOrMixinBody(DeclarationKind.Class, {)
+      endClassOrMixinBody(DeclarationKind.Class, 0, {, })
+    endClassDeclaration(class, })
+  endTopLevelDeclaration()
+endCompilationUnit(12, )
diff --git a/pkg/front_end/parser_testcases/general/metadata.dart.intertwined.expect b/pkg/front_end/parser_testcases/general/metadata.dart.intertwined.expect
new file mode 100644
index 0000000..9a0530c
--- /dev/null
+++ b/pkg/front_end/parser_testcases/general/metadata.dart.intertwined.expect
@@ -0,0 +1,1741 @@
+parseUnit(@)
+  skipErrorTokens(@)
+  listener: beginCompilationUnit(@)
+  syntheticPreviousToken(@)
+  parseTopLevelDeclarationImpl(, Instance of 'DirectiveContext')
+    parseMetadataStar()
+      listener: beginMetadataStar(@)
+      parseMetadata()
+        listener: beginMetadata(@)
+        ensureIdentifier(@, metadataReference)
+          inPlainSync()
+          listener: handleIdentifier(abstract, metadataReference)
+        parseQualifiedRestOpt(abstract, metadataContinuation)
+        listener: handleNoTypeArguments(@)
+        parseArgumentsOpt(abstract)
+          listener: handleNoArguments(@)
+        listener: endMetadata(@, null, @)
+      parseMetadata(abstract)
+        listener: beginMetadata(@)
+        ensureIdentifier(@, metadataReference)
+          listener: handleIdentifier(foo, metadataReference)
+        parseQualifiedRestOpt(foo, metadataContinuation)
+          parseQualifiedRest(foo, metadataContinuation)
+            ensureIdentifier(., metadataContinuation)
+              inPlainSync()
+              listener: handleIdentifier(abstract, metadataContinuation)
+            listener: handleQualified(.)
+        listener: handleNoTypeArguments(@)
+        parseArgumentsOpt(abstract)
+          listener: handleNoArguments(@)
+        listener: endMetadata(@, null, @)
+      parseMetadata(abstract)
+        listener: beginMetadata(@)
+        ensureIdentifier(@, metadataReference)
+          listener: handleIdentifier(foo, metadataReference)
+        parseQualifiedRestOpt(foo, metadataContinuation)
+          parseQualifiedRest(foo, metadataContinuation)
+            ensureIdentifier(., metadataContinuation)
+              listener: handleIdentifier(bar, metadataContinuation)
+            listener: handleQualified(.)
+        listener: handleNoTypeArguments(.)
+        ensureIdentifier(., metadataContinuationAfterTypeArguments)
+          inPlainSync()
+          listener: handleIdentifier(abstract, metadataContinuationAfterTypeArguments)
+        parseArgumentsOpt(abstract)
+          listener: handleNoArguments(@)
+        listener: endMetadata(@, ., @)
+      parseMetadata(abstract)
+        listener: beginMetadata(@)
+        ensureIdentifier(@, metadataReference)
+          listener: handleIdentifier(foo, metadataReference)
+        parseQualifiedRestOpt(foo, metadataContinuation)
+        listener: handleNoTypeArguments(()
+        parseArgumentsOpt(foo)
+          parseArguments(foo)
+            parseArgumentsRest(()
+              listener: beginArguments(()
+              parseExpression(()
+                parsePrecedenceExpression((, 1, true)
+                  parseUnaryExpression((, true)
+                    parsePrimary((, expression)
+                      parseLiteralString(()
+                        parseSingleLiteralString(()
+                          listener: beginLiteralString("hello")
+                          listener: endLiteralString(0, ))
+              listener: endArguments(1, (, ))
+        listener: endMetadata(@, null, @)
+      parseMetadata())
+        listener: beginMetadata(@)
+        ensureIdentifier(@, metadataReference)
+          listener: handleIdentifier(foo, metadataReference)
+        parseQualifiedRestOpt(foo, metadataContinuation)
+          parseQualifiedRest(foo, metadataContinuation)
+            ensureIdentifier(., metadataContinuation)
+              inPlainSync()
+              listener: handleIdentifier(abstract, metadataContinuation)
+            listener: handleQualified(.)
+        listener: handleNoTypeArguments(()
+        parseArgumentsOpt(abstract)
+          parseArguments(abstract)
+            parseArgumentsRest(()
+              listener: beginArguments(()
+              parseExpression(()
+                parsePrecedenceExpression((, 1, true)
+                  parseUnaryExpression((, true)
+                    parsePrimary((, expression)
+                      parseLiteralString(()
+                        parseSingleLiteralString(()
+                          listener: beginLiteralString("hello")
+                          listener: endLiteralString(0, ))
+              listener: endArguments(1, (, ))
+        listener: endMetadata(@, null, @)
+      parseMetadata())
+        listener: beginMetadata(@)
+        ensureIdentifier(@, metadataReference)
+          listener: handleIdentifier(foo, metadataReference)
+        parseQualifiedRestOpt(foo, metadataContinuation)
+          parseQualifiedRest(foo, metadataContinuation)
+            ensureIdentifier(., metadataContinuation)
+              listener: handleIdentifier(bar, metadataContinuation)
+            listener: handleQualified(.)
+        listener: handleNoTypeArguments(.)
+        ensureIdentifier(., metadataContinuationAfterTypeArguments)
+          inPlainSync()
+          listener: handleIdentifier(abstract, metadataContinuationAfterTypeArguments)
+        parseArgumentsOpt(abstract)
+          parseArguments(abstract)
+            parseArgumentsRest(()
+              listener: beginArguments(()
+              parseExpression(()
+                parsePrecedenceExpression((, 1, true)
+                  parseUnaryExpression((, true)
+                    parsePrimary((, expression)
+                      parseLiteralString(()
+                        parseSingleLiteralString(()
+                          listener: beginLiteralString("hello")
+                          listener: endLiteralString(0, ))
+              listener: endArguments(1, (, ))
+        listener: endMetadata(@, ., @)
+      parseMetadata())
+        listener: beginMetadata(@)
+        ensureIdentifier(@, metadataReference)
+          listener: handleIdentifier(foo, metadataReference)
+        parseQualifiedRestOpt(foo, metadataContinuation)
+        listener: beginTypeArguments(<)
+        listener: handleIdentifier(int, typeReference)
+        listener: handleNoTypeArguments(>)
+        listener: handleType(int, null)
+        listener: endTypeArguments(1, <, >)
+        parseArgumentsOpt(>)
+          parseArguments(>)
+            parseArgumentsRest(()
+              listener: beginArguments(()
+              parseExpression(()
+                parsePrecedenceExpression((, 1, true)
+                  parseUnaryExpression((, true)
+                    parsePrimary((, expression)
+                      parseLiteralString(()
+                        parseSingleLiteralString(()
+                          listener: beginLiteralString("hello")
+                          listener: endLiteralString(0, ))
+              listener: endArguments(1, (, ))
+        listener: endMetadata(@, null, @)
+      parseMetadata())
+        listener: beginMetadata(@)
+        ensureIdentifier(@, metadataReference)
+          listener: handleIdentifier(foo, metadataReference)
+        parseQualifiedRestOpt(foo, metadataContinuation)
+        listener: beginTypeArguments(<)
+        listener: handleIdentifier(int, typeReference)
+        listener: handleNoTypeArguments(>)
+        listener: handleType(int, null)
+        listener: endTypeArguments(1, <, >)
+        ensureIdentifier(., metadataContinuationAfterTypeArguments)
+          inPlainSync()
+          listener: handleIdentifier(abstract, metadataContinuationAfterTypeArguments)
+        parseArgumentsOpt(abstract)
+          parseArguments(abstract)
+            parseArgumentsRest(()
+              listener: beginArguments(()
+              parseExpression(()
+                parsePrecedenceExpression((, 1, true)
+                  parseUnaryExpression((, true)
+                    parsePrimary((, expression)
+                      parseLiteralString(()
+                        parseSingleLiteralString(()
+                          listener: beginLiteralString("hello")
+                          listener: endLiteralString(0, ))
+              listener: endArguments(1, (, ))
+        listener: endMetadata(@, ., @)
+      parseMetadata())
+        listener: beginMetadata(@)
+        ensureIdentifier(@, metadataReference)
+          listener: handleIdentifier(foo, metadataReference)
+        parseQualifiedRestOpt(foo, metadataContinuation)
+          parseQualifiedRest(foo, metadataContinuation)
+            ensureIdentifier(., metadataContinuation)
+              listener: handleIdentifier(bar, metadataContinuation)
+            listener: handleQualified(.)
+        listener: beginTypeArguments(<)
+        listener: handleIdentifier(int, typeReference)
+        listener: handleNoTypeArguments(>)
+        listener: handleType(int, null)
+        listener: endTypeArguments(1, <, >)
+        parseArgumentsOpt(>)
+          parseArguments(>)
+            parseArgumentsRest(()
+              listener: beginArguments(()
+              parseExpression(()
+                parsePrecedenceExpression((, 1, true)
+                  parseUnaryExpression((, true)
+                    parsePrimary((, expression)
+                      parseLiteralString(()
+                        parseSingleLiteralString(()
+                          listener: beginLiteralString("hello")
+                          listener: endLiteralString(0, ))
+              listener: endArguments(1, (, ))
+        listener: endMetadata(@, null, @)
+      parseMetadata())
+        listener: beginMetadata(@)
+        ensureIdentifier(@, metadataReference)
+          listener: handleIdentifier(foo, metadataReference)
+        parseQualifiedRestOpt(foo, metadataContinuation)
+          parseQualifiedRest(foo, metadataContinuation)
+            ensureIdentifier(., metadataContinuation)
+              listener: handleIdentifier(bar, metadataContinuation)
+            listener: handleQualified(.)
+        listener: beginTypeArguments(<)
+        listener: handleIdentifier(int, typeReference)
+        listener: handleNoTypeArguments(>)
+        listener: handleType(int, null)
+        listener: endTypeArguments(1, <, >)
+        ensureIdentifier(., metadataContinuationAfterTypeArguments)
+          inPlainSync()
+          listener: handleIdentifier(abstract, metadataContinuationAfterTypeArguments)
+        parseArgumentsOpt(abstract)
+          parseArguments(abstract)
+            parseArgumentsRest(()
+              listener: beginArguments(()
+              parseExpression(()
+                parsePrecedenceExpression((, 1, true)
+                  parseUnaryExpression((, true)
+                    parsePrimary((, expression)
+                      parseLiteralString(()
+                        parseSingleLiteralString(()
+                          listener: beginLiteralString("hello")
+                          listener: endLiteralString(0, ))
+              listener: endArguments(1, (, ))
+        listener: endMetadata(@, ., class)
+      listener: endMetadataStar(10)
+    parseTopLevelKeywordDeclaration(), class, Instance of 'DirectiveContext')
+      parseClassDeclarationModifiers(), class)
+      parseClassOrNamedMixinApplication(null, class)
+        listener: beginClassOrNamedMixinApplicationPrelude(class)
+        ensureIdentifier(class, classOrMixinDeclaration)
+          listener: handleIdentifier(X, classOrMixinDeclaration)
+        listener: handleNoTypeVariables({)
+        listener: beginClassDeclaration(class, null, X)
+        parseClass(X, class, class, X)
+          parseClassHeaderOpt(X, class, class)
+            parseClassExtendsOpt(X)
+              listener: handleNoType(X)
+              listener: handleClassExtends(null, 1)
+            parseWithClauseOpt(X)
+              listener: handleClassNoWithClause()
+            parseClassOrMixinImplementsOpt(X)
+              listener: handleClassOrMixinImplements(null, 0)
+            listener: handleClassHeader(class, class, null)
+          parseClassOrMixinOrExtensionBody(X, DeclarationKind.Class, X)
+            listener: beginClassOrMixinBody(DeclarationKind.Class, {)
+            notEofOrValue(}, })
+            listener: endClassOrMixinBody(DeclarationKind.Class, 0, {, })
+          listener: endClassDeclaration(class, })
+  listener: endTopLevelDeclaration(typedef)
+  parseTopLevelDeclarationImpl(}, Instance of 'DirectiveContext')
+    parseMetadataStar(})
+      listener: beginMetadataStar(typedef)
+      listener: endMetadataStar(0)
+    parseTopLevelKeywordDeclaration(}, typedef, Instance of 'DirectiveContext')
+      parseTopLevelKeywordModifiers(}, typedef)
+      parseTypedef(typedef)
+        listener: beginUncategorizedTopLevelDeclaration(typedef)
+        listener: beginFunctionTypeAlias(typedef)
+        ensureIdentifierPotentiallyRecovered(typedef, typedefDeclaration, true)
+          listener: handleIdentifier(F, typedefDeclaration)
+        listener: beginTypeVariables(<)
+        parseMetadataStar(<)
+          listener: beginMetadataStar(@)
+          parseMetadata(<)
+            listener: beginMetadata(@)
+            ensureIdentifier(@, metadataReference)
+              inPlainSync()
+              listener: handleIdentifier(abstract, metadataReference)
+            parseQualifiedRestOpt(abstract, metadataContinuation)
+            listener: handleNoTypeArguments(T)
+            parseArgumentsOpt(abstract)
+              listener: handleNoArguments(T)
+            listener: endMetadata(@, null, T)
+          listener: endMetadataStar(1)
+        ensureIdentifier(abstract, typeVariableDeclaration)
+          listener: handleIdentifier(T, typeVariableDeclaration)
+        listener: beginTypeVariable(T)
+        listener: handleTypeVariablesDefined(T, 1)
+        listener: handleNoType(T)
+        listener: endTypeVariable(>, 0, null, null)
+        listener: endTypeVariables(<, >)
+        listener: beginFunctionType(int)
+        listener: beginTypeVariables(<)
+        parseMetadataStar(<)
+          listener: beginMetadataStar(@)
+          parseMetadata(<)
+            listener: beginMetadata(@)
+            ensureIdentifier(@, metadataReference)
+              inPlainSync()
+              listener: handleIdentifier(abstract, metadataReference)
+            parseQualifiedRestOpt(abstract, metadataContinuation)
+            listener: handleNoTypeArguments(X)
+            parseArgumentsOpt(abstract)
+              listener: handleNoArguments(X)
+            listener: endMetadata(@, null, X)
+          listener: endMetadataStar(1)
+        ensureIdentifier(abstract, typeVariableDeclaration)
+          listener: handleIdentifier(X, typeVariableDeclaration)
+        listener: beginTypeVariable(X)
+        listener: handleTypeVariablesDefined(X, 1)
+        listener: handleNoType(X)
+        listener: endTypeVariable(>, 0, null, null)
+        listener: endTypeVariables(<, >)
+        ensureIdentifier(=, typeReference)
+          listener: handleIdentifier(int, typeReference)
+        listener: handleNoTypeArguments(Function)
+        listener: handleType(int, null)
+        parseFormalParametersRequiredOpt(>, MemberKind.GeneralizedFunctionType)
+          parseFormalParametersRest((, MemberKind.GeneralizedFunctionType)
+            listener: beginFormalParameters((, MemberKind.GeneralizedFunctionType)
+            parseFormalParameter((, FormalParameterKind.mandatory, MemberKind.GeneralizedFunctionType)
+              parseMetadataStar(()
+                listener: beginMetadataStar(@)
+                parseMetadata(()
+                  listener: beginMetadata(@)
+                  ensureIdentifier(@, metadataReference)
+                    inPlainSync()
+                    listener: handleIdentifier(abstract, metadataReference)
+                  parseQualifiedRestOpt(abstract, metadataContinuation)
+                  listener: handleNoTypeArguments(int)
+                  parseArgumentsOpt(abstract)
+                    listener: handleNoArguments(int)
+                  listener: endMetadata(@, null, int)
+                listener: endMetadataStar(1)
+              listener: beginFormalParameter(int, MemberKind.GeneralizedFunctionType, null, null, null)
+              listener: handleIdentifier(int, typeReference)
+              listener: handleNoTypeArguments())
+              listener: handleType(int, null)
+              listener: handleNoName())
+              listener: handleFormalParameterWithoutValue())
+              listener: endFormalParameter(null, null, ), null, null, FormalParameterKind.mandatory, MemberKind.GeneralizedFunctionType)
+            listener: endFormalParameters(1, (, ), MemberKind.GeneralizedFunctionType)
+        listener: endFunctionType(Function, null)
+        ensureSemicolon())
+        listener: endFunctionTypeAlias(typedef, =, ;)
+  listener: endTopLevelDeclaration(typedef)
+  parseTopLevelDeclarationImpl(;, Instance of 'DirectiveContext')
+    parseMetadataStar(;)
+      listener: beginMetadataStar(typedef)
+      listener: endMetadataStar(0)
+    parseTopLevelKeywordDeclaration(;, typedef, Instance of 'DirectiveContext')
+      parseTopLevelKeywordModifiers(;, typedef)
+      parseTypedef(typedef)
+        listener: beginUncategorizedTopLevelDeclaration(typedef)
+        listener: beginFunctionTypeAlias(typedef)
+        ensureIdentifierPotentiallyRecovered(typedef, typedefDeclaration, true)
+          listener: handleIdentifier(F, typedefDeclaration)
+        listener: beginTypeVariables(<)
+        parseMetadataStar(<)
+          listener: beginMetadataStar(@)
+          parseMetadata(<)
+            listener: beginMetadata(@)
+            ensureIdentifier(@, metadataReference)
+              listener: handleIdentifier(foo, metadataReference)
+            parseQualifiedRestOpt(foo, metadataContinuation)
+              parseQualifiedRest(foo, metadataContinuation)
+                ensureIdentifier(., metadataContinuation)
+                  inPlainSync()
+                  listener: handleIdentifier(abstract, metadataContinuation)
+                listener: handleQualified(.)
+            listener: handleNoTypeArguments(T)
+            parseArgumentsOpt(abstract)
+              listener: handleNoArguments(T)
+            listener: endMetadata(@, null, T)
+          listener: endMetadataStar(1)
+        ensureIdentifier(abstract, typeVariableDeclaration)
+          listener: handleIdentifier(T, typeVariableDeclaration)
+        listener: beginTypeVariable(T)
+        listener: handleTypeVariablesDefined(T, 1)
+        listener: handleNoType(T)
+        listener: endTypeVariable(>, 0, null, null)
+        listener: endTypeVariables(<, >)
+        listener: beginFunctionType(int)
+        listener: beginTypeVariables(<)
+        parseMetadataStar(<)
+          listener: beginMetadataStar(@)
+          parseMetadata(<)
+            listener: beginMetadata(@)
+            ensureIdentifier(@, metadataReference)
+              listener: handleIdentifier(foo, metadataReference)
+            parseQualifiedRestOpt(foo, metadataContinuation)
+              parseQualifiedRest(foo, metadataContinuation)
+                ensureIdentifier(., metadataContinuation)
+                  inPlainSync()
+                  listener: handleIdentifier(abstract, metadataContinuation)
+                listener: handleQualified(.)
+            listener: handleNoTypeArguments(X)
+            parseArgumentsOpt(abstract)
+              listener: handleNoArguments(X)
+            listener: endMetadata(@, null, X)
+          listener: endMetadataStar(1)
+        ensureIdentifier(abstract, typeVariableDeclaration)
+          listener: handleIdentifier(X, typeVariableDeclaration)
+        listener: beginTypeVariable(X)
+        listener: handleTypeVariablesDefined(X, 1)
+        listener: handleNoType(X)
+        listener: endTypeVariable(>, 0, null, null)
+        listener: endTypeVariables(<, >)
+        ensureIdentifier(=, typeReference)
+          listener: handleIdentifier(int, typeReference)
+        listener: handleNoTypeArguments(Function)
+        listener: handleType(int, null)
+        parseFormalParametersRequiredOpt(>, MemberKind.GeneralizedFunctionType)
+          parseFormalParametersRest((, MemberKind.GeneralizedFunctionType)
+            listener: beginFormalParameters((, MemberKind.GeneralizedFunctionType)
+            parseFormalParameter((, FormalParameterKind.mandatory, MemberKind.GeneralizedFunctionType)
+              parseMetadataStar(()
+                listener: beginMetadataStar(@)
+                parseMetadata(()
+                  listener: beginMetadata(@)
+                  ensureIdentifier(@, metadataReference)
+                    listener: handleIdentifier(foo, metadataReference)
+                  parseQualifiedRestOpt(foo, metadataContinuation)
+                    parseQualifiedRest(foo, metadataContinuation)
+                      ensureIdentifier(., metadataContinuation)
+                        inPlainSync()
+                        listener: handleIdentifier(abstract, metadataContinuation)
+                      listener: handleQualified(.)
+                  listener: handleNoTypeArguments(int)
+                  parseArgumentsOpt(abstract)
+                    listener: handleNoArguments(int)
+                  listener: endMetadata(@, null, int)
+                listener: endMetadataStar(1)
+              listener: beginFormalParameter(int, MemberKind.GeneralizedFunctionType, null, null, null)
+              listener: handleIdentifier(int, typeReference)
+              listener: handleNoTypeArguments())
+              listener: handleType(int, null)
+              listener: handleNoName())
+              listener: handleFormalParameterWithoutValue())
+              listener: endFormalParameter(null, null, ), null, null, FormalParameterKind.mandatory, MemberKind.GeneralizedFunctionType)
+            listener: endFormalParameters(1, (, ), MemberKind.GeneralizedFunctionType)
+        listener: endFunctionType(Function, null)
+        ensureSemicolon())
+        listener: endFunctionTypeAlias(typedef, =, ;)
+  listener: endTopLevelDeclaration(typedef)
+  parseTopLevelDeclarationImpl(;, Instance of 'DirectiveContext')
+    parseMetadataStar(;)
+      listener: beginMetadataStar(typedef)
+      listener: endMetadataStar(0)
+    parseTopLevelKeywordDeclaration(;, typedef, Instance of 'DirectiveContext')
+      parseTopLevelKeywordModifiers(;, typedef)
+      parseTypedef(typedef)
+        listener: beginUncategorizedTopLevelDeclaration(typedef)
+        listener: beginFunctionTypeAlias(typedef)
+        ensureIdentifierPotentiallyRecovered(typedef, typedefDeclaration, true)
+          listener: handleIdentifier(F, typedefDeclaration)
+        listener: beginTypeVariables(<)
+        parseMetadataStar(<)
+          listener: beginMetadataStar(@)
+          parseMetadata(<)
+            listener: beginMetadata(@)
+            ensureIdentifier(@, metadataReference)
+              listener: handleIdentifier(foo, metadataReference)
+            parseQualifiedRestOpt(foo, metadataContinuation)
+              parseQualifiedRest(foo, metadataContinuation)
+                ensureIdentifier(., metadataContinuation)
+                  listener: handleIdentifier(bar, metadataContinuation)
+                listener: handleQualified(.)
+            listener: handleNoTypeArguments(.)
+            ensureIdentifier(., metadataContinuationAfterTypeArguments)
+              inPlainSync()
+              listener: handleIdentifier(abstract, metadataContinuationAfterTypeArguments)
+            parseArgumentsOpt(abstract)
+              listener: handleNoArguments(T)
+            listener: endMetadata(@, ., T)
+          listener: endMetadataStar(1)
+        ensureIdentifier(abstract, typeVariableDeclaration)
+          listener: handleIdentifier(T, typeVariableDeclaration)
+        listener: beginTypeVariable(T)
+        listener: handleTypeVariablesDefined(T, 1)
+        listener: handleNoType(T)
+        listener: endTypeVariable(>, 0, null, null)
+        listener: endTypeVariables(<, >)
+        listener: beginFunctionType(int)
+        listener: beginTypeVariables(<)
+        parseMetadataStar(<)
+          listener: beginMetadataStar(@)
+          parseMetadata(<)
+            listener: beginMetadata(@)
+            ensureIdentifier(@, metadataReference)
+              listener: handleIdentifier(foo, metadataReference)
+            parseQualifiedRestOpt(foo, metadataContinuation)
+              parseQualifiedRest(foo, metadataContinuation)
+                ensureIdentifier(., metadataContinuation)
+                  listener: handleIdentifier(bar, metadataContinuation)
+                listener: handleQualified(.)
+            listener: handleNoTypeArguments(.)
+            ensureIdentifier(., metadataContinuationAfterTypeArguments)
+              inPlainSync()
+              listener: handleIdentifier(abstract, metadataContinuationAfterTypeArguments)
+            parseArgumentsOpt(abstract)
+              listener: handleNoArguments(X)
+            listener: endMetadata(@, ., X)
+          listener: endMetadataStar(1)
+        ensureIdentifier(abstract, typeVariableDeclaration)
+          listener: handleIdentifier(X, typeVariableDeclaration)
+        listener: beginTypeVariable(X)
+        listener: handleTypeVariablesDefined(X, 1)
+        listener: handleNoType(X)
+        listener: endTypeVariable(>, 0, null, null)
+        listener: endTypeVariables(<, >)
+        ensureIdentifier(=, typeReference)
+          listener: handleIdentifier(int, typeReference)
+        listener: handleNoTypeArguments(Function)
+        listener: handleType(int, null)
+        parseFormalParametersRequiredOpt(>, MemberKind.GeneralizedFunctionType)
+          parseFormalParametersRest((, MemberKind.GeneralizedFunctionType)
+            listener: beginFormalParameters((, MemberKind.GeneralizedFunctionType)
+            parseFormalParameter((, FormalParameterKind.mandatory, MemberKind.GeneralizedFunctionType)
+              parseMetadataStar(()
+                listener: beginMetadataStar(@)
+                parseMetadata(()
+                  listener: beginMetadata(@)
+                  ensureIdentifier(@, metadataReference)
+                    listener: handleIdentifier(foo, metadataReference)
+                  parseQualifiedRestOpt(foo, metadataContinuation)
+                    parseQualifiedRest(foo, metadataContinuation)
+                      ensureIdentifier(., metadataContinuation)
+                        listener: handleIdentifier(bar, metadataContinuation)
+                      listener: handleQualified(.)
+                  listener: handleNoTypeArguments(.)
+                  ensureIdentifier(., metadataContinuationAfterTypeArguments)
+                    inPlainSync()
+                    listener: handleIdentifier(abstract, metadataContinuationAfterTypeArguments)
+                  parseArgumentsOpt(abstract)
+                    listener: handleNoArguments(int)
+                  listener: endMetadata(@, ., int)
+                listener: endMetadataStar(1)
+              listener: beginFormalParameter(int, MemberKind.GeneralizedFunctionType, null, null, null)
+              listener: handleIdentifier(int, typeReference)
+              listener: handleNoTypeArguments())
+              listener: handleType(int, null)
+              listener: handleNoName())
+              listener: handleFormalParameterWithoutValue())
+              listener: endFormalParameter(null, null, ), null, null, FormalParameterKind.mandatory, MemberKind.GeneralizedFunctionType)
+            listener: endFormalParameters(1, (, ), MemberKind.GeneralizedFunctionType)
+        listener: endFunctionType(Function, null)
+        ensureSemicolon())
+        listener: endFunctionTypeAlias(typedef, =, ;)
+  listener: endTopLevelDeclaration(typedef)
+  parseTopLevelDeclarationImpl(;, Instance of 'DirectiveContext')
+    parseMetadataStar(;)
+      listener: beginMetadataStar(typedef)
+      listener: endMetadataStar(0)
+    parseTopLevelKeywordDeclaration(;, typedef, Instance of 'DirectiveContext')
+      parseTopLevelKeywordModifiers(;, typedef)
+      parseTypedef(typedef)
+        listener: beginUncategorizedTopLevelDeclaration(typedef)
+        listener: beginFunctionTypeAlias(typedef)
+        ensureIdentifierPotentiallyRecovered(typedef, typedefDeclaration, true)
+          listener: handleIdentifier(F, typedefDeclaration)
+        listener: beginTypeVariables(<)
+        parseMetadataStar(<)
+          listener: beginMetadataStar(@)
+          parseMetadata(<)
+            listener: beginMetadata(@)
+            ensureIdentifier(@, metadataReference)
+              listener: handleIdentifier(foo, metadataReference)
+            parseQualifiedRestOpt(foo, metadataContinuation)
+            listener: handleNoTypeArguments(()
+            parseArgumentsOpt(foo)
+              parseArguments(foo)
+                parseArgumentsRest(()
+                  listener: beginArguments(()
+                  parseExpression(()
+                    parsePrecedenceExpression((, 1, true)
+                      parseUnaryExpression((, true)
+                        parsePrimary((, expression)
+                          parseLiteralString(()
+                            parseSingleLiteralString(()
+                              listener: beginLiteralString("hello")
+                              listener: endLiteralString(0, ))
+                  listener: endArguments(1, (, ))
+            listener: endMetadata(@, null, T)
+          listener: endMetadataStar(1)
+        ensureIdentifier(), typeVariableDeclaration)
+          listener: handleIdentifier(T, typeVariableDeclaration)
+        listener: beginTypeVariable(T)
+        listener: handleTypeVariablesDefined(T, 1)
+        listener: handleNoType(T)
+        listener: endTypeVariable(>, 0, null, null)
+        listener: endTypeVariables(<, >)
+        listener: beginFunctionType(int)
+        listener: beginTypeVariables(<)
+        parseMetadataStar(<)
+          listener: beginMetadataStar(@)
+          parseMetadata(<)
+            listener: beginMetadata(@)
+            ensureIdentifier(@, metadataReference)
+              listener: handleIdentifier(foo, metadataReference)
+            parseQualifiedRestOpt(foo, metadataContinuation)
+            listener: handleNoTypeArguments(()
+            parseArgumentsOpt(foo)
+              parseArguments(foo)
+                parseArgumentsRest(()
+                  listener: beginArguments(()
+                  parseExpression(()
+                    parsePrecedenceExpression((, 1, true)
+                      parseUnaryExpression((, true)
+                        parsePrimary((, expression)
+                          parseLiteralString(()
+                            parseSingleLiteralString(()
+                              listener: beginLiteralString("hello")
+                              listener: endLiteralString(0, ))
+                  listener: endArguments(1, (, ))
+            listener: endMetadata(@, null, X)
+          listener: endMetadataStar(1)
+        ensureIdentifier(), typeVariableDeclaration)
+          listener: handleIdentifier(X, typeVariableDeclaration)
+        listener: beginTypeVariable(X)
+        listener: handleTypeVariablesDefined(X, 1)
+        listener: handleNoType(X)
+        listener: endTypeVariable(>, 0, null, null)
+        listener: endTypeVariables(<, >)
+        ensureIdentifier(=, typeReference)
+          listener: handleIdentifier(int, typeReference)
+        listener: handleNoTypeArguments(Function)
+        listener: handleType(int, null)
+        parseFormalParametersRequiredOpt(>, MemberKind.GeneralizedFunctionType)
+          parseFormalParametersRest((, MemberKind.GeneralizedFunctionType)
+            listener: beginFormalParameters((, MemberKind.GeneralizedFunctionType)
+            parseFormalParameter((, FormalParameterKind.mandatory, MemberKind.GeneralizedFunctionType)
+              parseMetadataStar(()
+                listener: beginMetadataStar(@)
+                parseMetadata(()
+                  listener: beginMetadata(@)
+                  ensureIdentifier(@, metadataReference)
+                    listener: handleIdentifier(foo, metadataReference)
+                  parseQualifiedRestOpt(foo, metadataContinuation)
+                  listener: handleNoTypeArguments(()
+                  parseArgumentsOpt(foo)
+                    parseArguments(foo)
+                      parseArgumentsRest(()
+                        listener: beginArguments(()
+                        parseExpression(()
+                          parsePrecedenceExpression((, 1, true)
+                            parseUnaryExpression((, true)
+                              parsePrimary((, expression)
+                                parseLiteralString(()
+                                  parseSingleLiteralString(()
+                                    listener: beginLiteralString("hello")
+                                    listener: endLiteralString(0, ))
+                        listener: endArguments(1, (, ))
+                  listener: endMetadata(@, null, int)
+                listener: endMetadataStar(1)
+              listener: beginFormalParameter(int, MemberKind.GeneralizedFunctionType, null, null, null)
+              listener: handleIdentifier(int, typeReference)
+              listener: handleNoTypeArguments())
+              listener: handleType(int, null)
+              listener: handleNoName())
+              listener: handleFormalParameterWithoutValue())
+              listener: endFormalParameter(null, null, ), null, null, FormalParameterKind.mandatory, MemberKind.GeneralizedFunctionType)
+            listener: endFormalParameters(1, (, ), MemberKind.GeneralizedFunctionType)
+        listener: endFunctionType(Function, null)
+        ensureSemicolon())
+        listener: endFunctionTypeAlias(typedef, =, ;)
+  listener: endTopLevelDeclaration(typedef)
+  parseTopLevelDeclarationImpl(;, Instance of 'DirectiveContext')
+    parseMetadataStar(;)
+      listener: beginMetadataStar(typedef)
+      listener: endMetadataStar(0)
+    parseTopLevelKeywordDeclaration(;, typedef, Instance of 'DirectiveContext')
+      parseTopLevelKeywordModifiers(;, typedef)
+      parseTypedef(typedef)
+        listener: beginUncategorizedTopLevelDeclaration(typedef)
+        listener: beginFunctionTypeAlias(typedef)
+        ensureIdentifierPotentiallyRecovered(typedef, typedefDeclaration, true)
+          listener: handleIdentifier(F, typedefDeclaration)
+        listener: beginTypeVariables(<)
+        parseMetadataStar(<)
+          listener: beginMetadataStar(@)
+          parseMetadata(<)
+            listener: beginMetadata(@)
+            ensureIdentifier(@, metadataReference)
+              listener: handleIdentifier(foo, metadataReference)
+            parseQualifiedRestOpt(foo, metadataContinuation)
+              parseQualifiedRest(foo, metadataContinuation)
+                ensureIdentifier(., metadataContinuation)
+                  inPlainSync()
+                  listener: handleIdentifier(abstract, metadataContinuation)
+                listener: handleQualified(.)
+            listener: handleNoTypeArguments(()
+            parseArgumentsOpt(abstract)
+              parseArguments(abstract)
+                parseArgumentsRest(()
+                  listener: beginArguments(()
+                  parseExpression(()
+                    parsePrecedenceExpression((, 1, true)
+                      parseUnaryExpression((, true)
+                        parsePrimary((, expression)
+                          parseLiteralString(()
+                            parseSingleLiteralString(()
+                              listener: beginLiteralString("hello")
+                              listener: endLiteralString(0, ))
+                  listener: endArguments(1, (, ))
+            listener: endMetadata(@, null, T)
+          listener: endMetadataStar(1)
+        ensureIdentifier(), typeVariableDeclaration)
+          listener: handleIdentifier(T, typeVariableDeclaration)
+        listener: beginTypeVariable(T)
+        listener: handleTypeVariablesDefined(T, 1)
+        listener: handleNoType(T)
+        listener: endTypeVariable(>, 0, null, null)
+        listener: endTypeVariables(<, >)
+        listener: beginFunctionType(int)
+        listener: beginTypeVariables(<)
+        parseMetadataStar(<)
+          listener: beginMetadataStar(@)
+          parseMetadata(<)
+            listener: beginMetadata(@)
+            ensureIdentifier(@, metadataReference)
+              listener: handleIdentifier(foo, metadataReference)
+            parseQualifiedRestOpt(foo, metadataContinuation)
+              parseQualifiedRest(foo, metadataContinuation)
+                ensureIdentifier(., metadataContinuation)
+                  inPlainSync()
+                  listener: handleIdentifier(abstract, metadataContinuation)
+                listener: handleQualified(.)
+            listener: handleNoTypeArguments(()
+            parseArgumentsOpt(abstract)
+              parseArguments(abstract)
+                parseArgumentsRest(()
+                  listener: beginArguments(()
+                  parseExpression(()
+                    parsePrecedenceExpression((, 1, true)
+                      parseUnaryExpression((, true)
+                        parsePrimary((, expression)
+                          parseLiteralString(()
+                            parseSingleLiteralString(()
+                              listener: beginLiteralString("hello")
+                              listener: endLiteralString(0, ))
+                  listener: endArguments(1, (, ))
+            listener: endMetadata(@, null, X)
+          listener: endMetadataStar(1)
+        ensureIdentifier(), typeVariableDeclaration)
+          listener: handleIdentifier(X, typeVariableDeclaration)
+        listener: beginTypeVariable(X)
+        listener: handleTypeVariablesDefined(X, 1)
+        listener: handleNoType(X)
+        listener: endTypeVariable(>, 0, null, null)
+        listener: endTypeVariables(<, >)
+        ensureIdentifier(=, typeReference)
+          listener: handleIdentifier(int, typeReference)
+        listener: handleNoTypeArguments(Function)
+        listener: handleType(int, null)
+        parseFormalParametersRequiredOpt(>, MemberKind.GeneralizedFunctionType)
+          parseFormalParametersRest((, MemberKind.GeneralizedFunctionType)
+            listener: beginFormalParameters((, MemberKind.GeneralizedFunctionType)
+            parseFormalParameter((, FormalParameterKind.mandatory, MemberKind.GeneralizedFunctionType)
+              parseMetadataStar(()
+                listener: beginMetadataStar(@)
+                parseMetadata(()
+                  listener: beginMetadata(@)
+                  ensureIdentifier(@, metadataReference)
+                    listener: handleIdentifier(foo, metadataReference)
+                  parseQualifiedRestOpt(foo, metadataContinuation)
+                    parseQualifiedRest(foo, metadataContinuation)
+                      ensureIdentifier(., metadataContinuation)
+                        inPlainSync()
+                        listener: handleIdentifier(abstract, metadataContinuation)
+                      listener: handleQualified(.)
+                  listener: handleNoTypeArguments(()
+                  parseArgumentsOpt(abstract)
+                    parseArguments(abstract)
+                      parseArgumentsRest(()
+                        listener: beginArguments(()
+                        parseExpression(()
+                          parsePrecedenceExpression((, 1, true)
+                            parseUnaryExpression((, true)
+                              parsePrimary((, expression)
+                                parseLiteralString(()
+                                  parseSingleLiteralString(()
+                                    listener: beginLiteralString("hello")
+                                    listener: endLiteralString(0, ))
+                        listener: endArguments(1, (, ))
+                  listener: endMetadata(@, null, int)
+                listener: endMetadataStar(1)
+              listener: beginFormalParameter(int, MemberKind.GeneralizedFunctionType, null, null, null)
+              listener: handleIdentifier(int, typeReference)
+              listener: handleNoTypeArguments())
+              listener: handleType(int, null)
+              listener: handleNoName())
+              listener: handleFormalParameterWithoutValue())
+              listener: endFormalParameter(null, null, ), null, null, FormalParameterKind.mandatory, MemberKind.GeneralizedFunctionType)
+            listener: endFormalParameters(1, (, ), MemberKind.GeneralizedFunctionType)
+        listener: endFunctionType(Function, null)
+        ensureSemicolon())
+        listener: endFunctionTypeAlias(typedef, =, ;)
+  listener: endTopLevelDeclaration(typedef)
+  parseTopLevelDeclarationImpl(;, Instance of 'DirectiveContext')
+    parseMetadataStar(;)
+      listener: beginMetadataStar(typedef)
+      listener: endMetadataStar(0)
+    parseTopLevelKeywordDeclaration(;, typedef, Instance of 'DirectiveContext')
+      parseTopLevelKeywordModifiers(;, typedef)
+      parseTypedef(typedef)
+        listener: beginUncategorizedTopLevelDeclaration(typedef)
+        listener: beginFunctionTypeAlias(typedef)
+        ensureIdentifierPotentiallyRecovered(typedef, typedefDeclaration, true)
+          listener: handleIdentifier(F, typedefDeclaration)
+        listener: beginTypeVariables(<)
+        parseMetadataStar(<)
+          listener: beginMetadataStar(@)
+          parseMetadata(<)
+            listener: beginMetadata(@)
+            ensureIdentifier(@, metadataReference)
+              listener: handleIdentifier(foo, metadataReference)
+            parseQualifiedRestOpt(foo, metadataContinuation)
+              parseQualifiedRest(foo, metadataContinuation)
+                ensureIdentifier(., metadataContinuation)
+                  listener: handleIdentifier(bar, metadataContinuation)
+                listener: handleQualified(.)
+            listener: handleNoTypeArguments(.)
+            ensureIdentifier(., metadataContinuationAfterTypeArguments)
+              inPlainSync()
+              listener: handleIdentifier(abstract, metadataContinuationAfterTypeArguments)
+            parseArgumentsOpt(abstract)
+              parseArguments(abstract)
+                parseArgumentsRest(()
+                  listener: beginArguments(()
+                  parseExpression(()
+                    parsePrecedenceExpression((, 1, true)
+                      parseUnaryExpression((, true)
+                        parsePrimary((, expression)
+                          parseLiteralString(()
+                            parseSingleLiteralString(()
+                              listener: beginLiteralString("hello")
+                              listener: endLiteralString(0, ))
+                  listener: endArguments(1, (, ))
+            listener: endMetadata(@, ., T)
+          listener: endMetadataStar(1)
+        ensureIdentifier(), typeVariableDeclaration)
+          listener: handleIdentifier(T, typeVariableDeclaration)
+        listener: beginTypeVariable(T)
+        listener: handleTypeVariablesDefined(T, 1)
+        listener: handleNoType(T)
+        listener: endTypeVariable(>, 0, null, null)
+        listener: endTypeVariables(<, >)
+        listener: beginFunctionType(int)
+        listener: beginTypeVariables(<)
+        parseMetadataStar(<)
+          listener: beginMetadataStar(@)
+          parseMetadata(<)
+            listener: beginMetadata(@)
+            ensureIdentifier(@, metadataReference)
+              listener: handleIdentifier(foo, metadataReference)
+            parseQualifiedRestOpt(foo, metadataContinuation)
+              parseQualifiedRest(foo, metadataContinuation)
+                ensureIdentifier(., metadataContinuation)
+                  listener: handleIdentifier(bar, metadataContinuation)
+                listener: handleQualified(.)
+            listener: handleNoTypeArguments(.)
+            ensureIdentifier(., metadataContinuationAfterTypeArguments)
+              inPlainSync()
+              listener: handleIdentifier(abstract, metadataContinuationAfterTypeArguments)
+            parseArgumentsOpt(abstract)
+              parseArguments(abstract)
+                parseArgumentsRest(()
+                  listener: beginArguments(()
+                  parseExpression(()
+                    parsePrecedenceExpression((, 1, true)
+                      parseUnaryExpression((, true)
+                        parsePrimary((, expression)
+                          parseLiteralString(()
+                            parseSingleLiteralString(()
+                              listener: beginLiteralString("hello")
+                              listener: endLiteralString(0, ))
+                  listener: endArguments(1, (, ))
+            listener: endMetadata(@, ., X)
+          listener: endMetadataStar(1)
+        ensureIdentifier(), typeVariableDeclaration)
+          listener: handleIdentifier(X, typeVariableDeclaration)
+        listener: beginTypeVariable(X)
+        listener: handleTypeVariablesDefined(X, 1)
+        listener: handleNoType(X)
+        listener: endTypeVariable(>, 0, null, null)
+        listener: endTypeVariables(<, >)
+        ensureIdentifier(=, typeReference)
+          listener: handleIdentifier(int, typeReference)
+        listener: handleNoTypeArguments(Function)
+        listener: handleType(int, null)
+        parseFormalParametersRequiredOpt(>, MemberKind.GeneralizedFunctionType)
+          parseFormalParametersRest((, MemberKind.GeneralizedFunctionType)
+            listener: beginFormalParameters((, MemberKind.GeneralizedFunctionType)
+            parseFormalParameter((, FormalParameterKind.mandatory, MemberKind.GeneralizedFunctionType)
+              parseMetadataStar(()
+                listener: beginMetadataStar(@)
+                parseMetadata(()
+                  listener: beginMetadata(@)
+                  ensureIdentifier(@, metadataReference)
+                    listener: handleIdentifier(foo, metadataReference)
+                  parseQualifiedRestOpt(foo, metadataContinuation)
+                    parseQualifiedRest(foo, metadataContinuation)
+                      ensureIdentifier(., metadataContinuation)
+                        listener: handleIdentifier(bar, metadataContinuation)
+                      listener: handleQualified(.)
+                  listener: handleNoTypeArguments(.)
+                  ensureIdentifier(., metadataContinuationAfterTypeArguments)
+                    inPlainSync()
+                    listener: handleIdentifier(abstract, metadataContinuationAfterTypeArguments)
+                  parseArgumentsOpt(abstract)
+                    parseArguments(abstract)
+                      parseArgumentsRest(()
+                        listener: beginArguments(()
+                        parseExpression(()
+                          parsePrecedenceExpression((, 1, true)
+                            parseUnaryExpression((, true)
+                              parsePrimary((, expression)
+                                parseLiteralString(()
+                                  parseSingleLiteralString(()
+                                    listener: beginLiteralString("hello")
+                                    listener: endLiteralString(0, ))
+                        listener: endArguments(1, (, ))
+                  listener: endMetadata(@, ., int)
+                listener: endMetadataStar(1)
+              listener: beginFormalParameter(int, MemberKind.GeneralizedFunctionType, null, null, null)
+              listener: handleIdentifier(int, typeReference)
+              listener: handleNoTypeArguments())
+              listener: handleType(int, null)
+              listener: handleNoName())
+              listener: handleFormalParameterWithoutValue())
+              listener: endFormalParameter(null, null, ), null, null, FormalParameterKind.mandatory, MemberKind.GeneralizedFunctionType)
+            listener: endFormalParameters(1, (, ), MemberKind.GeneralizedFunctionType)
+        listener: endFunctionType(Function, null)
+        ensureSemicolon())
+        listener: endFunctionTypeAlias(typedef, =, ;)
+  listener: endTopLevelDeclaration(typedef)
+  parseTopLevelDeclarationImpl(;, Instance of 'DirectiveContext')
+    parseMetadataStar(;)
+      listener: beginMetadataStar(typedef)
+      listener: endMetadataStar(0)
+    parseTopLevelKeywordDeclaration(;, typedef, Instance of 'DirectiveContext')
+      parseTopLevelKeywordModifiers(;, typedef)
+      parseTypedef(typedef)
+        listener: beginUncategorizedTopLevelDeclaration(typedef)
+        listener: beginFunctionTypeAlias(typedef)
+        ensureIdentifierPotentiallyRecovered(typedef, typedefDeclaration, true)
+          listener: handleIdentifier(F, typedefDeclaration)
+        listener: beginTypeVariables(<)
+        parseMetadataStar(<)
+          listener: beginMetadataStar(@)
+          parseMetadata(<)
+            listener: beginMetadata(@)
+            ensureIdentifier(@, metadataReference)
+              listener: handleIdentifier(foo, metadataReference)
+            parseQualifiedRestOpt(foo, metadataContinuation)
+            listener: beginTypeArguments(<)
+            listener: handleIdentifier(int, typeReference)
+            listener: handleNoTypeArguments(>)
+            listener: handleType(int, null)
+            listener: endTypeArguments(1, <, >)
+            parseArgumentsOpt(>)
+              parseArguments(>)
+                parseArgumentsRest(()
+                  listener: beginArguments(()
+                  parseExpression(()
+                    parsePrecedenceExpression((, 1, true)
+                      parseUnaryExpression((, true)
+                        parsePrimary((, expression)
+                          parseLiteralString(()
+                            parseSingleLiteralString(()
+                              listener: beginLiteralString("hello")
+                              listener: endLiteralString(0, ))
+                  listener: endArguments(1, (, ))
+            listener: endMetadata(@, null, T)
+          listener: endMetadataStar(1)
+        ensureIdentifier(), typeVariableDeclaration)
+          listener: handleIdentifier(T, typeVariableDeclaration)
+        listener: beginTypeVariable(T)
+        listener: handleTypeVariablesDefined(T, 1)
+        listener: handleNoType(T)
+        listener: endTypeVariable(>, 0, null, null)
+        listener: endTypeVariables(<, >)
+        listener: beginFunctionType(int)
+        listener: beginTypeVariables(<)
+        parseMetadataStar(<)
+          listener: beginMetadataStar(@)
+          parseMetadata(<)
+            listener: beginMetadata(@)
+            ensureIdentifier(@, metadataReference)
+              listener: handleIdentifier(foo, metadataReference)
+            parseQualifiedRestOpt(foo, metadataContinuation)
+            listener: beginTypeArguments(<)
+            listener: handleIdentifier(int, typeReference)
+            listener: handleNoTypeArguments(>)
+            listener: handleType(int, null)
+            listener: endTypeArguments(1, <, >)
+            parseArgumentsOpt(>)
+              parseArguments(>)
+                parseArgumentsRest(()
+                  listener: beginArguments(()
+                  parseExpression(()
+                    parsePrecedenceExpression((, 1, true)
+                      parseUnaryExpression((, true)
+                        parsePrimary((, expression)
+                          parseLiteralString(()
+                            parseSingleLiteralString(()
+                              listener: beginLiteralString("hello")
+                              listener: endLiteralString(0, ))
+                  listener: endArguments(1, (, ))
+            listener: endMetadata(@, null, X)
+          listener: endMetadataStar(1)
+        ensureIdentifier(), typeVariableDeclaration)
+          listener: handleIdentifier(X, typeVariableDeclaration)
+        listener: beginTypeVariable(X)
+        listener: handleTypeVariablesDefined(X, 1)
+        listener: handleNoType(X)
+        listener: endTypeVariable(>, 0, null, null)
+        listener: endTypeVariables(<, >)
+        ensureIdentifier(=, typeReference)
+          listener: handleIdentifier(int, typeReference)
+        listener: handleNoTypeArguments(Function)
+        listener: handleType(int, null)
+        parseFormalParametersRequiredOpt(>, MemberKind.GeneralizedFunctionType)
+          parseFormalParametersRest((, MemberKind.GeneralizedFunctionType)
+            listener: beginFormalParameters((, MemberKind.GeneralizedFunctionType)
+            parseFormalParameter((, FormalParameterKind.mandatory, MemberKind.GeneralizedFunctionType)
+              parseMetadataStar(()
+                listener: beginMetadataStar(@)
+                parseMetadata(()
+                  listener: beginMetadata(@)
+                  ensureIdentifier(@, metadataReference)
+                    listener: handleIdentifier(foo, metadataReference)
+                  parseQualifiedRestOpt(foo, metadataContinuation)
+                  listener: beginTypeArguments(<)
+                  listener: handleIdentifier(int, typeReference)
+                  listener: handleNoTypeArguments(>)
+                  listener: handleType(int, null)
+                  listener: endTypeArguments(1, <, >)
+                  parseArgumentsOpt(>)
+                    parseArguments(>)
+                      parseArgumentsRest(()
+                        listener: beginArguments(()
+                        parseExpression(()
+                          parsePrecedenceExpression((, 1, true)
+                            parseUnaryExpression((, true)
+                              parsePrimary((, expression)
+                                parseLiteralString(()
+                                  parseSingleLiteralString(()
+                                    listener: beginLiteralString("hello")
+                                    listener: endLiteralString(0, ))
+                        listener: endArguments(1, (, ))
+                  listener: endMetadata(@, null, int)
+                listener: endMetadataStar(1)
+              listener: beginFormalParameter(int, MemberKind.GeneralizedFunctionType, null, null, null)
+              listener: handleIdentifier(int, typeReference)
+              listener: handleNoTypeArguments())
+              listener: handleType(int, null)
+              listener: handleNoName())
+              listener: handleFormalParameterWithoutValue())
+              listener: endFormalParameter(null, null, ), null, null, FormalParameterKind.mandatory, MemberKind.GeneralizedFunctionType)
+            listener: endFormalParameters(1, (, ), MemberKind.GeneralizedFunctionType)
+        listener: endFunctionType(Function, null)
+        ensureSemicolon())
+        listener: endFunctionTypeAlias(typedef, =, ;)
+  listener: endTopLevelDeclaration(typedef)
+  parseTopLevelDeclarationImpl(;, Instance of 'DirectiveContext')
+    parseMetadataStar(;)
+      listener: beginMetadataStar(typedef)
+      listener: endMetadataStar(0)
+    parseTopLevelKeywordDeclaration(;, typedef, Instance of 'DirectiveContext')
+      parseTopLevelKeywordModifiers(;, typedef)
+      parseTypedef(typedef)
+        listener: beginUncategorizedTopLevelDeclaration(typedef)
+        listener: beginFunctionTypeAlias(typedef)
+        ensureIdentifierPotentiallyRecovered(typedef, typedefDeclaration, true)
+          listener: handleIdentifier(F, typedefDeclaration)
+        listener: beginTypeVariables(<)
+        parseMetadataStar(<)
+          listener: beginMetadataStar(@)
+          parseMetadata(<)
+            listener: beginMetadata(@)
+            ensureIdentifier(@, metadataReference)
+              listener: handleIdentifier(foo, metadataReference)
+            parseQualifiedRestOpt(foo, metadataContinuation)
+            listener: beginTypeArguments(<)
+            listener: handleIdentifier(int, typeReference)
+            listener: handleNoTypeArguments(>)
+            listener: handleType(int, null)
+            listener: endTypeArguments(1, <, >)
+            ensureIdentifier(., metadataContinuationAfterTypeArguments)
+              inPlainSync()
+              listener: handleIdentifier(abstract, metadataContinuationAfterTypeArguments)
+            parseArgumentsOpt(abstract)
+              parseArguments(abstract)
+                parseArgumentsRest(()
+                  listener: beginArguments(()
+                  parseExpression(()
+                    parsePrecedenceExpression((, 1, true)
+                      parseUnaryExpression((, true)
+                        parsePrimary((, expression)
+                          parseLiteralString(()
+                            parseSingleLiteralString(()
+                              listener: beginLiteralString("hello")
+                              listener: endLiteralString(0, ))
+                  listener: endArguments(1, (, ))
+            listener: endMetadata(@, ., T)
+          listener: endMetadataStar(1)
+        ensureIdentifier(), typeVariableDeclaration)
+          listener: handleIdentifier(T, typeVariableDeclaration)
+        listener: beginTypeVariable(T)
+        listener: handleTypeVariablesDefined(T, 1)
+        listener: handleNoType(T)
+        listener: endTypeVariable(>, 0, null, null)
+        listener: endTypeVariables(<, >)
+        listener: beginFunctionType(int)
+        listener: beginTypeVariables(<)
+        parseMetadataStar(<)
+          listener: beginMetadataStar(@)
+          parseMetadata(<)
+            listener: beginMetadata(@)
+            ensureIdentifier(@, metadataReference)
+              listener: handleIdentifier(foo, metadataReference)
+            parseQualifiedRestOpt(foo, metadataContinuation)
+            listener: beginTypeArguments(<)
+            listener: handleIdentifier(int, typeReference)
+            listener: handleNoTypeArguments(>)
+            listener: handleType(int, null)
+            listener: endTypeArguments(1, <, >)
+            ensureIdentifier(., metadataContinuationAfterTypeArguments)
+              inPlainSync()
+              listener: handleIdentifier(abstract, metadataContinuationAfterTypeArguments)
+            parseArgumentsOpt(abstract)
+              parseArguments(abstract)
+                parseArgumentsRest(()
+                  listener: beginArguments(()
+                  parseExpression(()
+                    parsePrecedenceExpression((, 1, true)
+                      parseUnaryExpression((, true)
+                        parsePrimary((, expression)
+                          parseLiteralString(()
+                            parseSingleLiteralString(()
+                              listener: beginLiteralString("hello")
+                              listener: endLiteralString(0, ))
+                  listener: endArguments(1, (, ))
+            listener: endMetadata(@, ., X)
+          listener: endMetadataStar(1)
+        ensureIdentifier(), typeVariableDeclaration)
+          listener: handleIdentifier(X, typeVariableDeclaration)
+        listener: beginTypeVariable(X)
+        listener: handleTypeVariablesDefined(X, 1)
+        listener: handleNoType(X)
+        listener: endTypeVariable(>, 0, null, null)
+        listener: endTypeVariables(<, >)
+        ensureIdentifier(=, typeReference)
+          listener: handleIdentifier(int, typeReference)
+        listener: handleNoTypeArguments(Function)
+        listener: handleType(int, null)
+        parseFormalParametersRequiredOpt(>, MemberKind.GeneralizedFunctionType)
+          parseFormalParametersRest((, MemberKind.GeneralizedFunctionType)
+            listener: beginFormalParameters((, MemberKind.GeneralizedFunctionType)
+            parseFormalParameter((, FormalParameterKind.mandatory, MemberKind.GeneralizedFunctionType)
+              parseMetadataStar(()
+                listener: beginMetadataStar(@)
+                parseMetadata(()
+                  listener: beginMetadata(@)
+                  ensureIdentifier(@, metadataReference)
+                    listener: handleIdentifier(foo, metadataReference)
+                  parseQualifiedRestOpt(foo, metadataContinuation)
+                  listener: beginTypeArguments(<)
+                  listener: handleIdentifier(int, typeReference)
+                  listener: handleNoTypeArguments(>)
+                  listener: handleType(int, null)
+                  listener: endTypeArguments(1, <, >)
+                  ensureIdentifier(., metadataContinuationAfterTypeArguments)
+                    inPlainSync()
+                    listener: handleIdentifier(abstract, metadataContinuationAfterTypeArguments)
+                  parseArgumentsOpt(abstract)
+                    parseArguments(abstract)
+                      parseArgumentsRest(()
+                        listener: beginArguments(()
+                        parseExpression(()
+                          parsePrecedenceExpression((, 1, true)
+                            parseUnaryExpression((, true)
+                              parsePrimary((, expression)
+                                parseLiteralString(()
+                                  parseSingleLiteralString(()
+                                    listener: beginLiteralString("hello")
+                                    listener: endLiteralString(0, ))
+                        listener: endArguments(1, (, ))
+                  listener: endMetadata(@, ., int)
+                listener: endMetadataStar(1)
+              listener: beginFormalParameter(int, MemberKind.GeneralizedFunctionType, null, null, null)
+              listener: handleIdentifier(int, typeReference)
+              listener: handleNoTypeArguments())
+              listener: handleType(int, null)
+              listener: handleNoName())
+              listener: handleFormalParameterWithoutValue())
+              listener: endFormalParameter(null, null, ), null, null, FormalParameterKind.mandatory, MemberKind.GeneralizedFunctionType)
+            listener: endFormalParameters(1, (, ), MemberKind.GeneralizedFunctionType)
+        listener: endFunctionType(Function, null)
+        ensureSemicolon())
+        listener: endFunctionTypeAlias(typedef, =, ;)
+  listener: endTopLevelDeclaration(typedef)
+  parseTopLevelDeclarationImpl(;, Instance of 'DirectiveContext')
+    parseMetadataStar(;)
+      listener: beginMetadataStar(typedef)
+      listener: endMetadataStar(0)
+    parseTopLevelKeywordDeclaration(;, typedef, Instance of 'DirectiveContext')
+      parseTopLevelKeywordModifiers(;, typedef)
+      parseTypedef(typedef)
+        listener: beginUncategorizedTopLevelDeclaration(typedef)
+        listener: beginFunctionTypeAlias(typedef)
+        ensureIdentifierPotentiallyRecovered(typedef, typedefDeclaration, true)
+          listener: handleIdentifier(F, typedefDeclaration)
+        listener: beginTypeVariables(<)
+        parseMetadataStar(<)
+          listener: beginMetadataStar(@)
+          parseMetadata(<)
+            listener: beginMetadata(@)
+            ensureIdentifier(@, metadataReference)
+              listener: handleIdentifier(foo, metadataReference)
+            parseQualifiedRestOpt(foo, metadataContinuation)
+              parseQualifiedRest(foo, metadataContinuation)
+                ensureIdentifier(., metadataContinuation)
+                  listener: handleIdentifier(bar, metadataContinuation)
+                listener: handleQualified(.)
+            listener: beginTypeArguments(<)
+            listener: handleIdentifier(int, typeReference)
+            listener: handleNoTypeArguments(>)
+            listener: handleType(int, null)
+            listener: endTypeArguments(1, <, >)
+            parseArgumentsOpt(>)
+              parseArguments(>)
+                parseArgumentsRest(()
+                  listener: beginArguments(()
+                  parseExpression(()
+                    parsePrecedenceExpression((, 1, true)
+                      parseUnaryExpression((, true)
+                        parsePrimary((, expression)
+                          parseLiteralString(()
+                            parseSingleLiteralString(()
+                              listener: beginLiteralString("hello")
+                              listener: endLiteralString(0, ))
+                  listener: endArguments(1, (, ))
+            listener: endMetadata(@, null, T)
+          listener: endMetadataStar(1)
+        ensureIdentifier(), typeVariableDeclaration)
+          listener: handleIdentifier(T, typeVariableDeclaration)
+        listener: beginTypeVariable(T)
+        listener: handleTypeVariablesDefined(T, 1)
+        listener: handleNoType(T)
+        listener: endTypeVariable(>, 0, null, null)
+        listener: endTypeVariables(<, >)
+        listener: beginFunctionType(int)
+        listener: beginTypeVariables(<)
+        parseMetadataStar(<)
+          listener: beginMetadataStar(@)
+          parseMetadata(<)
+            listener: beginMetadata(@)
+            ensureIdentifier(@, metadataReference)
+              listener: handleIdentifier(foo, metadataReference)
+            parseQualifiedRestOpt(foo, metadataContinuation)
+              parseQualifiedRest(foo, metadataContinuation)
+                ensureIdentifier(., metadataContinuation)
+                  listener: handleIdentifier(bar, metadataContinuation)
+                listener: handleQualified(.)
+            listener: beginTypeArguments(<)
+            listener: handleIdentifier(int, typeReference)
+            listener: handleNoTypeArguments(>)
+            listener: handleType(int, null)
+            listener: endTypeArguments(1, <, >)
+            parseArgumentsOpt(>)
+              parseArguments(>)
+                parseArgumentsRest(()
+                  listener: beginArguments(()
+                  parseExpression(()
+                    parsePrecedenceExpression((, 1, true)
+                      parseUnaryExpression((, true)
+                        parsePrimary((, expression)
+                          parseLiteralString(()
+                            parseSingleLiteralString(()
+                              listener: beginLiteralString("hello")
+                              listener: endLiteralString(0, ))
+                  listener: endArguments(1, (, ))
+            listener: endMetadata(@, null, X)
+          listener: endMetadataStar(1)
+        ensureIdentifier(), typeVariableDeclaration)
+          listener: handleIdentifier(X, typeVariableDeclaration)
+        listener: beginTypeVariable(X)
+        listener: handleTypeVariablesDefined(X, 1)
+        listener: handleNoType(X)
+        listener: endTypeVariable(>, 0, null, null)
+        listener: endTypeVariables(<, >)
+        ensureIdentifier(=, typeReference)
+          listener: handleIdentifier(int, typeReference)
+        listener: handleNoTypeArguments(Function)
+        listener: handleType(int, null)
+        parseFormalParametersRequiredOpt(>, MemberKind.GeneralizedFunctionType)
+          parseFormalParametersRest((, MemberKind.GeneralizedFunctionType)
+            listener: beginFormalParameters((, MemberKind.GeneralizedFunctionType)
+            parseFormalParameter((, FormalParameterKind.mandatory, MemberKind.GeneralizedFunctionType)
+              parseMetadataStar(()
+                listener: beginMetadataStar(@)
+                parseMetadata(()
+                  listener: beginMetadata(@)
+                  ensureIdentifier(@, metadataReference)
+                    listener: handleIdentifier(foo, metadataReference)
+                  parseQualifiedRestOpt(foo, metadataContinuation)
+                    parseQualifiedRest(foo, metadataContinuation)
+                      ensureIdentifier(., metadataContinuation)
+                        listener: handleIdentifier(bar, metadataContinuation)
+                      listener: handleQualified(.)
+                  listener: beginTypeArguments(<)
+                  listener: handleIdentifier(int, typeReference)
+                  listener: handleNoTypeArguments(>)
+                  listener: handleType(int, null)
+                  listener: endTypeArguments(1, <, >)
+                  parseArgumentsOpt(>)
+                    parseArguments(>)
+                      parseArgumentsRest(()
+                        listener: beginArguments(()
+                        parseExpression(()
+                          parsePrecedenceExpression((, 1, true)
+                            parseUnaryExpression((, true)
+                              parsePrimary((, expression)
+                                parseLiteralString(()
+                                  parseSingleLiteralString(()
+                                    listener: beginLiteralString("hello")
+                                    listener: endLiteralString(0, ))
+                        listener: endArguments(1, (, ))
+                  listener: endMetadata(@, null, int)
+                listener: endMetadataStar(1)
+              listener: beginFormalParameter(int, MemberKind.GeneralizedFunctionType, null, null, null)
+              listener: handleIdentifier(int, typeReference)
+              listener: handleNoTypeArguments())
+              listener: handleType(int, null)
+              listener: handleNoName())
+              listener: handleFormalParameterWithoutValue())
+              listener: endFormalParameter(null, null, ), null, null, FormalParameterKind.mandatory, MemberKind.GeneralizedFunctionType)
+            listener: endFormalParameters(1, (, ), MemberKind.GeneralizedFunctionType)
+        listener: endFunctionType(Function, null)
+        ensureSemicolon())
+        listener: endFunctionTypeAlias(typedef, =, ;)
+  listener: endTopLevelDeclaration(typedef)
+  parseTopLevelDeclarationImpl(;, Instance of 'DirectiveContext')
+    parseMetadataStar(;)
+      listener: beginMetadataStar(typedef)
+      listener: endMetadataStar(0)
+    parseTopLevelKeywordDeclaration(;, typedef, Instance of 'DirectiveContext')
+      parseTopLevelKeywordModifiers(;, typedef)
+      parseTypedef(typedef)
+        listener: beginUncategorizedTopLevelDeclaration(typedef)
+        listener: beginFunctionTypeAlias(typedef)
+        ensureIdentifierPotentiallyRecovered(typedef, typedefDeclaration, true)
+          listener: handleIdentifier(F, typedefDeclaration)
+        listener: beginTypeVariables(<)
+        parseMetadataStar(<)
+          listener: beginMetadataStar(@)
+          parseMetadata(<)
+            listener: beginMetadata(@)
+            ensureIdentifier(@, metadataReference)
+              listener: handleIdentifier(foo, metadataReference)
+            parseQualifiedRestOpt(foo, metadataContinuation)
+              parseQualifiedRest(foo, metadataContinuation)
+                ensureIdentifier(., metadataContinuation)
+                  listener: handleIdentifier(bar, metadataContinuation)
+                listener: handleQualified(.)
+            listener: beginTypeArguments(<)
+            listener: handleIdentifier(int, typeReference)
+            listener: handleNoTypeArguments(>)
+            listener: handleType(int, null)
+            listener: endTypeArguments(1, <, >)
+            ensureIdentifier(., metadataContinuationAfterTypeArguments)
+              inPlainSync()
+              listener: handleIdentifier(abstract, metadataContinuationAfterTypeArguments)
+            parseArgumentsOpt(abstract)
+              parseArguments(abstract)
+                parseArgumentsRest(()
+                  listener: beginArguments(()
+                  parseExpression(()
+                    parsePrecedenceExpression((, 1, true)
+                      parseUnaryExpression((, true)
+                        parsePrimary((, expression)
+                          parseLiteralString(()
+                            parseSingleLiteralString(()
+                              listener: beginLiteralString("hello")
+                              listener: endLiteralString(0, ))
+                  listener: endArguments(1, (, ))
+            listener: endMetadata(@, ., T)
+          listener: endMetadataStar(1)
+        ensureIdentifier(), typeVariableDeclaration)
+          listener: handleIdentifier(T, typeVariableDeclaration)
+        listener: beginTypeVariable(T)
+        listener: handleTypeVariablesDefined(T, 1)
+        listener: handleNoType(T)
+        listener: endTypeVariable(>, 0, null, null)
+        listener: endTypeVariables(<, >)
+        listener: beginFunctionType(int)
+        listener: beginTypeVariables(<)
+        parseMetadataStar(<)
+          listener: beginMetadataStar(@)
+          parseMetadata(<)
+            listener: beginMetadata(@)
+            ensureIdentifier(@, metadataReference)
+              listener: handleIdentifier(foo, metadataReference)
+            parseQualifiedRestOpt(foo, metadataContinuation)
+              parseQualifiedRest(foo, metadataContinuation)
+                ensureIdentifier(., metadataContinuation)
+                  listener: handleIdentifier(bar, metadataContinuation)
+                listener: handleQualified(.)
+            listener: beginTypeArguments(<)
+            listener: handleIdentifier(int, typeReference)
+            listener: handleNoTypeArguments(>)
+            listener: handleType(int, null)
+            listener: endTypeArguments(1, <, >)
+            ensureIdentifier(., metadataContinuationAfterTypeArguments)
+              inPlainSync()
+              listener: handleIdentifier(abstract, metadataContinuationAfterTypeArguments)
+            parseArgumentsOpt(abstract)
+              parseArguments(abstract)
+                parseArgumentsRest(()
+                  listener: beginArguments(()
+                  parseExpression(()
+                    parsePrecedenceExpression((, 1, true)
+                      parseUnaryExpression((, true)
+                        parsePrimary((, expression)
+                          parseLiteralString(()
+                            parseSingleLiteralString(()
+                              listener: beginLiteralString("hello")
+                              listener: endLiteralString(0, ))
+                  listener: endArguments(1, (, ))
+            listener: endMetadata(@, ., X)
+          listener: endMetadataStar(1)
+        ensureIdentifier(), typeVariableDeclaration)
+          listener: handleIdentifier(X, typeVariableDeclaration)
+        listener: beginTypeVariable(X)
+        listener: handleTypeVariablesDefined(X, 1)
+        listener: handleNoType(X)
+        listener: endTypeVariable(>, 0, null, null)
+        listener: endTypeVariables(<, >)
+        ensureIdentifier(=, typeReference)
+          listener: handleIdentifier(int, typeReference)
+        listener: handleNoTypeArguments(Function)
+        listener: handleType(int, null)
+        parseFormalParametersRequiredOpt(>, MemberKind.GeneralizedFunctionType)
+          parseFormalParametersRest((, MemberKind.GeneralizedFunctionType)
+            listener: beginFormalParameters((, MemberKind.GeneralizedFunctionType)
+            parseFormalParameter((, FormalParameterKind.mandatory, MemberKind.GeneralizedFunctionType)
+              parseMetadataStar(()
+                listener: beginMetadataStar(@)
+                parseMetadata(()
+                  listener: beginMetadata(@)
+                  ensureIdentifier(@, metadataReference)
+                    listener: handleIdentifier(foo, metadataReference)
+                  parseQualifiedRestOpt(foo, metadataContinuation)
+                    parseQualifiedRest(foo, metadataContinuation)
+                      ensureIdentifier(., metadataContinuation)
+                        listener: handleIdentifier(bar, metadataContinuation)
+                      listener: handleQualified(.)
+                  listener: beginTypeArguments(<)
+                  listener: handleIdentifier(int, typeReference)
+                  listener: handleNoTypeArguments(>)
+                  listener: handleType(int, null)
+                  listener: endTypeArguments(1, <, >)
+                  ensureIdentifier(., metadataContinuationAfterTypeArguments)
+                    inPlainSync()
+                    listener: handleIdentifier(abstract, metadataContinuationAfterTypeArguments)
+                  parseArgumentsOpt(abstract)
+                    parseArguments(abstract)
+                      parseArgumentsRest(()
+                        listener: beginArguments(()
+                        parseExpression(()
+                          parsePrecedenceExpression((, 1, true)
+                            parseUnaryExpression((, true)
+                              parsePrimary((, expression)
+                                parseLiteralString(()
+                                  parseSingleLiteralString(()
+                                    listener: beginLiteralString("hello")
+                                    listener: endLiteralString(0, ))
+                        listener: endArguments(1, (, ))
+                  listener: endMetadata(@, ., int)
+                listener: endMetadataStar(1)
+              listener: beginFormalParameter(int, MemberKind.GeneralizedFunctionType, null, null, null)
+              listener: handleIdentifier(int, typeReference)
+              listener: handleNoTypeArguments())
+              listener: handleType(int, null)
+              listener: handleNoName())
+              listener: handleFormalParameterWithoutValue())
+              listener: endFormalParameter(null, null, ), null, null, FormalParameterKind.mandatory, MemberKind.GeneralizedFunctionType)
+            listener: endFormalParameters(1, (, ), MemberKind.GeneralizedFunctionType)
+        listener: endFunctionType(Function, null)
+        ensureSemicolon())
+        listener: endFunctionTypeAlias(typedef, =, ;)
+  listener: endTopLevelDeclaration(@)
+  parseTopLevelDeclarationImpl(;, Instance of 'DirectiveContext')
+    parseMetadataStar(;)
+      listener: beginMetadataStar(@)
+      parseMetadata(;)
+        listener: beginMetadata(@)
+        ensureIdentifier(@, metadataReference)
+          inPlainSync()
+          listener: handleIdentifier(abstract, metadataReference)
+        parseQualifiedRestOpt(abstract, metadataContinuation)
+          parseQualifiedRest(abstract, metadataContinuation)
+            ensureIdentifier(., metadataContinuation)
+              inPlainSync()
+              listener: handleIdentifier(abstract, metadataContinuation)
+            listener: handleQualified(.)
+        listener: handleNoTypeArguments(@)
+        parseArgumentsOpt(abstract)
+          listener: handleNoArguments(@)
+        listener: endMetadata(@, null, @)
+      parseMetadata(abstract)
+        listener: beginMetadata(@)
+        ensureIdentifier(@, metadataReference)
+          inPlainSync()
+          listener: handleIdentifier(abstract, metadataReference)
+        parseQualifiedRestOpt(abstract, metadataContinuation)
+          parseQualifiedRest(abstract, metadataContinuation)
+            ensureIdentifier(., metadataContinuation)
+              listener: handleIdentifier(bar, metadataContinuation)
+            listener: handleQualified(.)
+        listener: handleNoTypeArguments(.)
+        ensureIdentifier(., metadataContinuationAfterTypeArguments)
+          inPlainSync()
+          listener: handleIdentifier(abstract, metadataContinuationAfterTypeArguments)
+        parseArgumentsOpt(abstract)
+          listener: handleNoArguments(@)
+        listener: endMetadata(@, ., @)
+      parseMetadata(abstract)
+        listener: beginMetadata(@)
+        ensureIdentifier(@, metadataReference)
+          inPlainSync()
+          listener: handleIdentifier(abstract, metadataReference)
+        parseQualifiedRestOpt(abstract, metadataContinuation)
+        listener: handleNoTypeArguments(()
+        parseArgumentsOpt(abstract)
+          parseArguments(abstract)
+            parseArgumentsRest(()
+              listener: beginArguments(()
+              parseExpression(()
+                parsePrecedenceExpression((, 1, true)
+                  parseUnaryExpression((, true)
+                    parsePrimary((, expression)
+                      parseLiteralString(()
+                        parseSingleLiteralString(()
+                          listener: beginLiteralString("hello")
+                          listener: endLiteralString(0, ))
+              listener: endArguments(1, (, ))
+        listener: endMetadata(@, null, @)
+      parseMetadata())
+        listener: beginMetadata(@)
+        ensureIdentifier(@, metadataReference)
+          inPlainSync()
+          listener: handleIdentifier(abstract, metadataReference)
+        parseQualifiedRestOpt(abstract, metadataContinuation)
+          parseQualifiedRest(abstract, metadataContinuation)
+            ensureIdentifier(., metadataContinuation)
+              inPlainSync()
+              listener: handleIdentifier(abstract, metadataContinuation)
+            listener: handleQualified(.)
+        listener: handleNoTypeArguments(()
+        parseArgumentsOpt(abstract)
+          parseArguments(abstract)
+            parseArgumentsRest(()
+              listener: beginArguments(()
+              parseExpression(()
+                parsePrecedenceExpression((, 1, true)
+                  parseUnaryExpression((, true)
+                    parsePrimary((, expression)
+                      parseLiteralString(()
+                        parseSingleLiteralString(()
+                          listener: beginLiteralString("hello")
+                          listener: endLiteralString(0, ))
+              listener: endArguments(1, (, ))
+        listener: endMetadata(@, null, @)
+      parseMetadata())
+        listener: beginMetadata(@)
+        ensureIdentifier(@, metadataReference)
+          inPlainSync()
+          listener: handleIdentifier(abstract, metadataReference)
+        parseQualifiedRestOpt(abstract, metadataContinuation)
+          parseQualifiedRest(abstract, metadataContinuation)
+            ensureIdentifier(., metadataContinuation)
+              listener: handleIdentifier(bar, metadataContinuation)
+            listener: handleQualified(.)
+        listener: handleNoTypeArguments(.)
+        ensureIdentifier(., metadataContinuationAfterTypeArguments)
+          inPlainSync()
+          listener: handleIdentifier(abstract, metadataContinuationAfterTypeArguments)
+        parseArgumentsOpt(abstract)
+          parseArguments(abstract)
+            parseArgumentsRest(()
+              listener: beginArguments(()
+              parseExpression(()
+                parsePrecedenceExpression((, 1, true)
+                  parseUnaryExpression((, true)
+                    parsePrimary((, expression)
+                      parseLiteralString(()
+                        parseSingleLiteralString(()
+                          listener: beginLiteralString("hello")
+                          listener: endLiteralString(0, ))
+              listener: endArguments(1, (, ))
+        listener: endMetadata(@, ., @)
+      parseMetadata())
+        listener: beginMetadata(@)
+        ensureIdentifier(@, metadataReference)
+          inPlainSync()
+          listener: handleIdentifier(abstract, metadataReference)
+        parseQualifiedRestOpt(abstract, metadataContinuation)
+        listener: beginTypeArguments(<)
+        listener: handleIdentifier(int, typeReference)
+        listener: handleNoTypeArguments(>)
+        listener: handleType(int, null)
+        listener: endTypeArguments(1, <, >)
+        parseArgumentsOpt(>)
+          parseArguments(>)
+            parseArgumentsRest(()
+              listener: beginArguments(()
+              parseExpression(()
+                parsePrecedenceExpression((, 1, true)
+                  parseUnaryExpression((, true)
+                    parsePrimary((, expression)
+                      parseLiteralString(()
+                        parseSingleLiteralString(()
+                          listener: beginLiteralString("hello")
+                          listener: endLiteralString(0, ))
+              listener: endArguments(1, (, ))
+        listener: endMetadata(@, null, @)
+      parseMetadata())
+        listener: beginMetadata(@)
+        ensureIdentifier(@, metadataReference)
+          inPlainSync()
+          listener: handleIdentifier(abstract, metadataReference)
+        parseQualifiedRestOpt(abstract, metadataContinuation)
+        listener: beginTypeArguments(<)
+        listener: handleIdentifier(int, typeReference)
+        listener: handleNoTypeArguments(>)
+        listener: handleType(int, null)
+        listener: endTypeArguments(1, <, >)
+        ensureIdentifier(., metadataContinuationAfterTypeArguments)
+          inPlainSync()
+          listener: handleIdentifier(abstract, metadataContinuationAfterTypeArguments)
+        parseArgumentsOpt(abstract)
+          parseArguments(abstract)
+            parseArgumentsRest(()
+              listener: beginArguments(()
+              parseExpression(()
+                parsePrecedenceExpression((, 1, true)
+                  parseUnaryExpression((, true)
+                    parsePrimary((, expression)
+                      parseLiteralString(()
+                        parseSingleLiteralString(()
+                          listener: beginLiteralString("hello")
+                          listener: endLiteralString(0, ))
+              listener: endArguments(1, (, ))
+        listener: endMetadata(@, ., @)
+      parseMetadata())
+        listener: beginMetadata(@)
+        ensureIdentifier(@, metadataReference)
+          inPlainSync()
+          listener: handleIdentifier(abstract, metadataReference)
+        parseQualifiedRestOpt(abstract, metadataContinuation)
+          parseQualifiedRest(abstract, metadataContinuation)
+            ensureIdentifier(., metadataContinuation)
+              listener: handleIdentifier(bar, metadataContinuation)
+            listener: handleQualified(.)
+        listener: beginTypeArguments(<)
+        listener: handleIdentifier(int, typeReference)
+        listener: handleNoTypeArguments(>)
+        listener: handleType(int, null)
+        listener: endTypeArguments(1, <, >)
+        parseArgumentsOpt(>)
+          parseArguments(>)
+            parseArgumentsRest(()
+              listener: beginArguments(()
+              parseExpression(()
+                parsePrecedenceExpression((, 1, true)
+                  parseUnaryExpression((, true)
+                    parsePrimary((, expression)
+                      parseLiteralString(()
+                        parseSingleLiteralString(()
+                          listener: beginLiteralString("hello")
+                          listener: endLiteralString(0, ))
+              listener: endArguments(1, (, ))
+        listener: endMetadata(@, null, @)
+      parseMetadata())
+        listener: beginMetadata(@)
+        ensureIdentifier(@, metadataReference)
+          inPlainSync()
+          listener: handleIdentifier(abstract, metadataReference)
+        parseQualifiedRestOpt(abstract, metadataContinuation)
+          parseQualifiedRest(abstract, metadataContinuation)
+            ensureIdentifier(., metadataContinuation)
+              listener: handleIdentifier(bar, metadataContinuation)
+            listener: handleQualified(.)
+        listener: beginTypeArguments(<)
+        listener: handleIdentifier(int, typeReference)
+        listener: handleNoTypeArguments(>)
+        listener: handleType(int, null)
+        listener: endTypeArguments(1, <, >)
+        ensureIdentifier(., metadataContinuationAfterTypeArguments)
+          inPlainSync()
+          listener: handleIdentifier(abstract, metadataContinuationAfterTypeArguments)
+        parseArgumentsOpt(abstract)
+          parseArguments(abstract)
+            parseArgumentsRest(()
+              listener: beginArguments(()
+              parseExpression(()
+                parsePrecedenceExpression((, 1, true)
+                  parseUnaryExpression((, true)
+                    parsePrimary((, expression)
+                      parseLiteralString(()
+                        parseSingleLiteralString(()
+                          listener: beginLiteralString("hello")
+                          listener: endLiteralString(0, ))
+              listener: endArguments(1, (, ))
+        listener: endMetadata(@, ., class)
+      listener: endMetadataStar(9)
+    parseTopLevelKeywordDeclaration(), class, Instance of 'DirectiveContext')
+      parseClassDeclarationModifiers(), class)
+      parseClassOrNamedMixinApplication(null, class)
+        listener: beginClassOrNamedMixinApplicationPrelude(class)
+        ensureIdentifier(class, classOrMixinDeclaration)
+          listener: handleIdentifier(Y, classOrMixinDeclaration)
+        listener: handleNoTypeVariables({)
+        listener: beginClassDeclaration(class, null, Y)
+        parseClass(Y, class, class, Y)
+          parseClassHeaderOpt(Y, class, class)
+            parseClassExtendsOpt(Y)
+              listener: handleNoType(Y)
+              listener: handleClassExtends(null, 1)
+            parseWithClauseOpt(Y)
+              listener: handleClassNoWithClause()
+            parseClassOrMixinImplementsOpt(Y)
+              listener: handleClassOrMixinImplements(null, 0)
+            listener: handleClassHeader(class, class, null)
+          parseClassOrMixinOrExtensionBody(Y, DeclarationKind.Class, Y)
+            listener: beginClassOrMixinBody(DeclarationKind.Class, {)
+            notEofOrValue(}, })
+            listener: endClassOrMixinBody(DeclarationKind.Class, 0, {, })
+          listener: endClassDeclaration(class, })
+  listener: endTopLevelDeclaration()
+  reportAllErrorTokens(@)
+  listener: endCompilationUnit(12, )
diff --git a/pkg/front_end/parser_testcases/general/metadata.dart.parser.expect b/pkg/front_end/parser_testcases/general/metadata.dart.parser.expect
new file mode 100644
index 0000000..fb0a8af
--- /dev/null
+++ b/pkg/front_end/parser_testcases/general/metadata.dart.parser.expect
@@ -0,0 +1,79 @@
+@abstract
+@foo.abstract
+@foo.bar.abstract
+@foo("hello")
+@foo.abstract("hello")
+@foo.bar.abstract("hello")
+@foo<int>("hello")
+@foo<int>.abstract("hello")
+@foo.bar<int>("hello")
+@foo.bar<int>.abstract("hello")
+class X {}
+
+
+typedef F<@abstract T> = int Function<@abstract X>(@abstract int);
+typedef F<@foo.abstract T> = int Function<@foo.abstract X>(@foo.abstract int);
+typedef F<@foo.bar.abstract T> = int Function<@foo.bar.abstract X>(@foo.bar.abstract int);
+typedef F<@foo("hello") T> = int Function<@foo("hello") X>(@foo("hello") int);
+typedef F<@foo.abstract("hello") T> = int Function<@foo.abstract("hello") X>(@foo.abstract("hello") int);
+typedef F<@foo.bar.abstract("hello") T> = int Function<@foo.bar.abstract("hello") X>(@foo.bar.abstract("hello") int);
+typedef F<@foo<int>("hello") T> = int Function<@foo<int>("hello") X>(@foo<int>("hello") int);
+typedef F<@foo<int>.abstract("hello") T> = int Function<@foo<int>.abstract("hello") X>(@foo<int>.abstract("hello") int);
+typedef F<@foo.bar<int>("hello") T> = int Function<@foo.bar<int>("hello") X>(@foo.bar<int>("hello") int);
+typedef F<@foo.bar<int>.abstract("hello") T> = int Function<@foo.bar<int>.abstract("hello") X>(@foo.bar<int>.abstract("hello") int);
+
+
+
+
+
+
+@abstract.abstract
+@abstract.bar.abstract
+@abstract("hello")
+@abstract.abstract("hello")
+@abstract.bar.abstract("hello")
+@abstract<int>("hello")
+@abstract<int>.abstract("hello")
+@abstract.bar<int>("hello")
+@abstract.bar<int>.abstract("hello")
+class Y {}
+
+@[SimpleToken]abstract[KeywordToken]
+@[SimpleToken]foo[StringToken].[SimpleToken]abstract[KeywordToken]
+@[SimpleToken]foo[StringToken].[SimpleToken]bar[StringToken].[SimpleToken]abstract[KeywordToken]
+@[SimpleToken]foo[StringToken]([BeginToken]"hello"[StringToken])[SimpleToken]
+@[SimpleToken]foo[StringToken].[SimpleToken]abstract[KeywordToken]([BeginToken]"hello"[StringToken])[SimpleToken]
+@[SimpleToken]foo[StringToken].[SimpleToken]bar[StringToken].[SimpleToken]abstract[KeywordToken]([BeginToken]"hello"[StringToken])[SimpleToken]
+@[SimpleToken]foo[StringToken]<[BeginToken]int[StringToken]>[SimpleToken]([BeginToken]"hello"[StringToken])[SimpleToken]
+@[SimpleToken]foo[StringToken]<[BeginToken]int[StringToken]>[SimpleToken].[SimpleToken]abstract[KeywordToken]([BeginToken]"hello"[StringToken])[SimpleToken]
+@[SimpleToken]foo[StringToken].[SimpleToken]bar[StringToken]<[BeginToken]int[StringToken]>[SimpleToken]([BeginToken]"hello"[StringToken])[SimpleToken]
+@[SimpleToken]foo[StringToken].[SimpleToken]bar[StringToken]<[BeginToken]int[StringToken]>[SimpleToken].[SimpleToken]abstract[KeywordToken]([BeginToken]"hello"[StringToken])[SimpleToken]
+class[KeywordToken] X[StringToken] {[BeginToken]}[SimpleToken]
+
+
+typedef[KeywordToken] F[StringToken]<[BeginToken]@[SimpleToken]abstract[KeywordToken] T[StringToken]>[SimpleToken] =[SimpleToken] int[StringToken] Function[KeywordToken]<[BeginToken]@[SimpleToken]abstract[KeywordToken] X[StringToken]>[SimpleToken]([BeginToken]@[SimpleToken]abstract[KeywordToken] int[StringToken])[SimpleToken];[SimpleToken]
+typedef[KeywordToken] F[StringToken]<[BeginToken]@[SimpleToken]foo[StringToken].[SimpleToken]abstract[KeywordToken] T[StringToken]>[SimpleToken] =[SimpleToken] int[StringToken] Function[KeywordToken]<[BeginToken]@[SimpleToken]foo[StringToken].[SimpleToken]abstract[KeywordToken] X[StringToken]>[SimpleToken]([BeginToken]@[SimpleToken]foo[StringToken].[SimpleToken]abstract[KeywordToken] int[StringToken])[SimpleToken];[SimpleToken]
+typedef[KeywordToken] F[StringToken]<[BeginToken]@[SimpleToken]foo[StringToken].[SimpleToken]bar[StringToken].[SimpleToken]abstract[KeywordToken] T[StringToken]>[SimpleToken] =[SimpleToken] int[StringToken] Function[KeywordToken]<[BeginToken]@[SimpleToken]foo[StringToken].[SimpleToken]bar[StringToken].[SimpleToken]abstract[KeywordToken] X[StringToken]>[SimpleToken]([BeginToken]@[SimpleToken]foo[StringToken].[SimpleToken]bar[StringToken].[SimpleToken]abstract[KeywordToken] int[StringToken])[SimpleToken];[SimpleToken]
+typedef[KeywordToken] F[StringToken]<[BeginToken]@[SimpleToken]foo[StringToken]([BeginToken]"hello"[StringToken])[SimpleToken] T[StringToken]>[SimpleToken] =[SimpleToken] int[StringToken] Function[KeywordToken]<[BeginToken]@[SimpleToken]foo[StringToken]([BeginToken]"hello"[StringToken])[SimpleToken] X[StringToken]>[SimpleToken]([BeginToken]@[SimpleToken]foo[StringToken]([BeginToken]"hello"[StringToken])[SimpleToken] int[StringToken])[SimpleToken];[SimpleToken]
+typedef[KeywordToken] F[StringToken]<[BeginToken]@[SimpleToken]foo[StringToken].[SimpleToken]abstract[KeywordToken]([BeginToken]"hello"[StringToken])[SimpleToken] T[StringToken]>[SimpleToken] =[SimpleToken] int[StringToken] Function[KeywordToken]<[BeginToken]@[SimpleToken]foo[StringToken].[SimpleToken]abstract[KeywordToken]([BeginToken]"hello"[StringToken])[SimpleToken] X[StringToken]>[SimpleToken]([BeginToken]@[SimpleToken]foo[StringToken].[SimpleToken]abstract[KeywordToken]([BeginToken]"hello"[StringToken])[SimpleToken] int[StringToken])[SimpleToken];[SimpleToken]
+typedef[KeywordToken] F[StringToken]<[BeginToken]@[SimpleToken]foo[StringToken].[SimpleToken]bar[StringToken].[SimpleToken]abstract[KeywordToken]([BeginToken]"hello"[StringToken])[SimpleToken] T[StringToken]>[SimpleToken] =[SimpleToken] int[StringToken] Function[KeywordToken]<[BeginToken]@[SimpleToken]foo[StringToken].[SimpleToken]bar[StringToken].[SimpleToken]abstract[KeywordToken]([BeginToken]"hello"[StringToken])[SimpleToken] X[StringToken]>[SimpleToken]([BeginToken]@[SimpleToken]foo[StringToken].[SimpleToken]bar[StringToken].[SimpleToken]abstract[KeywordToken]([BeginToken]"hello"[StringToken])[SimpleToken] int[StringToken])[SimpleToken];[SimpleToken]
+typedef[KeywordToken] F[StringToken]<[BeginToken]@[SimpleToken]foo[StringToken]<[BeginToken]int[StringToken]>[SimpleToken]([BeginToken]"hello"[StringToken])[SimpleToken] T[StringToken]>[SimpleToken] =[SimpleToken] int[StringToken] Function[KeywordToken]<[BeginToken]@[SimpleToken]foo[StringToken]<[BeginToken]int[StringToken]>[SimpleToken]([BeginToken]"hello"[StringToken])[SimpleToken] X[StringToken]>[SimpleToken]([BeginToken]@[SimpleToken]foo[StringToken]<[BeginToken]int[StringToken]>[SimpleToken]([BeginToken]"hello"[StringToken])[SimpleToken] int[StringToken])[SimpleToken];[SimpleToken]
+typedef[KeywordToken] F[StringToken]<[BeginToken]@[SimpleToken]foo[StringToken]<[BeginToken]int[StringToken]>[SimpleToken].[SimpleToken]abstract[KeywordToken]([BeginToken]"hello"[StringToken])[SimpleToken] T[StringToken]>[SimpleToken] =[SimpleToken] int[StringToken] Function[KeywordToken]<[BeginToken]@[SimpleToken]foo[StringToken]<[BeginToken]int[StringToken]>[SimpleToken].[SimpleToken]abstract[KeywordToken]([BeginToken]"hello"[StringToken])[SimpleToken] X[StringToken]>[SimpleToken]([BeginToken]@[SimpleToken]foo[StringToken]<[BeginToken]int[StringToken]>[SimpleToken].[SimpleToken]abstract[KeywordToken]([BeginToken]"hello"[StringToken])[SimpleToken] int[StringToken])[SimpleToken];[SimpleToken]
+typedef[KeywordToken] F[StringToken]<[BeginToken]@[SimpleToken]foo[StringToken].[SimpleToken]bar[StringToken]<[BeginToken]int[StringToken]>[SimpleToken]([BeginToken]"hello"[StringToken])[SimpleToken] T[StringToken]>[SimpleToken] =[SimpleToken] int[StringToken] Function[KeywordToken]<[BeginToken]@[SimpleToken]foo[StringToken].[SimpleToken]bar[StringToken]<[BeginToken]int[StringToken]>[SimpleToken]([BeginToken]"hello"[StringToken])[SimpleToken] X[StringToken]>[SimpleToken]([BeginToken]@[SimpleToken]foo[StringToken].[SimpleToken]bar[StringToken]<[BeginToken]int[StringToken]>[SimpleToken]([BeginToken]"hello"[StringToken])[SimpleToken] int[StringToken])[SimpleToken];[SimpleToken]
+typedef[KeywordToken] F[StringToken]<[BeginToken]@[SimpleToken]foo[StringToken].[SimpleToken]bar[StringToken]<[BeginToken]int[StringToken]>[SimpleToken].[SimpleToken]abstract[KeywordToken]([BeginToken]"hello"[StringToken])[SimpleToken] T[StringToken]>[SimpleToken] =[SimpleToken] int[StringToken] Function[KeywordToken]<[BeginToken]@[SimpleToken]foo[StringToken].[SimpleToken]bar[StringToken]<[BeginToken]int[StringToken]>[SimpleToken].[SimpleToken]abstract[KeywordToken]([BeginToken]"hello"[StringToken])[SimpleToken] X[StringToken]>[SimpleToken]([BeginToken]@[SimpleToken]foo[StringToken].[SimpleToken]bar[StringToken]<[BeginToken]int[StringToken]>[SimpleToken].[SimpleToken]abstract[KeywordToken]([BeginToken]"hello"[StringToken])[SimpleToken] int[StringToken])[SimpleToken];[SimpleToken]
+
+
+
+
+
+
+@[SimpleToken]abstract[KeywordToken].[SimpleToken]abstract[KeywordToken]
+@[SimpleToken]abstract[KeywordToken].[SimpleToken]bar[StringToken].[SimpleToken]abstract[KeywordToken]
+@[SimpleToken]abstract[KeywordToken]([BeginToken]"hello"[StringToken])[SimpleToken]
+@[SimpleToken]abstract[KeywordToken].[SimpleToken]abstract[KeywordToken]([BeginToken]"hello"[StringToken])[SimpleToken]
+@[SimpleToken]abstract[KeywordToken].[SimpleToken]bar[StringToken].[SimpleToken]abstract[KeywordToken]([BeginToken]"hello"[StringToken])[SimpleToken]
+@[SimpleToken]abstract[KeywordToken]<[BeginToken]int[StringToken]>[SimpleToken]([BeginToken]"hello"[StringToken])[SimpleToken]
+@[SimpleToken]abstract[KeywordToken]<[BeginToken]int[StringToken]>[SimpleToken].[SimpleToken]abstract[KeywordToken]([BeginToken]"hello"[StringToken])[SimpleToken]
+@[SimpleToken]abstract[KeywordToken].[SimpleToken]bar[StringToken]<[BeginToken]int[StringToken]>[SimpleToken]([BeginToken]"hello"[StringToken])[SimpleToken]
+@[SimpleToken]abstract[KeywordToken].[SimpleToken]bar[StringToken]<[BeginToken]int[StringToken]>[SimpleToken].[SimpleToken]abstract[KeywordToken]([BeginToken]"hello"[StringToken])[SimpleToken]
+class[KeywordToken] Y[StringToken] {[BeginToken]}[SimpleToken][SimpleToken]
diff --git a/pkg/front_end/parser_testcases/general/metadata.dart.scanner.expect b/pkg/front_end/parser_testcases/general/metadata.dart.scanner.expect
new file mode 100644
index 0000000..fb0a8af
--- /dev/null
+++ b/pkg/front_end/parser_testcases/general/metadata.dart.scanner.expect
@@ -0,0 +1,79 @@
+@abstract
+@foo.abstract
+@foo.bar.abstract
+@foo("hello")
+@foo.abstract("hello")
+@foo.bar.abstract("hello")
+@foo<int>("hello")
+@foo<int>.abstract("hello")
+@foo.bar<int>("hello")
+@foo.bar<int>.abstract("hello")
+class X {}
+
+
+typedef F<@abstract T> = int Function<@abstract X>(@abstract int);
+typedef F<@foo.abstract T> = int Function<@foo.abstract X>(@foo.abstract int);
+typedef F<@foo.bar.abstract T> = int Function<@foo.bar.abstract X>(@foo.bar.abstract int);
+typedef F<@foo("hello") T> = int Function<@foo("hello") X>(@foo("hello") int);
+typedef F<@foo.abstract("hello") T> = int Function<@foo.abstract("hello") X>(@foo.abstract("hello") int);
+typedef F<@foo.bar.abstract("hello") T> = int Function<@foo.bar.abstract("hello") X>(@foo.bar.abstract("hello") int);
+typedef F<@foo<int>("hello") T> = int Function<@foo<int>("hello") X>(@foo<int>("hello") int);
+typedef F<@foo<int>.abstract("hello") T> = int Function<@foo<int>.abstract("hello") X>(@foo<int>.abstract("hello") int);
+typedef F<@foo.bar<int>("hello") T> = int Function<@foo.bar<int>("hello") X>(@foo.bar<int>("hello") int);
+typedef F<@foo.bar<int>.abstract("hello") T> = int Function<@foo.bar<int>.abstract("hello") X>(@foo.bar<int>.abstract("hello") int);
+
+
+
+
+
+
+@abstract.abstract
+@abstract.bar.abstract
+@abstract("hello")
+@abstract.abstract("hello")
+@abstract.bar.abstract("hello")
+@abstract<int>("hello")
+@abstract<int>.abstract("hello")
+@abstract.bar<int>("hello")
+@abstract.bar<int>.abstract("hello")
+class Y {}
+
+@[SimpleToken]abstract[KeywordToken]
+@[SimpleToken]foo[StringToken].[SimpleToken]abstract[KeywordToken]
+@[SimpleToken]foo[StringToken].[SimpleToken]bar[StringToken].[SimpleToken]abstract[KeywordToken]
+@[SimpleToken]foo[StringToken]([BeginToken]"hello"[StringToken])[SimpleToken]
+@[SimpleToken]foo[StringToken].[SimpleToken]abstract[KeywordToken]([BeginToken]"hello"[StringToken])[SimpleToken]
+@[SimpleToken]foo[StringToken].[SimpleToken]bar[StringToken].[SimpleToken]abstract[KeywordToken]([BeginToken]"hello"[StringToken])[SimpleToken]
+@[SimpleToken]foo[StringToken]<[BeginToken]int[StringToken]>[SimpleToken]([BeginToken]"hello"[StringToken])[SimpleToken]
+@[SimpleToken]foo[StringToken]<[BeginToken]int[StringToken]>[SimpleToken].[SimpleToken]abstract[KeywordToken]([BeginToken]"hello"[StringToken])[SimpleToken]
+@[SimpleToken]foo[StringToken].[SimpleToken]bar[StringToken]<[BeginToken]int[StringToken]>[SimpleToken]([BeginToken]"hello"[StringToken])[SimpleToken]
+@[SimpleToken]foo[StringToken].[SimpleToken]bar[StringToken]<[BeginToken]int[StringToken]>[SimpleToken].[SimpleToken]abstract[KeywordToken]([BeginToken]"hello"[StringToken])[SimpleToken]
+class[KeywordToken] X[StringToken] {[BeginToken]}[SimpleToken]
+
+
+typedef[KeywordToken] F[StringToken]<[BeginToken]@[SimpleToken]abstract[KeywordToken] T[StringToken]>[SimpleToken] =[SimpleToken] int[StringToken] Function[KeywordToken]<[BeginToken]@[SimpleToken]abstract[KeywordToken] X[StringToken]>[SimpleToken]([BeginToken]@[SimpleToken]abstract[KeywordToken] int[StringToken])[SimpleToken];[SimpleToken]
+typedef[KeywordToken] F[StringToken]<[BeginToken]@[SimpleToken]foo[StringToken].[SimpleToken]abstract[KeywordToken] T[StringToken]>[SimpleToken] =[SimpleToken] int[StringToken] Function[KeywordToken]<[BeginToken]@[SimpleToken]foo[StringToken].[SimpleToken]abstract[KeywordToken] X[StringToken]>[SimpleToken]([BeginToken]@[SimpleToken]foo[StringToken].[SimpleToken]abstract[KeywordToken] int[StringToken])[SimpleToken];[SimpleToken]
+typedef[KeywordToken] F[StringToken]<[BeginToken]@[SimpleToken]foo[StringToken].[SimpleToken]bar[StringToken].[SimpleToken]abstract[KeywordToken] T[StringToken]>[SimpleToken] =[SimpleToken] int[StringToken] Function[KeywordToken]<[BeginToken]@[SimpleToken]foo[StringToken].[SimpleToken]bar[StringToken].[SimpleToken]abstract[KeywordToken] X[StringToken]>[SimpleToken]([BeginToken]@[SimpleToken]foo[StringToken].[SimpleToken]bar[StringToken].[SimpleToken]abstract[KeywordToken] int[StringToken])[SimpleToken];[SimpleToken]
+typedef[KeywordToken] F[StringToken]<[BeginToken]@[SimpleToken]foo[StringToken]([BeginToken]"hello"[StringToken])[SimpleToken] T[StringToken]>[SimpleToken] =[SimpleToken] int[StringToken] Function[KeywordToken]<[BeginToken]@[SimpleToken]foo[StringToken]([BeginToken]"hello"[StringToken])[SimpleToken] X[StringToken]>[SimpleToken]([BeginToken]@[SimpleToken]foo[StringToken]([BeginToken]"hello"[StringToken])[SimpleToken] int[StringToken])[SimpleToken];[SimpleToken]
+typedef[KeywordToken] F[StringToken]<[BeginToken]@[SimpleToken]foo[StringToken].[SimpleToken]abstract[KeywordToken]([BeginToken]"hello"[StringToken])[SimpleToken] T[StringToken]>[SimpleToken] =[SimpleToken] int[StringToken] Function[KeywordToken]<[BeginToken]@[SimpleToken]foo[StringToken].[SimpleToken]abstract[KeywordToken]([BeginToken]"hello"[StringToken])[SimpleToken] X[StringToken]>[SimpleToken]([BeginToken]@[SimpleToken]foo[StringToken].[SimpleToken]abstract[KeywordToken]([BeginToken]"hello"[StringToken])[SimpleToken] int[StringToken])[SimpleToken];[SimpleToken]
+typedef[KeywordToken] F[StringToken]<[BeginToken]@[SimpleToken]foo[StringToken].[SimpleToken]bar[StringToken].[SimpleToken]abstract[KeywordToken]([BeginToken]"hello"[StringToken])[SimpleToken] T[StringToken]>[SimpleToken] =[SimpleToken] int[StringToken] Function[KeywordToken]<[BeginToken]@[SimpleToken]foo[StringToken].[SimpleToken]bar[StringToken].[SimpleToken]abstract[KeywordToken]([BeginToken]"hello"[StringToken])[SimpleToken] X[StringToken]>[SimpleToken]([BeginToken]@[SimpleToken]foo[StringToken].[SimpleToken]bar[StringToken].[SimpleToken]abstract[KeywordToken]([BeginToken]"hello"[StringToken])[SimpleToken] int[StringToken])[SimpleToken];[SimpleToken]
+typedef[KeywordToken] F[StringToken]<[BeginToken]@[SimpleToken]foo[StringToken]<[BeginToken]int[StringToken]>[SimpleToken]([BeginToken]"hello"[StringToken])[SimpleToken] T[StringToken]>[SimpleToken] =[SimpleToken] int[StringToken] Function[KeywordToken]<[BeginToken]@[SimpleToken]foo[StringToken]<[BeginToken]int[StringToken]>[SimpleToken]([BeginToken]"hello"[StringToken])[SimpleToken] X[StringToken]>[SimpleToken]([BeginToken]@[SimpleToken]foo[StringToken]<[BeginToken]int[StringToken]>[SimpleToken]([BeginToken]"hello"[StringToken])[SimpleToken] int[StringToken])[SimpleToken];[SimpleToken]
+typedef[KeywordToken] F[StringToken]<[BeginToken]@[SimpleToken]foo[StringToken]<[BeginToken]int[StringToken]>[SimpleToken].[SimpleToken]abstract[KeywordToken]([BeginToken]"hello"[StringToken])[SimpleToken] T[StringToken]>[SimpleToken] =[SimpleToken] int[StringToken] Function[KeywordToken]<[BeginToken]@[SimpleToken]foo[StringToken]<[BeginToken]int[StringToken]>[SimpleToken].[SimpleToken]abstract[KeywordToken]([BeginToken]"hello"[StringToken])[SimpleToken] X[StringToken]>[SimpleToken]([BeginToken]@[SimpleToken]foo[StringToken]<[BeginToken]int[StringToken]>[SimpleToken].[SimpleToken]abstract[KeywordToken]([BeginToken]"hello"[StringToken])[SimpleToken] int[StringToken])[SimpleToken];[SimpleToken]
+typedef[KeywordToken] F[StringToken]<[BeginToken]@[SimpleToken]foo[StringToken].[SimpleToken]bar[StringToken]<[BeginToken]int[StringToken]>[SimpleToken]([BeginToken]"hello"[StringToken])[SimpleToken] T[StringToken]>[SimpleToken] =[SimpleToken] int[StringToken] Function[KeywordToken]<[BeginToken]@[SimpleToken]foo[StringToken].[SimpleToken]bar[StringToken]<[BeginToken]int[StringToken]>[SimpleToken]([BeginToken]"hello"[StringToken])[SimpleToken] X[StringToken]>[SimpleToken]([BeginToken]@[SimpleToken]foo[StringToken].[SimpleToken]bar[StringToken]<[BeginToken]int[StringToken]>[SimpleToken]([BeginToken]"hello"[StringToken])[SimpleToken] int[StringToken])[SimpleToken];[SimpleToken]
+typedef[KeywordToken] F[StringToken]<[BeginToken]@[SimpleToken]foo[StringToken].[SimpleToken]bar[StringToken]<[BeginToken]int[StringToken]>[SimpleToken].[SimpleToken]abstract[KeywordToken]([BeginToken]"hello"[StringToken])[SimpleToken] T[StringToken]>[SimpleToken] =[SimpleToken] int[StringToken] Function[KeywordToken]<[BeginToken]@[SimpleToken]foo[StringToken].[SimpleToken]bar[StringToken]<[BeginToken]int[StringToken]>[SimpleToken].[SimpleToken]abstract[KeywordToken]([BeginToken]"hello"[StringToken])[SimpleToken] X[StringToken]>[SimpleToken]([BeginToken]@[SimpleToken]foo[StringToken].[SimpleToken]bar[StringToken]<[BeginToken]int[StringToken]>[SimpleToken].[SimpleToken]abstract[KeywordToken]([BeginToken]"hello"[StringToken])[SimpleToken] int[StringToken])[SimpleToken];[SimpleToken]
+
+
+
+
+
+
+@[SimpleToken]abstract[KeywordToken].[SimpleToken]abstract[KeywordToken]
+@[SimpleToken]abstract[KeywordToken].[SimpleToken]bar[StringToken].[SimpleToken]abstract[KeywordToken]
+@[SimpleToken]abstract[KeywordToken]([BeginToken]"hello"[StringToken])[SimpleToken]
+@[SimpleToken]abstract[KeywordToken].[SimpleToken]abstract[KeywordToken]([BeginToken]"hello"[StringToken])[SimpleToken]
+@[SimpleToken]abstract[KeywordToken].[SimpleToken]bar[StringToken].[SimpleToken]abstract[KeywordToken]([BeginToken]"hello"[StringToken])[SimpleToken]
+@[SimpleToken]abstract[KeywordToken]<[BeginToken]int[StringToken]>[SimpleToken]([BeginToken]"hello"[StringToken])[SimpleToken]
+@[SimpleToken]abstract[KeywordToken]<[BeginToken]int[StringToken]>[SimpleToken].[SimpleToken]abstract[KeywordToken]([BeginToken]"hello"[StringToken])[SimpleToken]
+@[SimpleToken]abstract[KeywordToken].[SimpleToken]bar[StringToken]<[BeginToken]int[StringToken]>[SimpleToken]([BeginToken]"hello"[StringToken])[SimpleToken]
+@[SimpleToken]abstract[KeywordToken].[SimpleToken]bar[StringToken]<[BeginToken]int[StringToken]>[SimpleToken].[SimpleToken]abstract[KeywordToken]([BeginToken]"hello"[StringToken])[SimpleToken]
+class[KeywordToken] Y[StringToken] {[BeginToken]}[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 517d068..342696f 100644
--- a/pkg/front_end/test/spell_checking_list_code.txt
+++ b/pkg/front_end/test/spell_checking_list_code.txt
@@ -312,6 +312,7 @@
 deserializes
 deserializing
 design
+designation
 despite
 destination
 destinations
@@ -693,6 +694,7 @@
 merely
 meta
 metadata's
+metadatum
 method10a
 method10b
 method1a
diff --git a/pkg/front_end/testcases/extensions/invalid_explicit_access.dart.weak.expect b/pkg/front_end/testcases/extensions/invalid_explicit_access.dart.weak.expect
index 8c0ab7a..3dfc9a6 100644
--- a/pkg/front_end/testcases/extensions/invalid_explicit_access.dart.weak.expect
+++ b/pkg/front_end/testcases/extensions/invalid_explicit_access.dart.weak.expect
@@ -34,14 +34,14 @@
 //   Extension(c1).foo();
 //                 ^^^
 //
-// pkg/front_end/testcases/extensions/invalid_explicit_access.dart:32:17: Error: Too few positional arguments: 2 required, 1 given.
+// pkg/front_end/testcases/extensions/invalid_explicit_access.dart:32:17: Error: Too few positional arguments: 1 required, 0 given.
 //   Extension(c1).method();
 //                 ^
 // pkg/front_end/testcases/extensions/invalid_explicit_access.dart:8:3: Context: Found this candidate, but the arguments don't match.
 //   method(a) {}
 //   ^^^^^^^^^^^^^...
 //
-// pkg/front_end/testcases/extensions/invalid_explicit_access.dart:36:17: Error: Too many positional arguments: 2 allowed, but 3 found.
+// pkg/front_end/testcases/extensions/invalid_explicit_access.dart:36:17: Error: Too many positional arguments: 1 allowed, but 2 found.
 // Try removing the extra positional arguments.
 //   Extension(c1).method(1, 2);
 //                 ^
@@ -49,7 +49,7 @@
 //   method(a) {}
 //   ^^^^^^^^^^^^^...
 //
-// pkg/front_end/testcases/extensions/invalid_explicit_access.dart:37:17: Error: Too few positional arguments: 2 required, 1 given.
+// pkg/front_end/testcases/extensions/invalid_explicit_access.dart:37:17: Error: Too few positional arguments: 1 required, 0 given.
 //   Extension(c1).method(a: 1);
 //                 ^
 // pkg/front_end/testcases/extensions/invalid_explicit_access.dart:8:3: Context: Found this candidate, but the arguments don't match.
@@ -199,14 +199,14 @@
   invalid-expression "pkg/front_end/testcases/extensions/invalid_explicit_access.dart:31:17: Error: Method not found: 'foo'.
   Extension(c1).foo();
                 ^^^";
-  invalid-expression "pkg/front_end/testcases/extensions/invalid_explicit_access.dart:32:17: Error: Too few positional arguments: 2 required, 1 given.
+  invalid-expression "pkg/front_end/testcases/extensions/invalid_explicit_access.dart:32:17: Error: Too few positional arguments: 1 required, 0 given.
   Extension(c1).method();
                 ^";
-  invalid-expression "pkg/front_end/testcases/extensions/invalid_explicit_access.dart:36:17: Error: Too many positional arguments: 2 allowed, but 3 found.
+  invalid-expression "pkg/front_end/testcases/extensions/invalid_explicit_access.dart:36:17: Error: Too many positional arguments: 1 allowed, but 2 found.
 Try removing the extra positional arguments.
   Extension(c1).method(1, 2);
                 ^";
-  invalid-expression "pkg/front_end/testcases/extensions/invalid_explicit_access.dart:37:17: Error: Too few positional arguments: 2 required, 1 given.
+  invalid-expression "pkg/front_end/testcases/extensions/invalid_explicit_access.dart:37:17: Error: Too few positional arguments: 1 required, 0 given.
   Extension(c1).method(a: 1);
                 ^";
   invalid-expression "pkg/front_end/testcases/extensions/invalid_explicit_access.dart:38:27: Error: No named parameter with the name 'a'.
diff --git a/pkg/front_end/testcases/extensions/invalid_explicit_access.dart.weak.transformed.expect b/pkg/front_end/testcases/extensions/invalid_explicit_access.dart.weak.transformed.expect
index 8c0ab7a..3dfc9a6 100644
--- a/pkg/front_end/testcases/extensions/invalid_explicit_access.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/extensions/invalid_explicit_access.dart.weak.transformed.expect
@@ -34,14 +34,14 @@
 //   Extension(c1).foo();
 //                 ^^^
 //
-// pkg/front_end/testcases/extensions/invalid_explicit_access.dart:32:17: Error: Too few positional arguments: 2 required, 1 given.
+// pkg/front_end/testcases/extensions/invalid_explicit_access.dart:32:17: Error: Too few positional arguments: 1 required, 0 given.
 //   Extension(c1).method();
 //                 ^
 // pkg/front_end/testcases/extensions/invalid_explicit_access.dart:8:3: Context: Found this candidate, but the arguments don't match.
 //   method(a) {}
 //   ^^^^^^^^^^^^^...
 //
-// pkg/front_end/testcases/extensions/invalid_explicit_access.dart:36:17: Error: Too many positional arguments: 2 allowed, but 3 found.
+// pkg/front_end/testcases/extensions/invalid_explicit_access.dart:36:17: Error: Too many positional arguments: 1 allowed, but 2 found.
 // Try removing the extra positional arguments.
 //   Extension(c1).method(1, 2);
 //                 ^
@@ -49,7 +49,7 @@
 //   method(a) {}
 //   ^^^^^^^^^^^^^...
 //
-// pkg/front_end/testcases/extensions/invalid_explicit_access.dart:37:17: Error: Too few positional arguments: 2 required, 1 given.
+// pkg/front_end/testcases/extensions/invalid_explicit_access.dart:37:17: Error: Too few positional arguments: 1 required, 0 given.
 //   Extension(c1).method(a: 1);
 //                 ^
 // pkg/front_end/testcases/extensions/invalid_explicit_access.dart:8:3: Context: Found this candidate, but the arguments don't match.
@@ -199,14 +199,14 @@
   invalid-expression "pkg/front_end/testcases/extensions/invalid_explicit_access.dart:31:17: Error: Method not found: 'foo'.
   Extension(c1).foo();
                 ^^^";
-  invalid-expression "pkg/front_end/testcases/extensions/invalid_explicit_access.dart:32:17: Error: Too few positional arguments: 2 required, 1 given.
+  invalid-expression "pkg/front_end/testcases/extensions/invalid_explicit_access.dart:32:17: Error: Too few positional arguments: 1 required, 0 given.
   Extension(c1).method();
                 ^";
-  invalid-expression "pkg/front_end/testcases/extensions/invalid_explicit_access.dart:36:17: Error: Too many positional arguments: 2 allowed, but 3 found.
+  invalid-expression "pkg/front_end/testcases/extensions/invalid_explicit_access.dart:36:17: Error: Too many positional arguments: 1 allowed, but 2 found.
 Try removing the extra positional arguments.
   Extension(c1).method(1, 2);
                 ^";
-  invalid-expression "pkg/front_end/testcases/extensions/invalid_explicit_access.dart:37:17: Error: Too few positional arguments: 2 required, 1 given.
+  invalid-expression "pkg/front_end/testcases/extensions/invalid_explicit_access.dart:37:17: Error: Too few positional arguments: 1 required, 0 given.
   Extension(c1).method(a: 1);
                 ^";
   invalid-expression "pkg/front_end/testcases/extensions/invalid_explicit_access.dart:38:27: Error: No named parameter with the name 'a'.
diff --git a/pkg/front_end/testcases/general/issue45204.dart b/pkg/front_end/testcases/general/issue45204.dart
new file mode 100644
index 0000000..ee754db
--- /dev/null
+++ b/pkg/front_end/testcases/general/issue45204.dart
@@ -0,0 +1,44 @@
+// Copyright (c) 2021, the Dart project authors.  Please see the AUTHORS file
+// for details. All rights reserved. Use of this source code is governed by a
+// BSD-style license that can be found in the LICENSE file.
+
+extension S on int {
+  void test(int x) {}
+}
+
+extension S2<X> on int {
+  void test2(int x) {}
+  void test3<Y>(Y y) {}
+}
+
+foo() {
+  3.test();
+  4.test(5, 6);
+  5.test<int>(6);
+
+  3.test2();
+  4.test2(5, 6);
+  5.test2<int>(6);
+
+  3.test3();
+  4.test3(5, 6);
+  5.test3<int>(6);
+  6.test3<int, int>(7);
+  7.test3<int, int, int>(8);
+
+  S(3).test();
+  S(4).test(5, 6);
+  S(5).test<int>(6);
+
+  S2(3).test2();
+  S2(4).test2(5, 6);
+  S2(5).test2<int>(6);
+
+  S2(3).test3();
+  S2(4).test3(5, 6);
+  S2(5).test3<int>(6);
+  S2(6).test3<int, int>(7);
+  S2(7).test3<int, int, int>(8);
+}
+
+main() {}
diff --git a/pkg/front_end/testcases/general/issue45204.dart.textual_outline.expect b/pkg/front_end/testcases/general/issue45204.dart.textual_outline.expect
new file mode 100644
index 0000000..1eac4b0
--- /dev/null
+++ b/pkg/front_end/testcases/general/issue45204.dart.textual_outline.expect
@@ -0,0 +1,11 @@
+extension S on int {
+  void test(int x) {}
+}
+
+extension S2<X> on int {
+  void test2(int x) {}
+  void test3<Y>(Y y) {}
+}
+
+foo() {}
+main() {}
diff --git a/pkg/front_end/testcases/general/issue45204.dart.textual_outline_modelled.expect b/pkg/front_end/testcases/general/issue45204.dart.textual_outline_modelled.expect
new file mode 100644
index 0000000..1eac4b0
--- /dev/null
+++ b/pkg/front_end/testcases/general/issue45204.dart.textual_outline_modelled.expect
@@ -0,0 +1,11 @@
+extension S on int {
+  void test(int x) {}
+}
+
+extension S2<X> on int {
+  void test2(int x) {}
+  void test3<Y>(Y y) {}
+}
+
+foo() {}
+main() {}
diff --git a/pkg/front_end/testcases/general/issue45204.dart.weak.expect b/pkg/front_end/testcases/general/issue45204.dart.weak.expect
new file mode 100644
index 0000000..6488985
--- /dev/null
+++ b/pkg/front_end/testcases/general/issue45204.dart.weak.expect
@@ -0,0 +1,213 @@
+library /*isNonNullableByDefault*/;
+//
+// Problems in library:
+//
+// pkg/front_end/testcases/general/issue45204.dart:29:8: Error: Too few positional arguments: 1 required, 0 given.
+//   S(3).test();
+//        ^
+// pkg/front_end/testcases/general/issue45204.dart:6:8: Context: Found this candidate, but the arguments don't match.
+//   void test(int x) {}
+//        ^^^^^^
+//
+// pkg/front_end/testcases/general/issue45204.dart:30:8: Error: Too many positional arguments: 1 allowed, but 2 found.
+// Try removing the extra positional arguments.
+//   S(4).test(5, 6);
+//        ^
+// pkg/front_end/testcases/general/issue45204.dart:6:8: Context: Found this candidate, but the arguments don't match.
+//   void test(int x) {}
+//        ^^^^^^
+//
+// pkg/front_end/testcases/general/issue45204.dart:31:8: Error: Expected 0 type arguments.
+//   S(5).test<int>(6);
+//        ^
+// pkg/front_end/testcases/general/issue45204.dart:6:8: Context: Found this candidate, but the arguments don't match.
+//   void test(int x) {}
+//        ^^^^^^
+//
+// pkg/front_end/testcases/general/issue45204.dart:33:9: Error: Too few positional arguments: 1 required, 0 given.
+//   S2(3).test2();
+//         ^
+// pkg/front_end/testcases/general/issue45204.dart:10:8: Context: Found this candidate, but the arguments don't match.
+//   void test2(int x) {}
+//        ^^^^^^^^
+//
+// pkg/front_end/testcases/general/issue45204.dart:34:9: Error: Too many positional arguments: 1 allowed, but 2 found.
+// Try removing the extra positional arguments.
+//   S2(4).test2(5, 6);
+//         ^
+// pkg/front_end/testcases/general/issue45204.dart:10:8: Context: Found this candidate, but the arguments don't match.
+//   void test2(int x) {}
+//        ^^^^^^^^
+//
+// pkg/front_end/testcases/general/issue45204.dart:35:9: Error: Expected 1 type arguments.
+//   S2(5).test2<int>(6);
+//         ^
+// pkg/front_end/testcases/general/issue45204.dart:10:8: Context: Found this candidate, but the arguments don't match.
+//   void test2(int x) {}
+//        ^^^^^^^^
+//
+// pkg/front_end/testcases/general/issue45204.dart:37:9: Error: Too few positional arguments: 1 required, 0 given.
+//   S2(3).test3();
+//         ^
+// pkg/front_end/testcases/general/issue45204.dart:11:8: Context: Found this candidate, but the arguments don't match.
+//   void test3<Y>(Y y) {}
+//        ^^^^^^^^
+//
+// pkg/front_end/testcases/general/issue45204.dart:38:9: Error: Too many positional arguments: 1 allowed, but 2 found.
+// Try removing the extra positional arguments.
+//   S2(4).test3(5, 6);
+//         ^
+// pkg/front_end/testcases/general/issue45204.dart:11:8: Context: Found this candidate, but the arguments don't match.
+//   void test3<Y>(Y y) {}
+//        ^^^^^^^^
+//
+// pkg/front_end/testcases/general/issue45204.dart:40:9: Error: Expected 2 type arguments.
+//   S2(6).test3<int, int>(7);
+//         ^
+// pkg/front_end/testcases/general/issue45204.dart:11:8: Context: Found this candidate, but the arguments don't match.
+//   void test3<Y>(Y y) {}
+//        ^^^^^^^^
+//
+// pkg/front_end/testcases/general/issue45204.dart:41:9: Error: Expected 2 type arguments.
+//   S2(7).test3<int, int, int>(8);
+//         ^
+// pkg/front_end/testcases/general/issue45204.dart:11:8: Context: Found this candidate, but the arguments don't match.
+//   void test3<Y>(Y y) {}
+//        ^^^^^^^^
+//
+// pkg/front_end/testcases/general/issue45204.dart:15:9: Error: Too few positional arguments: 1 required, 0 given.
+//   3.test();
+//         ^
+//
+// pkg/front_end/testcases/general/issue45204.dart:16:9: Error: Too many positional arguments: 1 allowed, but 2 found.
+// Try removing the extra positional arguments.
+//   4.test(5, 6);
+//         ^
+//
+// pkg/front_end/testcases/general/issue45204.dart:17:5: Error: Expected 0 type arguments.
+//   5.test<int>(6);
+//     ^
+//
+// pkg/front_end/testcases/general/issue45204.dart:19:10: Error: Too few positional arguments: 1 required, 0 given.
+//   3.test2();
+//          ^
+//
+// pkg/front_end/testcases/general/issue45204.dart:20:10: Error: Too many positional arguments: 1 allowed, but 2 found.
+// Try removing the extra positional arguments.
+//   4.test2(5, 6);
+//          ^
+//
+// pkg/front_end/testcases/general/issue45204.dart:21:5: Error: Expected 0 type arguments.
+//   5.test2<int>(6);
+//     ^
+//
+// pkg/front_end/testcases/general/issue45204.dart:23:10: Error: Too few positional arguments: 1 required, 0 given.
+//   3.test3();
+//          ^
+//
+// pkg/front_end/testcases/general/issue45204.dart:24:10: Error: Too many positional arguments: 1 allowed, but 2 found.
+// Try removing the extra positional arguments.
+//   4.test3(5, 6);
+//          ^
+//
+// pkg/front_end/testcases/general/issue45204.dart:26:5: Error: Expected 1 type arguments.
+//   6.test3<int, int>(7);
+//     ^
+//
+// pkg/front_end/testcases/general/issue45204.dart:27:5: Error: Expected 1 type arguments.
+//   7.test3<int, int, int>(8);
+//     ^
+//
+import self as self;
+import "dart:core" as core;
+
+extension S on core::int {
+  method test = self::S|test;
+  tearoff test = self::S|get#test;
+}
+extension S2<X extends core::Object? = dynamic> on core::int {
+  method test2 = self::S2|test2;
+  tearoff test2 = self::S2|get#test2;
+  method test3 = self::S2|test3;
+  tearoff test3 = self::S2|get#test3;
+}
+static method S|test(lowered final core::int #this, core::int x) → void {}
+static method S|get#test(lowered final core::int #this) → (core::int) → void
+  return (core::int x) → void => self::S|test(#this, x);
+static method S2|test2<X extends core::Object? = dynamic>(lowered final core::int #this, core::int x) → void {}
+static method S2|get#test2<X extends core::Object? = dynamic>(lowered final core::int #this) → (core::int) → void
+  return (core::int x) → void => self::S2|test2<self::S2|get#test2::X%>(#this, x);
+static method S2|test3<X extends core::Object? = dynamic, Y extends core::Object? = dynamic>(lowered final core::int #this, self::S2|test3::Y% y) → void {}
+static method S2|get#test3<X extends core::Object? = dynamic>(lowered final core::int #this) → <Y extends core::Object? = dynamic>(Y%) → void
+  return <Y extends core::Object? = dynamic>(Y% y) → void => self::S2|test3<self::S2|get#test3::X%, Y%>(#this, y);
+static method foo() → dynamic {
+  let final Never #t1 = invalid-expression "pkg/front_end/testcases/general/issue45204.dart:15:9: Error: Too few positional arguments: 1 required, 0 given.
+  3.test();
+        ^" in self::S|test(3);
+  let final Never #t2 = invalid-expression "pkg/front_end/testcases/general/issue45204.dart:16:9: Error: Too many positional arguments: 1 allowed, but 2 found.
+Try removing the extra positional arguments.
+  4.test(5, 6);
+        ^" in self::S|test(4, 5, 6);
+  let final Never #t3 = invalid-expression "pkg/front_end/testcases/general/issue45204.dart:17:5: Error: Expected 0 type arguments.
+  5.test<int>(6);
+    ^" in self::S|test<core::int>(5, 6);
+  let final Never #t4 = invalid-expression "pkg/front_end/testcases/general/issue45204.dart:19:10: Error: Too few positional arguments: 1 required, 0 given.
+  3.test2();
+         ^" in self::S2|test2<dynamic>(3);
+  let final Never #t5 = invalid-expression "pkg/front_end/testcases/general/issue45204.dart:20:10: Error: Too many positional arguments: 1 allowed, but 2 found.
+Try removing the extra positional arguments.
+  4.test2(5, 6);
+         ^" in self::S2|test2<dynamic>(4, 5, 6);
+  let final Never #t6 = invalid-expression "pkg/front_end/testcases/general/issue45204.dart:21:5: Error: Expected 0 type arguments.
+  5.test2<int>(6);
+    ^" in self::S2|test2<dynamic, core::int>(5, 6);
+  let final Never #t7 = invalid-expression "pkg/front_end/testcases/general/issue45204.dart:23:10: Error: Too few positional arguments: 1 required, 0 given.
+  3.test3();
+         ^" in self::S2|test3<dynamic, dynamic>(3);
+  let final Never #t8 = invalid-expression "pkg/front_end/testcases/general/issue45204.dart:24:10: Error: Too many positional arguments: 1 allowed, but 2 found.
+Try removing the extra positional arguments.
+  4.test3(5, 6);
+         ^" in self::S2|test3<dynamic, core::int>(4, 5, 6);
+  self::S2|test3<dynamic, core::int>(5, 6);
+  let final Never #t9 = invalid-expression "pkg/front_end/testcases/general/issue45204.dart:26:5: Error: Expected 1 type arguments.
+  6.test3<int, int>(7);
+    ^" in self::S2|test3<dynamic, core::int, core::int>(6, 7);
+  let final Never #t10 = invalid-expression "pkg/front_end/testcases/general/issue45204.dart:27:5: Error: Expected 1 type arguments.
+  7.test3<int, int, int>(8);
+    ^" in self::S2|test3<dynamic, core::int, core::int, core::int>(7, 8);
+  invalid-expression "pkg/front_end/testcases/general/issue45204.dart:29:8: Error: Too few positional arguments: 1 required, 0 given.
+  S(3).test();
+       ^";
+  invalid-expression "pkg/front_end/testcases/general/issue45204.dart:30:8: Error: Too many positional arguments: 1 allowed, but 2 found.
+Try removing the extra positional arguments.
+  S(4).test(5, 6);
+       ^";
+  invalid-expression "pkg/front_end/testcases/general/issue45204.dart:31:8: Error: Expected 0 type arguments.
+  S(5).test<int>(6);
+       ^";
+  invalid-expression "pkg/front_end/testcases/general/issue45204.dart:33:9: Error: Too few positional arguments: 1 required, 0 given.
+  S2(3).test2();
+        ^";
+  invalid-expression "pkg/front_end/testcases/general/issue45204.dart:34:9: Error: Too many positional arguments: 1 allowed, but 2 found.
+Try removing the extra positional arguments.
+  S2(4).test2(5, 6);
+        ^";
+  invalid-expression "pkg/front_end/testcases/general/issue45204.dart:35:9: Error: Expected 1 type arguments.
+  S2(5).test2<int>(6);
+        ^";
+  invalid-expression "pkg/front_end/testcases/general/issue45204.dart:37:9: Error: Too few positional arguments: 1 required, 0 given.
+  S2(3).test3();
+        ^";
+  invalid-expression "pkg/front_end/testcases/general/issue45204.dart:38:9: Error: Too many positional arguments: 1 allowed, but 2 found.
+Try removing the extra positional arguments.
+  S2(4).test3(5, 6);
+        ^";
+  self::S2|test3<dynamic, core::int>(5, 6);
+  invalid-expression "pkg/front_end/testcases/general/issue45204.dart:40:9: Error: Expected 2 type arguments.
+  S2(6).test3<int, int>(7);
+        ^";
+  invalid-expression "pkg/front_end/testcases/general/issue45204.dart:41:9: Error: Expected 2 type arguments.
+  S2(7).test3<int, int, int>(8);
+        ^";
+}
+static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/general/issue45204.dart.weak.outline.expect b/pkg/front_end/testcases/general/issue45204.dart.weak.outline.expect
new file mode 100644
index 0000000..2c95328
--- /dev/null
+++ b/pkg/front_end/testcases/general/issue45204.dart.weak.outline.expect
@@ -0,0 +1,30 @@
+library /*isNonNullableByDefault*/;
+import self as self;
+import "dart:core" as core;
+
+extension S on core::int {
+  method test = self::S|test;
+  tearoff test = self::S|get#test;
+}
+extension S2<X extends core::Object? = dynamic> on core::int {
+  method test2 = self::S2|test2;
+  tearoff test2 = self::S2|get#test2;
+  method test3 = self::S2|test3;
+  tearoff test3 = self::S2|get#test3;
+}
+static method S|test(lowered final core::int #this, core::int x) → void
+  ;
+static method S|get#test(lowered final core::int #this) → (core::int) → void
+  return (core::int x) → void => self::S|test(#this, x);
+static method S2|test2<X extends core::Object? = dynamic>(lowered final core::int #this, core::int x) → void
+  ;
+static method S2|get#test2<X extends core::Object? = dynamic>(lowered final core::int #this) → (core::int) → void
+  return (core::int x) → void => self::S2|test2<self::S2|get#test2::X%>(#this, x);
+static method S2|test3<X extends core::Object? = dynamic, Y extends core::Object? = dynamic>(lowered final core::int #this, self::S2|test3::Y% y) → void
+  ;
+static method S2|get#test3<X extends core::Object? = dynamic>(lowered final core::int #this) → <Y extends core::Object? = dynamic>(Y%) → void
+  return <Y extends core::Object? = dynamic>(Y% y) → void => self::S2|test3<self::S2|get#test3::X%, Y%>(#this, y);
+static method foo() → dynamic
+  ;
+static method main() → dynamic
+  ;
diff --git a/pkg/front_end/testcases/text_serialization.status b/pkg/front_end/testcases/text_serialization.status
index 2538568..0bc79fa 100644
--- a/pkg/front_end/testcases/text_serialization.status
+++ b/pkg/front_end/testcases/text_serialization.status
@@ -77,6 +77,7 @@
 general/issue41210a: TypeCheckError
 general/issue41210b/issue41210.no_link: TypeCheckError
 general/issue41210b/issue41210: TypeCheckError
+general/issue45204: TypeCheckError
 general/micro: RuntimeError
 general/mixin_application_override: TypeCheckError
 general/mixin_constructors_with_default_values: RuntimeError
diff --git a/pkg/front_end/testcases/weak.status b/pkg/front_end/testcases/weak.status
index 31f6de1..58f937f 100644
--- a/pkg/front_end/testcases/weak.status
+++ b/pkg/front_end/testcases/weak.status
@@ -81,6 +81,7 @@
 general/issue41210a: TypeCheckError
 general/issue41210b/issue41210.no_link: TypeCheckError
 general/issue41210b/issue41210: TypeCheckError
+general/issue45204: TypeCheckError
 general/micro: RuntimeError
 general/mixin_application_override: ExpectationFileMismatch # Too many errors.
 general/mixin_application_override: TypeCheckError
diff --git a/pkg/kernel/lib/verifier.dart b/pkg/kernel/lib/verifier.dart
index 8cbf77b..4ecf6ce 100644
--- a/pkg/kernel/lib/verifier.dart
+++ b/pkg/kernel/lib/verifier.dart
@@ -459,6 +459,7 @@
   }
 
   visitLet(Let node) {
+    if (_isCompileTimeErrorEncoding(node)) return;
     visitWithLocalScope(node);
   }
 
@@ -921,6 +922,12 @@
   }
 
   @override
+  void visitLet(Let node) {
+    if (_isCompileTimeErrorEncoding(node)) return;
+    super.visitLet(node);
+  }
+
+  @override
   void defaultExpression(Expression node) {
     try {
       node.getStaticType(_staticTypeContext);
@@ -961,3 +968,7 @@
 void checkInitializers(Constructor constructor) {
   // TODO(ahe): I'll add more here in other CLs.
 }
+
+bool _isCompileTimeErrorEncoding(TreeNode? node) {
+  return node is Let && node.variable.initializer is InvalidExpression;
+}
diff --git a/tools/VERSION b/tools/VERSION
index f036980..08ea31a 100644
--- a/tools/VERSION
+++ b/tools/VERSION
@@ -27,5 +27,5 @@
 MAJOR 2
 MINOR 13
 PATCH 0
-PRERELEASE 137
+PRERELEASE 138
 PRERELEASE_PATCH 0
\ No newline at end of file
