function rangedPartialInsertionSortSwapless$<T, U=T>(x: T[], i: number, I: number, n: number, fc: CompareFunction<T|U>, fm: MapFunction<T, T|U>, fs: SwapFunction<T>): T[] {
  for (var j=i+1; j<I; ++j) {
    var key  = x[j];
    var wkey = fm(key, j, x);
    for (var k=j-1; k>=i && fc(fm(x[k], k, x), wkey)>0; --k)