public CalendarBodyAccessibleObject(CalendarAccessibleObject calendarAccessibleObject,
                                     MonthCalendarAccessibleObject monthCalendarAccessibleObject, int calendarIndex)
     : base(monthCalendarAccessibleObject)
 {
     _calendarAccessibleObject      = calendarAccessibleObject;
     _monthCalendarAccessibleObject = monthCalendarAccessibleObject;
     _calendarIndex = calendarIndex;
     // Name and RuntimeId don't change if the calendar date range is not changed,
     // otherwise the calendar accessibility tree will be rebuilt.
     // So save these values one time to avoid sending messages to Windows every time
     // or recreating new structures and making extra calculations.
     _initName      = _monthCalendarAccessibleObject.GetCalendarPartText(MCGIP.CALENDARHEADER, _calendarIndex);
     _initRuntimeId = new int[]
     {
         _calendarAccessibleObject.RuntimeId[0],
         _calendarAccessibleObject.RuntimeId[1],
         _calendarAccessibleObject.RuntimeId[2],
         GetChildId()
     };
 }