code: static JulianDate create(int prolepticYear, int month, int dayOfMonth) {
          JulianChronology.YEAR_RANGE.checkValidValue(prolepticYear, YEAR);
          MONTH_OF_YEAR.checkValidValue(month);
          DAY_OF_MONTH.checkValidValue(dayOfMonth);
          if (dayOfMonth > 28) {
              int dom = 31;
              switch (month) {
                  case 2:
                      dom = (JulianChronology.INSTANCE.isLeapYear(prolepticYear) ? 29 : 28);
                      break;
                  case 4:
                  case 6:
                  case 9:
                  case 11:
                      dom = 30;
                      break;
                  default:
                      break;
              }
              if (dayOfMonth > dom) {
                  if (dayOfMonth == 29) {
                      throw new DateTimeException("Invalid date 'February 29' as '" + prolepticYear + "' is not a leap year");
                  } else {
                      throw new DateTimeException("Invalid date '" + Month.of(month).name() + " " + dayOfMonth + "'");
                  }
              }
          }
          return new JulianDate(prolepticYear, month, dayOfMonth);
      }
docs: Creates a {@code JulianDate} validating the input.
  
  @param prolepticYear  the Julian proleptic-year
  @param month  the Julian month-of-year, from 1 to 12
  @param dayOfMonth  the Julian day-of-month, from 1 to 31
  @return the date in Julian calendar system, not null
  @throws DateTimeException if the value of any field is out of range,
  or if the day-of-year is invalid for the month-year