code: @Override
      public int getLeastMaximum(int field) {
          switch (field) {
          case MONTH:
          case DAY_OF_MONTH:
          case DAY_OF_YEAR:
          case WEEK_OF_YEAR:
          case WEEK_OF_MONTH:
          case DAY_OF_WEEK_IN_MONTH:
          case YEAR:
              {
                  GregorianCalendar gc = (GregorianCalendar) clone();
                  gc.setLenient(true);
                  gc.setTimeInMillis(gregorianCutover);
                  int v1 = gc.getActualMaximum(field);
                  gc.setTimeInMillis(gregorianCutover-1);
                  int v2 = gc.getActualMaximum(field);
                  return Math.min(LEAST_MAX_VALUES[field], Math.min(v1, v2));
              }
          }
          return LEAST_MAX_VALUES[field];
      }
docs: Returns the lowest maximum value for the given calendar field
  of this <code>GregorianCalendar</code> instance. The lowest
  maximum value is defined as the smallest value returned by
  {@link #getActualMaximum(int)} for any possible time value,
  taking into consideration the current values of the
  {@link Calendar#getFirstDayOfWeek() getFirstDayOfWeek},
  {@link Calendar#getMinimalDaysInFirstWeek() getMinimalDaysInFirstWeek},
  {@link #getGregorianChange() getGregorianChange} and
  {@link Calendar#getTimeZone() getTimeZone} methods.
  
  @param field the calendar field
  @return the lowest maximum value for the given calendar field.
  @see #getMinimum(int)
  @see #getMaximum(int)
  @see #getGreatestMinimum(int)
  @see #getActualMinimum(int)
  @see #getActualMaximum(int)