public function createPropertyValueCondition($propertyName, $propertyValue, $strict = false)
    {
        if ($this->condition) {
            $this->finishCondition();
        }

        if ($this->property) {
            $condition = $this->propertyValueConditionClass->newInstance();
        } elseif ($this->palette) {
            $condition = $this->palettePropertyValueConditionClass->newInstance();
        } else {
            throw new DcGeneralRuntimeException(
                'Does not know where to create the property-value condition, please create a palette or property first'
            );
        }

        $condition->setPropertyName($propertyName);
        $condition->setPropertyValue($propertyValue);
        $condition->setStrict($strict);

        $event = new CreatePropertyValueConditionEvent($condition, $this);
        $this->dispatchEvent($event);
        $condition = $event->getPropertyValueCondition();

        $event = new CreateConditionEvent($condition, $this);
        $this->dispatchEvent($event);
        $condition = $event->getCondition();

        $this->condition = $condition;

        return $this;
    }