             if (event.relatedObject != this)
             {
                 var indices:Array = selectedIndices;
+				
+				// clear the selection, otherwise we'll be adjusting it on every element being removed
+				clearSelected(false);
+				
                 indices.sort(Array.NUMERIC);
                 var n:int = indices.length;
                 for (var i:int = n - 1; i >= 0; i--)

		if (dragSource.hasFormat("items"))
			insertItems(dropIndex, dragSource, event);
		else
			insertOrderedItems(dropIndex, dragSource, event);
		
		lastDragEvent = null;
    }

		lastDragEvent = event;
		
        if (enabled && iteratorValid && 
			(event.dragSource.hasFormat("items")  || event.dragSource.hasFormat("itemsByIndex")))
        {
            DragManager.acceptDragDrop(this);
            DragManager.showFeedback(event.ctrlKey ? DragManager.COPY : DragManager.MOVE);
