     /**
      *  @private
      */
-    mx_internal var stylesChanged:Boolean = false;    
-
-    /**
-     *  @private
-     *  Cache this since it accessed for every display list update.
-     */
-    mx_internal var lineBreakToFit:Boolean = true;
+    mx_internal var invalidateCompose:Boolean = true;    
+
+    /**
+     *  @private
+     *  The offset applied to each textLine.x so that it is positioned
+     *  correctly in the display object container.
+     */
+    private var _lastDrawX:Number = 0;
+
+    /**
+     *  @private
+     *  The offset applied to each textLine.y so that it is positioned
+     *  correctly in the display object container.
+     */
+    private var _lastDrawY:Number = 0;
 
     /**
      *  @private

     */
    protected function composeOnWidthChange():Boolean
    {
        return false;
    }


			   mx_internal::textLines[0].y : 0;
    }

    /**
     *  @private
     */
    private var displayObjectChanged:Boolean;

    /**
     *  @private
     */
    override public function set displayObject(value:DisplayObject):void
    {        
        if (displayObject == value)
            return;

        // There is an exisiting d.o. so this element is either being moved
        // to a different container (value != null) or it is being removed 
        // (value == null).
        if (displayObject)
        {
            // If there was a scroll rect remove it before we lose the reference
            // to the display object. 
            mx_internal::clip(false, 0, 0);
        
            displayObjectChanged = true;        
            invalidateProperties();
        }
             
        super.displayObject = value;
        
    }    
  
    //--------------------------------------------------------------------------
    //
    //  Properties: ISimpleStyleClient
