Could you add some documentation for this type? I'm making the following assumptions after reading the source, but I think they really need to be explicitly stated with some comments :

- NodeBase is a base class for nodes representing the index
- Keeping the size of nodes to a minimum is critical when dealing with large indexes
- It is deliberately not RefCounted to save the size of the refcount
- It deliberately has no virtual methods to save the size of the vptr
- Because it has no virtual destructor, one must be careful to cast it to the appropriate derived type before deleting it.
- NodeType enumerates the derived types, and m_nodeType

Perhaps we could also consider the following improvements :

- Document NodeType and its relationship to the derived classes
- Make m_name and m_nodeType const and private and allow only read access through a method
  - Presumably there is no reason they should ever change after construction, and it'd be good for the compiler to be checking that for us.
  - I'm a little confused as to why it's possible to construct a NodeBase with an uninitialised m_nodeType using the NodeBase( name ) constructor, so presumably something would have to be rejigged there, but I think it would be for the better.
- Add a destroy() method to do a downcast to the right type and delete - I think having that associated with the code for the base class (where you're also documenting the decision to not have a virtual destructor) is much better than the big switch much further away in recursiveNodeDealloc().