     }
 
     /**
+     * @inheritDoc 
+     */
+    mx_internal function getLocalItemIndex(item:Object):int
+    {
+        var i:int;
+        
+        var len:int = localIndex.length;
+        for (i = 0; i < len; i++)
+        {
+            if (localIndex[i] == item)
+                return i;
+        }
+
+        return -1;
+    }
+
+    /**
      * @private
      */
     private function getFilteredItemIndex(item:Object):int

            case CollectionEventKind.REFRESH:
                if (!(beforeFirst || afterLast))
                {
                    currentIndex = ListCollectionView(view).getItemIndex(currentValue);
                    if (currentIndex == -1)
                    {
                        setCurrent(null);

            // and only then calling getItemAt.
            if (bm.index < 0 || bm.index >= length || getItemAt(bm.index) != bm.value)
            {
                try
                {
                    bm.index = getItemIndex(bm.value);
                }
                catch (e:SortError)
                {
                    bm.index = getLocalItemIndex(bm.value);
                }
            }

            bm.viewRevision = revision;
