The statement: F(G<A, B>(7));
could be interpreted as a call to F with two arguments, G < A and B > (7).
Alternatively, it could be interpreted as a call to F with one argument, which is a call to a generic method G with two type arguments and one regular argument.
See the C# specification section 9.2.3 (grammar ambiguities) for more details: http://www.ecma-international.org/publications/files/ECMA-ST...