 import mx.events.CollectionEvent;
 import mx.events.CollectionEventKind;
 import mx.events.FlexEvent;
+import mx.events.FlexMouseEvent;
 import mx.events.ListEvent;
+import mx.events.MarshalMouseEvent;
 import mx.events.MenuEvent;
 import mx.managers.IFocusManagerContainer;
+import mx.managers.ISystemManager2;
 import mx.managers.PopUpManager;
 
 use namespace mx_internal;

    /**
     *  @private
     */
    private function mouseDownOutsideHandler(event:MouseEvent):void
    {
        if (!isMouseOverMenu(event) && !isMouseOverMenuBarItem(event))
            hideAllMenus();
    }



            // Now that the menu is no longer visible, it doesn't need
            // to listen to mouseDown events anymore.
            var sbRoot:DisplayObject = ISystemManager2(systemManager).getSandboxRoot();
            sbRoot.removeEventListener(MouseEvent.MOUSE_DOWN, mouseDownOutsideHandler);
            removeEventListener(MarshalMouseEvent.MOUSE_DOWN, mouseDownOutsideHandler);

            // Fire an event
            var menuEvent:MenuEvent = new MenuEvent(MenuEvent.MENU_HIDE);
