
abstract class A<<warning descr="Type parameter 'S' is never used">S</warning>> {
  abstract <T> void foo(A<? extends A<T>> x);
  void  bar(A<? extends A> x){
    foo<error descr="'foo(A<? extends A<java.lang.Object>>)' in 'A' cannot be applied to '(A<capture<? extends A>>)'">(x)</error>;
  }
}

abstract class A<<warning descr="Type parameter 'S' is never used">S</warning>> {
  abstract <T> void foo(A<? extends A<T>> x);
  void  bar(A<? extends A> x){
    foo<error descr="'foo(A<? extends A<T>>)' in 'A' cannot be applied to '(A<capture<? extends A>>)'">(x)</error>;
  }
}
fix testdata