private OExpression compileExpr(Expression expression, boolean isJoinCondition, boolean isLValue, OVarType rootNodeType, Object requestedResultType, Object[] resultType) {
String expLang = getExpressionLanguage(expression);
ExpressionCompiler ec = findExpLangCompiler(expLang);
ec.setCompilerContext(this);
ExpressionValidator ev = _expressionValidatorFactory.getValidator();
try {
OExpression oexpr;
if (isJoinCondition) {
oexpr = ec.compileJoinCondition(expression);
} else {
oexpr = ec.compile(expression);
resultType[0] = ev.validate(expression, rootNodeType, requestedResultType);
}
oexpr.debugInfo = createDebugInfo(expression, expression.toString());
OExpressionLanguage expLanguage = _expLanguages.get(expLang);