         if (rendererFactory)
             renderer = createRenderer(rendererFactory);
         
-        if (!renderer && (item is IVisualElement) && (item is DisplayObject))
+        if (!renderer && itemIsRenderer(item))
             renderer = IVisualElement(item);
         
         if (!renderer && failRTE)

    private function throwCreateRendererFailedError(item:Object):void
    {
        var err:String;
        if (item is IVisualElement || item is DisplayObject)
            err = resourceManager.getString("components", "cannotDisplayVisualElement");
        else
            err = resourceManager.getString("components", "unableToCreateRenderer", [item]);
        
        throw new Error(err);
    }          
    
    /**
     *  @private

        {
            var item:Object = dataProvider.getItemAt(index);
            var renderer:IVisualElement = indexToRenderer[index] as IVisualElement;
            
            // If the (new) item is-a renderer and the old renderer is a different 
            // DisplayObject, then we can't reuse the old renderer.
            
            if (renderer && (!itemIsRenderer(item) || (item == renderer)))
            {
                setUpItemRenderer(renderer, index, item);
            }
            else
            {
                removeRendererAt(index); 
                itemAdded(item, index);
