docs: function deepConvert (src, cb) {
    var dest
    if (Array.isArray(src)) {
      dest = []
    } else {
      dest = {}
    }
    if (dest) {
      for (var key in src) {
        if (src.hasOwnProperty(key)) {
          var val = src[key]
          var newKV = cb(key, val)
          if (newKV === null) {
            // skip this field entirely
            continue
          }
  
          var newKey = newKV[0]
          var newVal = newKV[1]
  
          if (newVal !== undefined &&
            newVal !== null &&
            (Array.isArray(newVal) || newVal.constructor === Object)) {
            dest[newKey] = deepConvert(newVal, cb)
          } else {
            dest[newKey] = newVal
          }
        }
      }
    } else {
      dest = src
    }
  
    return dest
  }