                     if (systemManager.isTopLevelRoot() &&
                        (actualType == MouseEvent.MOUSE_UP || actualType == MouseEvent.MOUSE_MOVE))
                     {
-                        systemManager.stage.removeEventListener(actualType, eventProxy.marshalListener);
+                        if (systemManager.stage)
+                            systemManager.stage.removeEventListener(actualType, eventProxy.marshalListener);
                     }
-
+			        // Remove both listeners in case the system manager was added
+			        // or removed from the stage after the listener was added.
                     Object(systemManager).$removeEventListener(actualType, eventProxy.marshalListener, true);
                 }
             }

			{
				if (systemManager.isTopLevelRoot())
				{
					systemManager.stage.addEventListener(MouseEvent.MOUSE_MOVE, resetMouseCursorTracking, true, EventPriority.CURSOR_MANAGEMENT + 1, true);
					addEventListenerToSandboxes(SandboxMouseEvent.MOUSE_MOVE_SOMEWHERE, resetMouseCursorTracking, true, EventPriority.CURSOR_MANAGEMENT + 1, true);
				}
				else

	 */
	private function multiWindowRedispatcher(event:Event):void
	{
		if (!SystemManagerGlobals.dispatchingEventToOtherSystemManagers)
		{
			dispatchEventToOtherSystemManagers(event);
		}
