 
             //then
             assertEquals(0, _sut.getItemIndex(newItem));
+        }
+
+        [Test]
+        public function getItemIndex_finds_newly_inserted_item_in_complex_multi_field_sorted_list():void
+        {
+            //given
+            var from0To4:IList = generateVOs(5);
+            _sut.addAll(from0To4); //values[address.street/index]: Street0/0, Street1/1, Street2/2, Street3/3, Street4/4
+
+            const sortByStreetAndIndex:Sort = new Sort();
+            sortByStreetAndIndex.fields = [new ComplexSortField("address.street", false, true, false), new SortField("index", false, true)];
+            _sut.sort = sortByStreetAndIndex;
+            _sut.refresh(); //values[address.street/index]: Street4/4, Street3/3, Street2/2, Street1/1, Street0/0
+
+            _sut.complexFieldWatcher = new ComplexFieldChangeWatcher();
+
+            //when
+            var newItem:FLEX_34884_VO = generateOneObject(9);
+            newItem.address.street = "Street 4";
+            _sut.addItemAt(newItem, _sut.length - 1); //values[address.street/index]: Street4/4, Street4/9, Street3/3, Street2/2, Street1/1, Street0/0
+
+            //then
+            assertEquals(1, _sut.getItemIndex(newItem));
         }
 
         [Test]

        }

        [Test]
        public function getItemIndex_finds_second_to_last_item_in_simple_no_fields_non_unique_sorted_list():void
        {
            //given

            var from0To4:IList = generateVOs(5);
            _sut.addAll(from0To4); //values[address.street]: Street0, Street1, Street2, Street3, Street4

            const sortByStreetDescending:Sort = new Sort();
            sortByStreetDescending.fields = [new ComplexSortField("address.street", false, true, false)];
            _sut.sort = sortByStreetDescending;
            _sut.refresh(); //values[address.street]: Street4, Street3, Street2, Street1, Street0

            _sut.complexFieldWatcher = new ComplexFieldChangeWatcher();
