import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; import java.util.List; interface J extends T { @Nullable @Override U foofoofoo(@NotNull List a, @Nullable A b, @NotNull U c); } abstract class J1 implements J, U> { @Nullable @Override public U foofoofoo(@NotNull List xu, @Nullable U yu, @NotNull U> c) { throw new UnsupportedOperationException(); } } abstract class J2 extends J1 { @Nullable @Override public U foofoofoo(@NotNull List xu, @Nullable U stringU, @NotNull U> c) { throw new UnsupportedOperationException(); } } class J3 extends J2 { @Nullable @Override public U foofoofoo(@NotNull List objectU, @Nullable U stringU, @NotNull U> c) { throw new UnsupportedOperationException(); } }