code: func (c *Cloud) removeSecurityGroupIngress(securityGroupID string, removePermissions []*ec2.IpPermission) (bool, error) {
  	// We do not want to make changes to the Global defined SG
  	if securityGroupID == c.cfg.Global.ElbSecurityGroup {
  		return false, nil
  	}
  
  	group, err := c.findSecurityGroup(securityGroupID)
  	if err != nil {
  		klog.Warningf("Error retrieving security group: %q", err)
  		return false, err
  	}
  
  	if group == nil {
  		klog.Warning("Security group not found: ", securityGroupID)
  		return false, nil
  	}
  
  	changes := []*ec2.IpPermission{}
  	for _, removePermission := range removePermissions {
  		hasUserID := false
  		for i := range removePermission.UserIdGroupPairs {
  			if removePermission.UserIdGroupPairs[i].UserId != nil {
  				hasUserID = true
  			}
  		}
  
  		var found *ec2.IpPermission
  		for _, groupPermission := range group.IpPermissions {
  			if ipPermissionExists(removePermission, groupPermission, hasUserID) {
  				found = removePermission
  				break
  			}
  		}
  
  		if found != nil {
  			changes = append(changes, found)
  		}
  	}
  
  	if len(changes) == 0 {
  		return false, nil
  	}
  
  	klog.V(2).Infof("Removing security group ingress: %s %v", securityGroupID, changes)
  
  	request := &ec2.RevokeSecurityGroupIngressInput{}
  	request.GroupId = &securityGroupID
  	request.IpPermissions = changes
  	_, err = c.ec2.RevokeSecurityGroupIngress(request)
  	if err != nil {
  		klog.Warningf("Error revoking security group ingress: %q", err)
  		return false, err
  	}
  
  	return true, nil
  }
docs: // Makes sure the security group no longer includes the specified permissions
  // Returns true if and only if changes were made
  // If the security group no longer exists, will return (false, nil)