}
state = State.Finished;
// if the message has not been marked delivered by the dispatcher
if (!delivered) {
if (!isFilteredEvent() && !isDeadEvent()) {
runtime.getProvider().publish(new FilteredMessage(message));
} else if (!isDeadEvent()) {
runtime.getProvider().publish(new DeadMessage(message));
}
}