boolean (PsiBuilder b, int l) { if (!recursion_guard_(b, l, "ternary_tail_pin")) return false; if (!nextTokenIsFast(b, T_Q)) return false; boolean r, p; Marker m = enter_section_(b, l, _NONE_); r = consumeTokenFast(b, T_Q); r = r && mb_nl(b, l + 1); r = r && ternary_tail_pin_2(b, l + 1); p = r; // pin = 3 r = r && report_error_(b, expression(b, l + 1, -1)); r = p && report_error_(b, mb_nl(b, l + 1)) && r; r = p && report_error_(b, consumeToken(b, T_COLON)) && r; r = p && report_error_(b, mb_nl(b, l + 1)) && r; r = p && expression(b, l + 1, 0) && r; exit_section_(b, l, m, r, p, null); return r || p; }