docs: public static void addClientQueryListener(RemoteCache<?, ?> remoteCache, Object listener, Query query) {
        ClientListener l = ReflectionUtil.getAnnotation(listener.getClass(), ClientListener.class);
        if (l == null) {
           throw log.missingClientListenerAnnotation(listener.getClass().getName());
        }
        if (!l.useRawData()) {
           throw log.clientListenerMustUseRawData(listener.getClass().getName());
        }
        if (!l.filterFactoryName().equals(Filters.QUERY_DSL_FILTER_FACTORY_NAME)) {
           throw log.clientListenerMustUseDesignatedFilterConverterFactory(Filters.QUERY_DSL_FILTER_FACTORY_NAME);
        }
        if (!l.converterFactoryName().equals(Filters.QUERY_DSL_FILTER_FACTORY_NAME)) {
           throw log.clientListenerMustUseDesignatedFilterConverterFactory(Filters.QUERY_DSL_FILTER_FACTORY_NAME);
        }
        Object[] factoryParams = makeFactoryParams(query);
        remoteCache.addClientListener(listener, factoryParams, null);
     }