if (nLocalDates==0) {
oRetVal = this;
} else if (nThisDates==0) {
oRetVal = oLocalCalendar;
} else {
TreeSet oUnionDates = new TreeSet();
for (int d=0; d<nThisDates; d++) {
oUnionDates.add(String.valueOf(aDates[d]));
} // next
for (int d=0; d<nLocalDates; d++) {
String sDate = String.valueOf(oLocalCalendar.aDates[d]);
if (!oUnionDates.contains(sDate))
oUnionDates.add(sDate);
} // next
int nUnionDates = oUnionDates.size();
oRetVal = new WorkingCalendar(nUnionDates,
getStringNull(DB.nm_calendar,"")+"+"+oLocalCalendar.getStringNull(DB.nm_calendar,""),
toDate(oUnionDates.first().toString()),
toDate(oUnionDates.last().toString()));
Iterator oIter = oUnionDates.iterator();
int iCurrentDateIndex = 0;
while (oIter.hasNext()) {
int iDate = Integer.parseInt((String) oIter.next());
int iLocalDateIndex = Arrays.binarySearch(oLocalCalendar.aDates, iDate);
if (iLocalDateIndex>=0) {