abstract class C{ abstract void foo(T x); abstract void foo(T x); void bar(Cloneable x){ foo(x); } } abstract class D { abstract > void foo(T x); abstract > void foo(T x); void bar(Iterable x){ foo(x); } }