protected override void     Dispose(bool disposing)
        {
            if (disposing)
            {
                if (mGViewer != null)
                {
                    mGViewer.MouseClick -= MGViewer_MouseClick;
                    mGViewer.ObjectUnderMouseCursorChanged -= MGViewer_ObjectUnderMouseCursorChanged;
                    mGViewer.Dispose();
                    mGViewer = null;
                }

                if (mCSharpFSMClone != null)
                {
                    mCSharpFSMClone.Dispose();
                    mCSharpFSMClone = null;
                }

                if (components != null)
                {
                    components.Dispose();
                }
            }
            base.Dispose(disposing);
        }