class_docstr: A simulator model, which wraps a copy of the true environment.
  
  Assumptions:
    - The environment (including RNG) is fully copyable via `deepcopy`.
    - Environment dynamics (modulo episode resets) are deterministic.
class_docstr_tok: ["A","simulator","model",",","which","wraps","a","copy","of","the","true","environment",".","Assumptions",":","-","The","environment","(","including","RNG",")","is","fully","copyable","via","`","deepcopy","`",".","-","Environment","dynamics","(","modulo","episode","resets",")","are","deterministic","."]
code: def update(
      self,
      timestep: dm_env.TimeStep,
      action: types.Action,
      next_timestep: dm_env.TimeStep,
  ) -> dm_env.TimeStep:
      # Call update() once per 'real' experience to keep this env in sync.
      return self.step(action)
  
file_path: acme/acme/agents/tf/mcts/models/simulator.py
imports: import copy
  import dataclasses
  from acme.agents.tf.mcts import types
  from acme.agents.tf.mcts.models import base
  import dm_env
label_desc: Use image node_id 2 for calling the Simulator obj's underlying member method code with example usage: obj.update(timestep, action, next_timestep) and returns: self