public function addCondition($condition, $scope = self::VISIBLE)
    {
        if ($condition instanceof PaletteConditionInterface) {
            $this->addPaletteCondition($condition);
            return $this;
        }

        if ($condition instanceof PropertyConditionInterface) {
            $this->addPropertyCondition($condition, $scope);
            return $this;
        }

        $type = \is_object($condition) ? \get_class($condition) : \gettype($condition);
        throw new DcGeneralInvalidArgumentException('Cannot handle condition of type [' . $type . ']');
    }