code: func syncElbListeners(loadBalancerName string, listeners []*elb.Listener, listenerDescriptions []*elb.ListenerDescription) ([]*elb.Listener, []*int64) {
  	foundSet := make(map[int]bool)
  	removals := []*int64{}
  	additions := []*elb.Listener{}
  
  	for _, listenerDescription := range listenerDescriptions {
  		actual := listenerDescription.Listener
  		if actual == nil {
  			klog.Warning("Ignoring empty listener in AWS loadbalancer: ", loadBalancerName)
  			continue
  		}
  
  		found := false
  		for i, expected := range listeners {
  			if expected == nil {
  				klog.Warning("Ignoring empty desired listener for loadbalancer: ", loadBalancerName)
  				continue
  			}
  			if elbListenersAreEqual(actual, expected) {
  				// The current listener on the actual
  				// elb is in the set of desired listeners.
  				foundSet[i] = true
  				found = true
  				break
  			}
  		}
  		if !found {
  			removals = append(removals, actual.LoadBalancerPort)
  		}
  	}
  
  	for i := range listeners {
  		if !foundSet[i] {
  			additions = append(additions, listeners[i])
  		}
  	}
  
  	return additions, removals
  }
docs: // syncElbListeners computes a plan to reconcile the desired vs actual state of the listeners on an ELB
  // NOTE: there exists an O(nlgn) implementation for this function. However, as the default limit of
  //       listeners per elb is 100, this implementation is reduced from O(m*n) => O(n).