code: public static MonthDay randomMonthDay(
        MonthDay startInclusive, MonthDay endExclusive, boolean includeLeapDay) {
      checkArgument(startInclusive != null, "Start must be non-null");
      checkArgument(endExclusive != null, "End must be non-null");
      checkArgument(
          includeLeapDay || !startInclusive.equals(LEAP_DAY) || !endExclusive.equals(LEAP_DAY),
          "Start and End can't both be leap day");
      int year = includeLeapDay ? LEAP_YEAR : LEAP_YEAR - 1;
      LocalDate start = startInclusive.atYear(year);
      LocalDate end = endExclusive.atYear(year);
      LocalDate localDate = randomLocalDate(start, end);
      return MonthDay.of(localDate.getMonth(), localDate.getDayOfMonth());
    }
docs: Returns a random {@link MonthDay} within the specified range.
  
  @param startInclusive the earliest {@link MonthDay} that can be returned
  @param endExclusive the upper bound (not included)
  @param includeLeapDay whether or not to include leap day
  @return the random {@link MonthDay}
  @throws IllegalArgumentException if startInclusive or endExclusive are null, if endExclusive is
  earlier than startInclusive, or if startInclusive or endExclusive are leap day and
  includeLeapDay is false