code: func (ns *Namespace) In(l interface{}, v interface{}) (bool, error) {
  	if l == nil || v == nil {
  		return false, nil
  	}
  
  	lv := reflect.ValueOf(l)
  	vv := reflect.ValueOf(v)
  
  	if !vv.Type().Comparable() {
  		return false, errors.Errorf("value to check must be comparable: %T", v)
  	}
  
  	// Normalize numeric types to float64 etc.
  	vvk := normalize(vv)
  
  	switch lv.Kind() {
  	case reflect.Array, reflect.Slice:
  		for i := 0; i < lv.Len(); i++ {
  			lvv, isNil := indirectInterface(lv.Index(i))
  			if isNil || !lvv.Type().Comparable() {
  				continue
  			}
  
  			lvvk := normalize(lvv)
  
  			if lvvk == vvk {
  				return true, nil
  			}
  		}
  	case reflect.String:
  		if vv.Type() == lv.Type() && strings.Contains(lv.String(), vv.String()) {
  			return true, nil
  		}
  	}
  	return false, nil
  }
docs: // In returns whether v is in the set l.  l may be an array or slice.