     self.game = informationStateCache.game
   }
 
-  mutating func reset() {
+  func reset() {
     reachProbabilities = [[:], [:]]
     counterfactualReachProbabilities = [[:], [:]]
     chanceReachProbabilities = [[:], [:]]


  /// The exploitability descent loss for a policy.
  @differentiable(wrt: policy)
  public mutating func loss(for policy: TensorFlowTabularPolicy<Game>) -> Double {
    let (nashConv0, qValues0, counterfactualReachProbabilities0) =
      actionValuesAgainstBestResponder(
        player: .player(0),


/// Calculates state and action values and three kinds of state reach probabilities for a pair of
/// policies, caching intermediate results.
public final class ActionValueCalculator<Game: GameProtocol> {
  public let informationStateCache: InformationStateCache<Game>
  public let game: Game
  /// Probabilities of reaching each information state, conditional on the supplied policies.
