class SofaBootNamespaceHandler extends NamespaceHandlerSupport {

    private static final Logger logger = SofaBootLoggerFactory
                                           .getLogger(SofaBootNamespaceHandler.class);

    @Override
    public void init() {
        List<SofaBootTagNameSupport> sofaBootTagNameSupports = SpringFactoriesLoader.loadFactories(SofaBootTagNameSupport.class, null);
        sofaBootTagNameSupports.forEach(this::registerTagParser);
    }

    private void registerTagParser(SofaBootTagNameSupport tagNameSupport) {<FILL_FUNCTION_BODY>}
}

        if (tagNameSupport instanceof BeanDefinitionParser) {
            registerBeanDefinitionParser(tagNameSupport.supportTagName(),
                (BeanDefinitionParser) tagNameSupport);
        } else if (tagNameSupport instanceof BeanDefinitionDecorator) {
            registerBeanDefinitionDecoratorForAttribute(tagNameSupport.supportTagName(),
                (BeanDefinitionDecorator) tagNameSupport);
        } else {
            logger
                .error(
                    "{} class supported [{}] parser are not instance of BeanDefinitionParser or BeanDefinitionDecorator",
                    tagNameSupport.getClass().getName(), tagNameSupport.supportTagName());
        }
    
<methods>public void <init>() ,public org.springframework.beans.factory.config.BeanDefinitionHolder decorate(org.w3c.dom.Node, org.springframework.beans.factory.config.BeanDefinitionHolder, org.springframework.beans.factory.xml.ParserContext) ,public org.springframework.beans.factory.config.BeanDefinition parse(org.w3c.dom.Element, org.springframework.beans.factory.xml.ParserContext) <variables>private final Map<java.lang.String,org.springframework.beans.factory.xml.BeanDefinitionDecorator> attributeDecorators,private final Map<java.lang.String,org.springframework.beans.factory.xml.BeanDefinitionDecorator> decorators,private final Map<java.lang.String,org.springframework.beans.factory.xml.BeanDefinitionParser> parsers