code: def split(self, stash_splitter=None, stash_ranker=None, state_ranker=None,
                limit=8, from_stash='active', to_stash='stashed'):
          states = self._fetch_states(stash=from_stash)
          if stash_splitter is not None:
              keep, split = stash_splitter(states)
          elif stash_ranker is not None:
              ranked_paths = stash_ranker(states)
              keep, split = ranked_paths[:limit], ranked_paths[limit:]
          elif state_ranker is not None:
              ranked_paths = sorted(states, key=state_ranker)
              keep, split = ranked_paths[:limit], ranked_paths[limit:]
          else:
              keep, split = states[:limit], states[limit:]
          keep, split = map(list, (keep, split))
          self._clear_states(from_stash)
          self._store_states(from_stash, keep)
          self._store_states(to_stash, split)
          return self