public function delete($key)
    {
        Arguments::define($this->getKeyType())->check($key);

        $cloned = array_merge($this->value);

        unset($cloned[$key]);

        return static::of($cloned);
    }