Add a ~ box type (steal unary-bitwise-not, it's rare enough to live in a library or use ! as a synonym or something). This will live in the tree kind, not permit shallow copies, only deep copies and move semantics.