code: function addToResult(currentObj, otherObj, key) {
        var immutableValue = Immutable(otherObj[key]);
        var mergerResult = merger && merger(currentObj[key], immutableValue, config);
        var currentValue = currentObj[key];
  
        if ((result !== undefined) ||
          (mergerResult !== undefined) ||
          (!currentObj.hasOwnProperty(key)) ||
          !isEqual(immutableValue, currentValue)) {
  
          var newValue;
  
          if (mergerResult !== undefined) {
            newValue = mergerResult;
          } else if (deep && isMergableObject(currentValue) && isMergableObject(immutableValue)) {
            newValue = Immutable.merge(currentValue, immutableValue, config);
          } else {
            newValue = immutableValue;
          }
  
          if (!isEqual(currentValue, newValue) || !currentObj.hasOwnProperty(key)) {
            if (result === undefined) {
              // Make a shallow clone of the current object.
              result = quickCopy(currentObj, instantiateEmptyObject(currentObj));
            }
  
            result[key] = newValue;
          }
        }
      }
docs: Use the given key to extract a value from the given object, then place that value in the result object under the same key. If that resulted in a change from this object's value at that key, set anyChanges = true.