             if (responder.index >= startIndex)
                 responder.index -= delta;
             pendingResponders[responder.index] = responder;
-        } 
+        }
+        
+        const failedItemsLength:int = failedItems.length;
+        for (var index:int = startIndex; index < failedItemsLength; index++)
+        {
+            var failedItem:* = failedItems[index];
+            if (failedItem !== undefined)
+            {
+                delete failedItems[index];
+                failedItems[index - delta] = failedItem;
+            }
+        }        
     }
     
     /**

     */
    public function getItemIndex(item:Object):int
    {
        for each (var responder:ListItemResponder in pendingResponders)
            if (responder && responder.item === item)
                return responder.index;

     *  Handler for a CollectionEventKind.REMOVE.  The event indicates 
     *  that a block of ce.items.length items starting at ce.location was removed,
     *  which implies that all of the pendingResponders whose index is greater than or
     *  equal to ce.location, must be shifted left by ce.items.length.  The failedItems
     *  array is handled similarly.
     */
    private function shiftPendingRespondersLeft(ce:CollectionEvent):void
    {
