public void Execute(bool buttonStateChanged)
        {
            lock (this)
            {
                bool mouseLeftButtonDownPressed  = false;
                bool mouseRightButtonDownPressed = false;
                if (m_Actions != null)
                {
                    mouseLeftButtonDownPressed  = m_Actions.Exists(a => a.Action == ResponseActions.MouseLeftButtonDown);
                    mouseRightButtonDownPressed = m_Actions.Exists(a => a.Action == ResponseActions.MouseRightButtonDown);
                    m_Actions.ForEach(action => Execute(buttonStateChanged, action));
                }
                if (mouseLeftButtonDownPressed && !pressed)
                {
                    pressed = true;
                    m_InputSimulator.DoLeftDown();
                }
                if (m_Paused)
                {
                    return;
                }

                ExecuteMouseMoveAction(mouseLeftButtonDownPressed, mouseRightButtonDownPressed);
            }
        }