def clone(self, population):
        """
            Copy the holder just enough to be able to run a new simulation without modifying the original simulation.
        """
        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
Copy the holder just enough to be able to run a new simulation without modifying the original simulation.