Java Generics II - Understanding erasure