/// <summary>
 /// Shutdown the FSM
 /// </summary>
 public void Stop()
 {
     if (Active)
     {
         Active = false;
         MainWorker.Join();
         StateWatcherWorker.Join();
     }
 }
 /// <summary>
 /// Fire up the FSM
 /// </summary>
 public void Start()
 {
     if (!Active)
     {
         Active = true;
         MainWorker.Start();
         StateWatcherWorker.Start();
     }
 }