code: @Override
  	public MessagingService build() {
  		LOG.info("Using service that calls all registered senders");
  		List<ConditionalSender> senders = buildSenders();
  		LOG.debug("Registered senders: {}", senders);
  		MessagingService service = new EverySupportingMessagingService(senders);
  		if (wrapUncaught) {
  			service = new WrapExceptionMessagingService(service);
  		}
  		return service;
  	}
docs: Builds the messaging service. The messaging service relies on the
  generated senders. Each sender is able to manage one or multiple
  messages. The default implementation of the messaging service is to ask
  each sender if it is able to handle the message and if it the case, then
  use this sender to really send the message. This implementation doesn't
  stop when the message is handled by a sender to possibly let another send
  the message through another channel.
  
  <p>
  If a {@link RuntimeException} is thrown while trying to send a message,
  the service will catch it and wrap it into a {@link MessagingException}
  in order to indicate that the exception was caused while trying to send a
  message.
  </p>
  
  @return the messaging service instance
  @throws BuildException
  when service couldn't be instantiated and configured