@Override
  protected void rebalanceDelete(Position<Entry<K,V>> p) {
    if (isRed(p))                        // deleted parent was black
      makeBlack(p);                      // so this restores black depth
    else if (!isRoot(p)) {
      Position<Entry<K,V>> sib = sibling(p);
      if (isInternal(sib) && (isBlack(sib) || isInternal(left(sib))))
        remedyDoubleBlack(p);            // sib's subtree has nonzero black height
    }
  }