docs: @Override
  	public Long getValue() {
  		final JobStatus status = eg.getState();
  
  		final long restartingTimestamp = eg.getStatusTimestamp(JobStatus.RESTARTING);
  
  		final long switchToRunningTimestamp;
  		final long lastRestartTime;
  
  		if (restartingTimestamp <= 0) {
  			// we haven't yet restarted our job
  			return 0L;
  		}
  		else if ((switchToRunningTimestamp = eg.getStatusTimestamp(JobStatus.RUNNING)) >= restartingTimestamp) {
  			// we have transitioned to RUNNING since the last restart
  			lastRestartTime = switchToRunningTimestamp - restartingTimestamp;
  		}
  		else if (status.isTerminalState()) {
  			// since the last restart we've switched to a terminal state without touching
  			// the RUNNING state (e.g. failing from RESTARTING)
  			lastRestartTime = eg.getStatusTimestamp(status) - restartingTimestamp;
  		}
  		else {
  			// we're still somewhere between RESTARTING and RUNNING
  			lastRestartTime  = System.currentTimeMillis() - restartingTimestamp;
  		}
  
  		// we guard this with 'Math.max' to avoid negative timestamps when clocks re-sync 
  		return Math.max(lastRestartTime, 0);
  	}