I really dislike the way java implemented generics. Its very confusing.