parseUnit(typedef)
  skipErrorTokens(typedef)
  listener: beginCompilationUnit(typedef)
  syntheticPreviousToken(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: beginTypedef(typedef)
        ensureIdentifierPotentiallyRecovered(typedef, typedefDeclaration, true)
          listener: handleIdentifier(A, typedefDeclaration)
        listener: beginTypeVariables(<)
        parseMetadataStar(<)
          listener: beginMetadataStar(=)
          listener: endMetadataStar(0)
        ensureIdentifier(<, typeVariableDeclaration)
          reportRecoverableErrorWithToken(=, Instance of 'Template<(Token) => Message>')
            listener: handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got '='., Try inserting an identifier before '='., {lexeme: =}], =, =)
          rewriter()
          listener: handleIdentifier(, typeVariableDeclaration)
        listener: beginTypeVariable()
        listener: handleTypeVariablesDefined(, 1)
        listener: handleNoType()
        listener: endTypeVariable(=, 0, null, null)
        listener: endTypeVariables(<, >)
        listener: beginFunctionType(void)
        listener: handleNoTypeVariables(()
        listener: handleVoidKeyword(void)
        parseFormalParametersRequiredOpt(Function, MemberKind.GeneralizedFunctionType)
          parseFormalParametersRest((, MemberKind.GeneralizedFunctionType)
            listener: beginFormalParameters((, MemberKind.GeneralizedFunctionType)
            listener: endFormalParameters(0, (, ), MemberKind.GeneralizedFunctionType)
        listener: endFunctionType(Function, null)
        ensureSemicolon())
        listener: endTypedef(typedef, =, ;)
  listener: endTopLevelDeclaration()
  reportAllErrorTokens(typedef)
  listener: endCompilationUnit(1, )
