There is a bug in the way the Destination class determines whether or not the specified timestamp falls on a valid day.


public boolean isSuitableForEvent(TimeStamp timeStamp, EventState toState) {
    // Only check date fields if the timestamp is not a sequence number.
    if (!timeStamp.isSequenceNumber()) {
        // Check if the timestamp day of week is in the valid days of week list.
        if (!validDays.contains(timeStamp.getDateTime().getDate().getDayOfWeek().getId()))
            return false;

        // Check if the timestamp is between the from and to times.
        if (timeStamp.getDateTime().getTime().before(fromTime) || timeStamp.getDateTime().getTime().after(toTime))
            return false;

    // Check if the destination is interested in this new event state.
    return transitions.contains(toState);


public boolean contains(int day) {
    return getValue()[day];

timeStamp.getDateTime().getDate().getDayOfWeek().getId() returns a number from 1-7
However, the DaysOfWeek class stores the days in a 0 indexed array 0-6, which means the wrong index is checked every time this function is called.