Buggy code:
public abstract class AbstractAdaptableMessageListener implements MessageListener , SessionAwareMessageListener < Message > { protected final Log logger = LogFactory . getLog ( getClass ( ) ) ; private Object defaultResponseDestination ; private DestinationResolver destinationResolver = new DynamicDestinationResolver ( ) ; private MessageConverter messageConverter = new SimpleMessageConverter ( ) ; private final AbstractAdaptableMessageListener . MessagingMessageConverterAdapter messagingMessageConverter = new AbstractAdaptableMessageListener . MessagingMessageConverterAdapter ( ) ; public void setDefaultResponseDestination ( Destination destination ) { } public void setDefaultResponseQueueName ( String destinationName ) { } public void setDefaultResponseTopicName ( String destinationName ) { } public void setDestinationResolver ( DestinationResolver destinationResolver ) { } protected DestinationResolver getDestinationResolver ( ) { } public void setMessageConverter ( MessageConverter messageConverter ) { } protected MessageConverter getMessageConverter ( ) { } public void setHeaderMapper ( JmsHeaderMapper headerMapper ) { } protected final MessagingMessageConverter getMessagingMessageConverter ( ) { } @ Override public void onMessage ( Message message ) { } protected void handleListenerException ( Throwable ex ) { } protected Object extractMessage ( Message message ) { } protected void handleResult ( Object result , Message request , Session session ) { } protected Message buildMessage ( Session session , Object result ) throws JMSException { MessageConverter converter = getMessageConverter ( ) ; if ( converter != null ) { if ( result instanceof org . springframework . messaging . Message ) { <START_BUG> return messagingMessageConverter . toMessage ( result , session ) ; <END_BUG> } else { return converter . toMessage ( result , session ) ; } } else { if ( ! ( result instanceof Message ) ) { throw new MessageConversionException ( ( ( "No<seq2seq4repair_space>MessageConverter<seq2seq4repair_space>specified<seq2seq4repair_space>-<seq2seq4repair_space>cannot<seq2seq4repair_space>handle<seq2seq4repair_space>message<seq2seq4repair_space>[" + result ) + "]" ) ) ; } return ( ( Message ) ( result ) ) ; } } protected void postProcessResponse ( Message request , Message response ) throws JMSException { } protected Destination getResponseDestination ( Message request , Message response , Session session ) throws JMSException { } protected Destination resolveDefaultResponseDestination ( Session session ) throws JMSException { } protected void sendResponse ( Session session , Destination destination , Message response ) throws JMSException { } protected void postProcessProducer ( MessageProducer producer , Message response ) throws JMSException { } private class MessagingMessageConverterAdapter extends MessagingMessageConverter { @ Override protected Object extractPayload ( Message message ) throws JMSException { } } private static class DestinationNameHolder { public final String name ; public final boolean isTopic ; public DestinationNameHolder ( String name , boolean isTopic ) { } } }

Fix:
return this . messagingMessageConverter . toMessage ( result , session ) ;