   ///  - `actionValuesAgainstBestResponder`, a tensor of shape
   ///    `allInformationStates.count` x `allActions.count`,
   ///  - `counterfactualReachProbability`, a tensor of shape `allInformationStates.count`.
-  mutating func actionValuesAgainstBestResponder<Policy: StochasticPolicy>(
+  func actionValuesAgainstBestResponder<Policy: StochasticPolicy>(
     player: Player,
     policy: Policy
   ) -> (

    self.game = informationStateCache.game
  }

  mutating func reset() {
    reachProbabilities = [[:], [:]]
    counterfactualReachProbabilities = [[:], [:]]
    chanceReachProbabilities = [[:], [:]]

  /// Compute the value of a state for each player, caching action values and reach probabilities
  /// of child states. The `player` argument controls which player is considered "active" for
  /// purposes of counterfactual reach probabilities.
  func computeValues<P0: StochasticPolicy, P1: StochasticPolicy>(
    of state: Game.State,
    for player: Player,
    player0Policy: P0,
