> But it is tremendously wasteful to make a complete copy of a large data structure!
You don't make a complete copy: you make a shallow copy of the spine, and then only descend along the fields you actually modify. The number of operations scales as O(branching factor * depth), not O(size).