class SpELCondition implements Condition {

    private final ExpressionParser parser = new SpelExpressionParser();
    private final Expression compiledExpression;
    private BeanResolver beanResolver;

    /**
     * Create a new {@link SpELCondition}.
     *
     * @param expression the condition written in expression language
     */
    public SpELCondition(String expression) {
        this(expression, ParserContext.TEMPLATE_EXPRESSION);
    }

    /**
     * Create a new {@link SpELCondition}.
     *
     * @param expression    the condition written in expression language
     * @param beanResolver  the bean resolver used to resolve bean references
     */
    public SpELCondition(String expression, BeanResolver beanResolver) {
        this(expression, ParserContext.TEMPLATE_EXPRESSION, beanResolver);
    }

    /**
     * Create a new {@link SpELCondition}.
     *
     * @param expression    the condition written in expression language
     * @param parserContext the SpEL parser context
     */
    public SpELCondition(String expression, ParserContext parserContext) {
        compiledExpression = parser.parseExpression(expression, parserContext);
    }

    /**
     * Create a new {@link SpELCondition}.
     *
     * @param expression    the condition written in expression language
     * @param beanResolver  the bean resolver used to resolve bean references
     * @param parserContext the SpEL parser context
     */
    public SpELCondition(String expression, ParserContext parserContext, BeanResolver beanResolver) {
        this.beanResolver = beanResolver;
        compiledExpression = parser.parseExpression(expression, parserContext);
    }

    @Override
    public boolean evaluate(Facts facts) {<FILL_FUNCTION_BODY>}
}

        StandardEvaluationContext context = new StandardEvaluationContext();
        context.setRootObject(facts.asMap());
        context.setVariables(facts.asMap());
        if (beanResolver != null) {
            context.setBeanResolver(beanResolver);
        }
        return compiledExpression.getValue(context, Boolean.class);
    
<no_super_class>