 {
 
 import flash.display.DisplayObjectContainer;
+import flash.events.Event;
 import flash.geom.ColorTransform;
 import flash.geom.Matrix;
 import flash.geom.Matrix3D;

    //--------------------------------------------------------------------------

    //----------------------------------
    //  alpha
    //----------------------------------
    

			invalidateParentSizeAndDisplayList();
	}
	
    /**
     * @copy mx.core.ILayoutElement#transformAround
     *  
     *  @langversion 3.0
     *  @playerversion Flash 9
     *  @playerversion AIR 1.1
     *  @productversion Flex 3
     */
    public function transformAround(transformCenter:Vector3D,
                                    scale:Vector3D = null,
                                    rotation:Vector3D = null,
                                    translation:Vector3D = null,
                                    postLayoutScale:Vector3D = null,
                                    postLayoutRotation:Vector3D = null,
                                    postLayoutTranslation:Vector3D = null):void
    {
        if (_layoutFeatures == null)
        {
            var needAdvancedLayout:Boolean = 
                (scale != null && scale.z != 1 && !isNaN(scale.z)) ||
                (rotation != null && ((!isNaN(rotation.x) && rotation.x != 0) || 
                    (!isNaN(rotation.y) && rotation.y != 0))) || 
                (translation != null && translation.z != 0 && !isNaN(translation.z)) ||
                postLayoutScale != null ||
                postLayoutRotation != null ||
                (postLayoutTranslation != null &&
                    (postLayoutTranslation.x != translation.x ||
                     postLayoutTranslation.y != translation.y ||
                     postLayoutTranslation.z != translation.z));
            if (needAdvancedLayout)
                initAdvancedLayoutFeatures();
        }
        if (_layoutFeatures)
        {
            _layoutFeatures.transformAround(transformCenter, scale, rotation, translation,
                postLayoutScale, postLayoutRotation, postLayoutTranslation);
            invalidateTransform();
            invalidateParentSizeAndDisplayList();
        }
        else
        {
            if (translation == null && transformCenter != null)
            {
                if (xformPt == null)
                    xformPt = new Point();
                xformPt.x = transformCenter.x;
                xformPt.y = transformCenter.y;                
                var xformedPt:Point = 
                    super.transform.matrix.transformPoint(xformPt);
            }
            if (rotation != null && !isNaN(rotation.z))
                this.rotation = rotation.z;
            if (scale != null)
            {
                scaleX = scale.x;
                scaleY = scale.y;
            }            
            if (transformCenter == null)
            {
                if (translation != null)
                {
                    x = translation.x;
                    y = translation.y;
                }
            }
            else
            {
                if (xformPt == null)
                    xformPt = new Point();
                xformPt.x = transformCenter.x;
                xformPt.y = transformCenter.y;                
                var postXFormPoint:Point = 
                    super.transform.matrix.transformPoint(xformPt);
                if (translation != null)
                {
                    x += translation.x - postXFormPoint.x;
                    y += translation.y - postXFormPoint.y;
                }
                else
                {
                    x += xformedPt.x - postXFormPoint.x;
                    y += xformedPt.y - postXFormPoint.y;                                   
                }
            }
        }
    }

    public function transformPointToParent(transformCenter:Vector3D,position:Vector3D,postLayoutPosition:Vector3D):void
	{
		if (_layoutFeatures != null)
		{
