     }
 
     /**
-     *  @private
-     *  Provisional access to the item renderers for FxList and FxButtonBar.
-     */
-    mx_internal function getItemIndexForRenderer(renderer:IVisualElement):int
+     *  Return the index of the dataProvider item that the specified ItemRenderer
+     *  is being used for, or -1 if there is no such item. 
+     * 
+     *  If renderer is null, or if a dataProvider was not specified, then -1
+     *  is returned.
+     * 
+     *  Note that if the layout is virtual, ItemRenderers that are scrolled
+     *  out of view may be reused.
+     * 
+     *  @param renderer The ItemRenderer.
+     *  @return The index of the dataProvider item that the specified ItemRenderer is being used for, or -1
+     * 
+     *  @see #getRendererForItemAt
+     *  @see dataProvider
+     */
+    public function getItemIndexForRenderer(renderer:IVisualElement):int
     {
         if ((dataProvider == null) || (renderer == null))
             return -1;

        invalidateDisplayList();
        
        itemRendererChanged = true;
    }
    
    //----------------------------------

        for (var idx:int = numChildren; idx > 0; idx--)
            super.removeChildAt(0);
        
        var vLayout:Boolean = layout && layout.virtualLayout;

        // Create all item renderers eagerly
        if (_dataProvider && !vLayout)
        {
            for (var i:int = 0; i < _dataProvider.length; i++)
                mx_internal::itemAdded(_dataProvider.getItemAt(i), i);
        }
        
        // The display list will be created lazily, at updateDisplayList() time
        if (vLayout)
        {
            invalidateSize();
            invalidateDisplayList();
        }
    }
    
