--- /dev/null
+'use strict';
+var path = require('./_path')
+ , invoke = require('./_invoke')
+ , aFunction = require('./_a-function');
+module.exports = function(/* ...pargs */){
+ var fn = aFunction(this)
+ , length = arguments.length
+ , pargs = Array(length)
+ , i = 0
+ , _ = path._
+ , holder = false;
+ while(length > i)if((pargs[i] = arguments[i++]) === _)holder = true;
+ return function(/* ...args */){
+ var that = this
+ , aLen = arguments.length
+ , j = 0, k = 0, args;
+ if(!holder && !aLen)return invoke(fn, pargs, that);
+ args = pargs.slice();
+ if(holder)for(;length > j; j++)if(args[j] === _)args[j] = arguments[k++];
+ while(aLen > k)args.push(arguments[k++]);
+ return invoke(fn, args, that);
+ };
+};
\ No newline at end of file