docs: function extend() {
      for (var _len2 = arguments.length, a = Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {
          a[_key2] = arguments[_key2];
      }
  
      var len = a.length,
          first = a[0],
          deep = (0, _is.isBoolean)(first);
  
      if (!len) return {};
  
      if (len === 1) {
          return _extend(false, {}, first);
      }
  
      if (len === 2) {
          if (deep && first) {
              return _extend(first, {}, a[1]);
          } else {
              return _extend.apply(undefined, [false].concat((0, _toConsumableArray3.default)(a)));
          }
      }
      if (deep) {
          if (len === 3) {
              return _extend.apply(undefined, (0, _toConsumableArray3.default)(a));
          } else {
              var temp = a.splice(len - 2);
              a = a.concat([_extend.apply(undefined, [first].concat((0, _toConsumableArray3.default)(temp)))]);
              return extend.apply(undefined, (0, _toConsumableArray3.default)(a));
          }
      } else {
          var _temp = a.splice(len - 2);
          a.push(_extend.apply(undefined, [false].concat((0, _toConsumableArray3.default)(_temp))));
          return extend.apply(undefined, (0, _toConsumableArray3.default)(a));
      }
  }