docs: public void removeServiceInstanceChangeListener(String serviceName, ServiceInstanceChangeListener listener) {
          ServiceInstanceUtils.validateServiceName(serviceName);
          if (listener == null) {
              throw new ServiceException(ErrorCode.SERVICE_DIRECTORY_NULL_ARGUMENT_ERROR,
                      ErrorCode.SERVICE_DIRECTORY_NULL_ARGUMENT_ERROR.getMessageTemplate(),
                      "ServiceInstanceChangeListener");
          }
          List<InstanceChangeListener<ModelServiceInstance>> list = changeListenerMap.get(serviceName);
          if (list != null) {
              boolean found = false;
              for (InstanceChangeListener<ModelServiceInstance> l : list) {
                  if (l instanceof ServiceInstanceChangeListenerAdapter
                          && ((ServiceInstanceChangeListenerAdapter) l).getAdapter() == listener) {
                      list.remove(l);
                      found = true;
                      break;
                  }
              }
              if (!found) {
                  LOGGER.error(ErrorCode.SERVICE_INSTANCE_LISTENER_DOES_NOT_EXIST.getMessageTemplate());
              }
              if (list.isEmpty()) {
                  changeListenerMap.remove(serviceName);
              }
          } else {
              LOGGER.error(String.format(ErrorCode.SERVICE_DOES_NOT_EXIST.getMessageTemplate(), serviceName));
          }
  
      }