if (exchange.isSynchronous() || executor == null) {
exchange.put(MessageObserver.class, this);
} else {
exchange.put(Executor.class, executor);
exchange.put(MessageObserver.class, new MessageObserver() {
public void onMessage(final Message message) {
if (!message.getExchange()
.containsKey(Executor.class.getName() + ".USING_SPECIFIED")) {
executor.execute(new Runnable() {