abstract class A{ abstract void foo(T x); class B extends A { @Override void foo(A.B x) {} } }