/**
  * Process and Returns the Status of the prosses as a List.
  *
  * @param monitor
  * @return List contains the IStatus.
  * @throws ProcessFailureException
  */
 public List<IStatus> process(IProgressMonitor monitor) throws ProcessFailureException {
   if (!areMacrosForConditionEvaluationExpandable()) {
     throw new ProcessFailureException(getUnexpandableMacroMessage());
   }
   if (!isConditionValueTrue()) {
     List<IStatus> statuses = new ArrayList<IStatus>(1);
     statuses.add(
         new Status(
             IStatus.ERROR,
             CCorePlugin.PLUGIN_ID,
             IStatus.INFO,
             Messages.getString("ConditionalProcessGroup.notExecuting") + id,
             null)); //$NON-NLS-1$
     return statuses;
   }
   List<IStatus> statuses = new ArrayList<IStatus>(processes.size());
   for (Process process : processes) {
     try {
       statuses.add(process.process(monitor));
     } catch (ProcessFailureException e) {
       throw new ProcessFailureException(e.getMessage(), e, statuses);
     }
   }
   return statuses;
 }