class_docstr: Tests that run through a game, then verify it still works in a replay.
docstr: Shut down the SC2 instances.
docstr_tok: ["Shut","down","the","SC2","instances","."]
code: def close(self):  # Instead of tearDown.
      """Shut down the SC2 instances."""
      # Don't use parallel since it might be broken by an exception.
      if hasattr(self, "_controllers") and self._controllers:
          for c in self._controllers:
              c.quit()
          self._controllers = None
      if hasattr(self, "_sc2_procs") and self._sc2_procs:
          for p in self._sc2_procs:
              p.close()
          self._sc2_procs = None
  
      if hasattr(self, "_ports") and self._ports:
          portspicker.return_ports(self._ports)
          self._ports = None
      if hasattr(self, "_parallel") and self._parallel is not None:
          self._parallel.shutdown()
          self._parallel = None
  
imports: import functools
  from absl import logging
  from absl.testing import absltest
  from pysc2 import maps
  from pysc2 import run_configs
  from pysc2.lib import actions
  from pysc2.lib import features
  from pysc2.lib import point
  from pysc2.lib import portspicker
  from pysc2.lib import run_parallel
  from pysc2.lib import stopwatch
  from s2clientprotocol import common_pb2
  from s2clientprotocol import debug_pb2
  from s2clientprotocol import error_pb2
  from s2clientprotocol import raw_pb2
  from s2clientprotocol import sc2api_pb2
label_desc: Use image node_id 4 for calling the GameReplayTestCase obj's underlying member method code with example usage: obj.close() without return types