abstract class A { public abstract T getT (); public class B : A { public override A.B getT () { return this; } } } class C { public static int Main () { var r = new A.B (); if (r.getT () != r) return 1; return 0; } }