docs: @SuppressWarnings("checkstyle:npathcomplexity")
      @Override
      public int doFilter(EventFilter filter, Data dataKey, Object oldValue, Object dataValue, EntryEventType eventType,
                          String mapNameOrNull) {
          if (filter instanceof MapPartitionLostEventFilter) {
              return FILTER_DOES_NOT_MATCH;
          }
  
          // the order of the following ifs is important!
          // QueryEventFilter is instance of EntryEventFilter
          if (filter instanceof EventListenerFilter) {
              if (!filter.eval(eventType.getType())) {
                  return FILTER_DOES_NOT_MATCH;
              } else {
                  filter = ((EventListenerFilter) filter).getEventFilter();
              }
          }
          if (filter instanceof TrueEventFilter) {
              return eventType.getType();
          }
          if (filter instanceof QueryEventFilter) {
              return processQueryEventFilter(filter, eventType, dataKey, oldValue, dataValue, mapNameOrNull)
                      ? eventType.getType() : FILTER_DOES_NOT_MATCH;
          }
          if (filter instanceof EntryEventFilter) {
              return processEntryEventFilter(filter, dataKey) ? eventType.getType() : FILTER_DOES_NOT_MATCH;
          }
          throw new IllegalArgumentException("Unknown EventFilter type = [" + filter.getClass().getCanonicalName() + "]");
      }