whole_func_string: function extend() {
  	  var target = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
  
  	  for (var _len = arguments.length, sources = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {
  	    sources[_key - 1] = arguments[_key];
  	  }
  
  	  if (!sources.length) {
  	    return target;
  	  }
  
  	  var source = sources.shift();
  
  	  if (!is$1.object(source)) {
  	    return target;
  	  }
  
  	  Object.keys(source).forEach(function (key) {
  	    if (is$1.object(source[key])) {
  	      if (!Object.keys(target).includes(key)) {
  	        Object.assign(target, _defineProperty({}, key, {}));
  	      }
  
  	      extend(target[key], source[key]);
  	    } else {
  	      Object.assign(target, _defineProperty({}, key, source[key]));
  	    }
  	  });
  	  return extend.apply(void 0, [target].concat(sources));
  	}
func_code_string: function extend() {
  	  var target = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
  
  	  for (var _len = arguments.length, sources = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {
  	    sources[_key - 1] = arguments[_key];
  	  }
  
  	  if (!sources.length) {
  	    return target;
  	  }
  
  	  var source = sources.shift();
  
  	  if (!is$1.object(source)) {
  	    return target;
  	  }
  
  	  Object.keys(source).forEach(function (key) {
  	    if (is$1.object(source[key])) {
  	      if (!Object.keys(target).includes(key)) {
  	        Object.assign(target, _defineProperty({}, key, {}));
  	      }
  
  	      extend(target[key], source[key]);
  	    } else {
  	      Object.assign(target, _defineProperty({}, key, source[key]));
  	    }
  	  });
  	  return extend.apply(void 0, [target].concat(sources));
  	}
func_documentation_string: Deep extend destination object with N more objects