Adds genercis and other java5 features to the code