A mutability mechanism is provided for parsing an object at loading time.
The mutability mechanism inserts a property into the object that
indicates whether or not the object is immutable. The mutability
mechanism looks at the code for the object and determines whether any
other objects can modify the object. If the object cannot be modified
after it is created, then the new property is set to indicate that the
object is immutable; otherwise, the property is set to indicate that the
object is mutable. This property can be inspected at runtime when a call
is made to a program object. If an object passed as an argument is marked
mutable, a clone of this object must be passed to the callee. However, if
an object passed as an argument is marked immutable, a simple reference
to the object may be passed as an argument to the callee.