Я столкнулся с этим классом в коде, который я поддерживаю:
new GenericFutureListener<Future<? super Void>>() {...}
Мне очень трудно понять, что это значит. Future содержащее тип, который является либо Void либо его суперкласс - Object. Так почему бы просто не написать Future<Object>?