Buggy code:
abstract class AbstractListenerContainerParser implements BeanDefinitionParser { protected static final String LISTENER_ELEMENT = "listener" ; protected static final String ID_ATTRIBUTE = "id" ; protected static final String DESTINATION_ATTRIBUTE = "destination" ; protected static final String SUBSCRIPTION_ATTRIBUTE = "subscription" ; protected static final String SELECTOR_ATTRIBUTE = "selector" ; protected static final String REF_ATTRIBUTE = "ref" ; protected static final String METHOD_ATTRIBUTE = "method" ; protected static final String DESTINATION_RESOLVER_ATTRIBUTE = "destination-resolver" ; protected static final String MESSAGE_CONVERTER_ATTRIBUTE = "message-converter" ; protected static final String RESPONSE_DESTINATION_ATTRIBUTE = "response-destination" ; protected static final String DESTINATION_TYPE_ATTRIBUTE = "destination-type" ; protected static final String DESTINATION_TYPE_QUEUE = "queue" ; protected static final String DESTINATION_TYPE_TOPIC = "topic" ; protected static final String DESTINATION_TYPE_DURABLE_TOPIC = "durableTopic" ; protected static final String CLIENT_ID_ATTRIBUTE = "client-id" ; protected static final String ACKNOWLEDGE_ATTRIBUTE = "acknowledge" ; protected static final String ACKNOWLEDGE_AUTO = "auto" ; protected static final String ACKNOWLEDGE_CLIENT = "client" ; protected static final String ACKNOWLEDGE_DUPS_OK = "dups-ok" ; protected static final String ACKNOWLEDGE_TRANSACTED = "transacted" ; protected static final String TRANSACTION_MANAGER_ATTRIBUTE = "transaction-manager" ; protected static final String CONCURRENCY_ATTRIBUTE = "concurrency" ; protected static final String PREFETCH_ATTRIBUTE = "prefetch" ; public BeanDefinition parse ( Element element , ParserContext parserContext ) { CompositeComponentDefinition compositeDef = new CompositeComponentDefinition ( element . getTagName ( ) , parserContext . extractSource ( element ) ) ; parserContext . pushContainingComponent ( compositeDef ) ; NodeList childNodes = element . getChildNodes ( ) ; for ( int i = 0 ; i < ( childNodes . getLength ( ) ) ; i ++ ) { Node child = childNodes . item ( i ) ; if ( ( child . getNodeType ( ) ) == ( Node . ELEMENT_NODE ) ) { <START_BUG> String localName = child . getLocalName ( ) ; <END_BUG> if ( AbstractListenerContainerParser . LISTENER_ELEMENT . equals ( localName ) ) { parseListener ( ( ( Element ) ( child ) ) , element , parserContext ) ; } } } parserContext . popAndRegisterContainingComponent ( ) ; return null ; } private void parseListener ( Element listenerEle , Element containerEle , ParserContext parserContext ) { } protected abstract BeanDefinition parseContainer ( Element listenerEle , Element containerEle , ParserContext parserContext ) { } protected boolean indicatesPubSub ( BeanDefinition containerDef ) { } protected boolean indicatesJms102 ( BeanDefinition containerDef ) { } protected void parseListenerConfiguration ( Element ele , ParserContext parserContext , BeanDefinition configDef ) { } protected void parseContainerConfiguration ( Element ele , ParserContext parserContext , BeanDefinition configDef ) { } protected Integer parseAcknowledgeMode ( Element ele , ParserContext parserContext ) { } protected boolean indicatesPubSubConfig ( BeanDefinition configDef ) { } protected int [ ] parseConcurrency ( Element ele , ParserContext parserContext ) { } }

Fix:
String localName = parserContext . getDelegate ( ) . getLocalName ( child ) ;