private function _validateKey($key): string 
    {
        if(
            !\is_scalar($key) &&
            !\is_object($key) &&
            !\method_exists($key, "__toString")
        ) {
            throw InvalidKeyException::invalidKey();
        }
        return (string) $key;
    }