I am trying to understand how subproblem caching works. Specifically, how is the locally cached result for a subproblem invalidated when some change to a relationship results in the subproblem outcome to be different. Assume for this discussion that the application does not care about the new enemy problem and therefore does not pass a ‘zedtoken’ in the check request.