                             if (_selectedIndices[i] == index)
                                 found = true; 
                             else if (_selectedIndices[i] != index)
-                                interval.push(_selectedIndices[i]);
+                                interval.splice(0, 0, _selectedIndices[i]);
                         }
                         if (!found)
                         {
                             // Nothing from the selection model was de-selected. 
                             // Instead, the Ctrl key was held down and we're doing a  
                             // new add. 
-                            interval.push(index);   
+                            interval.splice(0, 0, index);   
                         }
                         return interval; 
                     } 

            {
                for (i = start; i <= end; i++)
                {
                    interval.push(i); 
                }
            }
            else 
            {
                for (i = start; i >= end; i--)
                {
                    interval.push(i); 
                }
            }
            return interval; 

        // interval.   
        if (allowMultipleSelection && event.shiftKey && selectedIndices)
        {
            var startIndex:Number = getLastSelectedIndex(); 
            var newInterval:Vector.<int> = new Vector.<int>();  
            var i:int; 
            if (startIndex <= proposedNewIndex)
            {
                for (i = startIndex; i <= proposedNewIndex; i++)
                {
                    newInterval.splice(0, 0, i); 
                }
            }
            else 
            {
                for (i = startIndex; i >= proposedNewIndex; i--)
                {
                    newInterval.splice(0, 0, i); 
                }
            }
            selectedIndices = newInterval;  
