class TradingSessionImpl implements TradingSession {

    @Override
	public boolean contains(DateTime date) {
        int otherDay = date.getDayOfWeek();
        LocalTime lt = date.toLocalTime();
        
        boolean startBounded = (lt.isEqual(start) || lt.isAfter(start));
        boolean endBounded = (lt.isEqual(end) || lt.isBefore(end));
        return dayIsWithinSessionDay(otherDay) && 
            ((startBounded && endBounded) || 
             (day != endDay && 
                ((otherDay == day && startBounded) || 
                 (otherDay == endDay && endBounded) ||
                 dayIsBetweenStartEndDays(otherDay))
            ));
    }

    public  TradingSessionImpl(int day, int endDay, LocalTime start, LocalTime end);

}