fun compareAndSwap(expected: T, new: T): T
Compares value with expected and replaces it with new value if values matches. Note that comparison is identity-based, not value-based.
Legacy MM: if new value is not null, it must be frozen or permanent object.
InvalidMutabilityException - with legacy MM if the value is not frozen or a permanent object
Return the old value