parseUnit(main)
  skipErrorTokens(main)
  listener: beginCompilationUnit(main)
  syntheticPreviousToken(main)
  parseTopLevelDeclarationImpl(, Instance of 'DirectiveContext')
    parseMetadataStar()
      listener: beginMetadataStar(main)
      listener: endMetadataStar(0)
    parseTopLevelMemberImpl()
      listener: beginTopLevelMember(main)
      isReservedKeyword(()
      parseTopLevelMethod(, null, , Instance of 'NoType', null, main, false)
        listener: beginTopLevelMethod(, null)
        listener: handleNoType()
        ensureIdentifierPotentiallyRecovered(, topLevelFunctionDeclaration, false)
          listener: handleIdentifier(main, topLevelFunctionDeclaration)
        parseMethodTypeVar(main)
          listener: handleNoTypeVariables(()
        parseGetterOrFormalParameters(main, main, false, MemberKind.TopLevelMethod)
          parseFormalParameters(main, 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(}, switch)
          parseStatement({)
            parseStatementX({)
              parseSwitchStatement({)
                listener: beginSwitchStatement(switch)
                ensureParenthesizedCondition(switch)
                  parseExpressionInParenthesisRest(()
                    parseExpression(()
                      parsePrecedenceExpression((, 1, true)
                        parseUnaryExpression((, true)
                          parsePrimary((, expression)
                            parseSendOrFunctionLiteral((, expression)
                              parseSend((, expression)
                                isNextIdentifier(()
                                ensureIdentifier((, expression)
                                  listener: handleIdentifier(a, expression)
                                listener: handleNoTypeArguments())
                                parseArgumentsOpt(a)
                                  listener: handleNoArguments())
                                listener: handleSend(a, ))
                    ensureCloseParen(a, ()
                  listener: handleParenthesizedCondition(()
                parseSwitchBlock())
                  ensureBlock(), null, switch statement)
                  listener: beginSwitchBlock({)
                  notEofOrValue(}, case)
                  peekPastLabels(case)
                  listener: beginCaseExpression(case)
                  parseExpression(case)
                    parsePrecedenceExpression(case, 1, true)
                      parseUnaryExpression(case, true)
                        parsePrimary(case, expression)
                          parseSendOrFunctionLiteral(case, expression)
                            parseSend(case, expression)
                              isNextIdentifier(case)
                              ensureIdentifier(case, expression)
                                listener: handleIdentifier(x, expression)
                              listener: handleNoTypeArguments(?)
                              parseArgumentsOpt(x)
                                listener: handleNoArguments(?)
                              listener: handleSend(x, ?)
                      canParseAsConditional(?)
                        parseExpressionWithoutCascade(?)
                          parsePrecedenceExpression(?, 1, false)
                            parseUnaryExpression(?, false)
                              parsePrimary(?, expression)
                                parseLiteralListSuffix(?, null)
                                  parseExpression([)
                                    parsePrecedenceExpression([, 1, true)
                                      parseUnaryExpression([, true)
                                        parsePrimary([, expression)
                                          parseLiteralInt([)
                        parseExpressionWithoutCascade(:)
                          parsePrecedenceExpression(:, 1, false)
                            parseUnaryExpression(:, false)
                              parsePrimary(:, expression)
                                parseLiteralSetOrMapSuffix(:, null)
                                  parseExpression({)
                                    parsePrecedenceExpression({, 1, true)
                                      parseUnaryExpression({, true)
                                        parsePrimary({, expression)
                                          parseLiteralSetOrMapSuffix({, null)
                                            parseExpression({)
                                              parsePrecedenceExpression({, 1, true)
                                                parseUnaryExpression({, true)
                                                  parsePrimary({, expression)
                                                    parseLiteralSetOrMapSuffix({, null)
                                                      parseExpression({)
                                                        parsePrecedenceExpression({, 1, true)
                                                          parseUnaryExpression({, true)
                                                            parsePrimary({, expression)
                                                              parseLiteralInt({)
                      parseConditionalExpressionRest(x)
                        listener: beginConditionalExpression(?)
                        parseExpressionWithoutCascade(?)
                          parsePrecedenceExpression(?, 1, false)
                            parseUnaryExpression(?, false)
                              parsePrimary(?, expression)
                                listener: handleNoTypeArguments([)
                                parseLiteralListSuffix(?, null)
                                  parseExpression([)
                                    parsePrecedenceExpression([, 1, true)
                                      parseUnaryExpression([, true)
                                        parsePrimary([, expression)
                                          parseLiteralInt([)
                                            listener: handleLiteralInt(4)
                                  listener: handleLiteralList(1, [, null, ])
                        ensureColon(])
                        listener: handleConditionalExpressionColon()
                        parseExpressionWithoutCascade(:)
                          parsePrecedenceExpression(:, 1, false)
                            parseUnaryExpression(:, false)
                              parsePrimary(:, expression)
                                listener: handleNoTypeArguments({)
                                parseLiteralSetOrMapSuffix(:, null)
                                  parseExpression({)
                                    parsePrecedenceExpression({, 1, true)
                                      parseUnaryExpression({, true)
                                        parsePrimary({, expression)
                                          listener: handleNoTypeArguments({)
                                          parseLiteralSetOrMapSuffix({, null)
                                            parseExpression({)
                                              parsePrecedenceExpression({, 1, true)
                                                parseUnaryExpression({, true)
                                                  parsePrimary({, expression)
                                                    listener: handleNoTypeArguments({)
                                                    parseLiteralSetOrMapSuffix({, null)
                                                      parseExpression({)
                                                        parsePrecedenceExpression({, 1, true)
                                                          parseUnaryExpression({, true)
                                                            parsePrimary({, expression)
                                                              parseLiteralInt({)
                                                                listener: handleLiteralInt(2)
                                                      listener: handleLiteralSetOrMap(1, {, null, }, true)
                                            listener: handleLiteralSetOrMap(1, {, null, }, true)
                                  listener: handleLiteralSetOrMap(1, {, null, }, true)
                        listener: endConditionalExpression(?, :)
                  ensureColon(})
                    rewriteAndRecover(}, Message[ExpectedButGot, Expected ':' before this., null, {string: :}], :)
                      reportRecoverableError(;, Message[ExpectedButGot, Expected ':' before this., null, {string: :}])
                        listener: handleRecoverableError(Message[ExpectedButGot, Expected ':' before this., null, {string: :}], ;, ;)
                      rewriter()
                  listener: endCaseExpression(:)
                  listener: handleCaseMatch(case, :)
                  peekPastLabels(;)
                  parseStatementsInSwitchCase(:, ;, case, 0, 1, null, null)
                    listener: beginSwitchCase(0, 1, case)
                    parseStatement(:)
                      parseStatementX(:)
                        parseEmptyStatement(:)
                          listener: handleEmptyStatement(;)
                    peekPastLabels(})
                    listener: endSwitchCase(0, 1, null, null, 1, case, })
                  notEofOrValue(}, })
                  listener: endSwitchBlock(1, {, })
                listener: endSwitchStatement(switch, })
          notEofOrValue(}, })
          listener: endBlockFunctionBody(1, {, })
        listener: endTopLevelMethod(main, null, })
  listener: endTopLevelDeclaration()
  reportAllErrorTokens(main)
  listener: endCompilationUnit(1, )
