boolean (PsiBuilder b, int l, int g) { if (!recursion_guard_(b, l, "expression")) return false; addVariant(b, "<expression>"); boolean r, p; Marker m = enter_section_(b, l, _NONE_, "<expression>"); r = tuple_assignment_expression(b, l + 1); if (!r) r = switch_expression(b, l + 1); if (!r) r = prefix_unary_expression(b, l + 1); if (!r) r = not_expression(b, l + 1); if (!r) r = cast_expression(b, l + 1); if (!r) r = lazy_closure(b, l + 1); if (!r) r = lambda_expression(b, l + 1); if (!r) r = single_parameter_lambda_expression(b, l + 1); if (!r) r = list_or_map(b, l + 1); if (!r) r = new_anonymous_expression(b, l + 1); if (!r) r = new_expression(b, l + 1); if (!r) r = unqualified_reference_expression(b, l + 1); if (!r) r = built_in_type_expression(b, l + 1); if (!r) r = literal(b, l + 1); if (!r) r = gstring(b, l + 1); if (!r) r = regex(b, l + 1); if (!r) r = parenthesized_expression(b, l + 1); p = r; r = r && expression_0(b, l + 1, g); exit_section_(b, l, m, null, r, p, null); return r || p; }