             var collectionToChange:ArrayCollection = parentOfReplacementLocation ? parentOfReplacementLocation.children : _utils.getRoot(_currentHierarchy) as ArrayCollection;
             var removedItemIndex:int = collectionToChange.getItemIndex(itemToBeRemoved);
 
-            collectionToChange.removeItemAt(removedItemIndex);
+            if(noItemsToRemove == 1)
+                collectionToChange.removeItemAt(removedItemIndex);
+            else {//note that this assumes the collection is not filtered or sorted; for this test the assumption holds.
+                var removedItems:Array = collectionToChange.source.splice(removedItemIndex, noItemsToRemove);
+                //fake a CollectionEventKind.REMOVE event with more than one item removed
+                collectionToChange.dispatchEvent(new CollectionEvent(CollectionEvent.COLLECTION_CHANGE, false, false, CollectionEventKind.REMOVE, removedItemIndex, -1, removedItems));
+            }
         }
 
 

import mx.collections.HierarchicalCollectionView;
import mx.collections.HierarchicalCollectionViewCursor;
import mx.core.FlexGlobals;

import org.flexunit.asserts.assertNotNull;
import org.flexunit.asserts.assertTrue;

			_operationCursor = null;
		}

        [Test(dataProvider="selectionAndRemovalLocations")]
        public function testReproduce_FLEX_34424(selectedItemIndex:int, removalIndex:int, noItemsToRemove:int):void
        {
			//WHEN
			//1. Select a specific node
			_sut.seek(new CursorBookmark(selectedItemIndex));
