parseUnit(class)
  skipErrorTokens(class)
  listener: beginCompilationUnit(class)
  syntheticPreviousToken(class)
  parseTopLevelDeclarationImpl(, Instance of 'DirectiveContext')
    parseMetadataStar()
      listener: beginMetadataStar(class)
      listener: endMetadataStar(0)
    parseTopLevelKeywordDeclaration(, class, Instance of 'DirectiveContext')
      parseClassDeclarationModifiers(, class)
      parseClassOrNamedMixinApplication(null, class)
        listener: beginClassOrMixinOrNamedMixinApplicationPrelude(class)
        ensureIdentifier(class, classOrMixinDeclaration)
          listener: handleIdentifier(Foo, classOrMixinDeclaration)
        listener: handleNoTypeVariables({)
        listener: beginClassDeclaration(class, null, Foo)
        parseClass(Foo, class, class, Foo)
          parseClassHeaderOpt(Foo, class, class)
            parseClassExtendsOpt(Foo)
              listener: handleNoType(Foo)
              listener: handleClassExtends(null, 1)
            parseWithClauseOpt(Foo)
              listener: handleClassNoWithClause()
            parseClassOrMixinImplementsOpt(Foo)
              listener: handleClassOrMixinImplements(null, 0)
            listener: handleClassHeader(class, class, null)
          parseClassOrMixinOrExtensionBody(Foo, DeclarationKind.Class, Foo)
            listener: beginClassOrMixinOrExtensionBody(DeclarationKind.Class, {)
            notEofOrValue(}, String)
            parseClassOrMixinOrExtensionMemberImpl({, DeclarationKind.Class, Foo)
              parseMetadataStar({)
                listener: beginMetadataStar(String)
                listener: endMetadataStar(0)
              listener: beginMember()
              parseFields({, null, null, null, null, null, null, {, Instance of 'SimpleNullableType', x, DeclarationKind.Class, Foo, false)
                listener: beginFields(DeclarationKind.Class, null, null, null, null, null, null, {)
                listener: handleIdentifier(String, typeReference)
                listener: handleNoTypeArguments(?)
                listener: handleType(String, ?)
                ensureIdentifierPotentiallyRecovered(?, fieldDeclaration, false)
                  listener: handleIdentifier(x, fieldDeclaration)
                parseFieldInitializerOpt(x, x, null, null, null, null, DeclarationKind.Class, Foo)
                  listener: handleNoFieldInitializer(;)
                listener: endClassFields(null, null, null, null, null, null, 1, String, ;)
              listener: endMember()
            notEofOrValue(}, int)
            parseClassOrMixinOrExtensionMemberImpl(;, DeclarationKind.Class, Foo)
              parseMetadataStar(;)
                listener: beginMetadataStar(int)
                listener: endMetadataStar(0)
              listener: beginMember()
              parseFields(;, null, null, null, null, null, null, ;, Instance of 'SimpleType', y, DeclarationKind.Class, Foo, false)
                listener: beginFields(DeclarationKind.Class, null, null, null, null, null, null, ;)
                listener: handleIdentifier(int, typeReference)
                listener: handleNoTypeArguments(y)
                listener: handleType(int, null)
                ensureIdentifierPotentiallyRecovered(int, fieldDeclaration, false)
                  listener: handleIdentifier(y, fieldDeclaration)
                parseFieldInitializerOpt(y, y, null, null, null, null, DeclarationKind.Class, Foo)
                  listener: handleNoFieldInitializer(;)
                listener: endClassFields(null, null, null, null, null, null, 1, int, ;)
              listener: endMember()
            notEofOrValue(}, Foo)
            parseClassOrMixinOrExtensionMemberImpl(;, DeclarationKind.Class, Foo)
              parseMetadataStar(;)
                listener: beginMetadataStar(Foo)
                listener: endMetadataStar(0)
              listener: beginMember()
              isReservedKeyword(()
              parseMethod(;, null, null, null, null, null, null, ;, Instance of 'NoType', null, Foo, DeclarationKind.Class, Foo, false)
                listener: beginMethod(DeclarationKind.Class, null, null, null, null, null, Foo)
                listener: handleNoType(;)
                ensureIdentifierPotentiallyRecovered(;, methodDeclaration, false)
                  listener: handleIdentifier(Foo, methodDeclaration)
                parseQualifiedRestOpt(Foo, methodDeclarationContinuation)
                parseMethodTypeVar(Foo)
                  listener: handleNoTypeVariables(()
                parseGetterOrFormalParameters(Foo, Foo, false, MemberKind.NonStaticMethod)
                  parseFormalParameters(Foo, MemberKind.NonStaticMethod)
                    parseFormalParametersRest((, MemberKind.NonStaticMethod)
                      listener: beginFormalParameters((, MemberKind.NonStaticMethod)
                      parseFormalParameter((, FormalParameterKind.mandatory, MemberKind.NonStaticMethod)
                        parseMetadataStar(()
                          listener: beginMetadataStar(Object)
                          listener: endMetadataStar(0)
                        listener: beginFormalParameter(Object, MemberKind.NonStaticMethod, null, null, null)
                        listener: handleIdentifier(Object, typeReference)
                        listener: handleNoTypeArguments(?)
                        listener: handleType(Object, ?)
                        ensureIdentifier(?, formalParameterDeclaration)
                          listener: handleIdentifier(o, formalParameterDeclaration)
                        listener: handleFormalParameterWithoutValue())
                        listener: endFormalParameter(null, null, null, o, null, null, FormalParameterKind.mandatory, MemberKind.NonStaticMethod)
                      listener: endFormalParameters(1, (, ), MemberKind.NonStaticMethod)
                parseInitializersOpt())
                  parseInitializers(:)
                    listener: beginInitializers(:)
                    parseInitializer(:)
                      listener: beginInitializer(x)
                      parseInitializerExpressionRest(:)
                        parseExpression(:)
                          parsePrecedenceExpression(:, 1, true)
                            parseUnaryExpression(:, true)
                              parsePrimary(:, expression)
                                parseSendOrFunctionLiteral(:, expression)
                                  parseSend(:, expression)
                                    isNextIdentifier(:)
                                    ensureIdentifier(:, expression)
                                      listener: handleIdentifier(x, expression)
                                    listener: handleNoTypeArguments(=)
                                    parseArgumentsOpt(x)
                                      listener: handleNoArguments(=)
                                    listener: handleSend(x, =)
                            parsePrecedenceExpression(=, 1, true)
                              parseUnaryExpression(=, true)
                                parsePrimary(=, expression)
                                  parseSendOrFunctionLiteral(=, expression)
                                    parseSend(=, expression)
                                      isNextIdentifier(=)
                                      ensureIdentifier(=, expression)
                                        listener: handleIdentifier(o, expression)
                                      listener: handleNoTypeArguments(as)
                                      parseArgumentsOpt(o)
                                        listener: handleNoArguments(as)
                                      listener: handleSend(o, as)
                              parseAsOperatorRest(o)
                                listener: beginAsOperatorType(as)
                                computeTypeAfterIsOrAs(as)
                                listener: handleIdentifier(String, typeReference)
                                listener: handleNoTypeArguments(,)
                                listener: handleType(String, null)
                                listener: endAsOperatorType(as)
                                listener: handleAsOperator(as)
                                skipChainedAsIsOperators(String)
                            listener: handleAssignmentExpression(=)
                        listener: endInitializer(,)
                    parseInitializer(,)
                      listener: beginInitializer(y)
                      parseInitializerExpressionRest(,)
                        parseExpression(,)
                          parsePrecedenceExpression(,, 1, true)
                            parseUnaryExpression(,, true)
                              parsePrimary(,, expression)
                                parseSendOrFunctionLiteral(,, expression)
                                  parseSend(,, expression)
                                    isNextIdentifier(,)
                                    ensureIdentifier(,, expression)
                                      listener: handleIdentifier(y, expression)
                                    listener: handleNoTypeArguments(=)
                                    parseArgumentsOpt(y)
                                      listener: handleNoArguments(=)
                                    listener: handleSend(y, =)
                            parsePrecedenceExpression(=, 1, true)
                              parseUnaryExpression(=, true)
                                parsePrimary(=, expression)
                                  parseLiteralInt(=)
                                    listener: handleLiteralInt(0)
                            listener: handleAssignmentExpression(=)
                        listener: endInitializer(;)
                    listener: endInitializers(2, :, ;)
                parseAsyncModifierOpt(0)
                  listener: handleAsyncModifier(null, null)
                  inPlainSync()
                inPlainSync()
                parseFunctionBody(0, false, true)
                  listener: handleEmptyFunctionBody(;)
                listener: endClassConstructor(null, Foo, (, :, ;)
              listener: endMember()
            notEofOrValue(}, })
            listener: endClassOrMixinOrExtensionBody(DeclarationKind.Class, 3, {, })
          listener: endClassDeclaration(class, })
  listener: endTopLevelDeclaration()
  reportAllErrorTokens(class)
  listener: endCompilationUnit(1, )
