tag.php
public function setValue($value)
    {
        if (! $this->valueIsPossible($value)) {
            return false;
        }
        $index   = false;
        $widgets = $this->getWidgets();
        for ($i = 0, $count = count($widgets); $i < $count; $i++) {
            if (! $widgets[$i]->setValue($value)) {
                $widgets[$i]->setValue(false);
            }
        }

        return true;
    }
public function setValue($value)
    {
        if (! $this->valueIsPossible($value)) {
            return false;
        }
        $index   = false;
        $widgets = $this->getWidgets();
        for ($i = 0, $count = count($widgets); $i < $count; $i++) {
            if (! $widgets[$i]->setValue($value)) {
                $widgets[$i]->setValue(false);
            }
        }

        return true;
    }
Each tag is tried in turn until one is successfully set.
The others will be unchecked if successful.

@param string $value      New value.

@return bool           True if any allowed.