private function pullUpLeftMost()
    {
        if ($this->information & 2) {
            $leftBalance = $this->left->information & ~3;
            $this->left = $this->left->pullUpLeftMost();

            if (!($this->information & 2) || $leftBalance != 0 && ($this->left->information & ~3) == 0) {
                return $this->incBalance();
            } else {
                return $this;
            }
        } else {
            $this->left->fKey = $this->fKey;
            $this->left->value = $this->value;

            if ($this->information & 1) {
                $this->right->left = $this->left;

                return $this->right;
            } else {
                if ($this->left->right === $this) {
                    $this->left->information &= ~ 1;

                    return $this->right;
                } else {
                    $this->right->information &= ~ 2;

                    return $this->left;
                }
            }
        }
    }