parseUnit(augment)
  skipErrorTokens(augment)
  listener: beginCompilationUnit(augment)
  syntheticPreviousToken(augment)
  parseTopLevelDeclarationImpl(, DirectiveContext(DirectiveState.Unknown))
    parseMetadataStar()
      listener: beginMetadataStar(augment)
      listener: endMetadataStar(0)
    parseTopLevelMemberImpl()
      listener: beginTopLevelMember(augment)
      isReservedKeyword(class)
      indicatesMethodOrField(Class)
      parseFields(, null, null, null, null, null, null, null, , NoType(), augment, DeclarationKind.TopLevel, null, false)
        listener: beginFields(DeclarationKind.TopLevel, null, null, null, null, null, null, null, )
        reportRecoverableError(augment, MissingConstFinalVarOrType)
          listener: handleRecoverableError(MissingConstFinalVarOrType, augment, augment)
        listener: handleNoType()
        ensureIdentifierPotentiallyRecovered(, topLevelVariableDeclaration, false)
          listener: handleIdentifier(augment, topLevelVariableDeclaration)
        parseFieldInitializerOpt(augment, augment, null, null, null, null, null, DeclarationKind.TopLevel, null)
          listener: handleNoFieldInitializer(class)
        ensureSemicolon(augment)
          reportRecoverableError(augment, Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}])
            listener: handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], augment, augment)
          rewriter()
        listener: endTopLevelFields(null, null, null, null, null, null, 1, augment, ;)
  listener: endTopLevelDeclaration(;)
  parseTopLevelDeclarationImpl(;, DirectiveContext(DirectiveState.Declarations))
    parseMetadataStar(;)
      listener: beginMetadataStar(class)
      listener: endMetadataStar(0)
    parseTopLevelKeywordDeclaration(class, ;, class, null, null, null, null, DirectiveContext(DirectiveState.Declarations))
      parseClassOrNamedMixinApplication(class, null, null, null, null, null, null, null, null, class)
        listener: beginClassOrMixinOrNamedMixinApplicationPrelude(class)
        ensureIdentifier(class, classOrMixinDeclaration)
          listener: handleIdentifier(Class, classOrMixinDeclaration)
        listener: handleNoTypeVariables({)
        listener: beginClassDeclaration(class, null, null, null, null, null, null, null, null, Class)
        parseClass(Class, class, class, Class)
          parseClassHeaderOpt(Class, class, class)
            parseClassExtendsOpt(Class, DeclarationHeaderKind.Class)
              listener: handleNoType(Class)
              listener: handleClassExtends(null, 1)
            parseClassWithClauseOpt(Class)
              listener: handleClassNoWithClause()
            parseClassOrMixinOrEnumImplementsOpt(Class)
              listener: handleImplements(null, 0)
            listener: handleClassHeader(class, class, null)
          parseClassOrMixinOrExtensionBody(Class, DeclarationKind.Class, Class)
            listener: beginClassOrMixinOrExtensionBody(DeclarationKind.Class, {)
            notEofOrValue(}, })
            listener: endClassOrMixinOrExtensionBody(DeclarationKind.Class, 0, {, })
          listener: endClassDeclaration(class, })
  listener: endTopLevelDeclaration(})
  parseTopLevelDeclarationImpl(}, DirectiveContext(DirectiveState.Declarations))
    parseMetadataStar(})
      listener: beginMetadataStar(abstract)
      listener: endMetadataStar(0)
    parseTopLevelMemberImpl(})
      listener: beginTopLevelMember(abstract)
      reportRecoverableErrorWithToken(abstract, Template(ExtraneousModifier))
        listener: handleRecoverableError(Message[ExtraneousModifier, Can't have modifier 'abstract' here., Try removing 'abstract'., {lexeme: abstract}], abstract, abstract)
      isReservedKeyword(class)
      indicatesMethodOrField(Class)
      parseFields(}, null, null, null, null, null, null, null, abstract, NoType(), augment, DeclarationKind.TopLevel, null, false)
        listener: beginFields(DeclarationKind.TopLevel, null, null, null, null, null, null, null, })
        reportRecoverableError(augment, MissingConstFinalVarOrType)
          listener: handleRecoverableError(MissingConstFinalVarOrType, augment, augment)
        listener: handleNoType(abstract)
        ensureIdentifierPotentiallyRecovered(abstract, topLevelVariableDeclaration, false)
          listener: handleIdentifier(augment, topLevelVariableDeclaration)
        parseFieldInitializerOpt(augment, augment, null, null, null, null, null, DeclarationKind.TopLevel, null)
          listener: handleNoFieldInitializer(class)
        ensureSemicolon(augment)
          reportRecoverableError(augment, Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}])
            listener: handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], augment, augment)
          rewriter()
        listener: endTopLevelFields(null, null, null, null, null, null, 1, abstract, ;)
  listener: endTopLevelDeclaration(;)
  parseTopLevelDeclarationImpl(;, DirectiveContext(DirectiveState.Declarations))
    parseMetadataStar(;)
      listener: beginMetadataStar(class)
      listener: endMetadataStar(0)
    parseTopLevelKeywordDeclaration(class, ;, class, null, null, null, null, DirectiveContext(DirectiveState.Declarations))
      parseClassOrNamedMixinApplication(class, null, null, null, null, null, null, null, null, class)
        listener: beginClassOrMixinOrNamedMixinApplicationPrelude(class)
        ensureIdentifier(class, classOrMixinDeclaration)
          listener: handleIdentifier(Class, classOrMixinDeclaration)
        listener: handleNoTypeVariables({)
        listener: beginClassDeclaration(class, null, null, null, null, null, null, null, null, Class)
        parseClass(Class, class, class, Class)
          parseClassHeaderOpt(Class, class, class)
            parseClassExtendsOpt(Class, DeclarationHeaderKind.Class)
              listener: handleNoType(Class)
              listener: handleClassExtends(null, 1)
            parseClassWithClauseOpt(Class)
              listener: handleClassNoWithClause()
            parseClassOrMixinOrEnumImplementsOpt(Class)
              listener: handleImplements(null, 0)
            listener: handleClassHeader(class, class, null)
          parseClassOrMixinOrExtensionBody(Class, DeclarationKind.Class, Class)
            listener: beginClassOrMixinOrExtensionBody(DeclarationKind.Class, {)
            notEofOrValue(}, })
            listener: endClassOrMixinOrExtensionBody(DeclarationKind.Class, 0, {, })
          listener: endClassDeclaration(class, })
  listener: endTopLevelDeclaration(})
  parseTopLevelDeclarationImpl(}, DirectiveContext(DirectiveState.Declarations))
    parseMetadataStar(})
      listener: beginMetadataStar(augment)
      listener: endMetadataStar(0)
    parseTopLevelMemberImpl(})
      listener: beginTopLevelMember(augment)
      isReservedKeyword(class)
      indicatesMethodOrField(Class)
      parseFields(}, null, null, null, null, null, null, null, }, NoType(), augment, DeclarationKind.TopLevel, null, false)
        listener: beginFields(DeclarationKind.TopLevel, null, null, null, null, null, null, null, })
        reportRecoverableError(augment, MissingConstFinalVarOrType)
          listener: handleRecoverableError(MissingConstFinalVarOrType, augment, augment)
        listener: handleNoType(})
        ensureIdentifierPotentiallyRecovered(}, topLevelVariableDeclaration, false)
          listener: handleIdentifier(augment, topLevelVariableDeclaration)
        parseFieldInitializerOpt(augment, augment, null, null, null, null, null, DeclarationKind.TopLevel, null)
          listener: handleNoFieldInitializer(class)
        ensureSemicolon(augment)
          reportRecoverableError(augment, Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}])
            listener: handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], augment, augment)
          rewriter()
        listener: endTopLevelFields(null, null, null, null, null, null, 1, augment, ;)
  listener: endTopLevelDeclaration(;)
  parseTopLevelDeclarationImpl(;, DirectiveContext(DirectiveState.Declarations))
    parseMetadataStar(;)
      listener: beginMetadataStar(class)
      listener: endMetadataStar(0)
    parseTopLevelKeywordDeclaration(class, ;, class, null, null, null, null, DirectiveContext(DirectiveState.Declarations))
      parseClassOrNamedMixinApplication(class, null, null, null, null, null, null, null, null, class)
        listener: beginClassOrMixinOrNamedMixinApplicationPrelude(class)
        ensureIdentifier(class, classOrMixinDeclaration)
          listener: handleIdentifier(Class, classOrMixinDeclaration)
        listener: handleNoTypeVariables(=)
        listener: beginNamedMixinApplication(class, null, null, null, null, null, null, null, null, Class)
        parseNamedMixinApplication(Class, class, class)
          listener: handleIdentifier(Object, typeReference)
          listener: handleNoTypeArguments(with)
          listener: handleType(Object, null)
          parseMixinApplicationRest(Object)
            parseTypeList(with)
              listener: beginTypeList(Mixin)
              listener: handleIdentifier(Mixin, typeReference)
              listener: handleNoTypeArguments(;)
              listener: handleType(Mixin, null)
              listener: endTypeList(1)
            listener: handleNamedMixinApplicationWithClause(with)
          ensureSemicolon(Mixin)
          listener: endNamedMixinApplication(class, class, =, null, ;)
  listener: endTopLevelDeclaration(;)
  parseTopLevelDeclarationImpl(;, DirectiveContext(DirectiveState.Declarations))
    parseMetadataStar(;)
      listener: beginMetadataStar(abstract)
      listener: endMetadataStar(0)
    parseTopLevelMemberImpl(;)
      listener: beginTopLevelMember(abstract)
      reportRecoverableErrorWithToken(abstract, Template(ExtraneousModifier))
        listener: handleRecoverableError(Message[ExtraneousModifier, Can't have modifier 'abstract' here., Try removing 'abstract'., {lexeme: abstract}], abstract, abstract)
      isReservedKeyword(class)
      indicatesMethodOrField(Class)
      parseFields(;, null, null, null, null, null, null, null, abstract, NoType(), augment, DeclarationKind.TopLevel, null, false)
        listener: beginFields(DeclarationKind.TopLevel, null, null, null, null, null, null, null, ;)
        reportRecoverableError(augment, MissingConstFinalVarOrType)
          listener: handleRecoverableError(MissingConstFinalVarOrType, augment, augment)
        listener: handleNoType(abstract)
        ensureIdentifierPotentiallyRecovered(abstract, topLevelVariableDeclaration, false)
          listener: handleIdentifier(augment, topLevelVariableDeclaration)
        parseFieldInitializerOpt(augment, augment, null, null, null, null, null, DeclarationKind.TopLevel, null)
          listener: handleNoFieldInitializer(class)
        ensureSemicolon(augment)
          reportRecoverableError(augment, Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}])
            listener: handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], augment, augment)
          rewriter()
        listener: endTopLevelFields(null, null, null, null, null, null, 1, abstract, ;)
  listener: endTopLevelDeclaration(;)
  parseTopLevelDeclarationImpl(;, DirectiveContext(DirectiveState.Declarations))
    parseMetadataStar(;)
      listener: beginMetadataStar(class)
      listener: endMetadataStar(0)
    parseTopLevelKeywordDeclaration(class, ;, class, null, null, null, null, DirectiveContext(DirectiveState.Declarations))
      parseClassOrNamedMixinApplication(class, null, null, null, null, null, null, null, null, class)
        listener: beginClassOrMixinOrNamedMixinApplicationPrelude(class)
        ensureIdentifier(class, classOrMixinDeclaration)
          listener: handleIdentifier(Class, classOrMixinDeclaration)
        listener: handleNoTypeVariables(=)
        listener: beginNamedMixinApplication(class, null, null, null, null, null, null, null, null, Class)
        parseNamedMixinApplication(Class, class, class)
          listener: handleIdentifier(Object, typeReference)
          listener: handleNoTypeArguments(with)
          listener: handleType(Object, null)
          parseMixinApplicationRest(Object)
            parseTypeList(with)
              listener: beginTypeList(Mixin)
              listener: handleIdentifier(Mixin, typeReference)
              listener: handleNoTypeArguments(;)
              listener: handleType(Mixin, null)
              listener: endTypeList(1)
            listener: handleNamedMixinApplicationWithClause(with)
          ensureSemicolon(Mixin)
          listener: endNamedMixinApplication(class, class, =, null, ;)
  listener: endTopLevelDeclaration(;)
  reportAllErrorTokens(augment)
  listener: endCompilationUnit(8, )
