code: protected boolean removeRecursive(final K key, final int nodeid) {
  		if (nodeid == Node.NULL_ID) {
  			return false;  // NOT FOUND
  		}
  		Node<K, V> nodeDelete = getNode(nodeid);
  		if (log.isDebugEnabled()) {
  			log.debug("trying removeRecursive nodeDelete=" + nodeDelete + " key=" + key);
  		}
  		int slot = nodeDelete.findSlotByKey(key);
  		if (nodeDelete.isLeaf()) {
  			if (slot < 0) {
  				if (log.isDebugEnabled()) {
  					log.debug("NOT FOUND nodeDelete=" + nodeDelete + " key=" + key);
  				}
  				return false; // NOT FOUND
  			}
  			nodeDelete.remove(slot);
  			putNode(nodeDelete);
  			return true;
  		}
  		slot = ((slot < 0) ? (-slot) - 1 : slot + 1);
  		final InternalNode<K, V> nodeDeleteInternal = (InternalNode<K, V>) nodeDelete;
  		if (removeRecursive(key, nodeDeleteInternal.childs[slot])) {
  			nodeDeleteInternal.checkUnderflow(slot);
  			return true;
  		}
  		return false;
  	}
docs: Remove the Key from the subtree rooted at the node with nodeid (this function is recursive)
  
  @param key to delete
  @param nodeid of the subtree to remove key from
  @return true if key was removed and false otherwise