docs: public void addServiceInstanceChangeListener(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>> listeners = changeListenerMap.get(serviceName);
          if (listeners != null) {
              for (InstanceChangeListener<ModelServiceInstance> l : listeners) {
                  if (l instanceof ServiceInstanceChangeListenerAdapter
                          && ((ServiceInstanceChangeListenerAdapter) l).getAdapter() == listener) {
                      //exist, log error and return
                      LOGGER.error("Try to register a listener {} that has already been registered.", listener);
                      return;
                  }
  
              }
          }
          addInstanceChangeListener(serviceName, new ServiceInstanceChangeListenerAdapter(listener));
  
      }