<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 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)