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[Template(ExpectedIdentifier), Expected an identifier, but got ';'., Try inserting an identifier before ';'., {lexeme: ;}], ;, ;)
                              rewriter()
                              listener: handleIdentifier(, expressionContinuation)
                            listener: handleNoTypeArguments(;)
                            parseArgumentsOpt()
                              listener: handleNoArguments(;)
                            listener: handleSend(, )
                        listener: handleDotAccess(., , false)
                    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, )
