Java Generics: List<? super T> vs List<? extends T> | CodeTrail