parseUnit(Stream)
  skipErrorTokens(Stream)
  listener: beginCompilationUnit(Stream)
  syntheticPreviousToken(Stream)
  parseTopLevelDeclarationImpl(, Instance of 'DirectiveContext')
    parseMetadataStar()
      listener: beginMetadataStar(Stream)
      listener: endMetadataStar(0)
    parseTopLevelMemberImpl()
      listener: beginTopLevelMember(Stream)
      insertSyntheticIdentifier(>, methodDeclaration, message: null, messageOnToken: null)
        reportRecoverableError(, Message[ExpectedIdentifier, Expected an identifier, but got ''., Try inserting an identifier before ''., {lexeme: }])
          listener: handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got ''., Try inserting an identifier before ''., {lexeme: }], , )
          listener: // WARNING: Reporting at eof for .
        rewriter()
      parseFields(, null, null, null, null, null, null, , Instance of 'ComplexTypeInfo', , DeclarationKind.TopLevel, null, false)
        listener: beginFields(DeclarationKind.TopLevel, null, null, null, null, null, null, )
        ensureIdentifier(, typeReference)
          listener: handleIdentifier(Stream, typeReference)
        listener: beginTypeArguments(<)
        ensureIdentifier(<, typeReference)
          listener: handleIdentifier(List, typeReference)
        listener: beginTypeArguments(<)
        reportRecoverableErrorWithToken(>, Instance of 'Template<(Token) => Message>')
          listener: handleRecoverableError(Message[ExpectedType, Expected a type, but got '>'., null, {lexeme: >}], >, >)
        rewriter()
        listener: handleIdentifier(, typeReference)
        listener: handleNoTypeArguments(>)
        listener: handleType(, null)
        listener: endTypeArguments(1, <, >)
        listener: handleType(List, null)
        listener: endTypeArguments(1, <, >)
        listener: handleType(Stream, null)
        ensureIdentifierPotentiallyRecovered(>, topLevelVariableDeclaration, false)
          listener: handleIdentifier(, topLevelVariableDeclaration)
        parseFieldInitializerOpt(, , null, null, null, null, DeclarationKind.TopLevel, null)
          listener: handleNoFieldInitializer()
        ensureSemicolon()
          reportRecoverableError(>, Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}])
            listener: handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], >, >)
          rewriter()
        listener: endTopLevelFields(null, null, null, null, null, 1, Stream, ;)
  listener: endTopLevelDeclaration()
  reportAllErrorTokens(Stream)
  listener: endCompilationUnit(1, )
