This drifts OT, but:
As a very grizzled C++ parameterized type veteran, I recognize here the
standard trap of thinking that Java Generics give you the same kind of deep
code template structure as C++. I can speak from painful personal experience
that this is not the case.
I could go on and on, but there are many web resources that explain this in
depth.