An introduction to generics