function composeArgs(partialArgs, partialHolders, args) {
      var index = -1,
          length = partialHolders.length,
          leftIndex = -1,
          leftLength = partialArgs.length,
          argsLength = nativeMax(args.length - length, 0),
          result = Array(argsLength + leftLength);

      while (++leftIndex < leftLength) {
        result[leftIndex] = partialArgs[leftIndex];
      }
      while (++index < length) {
        result[partialHolders[index]] = args[index];
      }
      while (length < argsLength) {
        result[leftIndex++] = args[length++];
      }
      return result;
    }
Creates an array that is the composition of partially applied arguments,
placeholders, and provided arguments into a single array of arguments.

@private
@param {Array} partialArg An array of arguments to prepend to those provided.
@param {Array} partialHolders An array of `partialArgs` placeholder indexes.
@param {Array|Object} args The provided arguments.
@returns {Array} Returns a new array of composed arguments.