class C<W extends I> { abstract class <caret>B<X extends I, Y> extends A<X, I, Z<Y>> { // INFO: {"checked": "true"} <S extends X> void foo(X x1, Z<X> x2, Y y1, Z<Y> y2, W w1, Z<W> w2, S s1, Z<S> s2) { } // INFO: {"checked": "true"} class Foo<S> extends A<X, I, Z<Y>> implements Z<W> { } // INFO: {"checked": "true"} X foo1; // INFO: {"checked": "true"} Z<X> foo2; // INFO: {"checked": "true"} Y foo3; // INFO: {"checked": "true"} Z<Y> foo4; } }