Move states from one stash to another.

        :param from_stash:  Take matching states from this stash.
        :param to_stash:    Put matching states into this stash.
        :param filter_func: Stash states that match this filter. Should be a function that takes
                            a state and returns True or False. (default: stash all states)

        :returns:           The simulation manager, for chaining.
        :rtype:             SimulationManager

def move(self, from_stash, to_stash, filter_func=None):
        """
        Move states from one stash to another.

        :param from_stash:  Take matching states from this stash.
        :param to_stash:    Put matching states into this stash.
        :param filter_func: Stash states that match this filter. Should be a function that takes
                            a state and returns True or False. (default: stash all states)

        :returns:           The simulation manager, for chaining.
        :rtype:             SimulationManager
        """
        filter_func = filter_func or (lambda s: True)
        stash_splitter = lambda states: reversed(self._filter_states(filter_func, states))
        return self.split(stash_splitter, from_stash=from_stash, to_stash=to_stash)