code: private void fetchNext() {
  		if (pendingUtc != null || done) {
  			return;
  		}
  
  		DateValue dUtc = generateInstance();
  
  		//check the exit condition
  		if (dUtc == null || !condition.apply(dUtc)) {
  			done = true;
  			return;
  		}
  
  		pendingUtc = dUtc;
  		yearGenerator.workDone();
  	}
docs: calculates and stored the next date in this recurrence.