docs: def restart(self, subthread=None):
          """Restarts the loop function
  
          Tries to restart the loop thread using the current thread. Raises RuntimeError if a previous call to Loop.start
          was not made.
  
          :param subthread: True/False value used when calling Loop.start(subthread=subthread). If set to None it uses the
          same value as the last call to Loop.start.
          """
          if self._in_subthread is None:
              raise RuntimeError('A call to start must first be placed before restart')
          self.stop(silent=True)
          if subthread is None:
              subthread = self._in_subthread
          self.__init__(self.target, self.args, self.kwargs, self.on_stop)
          self.start(subthread=subthread)