docs: static Generator byYearDayGenerator(int[] yearDays, final DateValue dtStart) {
          final int[] uYearDays = Util.uniquify(yearDays);
  
          return new Generator() {
              int year = dtStart.year();
              int month = dtStart.month();
              int[] dates;
              int i = 0;
  
              {
                  checkMonth();
              }
  
              void checkMonth() {
                  // now, calculate the first week of the month
                  int doyOfMonth1 = TimeUtils.dayOfYear(year, month, 1);
                  int nDays = TimeUtils.monthLength(year, month);
                  int nYearDays = TimeUtils.yearLength(year);
                  IntSet udates = new IntSet();
                  for (int j = 0; j < uYearDays.length; j++) {
                      int yearDay = uYearDays[j];
                      if (yearDay < 0) {
                          yearDay += nYearDays + 1;
                      }
                      int date = yearDay - doyOfMonth1;
                      if (date >= 1 && date <= nDays) {
                          udates.add(date);
                      }
                  }
                  dates = udates.toIntArray();
              }
  
              @Override
              boolean generate(DTBuilder builder) {
                  if (year != builder.year || month != builder.month) {
                      year = builder.year;
                      month = builder.month;
  
                      checkMonth();
  
                      i = 0;
                  }
                  if (i >= dates.length) {
                      return false;
                  }
                  builder.day = dates[i++];
                  return true;
              }
  
              @Override
              public String toString() {
                  return "byYearDayGenerator";
              }
          };
      }