Copying
Copying
Arbitrary structures of virtual objects may be copied at the virtual object level of granularity by the #shallowCopy and #deepCopy messages as well as the new #totalCopy message, which copies all reachable objects (and also works for non-virtual objects). Circular structures both within and between virtual objects are correctly copied. Virtual objects may be copied into other virtual spaces. For special purposes, #realTotalCopy etc return non-virtual copies.
The #parentedCopy message (shallow, deep or total), returns a copy which has a hidden (system-level) reference to its parent (answered to #virtualParent), which has a hidden reference to its collection of children (#virtualChildren). The pasting and identity-exchange methods allow a parent to be updated to be similar to, or to exchange identity with, a preferred child version etc, transaction rollback reverses such changes in the usual way.
