 		
 		private function iterate(stopTime:int):Number
 		{
-			if (original is Array)
-			{
-				if (compare === ObjectUtil.numericCompare)
-				{
+			if (compare === ObjectUtil.numericCompare)
+			{
+				original.sort(Array.NUMERIC);
+				return 1;
+			}
+			
+			if (compare === compareCaseInsensitive)
+			{
+				original.sort(Array.CASEINSENSITIVE);
+				return 1;
+			}
+			
+			if (compare === null)
+			{
+				if (original[0] is Number || original[0] is Date)
 					original.sort(Array.NUMERIC);
-					return 1;
-				}
-				
-				if (compare === compareCaseInsensitive)
-				{
-					original.sort(Array.CASEINSENSITIVE);
-					return 1;
-				}
-				
-				if (compare === null)
-				{
-					if (original[0] is Number || original[0] is Date)
-						original.sort(Array.NUMERIC);
-					else
-						original.sort();
-					return 1;
-				}
-			}
-			else if (compare === null)
-			{
-				compare = primitiveCompare;
+				else
+					original.sort(0); // Vector.sort() requires one parameter
+				return 1;
 			}
 			
 			var time:int = getTimer();

				debugTrace(this,result.length,'in',elapsed/1000,'seconds');
			
			if (!_immediately)
				getCallbackCollection(this).triggerCallbacks();
		}
		
		/*************

				var start:int = getTimer();
				_debugCompareCount = 0;
				if (compare === null)
					array1.sort(0);
				else
					array1.sort(_debugCompareCounter);
				trace('Array.sort', array1.length, 'numbers;', (getTimer() - start) / 1000, 'seconds;', _debugCompareCount ? (_debugCompareCount+' comparisons') : '');
