      */
     public var target:Object;
 
+    /**
+     *  The cached target for which we applied our override.
+     *  We keep track of the applied target while applied since
+     *  our target may be swapped out in the owning document and 
+     *  we want to make sure we roll back the correct (original) 
+     *  element. 
+     *
+     *  @private
+     */
+    private var appliedTarget:Object;
+    
     //--------------------------------------------------------------------------
     //
     //  Overridden methods: EventDispatcher

     */
    public function remove(parent:UIComponent):void
    {
        var obj:* = getOverrideContext(target, parent);
        if (obj != null)
        {
	        if (handlerFunction != null)

        var obj:* = getOverrideContext(target, parent);
        if (obj != null)
        {
        	appliedTarget = obj;
	        var uiObj:UIComponent = obj as UIComponent;
	
	        if (!installedHandlers)
