in android-lang-databinding/gen/com/android/tools/idea/lang/databinding/parser/DbParser.java [654:734]
public static boolean expr_0(PsiBuilder b, int l, int g) {
if (!recursion_guard_(b, l, "expr_0")) return false;
boolean r = true;
while (true) {
Marker m = enter_section_(b, l, _LEFT_, null);
if (g < 0 && consumeTokenSmart(b, QUESTQUEST)) {
r = expr(b, l, 0);
exit_section_(b, l, m, NULL_COALESCE_EXPR, r, true, null);
}
else if (g < 1 && consumeTokenSmart(b, QUEST)) {
r = report_error_(b, expr(b, l, 0));
r = ternaryExpr_1(b, l + 1) && r;
exit_section_(b, l, m, TERNARY_EXPR, r, true, null);
}
else if (g < 2 && consumeTokenSmart(b, OROR)) {
r = expr(b, l, 2);
exit_section_(b, l, m, LOGICAL_OR_EXPR, r, true, null);
}
else if (g < 3 && consumeTokenSmart(b, ANDAND)) {
r = expr(b, l, 3);
exit_section_(b, l, m, LOGICAL_AND_EXPR, r, true, null);
}
else if (g < 4 && consumeTokenSmart(b, OR)) {
r = expr(b, l, 4);
exit_section_(b, l, m, BINARY_OR_EXPR, r, true, null);
}
else if (g < 5 && consumeTokenSmart(b, XOR)) {
r = expr(b, l, 5);
exit_section_(b, l, m, BINARY_XOR_EXPR, r, true, null);
}
else if (g < 6 && consumeTokenSmart(b, AND)) {
r = expr(b, l, 6);
exit_section_(b, l, m, BINARY_AND_EXPR, r, true, null);
}
else if (g < 7 && eqComparisonOp(b, l + 1)) {
r = expr(b, l, 7);
exit_section_(b, l, m, EQ_COMPARISON_EXPR, r, true, null);
}
else if (g < 8 && consumeTokenSmart(b, INSTANCEOF_KEYWORD)) {
r = expr(b, l, 8);
exit_section_(b, l, m, INSTANCE_OF_EXPR, r, true, null);
}
else if (g < 9 && ineqComparisonOp(b, l + 1)) {
r = expr(b, l, 9);
exit_section_(b, l, m, INEQ_COMPARISON_EXPR, r, true, null);
}
else if (g < 10 && bitShiftOp(b, l + 1)) {
r = expr(b, l, 10);
exit_section_(b, l, m, BIT_SHIFT_EXPR, r, true, null);
}
else if (g < 11 && addOp(b, l + 1)) {
r = expr(b, l, 11);
exit_section_(b, l, m, ADD_EXPR, r, true, null);
}
else if (g < 12 && mulOp(b, l + 1)) {
r = expr(b, l, 12);
exit_section_(b, l, m, MUL_EXPR, r, true, null);
}
else if (g < 16 && leftMarkerIs(b, REF_EXPR) && callExpr_0(b, l + 1)) {
r = true;
exit_section_(b, l, m, CALL_EXPR, r, true, null);
}
else if (g < 17 && bracketArgument(b, l + 1)) {
r = true;
exit_section_(b, l, m, ARRAY_EXPR, r, true, null);
}
else if (g < 18 && qualRefExpr_0(b, l + 1)) {
r = true;
exit_section_(b, l, m, REF_EXPR, r, true, null);
}
else if (g < 20 && functionRefExpr_0(b, l + 1)) {
r = true;
exit_section_(b, l, m, FUNCTION_REF_EXPR, r, true, null);
}
else {
exit_section_(b, l, m, null, false, false, null);
break;
}
}
return r;
}