             setCallout(createDynamicPartInstance("dropDown") as Callout);
         
         if (callout)
+        {
+            // close the callout if the CalloutButton is removed
+            addEventListener(Event.REMOVED_FROM_STAGE, button_removedFromStage);
+            
             callout.open(this, false);
+        }
     }
     
     /**

        // destroyed by calloutDestructionPolicy
        if (callout)
        {
            // TODO (jasonsj): close params?
            
            // Dispatch the close event after the callout's PopUpEvent.CLOSE fires
            callout.close();
        }

        
        dispatchEvent(new DropDownEvent(DropDownEvent.CLOSE));
    }
    
    /**
     *  @private
     */
    private function button_removedFromStage(event:Event):void
    {
        if (!isDropDownOpen)
            return;
        
        // Hide the callout immediately instead of waiting for the skin
        // state to transition to "closed"
        callout.visible = false;

        closeDropDown();
    }
}
}