code: func extractRetainKeysPatchStrategy(strategies []string) (bool, string, error) {
  	switch len(strategies) {
  	case 0:
  		return false, "", nil
  	case 1:
  		singleStrategy := strategies[0]
  		switch singleStrategy {
  		case retainKeysStrategy:
  			return true, "", nil
  		default:
  			return false, singleStrategy, nil
  		}
  	case 2:
  		switch {
  		case strategies[0] == retainKeysStrategy:
  			return true, strategies[1], nil
  		case strategies[1] == retainKeysStrategy:
  			return true, strategies[0], nil
  		default:
  			return false, "", fmt.Errorf("unexpected patch strategy: %v", strategies)
  		}
  	default:
  		return false, "", fmt.Errorf("unexpected patch strategy: %v", strategies)
  	}
  }
docs: // extractRetainKeysPatchStrategy process patch strategy, which is a string may contains multiple
  // patch strategies separated by ",". It returns a boolean var indicating if it has
  // retainKeys strategies and a string for the other strategy.