code: public static MonthDay randomMonthDayBefore(MonthDay before, boolean includeLeapDay) {
      checkArgument(before != null, "Before must be non-null");
      checkArgument(before.isAfter(MonthDay.of(JANUARY, 1)), "Before must be after January 1st");
      int year = includeLeapDay ? LEAP_YEAR : LEAP_YEAR - 1;
      LocalDate startOfYear = Year.of(year).atDay(1);
      LocalDate end = before.atYear(year);
      LocalDate localDate = randomLocalDate(startOfYear, end);
      return MonthDay.of(localDate.getMonth(), localDate.getDayOfMonth());
    }
docs: Returns a random {@link MonthDay} that is before the given {@link MonthDay}.
  
  @param before the value that returned {@link MonthDay} must be before
  @param includeLeapDay whether or not to include leap day
  @return the random {@link MonthDay}
  @throws IllegalArgumentException if before is null or if before is first day of year (January
  1st)