import java.util.List; abstract class X { abstract <T> void copy(List<T> dest, List<? extends T> src); void foo(List<? super Throwable> x, List<? extends Exception> y){ copy(x, y); } }