parseUnit(void)
  skipErrorTokens(void)
  listener: beginCompilationUnit(void)
  syntheticPreviousToken(void)
  parseTopLevelDeclarationImpl(, DirectiveContext(DirectiveState.Unknown))
    parseMetadataStar()
      listener: beginMetadataStar(void)
      listener: endMetadataStar(0)
    parseTopLevelMemberImpl()
      listener: beginTopLevelMember(void)
      parseTopLevelMethod(, null, null, , VoidType(), null, f, false)
        listener: beginTopLevelMethod(, null, null)
        listener: handleVoidKeyword(void)
        ensureIdentifierPotentiallyRecovered(void, topLevelFunctionDeclaration, false)
          listener: handleIdentifier(f, topLevelFunctionDeclaration)
        parseMethodTypeVar(f)
          listener: handleNoTypeVariables(()
        parseGetterOrFormalParameters(f, f, false, MemberKind.TopLevelMethod)
          parseFormalParameters(f, MemberKind.TopLevelMethod)
            parseFormalParametersRest((, MemberKind.TopLevelMethod)
              listener: beginFormalParameters((, MemberKind.TopLevelMethod)
              parseFormalParameter((, FormalParameterKind.requiredPositional, MemberKind.TopLevelMethod)
                parseMetadataStar(()
                  listener: beginMetadataStar(x)
                  listener: endMetadataStar(0)
                listener: beginFormalParameter(x, MemberKind.TopLevelMethod, null, null, null)
                listener: handleNoType(()
                ensureIdentifier((, formalParameterDeclaration)
                  listener: handleIdentifier(x, formalParameterDeclaration)
                listener: handleFormalParameterWithoutValue())
                listener: endFormalParameter(null, null, null, x, null, null, FormalParameterKind.requiredPositional, MemberKind.TopLevelMethod)
              listener: endFormalParameters(1, (, ), MemberKind.TopLevelMethod)
        parseAsyncModifierOpt())
          listener: handleAsyncModifier(null, null)
          inPlainSync()
        parseFunctionBody(), false, false)
          listener: beginBlockFunctionBody({)
          notEofOrValue(}, switch)
          parseStatement({)
            parseStatementX({)
              parseSwitchStatement({)
                listener: beginSwitchStatement(switch)
                ensureParenthesizedCondition(switch, allowCase: false)
                  parseExpressionInParenthesisRest((, allowCase: false)
                    parseExpression(()
                      looksLikeOuterPatternEquals(()
                        skipOuterPattern(()
                          skipObjectPatternRest(x)
                      parsePrecedenceExpression((, 1, true, ConstantPatternContext.none)
                        parseUnaryExpression((, true, ConstantPatternContext.none)
                          parsePrimary((, expression, ConstantPatternContext.none)
                            parseSendOrFunctionLiteral((, expression, ConstantPatternContext.none)
                              parseSend((, expression, ConstantPatternContext.none)
                                isNextIdentifier(()
                                ensureIdentifier((, expression)
                                  listener: handleIdentifier(x, expression)
                                listener: handleNoTypeArguments())
                                parseArgumentsOpt(x)
                                  listener: handleNoArguments())
                                listener: handleSend(x, ))
                    ensureCloseParen(x, ()
                    listener: handleParenthesizedCondition((, null, null)
                parseSwitchBlock())
                  ensureBlock(), BlockKind(switch statement))
                  listener: beginSwitchBlock({)
                  notEofOrValue(}, case)
                  peekPastLabels(case)
                  listener: beginCaseExpression(case)
                  parsePattern(case, PatternContext.matching, precedence: 1)
                    listener: beginPattern(case)
                    parsePrimaryPattern(case, PatternContext.matching)
                      listener: handleNoTypeArguments([)
                      parseListPatternSuffix(case, PatternContext.matching)
                        parsePattern(..., PatternContext.matching, precedence: 1)
                          listener: beginPattern(...)
                          parsePrimaryPattern(..., PatternContext.matching)
                            parsePrecedenceExpression(==, 9, false, ConstantPatternContext.none)
                              parseUnaryExpression(==, false, ConstantPatternContext.none)
                                parsePrimary(==, expression, ConstantPatternContext.none)
                                  parseLiteralNull(==)
                                    listener: handleLiteralNull(null)
                            listener: handleRelationalPattern(==)
                          listener: endPattern(null)
                        listener: handleRestPattern(..., true)
                        listener: handleListPattern(1, [, ])
                    listener: endPattern(])
                  listener: handleSwitchCaseNoWhenClause(])
                  ensureColon(])
                  listener: endCaseExpression(case, null, :)
                  peekPastLabels(case)
                  listener: beginCaseExpression(case)
                  parsePattern(case, PatternContext.matching, precedence: 1)
                    listener: beginPattern(case)
                    parsePrimaryPattern(case, PatternContext.matching)
                      listener: handleNoTypeArguments([)
                      parseListPatternSuffix(case, PatternContext.matching)
                        parsePattern(..., PatternContext.matching, precedence: 1)
                          listener: beginPattern(...)
                          parsePrimaryPattern(..., PatternContext.matching)
                            parsePrecedenceExpression(!=, 9, false, ConstantPatternContext.none)
                              parseUnaryExpression(!=, false, ConstantPatternContext.none)
                                parsePrimary(!=, expression, ConstantPatternContext.none)
                                  parseLiteralNull(!=)
                                    listener: handleLiteralNull(null)
                            listener: handleRelationalPattern(!=)
                          listener: endPattern(null)
                        listener: handleRestPattern(..., true)
                        listener: handleListPattern(1, [, ])
                    listener: endPattern(])
                  listener: handleSwitchCaseNoWhenClause(])
                  ensureColon(])
                  listener: endCaseExpression(case, null, :)
                  peekPastLabels(case)
                  listener: beginCaseExpression(case)
                  parsePattern(case, PatternContext.matching, precedence: 1)
                    listener: beginPattern(case)
                    parsePrimaryPattern(case, PatternContext.matching)
                      listener: handleNoTypeArguments([)
                      parseListPatternSuffix(case, PatternContext.matching)
                        parsePattern(..., PatternContext.matching, precedence: 1)
                          listener: beginPattern(...)
                          parsePrimaryPattern(..., PatternContext.matching)
                            parsePrecedenceExpression(<, 9, false, ConstantPatternContext.none)
                              parseUnaryExpression(<, false, ConstantPatternContext.none)
                                parsePrimary(<, expression, ConstantPatternContext.none)
                                  parseLiteralInt(<)
                                    listener: handleLiteralInt(0)
                            listener: handleRelationalPattern(<)
                          listener: endPattern(0)
                        listener: handleRestPattern(..., true)
                        listener: handleListPattern(1, [, ])
                    listener: endPattern(])
                  listener: handleSwitchCaseNoWhenClause(])
                  ensureColon(])
                  listener: endCaseExpression(case, null, :)
                  peekPastLabels(case)
                  listener: beginCaseExpression(case)
                  parsePattern(case, PatternContext.matching, precedence: 1)
                    listener: beginPattern(case)
                    parsePrimaryPattern(case, PatternContext.matching)
                      listener: handleNoTypeArguments([)
                      parseListPatternSuffix(case, PatternContext.matching)
                        parsePattern(..., PatternContext.matching, precedence: 1)
                          listener: beginPattern(...)
                          parsePrimaryPattern(..., PatternContext.matching)
                            parsePrecedenceExpression(>, 9, false, ConstantPatternContext.none)
                              parseUnaryExpression(>, false, ConstantPatternContext.none)
                                parsePrimary(>, expression, ConstantPatternContext.none)
                                  parseLiteralInt(>)
                                    listener: handleLiteralInt(0)
                            listener: handleRelationalPattern(>)
                          listener: endPattern(0)
                        listener: handleRestPattern(..., true)
                        listener: handleListPattern(1, [, ])
                    listener: endPattern(])
                  listener: handleSwitchCaseNoWhenClause(])
                  ensureColon(])
                  listener: endCaseExpression(case, null, :)
                  peekPastLabels(case)
                  listener: beginCaseExpression(case)
                  parsePattern(case, PatternContext.matching, precedence: 1)
                    listener: beginPattern(case)
                    parsePrimaryPattern(case, PatternContext.matching)
                      listener: handleNoTypeArguments([)
                      parseListPatternSuffix(case, PatternContext.matching)
                        parsePattern(..., PatternContext.matching, precedence: 1)
                          listener: beginPattern(...)
                          parsePrimaryPattern(..., PatternContext.matching)
                            parsePrecedenceExpression(<=, 9, false, ConstantPatternContext.none)
                              parseUnaryExpression(<=, false, ConstantPatternContext.none)
                                parsePrimary(<=, expression, ConstantPatternContext.none)
                                  parseLiteralInt(<=)
                                    listener: handleLiteralInt(0)
                            listener: handleRelationalPattern(<=)
                          listener: endPattern(0)
                        listener: handleRestPattern(..., true)
                        listener: handleListPattern(1, [, ])
                    listener: endPattern(])
                  listener: handleSwitchCaseNoWhenClause(])
                  ensureColon(])
                  listener: endCaseExpression(case, null, :)
                  peekPastLabels(case)
                  listener: beginCaseExpression(case)
                  parsePattern(case, PatternContext.matching, precedence: 1)
                    listener: beginPattern(case)
                    parsePrimaryPattern(case, PatternContext.matching)
                      listener: handleNoTypeArguments([)
                      parseListPatternSuffix(case, PatternContext.matching)
                        parsePattern(..., PatternContext.matching, precedence: 1)
                          listener: beginPattern(...)
                          parsePrimaryPattern(..., PatternContext.matching)
                            parsePrecedenceExpression(>=, 9, false, ConstantPatternContext.none)
                              parseUnaryExpression(>=, false, ConstantPatternContext.none)
                                parsePrimary(>=, expression, ConstantPatternContext.none)
                                  parseLiteralInt(>=)
                                    listener: handleLiteralInt(0)
                            listener: handleRelationalPattern(>=)
                          listener: endPattern(0)
                        listener: handleRestPattern(..., true)
                        listener: handleListPattern(1, [, ])
                    listener: endPattern(])
                  listener: handleSwitchCaseNoWhenClause(])
                  ensureColon(])
                  listener: endCaseExpression(case, null, :)
                  peekPastLabels(case)
                  listener: beginCaseExpression(case)
                  parsePattern(case, PatternContext.matching, precedence: 1)
                    listener: beginPattern(case)
                    parsePrimaryPattern(case, PatternContext.matching)
                      listener: handleNoTypeArguments([)
                      parseListPatternSuffix(case, PatternContext.matching)
                        parsePattern(..., PatternContext.matching, precedence: 1)
                          listener: beginPattern(...)
                          parsePrimaryPattern(..., PatternContext.matching)
                            listener: beginConstantPattern(null)
                            parsePrecedenceExpression(..., 7, false, ConstantPatternContext.implicit)
                              parseUnaryExpression(..., false, ConstantPatternContext.implicit)
                                parsePrimary(..., expression, ConstantPatternContext.implicit)
                                  parseLiteralInt(...)
                                    listener: handleLiteralInt(0)
                            listener: endConstantPattern(null)
                          listener: endPattern(0)
                        listener: handleRestPattern(..., true)
                        listener: handleListPattern(1, [, ])
                    listener: endPattern(])
                  listener: handleSwitchCaseNoWhenClause(])
                  ensureColon(])
                  listener: endCaseExpression(case, null, :)
                  peekPastLabels(case)
                  listener: beginCaseExpression(case)
                  parsePattern(case, PatternContext.matching, precedence: 1)
                    listener: beginPattern(case)
                    parsePrimaryPattern(case, PatternContext.matching)
                      listener: handleNoTypeArguments([)
                      parseListPatternSuffix(case, PatternContext.matching)
                        parsePattern(..., PatternContext.matching, precedence: 1)
                          listener: beginPattern(...)
                          parsePrimaryPattern(..., PatternContext.matching)
                            listener: beginConstantPattern(null)
                            parsePrecedenceExpression(..., 7, false, ConstantPatternContext.implicit)
                              parseUnaryExpression(..., false, ConstantPatternContext.implicit)
                                parsePrimary(..., expression, ConstantPatternContext.implicit)
                                  parseLiteralDouble(...)
                                    listener: handleLiteralDouble(0.0)
                            listener: endConstantPattern(null)
                          listener: endPattern(0.0)
                        listener: handleRestPattern(..., true)
                        listener: handleListPattern(1, [, ])
                    listener: endPattern(])
                  listener: handleSwitchCaseNoWhenClause(])
                  ensureColon(])
                  listener: endCaseExpression(case, null, :)
                  peekPastLabels(case)
                  listener: beginCaseExpression(case)
                  parsePattern(case, PatternContext.matching, precedence: 1)
                    listener: beginPattern(case)
                    parsePrimaryPattern(case, PatternContext.matching)
                      listener: handleNoTypeArguments([)
                      parseListPatternSuffix(case, PatternContext.matching)
                        parsePattern(..., PatternContext.matching, precedence: 1)
                          listener: beginPattern(...)
                          parsePrimaryPattern(..., PatternContext.matching)
                            listener: beginConstantPattern(null)
                            parsePrecedenceExpression(..., 7, false, ConstantPatternContext.implicit)
                              parseUnaryExpression(..., false, ConstantPatternContext.implicit)
                                parsePrimary(..., expression, ConstantPatternContext.implicit)
                                  parseLiteralInt(...)
                                    listener: handleLiteralInt(0x0)
                            listener: endConstantPattern(null)
                          listener: endPattern(0x0)
                        listener: handleRestPattern(..., true)
                        listener: handleListPattern(1, [, ])
                    listener: endPattern(])
                  listener: handleSwitchCaseNoWhenClause(])
                  ensureColon(])
                  listener: endCaseExpression(case, null, :)
                  peekPastLabels(case)
                  listener: beginCaseExpression(case)
                  parsePattern(case, PatternContext.matching, precedence: 1)
                    listener: beginPattern(case)
                    parsePrimaryPattern(case, PatternContext.matching)
                      listener: handleNoTypeArguments([)
                      parseListPatternSuffix(case, PatternContext.matching)
                        parsePattern(..., PatternContext.matching, precedence: 1)
                          listener: beginPattern(...)
                          parsePrimaryPattern(..., PatternContext.matching)
                            listener: beginConstantPattern(null)
                            parsePrecedenceExpression(..., 7, false, ConstantPatternContext.implicit)
                              parseUnaryExpression(..., false, ConstantPatternContext.implicit)
                                parsePrimary(..., expression, ConstantPatternContext.implicit)
                                  parseLiteralNull(...)
                                    listener: handleLiteralNull(null)
                            listener: endConstantPattern(null)
                          listener: endPattern(null)
                        listener: handleRestPattern(..., true)
                        listener: handleListPattern(1, [, ])
                    listener: endPattern(])
                  listener: handleSwitchCaseNoWhenClause(])
                  ensureColon(])
                  listener: endCaseExpression(case, null, :)
                  peekPastLabels(case)
                  listener: beginCaseExpression(case)
                  parsePattern(case, PatternContext.matching, precedence: 1)
                    listener: beginPattern(case)
                    parsePrimaryPattern(case, PatternContext.matching)
                      listener: handleNoTypeArguments([)
                      parseListPatternSuffix(case, PatternContext.matching)
                        parsePattern(..., PatternContext.matching, precedence: 1)
                          listener: beginPattern(...)
                          parsePrimaryPattern(..., PatternContext.matching)
                            listener: beginConstantPattern(null)
                            parsePrecedenceExpression(..., 7, false, ConstantPatternContext.implicit)
                              parseUnaryExpression(..., false, ConstantPatternContext.implicit)
                                parsePrimary(..., expression, ConstantPatternContext.implicit)
                                  parseLiteralBool(...)
                                    listener: handleLiteralBool(false)
                            listener: endConstantPattern(null)
                          listener: endPattern(false)
                        listener: handleRestPattern(..., true)
                        listener: handleListPattern(1, [, ])
                    listener: endPattern(])
                  listener: handleSwitchCaseNoWhenClause(])
                  ensureColon(])
                  listener: endCaseExpression(case, null, :)
                  peekPastLabels(case)
                  listener: beginCaseExpression(case)
                  parsePattern(case, PatternContext.matching, precedence: 1)
                    listener: beginPattern(case)
                    parsePrimaryPattern(case, PatternContext.matching)
                      listener: handleNoTypeArguments([)
                      parseListPatternSuffix(case, PatternContext.matching)
                        parsePattern(..., PatternContext.matching, precedence: 1)
                          listener: beginPattern(...)
                          parsePrimaryPattern(..., PatternContext.matching)
                            listener: beginConstantPattern(null)
                            parsePrecedenceExpression(..., 7, false, ConstantPatternContext.implicit)
                              parseUnaryExpression(..., false, ConstantPatternContext.implicit)
                                parsePrimary(..., expression, ConstantPatternContext.implicit)
                                  parseLiteralBool(...)
                                    listener: handleLiteralBool(true)
                            listener: endConstantPattern(null)
                          listener: endPattern(true)
                        listener: handleRestPattern(..., true)
                        listener: handleListPattern(1, [, ])
                    listener: endPattern(])
                  listener: handleSwitchCaseNoWhenClause(])
                  ensureColon(])
                  listener: endCaseExpression(case, null, :)
                  peekPastLabels(case)
                  listener: beginCaseExpression(case)
                  parsePattern(case, PatternContext.matching, precedence: 1)
                    listener: beginPattern(case)
                    parsePrimaryPattern(case, PatternContext.matching)
                      listener: handleNoTypeArguments([)
                      parseListPatternSuffix(case, PatternContext.matching)
                        parsePattern(..., PatternContext.matching, precedence: 1)
                          listener: beginPattern(...)
                          parsePrimaryPattern(..., PatternContext.matching)
                            listener: beginConstantPattern(null)
                            parsePrecedenceExpression(..., 7, false, ConstantPatternContext.implicit)
                              parseUnaryExpression(..., false, ConstantPatternContext.implicit)
                                parsePrimary(..., expression, ConstantPatternContext.implicit)
                                  parseLiteralString(...)
                                    parseSingleLiteralString(...)
                                      listener: beginLiteralString('foo')
                                      listener: endLiteralString(0, ])
                            listener: endConstantPattern(null)
                          listener: endPattern('foo')
                        listener: handleRestPattern(..., true)
                        listener: handleListPattern(1, [, ])
                    listener: endPattern(])
                  listener: handleSwitchCaseNoWhenClause(])
                  ensureColon(])
                  listener: endCaseExpression(case, null, :)
                  peekPastLabels(case)
                  listener: beginCaseExpression(case)
                  parsePattern(case, PatternContext.matching, precedence: 1)
                    listener: beginPattern(case)
                    parsePrimaryPattern(case, PatternContext.matching)
                      listener: handleNoTypeArguments([)
                      parseListPatternSuffix(case, PatternContext.matching)
                        parsePattern(..., PatternContext.matching, precedence: 1)
                          listener: beginPattern(...)
                          parsePrimaryPattern(..., PatternContext.matching)
                            listener: beginConstantPattern(null)
                            parsePrecedenceExpression(..., 7, false, ConstantPatternContext.implicit)
                              parseUnaryExpression(..., false, ConstantPatternContext.implicit)
                                parsePrimary(..., expression, ConstantPatternContext.implicit)
                                  parseSendOrFunctionLiteral(..., expression, ConstantPatternContext.implicit)
                                    parseSend(..., expression, ConstantPatternContext.implicit)
                                      isNextIdentifier(...)
                                      ensureIdentifier(..., expression)
                                        listener: handleIdentifier(x, expression)
                                      listener: handleNoTypeArguments(])
                                      parseArgumentsOpt(x)
                                        listener: handleNoArguments(])
                                      listener: handleSend(x, ])
                            listener: endConstantPattern(null)
                          listener: endPattern(x)
                        listener: handleRestPattern(..., true)
                        listener: handleListPattern(1, [, ])
                    listener: endPattern(])
                  listener: handleSwitchCaseNoWhenClause(])
                  ensureColon(])
                  listener: endCaseExpression(case, null, :)
                  peekPastLabels(case)
                  listener: beginCaseExpression(case)
                  parsePattern(case, PatternContext.matching, precedence: 1)
                    listener: beginPattern(case)
                    parsePrimaryPattern(case, PatternContext.matching)
                      listener: handleNoTypeArguments([)
                      parseListPatternSuffix(case, PatternContext.matching)
                        parsePattern(..., PatternContext.matching, precedence: 1)
                          listener: beginPattern(...)
                          parsePrimaryPattern(..., PatternContext.matching)
                            listener: beginConstantPattern(const)
                            parsePrecedenceExpression(const, 7, false, ConstantPatternContext.explicit)
                              parseUnaryExpression(const, false, ConstantPatternContext.explicit)
                                parsePrimary(const, expression, ConstantPatternContext.explicit)
                                  parseSendOrFunctionLiteral(const, expression, ConstantPatternContext.explicit)
                                    looksLikeFunctionBody(])
                                    parseSend(const, expression, ConstantPatternContext.explicit)
                                      isNextIdentifier(const)
                                      ensureIdentifier(const, expression)
                                        listener: handleIdentifier(List, expression)
                                      listener: handleNoTypeArguments(()
                                      parseArgumentsOpt(List)
                                        parseArguments(List)
                                          parseArgumentsRest(()
                                            listener: beginArguments(()
                                            listener: endArguments(0, (, ))
                                      listener: handleSend(List, ])
                            listener: endConstantPattern(const)
                          listener: endPattern())
                        listener: handleRestPattern(..., true)
                        listener: handleListPattern(1, [, ])
                    listener: endPattern(])
                  listener: handleSwitchCaseNoWhenClause(])
                  ensureColon(])
                  listener: endCaseExpression(case, null, :)
                  peekPastLabels(case)
                  listener: beginCaseExpression(case)
                  parsePattern(case, PatternContext.matching, precedence: 1)
                    listener: beginPattern(case)
                    parsePrimaryPattern(case, PatternContext.matching)
                      listener: handleNoTypeArguments([)
                      parseListPatternSuffix(case, PatternContext.matching)
                        parsePattern(..., PatternContext.matching, precedence: 1)
                          listener: beginPattern(...)
                          parsePrimaryPattern(..., PatternContext.matching)
                            parseVariablePattern(..., PatternContext.matching, typeInfo: NoType())
                              listener: handleNoType(var)
                              listener: handleDeclaredVariablePattern(var, x, false)
                          listener: endPattern(x)
                        listener: handleRestPattern(..., true)
                        listener: handleListPattern(1, [, ])
                    listener: endPattern(])
                  listener: handleSwitchCaseNoWhenClause(])
                  ensureColon(])
                  listener: endCaseExpression(case, null, :)
                  peekPastLabels(case)
                  listener: beginCaseExpression(case)
                  parsePattern(case, PatternContext.matching, precedence: 1)
                    listener: beginPattern(case)
                    parsePrimaryPattern(case, PatternContext.matching)
                      listener: handleNoTypeArguments([)
                      parseListPatternSuffix(case, PatternContext.matching)
                        parsePattern(..., PatternContext.matching, precedence: 1)
                          listener: beginPattern(...)
                          parsePrimaryPattern(..., PatternContext.matching)
                            parseVariablePattern(..., PatternContext.matching, typeInfo: NoType())
                              listener: handleNoType(final)
                              listener: handleDeclaredVariablePattern(final, x, false)
                          listener: endPattern(x)
                        listener: handleRestPattern(..., true)
                        listener: handleListPattern(1, [, ])
                    listener: endPattern(])
                  listener: handleSwitchCaseNoWhenClause(])
                  ensureColon(])
                  listener: endCaseExpression(case, null, :)
                  peekPastLabels(case)
                  listener: beginCaseExpression(case)
                  parsePattern(case, PatternContext.matching, precedence: 1)
                    listener: beginPattern(case)
                    parsePrimaryPattern(case, PatternContext.matching)
                      listener: handleNoTypeArguments([)
                      parseListPatternSuffix(case, PatternContext.matching)
                        parsePattern(..., PatternContext.matching, precedence: 1)
                          listener: beginPattern(...)
                          parsePrimaryPattern(..., PatternContext.matching)
                            parseVariablePattern(..., PatternContext.matching, typeInfo: SimpleType())
                              listener: handleIdentifier(List, typeReference)
                              listener: handleNoTypeArguments(x)
                              listener: handleType(List, null)
                              listener: handleDeclaredVariablePattern(null, x, false)
                          listener: endPattern(x)
                        listener: handleRestPattern(..., true)
                        listener: handleListPattern(1, [, ])
                    listener: endPattern(])
                  listener: handleSwitchCaseNoWhenClause(])
                  ensureColon(])
                  listener: endCaseExpression(case, null, :)
                  peekPastLabels(case)
                  listener: beginCaseExpression(case)
                  parsePattern(case, PatternContext.matching, precedence: 1)
                    listener: beginPattern(case)
                    parsePrimaryPattern(case, PatternContext.matching)
                      listener: handleNoTypeArguments([)
                      parseListPatternSuffix(case, PatternContext.matching)
                        parsePattern(..., PatternContext.matching, precedence: 1)
                          listener: beginPattern(...)
                          parsePrimaryPattern(..., PatternContext.matching)
                            parseVariablePattern(..., PatternContext.matching, typeInfo: NoType())
                              listener: handleNoType(_)
                              listener: handleWildcardPattern(null, _)
                          listener: endPattern(_)
                        listener: handleRestPattern(..., true)
                        listener: handleListPattern(1, [, ])
                    listener: endPattern(])
                  listener: handleSwitchCaseNoWhenClause(])
                  ensureColon(])
                  listener: endCaseExpression(case, null, :)
                  peekPastLabels(case)
                  listener: beginCaseExpression(case)
                  parsePattern(case, PatternContext.matching, precedence: 1)
                    listener: beginPattern(case)
                    parsePrimaryPattern(case, PatternContext.matching)
                      listener: handleNoTypeArguments([)
                      parseListPatternSuffix(case, PatternContext.matching)
                        parsePattern(..., PatternContext.matching, precedence: 1)
                          listener: beginPattern(...)
                          parsePrimaryPattern(..., PatternContext.matching)
                            parseParenthesizedPatternOrRecordPattern(..., PatternContext.matching)
                              parsePattern((, PatternContext.matching, precedence: 1)
                                listener: beginPattern(()
                                parsePrimaryPattern((, PatternContext.matching)
                                  parseVariablePattern((, PatternContext.matching, typeInfo: NoType())
                                    listener: handleNoType(_)
                                    listener: handleWildcardPattern(null, _)
                                listener: endPattern(_)
                              ensureCloseParen(_, ()
                              listener: handleParenthesizedPattern(()
                          listener: endPattern())
                        listener: handleRestPattern(..., true)
                        listener: handleListPattern(1, [, ])
                    listener: endPattern(])
                  listener: handleSwitchCaseNoWhenClause(])
                  ensureColon(])
                  listener: endCaseExpression(case, null, :)
                  peekPastLabels(case)
                  listener: beginCaseExpression(case)
                  parsePattern(case, PatternContext.matching, precedence: 1)
                    listener: beginPattern(case)
                    parsePrimaryPattern(case, PatternContext.matching)
                      listener: handleNoTypeArguments([)
                      parseListPatternSuffix(case, PatternContext.matching)
                        parsePattern(..., PatternContext.matching, precedence: 1)
                          listener: beginPattern(...)
                          parsePrimaryPattern(..., PatternContext.matching)
                            listener: handleNoTypeArguments([)
                            parseListPatternSuffix(..., PatternContext.matching)
                              parsePattern([, PatternContext.matching, precedence: 1)
                                listener: beginPattern([)
                                parsePrimaryPattern([, PatternContext.matching)
                                  parseVariablePattern([, PatternContext.matching, typeInfo: NoType())
                                    listener: handleNoType(_)
                                    listener: handleWildcardPattern(null, _)
                                listener: endPattern(_)
                              listener: handleListPattern(1, [, ])
                          listener: endPattern(])
                        listener: handleRestPattern(..., true)
                        listener: handleListPattern(1, [, ])
                    listener: endPattern(])
                  listener: handleSwitchCaseNoWhenClause(])
                  ensureColon(])
                  listener: endCaseExpression(case, null, :)
                  peekPastLabels(case)
                  listener: beginCaseExpression(case)
                  parsePattern(case, PatternContext.matching, precedence: 1)
                    listener: beginPattern(case)
                    parsePrimaryPattern(case, PatternContext.matching)
                      listener: handleNoTypeArguments([)
                      parseListPatternSuffix(case, PatternContext.matching)
                        parsePattern(..., PatternContext.matching, precedence: 1)
                          listener: beginPattern(...)
                          parsePrimaryPattern(..., PatternContext.matching)
                            listener: handleNoTypeArguments([])
                            parseListPatternSuffix(..., PatternContext.matching)
                              rewriteSquareBrackets(...)
                                link([, ])
                                rewriter()
                              listener: handleListPattern(0, [, ])
                          listener: endPattern(])
                        listener: handleRestPattern(..., true)
                        listener: handleListPattern(1, [, ])
                    listener: endPattern(])
                  listener: handleSwitchCaseNoWhenClause(])
                  ensureColon(])
                  listener: endCaseExpression(case, null, :)
                  peekPastLabels(case)
                  listener: beginCaseExpression(case)
                  parsePattern(case, PatternContext.matching, precedence: 1)
                    listener: beginPattern(case)
                    parsePrimaryPattern(case, PatternContext.matching)
                      listener: handleNoTypeArguments([)
                      parseListPatternSuffix(case, PatternContext.matching)
                        parsePattern(..., PatternContext.matching, precedence: 1)
                          listener: beginPattern(...)
                          parsePrimaryPattern(..., PatternContext.matching)
                            listener: beginTypeArguments(<)
                            listener: handleIdentifier(int, typeReference)
                            listener: handleNoTypeArguments(>)
                            listener: handleType(int, null)
                            listener: endTypeArguments(1, <, >)
                            parseListPatternSuffix(>, PatternContext.matching)
                              rewriteSquareBrackets(>)
                                link([, ])
                                rewriter()
                              listener: handleListPattern(0, [, ])
                          listener: endPattern(])
                        listener: handleRestPattern(..., true)
                        listener: handleListPattern(1, [, ])
                    listener: endPattern(])
                  listener: handleSwitchCaseNoWhenClause(])
                  ensureColon(])
                  listener: endCaseExpression(case, null, :)
                  peekPastLabels(case)
                  listener: beginCaseExpression(case)
                  parsePattern(case, PatternContext.matching, precedence: 1)
                    listener: beginPattern(case)
                    parsePrimaryPattern(case, PatternContext.matching)
                      listener: handleNoTypeArguments([)
                      parseListPatternSuffix(case, PatternContext.matching)
                        parsePattern(..., PatternContext.matching, precedence: 1)
                          listener: beginPattern(...)
                          parsePrimaryPattern(..., PatternContext.matching)
                            listener: handleNoTypeArguments({)
                            parseMapPatternSuffix(..., PatternContext.matching)
                              listener: handleMapPattern(0, {, })
                          listener: endPattern(})
                        listener: handleRestPattern(..., true)
                        listener: handleListPattern(1, [, ])
                    listener: endPattern(])
                  listener: handleSwitchCaseNoWhenClause(])
                  ensureColon(])
                  listener: endCaseExpression(case, null, :)
                  peekPastLabels(case)
                  listener: beginCaseExpression(case)
                  parsePattern(case, PatternContext.matching, precedence: 1)
                    listener: beginPattern(case)
                    parsePrimaryPattern(case, PatternContext.matching)
                      listener: handleNoTypeArguments([)
                      parseListPatternSuffix(case, PatternContext.matching)
                        parsePattern(..., PatternContext.matching, precedence: 1)
                          listener: beginPattern(...)
                          parsePrimaryPattern(..., PatternContext.matching)
                            listener: handleNoTypeArguments(()
                            parseObjectPatternRest(List, PatternContext.matching)
                              listener: handleObjectPatternFields(0, (, ))
                            listener: handleObjectPattern(List, null, null)
                          listener: endPattern())
                        listener: handleRestPattern(..., true)
                        listener: handleListPattern(1, [, ])
                    listener: endPattern(])
                  listener: handleSwitchCaseNoWhenClause(])
                  ensureColon(])
                  listener: endCaseExpression(case, null, :)
                  peekPastLabels(break)
                  parseStatementsInSwitchCase(:, break, case, 0, 25, null, null)
                    listener: beginSwitchCase(0, 25, case)
                    parseStatement(:)
                      parseStatementX(:)
                        parseBreakStatement(:)
                          isBreakAllowed()
                          ensureSemicolon(break)
                          listener: handleBreakStatement(false, break, ;)
                    peekPastLabels(})
                    listener: endSwitchCase(0, 25, null, null, 1, case, ;)
                  notEofOrValue(}, })
                  listener: endSwitchBlock(1, {, })
                listener: endSwitchStatement(switch, })
          notEofOrValue(}, })
          listener: endBlockFunctionBody(1, {, })
        listener: endTopLevelMethod(void, null, })
  listener: endTopLevelDeclaration(})
  reportAllErrorTokens(void)
  listener: endCompilationUnit(1, )
