 import flash.events.Event;
 import flash.geom.Rectangle;
 import flash.text.engine.TextLine;
+
+import flashx.textLayout.formats.LineBreak;
 
 import mx.core.mx_internal;
 import mx.resources.IResourceManager;

     */
    public function stylesInitialized():void
    {
    }

    /**


        composeTextLines(explicitWidth, explicitHeight);

        // If width/height not explicitly set, put on next pixel boundary for 
        // crisp edges.  This should not impact isOverset which was calculated
        // with the pre-adjusted bounds values.  If explcitly set, use it so
        // that a recomposition can possibily be avoided in updateDisplayList().
        if (mx_internal::bounds.width != explicitWidth)
            mx_internal::bounds.width = Math.ceil(mx_internal::bounds.width);

        measuredWidth = mx_internal::bounds.width;         
        
        if (mx_internal::bounds.height != explicitHeight)
            mx_internal::bounds.height = Math.ceil(mx_internal::bounds.height);

        measuredHeight = mx_internal::bounds.height;  
        
        //trace("measure", measuredWidth, measuredHeight);
    }
            
    /**
     *  @private
     */
    override protected function updateDisplayList(unscaledWidth:Number, 
                                                  unscaledHeight:Number):void
    {
        //trace(updateDisplayList", unscaledWidth, unscaledHeight);
        
        super.updateDisplayList(unscaledWidth, unscaledHeight);

        // The updateDisplayList() method of a GraphicElement can get called
        // when its style chain hasn't been initialized.
        // In that case, composeTextLines() must not be called.
        if (!mx_internal::styleChainInitialized)
            return;

        // Figure out if a compose is needed or maybe just clip what is already
        // composed.

        var compose:Boolean = false;
        var forceClip:Boolean = false;
        
        if (mx_internal::stylesChanged || 
           isNaN(mx_internal::bounds.height) ||
           (unscaledHeight > mx_internal::bounds.height && 
           mx_internal::isOverset)) 
        {
            // Style changed, composition hasn't been done or it has been done
            // but more height is needed and it's possible there is more text 
            // to compose since it didn't all fit before.
            compose = true;
        }
        else if (mx_internal::lineBreakToFit)
        {
            // toFit line breaks so compose if width isn't the same.
            if (unscaledWidth != mx_internal::bounds.width)
                compose = true;            
        }
        else
        {
            // explicit line breaks so compose only if more width is needed and
            // there is more text to compose.
            if (unscaledWidth > mx_internal::bounds.width && 
                mx_internal::isOverset)
            {
                compose = true;
            }    
        }
                
        if (compose)
        {
            // Compose and clip based on value of isOverset.
            composeTextLines(unscaledWidth, unscaledHeight);
        }        
        else if (unscaledHeight != mx_internal::bounds.height ||
                 unscaledWidth != mx_internal::bounds.width)
        {
            // Don't need to recompose but need to clip since the text is
            // a different shape than what was composed.
            forceClip = true;
        }   

        //trace("udl", "compose", compose, "clip", mx_internal::isOverset || forceClip);        
                       
        mx_internal::clip(unscaledWidth, unscaledHeight, forceClip);
    }
            
    //--------------------------------------------------------------------------
    //
    //  Methods: ISimpleStyleClient
