docs: function dotMap(path) {
    if (typeof path !== 'string' || path.length === 0) {
      return I
    }
    var segments = path.split('.')
    var len = segments.length
  
    switch (len) {
      case 0: return I
      case 1: return function (x) {
          return x[segments[0]]
        }
      case 2: return function (x) {
          return x[segments[0]][segments[1]]
        }
      case 3: return function (x) {
          return x[segments[0]][segments[1]][segments[2]]
        }
      case 4: return function (x) {
        return x[segments[0]][segments[1]][segments[2]][segments[3]]
      }
    }
    return function (x) {
      var i
      while(i = segments.shift(), x = x[i], segments.length);
      return x;
    }
  }