docs: @Override
      public List<JobInstance> getJobInstances(String jobName, int start,
                                               int count) throws NoSuchJobException, JobSecurityException {
  
          batchRoleCheck();
  
          List<JobInstanceEntity> jobInstances = new ArrayList<JobInstanceEntity>();
  
          if (count == 0) {
              return new ArrayList<JobInstance>();
          } else if (count < 0) {
              throw new IllegalArgumentException("Count should be a positive integer (or 0, which will return an empty list)");
          }
  
          if (authService == null || authService.isAdmin() || authService.isMonitor()) {
              // Do an unfiltered query
              jobInstances = getPersistenceManagerService().getJobInstances(jobName, start, count);
          } else if (authService.isSubmitter()) {
              jobInstances = getPersistenceManagerService().getJobInstances(jobName, batchSecurityHelper.getRunAsUser(), start, count);
          } else {
              throw new JobSecurityException("Current user " + authService.getRunAsUser() + " is not authorized to perform batch operations");
          }
  
          // Some debate on the mailing list whether and how an implementation should be
          // required to distinguish between an "unknown" job resulting in NoSuchJobException and
          // a "known" job for which there happen to be zero instances (hence an empty list
          // return value).
          if (jobInstances.size() == 0) {
              try {
                  validateJobName(jobName);
              } catch (NoSuchJobException e) { //FFDC instrumentation
                  throw e;
              }
          }
          return new ArrayList<JobInstance>(jobInstances);
      }