docs: def prepare_destruction(self):
          """Prepares the model for destruction
  
          Unregister itself as observer from the state machine and the root state
          """
          if self.state_machine is None:
              logger.verbose("Multiple calls of prepare destruction for {0}".format(self))
          self.destruction_signal.emit()
          if self.history is not None:
              self.history.prepare_destruction()
          if self.auto_backup is not None:
              self.auto_backup.prepare_destruction()
          try:
              self.unregister_observer(self)
              self.root_state.unregister_observer(self)
          except KeyError:  # Might happen if the observer was already unregistered
              pass
          with self.state_machine.modification_lock():
              self.root_state.prepare_destruction()
          self.root_state = None
          self.state_machine = None
          super(StateMachineModel, self).prepare_destruction()