parseUnit(Future)
  skipErrorTokens(Future)
  listener: beginCompilationUnit(Future)
  syntheticPreviousToken(Future)
  parseTopLevelDeclarationImpl(, Instance of 'DirectiveContext')
    parseMetadataStar()
      listener: beginMetadataStar(Future)
      listener: endMetadataStar(0)
    parseTopLevelMemberImpl()
      listener: beginTopLevelMember(Future)
      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(Future, 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(Future, null)
        ensureIdentifierPotentiallyRecovered(>, topLevelVariableDeclaration, false)
          insertSyntheticIdentifier(>, topLevelVariableDeclaration, message: Message[ExpectedIdentifier, Expected an identifier, but got ''., Try inserting an identifier before ''., {lexeme: }], 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()
          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, Future, ;)
  listener: endTopLevelDeclaration()
  reportAllErrorTokens(Future)
  listener: endCompilationUnit(1, )
