code: func NewFeatureGate(f *FeatureList, value string) (map[string]bool, error) {
  	featureGate := map[string]bool{}
  	for _, s := range strings.Split(value, ",") {
  		if len(s) == 0 {
  			continue
  		}
  
  		arr := strings.SplitN(s, "=", 2)
  		if len(arr) != 2 {
  			return nil, errors.Errorf("missing bool value for feature-gate key:%s", s)
  		}
  
  		k := strings.TrimSpace(arr[0])
  		v := strings.TrimSpace(arr[1])
  
  		featureSpec, ok := (*f)[k]
  		if !ok {
  			return nil, errors.Errorf("unrecognized feature-gate key: %s", k)
  		}
  
  		if featureSpec.PreRelease == utilfeature.Deprecated {
  			return nil, errors.Errorf("feature-gate key is deprecated: %s", k)
  		}
  
  		boolValue, err := strconv.ParseBool(v)
  		if err != nil {
  			return nil, errors.Errorf("invalid value %v for feature-gate key: %s, use true|false instead", v, k)
  		}
  		featureGate[k] = boolValue
  	}
  
  	return featureGate, nil
  }
docs: // NewFeatureGate parses a string of the form "key1=value1,key2=value2,..." into a
  // map[string]bool of known keys or returns an error.