Each CNode can be configured with a guard value of a particular size which must be matched int the path before any actual index bits within that CNode.
The manual suggests this is to ‘permit sparsity’, but as the structure is a prefix-tree anyway it is otherwise pretty sparse.
I haven’t seen any code that benefits from the existence of guard bits, but I’ve seen plenty that seems to pad out the addresses of CNode trees to a full word as a convention. This simply has the effect of preventing referencing anything of further depth than the tree is designed for directly.
What was the original motivation for using guards and does any such motivation still exist?