public override int Compare(YearMonthDay lhs, YearMonthDay rhs)
        {
            // The civil month numbering system allows a naive comparison.
            if (monthNumbering == HebrewMonthNumbering.Civil)
            {
                return(lhs.CompareTo(rhs));
            }
            // Otherwise, try one component at a time. (We could benchmark this
            // against creating a new pair of YearMonthDay values in the civil month numbering,
            // and comparing them...)
            int yearComparison = lhs.Year.CompareTo(rhs.Year);

            if (yearComparison != 0)
            {
                return(yearComparison);
            }
            int lhsCivilMonth   = CalendarToCivilMonth(lhs.Year, lhs.Month);
            int rhsCivilMonth   = CalendarToCivilMonth(rhs.Year, rhs.Month);
            int monthComparison = lhsCivilMonth.CompareTo(rhsCivilMonth);

            if (monthComparison != 0)
            {
                return(monthComparison);
            }
            return(lhs.Day.CompareTo(rhs.Day));
        }