code: func (d durationFixer) FixupDurations(raw interface{}) error {
  	rawMap, ok := raw.(map[string]interface{})
  	if !ok {
  		return nil
  	}
  	for key, val := range rawMap {
  		switch val.(type) {
  		case map[string]interface{}:
  			if err := d.FixupDurations(val); err != nil {
  				return err
  			}
  
  		case []interface{}:
  			for _, v := range val.([]interface{}) {
  				if err := d.FixupDurations(v); err != nil {
  					return err
  				}
  			}
  
  		case []map[string]interface{}:
  			for _, v := range val.([]map[string]interface{}) {
  				if err := d.FixupDurations(v); err != nil {
  					return err
  				}
  			}
  
  		default:
  			if d[strings.ToLower(key)] {
  				// Convert a string value into an integer
  				if vStr, ok := val.(string); ok {
  					dur, err := time.ParseDuration(vStr)
  					if err != nil {
  						return err
  					}
  					rawMap[key] = dur
  				}
  			}
  		}
  	}
  	return nil
  }
docs: // FixupDurations is used to handle parsing any field names in the map to time.Durations