dotSet(obj, path, value) {
		const parts = path.split(".");
		const part = parts.shift();
		if (parts.length > 0) {
			if (!Object.prototype.hasOwnProperty.call(obj, part)) {
				obj[part] = {};
			} else if (obj[part] == null) {
				obj[part] = {};
			} else {
				if (typeof obj[part] !== "object") {
					throw new Error("Value already set and it's not an object");
				}
			}
			obj[part] = utils.dotSet(obj[part], parts.join("."), value);
			return obj;
		}
		obj[path] = value;
		return obj;
	}
Sets a variable on an object based on its dot path.

@param {Object} obj
@param {String} path
@param {*} value
@returns {Object}