code: def dump_simulation(simulation, directory):
      
      parent_directory = os.path.abspath(os.path.join(directory, os.pardir))
      if not os.path.isdir(parent_directory):  # To deal with reforms
          os.mkdir(parent_directory)
      if not os.path.isdir(directory):
          os.mkdir(directory)
  
      if os.listdir(directory):
          raise ValueError("Directory '{}' is not empty".format(directory))
  
      entities_dump_dir = os.path.join(directory, "__entities__")
      os.mkdir(entities_dump_dir)
  
      for entity in simulation.populations.values():
          # Dump entity structure
          _dump_entity(entity, entities_dump_dir)
  
          # Dump variable values
          for holder in entity._holders.values():
              _dump_holder(holder, directory)
docs: Write simulation data to directory, so that it can be restored later.