code: public void makeNewRoot(DirEntry e) {
  		// makes sure it is opening the root block
  		if (currentPage.currentBlk().number() != 0) {
  			currentPage.close();
  			currentPage = new BTreePage(new BlockId(currentPage.currentBlk().fileName(), 0),
  					NUM_FLAGS, schema, tx);
  		}
  		
  		SearchKey firstKey = getKey(currentPage, 0, keyType.length());
  		long level = getLevelFlag(currentPage);
  		// transfer all records to the new block
  		long newBlkNum = currentPage.split(0, new long[] { level });
  		DirEntry oldRootEntry = new DirEntry(firstKey, newBlkNum);
  		insert(oldRootEntry);
  		insert(e);
  		setLevelFlag(currentPage, level + 1);
  	}
docs: Creates a new root block for the B-tree. The new root will have two
  children: the old root, and the specified block. Since the root must
  always be in block 0 of the file, the contents of block 0 will get
  transferred to a new block (serving as the old root).
  
  @param e
  the directory entry to be added as a child of the new root