|  | beginCompilationUnit(main) | 
|  | beginMetadataStar(main) | 
|  | endMetadataStar(0) | 
|  | beginTopLevelMember(main) | 
|  | beginTopLevelMethod(, null, null) | 
|  | handleNoType() | 
|  | handleIdentifier(main, topLevelFunctionDeclaration) | 
|  | handleNoTypeVariables(() | 
|  | beginFormalParameters((, MemberKind.TopLevelMethod) | 
|  | endFormalParameters(0, (, ), MemberKind.TopLevelMethod) | 
|  | handleAsyncModifier(null, null) | 
|  | beginBlockFunctionBody({) | 
|  | beginSwitchStatement(switch) | 
|  | handleIdentifier(a, expression) | 
|  | handleNoTypeArguments()) | 
|  | handleNoArguments()) | 
|  | handleSend(a, a) | 
|  | handleParenthesizedCondition((, null, null) | 
|  | beginSwitchBlock({) | 
|  | beginCaseExpression(case) | 
|  | handleIdentifier(x, expression) | 
|  | handleNoTypeArguments(?) | 
|  | handleNoArguments(?) | 
|  | handleSend(x, x) | 
|  | handleLiteralInt(4) | 
|  | handleIndexedExpression(?, [, ]) | 
|  | handleSwitchCaseNoWhenClause(]) | 
|  | endCaseExpression(case, null, :) | 
|  | beginSwitchCase(0, 1, case) | 
|  | beginBlock({, BlockKind(statement)) | 
|  | beginBlock({, BlockKind(statement)) | 
|  | beginBlock({, BlockKind(statement)) | 
|  | handleLiteralInt(2) | 
|  | handleExpressionStatement(2, ;) | 
|  | endBlock(1, {, }, BlockKind(statement)) | 
|  | endBlock(1, {, }, BlockKind(statement)) | 
|  | endBlock(1, {, }, BlockKind(statement)) | 
|  | handleEmptyStatement(;) | 
|  | endSwitchCase(0, 1, null, null, 2, case, ;) | 
|  | endSwitchBlock(1, {, }) | 
|  | endSwitchStatement(switch, }) | 
|  | endBlockFunctionBody(1, {, }) | 
|  | endTopLevelMethod(main, null, }) | 
|  | endTopLevelDeclaration(}) | 
|  | endCompilationUnit(1, ) |