В джаве нельзя просто так взять и написать дженерик с такой вот сигнатурой:
<T> void f(List<T> list, Callback<? super List<? super T>> cb) {
Жава будет вопить про то что второй аргумент хуйня и шли б все нахуй http://ideone.com/1xQ7dC
Поебавшись некоторое время нашёл вот такой лайфхак:
<T, U extends T> void f(List<U> list, Callback<? super List<T>> cb) {
Который заебись компилится: http://ideone.com/WN1qui
В общем, не знаю кому из вас это может понадобится, но пользуйтесь на здоровье