Java library to create immutable version of an object run time