 	        layoutFeatures.updatePending = false;
 
         // Only the first elment in the sequence updates the transform
-        if (sharedIndex > 0 || !displayObject)
+        if (displayObjectSharingMode == DisplayObjectSharingMode.USES_SHARED_OBJECT || !displayObject)
             return;
                                 
         if (layoutFeatures != null)

        // clear it from the display object so that we can set it in the new
        // display object. A Matrix3D object can't be used simultaneously with
        // more than one display object.
        if (oldValue && sharedIndex == -1)
            oldValue.transform.matrix3D = null;

        _displayObject = value;

        _includeInLayout = value;
    }

    //----------------------------------
    //  displayObjectSharingMode
    //----------------------------------

    private var _displayObjectSharingMode:String;
    
    /**
     *  @inheritDoc
     *  
     *  @langversion 3.0
     *  @playerversion Flash 10
     *  @playerversion AIR 1.5
     *  @productversion Flex 4
     */
    public function set displayObjectSharingMode(value:String):void
    {
        if (value == _displayObjectSharingMode)
            return;
        
        if (value != DisplayObjectSharingMode.USES_SHARED_OBJECT ||
            _displayObjectSharingMode != DisplayObjectSharingMode.USES_SHARED_OBJECT) 
        {
            // If the element was previously at the head of the shared sequence or
            // it is assigned to be at the head, make sure to reapply the 
            // displayObject specific properties.
            displayObjectChanged = true;
            invalidateProperties();            
        }
        _displayObjectSharingMode = value;
    }
    
    /**
     *  @private
     */
    public function get displayObjectSharingMode():String
    {
        return _displayObjectSharingMode;    
    }
    
    //--------------------------------------------------------------------------
    //
    //  Methods
