public static boolean expression_0(PsiBuilder b, int l, int g) {
    if (!recursion_guard_(b, l, "expression_0")) return false;
    boolean r = true;
    while (true) {
      Marker m = enter_section_(b, l, _LEFT_, null);
      if (g < 0 && assignment_expression_0(b, l + 1)) {
        r = true;
        exit_section_(b, l, m, ASSIGNMENT_EXPRESSION, r, true, null);
      }
      else if (g < 1 && ternary_expression_0(b, l + 1)) {
        r = true;
        exit_section_(b, l, m, TERNARY_EXPRESSION, r, true, null);
      }
      else if (g < 1 && elvis_expression_0(b, l + 1)) {
        r = expression(b, l, 0);
        exit_section_(b, l, m, ELVIS_EXPRESSION, r, true, null);
      }
      else if (g < 2 && lor_expression_0(b, l + 1)) {
        r = expression(b, l, 2);
        exit_section_(b, l, m, LOR_EXPRESSION, r, true, null);
      }
      else if (g < 3 && land_expression_0(b, l + 1)) {
        r = expression(b, l, 3);
        exit_section_(b, l, m, LAND_EXPRESSION, r, true, null);
      }
      else if (g < 4 && bor_expression_0(b, l + 1)) {
        r = expression(b, l, 4);
        exit_section_(b, l, m, BOR_EXPRESSION, r, true, null);
      }
      else if (g < 5 && xor_expression_0(b, l + 1)) {
        r = expression(b, l, 5);
        exit_section_(b, l, m, XOR_EXPRESSION, r, true, null);
      }
      else if (g < 6 && band_expression_0(b, l + 1)) {
        r = expression(b, l, 6);
        exit_section_(b, l, m, BAND_EXPRESSION, r, true, null);
      }
      else if (g < 7 && equality_expression_0(b, l + 1)) {
        r = expression(b, l, 7);
        exit_section_(b, l, m, EQUALITY_EXPRESSION, r, true, null);
      }
      else if (g < 7 && compare_expression_0(b, l + 1)) {
        r = expression(b, l, 7);
        exit_section_(b, l, m, RELATIONAL_EXPRESSION, r, true, null);
      }
      else if (g < 7 && regex_find_expression_0(b, l + 1)) {
        r = expression(b, l, 7);
        exit_section_(b, l, m, REGEX_FIND_EXPRESSION, r, true, null);
      }
      else if (g < 7 && regex_match_expression_0(b, l + 1)) {
        r = expression(b, l, 7);
        exit_section_(b, l, m, REGEX_MATCH_EXPRESSION, r, true, null);
      }
      else if (g < 8 && relational_expression_0(b, l + 1)) {
        r = expression(b, l, 8);
        exit_section_(b, l, m, RELATIONAL_EXPRESSION, r, true, null);
      }
      else if (g < 8 && in_expression_0(b, l + 1)) {
        r = expression(b, l, 8);
        exit_section_(b, l, m, IN_EXPRESSION, r, true, null);
      }
      else if (g < 8 && instanceof_expression_0(b, l + 1)) {
        r = true;
        exit_section_(b, l, m, INSTANCEOF_EXPRESSION, r, true, null);
      }
      else if (g < 8 && as_expression_0(b, l + 1)) {
        r = true;
        exit_section_(b, l, m, AS_EXPRESSION, r, true, null);
      }
      else if (g < 9 && shift_expression_0(b, l + 1)) {
        r = expression(b, l, 9);
        exit_section_(b, l, m, SHIFT_EXPRESSION, r, true, null);
      }
      else if (g < 9 && range_expression_0(b, l + 1)) {
        r = expression(b, l, 9);
        exit_section_(b, l, m, RANGE_EXPRESSION, r, true, null);
      }
      else if (g < 10 && additive_expression_0(b, l + 1)) {
        r = expression(b, l, 10);
        exit_section_(b, l, m, ADDITIVE_EXPRESSION, r, true, null);
      }
      else if (g < 11 && multiplicative_expression_0(b, l + 1)) {
        r = expression(b, l, 11);
        exit_section_(b, l, m, MULTIPLICATIVE_EXPRESSION, r, true, null);
      }
      else if (g < 12 && power_expression_0(b, l + 1)) {
        r = expression(b, l, 12);
        exit_section_(b, l, m, POWER_EXPRESSION, r, true, null);
      }
      else if (g < 15 && index_expression_argument_list(b, l + 1)) {
        r = true;
        exit_section_(b, l, m, INDEX_EXPRESSION, r, true, null);
      }
      else if (g < 15 && safe_index_expression_0(b, l + 1)) {
        r = true;
        exit_section_(b, l, m, INDEX_EXPRESSION, r, true, null);
      }
      else if (g < 15 && postfix_unary_expression_0(b, l + 1)) {
        r = true;
        exit_section_(b, l, m, UNARY_EXPRESSION, r, true, null);
      }
      else if (g < 16 && method_reference_expression_0(b, l + 1)) {
        r = true;
        exit_section_(b, l, m, METHOD_REFERENCE_EXPRESSION, r, true, null);
      }
      else if (g < 16 && attribute_expression_0(b, l + 1)) {
        r = true;
        exit_section_(b, l, m, ATTRIBUTE_EXPRESSION, r, true, null);
      }
      else if (g < 16 && qualified_reference_expression_0(b, l + 1)) {
        r = true;
        exit_section_(b, l, m, REFERENCE_EXPRESSION, r, true, null);
      }
      else if (g < 16 && property_expression_0(b, l + 1)) {
        r = true;
        exit_section_(b, l, m, PROPERTY_EXPRESSION, r, true, null);
      }
      else if (g < 17 && callTail(b, l + 1, GroovyGeneratedParser::call_tail_with_nl_before_closure, GroovyGeneratedParser::call_tail)) {
        r = true;
        exit_section_(b, l, m, METHOD_CALL_EXPRESSION, r, true, null);
      }
      else {
        exit_section_(b, l, m, null, false, false, null);
        break;
      }
    }
    return r;
  }
public static boolean expression_0(PsiBuilder b, int l, int g)