code: private static void updateBaseCalendarNames(List<Pair<ProjectCalendar, BigInteger>> baseCalendars, HashMap<BigInteger, ProjectCalendar> map)
     {
        for (Pair<ProjectCalendar, BigInteger> pair : baseCalendars)
        {
           ProjectCalendar cal = pair.getFirst();
           BigInteger baseCalendarID = pair.getSecond();
           ProjectCalendar baseCal = map.get(baseCalendarID);
           if (baseCal != null)
           {
              cal.setParent(baseCal);
           }
        }
  
     }
docs: The way calendars are stored in an MSPDI file means that there
  can be forward references between the base calendar unique ID for a
  derived calendar, and the base calendar itself. To get around this,
  we initially populate the base calendar name attribute with the
  base calendar unique ID, and now in this method we can convert those
  ID values into the correct names.
  
  @param baseCalendars list of calendars and base calendar IDs
  @param map map of calendar ID values and calendar objects