//This function exists as a hack to prevent us from loading all of the non-gregorian
        //calendars unless they're required.
        internal Calendar GetCalendarInstanceRare(int calType)
        {
            BCLDebug.Assert(calType != Calendar.CAL_GREGORIAN, "calType!=Calendar.CAL_GREGORIAN");

            switch (calType)
            {
            case Calendar.CAL_GREGORIAN_US:                   // Gregorian (U.S.) calendar
            case Calendar.CAL_GREGORIAN_ME_FRENCH:            // Gregorian Middle East French calendar
            case Calendar.CAL_GREGORIAN_ARABIC:               // Gregorian Arabic calendar
            case Calendar.CAL_GREGORIAN_XLIT_ENGLISH:         // Gregorian Transliterated English calendar
            case Calendar.CAL_GREGORIAN_XLIT_FRENCH:          // Gregorian Transliterated French calendar
                return(new GregorianCalendar((GregorianCalendarTypes)calType));

            case Calendar.CAL_TAIWAN:                         // Taiwan Era calendar
                return(TaiwanCalendar.GetDefaultInstance());

            case Calendar.CAL_JAPAN:                          // Japanese Emperor Era calendar
                return(JapaneseCalendar.GetDefaultInstance());

            case Calendar.CAL_KOREA:                          // Korean Tangun Era calendar
                return(KoreanCalendar.GetDefaultInstance());

            case Calendar.CAL_HIJRI:                          // Hijri (Arabic Lunar) calendar
                return(HijriCalendar.GetDefaultInstance());

            case Calendar.CAL_THAI:                           // Thai calendar
                return(ThaiBuddhistCalendar.GetDefaultInstance());

            case Calendar.CAL_HEBREW:                         // Hebrew (Lunar) calendar
                return(HebrewCalendar.GetDefaultInstance());
            }
            return(GregorianCalendar.GetDefaultInstance());
        }