     {
         super.commitProperties();
         
+        // Do not commit position changes if closed (no owner) or owner was 
+        // removed from the display list.
+        if (!owner || !owner.parent)
+            return;
+        
         // Compute actual positions when using AUTO
         commitAutoPosition();
         

            
            return;
        }
        
        // Do not change the actual position if the owner has been removed
        if (!owner || !owner.parent)
            return;

        var ownerBounds:Rectangle = owner.getBounds(systemManager.getSandboxRoot());


    {
        var ownerVisualElement:IVisualElement = owner as IVisualElement;

        // Sanity check to verify owner is still on the display list. If not,
        // leave the arrow in the current position.
        if (!arrow || !ownerVisualElement ||
            (arrowDirection == ArrowDirection.NONE) ||
            (!ownerVisualElement.parent))
            return;

        var isStartPosition:Boolean = false;
