### Question:
RuleEvaluator { @CheckForNull @Deprecated public Object evaluateRule(final String rule, final Map<String, Object> values, final Class expectedType) { final ELContext elContext = createElContext(values); final ValueExpression ve = expressionFactory.createValueExpression(elContext, rule, expectedType); return ve.getValue(elContext); } RuleEvaluator(
            @Nonnull final ExpressionFactory expressionFactory,
            @Nonnull final FunctionMapper functionMapper,
            @Nonnull final Map<String, Object> testConstantsMap
    ); static RuleEvaluator createDefaultRuleEvaluator(final Map<String, Object> testConstantsMap); static LibraryFunctionMapperBuilder defaultFunctionMapperBuilder(); boolean evaluateBooleanRule(final String rule, @Nonnull final Map<String, Object> values); @CheckForNull @Deprecated Object evaluateRule(final String rule, final Map<String, Object> values, final Class expectedType);  }### Answer:
@Test public void testNonBooleanRule() { assertThat(ruleEvaluator.evaluateRule("${4}", emptyMap(), Integer.class)).isEqualTo(4); assertThat(ruleEvaluator.evaluateRule("${true}", emptyMap(), Boolean.class)).isEqualTo(true); assertThat(ruleEvaluator.evaluateRule("${4}", emptyMap(), String.class)).isEqualTo("4"); assertThat(ruleEvaluator.evaluateRule("${true}", emptyMap(), String.class)).isEqualTo("true"); }