docs: function coerceAll (obj) {
    var type = Array.isArray(obj) ? 'array' : typeof obj;
    var i;
    var n;
  
    switch (type) {
      case 'string':
        return coerce(obj);
      case 'object':
        if (obj) {
          var props = Object.keys(obj);
          for (i = 0, n = props.length; i < n; i++) {
            var key = props[i];
            obj[key] = coerceAll(obj[key]);
          }
        }
        break;
      case 'array':
        for (i = 0, n = obj.length; i < n; i++) {
          coerceAll(obj[i]);
        }
        break;
    }
  
    return obj;
  }