code: @Override
      public void processListener(FacesListener listener) {
          UIComponent c = getComponent();
          UIComponent cFromStack;
          boolean didPush = false;
          FacesContext context = FacesContext.getCurrentInstance();
          cFromStack = UIComponent.getCurrentComponent(context);
          if (null == cFromStack) {
              didPush = true;
              c.pushComponentToEL(context, null);
          }
          try {
              if (listener instanceof SystemEventListener) {
                  super.processListener(listener);
              } else if (listener instanceof ComponentSystemEventListener) {
                  ((ComponentSystemEventListener)listener).processEvent(this);
              }
          } finally {
              if (didPush) {
                  c.popComponentFromEL(context);
              }
          }
      }
docs: <p class="changed_added_2_2">Broadcast this event instance to
  the specified {@link FacesListener} by calling the superclass's
  <code>processListener()</code> implementation.</p>
  
  @param listener {@link FacesListener} to evaluate
  @since 2.2