private CompiledFEELUnaryTests parse(String input, Map<String, Type> inputTypes, FEELEventListenersManager mgr, CompiledFEELSupport.SyntaxErrorListener listener) {
FEEL_1_1Parser parser = FEELParser.parse(mgr, input, inputTypes, Collections.emptyMap(), Collections.emptyList(), Collections.emptyList());
ParseTree tree = parser.unaryTestsRoot();
DirectCompilerResult directResult;
if (listener.isError()) {
directResult = CompiledFEELSupport.compiledErrorUnaryTest(listener.event().getMessage());
} else {
ASTBuilderVisitor v = new ASTBuilderVisitor(inputTypes);
BaseNode node = v.visit(tree);
BaseNode transformed = node.accept(new ASTUnaryTestTransform()).node();
directResult = transformed.accept(new ASTCompilerVisitor());
}
Expression expr = directResult.getExpression();
CompiledFEELUnaryTests cu = new CompilerBytecodeLoader().makeFromJPUnaryTestsExpression(input, expr, directResult.getFieldDeclarations());
return cu;
}