class A { } class B extends A { f(Boolean x) { if (x) { return new B(); } else { return new C(); } } } class C extends B> {}