parseUnit(test) skipErrorTokens(test) listener: beginCompilationUnit(test) syntheticPreviousToken(test) parseTopLevelDeclarationImpl(, DirectiveContext(DirectiveState.Unknown)) parseMetadataStar() listener: beginMetadataStar(test) listener: endMetadataStar(0) parseTopLevelMemberImpl() listener: beginTopLevelMember(test) isReservedKeyword(() parseTopLevelMethod(, null, null, , NoType(), null, test, false) listener: beginTopLevelMethod(, null, null) listener: handleNoType() ensureIdentifierPotentiallyRecovered(, topLevelFunctionDeclaration, false) listener: handleIdentifier(test, topLevelFunctionDeclaration) parseMethodTypeVar(test) listener: handleNoTypeVariables(() parseGetterOrFormalParameters(test, test, false, MemberKind.TopLevelMethod) parseFormalParameters(test, MemberKind.TopLevelMethod) parseFormalParametersRest((, MemberKind.TopLevelMethod) listener: beginFormalParameters((, MemberKind.TopLevelMethod) parseFormalParameter((, FormalParameterKind.requiredPositional, MemberKind.TopLevelMethod) parseMetadataStar(() listener: beginMetadataStar(dynamic) listener: endMetadataStar(0) listener: beginFormalParameter(dynamic, MemberKind.TopLevelMethod, null, null, null) listener: handleIdentifier(dynamic, typeReference) listener: handleNoTypeArguments(x) listener: handleType(dynamic, null) ensureIdentifier(dynamic, 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, 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: 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(Foo, expression) listener: handleNoTypeArguments(() parseArgumentsOpt(Foo) parseArguments(Foo) parseArgumentsRest(() listener: beginArguments(() parseExpression(() looksLikeOuterPatternEquals(() skipOuterPattern(() parsePrecedenceExpression((, 1, true, ConstantPatternContext.none) parseUnaryExpression((, true, ConstantPatternContext.none) parsePrimary((, expression, ConstantPatternContext.none) parseLiteralInt(() listener: handleLiteralInt(1) listener: endArguments(1, (, )) listener: handleSend(Foo, )) listener: endConstantPattern(const) listener: handleNullCheckPattern(?) listener: endPattern(?) listener: handleSwitchCaseNoWhenClause(?) ensureColon(?) listener: endCaseExpression(case, null, :) peekPastLabels(break) parseStatementsInSwitchCase(:, break, case, 0, 1, null, null) listener: beginSwitchCase(0, 1, case) parseStatement(:) parseStatementX(:) parseBreakStatement(:) isBreakAllowed() ensureSemicolon(break) listener: handleBreakStatement(false, break, ;) peekPastLabels(}) listener: endSwitchCase(0, 1, null, null, 1, case, ;) notEofOrValue(}, }) listener: endSwitchBlock(1, {, }) listener: endSwitchStatement(switch, }) notEofOrValue(}, }) listener: endBlockFunctionBody(1, {, }) listener: endTopLevelMethod(test, null, }) listener: endTopLevelDeclaration(}) reportAllErrorTokens(test) listener: endCompilationUnit(1, )