public function equals(Constrainer $constrainer)
    {
        if (! $constrainer instanceof static) {
            return false;
        }

        if ($this->constraints->count() != $constrainer->constraints->count()) {
            return false;
        }

        foreach ($this->constraints as $index => $constraint) {
            if (! $constrainer->constraints[$index]->equals($constraint)) {
                return false;
            }
        }

        return true;
    }