     //
     //--------------------------------------------------------------------------
     
+    /**
+     *  @private
+     */
+    override protected function getElementBounds(index:int):Rectangle
+    {
+        if (!useVirtualLayout)
+            return super.getElementBounds(index);
+
+        var g:GroupBase = GroupBase(target);
+        if (!g || (index < 0) || (index >= g.numElements)) 
+            return null;
+
+        return llv.getBounds(index);
+    }
+    
 	/**
 	 *  An index is "in view" if the corresponding non-null layout element is 
 	 *  within the vertical limits of the layout target's scrollRect

                
        setIndexInView(i0, i1);
    }

    /**
     *  @private
     * 
     *  If the element at index i is non-null and includeInLayout,
     *  then return it's actual bounds, otherwise return null.
     */
    private function layoutElementBounds(g:GroupBase, i:int):Rectangle
    {
        if (useVirtualLayout)
            return llv.getBounds(i);        
        else 
        {
            var element:ILayoutElement = g.getElementAt(i);
            if (element && element.includeInLayout)
            {
                return new Rectangle(element.getLayoutBoundsX(),
                                     element.getLayoutBoundsY(),
                                     element.getLayoutBoundsWidth(),
                                     element.getLayoutBoundsHeight());        
            }
        }
        return null;    
    }
    
    /**
     *  @private

    /**
     *  @private 
     */
    override protected function getElementBoundsAboveScrollRect(scrollRect:Rectangle):Rectangle
    {
        return findLayoutElementBounds(target, firstIndexInView, -1, scrollRect);
    } 
