docs: function merge(dest, src, ctyp, nou, non) {
      if (!src || typeof src !== 'object') return dest;
      var keys = Object.keys(src);
      var i = keys.length, dt;
      while (i--) {
          if (isNaN(keys[i]) && src.hasOwnProperty(keys[i]) && 
              (!nou || (nou && typeof src[keys[i]] !== 'undefined')) &&
              (!non || (non && src[keys[i]] !== null))) {
              if (ctyp && dest[keys[i]] != null && (dt = typeof dest[keys[i]]) !== 'undefined' && dt !== typeof src[keys[i]]) {
                  continue;
              }
              dest[keys[i]] = src[keys[i]];
          }
      }
      return dest;
  }