|  | class A { | 
|  | operator [](int index) => index; | 
|  | } | 
|  |  | 
|  | main() { | 
|  | A? a = null; | 
|  | (a!)?.toString(); | 
|  | (a!)?.[42]; | 
|  | (a!)?[42]; | 
|  | (a!) ? [42]; | 
|  | } | 
|  |  | 
|  | class[KeywordToken] A[StringToken] {[BeginToken] | 
|  | operator[KeywordToken] [][SimpleToken]([BeginToken]int[StringToken] index[StringToken])[SimpleToken] =>[SimpleToken] index[StringToken];[SimpleToken] | 
|  | }[SimpleToken] | 
|  |  | 
|  | main[StringToken]([BeginToken])[SimpleToken] {[BeginToken] | 
|  | A[StringToken]?[SimpleToken] a[StringToken] =[SimpleToken] null[KeywordToken];[SimpleToken] | 
|  | ([BeginToken]a[StringToken]![SimpleToken])[SimpleToken]?.[SimpleToken]toString[StringToken]([BeginToken])[SimpleToken];[SimpleToken] | 
|  | ([BeginToken]a[StringToken]![SimpleToken])[SimpleToken]?.[SimpleToken][[BeginToken]42[StringToken]][SimpleToken];[SimpleToken] | 
|  | ([BeginToken]a[StringToken]![SimpleToken])[SimpleToken]?[SimpleToken][[BeginToken]42[StringToken]][SimpleToken];[SimpleToken] | 
|  | ([BeginToken]a[StringToken]![SimpleToken])[SimpleToken] ?[SimpleToken] [[BeginToken]42[StringToken]][SimpleToken];[SimpleToken] | 
|  | }[SimpleToken][SimpleToken] |