public function setData(
        array $data,
        $expires = 0,
        $path = null,
        $domain = null,
        $secure = false,
        $httponly = false
    ) {
        //argment test
        Argument::i()
            //argument 2 must be a integer
            ->test(2, 'int')
            //argument 3 must be a string or null
            ->test(3, 'string', 'null')
            //argument 4 must be a string or null
            ->test(4, 'string', 'null')
            //argument 5 must be a boolean
            ->test(5, 'bool')
            //argument 6 must be a boolean
            ->test(6, 'bool');

        foreach ($data as $key => $value) {
            $this->set($key, $value, $expires, $path, $domain, $secure, $httponly);
        }

        return $this;
    }