parseUnit(typedef)
  skipErrorTokens(typedef)
  listener: beginCompilationUnit(typedef)
  syntheticPreviousToken(typedef)
  parseTopLevelDeclarationImpl(, Instance of 'DirectiveContext')
    parseMetadataStar()
      listener: beginMetadataStar(typedef)
      listener: endMetadataStar(0)
    parseTopLevelKeywordDeclaration(, typedef, null, Instance of 'DirectiveContext')
      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, )
