docs: protected void endOfWorkUnit(boolean callAfterJobListeners) {
  
          // 1. Execute the very last artifacts (jobListener) if the before job listeners were called
          if (callAfterJobListeners) {
              try {
                  jobListenersAfterJob();
              } catch (Throwable t) {
                  // Log job-level exception in the job log with message
                  if (runtimeWorkUnitExecution instanceof RuntimeJobExecution) {
                      JoblogUtil.logToJobLogAndTraceOnly(Level.SEVERE, "exception.after.job", new Object[] { getExceptionString(t) }, logger);
                  } else {
                      // Log exception stack trace without a message
                      JoblogUtil.logRawMsgToJobLogAndTraceOnly(Level.SEVERE, getExceptionString(t), logger);
                  }
                  // FFDC
                  threadTypeBasedControllerHelper.batchStatusFailedFromException();
              }
          }
  
          // 2. transition to final batch status
          transitionToFinalBatchStatus();
  
          // 3. default ExitStatus if necessary
          if (runtimeWorkUnitExecution.getExitStatus() == null) {
              logger.fine("No job-level exitStatus set, defaulting to job batch Status = " + runtimeWorkUnitExecution.getBatchStatus());
              runtimeWorkUnitExecution.setExitStatus(runtimeWorkUnitExecution.getBatchStatus().name());
          }
  
          // 4. persist statuses and end time data
  
          /* Maybe this should be part of RWUE toString() */
  
          /*
           * logger.fine("Job complete for job id=" + runtimeWorkUnitExecution.getWorkUnitInternalJobName()
           * + ", executionId=" + runtimeWorkUnitExecution.getWorkUnitInternalExecutionId()
           * + ", batchStatus=" + runtimeWorkUnitExecution.getBatchStatus()
           * + ", exitStatus=" + runtimeWorkUnitExecution.getExitStatus());
           */
          persistWorkUnitBatchAndExitStatus();
  
          // 5. purge checkpoint data iff batchStatus==COMPLETED. (TODO: ABANDONED too?)
  //		if (runtimeWorkUnitExecution.getBatchStatus().equals( BatchStatus.COMPLETED ) ) {
  //		    getPersistenceManagerService().deleteCheckpointData( runtimeWorkUnitExecution.getWorkUnitInternalInstanceId() );
  //		}
  
      }