code: 	private BeanReference createSecurityFilterChainBean(Element element,
  			ParserContext pc, List<?> filterChain) {
  		BeanMetadataElement filterChainMatcher;
  
  		String requestMatcherRef = element.getAttribute(ATT_REQUEST_MATCHER_REF);
  		String filterChainPattern = element.getAttribute(ATT_PATH_PATTERN);
  
  		if (StringUtils.hasText(requestMatcherRef)) {
  			if (StringUtils.hasText(filterChainPattern)) {
  				pc.getReaderContext().error(
  						"You can't define a pattern and a request-matcher-ref for the "
  								+ "same filter chain", pc.extractSource(element));
  			}
  			filterChainMatcher = new RuntimeBeanReference(requestMatcherRef);
  
  		}
  		else if (StringUtils.hasText(filterChainPattern)) {
  			filterChainMatcher = MatcherType.fromElement(element).createMatcher(
  					filterChainPattern, null);
  		}
  		else {
  			filterChainMatcher = new RootBeanDefinition(AnyRequestMatcher.class);
  		}
  
  		BeanDefinitionBuilder filterChainBldr = BeanDefinitionBuilder
  				.rootBeanDefinition(DefaultSecurityFilterChain.class);
  		filterChainBldr.addConstructorArgValue(filterChainMatcher);
  		filterChainBldr.addConstructorArgValue(filterChain);
  
  		BeanDefinition filterChainBean = filterChainBldr.getBeanDefinition();
  
  		String id = element.getAttribute("name");
  		if (!StringUtils.hasText(id)) {
  			id = element.getAttribute("id");
  			if (!StringUtils.hasText(id)) {
  				id = pc.getReaderContext().generateBeanName(filterChainBean);
  			}
  		}
  
  		pc.registerBeanComponent(new BeanComponentDefinition(filterChainBean, id));
  
  		return new RuntimeBeanReference(id);
  	}
  
  