You can clone with
cache_tree_children is a great function to use generally. One thing it's missing, however, is the function of caching each node's parent, which means that you cannot traverse up and down a tree freely without triggering more queries. You can go down, and you can also go straight up in a single query, but you cannot use .parent.
Good point, there's really no reason it can't do that