code: function merge (src, dest) {
    if (src != null &&
          dest != null &&
          !Array.isArray(src) &&
          !Array.isArray(dest) &&
          typeof src === 'object' &&
          typeof dest === 'object') {
      Object.getOwnPropertyNames(src)
              .forEach(function (prop) {
                var descriptor = Object.getOwnPropertyDescriptor(src, prop);
                descriptor.value = merge(descriptor.value, dest[prop]);
                Object.defineProperty(dest, prop, descriptor);
              });
  
      return dest;
    }
  
    return src;
  }
docs: Do a deep merge of two objects. Only non-Array objects are merged. Arrays are *not* merged.