<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 def time_travel(self, branch, turn, tick=None, chars='all', cb=None, block=True):
 """Move to a different point in the timestream. Needs ``branch`` and ``turn`` arguments. The ``tick`` is optional; if unspecified, you'll travel to the last tick in the turn. May take a callback function ``cb``, which will receive a dictionary describing changes to the characters in ``chars``. ``chars`` defaults to 'all', indicating that every character should be included, but may be a list of character names to include. With ``block=True`` (the default), wait until finished computing differences before returning. Otherwise my ``branch``, ``turn``, and ``tick`` will stay where they are until that's done. """

        if cb and not chars:
            raise TypeError("Callbacks require chars")
        if cb is not None and not callable(cb):
            raise TypeError("Uncallable callback")
        return self.handle(
            'time_travel',
            block=block,
            branch=branch,
            turn=turn,
            tick=tick,
            chars=chars,
            cb=partial(self._upd_and_cb, cb)
        )