private boolean checkVetoSubscribers(Object event, String topic, Object eventObj, List vetoSubscribers,
           StackTraceElement[] callingStack) {
      if (vetoSubscribers != null && !vetoSubscribers.isEmpty()) {
         for (Iterator vlIter = vetoSubscribers.iterator(); vlIter.hasNext();) {
            Object vetoer = vlIter.next();
            VetoEventListener vl = null;
            VetoTopicEventListener vtl = null;
            if (event == null) {
               vtl = (VetoTopicEventListener) vetoer;
            } else {
               vl = (VetoEventListener) vetoer;
            }
            long start = System.currentTimeMillis();
            try {
               boolean shouldVeto = false;
               if (event == null) {
                  shouldVeto = vtl.shouldVeto(topic, eventObj);
               } else {
                  shouldVeto = vl.shouldVeto(event);
               }
               if (shouldVeto) {
                  handleVeto(vl, event, vtl, topic, eventObj);
                  checkTimeLimit(start, event, null, vl);
                  if (LOG.isLoggable(Level.DEBUG)) {
                     LOG.debug("Publication vetoed. Event:" + event + ", Topic:" + topic + ", veto subscriber:" + vl);
                  }
                  return true;
               }
            } catch (Throwable ex) {
               checkTimeLimit(start, event, null, vl);
               subscribeVetoException(event, topic, eventObj, ex, callingStack, vl);
            }
         }
      }
      return false;
   }