docs: function selectFields (a, b) {
    // get the values in A of the fields in B
    var ret = Array.isArray(b) ? [] : {}
    Object.keys(b).forEach(function (k) {
      if (!a.hasOwnProperty(k)) return
      var v = b[k]
        , av = a[k]
      if (v && av && typeof v === "object" && typeof av === "object"
         && !(v instanceof Date)
         && !(v instanceof RegExp)
         && !(v instanceof String)
         && !(v instanceof Boolean)
         && !(v instanceof Number)
         && !(Array.isArray(v))) {
        ret[k] = selectFields(av, v)
      } else ret[k] = av
    })
    return ret
  }