docs: def action_signal_triggered(self, model, prop_name, info):
          """This method notifies the parent state and child state models about complex actions
          """
          msg = info.arg
          # print("action_signal_triggered state: ", self.state.state_id, model, prop_name, info)
          if msg.action.startswith('sm_notification_'):
              return
          # # affected child propagation from state
          # if hasattr(self, 'states'):
          #     for m in info['arg'].affected_models:
          #         print(m, self.states)
          #         print([m is mm for mm in self.states.values()], [m in self for m in info['arg'].affected_models], \)
          #             [m in self.states.values() for m in info['arg'].affected_models]
          if any([m in self for m in info['arg'].affected_models]):
              if not msg.action.startswith('parent_notification_'):
                  new_msg = msg._replace(action='parent_notification_' + msg.action)
              else:
                  new_msg = msg
              for m in info['arg'].affected_models:
                  # print('???propagate it to', m, m.parent)
                  if isinstance(m, AbstractStateModel) and m in self:
                      # print('!!!propagate it from {0} to {1} {2}'.format(self.state.state_id, m.state.state_id, m))
                      m.action_signal.emit(new_msg)
  
          if msg.action.startswith('parent_notification_'):
              return
  
          # recursive propagation of action signal TODO remove finally
          if self.parent is not None:
              # Notify parent about change of meta data
              info.arg = msg
              # print("DONE1", self.state.state_id, msg)
              self.parent.action_signal_triggered(model, prop_name, info)
              # print("FINISH DONE1", self.state.state_id, msg)
          # state machine propagation of action signal (indirect) TODO remove finally
          elif not msg.action.startswith('sm_notification_'):  # Prevent recursive call
              # If we are the root state, inform the state machine model by emitting our own meta signal.
              # To make the signal distinguishable for a change of meta data to our state, the change property of
              # the message is prepended with 'sm_notification_'
              # print("DONE2", self.state.state_id, msg)
              new_msg = msg._replace(action='sm_notification_' + msg.action)
              self.action_signal.emit(new_msg)
              # print("FINISH DONE2", self.state.state_id, msg)
          else:
              # print("DONE3 NOTHING")
              pass