code: public void init()
      {
          // determine the depth to which we can safely split the tree
          byte sizedepth = (byte)(Math.log10(maxsize) / Math.log10(2));
          byte depth = (byte)Math.min(sizedepth, hashdepth);
  
          root = initHelper(fullRange.left, fullRange.right, (byte)0, depth);
          size = (long)Math.pow(2, depth);
      }
docs: Initializes this tree by splitting it until hashdepth is reached,
  or until an additional level of splits would violate maxsize.
  
  NB: Replaces all nodes in the tree.