parseUnit(@)
  skipErrorTokens(@)
  listener: beginCompilationUnit(@)
  syntheticPreviousToken(@)
  parseTopLevelDeclarationImpl(, Instance of 'DirectiveContext')
    parseMetadataStar()
      listener: beginMetadataStar(@)
      parseMetadata()
        listener: beginMetadata(@)
        ensureIdentifier(@, metadataReference)
          listener: handleIdentifier(metadata, metadataReference)
        parseQualifiedRestOpt(metadata, metadataContinuation)
        listener: handleNoTypeArguments(()
        parseArgumentsOptMetadata(metadata, false)
          parseArguments(metadata)
            parseArgumentsRest(()
              listener: beginArguments(()
              parseExpression(()
                parsePrecedenceExpression((, 1, true, ConstantPatternContext.none)
                  parseUnaryExpression((, true, ConstantPatternContext.none)
                    parsePrimary((, expression, ConstantPatternContext.none)
                      parseSendOrFunctionLiteral((, expression)
                        parseSend((, expression)
                          isNextIdentifier(()
                          ensureIdentifier((, expression)
                            listener: handleIdentifier(x, expression)
                          listener: handleNoTypeArguments(,)
                          parseArgumentsOpt(x)
                            listener: handleNoArguments(,)
                          listener: handleSend(x, ,)
              parseExpression(,)
                parsePrecedenceExpression(,, 1, true, ConstantPatternContext.none)
                  parseUnaryExpression(,, true, ConstantPatternContext.none)
                    parsePrimary(,, expression, ConstantPatternContext.none)
                      parseSendOrFunctionLiteral(,, expression)
                        parseSend(,, expression)
                          isNextIdentifier(,)
                          ensureIdentifier(,, expression)
                            listener: handleIdentifier(y, expression)
                          listener: handleNoTypeArguments())
                          parseArgumentsOpt(y)
                            listener: handleNoArguments())
                          listener: handleSend(y, ))
              listener: endArguments(2, (, ))
        listener: endMetadata(@, null, a)
      listener: endMetadataStar(1)
    parseTopLevelMemberImpl())
      listener: beginTopLevelMember(a)
      isReservedKeyword(;)
      parseFields(), null, null, null, null, null, null, null, ), Instance of 'NoType', a, DeclarationKind.TopLevel, null, false)
        listener: beginFields(DeclarationKind.TopLevel, null, null, null, null, null, null, null, ))
        reportRecoverableError(a, MissingConstFinalVarOrType)
          listener: handleRecoverableError(MissingConstFinalVarOrType, a, a)
        listener: handleNoType())
        ensureIdentifierPotentiallyRecovered(), topLevelVariableDeclaration, false)
          listener: handleIdentifier(a, topLevelVariableDeclaration)
        parseFieldInitializerOpt(a, a, null, null, null, null, null, DeclarationKind.TopLevel, null)
          listener: handleNoFieldInitializer(;)
        listener: endTopLevelFields(null, null, null, null, null, 1, a, ;)
  listener: endTopLevelDeclaration(@)
  parseTopLevelDeclarationImpl(;, Instance of 'DirectiveContext')
    parseMetadataStar(;)
      listener: beginMetadataStar(@)
      parseMetadata(;)
        listener: beginMetadata(@)
        ensureIdentifier(@, metadataReference)
          listener: handleIdentifier(metadata, metadataReference)
        parseQualifiedRestOpt(metadata, metadataContinuation)
        listener: beginTypeArguments(<)
        listener: handleIdentifier(T, typeReference)
        listener: handleNoTypeArguments(>)
        listener: handleType(T, null)
        listener: endTypeArguments(1, <, >)
        parseArgumentsOptMetadata(>, true)
          parseArguments(>)
            parseArgumentsRest(()
              listener: beginArguments(()
              parseExpression(()
                parsePrecedenceExpression((, 1, true, ConstantPatternContext.none)
                  parseUnaryExpression((, true, ConstantPatternContext.none)
                    parsePrimary((, expression, ConstantPatternContext.none)
                      parseSendOrFunctionLiteral((, expression)
                        parseSend((, expression)
                          isNextIdentifier(()
                          ensureIdentifier((, expression)
                            listener: handleIdentifier(x, expression)
                          listener: handleNoTypeArguments(,)
                          parseArgumentsOpt(x)
                            listener: handleNoArguments(,)
                          listener: handleSend(x, ,)
              parseExpression(,)
                parsePrecedenceExpression(,, 1, true, ConstantPatternContext.none)
                  parseUnaryExpression(,, true, ConstantPatternContext.none)
                    parsePrimary(,, expression, ConstantPatternContext.none)
                      parseSendOrFunctionLiteral(,, expression)
                        parseSend(,, expression)
                          isNextIdentifier(,)
                          ensureIdentifier(,, expression)
                            listener: handleIdentifier(y, expression)
                          listener: handleNoTypeArguments())
                          parseArgumentsOpt(y)
                            listener: handleNoArguments())
                          listener: handleSend(y, ))
              listener: endArguments(2, (, ))
        listener: endMetadata(@, null, a)
      listener: endMetadataStar(1)
    parseTopLevelMemberImpl())
      listener: beginTopLevelMember(a)
      isReservedKeyword(;)
      parseFields(), null, null, null, null, null, null, null, ), Instance of 'NoType', a, DeclarationKind.TopLevel, null, false)
        listener: beginFields(DeclarationKind.TopLevel, null, null, null, null, null, null, null, ))
        reportRecoverableError(a, MissingConstFinalVarOrType)
          listener: handleRecoverableError(MissingConstFinalVarOrType, a, a)
        listener: handleNoType())
        ensureIdentifierPotentiallyRecovered(), topLevelVariableDeclaration, false)
          listener: handleIdentifier(a, topLevelVariableDeclaration)
        parseFieldInitializerOpt(a, a, null, null, null, null, null, DeclarationKind.TopLevel, null)
          listener: handleNoFieldInitializer(;)
        listener: endTopLevelFields(null, null, null, null, null, 1, a, ;)
  listener: endTopLevelDeclaration(@)
  parseTopLevelDeclarationImpl(;, Instance of 'DirectiveContext')
    parseMetadataStar(;)
      listener: beginMetadataStar(@)
      parseMetadata(;)
        listener: beginMetadata(@)
        ensureIdentifier(@, metadataReference)
          listener: handleIdentifier(metadata, metadataReference)
        parseQualifiedRestOpt(metadata, metadataContinuation)
        listener: beginTypeArguments(<)
        listener: handleIdentifier(T, typeReference)
        listener: handleNoTypeArguments(>)
        listener: handleType(T, null)
        listener: endTypeArguments(1, <, >)
        parseArgumentsOptMetadata(>, true)
          parseArguments(>)
            parseArgumentsRest(()
              listener: beginArguments(()
              parseExpression(()
                parsePrecedenceExpression((, 1, true, ConstantPatternContext.none)
                  parseUnaryExpression((, true, ConstantPatternContext.none)
                    parsePrimary((, expression, ConstantPatternContext.none)
                      parseSendOrFunctionLiteral((, expression)
                        parseSend((, expression)
                          isNextIdentifier(()
                          ensureIdentifier((, expression)
                            listener: handleIdentifier(x, expression)
                          listener: handleNoTypeArguments(,)
                          parseArgumentsOpt(x)
                            listener: handleNoArguments(,)
                          listener: handleSend(x, ,)
              parseExpression(,)
                parsePrecedenceExpression(,, 1, true, ConstantPatternContext.none)
                  parseUnaryExpression(,, true, ConstantPatternContext.none)
                    parsePrimary(,, expression, ConstantPatternContext.none)
                      parseSendOrFunctionLiteral(,, expression)
                        parseSend(,, expression)
                          isNextIdentifier(,)
                          ensureIdentifier(,, expression)
                            listener: handleIdentifier(y, expression)
                          listener: handleNoTypeArguments())
                          parseArgumentsOpt(y)
                            listener: handleNoArguments())
                          listener: handleSend(y, ))
              listener: endArguments(2, (, ))
        listener: endMetadata(@, null, a)
      listener: endMetadataStar(1)
    parseTopLevelMemberImpl())
      listener: beginTopLevelMember(a)
      isReservedKeyword(;)
      parseFields(), null, null, null, null, null, null, null, ), Instance of 'NoType', a, DeclarationKind.TopLevel, null, false)
        listener: beginFields(DeclarationKind.TopLevel, null, null, null, null, null, null, null, ))
        reportRecoverableError(a, MissingConstFinalVarOrType)
          listener: handleRecoverableError(MissingConstFinalVarOrType, a, a)
        listener: handleNoType())
        ensureIdentifierPotentiallyRecovered(), topLevelVariableDeclaration, false)
          listener: handleIdentifier(a, topLevelVariableDeclaration)
        parseFieldInitializerOpt(a, a, null, null, null, null, null, DeclarationKind.TopLevel, null)
          listener: handleNoFieldInitializer(;)
        listener: endTopLevelFields(null, null, null, null, null, 1, a, ;)
  listener: endTopLevelDeclaration(@)
  parseTopLevelDeclarationImpl(;, Instance of 'DirectiveContext')
    parseMetadataStar(;)
      listener: beginMetadataStar(@)
      parseMetadata(;)
        listener: beginMetadata(@)
        ensureIdentifier(@, metadataReference)
          listener: handleIdentifier(metadata, metadataReference)
        parseQualifiedRestOpt(metadata, metadataContinuation)
        listener: handleNoTypeArguments(()
        parseArgumentsOptMetadata(metadata, false)
          listener: handleNoArguments(()
        listener: endMetadata(@, null, ()
      listener: endMetadataStar(1)
    parseTopLevelMemberImpl(metadata)
      listener: beginTopLevelMember(()
      parseFields(metadata, null, null, null, null, null, null, null, metadata, Instance of 'ComplexTypeInfo', a, DeclarationKind.TopLevel, null, false)
        listener: beginFields(DeclarationKind.TopLevel, null, null, null, null, null, null, null, metadata)
        parseRecordType((, metadata, false)
          listener: beginRecordType(()
          parseRecordTypeField((, identifierIsOptional: true)
            listener: beginRecordTypeEntry()
            parseMetadataStar(()
              listener: beginMetadataStar(x)
              listener: endMetadataStar(0)
            listener: handleIdentifier(x, typeReference)
            listener: handleNoTypeArguments(,)
            listener: handleType(x, null)
            listener: handleNoName(,)
            listener: endRecordTypeEntry()
          parseRecordTypeField(,, identifierIsOptional: true)
            listener: beginRecordTypeEntry()
            parseMetadataStar(,)
              listener: beginMetadataStar(y)
              listener: endMetadataStar(0)
            listener: handleIdentifier(y, typeReference)
            listener: handleNoTypeArguments())
            listener: handleType(y, null)
            listener: handleNoName())
            listener: endRecordTypeEntry()
          listener: endRecordType((, null, 2, false)
        ensureIdentifierPotentiallyRecovered(), topLevelVariableDeclaration, false)
          listener: handleIdentifier(a, topLevelVariableDeclaration)
        parseFieldInitializerOpt(a, a, null, null, null, null, null, DeclarationKind.TopLevel, null)
          listener: handleNoFieldInitializer(;)
        listener: endTopLevelFields(null, null, null, null, null, 1, (, ;)
  listener: endTopLevelDeclaration(@)
  parseTopLevelDeclarationImpl(;, Instance of 'DirectiveContext')
    parseMetadataStar(;)
      listener: beginMetadataStar(@)
      parseMetadata(;)
        listener: beginMetadata(@)
        ensureIdentifier(@, metadataReference)
          listener: handleIdentifier(metadata, metadataReference)
        parseQualifiedRestOpt(metadata, metadataContinuation)
        listener: handleNoTypeArguments(()
        parseArgumentsOptMetadata(metadata, false)
          listener: handleNoArguments(()
        listener: endMetadata(@, null, ()
      listener: endMetadataStar(1)
    parseTopLevelMemberImpl(metadata)
      listener: beginTopLevelMember(()
      parseFields(metadata, null, null, null, null, null, null, null, metadata, Instance of 'ComplexTypeInfo', a, DeclarationKind.TopLevel, null, false)
        listener: beginFields(DeclarationKind.TopLevel, null, null, null, null, null, null, null, metadata)
        parseRecordType((, metadata, false)
          listener: beginRecordType(()
          parseRecordTypeField((, identifierIsOptional: true)
            listener: beginRecordTypeEntry()
            parseMetadataStar(()
              listener: beginMetadataStar(x)
              listener: endMetadataStar(0)
            listener: handleIdentifier(x, typeReference)
            listener: handleNoTypeArguments(,)
            listener: handleType(x, null)
            listener: handleNoName(,)
            listener: endRecordTypeEntry()
          parseRecordTypeField(,, identifierIsOptional: true)
            listener: beginRecordTypeEntry()
            parseMetadataStar(,)
              listener: beginMetadataStar(y)
              listener: endMetadataStar(0)
            listener: handleIdentifier(y, typeReference)
            listener: handleNoTypeArguments())
            listener: handleType(y, null)
            listener: handleNoName())
            listener: endRecordTypeEntry()
          listener: endRecordType((, null, 2, false)
        ensureIdentifierPotentiallyRecovered(), topLevelVariableDeclaration, false)
          listener: handleIdentifier(a, topLevelVariableDeclaration)
        parseFieldInitializerOpt(a, a, null, null, null, null, null, DeclarationKind.TopLevel, null)
          listener: handleNoFieldInitializer(;)
        listener: endTopLevelFields(null, null, null, null, null, 1, (, ;)
  listener: endTopLevelDeclaration(@)
  parseTopLevelDeclarationImpl(;, Instance of 'DirectiveContext')
    parseMetadataStar(;)
      listener: beginMetadataStar(@)
      parseMetadata(;)
        listener: beginMetadata(@)
        ensureIdentifier(@, metadataReference)
          listener: handleIdentifier(metadata, metadataReference)
        parseQualifiedRestOpt(metadata, metadataContinuation)
        listener: handleNoTypeArguments(()
        parseArgumentsOptMetadata(metadata, false)
          listener: handleNoArguments(()
        listener: endMetadata(@, null, ()
      listener: endMetadataStar(1)
    parseTopLevelMemberImpl(metadata)
      listener: beginTopLevelMember(()
      parseFields(metadata, null, null, null, null, null, null, null, metadata, Instance of 'ComplexTypeInfo', a, DeclarationKind.TopLevel, null, false)
        listener: beginFields(DeclarationKind.TopLevel, null, null, null, null, null, null, null, metadata)
        parseRecordType((, metadata, false)
          listener: beginRecordType(()
          parseRecordTypeField((, identifierIsOptional: true)
            listener: beginRecordTypeEntry()
            parseMetadataStar(()
              listener: beginMetadataStar(x)
              listener: endMetadataStar(0)
            listener: handleIdentifier(x, typeReference)
            listener: handleNoTypeArguments(,)
            listener: handleType(x, null)
            listener: handleNoName(,)
            listener: endRecordTypeEntry()
          parseRecordTypeField(,, identifierIsOptional: true)
            listener: beginRecordTypeEntry()
            parseMetadataStar(,)
              listener: beginMetadataStar(y)
              listener: endMetadataStar(0)
            listener: handleIdentifier(y, typeReference)
            listener: handleNoTypeArguments())
            listener: handleType(y, null)
            listener: handleNoName())
            listener: endRecordTypeEntry()
          listener: endRecordType((, null, 2, false)
        ensureIdentifierPotentiallyRecovered(), topLevelVariableDeclaration, false)
          listener: handleIdentifier(a, topLevelVariableDeclaration)
        parseFieldInitializerOpt(a, a, null, null, null, null, null, DeclarationKind.TopLevel, null)
          listener: handleNoFieldInitializer(;)
        listener: endTopLevelFields(null, null, null, null, null, 1, (, ;)
  listener: endTopLevelDeclaration(@)
  parseTopLevelDeclarationImpl(;, Instance of 'DirectiveContext')
    parseMetadataStar(;)
      listener: beginMetadataStar(@)
      parseMetadata(;)
        listener: beginMetadata(@)
        ensureIdentifier(@, metadataReference)
          listener: handleIdentifier(metadata, metadataReference)
        parseQualifiedRestOpt(metadata, metadataContinuation)
        listener: handleNoTypeArguments(()
        parseArgumentsOptMetadata(metadata, false)
          listener: handleNoArguments(()
        listener: endMetadata(@, null, ()
      listener: endMetadataStar(1)
    parseTopLevelMemberImpl(metadata)
      listener: beginTopLevelMember(()
      parseFields(metadata, null, null, null, null, null, null, null, metadata, Instance of 'ComplexTypeInfo', a, DeclarationKind.TopLevel, null, false)
        listener: beginFields(DeclarationKind.TopLevel, null, null, null, null, null, null, null, metadata)
        parseRecordType((, metadata, false)
          listener: beginRecordType(()
          parseRecordTypeField((, identifierIsOptional: true)
            listener: beginRecordTypeEntry()
            parseMetadataStar(()
              listener: beginMetadataStar(x)
              listener: endMetadataStar(0)
            listener: handleIdentifier(x, typeReference)
            listener: handleNoTypeArguments(,)
            listener: handleType(x, null)
            listener: handleNoName(,)
            listener: endRecordTypeEntry()
          listener: endRecordType((, null, 1, false)
        ensureIdentifierPotentiallyRecovered(), topLevelVariableDeclaration, false)
          listener: handleIdentifier(a, topLevelVariableDeclaration)
        parseFieldInitializerOpt(a, a, null, null, null, null, null, DeclarationKind.TopLevel, null)
          listener: handleNoFieldInitializer(;)
        listener: endTopLevelFields(null, null, null, null, null, 1, (, ;)
  listener: endTopLevelDeclaration(@)
  parseTopLevelDeclarationImpl(;, Instance of 'DirectiveContext')
    parseMetadataStar(;)
      listener: beginMetadataStar(@)
      parseMetadata(;)
        listener: beginMetadata(@)
        ensureIdentifier(@, metadataReference)
          listener: handleIdentifier(metadata, metadataReference)
        parseQualifiedRestOpt(metadata, metadataContinuation)
        listener: handleNoTypeArguments(()
        parseArgumentsOptMetadata(metadata, false)
          reportRecoverableError((, MetadataSpaceBeforeParenthesis)
            listener: handleRecoverableError(MetadataSpaceBeforeParenthesis, (, ()
          parseArguments(metadata)
            parseArgumentsRest(()
              listener: beginArguments(()
              parseExpression(()
                parsePrecedenceExpression((, 1, true, ConstantPatternContext.none)
                  parseUnaryExpression((, true, ConstantPatternContext.none)
                    parsePrimary((, expression, ConstantPatternContext.none)
                      parseSendOrFunctionLiteral((, expression)
                        parseSend((, expression)
                          isNextIdentifier(()
                          ensureIdentifier((, expression)
                            listener: handleIdentifier(x, expression)
                          listener: handleNoTypeArguments(,)
                          parseArgumentsOpt(x)
                            listener: handleNoArguments(,)
                          listener: handleSend(x, ,)
              parseExpression(,)
                parsePrecedenceExpression(,, 1, true, ConstantPatternContext.none)
                  parseUnaryExpression(,, true, ConstantPatternContext.none)
                    parsePrimary(,, expression, ConstantPatternContext.none)
                      parseSendOrFunctionLiteral(,, expression)
                        parseSend(,, expression)
                          isNextIdentifier(,)
                          ensureIdentifier(,, expression)
                            listener: handleIdentifier(y, expression)
                          listener: handleNoTypeArguments())
                          parseArgumentsOpt(y)
                            listener: handleNoArguments())
                          listener: handleSend(y, ))
              listener: endArguments(2, (, ))
        listener: endMetadata(@, null, class)
      listener: endMetadataStar(1)
    parseTopLevelKeywordDeclaration(), class, null, null, null, null, null, Instance of 'DirectiveContext')
      parseClassOrNamedMixinApplication(null, null, null, null, null, null, null, null, null, class)
        listener: beginClassOrMixinOrNamedMixinApplicationPrelude(class)
        ensureIdentifier(class, classOrMixinDeclaration)
          listener: handleIdentifier(C, classOrMixinDeclaration)
        listener: handleNoTypeVariables({)
        listener: beginClassDeclaration(class, null, null, null, null, null, null, null, null, null, C)
        parseClass(C, class, class, C)
          parseClassHeaderOpt(C, class, class)
            parseClassExtendsOpt(C)
              listener: handleNoType(C)
              listener: handleClassExtends(null, 1)
            parseClassWithClauseOpt(C)
              listener: handleClassNoWithClause()
            parseClassOrMixinOrEnumImplementsOpt(C)
              listener: handleImplements(null, 0)
            listener: handleClassHeader(class, class, null)
          parseClassOrMixinOrExtensionBody(C, DeclarationKind.Class, C)
            listener: beginClassOrMixinOrExtensionBody(DeclarationKind.Class, {)
            notEofOrValue(}, })
            listener: endClassOrMixinOrExtensionBody(DeclarationKind.Class, 0, {, })
          listener: endClassDeclaration(class, })
  listener: endTopLevelDeclaration(@)
  parseTopLevelDeclarationImpl(}, Instance of 'DirectiveContext')
    parseMetadataStar(})
      listener: beginMetadataStar(@)
      parseMetadata(})
        listener: beginMetadata(@)
        ensureIdentifier(@, metadataReference)
          listener: handleIdentifier(metadata, metadataReference)
        parseQualifiedRestOpt(metadata, metadataContinuation)
        listener: beginTypeArguments(<)
        listener: handleIdentifier(T, typeReference)
        listener: handleNoTypeArguments(>)
        listener: handleType(T, null)
        listener: endTypeArguments(1, <, >)
        parseArgumentsOptMetadata(>, true)
          reportRecoverableError((, MetadataSpaceBeforeParenthesis)
            listener: handleRecoverableError(MetadataSpaceBeforeParenthesis, (, ()
          parseArguments(>)
            parseArgumentsRest(()
              listener: beginArguments(()
              parseExpression(()
                parsePrecedenceExpression((, 1, true, ConstantPatternContext.none)
                  parseUnaryExpression((, true, ConstantPatternContext.none)
                    parsePrimary((, expression, ConstantPatternContext.none)
                      parseSendOrFunctionLiteral((, expression)
                        parseSend((, expression)
                          isNextIdentifier(()
                          ensureIdentifier((, expression)
                            listener: handleIdentifier(x, expression)
                          listener: handleNoTypeArguments(,)
                          parseArgumentsOpt(x)
                            listener: handleNoArguments(,)
                          listener: handleSend(x, ,)
              parseExpression(,)
                parsePrecedenceExpression(,, 1, true, ConstantPatternContext.none)
                  parseUnaryExpression(,, true, ConstantPatternContext.none)
                    parsePrimary(,, expression, ConstantPatternContext.none)
                      parseSendOrFunctionLiteral(,, expression)
                        parseSend(,, expression)
                          isNextIdentifier(,)
                          ensureIdentifier(,, expression)
                            listener: handleIdentifier(y, expression)
                          listener: handleNoTypeArguments())
                          parseArgumentsOpt(y)
                            listener: handleNoArguments())
                          listener: handleSend(y, ))
              listener: endArguments(2, (, ))
        listener: endMetadata(@, null, a)
      listener: endMetadataStar(1)
    parseTopLevelMemberImpl())
      listener: beginTopLevelMember(a)
      isReservedKeyword(;)
      parseFields(), null, null, null, null, null, null, null, ), Instance of 'NoType', a, DeclarationKind.TopLevel, null, false)
        listener: beginFields(DeclarationKind.TopLevel, null, null, null, null, null, null, null, ))
        reportRecoverableError(a, MissingConstFinalVarOrType)
          listener: handleRecoverableError(MissingConstFinalVarOrType, a, a)
        listener: handleNoType())
        ensureIdentifierPotentiallyRecovered(), topLevelVariableDeclaration, false)
          listener: handleIdentifier(a, topLevelVariableDeclaration)
        parseFieldInitializerOpt(a, a, null, null, null, null, null, DeclarationKind.TopLevel, null)
          listener: handleNoFieldInitializer(;)
        listener: endTopLevelFields(null, null, null, null, null, 1, a, ;)
  listener: endTopLevelDeclaration()
  reportAllErrorTokens(@)
  listener: endCompilationUnit(9, )
