me.isPushDelivery() == false) {
me.isPushDelivery() == false && me.getRole() == Role.CONSUMER) {
    protected void doSend(MessageExchangeImpl me, boolean sync) throws MessagingException {        MessageExchangeImpl mirror = me.getMirror();        boolean finished = me.getStatus() != ExchangeStatus.ACTIVE;        try {            if (log.isTraceEnabled()) {                log.trace("Sent: " + me);            }            // If the message has timed out            if (me.getPacket().isAborted()) {                throw new ExchangeTimeoutException(me);            }            // Auto enlist exchange in transaction            autoEnlistInTx(me);            // Update persistence info            autoSetPersistent(me);            // Throttle if needed            throttle();            // Update stats            incrementOutboundStats();            // Store the consumer component            if (me.getRole() == Role.CONSUMER) {                me.setSourceId(component.getComponentNameSpace());            }            // Call the listeners before the ownership changes            container.callListeners(me);            me.handleSend(sync);            mirror.setTxState(MessageExchangeImpl.TX_STATE_NONE);            // If this is the DONE or ERROR status from a synchronous transactional exchange,            // it should not be part of the transaction, so remove the tx context            if (finished &&                 me.getTxLock() == null &&                me.getTxState() == MessageExchangeImpl.TX_STATE_CONVEYED &&                me.isPushDelivery() == false) {                me.setTransactionContext(null);            }            container.sendExchange(mirror);        } catch (MessagingException e) {            if (log.isDebugEnabled()) {                log.debug("Exception processing: " + me.getExchangeId() + " in " + this);            }            throw e;        } finally {            // If there is a tx lock, we need to suspend and notify            if (me.getTxLock() != null) {                if (mirror.getTxState() == MessageExchangeImpl.TX_STATE_ENLISTED) {                    suspendTx(mirror);                }                synchronized (me.getTxLock()) {                    notifyExchange(me, me.getTxLock(), "doSendWithTxLock");                }            }        }    }