parseUnit(Stream)
  skipErrorTokens(Stream)
  listener: beginCompilationUnit(Stream)
  syntheticPreviousToken(Stream)
  parseTopLevelDeclarationImpl(, Instance of 'DirectiveContext')
    parseMetadataStar()
      listener: beginMetadataStar(Stream)
      listener: endMetadataStar(0)
    parseTopLevelMemberImpl()
      listener: beginTopLevelMember(Stream)
      isReservedKeyword(<)
      parseTopLevelMethod(, null, , Instance of 'NoType', null, Stream, false)
        listener: beginTopLevelMethod(, null)
        listener: handleNoType()
        ensureIdentifierPotentiallyRecovered(, topLevelFunctionDeclaration, false)
          listener: handleIdentifier(Stream, topLevelFunctionDeclaration)
        parseMethodTypeVar(Stream)
          listener: beginTypeVariables(<)
          parseMetadataStar(<)
            listener: beginMetadataStar(List)
            listener: endMetadataStar(0)
          ensureIdentifier(<, typeVariableDeclaration)
            listener: handleIdentifier(List, typeVariableDeclaration)
          listener: beginTypeVariable(List)
          listener: handleTypeVariablesDefined(List, 1)
          listener: handleNoType(List)
          listener: endTypeVariable(<, 0, null, null)
          reportRecoverableError(List, Message[ExpectedAfterButGot, Expected '>' after this., null, {string: >}])
            listener: handleRecoverableError(Message[ExpectedAfterButGot, Expected '>' after this., null, {string: >}], List, List)
          listener: endTypeVariables(<, >)
        parseGetterOrFormalParameters(>, Stream, false, MemberKind.TopLevelMethod)
          missingParameterMessage(MemberKind.TopLevelMethod)
          reportRecoverableError(Stream, MissingFunctionParameters)
            listener: handleRecoverableError(MissingFunctionParameters, Stream, Stream)
          rewriter()
          parseFormalParametersRest((, MemberKind.TopLevelMethod)
            listener: beginFormalParameters((, MemberKind.TopLevelMethod)
            listener: endFormalParameters(0, (, ), MemberKind.TopLevelMethod)
        parseAsyncModifierOpt())
          listener: handleAsyncModifier(null, null)
          inPlainSync()
        parseFunctionBody(), false, false)
          ensureBlock(), Instance of 'Template<(Token) => Message>', null)
            reportRecoverableError(, Message[ExpectedFunctionBody, Expected a function body, but got ''., null, {token: }])
              listener: handleRecoverableError(Message[ExpectedFunctionBody, Expected a function body, but got ''., null, {token: }], , )
            insertBlock())
              rewriter()
              rewriter()
          listener: handleInvalidFunctionBody({)
        listener: endTopLevelMethod(Stream, null, })
  listener: endTopLevelDeclaration()
  reportAllErrorTokens(Stream)
  listener: endCompilationUnit(1, )
