     
     //--------------------------------------------------------------------------
     //
-    //  Private Methods
+    //  Private and protected methods
     //
     //-------------------------------------------------------------------------- 
 
     /**
-     *  @private 
-     */
-    private function addOrRemovePopUp():void
+     *  @private
+     */
+    protected function addOrRemovePopUp():void
     {
         if (!addedToStage)
             return;

        bounds.width = size.x;
        bounds.height = size.y;
    }
    
    /**
     *  @private 
     */ 
    private function applyPopUpTransform(unscaledWidth:Number, unscaledHeight:Number):void
    {
        if (!popUpIsDisplayed)
            return;

        PopUpManager.removePopUp(popUp);
        popUpIsDisplayed = false;
    }

    /**
     *  @private
     */
    protected function determinePosition(placement:String, popUpWidth:Number, popUpHeight:Number,
                                           matrix:Matrix, registrationPoint:Point, bounds:Rectangle):void
    {
        switch(placement)
