public function addValue($value)
    {
        $this->assertCanHaveValue();
        $this->assertValueIsValid($value);

        if ($this->canHaveMultipleValues() && ! $this->hasValue($value)) {
            $value = array_merge($this->values, (array) $value);
        }

        $this->values = (array) $value;

        return $this;
    }