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) {}
}
