         var targetPosition:Vector3D = (transformCenterPosition == null)? staticTranslation:transformCenterPosition;
         var postLayoutTargetPosition:Vector3D = (postLayoutTransformCenterPosition == null)? staticOffsetTranslation:postLayoutTransformCenterPosition;
 
-		// now update our transform values.		
+        // now update our transform values.     
         if (rotation != null)
         {
             if (!isNaN(rotation.x))

     *  @playerversion AIR 1.1
     *  @productversion Flex 3
     */
	public function set layoutZ(value:Number):void
	{
		layout.z = value;
		invalidate();
	}
	
    /**
     * @private
     */
	public function get layoutZ():Number
	{
		return layout.z;
	}
	
	//------------------------------------------------------------------------------
	
    /**
     * @private
     * the x value of the point around which any rotation and scale is performed in both the layout and computed matrix.
     */
	public function set transformX(value:Number):void
	{
		layout.transformX = value;
		invalidate();
	}
    /**
     * @private
     */
	public function get transformX():Number
	{
		return layout.transformX;
	}
	
    /**
     * @private
     * the y value of the point around which any rotation and scale is performed in both the layout and computed matrix.
     */
	public function set transformY(value:Number):void
	{
		layout.transformY = value;
		invalidate();
	}
	
    /**
     * @private
     */
	public function get transformY():Number
	{
		return layout.transformY;
	}
	
    /**
     * @private
     * the z value of the point around which any rotation and scale is performed in both the layout and computed matrix.
     */
	public function set transformZ(value:Number):void
	{
		layout.transformZ = value;	
		invalidate();
	}
	
    /**
     * @private
     */
	public function get transformZ():Number
	{
		return layout.transformZ;
	}

//------------------------------------------------------------------------------
	
	
    /**
     * layout transform convenience property.  Represents the rotation around the X axis of the layout matrix used in layout and in 
     * the computed transform.

     * This matrix is used in the calculation of the computed transform if possible. Under certain circumstances, such as when 
     * offsets are provided, the decomposed layout properties will be used instead.
     */
    public function set layoutMatrix3D(value:Matrix3D):void
    {
        layout.matrix3D = value;
        invalidate();
    }
    
    /**
     * @private
     */
    public function get layoutMatrix3D():Matrix3D
    {
        return layout.matrix3D;
    }
    
    /**
     * true if the computed transform has 3D values.
     *  
     *  @langversion 3.0
     *  @playerversion Flash 9
     *  @playerversion AIR 1.1
     *  @productversion Flex 3
     */
    public function get is3D():Boolean
    {
        return (layout.is3D || (postLayoutTransformOffsets != null && postLayoutTransformOffsets.is3D));
    }

    /**
     * true if the layout transform has 3D values.
     *  
     *  @langversion 3.0
     *  @playerversion Flash 9
     *  @playerversion AIR 1.1
     *  @productversion Flex 3
     */
    public function get layoutIs3D():Boolean
    {
        return layout.is3D;
    }

    //------------------------------------------------------------------------------
    
    /** offsets to the transform convenience properties that are applied when a component is rendered. If this 
     * property is set, its values will be added to the layout transform properties to determine the true matrix used to render
     * the component
     *  
     *  @langversion 3.0
     *  @playerversion Flash 9
     *  @playerversion AIR 1.1
     *  @productversion Flex 3
     */
    public function set postLayoutTransformOffsets(value:TransformOffsets):void
    {
        if(_postLayoutTransformOffsets != null)
        {
            _postLayoutTransformOffsets.removeEventListener(Event.CHANGE,postLayoutTransformOffsetsChangedHandler);
            _postLayoutTransformOffsets.owner = null;
        }
        _postLayoutTransformOffsets = value;
        if(_postLayoutTransformOffsets != null)
        {
            _postLayoutTransformOffsets.addEventListener(Event.CHANGE,postLayoutTransformOffsetsChangedHandler);
            _postLayoutTransformOffsets.owner = this;
        }
        invalidate();       
    }
    
    public function get postLayoutTransformOffsets():TransformOffsets
    {
        return _postLayoutTransformOffsets;
    }
    
    private function postLayoutTransformOffsetsChangedHandler(e:Event):void
    {
        invalidate();       
    }

    //----------------------------------
    //  stretchX
