class CorrespondingHolidayManager {

	public List<Holiday> calculateCorrespondingHolidays(Calendar calMin, Calendar calMax, List<Holiday> allHolidays,
			Date hiringDate) {
		List<Holiday> correspondingHolidays = new ArrayList<Holiday>();

		if (calMax.get(Calendar.YEAR) - calMin.get(Calendar.YEAR) > 0) {
			for (int year = calMin.get(Calendar.YEAR); year <= calMax.get(Calendar.YEAR); year++) {
				correspondingHolidays = Stream
						.concat(getCorrespondingHolidays(allHolidays, parseDate(hiringDate), year).stream(),
								correspondingHolidays.stream())
						.collect(Collectors.toList());
			}
		} else {
			correspondingHolidays = getCorrespondingHolidays(allHolidays, parseDate(hiringDate),
					calMax.get(Calendar.YEAR));
		}
		return correspondingHolidays;
	}

	protected  CorrespondingHolidayManager();

}