public function addItemIfNotEmpty(string $key, $value, bool $checkIfKeyExists = false, bool $strict = false):self
    {
        if (($strict && $value !== null) || (!$strict && $value)) {
            if ($checkIfKeyExists && array_key_exists($key, $this->array)) {
                throw new Exception('Key [' . $key . '] already exists');
            }
            if ($value === self::DELETE) {
                if (array_key_exists($key, $this->array)) {
                    unset($this->array[$key]);
                }
            } else {
                $this->array[$key] = $value;
            }
        }
        return $this;
    }