public abstract static class AvlUtil.AvlNode<TNode extends AvlUtil.AvlNode>
This class represent a node that will be used in an AvlTree. Instead of creating another object
for the tree node, like the TreeMap and the other java contains, here the node can be extended
and the content can be embedded directly in the node itself. This is useful in cases where over
time we have a lot of add/remove of the same object.