'Copy' makes a copy of the object 'obj. If 'obj' is not a list or a record, 'Copy' simply returns 'obj', since those objects can never be modified there is no way to distinguish the original object from any copy, so we might as well not copy it. If 'obj' is a list or a record 'Copy' makes a copy of this object, and calls itself recursively to copy the subobjects.
WARNING: 'Copy' only makes shallow copies of sequences and tuples.