@A(0) typedef F<@A(0) T> = int Function<@A(0) X>(@A(0) int); void main() { @A(0) void Function<@A(0) X>(@A(0) int y)? f = null; } @[SimpleToken]A[StringToken]<[BeginToken]int[StringToken]>[SimpleToken]([BeginToken]0[StringToken])[SimpleToken] typedef[KeywordToken] F[StringToken]<[BeginToken]@[SimpleToken]A[StringToken]<[BeginToken]int[StringToken]>[SimpleToken]([BeginToken]0[StringToken])[SimpleToken] T[StringToken]>[SimpleToken] =[SimpleToken] int[StringToken] Function[KeywordToken]<[BeginToken]@[SimpleToken]A[StringToken]<[BeginToken]int[StringToken]>[SimpleToken]([BeginToken]0[StringToken])[SimpleToken] X[StringToken]>[SimpleToken]([BeginToken]@[SimpleToken]A[StringToken]<[BeginToken]int[StringToken]>[SimpleToken]([BeginToken]0[StringToken])[SimpleToken] int[StringToken])[SimpleToken];[SimpleToken] void[KeywordToken] main[StringToken]([BeginToken])[SimpleToken] {[BeginToken] @[SimpleToken]A[StringToken]<[BeginToken]int[StringToken]>[SimpleToken]([BeginToken]0[StringToken])[SimpleToken] void[KeywordToken] Function[KeywordToken]<[BeginToken]@[SimpleToken]A[StringToken]<[BeginToken]int[StringToken]>[SimpleToken]([BeginToken]0[StringToken])[SimpleToken] X[StringToken]>[SimpleToken]([BeginToken]@[SimpleToken]A[StringToken]<[BeginToken]int[StringToken]>[SimpleToken]([BeginToken]0[StringToken])[SimpleToken] int[StringToken] y[StringToken])[SimpleToken]?[SimpleToken] f[StringToken] =[SimpleToken] null[KeywordToken];[SimpleToken] }[SimpleToken] [SimpleToken]