parseUnit(void)
  skipErrorTokens(void)
  listener: beginCompilationUnit(void)
  syntheticPreviousToken(void)
  parseTopLevelDeclarationImpl(, Instance of 'DirectiveContext')
    parseMetadataStar()
      listener: beginMetadataStar(void)
      listener: endMetadataStar(0)
    parseTopLevelMemberImpl()
      listener: beginTopLevelMember(void)
      parseTopLevelMethod(, null, null, , Instance of 'VoidType', null, gftTests, false)
        listener: beginTopLevelMethod(, null, null)
        listener: handleVoidKeyword(void)
        ensureIdentifierPotentiallyRecovered(void, topLevelFunctionDeclaration, false)
          listener: handleIdentifier(gftTests, topLevelFunctionDeclaration)
        parseMethodTypeVar(gftTests)
          listener: handleNoTypeVariables(()
        parseGetterOrFormalParameters(gftTests, gftTests, false, MemberKind.TopLevelMethod)
          parseFormalParameters(gftTests, MemberKind.TopLevelMethod)
            parseFormalParametersRest((, MemberKind.TopLevelMethod)
              listener: beginFormalParameters((, MemberKind.TopLevelMethod)
              listener: endFormalParameters(0, (, ), MemberKind.TopLevelMethod)
        parseAsyncModifierOpt())
          listener: handleAsyncModifier(null, null)
          inPlainSync()
        parseFunctionBody(), false, false)
          listener: beginBlockFunctionBody({)
          notEofOrValue(}, Function)
          parseStatement({)
            parseStatementX({)
              parseExpressionStatementOrDeclaration({, false)
                parseExpressionStatementOrDeclarationAfterModifiers({, {, null, null, null, false)
                  looksLikeLocalFunction(x)
                  listener: beginMetadataStar(Function)
                  listener: endMetadataStar(0)
                  listener: beginFunctionType(Function)
                  listener: handleNoTypeVariables(()
                  listener: handleNoType({)
                  parseFormalParametersRequiredOpt(Function, MemberKind.GeneralizedFunctionType)
                    parseFormalParametersRest((, MemberKind.GeneralizedFunctionType)
                      listener: beginFormalParameters((, MemberKind.GeneralizedFunctionType)
                      parseFormalParameter((, FormalParameterKind.requiredPositional, MemberKind.GeneralizedFunctionType)
                        parseMetadataStar(()
                          listener: beginMetadataStar(()
                          listener: endMetadataStar(0)
                        listener: beginFormalParameter((, MemberKind.GeneralizedFunctionType, null, null, null)
                        parseRecordType((, ()
                          listener: beginRecordType(()
                          parseRecordTypeField((, identifierIsOptional: true)
                            listener: beginRecordTypeEntry()
                            parseMetadataStar(()
                              listener: beginMetadataStar(int)
                              listener: endMetadataStar(0)
                            listener: handleIdentifier(int, typeReference)
                            listener: handleNoTypeArguments(,)
                            listener: handleType(int, null)
                            listener: handleNoName(,)
                            listener: endRecordTypeEntry()
                          parseRecordTypeField(,, identifierIsOptional: true)
                            listener: beginRecordTypeEntry()
                            parseMetadataStar(,)
                              listener: beginMetadataStar(int)
                              listener: endMetadataStar(0)
                            listener: handleIdentifier(int, typeReference)
                            listener: handleNoTypeArguments())
                            listener: handleType(int, null)
                            listener: handleNoName())
                            listener: endRecordTypeEntry()
                          listener: endRecordType((, null, 2)
                        ensureIdentifier(), formalParameterDeclaration)
                          listener: handleIdentifier(a, formalParameterDeclaration)
                        listener: handleFormalParameterWithoutValue(,)
                        listener: endFormalParameter(null, null, null, a, null, null, FormalParameterKind.requiredPositional, MemberKind.GeneralizedFunctionType)
                      parseFormalParameter(,, FormalParameterKind.requiredPositional, MemberKind.GeneralizedFunctionType)
                        parseMetadataStar(,)
                          listener: beginMetadataStar(()
                          listener: endMetadataStar(0)
                        listener: beginFormalParameter((, MemberKind.GeneralizedFunctionType, null, null, null)
                        parseRecordType((, ,)
                          listener: beginRecordType(()
                          parseRecordTypeNamedFields(()
                            listener: beginRecordTypeNamedFields({)
                            parseRecordTypeField({, identifierIsOptional: false)
                              listener: beginRecordTypeEntry()
                              parseMetadataStar({)
                                listener: beginMetadataStar(String)
                                listener: endMetadataStar(0)
                              listener: handleIdentifier(String, typeReference)
                              listener: handleNoTypeArguments(foo)
                              listener: handleType(String, null)
                              ensureIdentifier(String, recordFieldDeclaration)
                                listener: handleIdentifier(foo, recordFieldDeclaration)
                              listener: endRecordTypeEntry()
                            listener: endRecordTypeNamedFields(1, {)
                          ensureCloseParen(}, ()
                          listener: endRecordType((, null, 1)
                        ensureIdentifier(), formalParameterDeclaration)
                          listener: handleIdentifier(b, formalParameterDeclaration)
                        listener: handleFormalParameterWithoutValue())
                        listener: endFormalParameter(null, null, null, b, null, null, FormalParameterKind.requiredPositional, MemberKind.GeneralizedFunctionType)
                      listener: endFormalParameters(2, (, ), MemberKind.GeneralizedFunctionType)
                  listener: endFunctionType(Function, null)
                  listener: beginVariablesDeclaration(x, null, null)
                  parseVariablesDeclarationRest(), true)
                    parseOptionallyInitializedIdentifier())
                      ensureIdentifier(), localVariableDeclaration)
                        listener: handleIdentifier(x, localVariableDeclaration)
                      listener: beginInitializedIdentifier(x)
                      parseVariableInitializerOpt(x)
                        listener: handleNoVariableInitializer(x)
                      listener: endInitializedIdentifier(x)
                    ensureSemicolon(x)
                    listener: endVariablesDeclaration(1, ;)
          notEofOrValue(}, int)
          parseStatement(;)
            parseStatementX(;)
              parseExpressionStatementOrDeclarationAfterModifiers(;, ;, null, null, null, false)
                looksLikeLocalFunction(y1)
                listener: beginMetadataStar(int)
                listener: endMetadataStar(0)
                listener: beginFunctionType(int)
                listener: handleNoTypeVariables(()
                ensureIdentifier(;, typeReference)
                  listener: handleIdentifier(int, typeReference)
                listener: handleNoTypeArguments(Function)
                listener: handleType(int, null)
                parseFormalParametersRequiredOpt(Function, MemberKind.GeneralizedFunctionType)
                  parseFormalParametersRest((, MemberKind.GeneralizedFunctionType)
                    listener: beginFormalParameters((, MemberKind.GeneralizedFunctionType)
                    parseFormalParameter((, FormalParameterKind.requiredPositional, MemberKind.GeneralizedFunctionType)
                      parseMetadataStar(()
                        listener: beginMetadataStar(()
                        listener: endMetadataStar(0)
                      listener: beginFormalParameter((, MemberKind.GeneralizedFunctionType, null, null, null)
                      parseRecordType((, ()
                        listener: beginRecordType(()
                        parseRecordTypeField((, identifierIsOptional: true)
                          listener: beginRecordTypeEntry()
                          parseMetadataStar(()
                            listener: beginMetadataStar(int)
                            listener: endMetadataStar(0)
                          listener: handleIdentifier(int, typeReference)
                          listener: handleNoTypeArguments(,)
                          listener: handleType(int, null)
                          listener: handleNoName(,)
                          listener: endRecordTypeEntry()
                        parseRecordTypeField(,, identifierIsOptional: true)
                          listener: beginRecordTypeEntry()
                          parseMetadataStar(,)
                            listener: beginMetadataStar(int)
                            listener: endMetadataStar(0)
                          listener: handleIdentifier(int, typeReference)
                          listener: handleNoTypeArguments())
                          listener: handleType(int, null)
                          listener: handleNoName())
                          listener: endRecordTypeEntry()
                        listener: endRecordType((, null, 2)
                      ensureIdentifier(), formalParameterDeclaration)
                        listener: handleIdentifier(a, formalParameterDeclaration)
                      listener: handleFormalParameterWithoutValue())
                      listener: endFormalParameter(null, null, null, a, null, null, FormalParameterKind.requiredPositional, MemberKind.GeneralizedFunctionType)
                    listener: endFormalParameters(1, (, ), MemberKind.GeneralizedFunctionType)
                listener: endFunctionType(Function, null)
                listener: beginVariablesDeclaration(y1, null, null)
                parseVariablesDeclarationRest(), true)
                  parseOptionallyInitializedIdentifier())
                    ensureIdentifier(), localVariableDeclaration)
                      listener: handleIdentifier(y1, localVariableDeclaration)
                    listener: beginInitializedIdentifier(y1)
                    parseVariableInitializerOpt(y1)
                      listener: handleNoVariableInitializer(y1)
                    listener: endInitializedIdentifier(y1)
                  ensureSemicolon(y1)
                  listener: endVariablesDeclaration(1, ;)
          notEofOrValue(}, int)
          parseStatement(;)
            parseStatementX(;)
              parseExpressionStatementOrDeclarationAfterModifiers(;, ;, null, null, null, false)
                looksLikeLocalFunction(y2)
                listener: beginMetadataStar(int)
                listener: endMetadataStar(0)
                listener: beginFunctionType(int)
                listener: handleNoTypeVariables(()
                ensureIdentifier(;, typeReference)
                  listener: handleIdentifier(int, typeReference)
                listener: handleNoTypeArguments(?)
                listener: handleType(int, ?)
                parseFormalParametersRequiredOpt(Function, MemberKind.GeneralizedFunctionType)
                  parseFormalParametersRest((, MemberKind.GeneralizedFunctionType)
                    listener: beginFormalParameters((, MemberKind.GeneralizedFunctionType)
                    parseFormalParameter((, FormalParameterKind.requiredPositional, MemberKind.GeneralizedFunctionType)
                      parseMetadataStar(()
                        listener: beginMetadataStar(()
                        listener: endMetadataStar(0)
                      listener: beginFormalParameter((, MemberKind.GeneralizedFunctionType, null, null, null)
                      parseRecordType((, ()
                        listener: beginRecordType(()
                        parseRecordTypeField((, identifierIsOptional: true)
                          listener: beginRecordTypeEntry()
                          parseMetadataStar(()
                            listener: beginMetadataStar(int)
                            listener: endMetadataStar(0)
                          listener: handleIdentifier(int, typeReference)
                          listener: handleNoTypeArguments(,)
                          listener: handleType(int, null)
                          listener: handleNoName(,)
                          listener: endRecordTypeEntry()
                        parseRecordTypeField(,, identifierIsOptional: true)
                          listener: beginRecordTypeEntry()
                          parseMetadataStar(,)
                            listener: beginMetadataStar(int)
                            listener: endMetadataStar(0)
                          listener: handleIdentifier(int, typeReference)
                          listener: handleNoTypeArguments())
                          listener: handleType(int, null)
                          listener: handleNoName())
                          listener: endRecordTypeEntry()
                        listener: endRecordType((, null, 2)
                      ensureIdentifier(), formalParameterDeclaration)
                        listener: handleIdentifier(a, formalParameterDeclaration)
                      listener: handleFormalParameterWithoutValue())
                      listener: endFormalParameter(null, null, null, a, null, null, FormalParameterKind.requiredPositional, MemberKind.GeneralizedFunctionType)
                    listener: endFormalParameters(1, (, ), MemberKind.GeneralizedFunctionType)
                listener: endFunctionType(Function, null)
                listener: beginVariablesDeclaration(y2, null, null)
                parseVariablesDeclarationRest(), true)
                  parseOptionallyInitializedIdentifier())
                    ensureIdentifier(), localVariableDeclaration)
                      listener: handleIdentifier(y2, localVariableDeclaration)
                    listener: beginInitializedIdentifier(y2)
                    parseVariableInitializerOpt(y2)
                      listener: handleNoVariableInitializer(y2)
                    listener: endInitializedIdentifier(y2)
                  ensureSemicolon(y2)
                  listener: endVariablesDeclaration(1, ;)
          notEofOrValue(}, ()
          parseStatement(;)
            parseStatementX(;)
              parseExpressionStatementOrDeclaration(;, false)
                parseExpressionStatementOrDeclarationAfterModifiers(;, ;, null, null, null, false)
                  looksLikeLocalFunction(z1)
                  listener: beginMetadataStar(()
                  listener: endMetadataStar(0)
                  listener: beginFunctionType(()
                  listener: handleNoTypeVariables(()
                  parseRecordType((, ;)
                    listener: beginRecordType(()
                    parseRecordTypeField((, identifierIsOptional: true)
                      listener: beginRecordTypeEntry()
                      parseMetadataStar(()
                        listener: beginMetadataStar(int)
                        listener: endMetadataStar(0)
                      listener: handleIdentifier(int, typeReference)
                      listener: handleNoTypeArguments(,)
                      listener: handleType(int, null)
                      listener: handleNoName(,)
                      listener: endRecordTypeEntry()
                    parseRecordTypeField(,, identifierIsOptional: true)
                      listener: beginRecordTypeEntry()
                      parseMetadataStar(,)
                        listener: beginMetadataStar(int)
                        listener: endMetadataStar(0)
                      listener: handleIdentifier(int, typeReference)
                      listener: handleNoTypeArguments())
                      listener: handleType(int, null)
                      listener: handleNoName())
                      listener: endRecordTypeEntry()
                    listener: endRecordType((, null, 2)
                  parseFormalParametersRequiredOpt(Function, MemberKind.GeneralizedFunctionType)
                    parseFormalParametersRest((, MemberKind.GeneralizedFunctionType)
                      listener: beginFormalParameters((, MemberKind.GeneralizedFunctionType)
                      parseFormalParameter((, FormalParameterKind.requiredPositional, MemberKind.GeneralizedFunctionType)
                        parseMetadataStar(()
                          listener: beginMetadataStar(()
                          listener: endMetadataStar(0)
                        listener: beginFormalParameter((, MemberKind.GeneralizedFunctionType, null, null, null)
                        parseRecordType((, ()
                          listener: beginRecordType(()
                          parseRecordTypeField((, identifierIsOptional: true)
                            listener: beginRecordTypeEntry()
                            parseMetadataStar(()
                              listener: beginMetadataStar(int)
                              listener: endMetadataStar(0)
                            listener: handleIdentifier(int, typeReference)
                            listener: handleNoTypeArguments(,)
                            listener: handleType(int, null)
                            listener: handleNoName(,)
                            listener: endRecordTypeEntry()
                          parseRecordTypeField(,, identifierIsOptional: true)
                            listener: beginRecordTypeEntry()
                            parseMetadataStar(,)
                              listener: beginMetadataStar(int)
                              listener: endMetadataStar(0)
                            listener: handleIdentifier(int, typeReference)
                            listener: handleNoTypeArguments())
                            listener: handleType(int, null)
                            listener: handleNoName())
                            listener: endRecordTypeEntry()
                          listener: endRecordType((, null, 2)
                        ensureIdentifier(), formalParameterDeclaration)
                          listener: handleIdentifier(a, formalParameterDeclaration)
                        listener: handleFormalParameterWithoutValue())
                        listener: endFormalParameter(null, null, null, a, null, null, FormalParameterKind.requiredPositional, MemberKind.GeneralizedFunctionType)
                      listener: endFormalParameters(1, (, ), MemberKind.GeneralizedFunctionType)
                  listener: endFunctionType(Function, null)
                  listener: beginVariablesDeclaration(z1, null, null)
                  parseVariablesDeclarationRest(), true)
                    parseOptionallyInitializedIdentifier())
                      ensureIdentifier(), localVariableDeclaration)
                        listener: handleIdentifier(z1, localVariableDeclaration)
                      listener: beginInitializedIdentifier(z1)
                      parseVariableInitializerOpt(z1)
                        listener: handleNoVariableInitializer(z1)
                      listener: endInitializedIdentifier(z1)
                    ensureSemicolon(z1)
                    listener: endVariablesDeclaration(1, ;)
          notEofOrValue(}, ()
          parseStatement(;)
            parseStatementX(;)
              parseExpressionStatementOrDeclaration(;, false)
                parseExpressionStatementOrDeclarationAfterModifiers(;, ;, null, null, null, false)
                  looksLikeLocalFunction(z2)
                  listener: beginMetadataStar(()
                  listener: endMetadataStar(0)
                  listener: beginFunctionType(()
                  listener: handleNoTypeVariables(()
                  parseRecordType((, ;)
                    listener: beginRecordType(()
                    parseRecordTypeField((, identifierIsOptional: true)
                      listener: beginRecordTypeEntry()
                      parseMetadataStar(()
                        listener: beginMetadataStar(int)
                        listener: endMetadataStar(0)
                      listener: handleIdentifier(int, typeReference)
                      listener: handleNoTypeArguments(,)
                      listener: handleType(int, null)
                      listener: handleNoName(,)
                      listener: endRecordTypeEntry()
                    parseRecordTypeField(,, identifierIsOptional: true)
                      listener: beginRecordTypeEntry()
                      parseMetadataStar(,)
                        listener: beginMetadataStar(int)
                        listener: endMetadataStar(0)
                      listener: handleIdentifier(int, typeReference)
                      listener: handleNoTypeArguments())
                      listener: handleType(int, null)
                      listener: handleNoName())
                      listener: endRecordTypeEntry()
                    listener: endRecordType((, ?, 2)
                  parseFormalParametersRequiredOpt(Function, MemberKind.GeneralizedFunctionType)
                    parseFormalParametersRest((, MemberKind.GeneralizedFunctionType)
                      listener: beginFormalParameters((, MemberKind.GeneralizedFunctionType)
                      parseFormalParameter((, FormalParameterKind.requiredPositional, MemberKind.GeneralizedFunctionType)
                        parseMetadataStar(()
                          listener: beginMetadataStar(()
                          listener: endMetadataStar(0)
                        listener: beginFormalParameter((, MemberKind.GeneralizedFunctionType, null, null, null)
                        parseRecordType((, ()
                          listener: beginRecordType(()
                          parseRecordTypeField((, identifierIsOptional: true)
                            listener: beginRecordTypeEntry()
                            parseMetadataStar(()
                              listener: beginMetadataStar(int)
                              listener: endMetadataStar(0)
                            listener: handleIdentifier(int, typeReference)
                            listener: handleNoTypeArguments(,)
                            listener: handleType(int, null)
                            listener: handleNoName(,)
                            listener: endRecordTypeEntry()
                          parseRecordTypeField(,, identifierIsOptional: true)
                            listener: beginRecordTypeEntry()
                            parseMetadataStar(,)
                              listener: beginMetadataStar(int)
                              listener: endMetadataStar(0)
                            listener: handleIdentifier(int, typeReference)
                            listener: handleNoTypeArguments())
                            listener: handleType(int, null)
                            listener: handleNoName())
                            listener: endRecordTypeEntry()
                          listener: endRecordType((, null, 2)
                        ensureIdentifier(), formalParameterDeclaration)
                          listener: handleIdentifier(a, formalParameterDeclaration)
                        listener: handleFormalParameterWithoutValue())
                        listener: endFormalParameter(null, null, null, a, null, null, FormalParameterKind.requiredPositional, MemberKind.GeneralizedFunctionType)
                      listener: endFormalParameters(1, (, ), MemberKind.GeneralizedFunctionType)
                  listener: endFunctionType(Function, null)
                  listener: beginVariablesDeclaration(z2, null, null)
                  parseVariablesDeclarationRest(), true)
                    parseOptionallyInitializedIdentifier())
                      ensureIdentifier(), localVariableDeclaration)
                        listener: handleIdentifier(z2, localVariableDeclaration)
                      listener: beginInitializedIdentifier(z2)
                      parseVariableInitializerOpt(z2)
                        listener: handleNoVariableInitializer(z2)
                      listener: endInitializedIdentifier(z2)
                    ensureSemicolon(z2)
                    listener: endVariablesDeclaration(1, ;)
          notEofOrValue(}, ()
          parseStatement(;)
            parseStatementX(;)
              parseExpressionStatementOrDeclaration(;, false)
                parseExpressionStatementOrDeclarationAfterModifiers(;, ;, null, null, null, false)
                  looksLikeLocalFunction(z3)
                  listener: beginMetadataStar(()
                  listener: endMetadataStar(0)
                  listener: beginFunctionType(()
                  listener: handleNoTypeVariables(()
                  listener: beginFunctionType(()
                  listener: handleNoTypeVariables(()
                  parseRecordType((, ;)
                    listener: beginRecordType(()
                    parseRecordTypeField((, identifierIsOptional: true)
                      listener: beginRecordTypeEntry()
                      parseMetadataStar(()
                        listener: beginMetadataStar(int)
                        listener: endMetadataStar(0)
                      listener: handleIdentifier(int, typeReference)
                      listener: handleNoTypeArguments(,)
                      listener: handleType(int, null)
                      listener: handleNoName(,)
                      listener: endRecordTypeEntry()
                    parseRecordTypeField(,, identifierIsOptional: true)
                      listener: beginRecordTypeEntry()
                      parseMetadataStar(,)
                        listener: beginMetadataStar(int)
                        listener: endMetadataStar(0)
                      listener: handleIdentifier(int, typeReference)
                      listener: handleNoTypeArguments())
                      listener: handleType(int, null)
                      listener: handleNoName())
                      listener: endRecordTypeEntry()
                    listener: endRecordType((, null, 2)
                  parseFormalParametersRequiredOpt(Function, MemberKind.GeneralizedFunctionType)
                    parseFormalParametersRest((, MemberKind.GeneralizedFunctionType)
                      listener: beginFormalParameters((, MemberKind.GeneralizedFunctionType)
                      parseFormalParameter((, FormalParameterKind.requiredPositional, MemberKind.GeneralizedFunctionType)
                        parseMetadataStar(()
                          listener: beginMetadataStar(bool)
                          listener: endMetadataStar(0)
                        listener: beginFormalParameter(bool, MemberKind.GeneralizedFunctionType, null, null, null)
                        listener: handleIdentifier(bool, typeReference)
                        listener: handleNoTypeArguments())
                        listener: handleType(bool, null)
                        listener: handleNoName())
                        listener: handleFormalParameterWithoutValue())
                        listener: endFormalParameter(null, null, null, ), null, null, FormalParameterKind.requiredPositional, MemberKind.GeneralizedFunctionType)
                      listener: endFormalParameters(1, (, ), MemberKind.GeneralizedFunctionType)
                  listener: endFunctionType(Function, null)
                  parseFormalParametersRequiredOpt(Function, MemberKind.GeneralizedFunctionType)
                    parseFormalParametersRest((, MemberKind.GeneralizedFunctionType)
                      listener: beginFormalParameters((, MemberKind.GeneralizedFunctionType)
                      parseFormalParameter((, FormalParameterKind.requiredPositional, MemberKind.GeneralizedFunctionType)
                        parseMetadataStar(()
                          listener: beginMetadataStar(()
                          listener: endMetadataStar(0)
                        listener: beginFormalParameter((, MemberKind.GeneralizedFunctionType, null, null, null)
                        parseRecordType((, ()
                          listener: beginRecordType(()
                          parseRecordTypeField((, identifierIsOptional: true)
                            listener: beginRecordTypeEntry()
                            parseMetadataStar(()
                              listener: beginMetadataStar(int)
                              listener: endMetadataStar(0)
                            listener: handleIdentifier(int, typeReference)
                            listener: handleNoTypeArguments(,)
                            listener: handleType(int, null)
                            listener: handleNoName(,)
                            listener: endRecordTypeEntry()
                          parseRecordTypeField(,, identifierIsOptional: true)
                            listener: beginRecordTypeEntry()
                            parseMetadataStar(,)
                              listener: beginMetadataStar(int)
                              listener: endMetadataStar(0)
                            listener: handleIdentifier(int, typeReference)
                            listener: handleNoTypeArguments())
                            listener: handleType(int, null)
                            listener: handleNoName())
                            listener: endRecordTypeEntry()
                          listener: endRecordType((, null, 2)
                        ensureIdentifier(), formalParameterDeclaration)
                          listener: handleIdentifier(a, formalParameterDeclaration)
                        listener: handleFormalParameterWithoutValue())
                        listener: endFormalParameter(null, null, null, a, null, null, FormalParameterKind.requiredPositional, MemberKind.GeneralizedFunctionType)
                      listener: endFormalParameters(1, (, ), MemberKind.GeneralizedFunctionType)
                  listener: endFunctionType(Function, null)
                  listener: beginVariablesDeclaration(z3, null, null)
                  parseVariablesDeclarationRest(), true)
                    parseOptionallyInitializedIdentifier())
                      ensureIdentifier(), localVariableDeclaration)
                        listener: handleIdentifier(z3, localVariableDeclaration)
                      listener: beginInitializedIdentifier(z3)
                      parseVariableInitializerOpt(z3)
                        listener: handleNoVariableInitializer(z3)
                      listener: endInitializedIdentifier(z3)
                    ensureSemicolon(z3)
                    listener: endVariablesDeclaration(1, ;)
          notEofOrValue(}, ()
          parseStatement(;)
            parseStatementX(;)
              parseExpressionStatementOrDeclaration(;, false)
                parseExpressionStatementOrDeclarationAfterModifiers(;, ;, null, null, null, false)
                  looksLikeLocalFunction(z4)
                  listener: beginMetadataStar(()
                  listener: endMetadataStar(0)
                  listener: beginFunctionType(()
                  listener: handleNoTypeVariables(()
                  listener: beginFunctionType(()
                  listener: handleNoTypeVariables(()
                  parseRecordType((, ;)
                    listener: beginRecordType(()
                    parseRecordTypeField((, identifierIsOptional: true)
                      listener: beginRecordTypeEntry()
                      parseMetadataStar(()
                        listener: beginMetadataStar(int)
                        listener: endMetadataStar(0)
                      listener: handleIdentifier(int, typeReference)
                      listener: handleNoTypeArguments(,)
                      listener: handleType(int, null)
                      listener: handleNoName(,)
                      listener: endRecordTypeEntry()
                    parseRecordTypeField(,, identifierIsOptional: true)
                      listener: beginRecordTypeEntry()
                      parseMetadataStar(,)
                        listener: beginMetadataStar(int)
                        listener: endMetadataStar(0)
                      listener: handleIdentifier(int, typeReference)
                      listener: handleNoTypeArguments())
                      listener: handleType(int, null)
                      listener: handleNoName())
                      listener: endRecordTypeEntry()
                    listener: endRecordType((, ?, 2)
                  parseFormalParametersRequiredOpt(Function, MemberKind.GeneralizedFunctionType)
                    parseFormalParametersRest((, MemberKind.GeneralizedFunctionType)
                      listener: beginFormalParameters((, MemberKind.GeneralizedFunctionType)
                      parseFormalParameter((, FormalParameterKind.requiredPositional, MemberKind.GeneralizedFunctionType)
                        parseMetadataStar(()
                          listener: beginMetadataStar(bool)
                          listener: endMetadataStar(0)
                        listener: beginFormalParameter(bool, MemberKind.GeneralizedFunctionType, null, null, null)
                        listener: handleIdentifier(bool, typeReference)
                        listener: handleNoTypeArguments())
                        listener: handleType(bool, null)
                        listener: handleNoName())
                        listener: handleFormalParameterWithoutValue())
                        listener: endFormalParameter(null, null, null, ), null, null, FormalParameterKind.requiredPositional, MemberKind.GeneralizedFunctionType)
                      listener: endFormalParameters(1, (, ), MemberKind.GeneralizedFunctionType)
                  listener: endFunctionType(Function, null)
                  parseFormalParametersRequiredOpt(Function, MemberKind.GeneralizedFunctionType)
                    parseFormalParametersRest((, MemberKind.GeneralizedFunctionType)
                      listener: beginFormalParameters((, MemberKind.GeneralizedFunctionType)
                      parseFormalParameter((, FormalParameterKind.requiredPositional, MemberKind.GeneralizedFunctionType)
                        parseMetadataStar(()
                          listener: beginMetadataStar(()
                          listener: endMetadataStar(0)
                        listener: beginFormalParameter((, MemberKind.GeneralizedFunctionType, null, null, null)
                        parseRecordType((, ()
                          listener: beginRecordType(()
                          parseRecordTypeField((, identifierIsOptional: true)
                            listener: beginRecordTypeEntry()
                            parseMetadataStar(()
                              listener: beginMetadataStar(int)
                              listener: endMetadataStar(0)
                            listener: handleIdentifier(int, typeReference)
                            listener: handleNoTypeArguments(,)
                            listener: handleType(int, null)
                            listener: handleNoName(,)
                            listener: endRecordTypeEntry()
                          parseRecordTypeField(,, identifierIsOptional: true)
                            listener: beginRecordTypeEntry()
                            parseMetadataStar(,)
                              listener: beginMetadataStar(int)
                              listener: endMetadataStar(0)
                            listener: handleIdentifier(int, typeReference)
                            listener: handleNoTypeArguments())
                            listener: handleType(int, null)
                            listener: handleNoName())
                            listener: endRecordTypeEntry()
                          listener: endRecordType((, null, 2)
                        ensureIdentifier(), formalParameterDeclaration)
                          listener: handleIdentifier(a, formalParameterDeclaration)
                        listener: handleFormalParameterWithoutValue())
                        listener: endFormalParameter(null, null, null, a, null, null, FormalParameterKind.requiredPositional, MemberKind.GeneralizedFunctionType)
                      listener: endFormalParameters(1, (, ), MemberKind.GeneralizedFunctionType)
                  listener: endFunctionType(Function, null)
                  listener: beginVariablesDeclaration(z4, null, null)
                  parseVariablesDeclarationRest(), true)
                    parseOptionallyInitializedIdentifier())
                      ensureIdentifier(), localVariableDeclaration)
                        listener: handleIdentifier(z4, localVariableDeclaration)
                      listener: beginInitializedIdentifier(z4)
                      parseVariableInitializerOpt(z4)
                        listener: handleNoVariableInitializer(z4)
                      listener: endInitializedIdentifier(z4)
                    ensureSemicolon(z4)
                    listener: endVariablesDeclaration(1, ;)
          notEofOrValue(}, })
          listener: endBlockFunctionBody(7, {, })
        listener: endTopLevelMethod(void, null, })
  listener: endTopLevelDeclaration()
  reportAllErrorTokens(void)
  listener: endCompilationUnit(1, )
