code: static Generator serialMinuteGenerator(final int interval, final DateValue dtStart) {
  		final TimeValue dtStartTime = TimeUtils.timeOf(dtStart);
  		return new Generator() {
  			int minute = dtStartTime.minute() - interval;
  			int hour = dtStartTime.hour();
  			int day = dtStart.day();
  			int month = dtStart.month();
  			int year = dtStart.year();
  
  			@Override
  			boolean generate(DTBuilder builder) {
  				int nminute;
  				if (hour != builder.hour || day != builder.day || month != builder.month || year != builder.year) {
  					int minutesBetween = (daysBetween(builder, year, month, day) * 24 + builder.hour - hour) * 60 - minute;
  					nminute = ((interval - (minutesBetween % interval)) % interval);
  					if (nminute > 59) {
  						/*
  						 * Don't update day so that the difference calculation
  						 * above is correct when this function is reentered with
  						 * a different day.
  						 */
  						return false;
  					}
  					hour = builder.hour;
  					day = builder.day;
  					month = builder.month;
  					year = builder.year;
  				} else {
  					nminute = minute + interval;
  					if (nminute > 59) {
  						return false;
  					}
  				}
  				minute = builder.minute = nminute;
  				return true;
  			}
  
  			@Override
  			public String toString() {
  				return "serialMinuteGenerator:" + interval;
  			}
  		};
  	}
docs: Constructs a generator that generates minutes in the given date's hour
  successively counting from the first minute passed in.
  @param interval number of minutes to advance each step
  @param dtStart the date
  @return the minute in dtStart the first time called and interval + last
  return value on subsequent calls