interface I<T, S extends Throwable> {
  int foo(T x);
  void foo(S x);
}

class A implements I<Throwable, Throwable>{
  public <error descr="'foo(Throwable)' in 'A' clashes with 'foo(T)' in 'I'; incompatible return type">void</error> foo(Throwable x) { }
}
