      *  the size and position of the component.
      *  It is not used by the component itself in determining
      *  its default size.
+     * 
      *  Thus this property may not have any effect if parented by
      *  Container, or containers that don't factor in
      *  this property.

            invalidateParentSizeAndDisplayList();
    }

    /**
     * A utility method to update the rotation and scale of the transform while keeping a particular point, specified in the component's own coordinate space, 
     * fixed in the parent's coordinate space.  This function will assign the rotation and scale values provided, then update the x/y/z properties
     * as necessary to keep tx/ty/tz fixed.
     * @param rx,ry,rz the new values for the rotation of the transform
     * @param sx,sy,sz the new values for the scale of the transform
     * @param tx,ty,tz the point, in the component's own coordinates, to keep fixed relative to its parent.
     *  
     *  @langversion 3.0
     *  @playerversion Flash 9
     *  @playerversion AIR 1.1
     *  @productversion Flex 3
     */
    public function transformAround(rx:Number,ry:Number,rz:Number,sx:Number,sy:Number,sz:Number,tx:Number,ty:Number,tz:Number):void
    {
        if(_layoutFeatures == null && (
            (!isNaN(rx) && rx != 0) || 
            (!isNaN(ry) && ry != 0) || 
            (!isNaN(sz) && sz != 1)
            ))
        {
            initAdvancedLayoutFeatures();
        } 
        if(_layoutFeatures != null)
        {
            _layoutFeatures.transformAround(rx,ry,rz,sx,sy,sz,tx,ty,tz,true);
            invalidateTransform();      
            invalidateParentSizeAndDisplayList();
        }
        else
        {
            var xformedPt:Point = super.transform.matrix.transformPoint(new Point(tx,ty));
            if(!isNaN(rz))
            rotation = rz;
            if(!isNaN(sx))
                scaleX = sx;
            if(!isNaN(sx))
                scaleY = sy;            
            var postXFormPoint:Point = super.transform.matrix.transformPoint(new Point(tx,ty));
            x += xformedPt.x - postXFormPoint.x;
            y += xformedPt.y - postXFormPoint.y;
        }
    }


import flash.geom.Point;
import flash.geom.Rectangle;
import flash.geom.Transform;
import flash.geom.Vector3D;
import flash.system.ApplicationDomain;
import flash.text.TextFormatAlign;
import flash.text.TextLineMetrics;
