 			_operationCursor = null;
 		}
 
-       	[Test]
-        public function testReproduce_FLEX_34424():void
+        [Test(dataProvider="selectionAndRemovalLocations")]
+        public function testReproduce_FLEX_34424(selectedItemIndex:int, removalIndex:int, noItemsToRemove:int):void
         {
-			//GIVEN
-			var selectedItemIndex:int = 10, operationIndex:int = 8;
-			
 			//WHEN
 			//1. Select a specific node
 			_sut.seek(new CursorBookmark(selectedItemIndex));

            assertNotNull(selectedNode);
		    selectedNode.isSelected = true;

            //2. Perform setItemAt operation
			_operationCursor = _currentHierarchy.createCursor() as HierarchicalCollectionViewCursor;
			_operationCursor.seek(new CursorBookmark(operationIndex));
		    performRemoval(_operationCursor);

            //THEN
            assertTrue(_noErrorsThrown);
            assertNotNull(_sut.current);
        }
		
        private static function performRemoval(where:HierarchicalCollectionViewCursor):void
        {
            var itemToBeRemoved:DataNode = where.current as DataNode;
            assertNotNull(itemToBeRemoved);

import mx.collections.HierarchicalCollectionView;
import mx.collections.HierarchicalCollectionViewCursor;
import mx.core.FlexGlobals;
import mx.events.CollectionEvent;
import mx.events.CollectionEventKind;
import mx.events.PropertyChangeEvent;

import org.flexunit.asserts.assertEquals;

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