### Question:
Query { public static Tree compileTree(final String query) throws AttributeExpressionLanguageParsingException { try { final CommonTokenStream lexerTokenStream = createTokenStream(query); final AttributeExpressionParser parser = new AttributeExpressionParser(lexerTokenStream); final Tree ast = (Tree) parser.query().getTree(); final Tree tree = ast.getChild(0); final Evaluator<?> evaluator = buildEvaluator(tree); verifyMappingEvaluatorReduced(evaluator); return tree; } catch (final AttributeExpressionLanguageParsingException e) { throw e; } catch (final Exception e) { throw new AttributeExpressionLanguageParsingException(e); } } private  Query(final String query, final Tree tree, final Evaluator<?> evaluator); static boolean isValidExpression(final String value); static ResultType getResultType(final String value); static List<ResultType> extractResultTypes(final String value); static List<String> extractExpressions(final String value); static List<Range> extractExpressionRanges(final String value); static void validateExpression(final String value, final boolean allowSurroundingCharacters); static String unescape(final String value); static Query fromTree(final Tree tree, final String text); static Tree compileTree(final String query); static PreparedQuery prepare(final String query); static Query compile(final String query); ResultType getResultType(); @Override String toString();  }### Answer:
@Test(expected = AttributeExpressionLanguageException.class) public void testCannotCombineWithNonReducingFunction() { Query.compileTree("${allAttributes( 'a.1' ):plus(1)}"); }