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: beginFunctionTypeAlias(typedef)
        ensureIdentifierPotentiallyRecovered(typedef, typedefDeclaration, true)
          listener: handleIdentifier(F, typedefDeclaration)
        listener: beginTypeVariables(<)
        parseMetadataStar(<)
          listener: beginMetadataStar(Glib)
          listener: endMetadataStar(0)
        ensureIdentifier(<, typeVariableDeclaration)
          listener: handleIdentifier(Glib, typeVariableDeclaration)
        listener: beginTypeVariable(Glib)
        listener: handleTypeVariablesDefined(Glib, 1)
        listener: handleNoType(Glib)
        listener: endTypeVariable(., 0, null, null)
        reportRecoverableError(Glib, Message[ExpectedAfterButGot, Expected '>' after this., null, {string: >}])
          listener: handleRecoverableError(Message[ExpectedAfterButGot, Expected '>' after this., null, {string: >}], Glib, Glib)
        listener: endTypeVariables(<, >)
        reportRecoverableErrorWithToken(, Instance of 'Template<(Token) => Message>')
          listener: handleRecoverableError(Message[ExpectedType, Expected a type, but got ''., null, {token: }], , )
        rewriter()
        listener: handleIdentifier(, typeReference)
        listener: handleNoTypeArguments()
        listener: handleType(, null)
        ensureSemicolon()
          reportRecoverableError(, Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}])
            listener: handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], , )
          rewriter()
        listener: endFunctionTypeAlias(typedef, =, ;)
  listener: endTopLevelDeclaration()
  reportAllErrorTokens(typedef)
  listener: endCompilationUnit(1, )
