Made the parser more generic to be used by bytecode compatibility transformer
Redone the parser differently
EnumSet can't be used while enum is being constructed.