 import mx.events.CollectionEvent;
 import mx.events.PropertyChangeEvent;
 import mx.events.PropertyChangeEventKind;
+import flex.graphics.graphicsClasses.GraphicElement;
 import flex.graphics.IAssignableDisplayObjectElement;
 import flex.graphics.IDisplayObjectElement;
 import flex.graphics.IGraphicElement;

    {
        super.updateDisplayList(unscaledWidth, unscaledHeight);

        // TODO!!! Move this above the GraphicElement drawing once layout objects 
        // understand how to layout GraphicElements. 
        if (_layout)
            _layout.updateDisplayList(unscaledWidth, unscaledHeight);

        // Iterate through the graphic elements, clear their graphics and draw them
        var length:int = numItems;
        for (var i:int = 0; i < length; i++)
        {
            var element:IGraphicElement = getItemAt(i) as IGraphicElement;
            
            if (element && !alwaysUseItemRenderer)
            {
                var g:Graphics;
                var elementShape:Shape = elementToDisplayObjectMap[element] as Shape;
                if (elementShape)
                {
                    g = elementShape.graphics;
                }
                else
                {
                    var elementSprite:Sprite = elementToDisplayObjectMap[element] as Sprite;
                    if (elementSprite)
                        g = elementSprite.graphics;
                }
                                
                if (g)
                {
                    g.clear();
                    element.draw(g); 
                }
            }
        }
            
        if (transformChanged)
        {
            transformChanged = false;

                }
            }
        }

        // Check whether we manage the elements, or are they managed by an ItemRenderer
        if (!alwaysUseItemRenderer)
        {
            // TODO EGeorgie: we need to optimize this, iterating through all the elements is slow.
            // Validate element properties
            var length:int = numItems;
            for (var i:int = 0; i < length; i++)
            {
                var element:GraphicElement = getItemAt(i) as GraphicElement;
                if (element)
                    element.validateProperties();
            }
        }
    }
    
    override protected function measure():void
    {
        // Check whether we manage the elements, or are they managed by an ItemRenderer
        if (!alwaysUseItemRenderer)
        {
            // TODO EGeorgie: we need to optimize this, iterating through all the elements is slow.
            // Validate element size
            var length:int = numItems;
            for (var i:int = 0; i < length; i++)
            {
                var element:GraphicElement = getItemAt(i) as GraphicElement;
                if (element)
                    element.validateSize();
            }
        }

        super.measure();
        
        if (_layout)
