Repository: Instagram/LibCST (language: python)

Issue:
Redundant nesting of StarredElement in Starred with native parser on some cases
Short reproducer:
```py
a, *b
```

Native parser represents `*b` like this:
```py
Element(
  value=StarredElement(
    value=Name(
      value='b',
    ),
  ),
),
```
But the python version represents it in a flat fashion:
```py
StarredElement(
  value=Name(
    value='b',
  ),
),
```


Discussion / hints:

Fix patch:
diff --git a/native/libcst/src/parser/grammar.rs b/native/libcst/src/parser/grammar.rs
index 70d2f968e..c2bfd2577 100644
--- a/native/libcst/src/parser/grammar.rs
+++ b/native/libcst/src/parser/grammar.rs
@@ -2174,9 +2174,12 @@ fn make_assignment<'a>(
 }
 
 fn expr_to_element(expr: Expression) -> Element {
-    Element::Simple {
-        value: expr,
-        comma: Default::default(),
+    match expr {
+        Expression::StarredElement(inner_expr) => Element::Starred(inner_expr),
+        _ => Element::Simple {
+            value: expr,
+            comma: Default::default(),
+        },
     }
 }
 


Test patch:
diff --git a/libcst/_nodes/tests/test_tuple.py b/libcst/_nodes/tests/test_tuple.py
index db9f2ccea..0055055ca 100644
--- a/libcst/_nodes/tests/test_tuple.py
+++ b/libcst/_nodes/tests/test_tuple.py
@@ -91,6 +91,47 @@ class TupleTest(CSTNodeTest):
                 "parser": parse_expression,
                 "expected_position": CodeRange((1, 1), (1, 11)),
             },
+            # top-level two-element tuple, with one being starred
+            {
+                "node": cst.SimpleStatementLine(
+                    body=[
+                        cst.Expr(
+                            value=cst.Tuple(
+                                [
+                                    cst.Element(cst.Name("one"), comma=cst.Comma()),
+                                    cst.StarredElement(cst.Name("two")),
+                                ],
+                                lpar=[],
+                                rpar=[],
+                            )
+                        )
+                    ]
+                ),
+                "code": "one,*two\n",
+                "parser": parse_statement,
+            },
+            # top-level three-element tuple, start/end is starred
+            {
+                "node": cst.SimpleStatementLine(
+                    body=[
+                        cst.Expr(
+                            value=cst.Tuple(
+                                [
+                                    cst.StarredElement(
+                                        cst.Name("one"), comma=cst.Comma()
+                                    ),
+                                    cst.Element(cst.Name("two"), comma=cst.Comma()),
+                                    cst.StarredElement(cst.Name("three")),
+                                ],
+                                lpar=[],
+                                rpar=[],
+                            )
+                        )
+                    ]
+                ),
+                "code": "*one,two,*three\n",
+                "parser": parse_statement,
+            },
             # missing spaces around tuple, okay with parenthesis
             {
                 "node": cst.For(