code: public void addSenders(MultiImplementationSender<?> mainSender) {
  		ImplementationConditionProvider implementationSelection = new ImplementationConditionProvider(environmentBuilder.build());
  		for (MessageSender customSender : customSenders) {
  			LOG.debug("Custom implementation {} registered into {}", customSender, mainSender);
  			mainSender.addImplementation(implementationSelection.provide(customSender), customSender);
  		}
  		for (Builder<? extends MessageSender> builder : senderBuilders) {
  			MessageSender sender = builder.build();
  			if (sender != null) {
  				LOG.debug("Implementation {} registered into {}", sender, mainSender);
  				mainSender.addImplementation(implementationSelection.provide(builder), sender);
  			}
  		}
  	}
docs: Add registered custom senders or built senders base on registered sender
  builders to the provided {@link MultiImplementationSender}.
  
  <p>
  A {@link MultiImplementationSender} is able to evaluate a
  {@link Condition} when a message is being sent to determine which
  implementation can and should handle the message and really send it.
  </p>
  
  <p>
  If a custom implementation was registered and is annotated by one or
  several of:
  <ul>
  <li>{@link RequiredClass}</li>
  <li>{@link RequiredProperty}</li>
  <li>{@link RequiredClasses}</li>
  <li>{@link RequiredProperties}</li>
  </ul>
  Then if condition evaluation returns true, the custom implementation will
  be used. If you provide several annotations, the custom implementation
  will be used only if all conditions are met (and operator).
  
  <p>
  If a custom implementation was registered and implements
  {@link ActivableAtRuntime}, and the provided condition evaluation returns
  true, then the custom implementation will be used.
  
  See {@link MessageConditions} to build your condition.
  </p>
  
  <p>
  If neither annotations nor implementation of {@link ActivableAtRuntime}
  is used, then the custom implementation will be always used. All other
  implementations (even standard ones) will never be used.
  </p>
  
  @param mainSender
  the sender that manages several implementations