class Foo[T] { public Hello () : void { } public World ( _t : T) : void { Hello (); } } // // This is some kind of a `recursive' declaration: // // Note that we're using the class we're currently defining (Bar) // as argument of its parent. // // Is is important to run the resulting executable since this is // both a test for the compiler and the runtime. // class Bar : Foo[Bar] { public Test () : void { Hello (); World (this); } } class X { static Main () : void { } } /* BEGIN-OUTPUT END-OUTPUT */