//-------------------------------------------------------------------------
        /// <summary>
        /// Converts an FpML 'BusinessCentersOrReference.model' to a {@code HolidayCalendar}.
        /// </summary>
        /// <param name="baseEl">  the FpML business centers or reference element to parse </param>
        /// <returns> the holiday calendar </returns>
        /// <exception cref="RuntimeException"> if unable to parse </exception>
        public HolidayCalendarId parseBusinessCenters(XmlElement baseEl)
        {
            // FpML content: ('businessCentersReference' | 'businessCenters')
            // FpML 'businessCenters' content: ('businessCenter+')
            // Each 'businessCenter' is a location treated as a holiday calendar
            Optional <XmlElement> optionalBusinessCentersEl = baseEl.findChild("businessCenters");
            XmlElement            businessCentersEl         = optionalBusinessCentersEl.orElseGet(() => lookupReference(baseEl.getChild("businessCentersReference")));
            HolidayCalendarId     calendar = HolidayCalendarIds.NO_HOLIDAYS;

            foreach (XmlElement businessCenterEl in businessCentersEl.getChildren("businessCenter"))
            {
                calendar = calendar.combinedWith(parseBusinessCenter(businessCenterEl));
            }
            return(calendar);
        }
        //-------------------------------------------------------------------------
//JAVA TO C# CONVERTER TODO TASK: Most Java annotations will not have direct .NET equivalent attributes:
//ORIGINAL LINE: @ImmutablePreBuild private static void preBuild(Builder builder)
        private static void preBuild(Builder builder)
        {
            if (builder.fixingDateOffset_Renamed == null && builder.fixingCalendar_Renamed != null && builder.maturityDateOffset_Renamed != null)
            {
                int days = builder.maturityDateOffset_Renamed.Days;
                HolidayCalendarId maturityCal = builder.maturityDateOffset_Renamed.Calendar;
                if (maturityCal.combinedWith(builder.fixingCalendar_Renamed).Equals(maturityCal))
                {
                    builder.fixingDateOffset_Renamed = DaysAdjustment.ofBusinessDays(-days, maturityCal);
                }
                else
                {
                    builder.fixingDateOffset_Renamed = DaysAdjustment.ofBusinessDays(-days, maturityCal, BusinessDayAdjustment.of(BusinessDayConventions.PRECEDING, builder.fixingCalendar_Renamed));
                }
            }
        }