     {
         return iconHolder ? iconHolder : iconInstance as DisplayObject;
     }
-    
+
     /**
      *  Sets the current icon for the iconDisplay skin part.
      *  The iconDisplay skin part is created/set-up on demand.

            iconChanged = false;
            setIcon(getStyle("icon"));
        }
        
        if (enabledChanged)
        {
            commitDisabled();
            enabledChanged = false;
        }
    }
    
    /**
     *  @private 
     */ 
    override protected function measure():void
    {        
        super.measure();
        
        var iconPlacement:String = getStyle("iconPlacement");
        
        var textWidth:Number = 0;
        var textHeight:Number = 0;
        
        // reset text if it was truncated before.
        if (hostComponent && labelDisplay.isTruncated)
            labelDisplay.text = hostComponent.label;
        labelDisplay.commitStyles();
        
        if (hostComponent && hostComponent.label != "")
        {
            // FIXME (jasonsj): was previously textWidth + UITextField.TEXT_WIDTH_PADDING + 1;
            //                  +1 originates from MX Button without explaination
            var textSize:Point = labelDisplay.measuredTextSize;
            textWidth = textSize.x + 1;
            textHeight = textSize.y;
        }
        else
        {
            textHeight = measureText("Wj").height + UITextField.TEXT_HEIGHT_PADDING;
        }
        
        var iconDisplay:DisplayObject = getIconDisplay();
        var iconWidth:Number = iconDisplay ? iconDisplay.width : 0;
        var iconHeight:Number = iconDisplay ? iconDisplay.height : 0;
        var w:Number = 0;
        var h:Number = 0;
        
        if (iconDisplay is ILayoutElement)
        {
            iconWidth = ILayoutElement(iconDisplay).getPreferredBoundsWidth(false);
            iconHeight = ILayoutElement(iconDisplay).getPreferredBoundsHeight(false);
        }
        
        if (iconPlacement == IconPlacement.LEFT ||
            iconPlacement == IconPlacement.RIGHT)
        {
            w = textWidth + iconWidth;
            if (textWidth && iconWidth)
                w += layoutGap;
            h = Math.max(textHeight, iconHeight);
        }
        else
        {
            w = Math.max(textWidth, iconWidth);
            h = textHeight + iconHeight;
            if (textHeight && iconHeight)
                h += layoutGap;
        }
        
        // minimums
        measuredMinWidth = w
        measuredMinHeight = h;
        
        w += layoutPaddingLeft + layoutPaddingRight;
        h += layoutPaddingTop + layoutPaddingBottom;
        
        // measured sizes are no smaller than spec for touch-based sizes
        measuredWidth = Math.max(w, layoutMeasuredWidth);
        measuredHeight = Math.max(h, layoutMeasuredHeight);
    }
    
    /**
     *  @private 
     */ 
    override protected function updateDisplayList(unscaledWidth:Number, unscaledHeight:Number):void
    {
        var labelWidth:Number = 0;
        var labelHeight:Number = 0;
        
        var labelX:Number = 0;
        var labelY:Number = 0;
        
        var iconWidth:Number = 0;
        var iconHeight:Number = 0;
        
        var iconX:Number = 0;
        var iconY:Number = 0;
        
        var horizontalGap:Number = 0;
        var verticalGap:Number = 0;
        
        var iconPlacement:String = getStyle("iconPlacement");
        
        var textWidth:Number = 0;
        var textHeight:Number = 0;
        var textDescent:Number = 0;
        
        // reset text if it was truncated before.
        if (hostComponent && labelDisplay.isTruncated)
            labelDisplay.text = hostComponent.label;
        labelDisplay.commitStyles();
        
        if (hostComponent && hostComponent.label != "")
        {
            // FIXME (jasonsj): was previously textWidth + UITextField.TEXT_WIDTH_PADDING + 1;

        else
        {
            verticalGap = layoutGap;

            if (iconHeight == 0 || !hostComponent || hostComponent.label == "")
                verticalGap = 0;

            if (textWidth > 0)
            {
                // label width is constrained to left and right edges
                labelWidth = Math.max(viewWidth - layoutPaddingLeft - layoutPaddingRight, 0);

                // label height is constrained to available height after icon, padding and gap heights
                labelHeight = Math.max(viewHeight - iconHeight - layoutPaddingTop - layoutPaddingBottom - verticalGap, 0);
                labelHeight = Math.min(labelHeight, textHeight);
