/// <summary>
        /// Constructor
        /// Initial MA environment.
        /// Make sure only one instance exists during runtime. CreateMonitor cannot be invoked until before instance is disposed
        /// </summary>
        public static MessageAnalyzerMonitor CreateMonitor(List <string> groupList = null, bool isMAInstalled = false)
        {
            if (instance != null)
            {
                instance.Dispose();
            }

            instance = new MessageAnalyzerMonitor(groupList, isMAInstalled);
            return(instance);
        }
 protected virtual void Dispose(bool disposing)
 {
     if (!disposed)
     {
         if (disposing)
         {
             // Dispose managed resources.
             if (monitor != null)
             {
                 monitor.Dispose();
                 MessageAnalyzerMonitor.instance = null;
             }
         }
         disposed = true;
     }
 }