SortOn actually always returns an Array
diff --git a/frameworks/projects/Language/src/main/royale/org/apache/royale/utils/Language.as b/frameworks/projects/Language/src/main/royale/org/apache/royale/utils/Language.as
index d502aef..edb7404 100644
--- a/frameworks/projects/Language/src/main/royale/org/apache/royale/utils/Language.as
+++ b/frameworks/projects/Language/src/main/royale/org/apache/royale/utils/Language.as
@@ -368,7 +368,7 @@
          * @param names
          * @param opt
          */
-        public static function sortOn(arr:Array, names:Object, opt:Object = 0):void
+        public static function sortOn(arr:Array, names:Object, opt:Object = 0):Array
         {
             if (names is Array)
             {
@@ -390,6 +390,11 @@
                 opt2 = /*opt as int*/ (int(opt) == opt) ? int(opt) : 0;
             }
             muler = (Array.DESCENDING & opt2) > 0 ? -1 : 1;
+            var orig:Array;               
+            if (opt2 & Array.RETURNINDEXEDARRAY)
+            {
+                orig = arr.slice();                
+            }
             if (opt2 & Array.NUMERIC)
             {
                 arr.sort(compareNumber);
@@ -400,6 +405,18 @@
             {
                 arr.sort(compareString);
             }
+            if (opt2 & Array.RETURNINDEXEDARRAY)
+            {
+                var retArr:Array = [];
+                var n:int = arr.length;
+                for (var i:int = 0; i < n; i++)
+                {
+                    var item:Object = orig[i];
+                    retArr.push(arr.indexOf(item));
+                }
+                return retArr;
+            }
+            return arr;
         }
         
         private static function compareStringCaseinsensitive(a:Object, b:Object):int