using System; class Gen<T> where T : class { public static bool Foo (T t) { return t is Program; } } class Program { static bool Foo<T> () { object o = 1; return o is T; } public static int Main () { if (Foo<bool> ()) return 1; if (!Foo<int> ()) return 2; if (Gen<object>.Foo (null)) return 3; if (!Gen<Program>.Foo (new Program ())) return 4; Console.WriteLine ("ok"); return 0; } }