code: private final V remove_semi_leaf(BinTreeNode<K,V> node, BinTreeNode<K,V> prev,
  				     int son, BinTreeNode<K,V> m) {
  	if(prev == null) {
  	    root = m;
  	}
  	else {
  	    if(son == 0)
  		prev.left = m;
  	    else
  		prev.right = m;
  	}
  
  	return node.value;
      }
docs: to the only predecessor of node that could exist.