code: func (lb *loadBalancer) checkLoadBalancerRule(lbRuleName string, port v1.ServicePort) (bool, bool, error) {
  	lbRule, ok := lb.rules[lbRuleName]
  	if !ok {
  		return false, false, nil
  	}
  
  	// Check if any of the values we cannot update (those that require a new load balancer rule) are changed.
  	if lbRule.Publicip == lb.ipAddr && lbRule.Privateport == strconv.Itoa(int(port.NodePort)) && lbRule.Publicport == strconv.Itoa(int(port.Port)) {
  		return true, lbRule.Algorithm != lb.algorithm, nil
  	}
  
  	// Delete the load balancer rule so we can create a new one using the new values.
  	if err := lb.deleteLoadBalancerRule(lbRule); err != nil {
  		return false, false, err
  	}
  
  	return false, false, nil
  }
docs: // checkLoadBalancerRule checks if the rule already exists and if it does, if it can be updated. If
  // it does exist but cannot be updated, it will delete the existing rule so it can be created again.