docs: private boolean _process(FacesContext context, PhaseId phaseId, PhaseProcessor processor)
      {
          RuntimeException processingException = null;
          try
          {
              if (!notifyListeners(context, phaseId, getBeforePhaseListener(), true))
              {
                  try
                  {
                      if (processor != null)
                      {
                          processor.process(context, this);
                      }
          
                      broadcastEvents(context, phaseId);
                  }
                  catch (RuntimeException re)
                  {
                      // catch any Exception that occures while processing the phase
                      // to ensure invocation of the afterPhase methods
                      processingException = re;
                  }
              }
          }
          finally
          {
              if (context.getRenderResponse() || context.getResponseComplete())
              {
                  clearEvents();
              }            
          }
  
          boolean retVal = notifyListeners(context, phaseId, getAfterPhaseListener(), false);
          if (processingException == null) 
          {
              return retVal;   
          }
          else
          {
              throw processingException;
          }
      }