Cheaply create new versions of an object, with new properties.