removeExtremum
shrunk = removeExtremum(&node->lr[side], 1 - side, &replacement);
if (!removeExtremum(&node->lr[side], side, ret))
static bool removeExtremum(AvlNode **p, int side, AvlNode **ret);