parseUnit(void)
  skipErrorTokens(void)
  listener: beginCompilationUnit(void)
  syntheticPreviousToken(void)
  parseTopLevelDeclarationImpl(, Instance of 'DirectiveContext')
    parseMetadataStar()
      listener: beginMetadataStar(void)
      listener: endMetadataStar(0)
    parseTopLevelMemberImpl()
      listener: beginTopLevelMember(void)
      parseTopLevelMethod(, null, , Instance of 'VoidType', null, f, false)
        listener: beginTopLevelMethod(, null)
        listener: handleVoidKeyword(void)
        ensureIdentifierPotentiallyRecovered(void, topLevelFunctionDeclaration, false)
          listener: handleIdentifier(f, topLevelFunctionDeclaration)
        parseMethodTypeVar(f)
          listener: handleNoTypeVariables(()
        parseGetterOrFormalParameters(f, f, false, MemberKind.TopLevelMethod)
          parseFormalParameters(f, MemberKind.TopLevelMethod)
            parseFormalParametersRest((, MemberKind.TopLevelMethod)
              listener: beginFormalParameters((, MemberKind.TopLevelMethod)
              parseFormalParameter((, FormalParameterKind.mandatory, MemberKind.TopLevelMethod)
                parseMetadataStar(()
                  listener: beginMetadataStar(dynamic)
                  listener: endMetadataStar(0)
                listener: beginFormalParameter(dynamic, MemberKind.TopLevelMethod, null, null, null)
                listener: handleIdentifier(dynamic, typeReference)
                listener: handleNoTypeArguments(e)
                listener: handleType(dynamic, null)
                ensureIdentifier(dynamic, formalParameterDeclaration)
                  listener: handleIdentifier(e, formalParameterDeclaration)
                listener: handleFormalParameterWithoutValue())
                listener: endFormalParameter(null, null, null, e, null, null, FormalParameterKind.mandatory, MemberKind.TopLevelMethod)
              listener: endFormalParameters(1, (, ), MemberKind.TopLevelMethod)
        parseAsyncModifierOpt())
          listener: handleAsyncModifier(null, null)
          inPlainSync()
        parseFunctionBody(), false, false)
          listener: beginBlockFunctionBody({)
          notEofOrValue(}, e)
          parseStatement({)
            parseStatementX({)
              parseExpressionStatementOrDeclarationAfterModifiers({, {, null, null, null, false)
                looksLikeLocalFunction(e)
                parseExpressionStatement({)
                  parseExpression({)
                    parsePrecedenceExpression({, 1, true)
                      parseUnaryExpression({, true)
                        parsePrimary({, expression)
                          parseSendOrFunctionLiteral({, expression)
                            looksLikeFunctionBody(()
                            parseSend({, expression)
                              isNextIdentifier({)
                              ensureIdentifier({, expression)
                                listener: handleIdentifier(e, expression)
                              listener: handleNoTypeArguments(()
                              parseArgumentsOpt(e)
                                parseArguments(e)
                                  parseArgumentsRest(()
                                    listener: beginArguments(()
                                    listener: endArguments(0, (, ))
                              listener: handleSend(e, ()
                      parseArgumentOrIndexStar(), Instance of 'NoTypeParamOrArg', false)
                        listener: handleNoTypeArguments(()
                        parseArguments())
                          parseArgumentsRest(()
                            listener: beginArguments(()
                            listener: endArguments(0, (, ))
                        listener: handleSend((, ))
                  ensureSemicolon())
                  listener: handleExpressionStatement(;)
          notEofOrValue(}, })
          listener: endBlockFunctionBody(1, {, })
        listener: endTopLevelMethod(void, null, })
  listener: endTopLevelDeclaration()
  reportAllErrorTokens(void)
  listener: endCompilationUnit(1, )
