docs: static Generator serialMonthGenerator(
              final int interval, final DateValue dtStart) {
          return new Generator() {
              int year = dtStart.year();
              int month = dtStart.month() - interval;
  
              {
                  while (month < 1) {
                      month += 12;
                      --year;
                  }
              }
  
              @Override
              boolean generate(DTBuilder builder) {
                  int nmonth;
                  if (year != builder.year) {
                      int monthsBetween = (builder.year - year) * 12 - (month - 1);
                      nmonth = ((interval - (monthsBetween % interval)) % interval) + 1;
                      if (nmonth > 12) {
                          // don't update year so that the difference calculation above is
                          // correct when this function is reentered with a different year
                          return false;
                      }
                      year = builder.year;
                  } else {
                      nmonth = month + interval;
                      if (nmonth > 12) {
                          return false;
                      }
                  }
                  month = builder.month = nmonth;
                  return true;
              }
  
              @Override
              public String toString() {
                  return "serialMonthGenerator:" + interval;
              }
          };
      }