public function hasKey($key)
    {
        if (!is_string($key) && !is_int($key)) {
            throw new InvalidIntOrStringException('key', $key);
        }

        if (!is_array($this->value)) {
            throw new InvalidArrayException($this->name, $this->value);
        }

        if (!array_key_exists($key, $this->value)) {
            throw new ArrayKeyNotExistsException($this->name, $key);
        }

        return $this;
    }