         }
         else
         {
+	        // layout features will internally make a copy of this matrix rather than
+    	    // holding onto a reference to it.
             _layoutFeatures.layoutMatrix = value;
             invalidateTransform(false /*triggerPropertyInvalidation*/);
         }

    public function set layoutMatrix3D(value:Matrix3D):void
    {
        if(_layoutFeatures == null) initAdvancedLayoutFeatures();
        _layoutFeatures.layoutMatrix3D = value;
        invalidateTransform();
        invalidateParentSizeAndDisplayList();

    {
        if(_layoutFeatures != null)
        {
			// esg: _layoutFeatures keeps a single internal copy of the layoutMatrix.
			// since this is an internal class, we don't need to worry about developers
			// accidentally messing with this matrix, _unless_ we hand it out. Instead,
			// we hand out a clone.
            return _layoutFeatures.layoutMatrix.clone();            
        }
        else
        {
        	// flash also returns copies.
            return super.transform.matrix;
        }
    }
