As you see this code is moved from the ``Query`` class, which shouldnt be responsible for generating the cache key itself. It is a better target for this logic, because it encapsulates the state. Much better than Query