class AuthenticationAttrProcessor extends AbstractAttributeTagProcessor {

    
    public static final int ATTR_PRECEDENCE = 1300;
    public static final String ATTR_NAME = "authentication";




    public AuthenticationAttrProcessor(final TemplateMode templateMode, final String dialectPrefix) {
        super(templateMode, dialectPrefix,  null, false, ATTR_NAME, true, ATTR_PRECEDENCE, true);
    }




    @Override
    protected void doProcess(
            final ITemplateContext context, final IProcessableElementTag tag,
            final AttributeName attributeName, final String attributeValue,
            final IElementTagStructureHandler structureHandler) {<FILL_FUNCTION_BODY>}

    
}


        final String attrValue = (attributeValue == null? null : attributeValue.trim());

        if (attrValue == null || attrValue.length() == 0) {
            return;
        }

        final Authentication authentication = AuthUtils.getAuthenticationObject(context);
        final Object authenticationProperty = AuthUtils.getAuthenticationProperty(authentication, attrValue);

        if (authenticationProperty == null) {
            return;
        }


        String encodedAttribute = EscapedAttributeUtils.escapeAttribute(getTemplateMode(), authenticationProperty.toString());
        structureHandler.setBody(encodedAttribute, false);

    
<methods><variables>private final non-sealed boolean removeAttribute