          */ 
         private var iconGroup:Group;
         
+        /**
+         * @private
+         * Saves our label's previous textAlign value.
+         */ 
+        private var prevTextAlign:String;
+        
         //--------------------------------------------------------------------------
         //
         //  Properties

                return;
            
            // If we have an icon to render we ensure the necessary
            // parts are created and we configure a linear layout
            // instance to manage our icon and label parts.
            if (_hostComponent.icon && labelDisplay)
            {
                if (iconChanged)
                    constructIconParts(true);
                
                if (groupPaddingChanged)
                {
                    iconGroup.left = _iconGroupPaddingLeft;
                    iconGroup.right = _iconGroupPaddingRight;
                    iconGroup.top = _iconGroupPaddingTop;
                    iconGroup.bottom = _iconGroupPaddingBottom;
                    groupPaddingChanged = false;
                }
                
                var iconPlacement:String = getStyle("iconPlacement");
                
                var horizontal:Boolean = 
                    iconPlacement == IconPlacement.LEFT ||
                    iconPlacement == IconPlacement.RIGHT;
                
                iconGroup.layout =  horizontal ? 
                    new HorizontalLayout() : new VerticalLayout();
                
                // Initialize our layout alignment and position the icon in 
                // the correct child slot per our iconPlacement.
                Object(iconGroup.layout).horizontalAlign = HorizontalAlign.CENTER;
                Object(iconGroup.layout).verticalAlign = VerticalAlign.MIDDLE;
                Object(iconGroup.layout).gap = _gap;
                
                var firstElement:IVisualElement = 
                    (iconPlacement == IconPlacement.LEFT || 
                        iconPlacement == IconPlacement.TOP) ? 
                    iconDisplay : IVisualElement(labelDisplay);
                
                iconGroup.setElementIndex(firstElement, 0);
                
                // Ensure we account for empty layout so that we don't apply layout gap.
                IVisualElement(labelDisplay).includeInLayout = labelDisplay.text && labelDisplay.text.length;
            }
            else
            {

                {
                    removeElement(iconGroup);
                    addElement(IVisualElement(labelDisplay));
                    
                    if (labelDisplay is IStyleClient)
                        IStyleClient(labelDisplay).setStyle("textAlign", prevTextAlign);
                }
            }
        }
        
        /**
         *  @private
         */
        private function alignLabelForPlacement():void
        {
            if (labelDisplay is IStyleClient)
            {
                var iconPlacement:String = getStyle("iconPlacement");
                
                var alignment:String = 
                    iconPlacement == IconPlacement.LEFT ||
                    iconPlacement == IconPlacement.RIGHT ? "left" : "center"
                
                IStyleClient(labelDisplay).setStyle("textAlign", alignment);
            }
        }
        
