| Problems reported: | 
 |  | 
 | parser/patterns/cast_insideNullCheck:4:10: This pattern cannot appear inside a unary pattern (cast pattern, null check pattern, or null assert pattern) without parentheses. | 
 |     case y as int? ?: | 
 |          ^^^^^^^^^ | 
 |  | 
 | beginCompilationUnit(void) | 
 |   beginMetadataStar(void) | 
 |   endMetadataStar(0) | 
 |   beginTopLevelMember(void) | 
 |     beginTopLevelMethod(, null, null) | 
 |       handleVoidKeyword(void) | 
 |       handleIdentifier(f, topLevelFunctionDeclaration) | 
 |       handleNoTypeVariables(() | 
 |       beginFormalParameters((, MemberKind.TopLevelMethod) | 
 |         beginMetadataStar(x) | 
 |         endMetadataStar(0) | 
 |         beginFormalParameter(x, MemberKind.TopLevelMethod, null, null, null) | 
 |           handleNoType(() | 
 |           handleIdentifier(x, formalParameterDeclaration) | 
 |           handleFormalParameterWithoutValue()) | 
 |         endFormalParameter(null, null, null, x, null, null, FormalParameterKind.requiredPositional, MemberKind.TopLevelMethod) | 
 |       endFormalParameters(1, (, ), MemberKind.TopLevelMethod) | 
 |       handleAsyncModifier(null, null) | 
 |       beginBlockFunctionBody({) | 
 |         beginMetadataStar(const) | 
 |         endMetadataStar(0) | 
 |         handleNoType(const) | 
 |         beginVariablesDeclaration(y, null, const) | 
 |           handleIdentifier(y, localVariableDeclaration) | 
 |           beginInitializedIdentifier(y) | 
 |             beginVariableInitializer(=) | 
 |               handleLiteralInt(1) | 
 |             endVariableInitializer(=) | 
 |           endInitializedIdentifier(y) | 
 |         endVariablesDeclaration(1, ;) | 
 |         beginSwitchStatement(switch) | 
 |           handleIdentifier(x, expression) | 
 |           handleNoTypeArguments()) | 
 |           handleNoArguments()) | 
 |           handleSend(x, x) | 
 |           handleParenthesizedCondition((, null, null) | 
 |           beginSwitchBlock({) | 
 |             beginCaseExpression(case) | 
 |               beginPattern(case) | 
 |                 beginConstantPattern(null) | 
 |                   handleIdentifier(y, expression) | 
 |                   handleNoTypeArguments(as) | 
 |                   handleNoArguments(as) | 
 |                   handleSend(y, y) | 
 |                 endConstantPattern(null) | 
 |                 beginAsOperatorType(as) | 
 |                   handleIdentifier(int, typeReference) | 
 |                   handleNoTypeArguments(?) | 
 |                   handleType(int, ?) | 
 |                 endAsOperatorType(as) | 
 |                 handleCastPattern(as) | 
 |                 handleRecoverableError(InvalidInsideUnaryPattern, y, ?) | 
 |                 handleNullCheckPattern(?) | 
 |               endPattern(?) | 
 |               handleSwitchCaseNoWhenClause(?) | 
 |             endCaseExpression(case, null, :) | 
 |             beginSwitchCase(0, 1, case) | 
 |               handleBreakStatement(false, break, ;) | 
 |             endSwitchCase(0, 1, null, null, 1, case, ;) | 
 |           endSwitchBlock(1, {, }) | 
 |         endSwitchStatement(switch, }) | 
 |       endBlockFunctionBody(2, {, }) | 
 |     endTopLevelMethod(void, null, }) | 
 |   endTopLevelDeclaration(}) | 
 | endCompilationUnit(1, ) |