docs: @Override
      @FFDCIgnore({ JobExecutionAlreadyCompleteException.class,
                    NoSuchJobExecutionException.class,
                    JobExecutionNotMostRecentException.class,
                    JobSecurityException.class })
      public long restart(long oldExecutionId,
                          Properties restartParameters) throws JobExecutionAlreadyCompleteException, NoSuchJobExecutionException, JobExecutionNotMostRecentException, JobRestartException, JobSecurityException {
          batchRoleCheck();
  
          /*
           * The whole point of this method is to have JobRestartException serve as a blanket exception for anything other
           * than the rest of the more specific exceptions declared on the throws clause. So we won't log but just rethrow.
           */
          long retVal = 0L;
          try {
              retVal = restartInternal(oldExecutionId, restartParameters);
          } catch (JobExecutionAlreadyCompleteException e) {
              throw e;
          } catch (NoSuchJobExecutionException e) {
              throw e;
          } catch (JobExecutionNotMostRecentException e) {
              throw e;
          } catch (JobSecurityException e) {
              markInstanceExecutionFailed(oldExecutionId, this.getCorrelationId(restartParameters));
              throw e;
          } catch (Exception e) {
              markInstanceExecutionFailed(oldExecutionId, this.getCorrelationId(restartParameters));
              throw new JobRestartException(e);
          }
  
          return retVal;
      }