docs: function set (obj, keys, value) {
    var i
    var key
    var last
    var tmp = obj || {}
  
    keys = _splitPath(keys)
  
    if (!keys || keys.length === 0) {
      return
    }
  
    last = keys.pop()
  
    for (i = 0; i < keys.length; i++) {
      key = keys[i]
      if (!tmp[key]) {
        tmp[key] = {}
      }
      if (tmp.hasOwnProperty(key)) {
        tmp = tmp[key]
      }
    }
    if (value === null) {
      delete (tmp[last])
    } else {
      tmp[last] = value
    }
    return obj
  }