class DivisionExpression extends MultiplicationDivisionRemainderExpression {


    private static final long serialVersionUID = -6480768503994179971L;



    private static final Logger logger = LoggerFactory.getLogger(DivisionExpression.class);




    
    public DivisionExpression(final IStandardExpression left, final IStandardExpression right) {
        super(left, right);
    }
    

    
    @Override
    public String getStringRepresentation() {
        return getStringRepresentation(DIVISION_OPERATOR);
    }
    
    
    
    
    static Object executeDivision(
            final IExpressionContext context,
            final DivisionExpression expression, final StandardExpressionExecutionContext expContext) {<FILL_FUNCTION_BODY>}

    
}


        if (logger.isTraceEnabled()) {
            logger.trace("[THYMELEAF][{}] Evaluating division expression: \"{}\"", TemplateEngine.threadIndex(), expression.getStringRepresentation());
        }
        
        Object leftValue = expression.getLeft().execute(context, expContext);

        Object rightValue = expression.getRight().execute(context, expContext);
        
        if (leftValue == null) {
            leftValue = "null";
        }
        if (rightValue == null) {
            rightValue = "null";
        }

        final BigDecimal leftNumberValue = EvaluationUtils.evaluateAsNumber(leftValue);
        final BigDecimal rightNumberValue = EvaluationUtils.evaluateAsNumber(rightValue);
        if (leftNumberValue != null && rightNumberValue != null) {
            try {
                return leftNumberValue.divide(rightNumberValue);
            } catch (final ArithmeticException ignored) {
                // Result has a non-terminating decimal expansion (like 100/3), so
                // we just use a minimum arbitrary scale (10) and HALF_UP rounding mode
                return leftNumberValue.divide(
                        rightNumberValue, 
                        Math.max(Math.max(leftNumberValue.scale(),rightNumberValue.scale()), 10), 
                        RoundingMode.HALF_UP);
            }
        }
        
        throw new TemplateProcessingException(
            "Cannot execute division: operands are \"" + LiteralValue.unwrap(leftValue) + "\" and \"" + LiteralValue.unwrap(rightValue) + "\"");
        
    
<methods><variables>protected static final java.lang.String DIVISION_OPERATOR,protected static final java.lang.String DIVISION_OPERATOR_2,private static final non-sealed java.lang.reflect.Method LEFT_ALLOWED_METHOD,private static final boolean[] LENIENCIES,protected static final java.lang.String MULTIPLICATION_OPERATOR,static final java.lang.String[] OPERATORS,private static final Class<? extends org.thymeleaf.standard.expression.BinaryOperationExpression>[] OPERATOR_CLASSES,protected static final java.lang.String REMAINDER_OPERATOR,protected static final java.lang.String REMAINDER_OPERATOR_2,private static final non-sealed java.lang.reflect.Method RIGHT_ALLOWED_METHOD,private static final long serialVersionUID