In this file we handle the “Tree” part of Tree Borrows, i.e. all tree
traversal functions, optimizations to trim branches, and keeping track of
the relative position of the access to each node being updated. This of course
also includes the definition of the tree structure.
Takes a place for a Unique and turns it into a place with the inner raw pointer.
I.e. input is what you get from the visitor upon encountering an adt that is Unique,
and output can be used by retag_ptr_inplace.