public override void Fire(TTrigger trigger)
 {
     if (m_monitor.TryEnter())
     {
         try { base.Fire(trigger); }
         finally { m_monitor.Exit(); }
     }
     else
     {
         if (IsEnabled)
         {
             ExecutionHelper.ThrowInTransition();
         }
     }
 }
 public override void MoveToState(TState state, StateTransitionOption option = StateTransitionOption.Default)
 {
     if (m_monitor.TryEnter())
     {
         try { base.MoveToState(state, option); }
         finally { m_monitor.Exit(); }
     }
     else
     {
         if (IsEnabled)
         {
             ExecutionHelper.ThrowInTransition();
         }
     }
 }
 public override void Fire <TArgument>(ParameterizedTrigger <TTrigger, TArgument> parameterizedTrigger,
                                       TArgument argument)
 {
     if (m_monitor.TryEnter())
     {
         try { base.Fire(parameterizedTrigger, argument); }
         finally { m_monitor.Exit(); }
     }
     else
     {
         if (IsEnabled)
         {
             ExecutionHelper.ThrowInTransition();
         }
     }
 }