function overRest(func, start, transform) {
  start = nativeMax(start === undefined ? func.length - 1 : start, 0);
  return function () {
    var args = arguments,
        index = -1,
        length = nativeMax(args.length - start, 0),
        array = Array(length);

    while (++index < length) {
      array[index] = args[start + index];
    }

    index = -1;
    var otherArgs = Array(start + 1);

    while (++index < start) {
      otherArgs[index] = args[index];
    }

    otherArgs[start] = transform(array);
    return apply(func, this, otherArgs);
  };
}
A specialized version of `baseRest` which transforms the rest array.

@private
@param {Function} func The function to apply a rest parameter to.
@param {number} [start=func.length-1] The start position of the rest parameter.
@param {Function} transform The rest array transform.
@returns {Function} Returns the new function.