I think you should not check `if (result.include? key)`, in this block, because you miss others elements. what do you think about: `retrieve_cache_key(key.to_a - [key])`?