'Creates a new SimulationManager with the provided stashes (if immutable), or sets the stashes (if not immutable). Used
to abstract away immutability.
:returns:   A SimulationManager.'

def _successor(self, new_stashes):

    if (self.DROP in new_stashes):
        del new_stashes[self.DROP]
    if (not self._immutable):
        self.stashes = new_stashes
        return self
    else:
        return self.copy(stashes=new_stashes)
