code: void fireEvent() {
          boolean useLock = !isReentrant();
          if (useLock) {
              lock.lock();
          }
          EventImpl event = eventQueue.poll();
  
          try {
              if (event != null) {
                  fireEvent(event);
              }
          } finally {
              if (useLock) {
                  lock.unlock();
              }
          }
  
      }
docs: Deliver this event to the next target handler pulled from the
  handlerQueue. If the handler is not reentrant, the delivery will be
  serialized to prevent multiple threads entering the handler concurrently.