code: func ParseThresholdConfig(allocatableConfig []string, evictionHard, evictionSoft, evictionSoftGracePeriod, evictionMinimumReclaim map[string]string) ([]evictionapi.Threshold, error) {
  	results := []evictionapi.Threshold{}
  	hardThresholds, err := parseThresholdStatements(evictionHard)
  	if err != nil {
  		return nil, err
  	}
  	results = append(results, hardThresholds...)
  	softThresholds, err := parseThresholdStatements(evictionSoft)
  	if err != nil {
  		return nil, err
  	}
  	gracePeriods, err := parseGracePeriods(evictionSoftGracePeriod)
  	if err != nil {
  		return nil, err
  	}
  	minReclaims, err := parseMinimumReclaims(evictionMinimumReclaim)
  	if err != nil {
  		return nil, err
  	}
  	for i := range softThresholds {
  		signal := softThresholds[i].Signal
  		period, found := gracePeriods[signal]
  		if !found {
  			return nil, fmt.Errorf("grace period must be specified for the soft eviction threshold %v", signal)
  		}
  		softThresholds[i].GracePeriod = period
  	}
  	results = append(results, softThresholds...)
  	for i := range results {
  		for signal, minReclaim := range minReclaims {
  			if results[i].Signal == signal {
  				results[i].MinReclaim = &minReclaim
  				break
  			}
  		}
  	}
  	for _, key := range allocatableConfig {
  		if key == kubetypes.NodeAllocatableEnforcementKey {
  			results = addAllocatableThresholds(results)
  			break
  		}
  	}
  	return results, nil
  }
docs: // ParseThresholdConfig parses the flags for thresholds.