class LoanDisbursementCoupledToCustomerMeetingScheduleStrategyImpl implements LoanDisbursementStrategy {

    @Override
    public LocalDate findClosestMatchingDateFromAndInclusiveOf(LocalDate fromAndInclusiveOf) {
        
        LocalDate closestMatch = nextValidCustomerMeetingDate;
        if (closestMatch.isBefore(fromAndInclusiveOf)) {
            closestMatch = new LocalDate(scheduledEvent.nextEventDateAfter(closestMatch.toDateMidnight().toDateTime()));
            while (closestMatch.isBefore(fromAndInclusiveOf)) {
                closestMatch = new LocalDate(scheduledEvent.nextEventDateAfter(closestMatch.toDateMidnight().toDateTime()));
            }
        }
        return closestMatch;
    }

    public  LoanDisbursementCoupledToCustomerMeetingScheduleStrategyImpl(ScheduledEvent scheduledEvent, LocalDate nextValidCustomerMeetingDate);

}