      *  @playerversion AIR 1.5
      *  @productversion Flex 4
      */
-    public function remove(parent:UIComponent):void
+    override public function remove(parent:UIComponent):void
     {
         var dest:* = getOverrideContext(destination, parent);
         var localItems:Array;
         var i:int;
         
         if (!added)
+        {
+            if (dest == null)
+            {
+                // It seems our override is no longer active, but we were never
+                // able to successfully apply ourselves, so remove our context
+                // listener if applicable.
+                removeContextListener();
+                applied = false;
+                parentContext = null;
+            }
             return;
+        }
                     
         // Coerce to array if not already an array, or we wish
         // to treat the array as *the* item to add (isArray == true)

     *  @playerversion AIR 1.5
     *  @productversion Flex 4
     */
    public function apply(parent:UIComponent):void
    {
        var dest:* = destination = getOverrideContext(destination, parent);
        var localItems:Array;
        
        // Coerce to array if not already an array, or we wish
        // to treat the array as *the* item to add (isArray == true)

        if (destructionPolicy == "auto")
            destroyInstance();
            
        // Clear our flags and override context.
        added = false;
        applied = false;
        parentContext = null;
    }
       
    /**
