docs: static Generator byMinuteGenerator(
              int[] minutes, final DateValue dtStart) {
          minutes = Util.uniquify(minutes);
          if (minutes.length == 0) {
              minutes = new int[]{
                      dtStart instanceof TimeValue ? ((TimeValue) dtStart).minute() : 0
              };
          }
          final int[] uminutes = minutes;
  
          if (uminutes.length == 1) {
              final int minute = uminutes[0];
  
              return new SingleValueGenerator() {
                  int year;
                  int month;
                  int day;
                  int hour;
  
                  @Override
                  boolean generate(DTBuilder builder) {
                      if ((year != builder.year) || (month != builder.month)
                              || (day != builder.day) || (hour != builder.hour)) {
                          year = builder.year;
                          month = builder.month;
                          day = builder.day;
                          hour = builder.hour;
                          builder.minute = minute;
                          return true;
                      }
                      return false;
                  }
  
                  @Override
                  int getValue() {
                      return minute;
                  }
  
                  @Override
                  public String toString() {
                      return "byMinuteGenerator:" + minute;
                  }
              };
          }
  
          return new Generator() {
              int i;
              int year = dtStart.year();
              int month = dtStart.month();
              int day = dtStart.day();
              int hour = dtStart instanceof TimeValue
                      ? ((TimeValue) dtStart).hour() : 0;
  
              {
                  int minute = dtStart instanceof TimeValue
                          ? ((TimeValue) dtStart).minute() : 0;
                  while (i < uminutes.length && uminutes[i] < minute) {
                      ++i;
                  }
              }
  
              @Override
              boolean generate(DTBuilder builder) {
                  if ((year != builder.year) || (month != builder.month)
                          || (day != builder.day) || (hour != builder.hour)) {
                      i = 0;
                      year = builder.year;
                      month = builder.month;
                      day = builder.day;
                      hour = builder.hour;
                  }
                  if (i >= uminutes.length) {
                      return false;
                  }
                  builder.minute = uminutes[i++];
                  return true;
              }
  
              @Override
              public String toString() {
                  return "byMinuteGenerator:" + Arrays.toString(uminutes);
              }
          };
      }