class SpringObjectTagProcessor extends AbstractStandardTargetSelectionTagProcessor {


    public static final int ATTR_PRECEDENCE = 500;
    public static final String ATTR_NAME = "object";



    public SpringObjectTagProcessor(final String dialectPrefix) {
        super(TemplateMode.HTML, dialectPrefix, ATTR_NAME, ATTR_PRECEDENCE);
    }







    @Override
    protected void validateSelectionValue(final ITemplateContext context,
                                          final IProcessableElementTag tag,
                                          final AttributeName attributeName, final String attributeValue,
                                          final IStandardExpression expression) {<FILL_FUNCTION_BODY>}





    @Override
    protected Map<String, Object> computeAdditionalLocalVariables(
            final ITemplateContext context,
            final IProcessableElementTag tag,
            final AttributeName attributeName, final String attributeValue,
            final IStandardExpression expression) {

        // We set the (parsed) expression itself as a local variable because we might use it at the expression evaluator
        return Collections.singletonMap(SpringContextVariableNames.SPRING_BOUND_OBJECT_EXPRESSION, (Object)expression);

    }




}


        if (expression == null || !(expression instanceof VariableExpression)) {

            throw new TemplateProcessingException(
                    "The expression used for object selection is " + expression + ", which is not valid: " +
                    "only variable expressions (${...}) are allowed in '" +  attributeName + "' attributes in " +
                    "Spring-enabled environments.");

        }


    
<no_super_class>