RefTrieNode's are the elements of a RefTrie. Each node is associated to a Key and possibly a Payload. Nodes with a Payload ("full") can have 0, 1 or 2 children. Nodes without a Payload ("empty") can only be internal nodes, and MUST have 2 children (or they have no reason to exist).
Children have a Key which is strictly contained in their parent's Key -- more precisely, they are in either the left or the right half of the parent's Key. The branch to which a child is attached (left or right) is defined accordingly.
| typedef IPNet<A> Key | Key | 
| typedef MiniTraits<Payload>::NonConst PPayload | PPayload | 
| RefTrieNode () | RefTrieNode | 
| RefTrieNode (const Key& key, const Payload& p, RefTrieNode* up = 0) | RefTrieNode | 
| RefTrieNode (const Key& key, RefTrieNode* up = 0) | RefTrieNode | 
| ~RefTrieNode () | ~RefTrieNode | 
| RefTrieNode * insert (RefTrieNode **root,
			    const Key& key,
			    const Payload& p,
			    bool& replaced) | insert | 
[static]
add a node to a subtree
Returns: a pointer to the node.
| RefTrieNode * erase () | erase | 
erase current node, replumb. Returns the new root.
| RefTrieNode * find (const Key& key) | find | 
main search routine. Given a key, returns a node.
| const RefTrieNode * const_find (const Key& key) | const_find | 
[const]
| RefTrieNode * find_subtree (const Key &key) | find_subtree | 
aux search routine. Given a key, returns a subtree contained in the key, irrespective of the presence of a payload in the node.
| RefTrieNode*  lower_bound (const Key &key) | lower_bound | 
Given a key, find the node with that key and a payload. If the next doesn't exist or does not have a payload, find the next node in the iterator sequence. XXX check the description.
| RefTrieNode*  get_left () | get_left | 
| RefTrieNode*  get_right () | get_right | 
| RefTrieNode*  get_parent () | get_parent | 
| bool  has_payload () | has_payload | 
[const]
| bool  has_active_payload () | has_active_payload | 
[const]
| const Payload & const_p () | const_p | 
[const]
| Payload & p () | p | 
| void  set_payload (const Payload& p) | set_payload | 
| uint32_t  references () | references | 
[const]
| void  incr_refcount () | incr_refcount | 
| void  decr_refcount () | decr_refcount | 
| bool  deleted () | deleted | 
[const]
| const Key & k () | k | 
[const]
| void  print (int indent, const char *msg) | 
[const]
| string  str () | str | 
[const]
| void  delete_subtree () | delete_subtree | 
helper function to delete an entire subtree (including the root).
| void  validate (const RefTrieNode *parent) | validate | 
[const]
debugging, validates a node by checking pointers and Key invariants.
| bool  is_left () | is_left | 
[const]
Returns: the leftmost node under this node
| RefTrieNode * leftmost () | leftmost | 
| void  find_bounds (const A& a, A &lo, A &hi) | find_bounds | 
[const]
Algorithm:
		n = find(a);
 		if we have no route (hence no default), provide a fake 0/0;
		set lo and hi to the boundaries of the current node.
 if n.is_a_leaf() we are done (results are the extremes of the entry)
 Otherwise: we are in an intermediate node, and a can be in positions
 1..5 if the node has 2 children, or 1'..3' if it has 1 child.
	n:		|---------------.----------------|
  a:                1    2        3      4     5
                       |--X--|         |--Y--|
  a:                1'    2'        3'
                       |--X--|
 Behaviour is the following:
  case 1 and 1':	lo already set, hi = (lowest address in X)-1
  case 2 and 2': set n = X and repeat
  case 3: lo = (highest addr in X)+1, hi = (lowest addr in Y)-1
  case 3': lo = (highest addr in X)+1, hi is already set
  case 4: set n = Y and repeat
  case 5:	lo = (highest addr in Y)+1, hi is already set
Returns: the boundaries ("lo" and "hi") of the largest range that contains 'a' and maps to the same route entry.
| A  low () | low | 
[const]
Returns: the lowest address in a subtree which has a route. Search starting from left or right until a full node is found.
| A  high () | high | 
[const]
Returns: the highest address in a subtree which has a route. Search starting from right or left until a full node is found.