code: MethodJmsListenerEndpoint trace(MethodJmsListenerEndpoint source) {
  		// Skip out rather than incompletely copying the source
  		if (this.messageHandlerMethodFactoryField == null
  				|| this.embeddedValueResolverField == null) {
  			return source;
  		}
  		// We want the stock implementation, except we want to wrap the message listener
  		// in a new span
  		MethodJmsListenerEndpoint dest = new MethodJmsListenerEndpoint() {
  			@Override
  			protected MessagingMessageListenerAdapter createMessageListenerInstance() {
  				return new TracingMessagingMessageListenerAdapter(jmsTracing(),
  						currentTraceContext());
  			}
  		};
  		// set state from AbstractJmsListenerEndpoint
  		dest.setId(source.getId());
  		dest.setDestination(source.getDestination());
  		dest.setSubscription(source.getSubscription());
  		dest.setSelector(source.getSelector());
  		dest.setConcurrency(source.getConcurrency());
  		// set state from MethodJmsListenerEndpoint
  		dest.setBean(source.getBean());
  		dest.setMethod(source.getMethod());
  		dest.setMostSpecificMethod(source.getMostSpecificMethod());
  		try {
  			dest.setMessageHandlerMethodFactory(
  					get(source, this.messageHandlerMethodFactoryField));
  			dest.setEmbeddedValueResolver(get(source, this.embeddedValueResolverField));
  		}
  		catch (IllegalAccessException e) {
  			return source; // skip out rather than incompletely copying the source
  		}
  		return dest;
  	}
docs: It would be better to trace by wrapping, but
  {@link MethodJmsListenerEndpoint#createMessageListenerInstance()}, is protected so
  we can't call it from outside code. In other words, a forwarding pattern can't be
  used. Instead, we copy state from the input.
  <p>
  NOTE: As {@linkplain MethodJmsListenerEndpoint} is neither final, nor effectively
  final. For this reason we can't ensure copying will get all state. For example, a
  subtype could hold state we aren't aware of, or change behavior. We can consider
  checking that input is not a subtype, and most conservatively leaving unknown
  subtypes untraced.
  @param source jms endpoint
  @return wrapped endpoint