docs: private void publishLocalEvent(String cacheId, Object eventData, Extractors extractors) {
          Collection<EventRegistration> eventRegistrations = getRegistrations(cacheId);
          if (eventRegistrations.isEmpty()) {
              return;
          }
  
          for (EventRegistration eventRegistration : eventRegistrations) {
              Registration registration = (Registration) eventRegistration;
              Object listener = registration.getListener();
              if (!(listener instanceof QueryCacheListenerAdapter)) {
                  continue;
              }
              Object eventDataToPublish = eventData;
              int orderKey = -1;
              if (eventDataToPublish instanceof LocalCacheWideEventData) {
                  orderKey = cacheId.hashCode();
              } else if (eventDataToPublish instanceof LocalEntryEventData) {
                  LocalEntryEventData localEntryEventData = (LocalEntryEventData) eventDataToPublish;
                  if (localEntryEventData.getEventType() != EventLostEvent.EVENT_TYPE) {
                      EventFilter filter = registration.getFilter();
                      if (!canPassFilter(localEntryEventData, filter, extractors)) {
                          continue;
                      } else {
                          boolean includeValue = isIncludeValue(filter);
                          eventDataToPublish = includeValue
                                  ? localEntryEventData : localEntryEventData.cloneWithoutValue();
                          Data keyData = localEntryEventData.getKeyData();
                          orderKey = keyData == null ? -1 : keyData.hashCode();
                      }
                  }
              }
  
              publishEventInternal(registration, eventDataToPublish, orderKey);
          }
      }