code: def clone(self, population):
          
          new = empty_clone(self)
          new_dict = new.__dict__
  
          for key, value in self.__dict__.items():
              if key not in ('population', 'formula', 'simulation'):
                  new_dict[key] = value
  
          new_dict['population'] = population
          new_dict['simulation'] = population.simulation
  
          return new
docs: Copy the holder just enough to be able to run a new simulation without modifying the original simulation.