                 // Check displayObject for null, some graphic elements
                 // may choose not to create a DisplayObject during this pass.
                 if (displayObject)
-                    addItemToDisplayList(displayObject, current, insertIndex++);
-
-                current.sharedIndex = -1;
-            }
-            invalidateAfterAssignment(current, oldSharedIndex, oldDisplayObject);
+                    addDisplayObjectToDisplayList(displayObject, insertIndex++);
+
+                current.displayObjectSharingMode = DisplayObjectSharingMode.OWNS_UNSHARED_OBJECT;
+            }
+            invalidateAfterAssignment(current, oldSharingMode, oldDisplayObject);
         }
         return insertIndex;
     }

    private var _mxmlContent:Array;
    
    [ArrayElementType("mx.core.IVisualElement")]
    
    /**
     *  The visual content children for this Group.
     *
     *  <p>The content items should only be IVisualElement objects.  
     *  An <code>mxmlContent</code> Array should not be shared between multiple

            var previous:IGraphicElement = prevElement as IGraphicElement;

            var oldDisplayObject:DisplayObject = current.displayObject;
            var oldSharingMode:String = current.displayObjectSharingMode;

            if (previous && previous.canShareWithNext(current) && current.canShareWithPrevious(previous) &&
                current.setSharedDisplayObject(previous.displayObject))
            {
                // If we are the second element in the shared sequence,
                // make sure that the first element has the correct displayObjectSharingMode
                if (previous.displayObjectSharingMode == DisplayObjectSharingMode.OWNS_UNSHARED_OBJECT)
                    previous.displayObjectSharingMode = DisplayObjectSharingMode.OWNS_SHARED_OBJECT;

                current.displayObjectSharingMode = DisplayObjectSharingMode.USES_SHARED_OBJECT;
            }
            else if (prevElement == this && current.setSharedDisplayObject(this))
            {
                current.displayObjectSharingMode = DisplayObjectSharingMode.USES_SHARED_OBJECT;
            }
            else
            {
                // We don't want to create new DisplayObjects for elements that
                // already have created their own their display objects.
                var ownsDisplayObject:Boolean = oldSharingMode != DisplayObjectSharingMode.USES_SHARED_OBJECT;

                // If the element doesn't have a DisplayObject or it doesn't own
                // the DisplayObject it currently has, then create a new one
