Supporting recursion means we need to be able to collect cyclic references to persistent variables created while copying. I don't have any good ideas for this yet ...