why generics
generic terms
type bounds
type inference
type erasure
generic method
generic type reflection