package test; class NoSamForTypeParameter<K extends Runnable> { void foo(K runnable1, Runnable runnable2) {} } class NoSamForTypeParameterDerived1 extends NoSamForTypeParameter<Runnable> { @Override void foo(Runnable runnable1, Runnable runnable2) {} } class NoSamForTypeParameterDerived2<E extends Runnable> extends NoSamForTypeParameter<E> { void foo(E runnable1, Runnable runnable2) {} } class NoSamForTypeParameterDerived3 extends NoSamForTypeParameterDerived1 { @Override void foo(Runnable runnable1, Runnable runnable2) {} } class NoSamForTypeParameterDerived4 extends NoSamForTypeParameterDerived2<Runnable> { @Override void foo(Runnable runnable1, Runnable runnable2) {} }