boolean (PsiBuilder b, int l, int g) { if (!recursion_guard_(b, l, "condition_0")) return false; boolean r = true; while (true) { Marker m = enter_section_(b, l, _LEFT_, null); if (g < 0 && consumeTokenSmart(b, ASSIGN)) { r = condition(b, l, 0); exit_section_(b, l, m, ASSIGNMENT_CONDITION, r, true, null); } else if (g < 1 && logical_or_condition_0(b, l + 1)) { r = condition(b, l, 1); exit_section_(b, l, m, LOGICAL_OR_CONDITION, r, true, null); } else if (g < 2 && logical_and_condition_0(b, l + 1)) { r = condition(b, l, 2); exit_section_(b, l, m, LOGICAL_AND_CONDITION, r, true, null); } else if (g < 3 && equality_condition_0(b, l + 1)) { r = condition(b, l, 3); exit_section_(b, l, m, EQUALITY_CONDITION, r, true, null); } else if (g < 4 && regex_condition_0(b, l + 1)) { r = true; exit_section_(b, l, m, REGEX_CONDITION, r, true, null); } else if (g < 5 && comparison_condition_0(b, l + 1)) { r = condition(b, l, 5); exit_section_(b, l, m, COMPARISON_CONDITION, r, true, null); } else { exit_section_(b, l, m, null, false, false, null); break; } } return r; }