Source: http://www.cs.unc.edu/~dewan/comp401/current/Class%20Notes/23_Generics_Notes.pdf