docs: def recover_specific_version(self, pointer_on_version_to_recover):
          """ Recovers a specific version of the all_time_history element by doing several undos and redos.
  
          :param pointer_on_version_to_recover: the id of the list element which is to recover
          :return:
          """
          # search for traceable path -> list of action to undo and list of action to redo
          logger.info("Going to history status #{0}".format(pointer_on_version_to_recover))
          undo_redo_list = self.modifications.get_undo_redo_list_from_active_trail_history_item_to_version_id(pointer_on_version_to_recover)
          logger.debug("Multiple undo and redo to reach modification history element of version {0} "
                       "-> undo-redo-list is: {1}".format(pointer_on_version_to_recover, undo_redo_list))
          # logger.debug("acquire lock 1 - for multiple action {0}".format(self.modifications.trail_pointer))
          self.state_machine_model.storage_lock.acquire()
          # logger.debug("acquired lock 1 - for multiple action {0}".format(self.modifications.trail_pointer))
          for elem in undo_redo_list:
              if elem[1] == 'undo':
                  # do undo
                  self._undo(elem[0])
              else:
                  # do redo
                  self._redo(elem[0])
  
          self.modifications.reorganize_trail_history_for_version_id(pointer_on_version_to_recover)
          self.change_count += 1
          # logger.debug("release lock 1 - for multiple action {0}".format(self.modifications.trail_pointer))
          self.state_machine_model.storage_lock.release()