docs: protected IndexTreePath<E> createNewRoot(final N oldRoot, final N newNode) {
      N root = createNewDirectoryNode();
      writeNode(root);
  
      // switch the ids
      oldRoot.setPageID(root.getPageID());
      if(!oldRoot.isLeaf()) {
        for(int i = 0; i < oldRoot.getNumEntries(); i++) {
          writeNode(getNode(oldRoot.getEntry(i)));
        }
      }
  
      root.setPageID(getRootID());
      root.addDirectoryEntry(createNewDirectoryEntry(oldRoot));
      root.addDirectoryEntry(createNewDirectoryEntry(newNode));
  
      writeNode(root);
      writeNode(oldRoot);
      writeNode(newNode);
      if(getLogger().isDebugging()) {
        getLogger().debugFine("Create new Root: ID=" + root.getPageID() + "\nchild1 " + oldRoot + " " + new HyperBoundingBox(createNewDirectoryEntry(oldRoot)) + "\nchild2 " + newNode + " " + new HyperBoundingBox(createNewDirectoryEntry(newNode)));
      }
  
      return new IndexTreePath<>(null, getRootEntry(), -1);
    }