public void open(ExecutionContext executionContext) throws ItemStreamException {
   if (executionContext.containsKey(EXPECTED)) {
     localState.expected = executionContext.getLong(EXPECTED);
     localState.actual = executionContext.getLong(ACTUAL);
     if (!waitForResults()) {
       throw new ItemStreamException("Timed out waiting for back log on open");
     }
   }
 }
 @Override
 public A23 process(A23 item) throws Exception {
   ExecutionContext stepContext = stepExecution.getExecutionContext();
   long processCount = stepContext.getLong("PROCESS_COUNT", 0);
   processCount++;
   stepContext.putLong("PROCESS_COUNT", processCount);
   if (processCount % writeSampleFrequency == 1) {
     item.setSample(true);
   }
   return item;
 }
 public void open(ExecutionContext executionContext) throws ItemStreamException {
   index = (int) executionContext.getLong("POSITION", min);
 }