code: func metadataFromField(ctx context.Context, param interface{}, fieldName string) string {
  	var ov reflect.Value
  
  	ov = reflect.ValueOf(param)
  	for ov.Kind() == reflect.Ptr || ov.Kind() == reflect.Interface {
  		ov = ov.Elem()
  	}
  
  	// We check if the field was set to a value as this will overide the value in the tag
  	// At the same time, we check if the field exists and early exit with the empty string if it doesn't
  	field := reflect.Value(ov.FieldByName(fieldName))
  	if !field.IsValid() {
  		return ""
  	}
  
  	userVal := field.Interface()
  	if userVal != "" {
  		return userVal.(string)
  	}
  
  	ot := ov.Type()
  	if field, ok := ot.FieldByName(fieldName); ok {
  		// The val tag defines the «default» value the metadata field should have
  		// If the val tag has a value of "-", then a user value was expected and this will panic
  		val := field.Tag.Get("val")
  		if val != "-" {
  			return val
  		} else {
  			panic(fmt.Sprintf("No default value defined for %s on %s. User specified value is required.", fieldName, ot.String()))
  		}
  	} else {
  		panic(fmt.Sprintf("Missing %s for %s", fieldName, ot.String()))
  	}
  }
docs: // Lookup the pfconfig metadata for a specific field
  // If there is a non-zero value in the field, it will be taken
  // Otherwise it will take the value in the val tag of the field