parseUnit(UnterminatedToken(UnexpectedSeparatorInNumber))
  skipErrorTokens(UnterminatedToken(UnexpectedSeparatorInNumber))
  listener: beginCompilationUnit(void)
  syntheticPreviousToken(void)
  parseTopLevelDeclarationImpl(UnterminatedToken(UnexpectedSeparatorInNumber), DirectiveContext(DirectiveState.Unknown))
    parseMetadataStar(UnterminatedToken(UnexpectedSeparatorInNumber))
      listener: beginMetadataStar(void)
      listener: endMetadataStar(0)
    parseTopLevelMemberImpl(UnterminatedToken(UnexpectedSeparatorInNumber))
      listener: beginTopLevelMember(void)
      parseTopLevelMethod(UnterminatedToken(UnexpectedSeparatorInNumber), null, null, UnterminatedToken(UnexpectedSeparatorInNumber), VoidType(), null, foo, false)
        listener: beginTopLevelMethod(UnterminatedToken(UnexpectedSeparatorInNumber), null, null)
        listener: handleVoidKeyword(void)
        ensureIdentifierPotentiallyRecovered(void, topLevelFunctionDeclaration, false)
          listener: handleIdentifier(foo, topLevelFunctionDeclaration)
        parseMethodTypeVar(foo)
          listener: handleNoTypeVariables(()
        parseGetterOrFormalParameters(foo, foo, false, MemberKind.TopLevelMethod)
          parseFormalParameters(foo, 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({)
          notEofOrType(CLOSE_CURLY_BRACKET, 12_e0)
          parseStatement({)
            parseStatementX({)
              parseExpressionStatementOrDeclaration({, null)
                parseExpressionStatementOrDeclarationAfterModifiers({, {, null, null, null, null)
                  looksLikeLocalFunction(12_e0)
                  parseExpressionStatement({)
                    parseExpression({)
                      parsePrecedenceExpression({, 1, true, ConstantPatternContext.none)
                        parseUnaryExpression({, true, ConstantPatternContext.none)
                          parsePrimary({, expression, ConstantPatternContext.none)
                            parseLiteralDoubleWithSeparators({)
                              listener: handleLiteralDoubleWithSeparators(12_e0)
                    ensureSemicolon(12_e0)
                    listener: handleExpressionStatement(12_e0, ;)
          notEofOrType(CLOSE_CURLY_BRACKET, 12_E0)
          parseStatement(;)
            parseStatementX(;)
              parseExpressionStatementOrDeclaration(;, null)
                parseExpressionStatementOrDeclarationAfterModifiers(;, ;, null, null, null, null)
                  looksLikeLocalFunction(12_E0)
                  parseExpressionStatement(;)
                    parseExpression(;)
                      parsePrecedenceExpression(;, 1, true, ConstantPatternContext.none)
                        parseUnaryExpression(;, true, ConstantPatternContext.none)
                          parsePrimary(;, expression, ConstantPatternContext.none)
                            parseLiteralDoubleWithSeparators(;)
                              listener: handleLiteralDoubleWithSeparators(12_E0)
                    ensureSemicolon(12_E0)
                    listener: handleExpressionStatement(12_E0, ;)
          notEofOrType(CLOSE_CURLY_BRACKET, 12_)
          parseStatement(;)
            parseStatementX(;)
              parseExpressionStatementOrDeclaration(;, null)
                parseExpressionStatementOrDeclarationAfterModifiers(;, ;, null, null, null, null)
                  looksLikeLocalFunction(12_)
                  parseExpressionStatement(;)
                    parseExpression(;)
                      parsePrecedenceExpression(;, 1, true, ConstantPatternContext.none)
                        parseUnaryExpression(;, true, ConstantPatternContext.none)
                          parsePrimary(;, expression, ConstantPatternContext.none)
                            parseLiteralIntWithSeparators(;)
                              listener: handleLiteralIntWithSeparators(12_)
                        parsePrimary(., expressionContinuation, ConstantPatternContext.none)
                          parseSend(., expressionContinuation, ConstantPatternContext.none)
                            ensureIdentifier(., expressionContinuation)
                              reportRecoverableErrorWithToken(;, Template(ExpectedIdentifier))
                                listener: handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got ';'., Try inserting an identifier before ';'., {lexeme: ;}], ;, ;)
                              rewriter()
                              listener: handleIdentifier(, expressionContinuation)
                            listener: handleNoTypeArguments(;)
                            parseArgumentsOpt()
                              listener: handleNoArguments(;)
                            listener: handleSend(, )
                        listener: handleEndingBinaryExpression(., )
                    ensureSemicolon()
                    listener: handleExpressionStatement(12_, ;)
          notEofOrType(CLOSE_CURLY_BRACKET, 12_)
          parseStatement(;)
            parseStatementX(;)
              parseExpressionStatementOrDeclaration(;, null)
                parseExpressionStatementOrDeclarationAfterModifiers(;, ;, null, null, null, null)
                  looksLikeLocalFunction(12_)
                  parseExpressionStatement(;)
                    parseExpression(;)
                      parsePrecedenceExpression(;, 1, true, ConstantPatternContext.none)
                        parseUnaryExpression(;, true, ConstantPatternContext.none)
                          parsePrimary(;, expression, ConstantPatternContext.none)
                            parseLiteralIntWithSeparators(;)
                              listener: handleLiteralIntWithSeparators(12_)
                    ensureSemicolon(12_)
                    listener: handleExpressionStatement(12_, ;)
          notEofOrType(CLOSE_CURLY_BRACKET, 0x_0)
          parseStatement(;)
            parseStatementX(;)
              parseExpressionStatementOrDeclaration(;, null)
                parseExpressionStatementOrDeclarationAfterModifiers(;, ;, null, null, null, null)
                  looksLikeLocalFunction(0x_0)
                  parseExpressionStatement(;)
                    parseExpression(;)
                      parsePrecedenceExpression(;, 1, true, ConstantPatternContext.none)
                        parseUnaryExpression(;, true, ConstantPatternContext.none)
                          parsePrimary(;, expression, ConstantPatternContext.none)
                            parseLiteralInt(;)
                              listener: handleLiteralInt(0x_0)
                    ensureSemicolon(0x_0)
                    listener: handleExpressionStatement(0x_0, ;)
          notEofOrType(CLOSE_CURLY_BRACKET, 0xA_)
          parseStatement(;)
            parseStatementX(;)
              parseExpressionStatementOrDeclaration(;, null)
                parseExpressionStatementOrDeclarationAfterModifiers(;, ;, null, null, null, null)
                  looksLikeLocalFunction(0xA_)
                  parseExpressionStatement(;)
                    parseExpression(;)
                      parsePrecedenceExpression(;, 1, true, ConstantPatternContext.none)
                        parseUnaryExpression(;, true, ConstantPatternContext.none)
                          parsePrimary(;, expression, ConstantPatternContext.none)
                            parseLiteralIntWithSeparators(;)
                              listener: handleLiteralIntWithSeparators(0xA_)
                    ensureSemicolon(0xA_)
                    listener: handleExpressionStatement(0xA_, ;)
          notEofOrType(CLOSE_CURLY_BRACKET, .1)
          parseStatement(;)
            parseStatementX(;)
              parseExpressionStatementOrDeclaration(;, null)
                parseExpressionStatementOrDeclarationAfterModifiers(;, ;, null, null, null, null)
                  looksLikeLocalFunction(.1)
                  parseExpressionStatement(;)
                    parseExpression(;)
                      parsePrecedenceExpression(;, 1, true, ConstantPatternContext.none)
                        parseUnaryExpression(;, true, ConstantPatternContext.none)
                          parsePrimary(;, expression, ConstantPatternContext.none)
                            parseLiteralDouble(;)
                              listener: handleLiteralDouble(.1)
                    ensureSemicolon(.1)
                    listener: handleExpressionStatement(.1, ;)
          notEofOrType(CLOSE_CURLY_BRACKET, 1.2_)
          parseStatement(;)
            parseStatementX(;)
              parseExpressionStatementOrDeclaration(;, null)
                parseExpressionStatementOrDeclarationAfterModifiers(;, ;, null, null, null, null)
                  looksLikeLocalFunction(1.2_)
                  parseExpressionStatement(;)
                    parseExpression(;)
                      parsePrecedenceExpression(;, 1, true, ConstantPatternContext.none)
                        parseUnaryExpression(;, true, ConstantPatternContext.none)
                          parsePrimary(;, expression, ConstantPatternContext.none)
                            parseLiteralDoubleWithSeparators(;)
                              listener: handleLiteralDoubleWithSeparators(1.2_)
                    ensureSemicolon(1.2_)
                    listener: handleExpressionStatement(1.2_, ;)
          notEofOrType(CLOSE_CURLY_BRACKET, 1.2_e0)
          parseStatement(;)
            parseStatementX(;)
              parseExpressionStatementOrDeclaration(;, null)
                parseExpressionStatementOrDeclarationAfterModifiers(;, ;, null, null, null, null)
                  looksLikeLocalFunction(1.2_e0)
                  parseExpressionStatement(;)
                    parseExpression(;)
                      parsePrecedenceExpression(;, 1, true, ConstantPatternContext.none)
                        parseUnaryExpression(;, true, ConstantPatternContext.none)
                          parsePrimary(;, expression, ConstantPatternContext.none)
                            parseLiteralDoubleWithSeparators(;)
                              listener: handleLiteralDoubleWithSeparators(1.2_e0)
                    ensureSemicolon(1.2_e0)
                    listener: handleExpressionStatement(1.2_e0, ;)
          notEofOrType(CLOSE_CURLY_BRACKET, 1.2_E0)
          parseStatement(;)
            parseStatementX(;)
              parseExpressionStatementOrDeclaration(;, null)
                parseExpressionStatementOrDeclarationAfterModifiers(;, ;, null, null, null, null)
                  looksLikeLocalFunction(1.2_E0)
                  parseExpressionStatement(;)
                    parseExpression(;)
                      parsePrecedenceExpression(;, 1, true, ConstantPatternContext.none)
                        parseUnaryExpression(;, true, ConstantPatternContext.none)
                          parsePrimary(;, expression, ConstantPatternContext.none)
                            parseLiteralDoubleWithSeparators(;)
                              listener: handleLiteralDoubleWithSeparators(1.2_E0)
                    ensureSemicolon(1.2_E0)
                    listener: handleExpressionStatement(1.2_E0, ;)
          notEofOrType(CLOSE_CURLY_BRACKET, 1.2e_0)
          parseStatement(;)
            parseStatementX(;)
              parseExpressionStatementOrDeclaration(;, null)
                parseExpressionStatementOrDeclarationAfterModifiers(;, ;, null, null, null, null)
                  looksLikeLocalFunction(1.2e_0)
                  parseExpressionStatement(;)
                    parseExpression(;)
                      parsePrecedenceExpression(;, 1, true, ConstantPatternContext.none)
                        parseUnaryExpression(;, true, ConstantPatternContext.none)
                          parsePrimary(;, expression, ConstantPatternContext.none)
                            parseLiteralDoubleWithSeparators(;)
                              listener: handleLiteralDoubleWithSeparators(1.2e_0)
                    ensureSemicolon(1.2e_0)
                    listener: handleExpressionStatement(1.2e_0, ;)
          notEofOrType(CLOSE_CURLY_BRACKET, 1.2E_0)
          parseStatement(;)
            parseStatementX(;)
              parseExpressionStatementOrDeclaration(;, null)
                parseExpressionStatementOrDeclarationAfterModifiers(;, ;, null, null, null, null)
                  looksLikeLocalFunction(1.2E_0)
                  parseExpressionStatement(;)
                    parseExpression(;)
                      parsePrecedenceExpression(;, 1, true, ConstantPatternContext.none)
                        parseUnaryExpression(;, true, ConstantPatternContext.none)
                          parsePrimary(;, expression, ConstantPatternContext.none)
                            parseLiteralDoubleWithSeparators(;)
                              listener: handleLiteralDoubleWithSeparators(1.2E_0)
                    ensureSemicolon(1.2E_0)
                    listener: handleExpressionStatement(1.2E_0, ;)
          notEofOrType(CLOSE_CURLY_BRACKET, 1.2e-_0)
          parseStatement(;)
            parseStatementX(;)
              parseExpressionStatementOrDeclaration(;, null)
                parseExpressionStatementOrDeclarationAfterModifiers(;, ;, null, null, null, null)
                  looksLikeLocalFunction(1.2e-_0)
                  parseExpressionStatement(;)
                    parseExpression(;)
                      parsePrecedenceExpression(;, 1, true, ConstantPatternContext.none)
                        parseUnaryExpression(;, true, ConstantPatternContext.none)
                          parsePrimary(;, expression, ConstantPatternContext.none)
                            parseLiteralDoubleWithSeparators(;)
                              listener: handleLiteralDoubleWithSeparators(1.2e-_0)
                    ensureSemicolon(1.2e-_0)
                    listener: handleExpressionStatement(1.2e-_0, ;)
          notEofOrType(CLOSE_CURLY_BRACKET, 1.2E-_0)
          parseStatement(;)
            parseStatementX(;)
              parseExpressionStatementOrDeclaration(;, null)
                parseExpressionStatementOrDeclarationAfterModifiers(;, ;, null, null, null, null)
                  looksLikeLocalFunction(1.2E-_0)
                  parseExpressionStatement(;)
                    parseExpression(;)
                      parsePrecedenceExpression(;, 1, true, ConstantPatternContext.none)
                        parseUnaryExpression(;, true, ConstantPatternContext.none)
                          parsePrimary(;, expression, ConstantPatternContext.none)
                            parseLiteralDoubleWithSeparators(;)
                              listener: handleLiteralDoubleWithSeparators(1.2E-_0)
                    ensureSemicolon(1.2E-_0)
                    listener: handleExpressionStatement(1.2E-_0, ;)
          notEofOrType(CLOSE_CURLY_BRACKET, 1.2e-1_)
          parseStatement(;)
            parseStatementX(;)
              parseExpressionStatementOrDeclaration(;, null)
                parseExpressionStatementOrDeclarationAfterModifiers(;, ;, null, null, null, null)
                  looksLikeLocalFunction(1.2e-1_)
                  parseExpressionStatement(;)
                    parseExpression(;)
                      parsePrecedenceExpression(;, 1, true, ConstantPatternContext.none)
                        parseUnaryExpression(;, true, ConstantPatternContext.none)
                          parsePrimary(;, expression, ConstantPatternContext.none)
                            parseLiteralDoubleWithSeparators(;)
                              listener: handleLiteralDoubleWithSeparators(1.2e-1_)
                    ensureSemicolon(1.2e-1_)
                    listener: handleExpressionStatement(1.2e-1_, ;)
          notEofOrType(CLOSE_CURLY_BRACKET, 1.2E-1_)
          parseStatement(;)
            parseStatementX(;)
              parseExpressionStatementOrDeclaration(;, null)
                parseExpressionStatementOrDeclarationAfterModifiers(;, ;, null, null, null, null)
                  looksLikeLocalFunction(1.2E-1_)
                  parseExpressionStatement(;)
                    parseExpression(;)
                      parsePrecedenceExpression(;, 1, true, ConstantPatternContext.none)
                        parseUnaryExpression(;, true, ConstantPatternContext.none)
                          parsePrimary(;, expression, ConstantPatternContext.none)
                            parseLiteralDoubleWithSeparators(;)
                              listener: handleLiteralDoubleWithSeparators(1.2E-1_)
                    ensureSemicolon(1.2E-1_)
                    listener: handleExpressionStatement(1.2E-1_, ;)
          notEofOrType(CLOSE_CURLY_BRACKET, })
          listener: endBlockFunctionBody(16, {, })
        listener: endTopLevelMethod(void, null, })
  listener: endTopLevelDeclaration(})
  reportAllErrorTokens(UnterminatedToken(UnexpectedSeparatorInNumber))
    listener: handleErrorToken(UnterminatedToken(UnexpectedSeparatorInNumber))
    listener: handleRecoverableError(UnexpectedSeparatorInNumber, UnterminatedToken(UnexpectedSeparatorInNumber), UnterminatedToken(UnexpectedSeparatorInNumber))
    listener: handleErrorToken(UnterminatedToken(MissingExponent))
    listener: handleRecoverableError(MissingExponent, UnterminatedToken(MissingExponent), UnterminatedToken(MissingExponent))
    listener: handleErrorToken(UnterminatedToken(UnexpectedSeparatorInNumber))
    listener: handleRecoverableError(UnexpectedSeparatorInNumber, UnterminatedToken(UnexpectedSeparatorInNumber), UnterminatedToken(UnexpectedSeparatorInNumber))
    listener: handleErrorToken(UnterminatedToken(MissingExponent))
    listener: handleRecoverableError(MissingExponent, UnterminatedToken(MissingExponent), UnterminatedToken(MissingExponent))
    listener: handleErrorToken(UnterminatedToken(UnexpectedSeparatorInNumber))
    listener: handleRecoverableError(UnexpectedSeparatorInNumber, UnterminatedToken(UnexpectedSeparatorInNumber), UnterminatedToken(UnexpectedSeparatorInNumber))
    listener: handleErrorToken(UnterminatedToken(UnexpectedSeparatorInNumber))
    listener: handleRecoverableError(UnexpectedSeparatorInNumber, UnterminatedToken(UnexpectedSeparatorInNumber), UnterminatedToken(UnexpectedSeparatorInNumber))
    listener: handleErrorToken(UnterminatedToken(UnexpectedSeparatorInNumber))
    listener: handleRecoverableError(UnexpectedSeparatorInNumber, UnterminatedToken(UnexpectedSeparatorInNumber), UnterminatedToken(UnexpectedSeparatorInNumber))
    listener: handleErrorToken(UnterminatedToken(ExpectedHexDigit))
    listener: handleRecoverableError(ExpectedHexDigit, UnterminatedToken(ExpectedHexDigit), UnterminatedToken(ExpectedHexDigit))
    listener: handleErrorToken(UnterminatedToken(UnexpectedSeparatorInNumber))
    listener: handleRecoverableError(UnexpectedSeparatorInNumber, UnterminatedToken(UnexpectedSeparatorInNumber), UnterminatedToken(UnexpectedSeparatorInNumber))
    listener: handleErrorToken(UnterminatedToken(UnexpectedSeparatorInNumber))
    listener: handleRecoverableError(UnexpectedSeparatorInNumber, UnterminatedToken(UnexpectedSeparatorInNumber), UnterminatedToken(UnexpectedSeparatorInNumber))
    listener: handleErrorToken(UnterminatedToken(UnexpectedSeparatorInNumber))
    listener: handleRecoverableError(UnexpectedSeparatorInNumber, UnterminatedToken(UnexpectedSeparatorInNumber), UnterminatedToken(UnexpectedSeparatorInNumber))
    listener: handleErrorToken(UnterminatedToken(MissingExponent))
    listener: handleRecoverableError(MissingExponent, UnterminatedToken(MissingExponent), UnterminatedToken(MissingExponent))
    listener: handleErrorToken(UnterminatedToken(UnexpectedSeparatorInNumber))
    listener: handleRecoverableError(UnexpectedSeparatorInNumber, UnterminatedToken(UnexpectedSeparatorInNumber), UnterminatedToken(UnexpectedSeparatorInNumber))
    listener: handleErrorToken(UnterminatedToken(MissingExponent))
    listener: handleRecoverableError(MissingExponent, UnterminatedToken(MissingExponent), UnterminatedToken(MissingExponent))
    listener: handleErrorToken(UnterminatedToken(UnexpectedSeparatorInNumber))
    listener: handleRecoverableError(UnexpectedSeparatorInNumber, UnterminatedToken(UnexpectedSeparatorInNumber), UnterminatedToken(UnexpectedSeparatorInNumber))
    listener: handleErrorToken(UnterminatedToken(MissingExponent))
    listener: handleRecoverableError(MissingExponent, UnterminatedToken(MissingExponent), UnterminatedToken(MissingExponent))
    listener: handleErrorToken(UnterminatedToken(UnexpectedSeparatorInNumber))
    listener: handleRecoverableError(UnexpectedSeparatorInNumber, UnterminatedToken(UnexpectedSeparatorInNumber), UnterminatedToken(UnexpectedSeparatorInNumber))
    listener: handleErrorToken(UnterminatedToken(MissingExponent))
    listener: handleRecoverableError(MissingExponent, UnterminatedToken(MissingExponent), UnterminatedToken(MissingExponent))
    listener: handleErrorToken(UnterminatedToken(UnexpectedSeparatorInNumber))
    listener: handleRecoverableError(UnexpectedSeparatorInNumber, UnterminatedToken(UnexpectedSeparatorInNumber), UnterminatedToken(UnexpectedSeparatorInNumber))
    listener: handleErrorToken(UnterminatedToken(MissingExponent))
    listener: handleRecoverableError(MissingExponent, UnterminatedToken(MissingExponent), UnterminatedToken(MissingExponent))
    listener: handleErrorToken(UnterminatedToken(UnexpectedSeparatorInNumber))
    listener: handleRecoverableError(UnexpectedSeparatorInNumber, UnterminatedToken(UnexpectedSeparatorInNumber), UnterminatedToken(UnexpectedSeparatorInNumber))
    listener: handleErrorToken(UnterminatedToken(MissingExponent))
    listener: handleRecoverableError(MissingExponent, UnterminatedToken(MissingExponent), UnterminatedToken(MissingExponent))
    listener: handleErrorToken(UnterminatedToken(UnexpectedSeparatorInNumber))
    listener: handleRecoverableError(UnexpectedSeparatorInNumber, UnterminatedToken(UnexpectedSeparatorInNumber), UnterminatedToken(UnexpectedSeparatorInNumber))
    listener: handleErrorToken(UnterminatedToken(UnexpectedSeparatorInNumber))
    listener: handleRecoverableError(UnexpectedSeparatorInNumber, UnterminatedToken(UnexpectedSeparatorInNumber), UnterminatedToken(UnexpectedSeparatorInNumber))
  listener: endCompilationUnit(1, )
