public Foo[T](x : T, T : void -> int) : void where T : new() { _ = T() } Is 'T()' an object creation expression, or a function call? What is the rule to resolve this ambiguity?