docs: function dualVarArgs(fun) {
                  return function () {
                      var args = Array.prototype.slice.apply(arguments);
  
                      function isArray(obj) {
                          return Object.prototype.toString.call(obj) === '[object Array]';
                      }
  
                      // if it's just one argument and is an array then take the
                      // array as the list of arguments
                      // otherwise use all the arguments as the list of arguments
                      if (args.length === 1 && isArray(args[0])) {
                          args = args[0];
                      }
  
                      return fun(args);
                  };
              }