public function set($identifier, $value, $replace = true)
    {
        if (!is_null($value) && !is_scalar($value) && !is_array($value) && !(is_object($value) && method_exists($value, '__toString')))
        {
            throw new \UnexpectedValueException(
                'The http parameter value must be a string or object implementing __toString(), "'.gettype($value).'" given.'
            );
        }

        $keys = $this->_parseIdentifier($identifier);

        foreach(array_reverse($keys, true) as $key)
        {
            if ($replace !== true && isset($this[$key])) {
                break;
            }

            $value = array($key => $value);
            $this->_data = $this->_mergeArrays($this->_data, $value);
        }

        return $this;
    }