code: public final MultiImplementationSender<M> addImplementation(Condition<Message> condition, MessageSender implementation) {
  		implementations.add(new Implementation(condition, implementation));
  		return this;
  	}
docs: Register a new possible implementation with the associated condition. The
  implementation is added at the end so any other possible implementation
  will be used before this one if the associated condition allow it.
  
  @param condition
  the condition that indicates if the implementation can be used
  at runtime
  @param implementation
  the implementation to register
  @return this instance for fluent chaining