code: func (e Enum) setValue(v interface{}, key string) error {
  	i, err := e.GetValue(key)
  	if err != nil {
  		return err
  	}
  
  	vValue := reflect.ValueOf(v).Elem()
  	if !vValue.CanSet() {
  		panic(fmt.Errorf("flagenum: Cannot set supplied value, %v", vValue))
  	}
  
  	iValue := reflect.ValueOf(i)
  	if !vValue.Type().AssignableTo(iValue.Type()) {
  		panic(fmt.Errorf("flagenum: Enumeration type (%v) is incompatible with supplied value (%v)",
  			vValue.Type(), iValue.Type()))
  	}
  
  	vValue.Set(iValue)
  	return nil
  }
docs: // Sets the value v to the enumeration value mapped to the supplied key.