code: @Override
      public void queueEvent(final FacesEvent event) {
          final FacesContext fc = FacesContext.getCurrentInstance();
  
          if (isSelfRequest(fc) && event instanceof AjaxBehaviorEvent) {
              final Map<String, String> params = fc.getExternalContext().getRequestParameterMap();
              final String eventName = params.get(Constants.RequestParams.PARTIAL_BEHAVIOR_EVENT_PARAM);
              final AjaxBehaviorEvent behaviorEvent = (AjaxBehaviorEvent) event;
  
              if (OpenEvent.NAME.equals(eventName)) {
                  final OpenEvent openEvent = new OpenEvent(this, behaviorEvent.getBehavior());
                  openEvent.setPhaseId(event.getPhaseId());
                  super.queueEvent(openEvent);
  
                  return;
              }
              else if (CloseEvent.NAME.equals(eventName)) {
                  final CloseEvent closeEvent = new CloseEvent(this, behaviorEvent.getBehavior());
                  closeEvent.setPhaseId(event.getPhaseId());
                  super.queueEvent(closeEvent);
  
                  return;
              }
          }
  
          super.queueEvent(event);
      }
docs: {@inheritDoc}