code: function sn_util_merge(obj1, obj2) {
      var prop, desc;
      if (obj2 === undefined) {
        obj2 = {};
      }
      for (prop in obj1) {
        if (obj1.hasOwnProperty(prop) && obj2[prop] === undefined) {
          desc = Object.getOwnPropertyDescriptor(obj1, prop);
          if (desc) {
            Object.defineProperty(obj2, prop, desc);
          } else {
            obj2[prop] = obj1[prop];
          }
        }
      }
      return obj2;
    }
docs: Copy the enumerable own properties of `obj1` that don't already exist on `obj2` into `obj2` and return `obj2`.
  
  @param {Object} obj1 - The object to copy enumerable properties from.
  @param {Object} [obj2] - The optional object to copy the properties to. If not
  provided a new object will be created.
  @returns {Object} The object whose properties were copied to.
  @since 0.14.0
  @preserve