import java.lang.reflect.Constructor; public class X { public <T extends X> Constructor<T> ctor() {return null;} static <T extends X> T f1() throws Exception{ return new X().<T>ctor().newInstance(new Object[0]); } static <T extends X> T f2() throws Exception { return f1();} }