code: func exists(item interface{}, indices ...interface{}) bool {
  	v := reflect.ValueOf(item)
  	for _, i := range indices {
  		index := reflect.ValueOf(i)
  		var isNil bool
  		if v, isNil = indirect(v); isNil {
  			return false
  		}
  		switch v.Kind() {
  		case reflect.Array, reflect.Slice, reflect.String:
  			var x int64
  			switch index.Kind() {
  			case reflect.Int, reflect.Int8, reflect.Int16, reflect.Int32, reflect.Int64:
  				x = index.Int()
  			case reflect.Uint, reflect.Uint8, reflect.Uint16, reflect.Uint32, reflect.Uint64, reflect.Uintptr:
  				x = int64(index.Uint())
  			default:
  				return false
  			}
  			if x < 0 || x >= int64(v.Len()) {
  				return false
  			}
  			v = v.Index(int(x))
  		case reflect.Map:
  			if !index.IsValid() {
  				index = reflect.Zero(v.Type().Key())
  			}
  			if !index.Type().AssignableTo(v.Type().Key()) {
  				return false
  			}
  			if x := v.MapIndex(index); x.IsValid() {
  				v = x
  			} else {
  				v = reflect.Zero(v.Type().Elem())
  			}
  		default:
  			return false
  		}
  	}
  	if _, isNil := indirect(v); isNil {
  		return false
  	}
  	return true
  }
docs: // exists returns true if it would be possible to call the index function
  // with these arguments.
  //
  // TODO: how to document this for users?
  //
  // index returns the result of indexing its first argument by the following
  // arguments.  Thus "index x 1 2 3" is, in Go syntax, x[1][2][3]. Each
  // indexed item must be a map, slice, or array.