code: public void setGregorianChange(Date date) {
          gregorianCutover = date.getTime();
  
          // If the cutover has an extreme value, then create a pure
          // Gregorian or pure Julian calendar by giving the cutover year and
          // JD extreme values.
          if (gregorianCutover <= MIN_MILLIS) {
              gregorianCutoverYear = cutoverJulianDay = Integer.MIN_VALUE;
          } else if (gregorianCutover >= MAX_MILLIS) {
              gregorianCutoverYear = cutoverJulianDay = Integer.MAX_VALUE;
          } else {
              // Precompute two internal variables which we use to do the actual
              // cutover computations.  These are the Julian day of the cutover
              // and the cutover year.
              cutoverJulianDay = (int) floorDivide(gregorianCutover, ONE_DAY);
              
              // Convert cutover millis to extended year
              GregorianCalendar cal = new GregorianCalendar(getTimeZone());
              cal.setTime(date);
              gregorianCutoverYear = cal.get(EXTENDED_YEAR);
          }
      }
docs: Sets the GregorianCalendar change date. This is the point when the switch
  from Julian dates to Gregorian dates occurred. Default is October 15,
  1582. Previous to this, dates will be in the Julian calendar.
  <p>
  To obtain a pure Julian calendar, set the change date to
  <code>Date(Long.MAX_VALUE)</code>.  To obtain a pure Gregorian calendar,
  set the change date to <code>Date(Long.MIN_VALUE)</code>.
  
  @param date the given Gregorian cutover date.