### Question:
ExpressionResolver implements RecursiveResolver { @Override public Optional<Statement> findStatementIn(CharSequence line) { Matcher expressionMatcher = expressionPattern.matcher(line); return expressionMatcher.find() ? of(toExpression(expressionMatcher)) : empty(); }  @Override Optional<Statement> findStatementIn(CharSequence line);  }### Answer:
@Test void api() { String value = "I'm #{ 1 + 2} !"; RecursiveResolver.Statement statement = resolver.findStatementIn(new StringBuilder(value)).orElseThrow(IllegalStateException::new); assertEquals(4, statement.getStartIndex()); assertEquals(13, statement.getEndIndex()); assertEquals("#{ 1 + 2}", statement.toString()); assertEquals("3", statement.resolveFor(null, null)); }