docs: function mergeDeepObjects(object1, object2) {
    const keys1 = Object.keys(object1);
    const keys2 = Object.keys(object2);
  
    let index = -1,
        mergedObject = {},
        key,
        indexOfKey;
  
    while (++index < keys1.length) {
      key = keys1[index];
      indexOfKey = keys2.indexOf(key);
  
      if (~indexOfKey) {
        mergedObject[key] = getDeeplyMergedValues(object1[key], object2[key]);
  
        keys2.splice(indexOfKey, 1);
  
        continue;
      }
  
      mergedObject[key] = object1[key];
    }
  
    if (keys2.length) {
      index = -1;
  
      while (++index < keys2.length) {
        key = keys2[index];
  
        mergedObject[key] = object2[key];
      }
    }
  
    return mergedObject;
  }