So you'd suggest using clone/copy for the kind of cloning that the library is currently doing - that is, creating a "rump object" that refers to its parent for everything - and shallow-copy for a version where all the slots are copied as well? I am also not sure such an additional cloning functionality would be a good idea, because it cannot really keep its implied promises - e.g. value slots that point to a record will still point to the exact same record and thus follow all changes to it, even though such a copy that "copies all slots" would suggest otherwise.