public static T[] MergeSortBy<T, TKey>(this T[] array, Func<T, TKey> keySelector)
        {
            TKey[] keys = new TKey[array.Length];
            MyDynamicArray<object> map = SortHelper.CreateMap(array, keys, keySelector);

            return SortHelper.OrderByMapToArray(array, map, keys.MergeSort());
        }