using System; public class Test { public static IndexOf ( array_ : Array, value : object) : int { // This is picking the non-generic version. IndexOf (array_, value, 0, array_.Length); } public static IndexOf ( _array_ : Array, _value : object, _startIndex : int, _count : int) : int { 2; } public static IndexOf[T] ( _array_ : array [T], _value : T, _startIndex : int, _count : int) : int { 1; } } class X { static Main () : int { mutable _test = Test (); mutable array_ = array[ "Hello" ]; mutable result = Test.IndexOf (array_, array_); if (result != 2) { 1; } else { mutable hello = "Hello World"; // This is picking the generic version. result = Test.IndexOf (array_, hello, 1, 2); if (result != 1) { 2; } else { 0; } } } } /* BEGIN-OUTPUT END-OUTPUT */