docs: function merge(o) {
    if (!isPlainObject(o)) { return {}; }
    var args = arguments;
    var len = args.length - 1;
  
    for (var i = 0; i < len; i++) {
      var obj = args[i + 1];
  
      if (isPlainObject(obj)) {
        for (var key in obj) {
          if (hasOwn(obj, key)) {
            if (isPlainObject(obj[key])) {
              o[key] = merge(o[key], obj[key]);
            } else {
              o[key] = obj[key];
            }
          }
        }
      }
    }
    return o;
  }