| class Class { | 
 | dynamic field; | 
 | Class(this.field); | 
 | } | 
 |  | 
 | test(a) { | 
 | switch (a) { | 
 | case (foo: int b) when b != 2: | 
 | print(b); | 
 | case (foo: (int, int) b) when b != (2, 3): | 
 | print(b); | 
 | case Class(field: int b) when b != 2: | 
 | print(b); | 
 | case Class(field: (int, int) b) when b != (2, 3): | 
 | print(b); | 
 | } | 
 | } | 
 |  | 
 | testNullable(a) { | 
 | switch (a) { | 
 | case (foo: (int, int)? b) when b != (2, 3): | 
 | print(b); | 
 | case Class(field: (int, int)? b) when b != (2, 3): | 
 | print(b); | 
 | } | 
 | } | 
 |  | 
 |  | 
 | class[KeywordToken] Class[StringToken] {[BeginToken] | 
 | dynamic[KeywordToken] field[StringToken];[SimpleToken] | 
 | Class[StringToken]([BeginToken]this[KeywordToken].[SimpleToken]field[StringToken])[SimpleToken];[SimpleToken] | 
 | }[SimpleToken] | 
 |  | 
 | test[StringToken]([BeginToken]a[StringToken])[SimpleToken] {[BeginToken] | 
 | switch[KeywordToken] ([BeginToken]a[StringToken])[SimpleToken] {[BeginToken] | 
 | case[KeywordToken] ([BeginToken]foo[StringToken]:[SimpleToken] int[StringToken] b[StringToken])[SimpleToken] when[KeywordToken] b[StringToken] !=[SimpleToken] 2[StringToken]:[SimpleToken] | 
 | print[StringToken]([BeginToken]b[StringToken])[SimpleToken];[SimpleToken] | 
 | case[KeywordToken] ([BeginToken]foo[StringToken]:[SimpleToken] ([BeginToken]int[StringToken],[SimpleToken] int[StringToken])[SimpleToken] b[StringToken])[SimpleToken] when[KeywordToken] b[StringToken] !=[SimpleToken] ([BeginToken]2[StringToken],[SimpleToken] 3[StringToken])[SimpleToken]:[SimpleToken] | 
 | print[StringToken]([BeginToken]b[StringToken])[SimpleToken];[SimpleToken] | 
 | case[KeywordToken] Class[StringToken]([BeginToken]field[StringToken]:[SimpleToken] int[StringToken] b[StringToken])[SimpleToken] when[KeywordToken] b[StringToken] !=[SimpleToken] 2[StringToken]:[SimpleToken] | 
 | print[StringToken]([BeginToken]b[StringToken])[SimpleToken];[SimpleToken] | 
 | case[KeywordToken] Class[StringToken]([BeginToken]field[StringToken]:[SimpleToken] ([BeginToken]int[StringToken],[SimpleToken] int[StringToken])[SimpleToken] b[StringToken])[SimpleToken] when[KeywordToken] b[StringToken] !=[SimpleToken] ([BeginToken]2[StringToken],[SimpleToken] 3[StringToken])[SimpleToken]:[SimpleToken] | 
 | print[StringToken]([BeginToken]b[StringToken])[SimpleToken];[SimpleToken] | 
 | }[SimpleToken] | 
 | }[SimpleToken] | 
 |  | 
 | testNullable[StringToken]([BeginToken]a[StringToken])[SimpleToken] {[BeginToken] | 
 | switch[KeywordToken] ([BeginToken]a[StringToken])[SimpleToken] {[BeginToken] | 
 | case[KeywordToken] ([BeginToken]foo[StringToken]:[SimpleToken] ([BeginToken]int[StringToken],[SimpleToken] int[StringToken])[SimpleToken]?[SimpleToken] b[StringToken])[SimpleToken] when[KeywordToken] b[StringToken] !=[SimpleToken] ([BeginToken]2[StringToken],[SimpleToken] 3[StringToken])[SimpleToken]:[SimpleToken] | 
 | print[StringToken]([BeginToken]b[StringToken])[SimpleToken];[SimpleToken] | 
 | case[KeywordToken] Class[StringToken]([BeginToken]field[StringToken]:[SimpleToken] ([BeginToken]int[StringToken],[SimpleToken] int[StringToken])[SimpleToken]?[SimpleToken] b[StringToken])[SimpleToken] when[KeywordToken] b[StringToken] !=[SimpleToken] ([BeginToken]2[StringToken],[SimpleToken] 3[StringToken])[SimpleToken]:[SimpleToken] | 
 | print[StringToken]([BeginToken]b[StringToken])[SimpleToken];[SimpleToken] | 
 | }[SimpleToken] | 
 | }[SimpleToken] | 
 | [SimpleToken] |