import org.jetbrains.annotations.NotNull; interface J<A> extends T<A> { @Override <B> int foofoofoo(@NotNull U<A> a, B b); } abstract class J1<X> implements J<U<X>> { @Override public <C> int foofoofoo(@NotNull U<U<X>> xu, C c) { throw new UnsupportedOperationException(); } } abstract class J2 extends J1<String> { @Override public <C> int foofoofoo(@NotNull U<U<String>> xu, C c) { throw new UnsupportedOperationException(); } }