function createPartialWrapper(func, bitmask, partials, thisArg) {
      var isBind = bitmask & BIND_FLAG,
          Ctor = createCtorWrapper(func);

      function wrapper() {
        // avoid `arguments` object use disqualifying optimizations by
        // converting it to an array before providing it to `composeArgs`
        var argsIndex = -1,
            argsLength = arguments.length,
            leftIndex = -1,
            leftLength = partials.length,
            args = Array(argsLength + leftLength);

        while (++leftIndex < leftLength) {
          args[leftIndex] = partials[leftIndex];
        }
        while (argsLength--) {
          args[leftIndex++] = arguments[++argsIndex];
        }
        return (this instanceof wrapper ? Ctor : func).apply(isBind ? thisArg : this, args);
      }
      return wrapper;
    }
Creates a function that wraps `func` and invokes it with the optional `this`
binding of `thisArg` and the `partialArgs` prepended to those provided to
the wrapper.

@private
@param {Function} func The function to partially apply arguments to.
@param {number} bitmask The bitmask of flags. See `createWrapper` for more details.
@param {Array} partials The arguments to prepend to those provided to the new function.
@param {*} [thisArg] The `this` binding of `func`.
@returns {Function} Returns the new bound function.