// Important test: Type inference class Test { public void Foo (U u) { } public void Foo (V[] v, V w) { } public void Hello (V v, W w, Test x) { } public void ArrayMethod (params V[] args) { } } class X { public static void Main () { Test test = new Test (); test.Foo ("Hello World"); test.Foo (new long[] { 3, 4, 5 }, 9L); test.Hello (3.14F, 9, test); test.ArrayMethod (3.14F, (float) 9 / 3); } }