docs: public void removeServerNotificationListener(RESTRequest request, ServerNotificationRegistration removedRegistration, final boolean removeAll,
                                                   JSONConverter converter, boolean cleanupHttpIDs) {
          NotificationTargetInformation nti = toNotificationTargetInformation(request, removedRegistration.objectName.getCanonicalName());
  
          //Get the corresponding List for the given ObjectName
          List<ServerNotification> notifications = serverNotifications.get(nti);
  
          if (notifications == null) {
              //MBean is registered, but listener is not
              throw ErrorHelper.createRESTHandlerJsonException(new ListenerNotFoundException("There are no listeners registered for ObjectName: "
                                                                                             + removedRegistration.objectName.getCanonicalName()),
                                                               converter,
                                                               APIConstants.STATUS_BAD_REQUEST);
  
          }
  
          Iterator<ServerNotification> notificationsIter = notifications.iterator();
          boolean foundMatch = false;
          while (notificationsIter.hasNext()) {
              ServerNotification currentRegistration = notificationsIter.next();
  
              //Check if we match the Listener
              if (currentRegistration.listener.equals(removedRegistration.listener)) {
                  if (removeAll ||
                      (currentRegistration.filter == removedRegistration.filterID &&
                      currentRegistration.handback == removedRegistration.handbackID)) {
                      // Check whether the producer of the notification is local or remote.
                      if (nti.getRoutingInformation() == null) {
                          //Remove from MBeanServer
                          MBeanServerHelper.removeServerNotification(removedRegistration.objectName, //no need to make another ObjectName
                                                                     currentRegistration.listener,
                                                                     (NotificationFilter) getObject(currentRegistration.filter, null, converter),
                                                                     getObject(currentRegistration.handback, null, converter),
                                                                     converter);
                      } else {
                          // Remove the notification listener from the Target-Client Manager through EventAdmin
                          MBeanRoutedNotificationHelper helper = MBeanRoutedNotificationHelper.getMBeanRoutedNotificationHelper();
                          helper.removeRoutedServerNotificationListener(nti,
                                                                        currentRegistration.listener,
                                                                        (NotificationFilter) getObject(currentRegistration.filter, null, converter),
                                                                        getObject(currentRegistration.handback, null, converter),
                                                                        converter);
                      }
                      //Remove from local list (through iterator)
                      notificationsIter.remove();
  
                      if (cleanupHttpIDs) {
                          removeObject(currentRegistration.filter);
                          removeObject(currentRegistration.handback);
                      }
  
                      foundMatch = true;
                  }
              }
          }
  
          if (!foundMatch) {
              if (removeAll) {
                  throw ErrorHelper.createRESTHandlerJsonException(new ListenerNotFoundException("Could not match given Listener to ObjectName: "
                                                                                                 + removedRegistration.objectName.getCanonicalName()),
                                                                   converter,
                                                                   APIConstants.STATUS_BAD_REQUEST);
              } else {
                  throw ErrorHelper.createRESTHandlerJsonException(new ListenerNotFoundException("Could not match given Listener, Filter and Handback to ObjectName: "
                                                                                                 + removedRegistration.objectName.getCanonicalName()),
                                                                   converter,
                                                                   APIConstants.STATUS_BAD_REQUEST);
              }
          }
      }