code: @Override protected void processCalendarExceptions(byte[] data, ProjectCalendar cal)
     {
        //
        // Handle any exceptions
        //
        int exceptionCount = MPPUtility.getShort(data, 0);
  
        if (exceptionCount != 0)
        {
           int index;
           int offset;
           ProjectCalendarException exception;
           long duration;
           int periodCount;
           Date start;
  
           for (index = 0; index < exceptionCount; index++)
           {
              offset = 4 + (60 * 7) + (index * 64);
  
              Date fromDate = MPPUtility.getDate(data, offset);
              Date toDate = MPPUtility.getDate(data, offset + 2);
              exception = cal.addCalendarException(fromDate, toDate);
  
              periodCount = MPPUtility.getShort(data, offset + 6);
              if (periodCount != 0)
              {
                 for (int exceptionPeriodIndex = 0; exceptionPeriodIndex < periodCount; exceptionPeriodIndex++)
                 {
                    start = MPPUtility.getTime(data, offset + 12 + (exceptionPeriodIndex * 2));
                    duration = MPPUtility.getDuration(data, offset + 24 + (exceptionPeriodIndex * 4));
                    exception.addRange(new DateRange(start, new Date(start.getTime() + duration)));
                 }
              }
           }
        }
     }
docs: This method extracts any exceptions associated with a calendar.
  
  @param data calendar data block
  @param cal calendar instance