code: func (b *Builder) splitSlicesAndValues(c Config) (slices, values Config) {
  	v, t := reflect.ValueOf(c), reflect.TypeOf(c)
  	rs, rv := reflect.New(t), reflect.New(t)
  
  	for i := 0; i < t.NumField(); i++ {
  		f := t.Field(i)
  		if f.Type.Kind() == reflect.Slice {
  			rs.Elem().Field(i).Set(v.Field(i))
  		} else {
  			rv.Elem().Field(i).Set(v.Field(i))
  		}
  	}
  	return rs.Elem().Interface().(Config), rv.Elem().Interface().(Config)
  }
docs: // splitSlicesAndValues moves all slice values defined in c to 'slices'
  // and all other values to 'values'.