docs: def parent(self, parent):
          """Setter for the parent state of the state element
  
          :param rafcon.core.states.state.State parent: Parent state or None
          """
          if parent is None:
              self._parent = None
          else:
              from rafcon.core.states.state import State
              assert isinstance(parent, State)
  
              old_parent = self.parent
              self._parent = ref(parent)
  
              valid, message = self._check_validity()
              if not valid:
                  if not old_parent:
                      self._parent = None
                  else:
                      self._parent = ref(old_parent)
  
                  class_name = self.__class__.__name__
                  if global_config.get_config_value("LIBRARY_RECOVERY_MODE") is True:
                      do_delete_item = True
                      # In case of just the data type is wrong raise an Exception but keep the data flow
                      if "not have matching data types" in message:
                          do_delete_item = False
                          self._parent = ref(parent)
                      raise RecoveryModeException("{0} invalid within state \"{1}\" (id {2}): {3}".format(
                          class_name, parent.name, parent.state_id, message), do_delete_item=do_delete_item)
                  else:
                      raise ValueError("{0} invalid within state \"{1}\" (id {2}): {3} {4}".format(
                          class_name, parent.name, parent.state_id, message, self))