Process the given MessageGroup. Implementations are free to return as few or as many messages based on the
invocation as needed. For example an aggregating processor will return only a single message representing the
group, while a resequencing processor will return all messages whose preceding sequence has been satisfied.
If a multiple messages are returned the return value must be a Collection<Message>.