code: public <L extends Listener> void pushEvent(Event<?, L> event) {
          synchronized (this.stack) {
              this.stack.push(event);
          }
      }
docs: Pushes the event onto the event stack. This action must be performed
  immediately before the event is being dispatched. Additionally, after the
  event has been dispatched, it has to be {@link #popEvent(Event) popped}
  off the stack again.
  
  @param <L> Type of the listener.
  @param event The event which will be dispatched.
  @see #popEvent(Event)