docs: public void insert(ClusKernel newPoint, Budget budget, long timestamp) {
          if (breadthFirstStrat){
            	insertBreadthFirst(newPoint, budget, timestamp);
         }
          else{
  	    	Entry rootEntry = new Entry(this.numberDimensions,
  	                root, timestamp, null, null);
  	        ClusKernel carriedBuffer = new ClusKernel(this.numberDimensions);
  	        Entry toInsertHere = insert(newPoint, carriedBuffer, root, rootEntry,
  	                budget, timestamp);
  	
  	        if (toInsertHere != null) {
  	            this.numRootSplits++;
  	            this.height += this.height < this.maxHeight ? 1 : 0;
  	            
  	            Node newRoot = new Node(this.numberDimensions,
  	                    toInsertHere.getChild().getRawLevel() + 1);
  	            newRoot.addEntry(rootEntry, timestamp);
  	            newRoot.addEntry(toInsertHere, timestamp);
  	            rootEntry.setNode(newRoot);
  	            toInsertHere.setNode(newRoot);
  	            this.root = newRoot;
  	        }
          }
  
          this.numberInsertions++;
          if (this.numberInsertions % INSERTIONS_BETWEEN_CLEANUPS == 0) {
              cleanUp(this.root, 0);
          }
      }