class list <A> { public class Cons <T> : list <T> { } public class Nil <T> : list <T> { } } class C { public static void Rev<T> (list <T> y) { if (y is list<object>.Cons<T>) System.Console.WriteLine ("Cons"); if (y is list<object>.Nil<T>) System.Console.WriteLine ("Nil"); } } class M { public static void Main () { C.Rev (new list<object>.Cons <string> ()); C.Rev (new list<object>.Nil <string> ()); } }