code: private long getLowWaterMark(Iterable<WorkUnitState> previousStates, String lowWaterMark) {
  
      long lowWaterMarkValue = retriever.getWatermarkFromString(lowWaterMark);
  
      // Find the max HWM from the previous states, this is the new current LWM
      for (WorkUnitState previousState : previousStates) {
        if (previousState.getWorkingState().equals(WorkUnitState.WorkingState.COMMITTED)) {
          long previousHighWaterMark = previousState.getWorkunit().getHighWaterMark();
          if (previousHighWaterMark > lowWaterMarkValue) {
            lowWaterMarkValue = previousHighWaterMark;
          }
        }
      }
  
      return lowWaterMarkValue + getRetriever().getWatermarkIncrementMs();
    }
docs: Gets the LWM for this job runs. The new LWM is the HWM of the previous run + 1 unit (day,hour,minute..etc).
  If there was no previous execution then it is set to the given lowWaterMark + 1 unit.