code: private final LeafNode<K, V> findSideLeafNode(final boolean lowORhigh) {
  		if (_isEmpty()) {
  			return null;
  		}
  		try {
  			int nodeIdx = (lowORhigh ? lowIdx : highIdx); // rootIdx;
  			Node<K, V> nodeFind = getNode((nodeIdx == 0) ? rootIdx : nodeIdx);
  			while (!nodeFind.isLeaf()) {
  				nodeIdx = ((InternalNode<K, V>) nodeFind).childs[(lowORhigh ? 0 : nodeFind.allocated)];
  				nodeFind = getNode(nodeIdx);
  			}
  			return (nodeFind.isLeaf() ? (LeafNode<K, V>) nodeFind : null);
  		} finally {
  			releaseNodes();
  		}
  	}
docs: Return the first/low or last/high LeafNode in the Tree
  
  @param lowORhigh true first/low node, false last/high node
  @return the LeafNoder head/first/lower or tail/last/higher