class TimelineUtilities {

    public static Map<Duration, List<DateDurationKey>> getTableOfLegalDates(TimeSpan span, Duration duration)
    {
        Map<Duration, List<DateDurationKey>> toReturn = new HashMap<>();

        if (duration instanceof Months)
        {
            toReturn.putAll(createMonthDateEntries(span, duration));
        }
        else if (duration instanceof Weeks)
        {
            createWeekDateEntries(span, toReturn, duration);
        }
        else if (duration instanceof Days)
        {
            createDayDateEntries(span, toReturn);
        }

        removeDayDuplicates(toReturn);
        return toReturn;
    }

    private  TimelineUtilities();

}