gh-99300: Use Py_NewRef() in Python/Python-ast.c (#99499)

Replace Py_INCREF() and Py_XINCREF() with Py_NewRef() and
Py_XNewRef() in Python/Python-ast.c.

Update Parser/asdl_c.py to regenerate code.
diff --git a/Parser/asdl_c.py b/Parser/asdl_c.py
index 8bdd253..3e30761 100755
--- a/Parser/asdl_c.py
+++ b/Parser/asdl_c.py
@@ -675,8 +675,7 @@ def visitField(self, field, name, sum=None, prod=None, depth=0):
             self.emit("if (%s == NULL) goto failed;" % field.name, depth+1)
             self.emit("for (i = 0; i < len; i++) {", depth+1)
             self.emit("%s val;" % ctype, depth+2)
-            self.emit("PyObject *tmp2 = PyList_GET_ITEM(tmp, i);", depth+2)
-            self.emit("Py_INCREF(tmp2);", depth+2)
+            self.emit("PyObject *tmp2 = Py_NewRef(PyList_GET_ITEM(tmp, i));", depth+2)
             with self.recursive_call(name, depth+2):
                 self.emit("res = obj2ast_%s(state, tmp2, &val, arena);" %
                           field.type, depth+2, reflow=False)
@@ -1021,9 +1020,11 @@ def visitModule(self, mod):
             *out = NULL;
             return -1;
         }
-        Py_INCREF(obj);
+        *out = Py_NewRef(obj);
     }
-    *out = obj;
+    else {
+        *out = NULL;
+    }
     return 0;
 }
 
diff --git a/Python/Python-ast.c b/Python/Python-ast.c
index 31c38e8..d113c47 100644
--- a/Python/Python-ast.c
+++ b/Python/Python-ast.c
@@ -1023,9 +1023,11 @@
             *out = NULL;
             return -1;
         }
-        Py_INCREF(obj);
+        *out = Py_NewRef(obj);
     }
-    *out = obj;
+    else {
+        *out = NULL;
+    }
     return 0;
 }
 
@@ -5483,8 +5485,7 @@
             if (body == NULL) goto failed;
             for (i = 0; i < len; i++) {
                 stmt_ty val;
-                PyObject *tmp2 = PyList_GET_ITEM(tmp, i);
-                Py_INCREF(tmp2);
+                PyObject *tmp2 = Py_NewRef(PyList_GET_ITEM(tmp, i));
                 if (_Py_EnterRecursiveCall(" while traversing 'Module' node")) {
                     goto failed;
                 }
@@ -5520,8 +5521,7 @@
             if (type_ignores == NULL) goto failed;
             for (i = 0; i < len; i++) {
                 type_ignore_ty val;
-                PyObject *tmp2 = PyList_GET_ITEM(tmp, i);
-                Py_INCREF(tmp2);
+                PyObject *tmp2 = Py_NewRef(PyList_GET_ITEM(tmp, i));
                 if (_Py_EnterRecursiveCall(" while traversing 'Module' node")) {
                     goto failed;
                 }
@@ -5569,8 +5569,7 @@
             if (body == NULL) goto failed;
             for (i = 0; i < len; i++) {
                 stmt_ty val;
-                PyObject *tmp2 = PyList_GET_ITEM(tmp, i);
-                Py_INCREF(tmp2);
+                PyObject *tmp2 = Py_NewRef(PyList_GET_ITEM(tmp, i));
                 if (_Py_EnterRecursiveCall(" while traversing 'Interactive' node")) {
                     goto failed;
                 }
@@ -5648,8 +5647,7 @@
             if (argtypes == NULL) goto failed;
             for (i = 0; i < len; i++) {
                 expr_ty val;
-                PyObject *tmp2 = PyList_GET_ITEM(tmp, i);
-                Py_INCREF(tmp2);
+                PyObject *tmp2 = Py_NewRef(PyList_GET_ITEM(tmp, i));
                 if (_Py_EnterRecursiveCall(" while traversing 'FunctionType' node")) {
                     goto failed;
                 }
@@ -5845,8 +5843,7 @@
             if (body == NULL) goto failed;
             for (i = 0; i < len; i++) {
                 stmt_ty val;
-                PyObject *tmp2 = PyList_GET_ITEM(tmp, i);
-                Py_INCREF(tmp2);
+                PyObject *tmp2 = Py_NewRef(PyList_GET_ITEM(tmp, i));
                 if (_Py_EnterRecursiveCall(" while traversing 'FunctionDef' node")) {
                     goto failed;
                 }
@@ -5882,8 +5879,7 @@
             if (decorator_list == NULL) goto failed;
             for (i = 0; i < len; i++) {
                 expr_ty val;
-                PyObject *tmp2 = PyList_GET_ITEM(tmp, i);
-                Py_INCREF(tmp2);
+                PyObject *tmp2 = Py_NewRef(PyList_GET_ITEM(tmp, i));
                 if (_Py_EnterRecursiveCall(" while traversing 'FunctionDef' node")) {
                     goto failed;
                 }
@@ -6006,8 +6002,7 @@
             if (body == NULL) goto failed;
             for (i = 0; i < len; i++) {
                 stmt_ty val;
-                PyObject *tmp2 = PyList_GET_ITEM(tmp, i);
-                Py_INCREF(tmp2);
+                PyObject *tmp2 = Py_NewRef(PyList_GET_ITEM(tmp, i));
                 if (_Py_EnterRecursiveCall(" while traversing 'AsyncFunctionDef' node")) {
                     goto failed;
                 }
@@ -6043,8 +6038,7 @@
             if (decorator_list == NULL) goto failed;
             for (i = 0; i < len; i++) {
                 expr_ty val;
-                PyObject *tmp2 = PyList_GET_ITEM(tmp, i);
-                Py_INCREF(tmp2);
+                PyObject *tmp2 = Py_NewRef(PyList_GET_ITEM(tmp, i));
                 if (_Py_EnterRecursiveCall(" while traversing 'AsyncFunctionDef' node")) {
                     goto failed;
                 }
@@ -6150,8 +6144,7 @@
             if (bases == NULL) goto failed;
             for (i = 0; i < len; i++) {
                 expr_ty val;
-                PyObject *tmp2 = PyList_GET_ITEM(tmp, i);
-                Py_INCREF(tmp2);
+                PyObject *tmp2 = Py_NewRef(PyList_GET_ITEM(tmp, i));
                 if (_Py_EnterRecursiveCall(" while traversing 'ClassDef' node")) {
                     goto failed;
                 }
@@ -6187,8 +6180,7 @@
             if (keywords == NULL) goto failed;
             for (i = 0; i < len; i++) {
                 keyword_ty val;
-                PyObject *tmp2 = PyList_GET_ITEM(tmp, i);
-                Py_INCREF(tmp2);
+                PyObject *tmp2 = Py_NewRef(PyList_GET_ITEM(tmp, i));
                 if (_Py_EnterRecursiveCall(" while traversing 'ClassDef' node")) {
                     goto failed;
                 }
@@ -6224,8 +6216,7 @@
             if (body == NULL) goto failed;
             for (i = 0; i < len; i++) {
                 stmt_ty val;
-                PyObject *tmp2 = PyList_GET_ITEM(tmp, i);
-                Py_INCREF(tmp2);
+                PyObject *tmp2 = Py_NewRef(PyList_GET_ITEM(tmp, i));
                 if (_Py_EnterRecursiveCall(" while traversing 'ClassDef' node")) {
                     goto failed;
                 }
@@ -6261,8 +6252,7 @@
             if (decorator_list == NULL) goto failed;
             for (i = 0; i < len; i++) {
                 expr_ty val;
-                PyObject *tmp2 = PyList_GET_ITEM(tmp, i);
-                Py_INCREF(tmp2);
+                PyObject *tmp2 = Py_NewRef(PyList_GET_ITEM(tmp, i));
                 if (_Py_EnterRecursiveCall(" while traversing 'ClassDef' node")) {
                     goto failed;
                 }
@@ -6342,8 +6332,7 @@
             if (targets == NULL) goto failed;
             for (i = 0; i < len; i++) {
                 expr_ty val;
-                PyObject *tmp2 = PyList_GET_ITEM(tmp, i);
-                Py_INCREF(tmp2);
+                PyObject *tmp2 = Py_NewRef(PyList_GET_ITEM(tmp, i));
                 if (_Py_EnterRecursiveCall(" while traversing 'Delete' node")) {
                     goto failed;
                 }
@@ -6394,8 +6383,7 @@
             if (targets == NULL) goto failed;
             for (i = 0; i < len; i++) {
                 expr_ty val;
-                PyObject *tmp2 = PyList_GET_ITEM(tmp, i);
-                Py_INCREF(tmp2);
+                PyObject *tmp2 = Py_NewRef(PyList_GET_ITEM(tmp, i));
                 if (_Py_EnterRecursiveCall(" while traversing 'Assign' node")) {
                     goto failed;
                 }
@@ -6666,8 +6654,7 @@
             if (body == NULL) goto failed;
             for (i = 0; i < len; i++) {
                 stmt_ty val;
-                PyObject *tmp2 = PyList_GET_ITEM(tmp, i);
-                Py_INCREF(tmp2);
+                PyObject *tmp2 = Py_NewRef(PyList_GET_ITEM(tmp, i));
                 if (_Py_EnterRecursiveCall(" while traversing 'For' node")) {
                     goto failed;
                 }
@@ -6703,8 +6690,7 @@
             if (orelse == NULL) goto failed;
             for (i = 0; i < len; i++) {
                 stmt_ty val;
-                PyObject *tmp2 = PyList_GET_ITEM(tmp, i);
-                Py_INCREF(tmp2);
+                PyObject *tmp2 = Py_NewRef(PyList_GET_ITEM(tmp, i));
                 if (_Py_EnterRecursiveCall(" while traversing 'For' node")) {
                     goto failed;
                 }
@@ -6808,8 +6794,7 @@
             if (body == NULL) goto failed;
             for (i = 0; i < len; i++) {
                 stmt_ty val;
-                PyObject *tmp2 = PyList_GET_ITEM(tmp, i);
-                Py_INCREF(tmp2);
+                PyObject *tmp2 = Py_NewRef(PyList_GET_ITEM(tmp, i));
                 if (_Py_EnterRecursiveCall(" while traversing 'AsyncFor' node")) {
                     goto failed;
                 }
@@ -6845,8 +6830,7 @@
             if (orelse == NULL) goto failed;
             for (i = 0; i < len; i++) {
                 stmt_ty val;
-                PyObject *tmp2 = PyList_GET_ITEM(tmp, i);
-                Py_INCREF(tmp2);
+                PyObject *tmp2 = Py_NewRef(PyList_GET_ITEM(tmp, i));
                 if (_Py_EnterRecursiveCall(" while traversing 'AsyncFor' node")) {
                     goto failed;
                 }
@@ -6932,8 +6916,7 @@
             if (body == NULL) goto failed;
             for (i = 0; i < len; i++) {
                 stmt_ty val;
-                PyObject *tmp2 = PyList_GET_ITEM(tmp, i);
-                Py_INCREF(tmp2);
+                PyObject *tmp2 = Py_NewRef(PyList_GET_ITEM(tmp, i));
                 if (_Py_EnterRecursiveCall(" while traversing 'While' node")) {
                     goto failed;
                 }
@@ -6969,8 +6952,7 @@
             if (orelse == NULL) goto failed;
             for (i = 0; i < len; i++) {
                 stmt_ty val;
-                PyObject *tmp2 = PyList_GET_ITEM(tmp, i);
-                Py_INCREF(tmp2);
+                PyObject *tmp2 = Py_NewRef(PyList_GET_ITEM(tmp, i));
                 if (_Py_EnterRecursiveCall(" while traversing 'While' node")) {
                     goto failed;
                 }
@@ -7038,8 +7020,7 @@
             if (body == NULL) goto failed;
             for (i = 0; i < len; i++) {
                 stmt_ty val;
-                PyObject *tmp2 = PyList_GET_ITEM(tmp, i);
-                Py_INCREF(tmp2);
+                PyObject *tmp2 = Py_NewRef(PyList_GET_ITEM(tmp, i));
                 if (_Py_EnterRecursiveCall(" while traversing 'If' node")) {
                     goto failed;
                 }
@@ -7075,8 +7056,7 @@
             if (orelse == NULL) goto failed;
             for (i = 0; i < len; i++) {
                 stmt_ty val;
-                PyObject *tmp2 = PyList_GET_ITEM(tmp, i);
-                Py_INCREF(tmp2);
+                PyObject *tmp2 = Py_NewRef(PyList_GET_ITEM(tmp, i));
                 if (_Py_EnterRecursiveCall(" while traversing 'If' node")) {
                     goto failed;
                 }
@@ -7127,8 +7107,7 @@
             if (items == NULL) goto failed;
             for (i = 0; i < len; i++) {
                 withitem_ty val;
-                PyObject *tmp2 = PyList_GET_ITEM(tmp, i);
-                Py_INCREF(tmp2);
+                PyObject *tmp2 = Py_NewRef(PyList_GET_ITEM(tmp, i));
                 if (_Py_EnterRecursiveCall(" while traversing 'With' node")) {
                     goto failed;
                 }
@@ -7164,8 +7143,7 @@
             if (body == NULL) goto failed;
             for (i = 0; i < len; i++) {
                 stmt_ty val;
-                PyObject *tmp2 = PyList_GET_ITEM(tmp, i);
-                Py_INCREF(tmp2);
+                PyObject *tmp2 = Py_NewRef(PyList_GET_ITEM(tmp, i));
                 if (_Py_EnterRecursiveCall(" while traversing 'With' node")) {
                     goto failed;
                 }
@@ -7233,8 +7211,7 @@
             if (items == NULL) goto failed;
             for (i = 0; i < len; i++) {
                 withitem_ty val;
-                PyObject *tmp2 = PyList_GET_ITEM(tmp, i);
-                Py_INCREF(tmp2);
+                PyObject *tmp2 = Py_NewRef(PyList_GET_ITEM(tmp, i));
                 if (_Py_EnterRecursiveCall(" while traversing 'AsyncWith' node")) {
                     goto failed;
                 }
@@ -7270,8 +7247,7 @@
             if (body == NULL) goto failed;
             for (i = 0; i < len; i++) {
                 stmt_ty val;
-                PyObject *tmp2 = PyList_GET_ITEM(tmp, i);
-                Py_INCREF(tmp2);
+                PyObject *tmp2 = Py_NewRef(PyList_GET_ITEM(tmp, i));
                 if (_Py_EnterRecursiveCall(" while traversing 'AsyncWith' node")) {
                     goto failed;
                 }
@@ -7355,8 +7331,7 @@
             if (cases == NULL) goto failed;
             for (i = 0; i < len; i++) {
                 match_case_ty val;
-                PyObject *tmp2 = PyList_GET_ITEM(tmp, i);
-                Py_INCREF(tmp2);
+                PyObject *tmp2 = Py_NewRef(PyList_GET_ITEM(tmp, i));
                 if (_Py_EnterRecursiveCall(" while traversing 'Match' node")) {
                     goto failed;
                 }
@@ -7456,8 +7431,7 @@
             if (body == NULL) goto failed;
             for (i = 0; i < len; i++) {
                 stmt_ty val;
-                PyObject *tmp2 = PyList_GET_ITEM(tmp, i);
-                Py_INCREF(tmp2);
+                PyObject *tmp2 = Py_NewRef(PyList_GET_ITEM(tmp, i));
                 if (_Py_EnterRecursiveCall(" while traversing 'Try' node")) {
                     goto failed;
                 }
@@ -7493,8 +7467,7 @@
             if (handlers == NULL) goto failed;
             for (i = 0; i < len; i++) {
                 excepthandler_ty val;
-                PyObject *tmp2 = PyList_GET_ITEM(tmp, i);
-                Py_INCREF(tmp2);
+                PyObject *tmp2 = Py_NewRef(PyList_GET_ITEM(tmp, i));
                 if (_Py_EnterRecursiveCall(" while traversing 'Try' node")) {
                     goto failed;
                 }
@@ -7530,8 +7503,7 @@
             if (orelse == NULL) goto failed;
             for (i = 0; i < len; i++) {
                 stmt_ty val;
-                PyObject *tmp2 = PyList_GET_ITEM(tmp, i);
-                Py_INCREF(tmp2);
+                PyObject *tmp2 = Py_NewRef(PyList_GET_ITEM(tmp, i));
                 if (_Py_EnterRecursiveCall(" while traversing 'Try' node")) {
                     goto failed;
                 }
@@ -7567,8 +7539,7 @@
             if (finalbody == NULL) goto failed;
             for (i = 0; i < len; i++) {
                 stmt_ty val;
-                PyObject *tmp2 = PyList_GET_ITEM(tmp, i);
-                Py_INCREF(tmp2);
+                PyObject *tmp2 = Py_NewRef(PyList_GET_ITEM(tmp, i));
                 if (_Py_EnterRecursiveCall(" while traversing 'Try' node")) {
                     goto failed;
                 }
@@ -7620,8 +7591,7 @@
             if (body == NULL) goto failed;
             for (i = 0; i < len; i++) {
                 stmt_ty val;
-                PyObject *tmp2 = PyList_GET_ITEM(tmp, i);
-                Py_INCREF(tmp2);
+                PyObject *tmp2 = Py_NewRef(PyList_GET_ITEM(tmp, i));
                 if (_Py_EnterRecursiveCall(" while traversing 'TryStar' node")) {
                     goto failed;
                 }
@@ -7657,8 +7627,7 @@
             if (handlers == NULL) goto failed;
             for (i = 0; i < len; i++) {
                 excepthandler_ty val;
-                PyObject *tmp2 = PyList_GET_ITEM(tmp, i);
-                Py_INCREF(tmp2);
+                PyObject *tmp2 = Py_NewRef(PyList_GET_ITEM(tmp, i));
                 if (_Py_EnterRecursiveCall(" while traversing 'TryStar' node")) {
                     goto failed;
                 }
@@ -7694,8 +7663,7 @@
             if (orelse == NULL) goto failed;
             for (i = 0; i < len; i++) {
                 stmt_ty val;
-                PyObject *tmp2 = PyList_GET_ITEM(tmp, i);
-                Py_INCREF(tmp2);
+                PyObject *tmp2 = Py_NewRef(PyList_GET_ITEM(tmp, i));
                 if (_Py_EnterRecursiveCall(" while traversing 'TryStar' node")) {
                     goto failed;
                 }
@@ -7731,8 +7699,7 @@
             if (finalbody == NULL) goto failed;
             for (i = 0; i < len; i++) {
                 stmt_ty val;
-                PyObject *tmp2 = PyList_GET_ITEM(tmp, i);
-                Py_INCREF(tmp2);
+                PyObject *tmp2 = Py_NewRef(PyList_GET_ITEM(tmp, i));
                 if (_Py_EnterRecursiveCall(" while traversing 'TryStar' node")) {
                     goto failed;
                 }
@@ -7829,8 +7796,7 @@
             if (names == NULL) goto failed;
             for (i = 0; i < len; i++) {
                 alias_ty val;
-                PyObject *tmp2 = PyList_GET_ITEM(tmp, i);
-                Py_INCREF(tmp2);
+                PyObject *tmp2 = Py_NewRef(PyList_GET_ITEM(tmp, i));
                 if (_Py_EnterRecursiveCall(" while traversing 'Import' node")) {
                     goto failed;
                 }
@@ -7898,8 +7864,7 @@
             if (names == NULL) goto failed;
             for (i = 0; i < len; i++) {
                 alias_ty val;
-                PyObject *tmp2 = PyList_GET_ITEM(tmp, i);
-                Py_INCREF(tmp2);
+                PyObject *tmp2 = Py_NewRef(PyList_GET_ITEM(tmp, i));
                 if (_Py_EnterRecursiveCall(" while traversing 'ImportFrom' node")) {
                     goto failed;
                 }
@@ -7965,8 +7930,7 @@
             if (names == NULL) goto failed;
             for (i = 0; i < len; i++) {
                 identifier val;
-                PyObject *tmp2 = PyList_GET_ITEM(tmp, i);
-                Py_INCREF(tmp2);
+                PyObject *tmp2 = Py_NewRef(PyList_GET_ITEM(tmp, i));
                 if (_Py_EnterRecursiveCall(" while traversing 'Global' node")) {
                     goto failed;
                 }
@@ -8015,8 +7979,7 @@
             if (names == NULL) goto failed;
             for (i = 0; i < len; i++) {
                 identifier val;
-                PyObject *tmp2 = PyList_GET_ITEM(tmp, i);
-                Py_INCREF(tmp2);
+                PyObject *tmp2 = Py_NewRef(PyList_GET_ITEM(tmp, i));
                 if (_Py_EnterRecursiveCall(" while traversing 'Nonlocal' node")) {
                     goto failed;
                 }
@@ -8241,8 +8204,7 @@
             if (values == NULL) goto failed;
             for (i = 0; i < len; i++) {
                 expr_ty val;
-                PyObject *tmp2 = PyList_GET_ITEM(tmp, i);
-                Py_INCREF(tmp2);
+                PyObject *tmp2 = Py_NewRef(PyList_GET_ITEM(tmp, i));
                 if (_Py_EnterRecursiveCall(" while traversing 'BoolOp' node")) {
                     goto failed;
                 }
@@ -8568,8 +8530,7 @@
             if (keys == NULL) goto failed;
             for (i = 0; i < len; i++) {
                 expr_ty val;
-                PyObject *tmp2 = PyList_GET_ITEM(tmp, i);
-                Py_INCREF(tmp2);
+                PyObject *tmp2 = Py_NewRef(PyList_GET_ITEM(tmp, i));
                 if (_Py_EnterRecursiveCall(" while traversing 'Dict' node")) {
                     goto failed;
                 }
@@ -8605,8 +8566,7 @@
             if (values == NULL) goto failed;
             for (i = 0; i < len; i++) {
                 expr_ty val;
-                PyObject *tmp2 = PyList_GET_ITEM(tmp, i);
-                Py_INCREF(tmp2);
+                PyObject *tmp2 = Py_NewRef(PyList_GET_ITEM(tmp, i));
                 if (_Py_EnterRecursiveCall(" while traversing 'Dict' node")) {
                     goto failed;
                 }
@@ -8655,8 +8615,7 @@
             if (elts == NULL) goto failed;
             for (i = 0; i < len; i++) {
                 expr_ty val;
-                PyObject *tmp2 = PyList_GET_ITEM(tmp, i);
-                Py_INCREF(tmp2);
+                PyObject *tmp2 = Py_NewRef(PyList_GET_ITEM(tmp, i));
                 if (_Py_EnterRecursiveCall(" while traversing 'Set' node")) {
                     goto failed;
                 }
@@ -8723,8 +8682,7 @@
             if (generators == NULL) goto failed;
             for (i = 0; i < len; i++) {
                 comprehension_ty val;
-                PyObject *tmp2 = PyList_GET_ITEM(tmp, i);
-                Py_INCREF(tmp2);
+                PyObject *tmp2 = Py_NewRef(PyList_GET_ITEM(tmp, i));
                 if (_Py_EnterRecursiveCall(" while traversing 'ListComp' node")) {
                     goto failed;
                 }
@@ -8791,8 +8749,7 @@
             if (generators == NULL) goto failed;
             for (i = 0; i < len; i++) {
                 comprehension_ty val;
-                PyObject *tmp2 = PyList_GET_ITEM(tmp, i);
-                Py_INCREF(tmp2);
+                PyObject *tmp2 = Py_NewRef(PyList_GET_ITEM(tmp, i));
                 if (_Py_EnterRecursiveCall(" while traversing 'SetComp' node")) {
                     goto failed;
                 }
@@ -8877,8 +8834,7 @@
             if (generators == NULL) goto failed;
             for (i = 0; i < len; i++) {
                 comprehension_ty val;
-                PyObject *tmp2 = PyList_GET_ITEM(tmp, i);
-                Py_INCREF(tmp2);
+                PyObject *tmp2 = Py_NewRef(PyList_GET_ITEM(tmp, i));
                 if (_Py_EnterRecursiveCall(" while traversing 'DictComp' node")) {
                     goto failed;
                 }
@@ -8945,8 +8901,7 @@
             if (generators == NULL) goto failed;
             for (i = 0; i < len; i++) {
                 comprehension_ty val;
-                PyObject *tmp2 = PyList_GET_ITEM(tmp, i);
-                Py_INCREF(tmp2);
+                PyObject *tmp2 = Py_NewRef(PyList_GET_ITEM(tmp, i));
                 if (_Py_EnterRecursiveCall(" while traversing 'GeneratorExp' node")) {
                     goto failed;
                 }
@@ -9104,8 +9059,7 @@
             if (ops == NULL) goto failed;
             for (i = 0; i < len; i++) {
                 cmpop_ty val;
-                PyObject *tmp2 = PyList_GET_ITEM(tmp, i);
-                Py_INCREF(tmp2);
+                PyObject *tmp2 = Py_NewRef(PyList_GET_ITEM(tmp, i));
                 if (_Py_EnterRecursiveCall(" while traversing 'Compare' node")) {
                     goto failed;
                 }
@@ -9141,8 +9095,7 @@
             if (comparators == NULL) goto failed;
             for (i = 0; i < len; i++) {
                 expr_ty val;
-                PyObject *tmp2 = PyList_GET_ITEM(tmp, i);
-                Py_INCREF(tmp2);
+                PyObject *tmp2 = Py_NewRef(PyList_GET_ITEM(tmp, i));
                 if (_Py_EnterRecursiveCall(" while traversing 'Compare' node")) {
                     goto failed;
                 }
@@ -9210,8 +9163,7 @@
             if (args == NULL) goto failed;
             for (i = 0; i < len; i++) {
                 expr_ty val;
-                PyObject *tmp2 = PyList_GET_ITEM(tmp, i);
-                Py_INCREF(tmp2);
+                PyObject *tmp2 = Py_NewRef(PyList_GET_ITEM(tmp, i));
                 if (_Py_EnterRecursiveCall(" while traversing 'Call' node")) {
                     goto failed;
                 }
@@ -9247,8 +9199,7 @@
             if (keywords == NULL) goto failed;
             for (i = 0; i < len; i++) {
                 keyword_ty val;
-                PyObject *tmp2 = PyList_GET_ITEM(tmp, i);
-                Py_INCREF(tmp2);
+                PyObject *tmp2 = Py_NewRef(PyList_GET_ITEM(tmp, i));
                 if (_Py_EnterRecursiveCall(" while traversing 'Call' node")) {
                     goto failed;
                 }
@@ -9364,8 +9315,7 @@
             if (values == NULL) goto failed;
             for (i = 0; i < len; i++) {
                 expr_ty val;
-                PyObject *tmp2 = PyList_GET_ITEM(tmp, i);
-                Py_INCREF(tmp2);
+                PyObject *tmp2 = Py_NewRef(PyList_GET_ITEM(tmp, i));
                 if (_Py_EnterRecursiveCall(" while traversing 'JoinedStr' node")) {
                     goto failed;
                 }
@@ -9691,8 +9641,7 @@
             if (elts == NULL) goto failed;
             for (i = 0; i < len; i++) {
                 expr_ty val;
-                PyObject *tmp2 = PyList_GET_ITEM(tmp, i);
-                Py_INCREF(tmp2);
+                PyObject *tmp2 = Py_NewRef(PyList_GET_ITEM(tmp, i));
                 if (_Py_EnterRecursiveCall(" while traversing 'List' node")) {
                     goto failed;
                 }
@@ -9759,8 +9708,7 @@
             if (elts == NULL) goto failed;
             for (i = 0; i < len; i++) {
                 expr_ty val;
-                PyObject *tmp2 = PyList_GET_ITEM(tmp, i);
-                Py_INCREF(tmp2);
+                PyObject *tmp2 = Py_NewRef(PyList_GET_ITEM(tmp, i));
                 if (_Py_EnterRecursiveCall(" while traversing 'Tuple' node")) {
                     goto failed;
                 }
@@ -10246,8 +10194,7 @@
         if (ifs == NULL) goto failed;
         for (i = 0; i < len; i++) {
             expr_ty val;
-            PyObject *tmp2 = PyList_GET_ITEM(tmp, i);
-            Py_INCREF(tmp2);
+            PyObject *tmp2 = Py_NewRef(PyList_GET_ITEM(tmp, i));
             if (_Py_EnterRecursiveCall(" while traversing 'comprehension' node")) {
                 goto failed;
             }
@@ -10436,8 +10383,7 @@
             if (body == NULL) goto failed;
             for (i = 0; i < len; i++) {
                 stmt_ty val;
-                PyObject *tmp2 = PyList_GET_ITEM(tmp, i);
-                Py_INCREF(tmp2);
+                PyObject *tmp2 = Py_NewRef(PyList_GET_ITEM(tmp, i));
                 if (_Py_EnterRecursiveCall(" while traversing 'ExceptHandler' node")) {
                     goto failed;
                 }
@@ -10498,8 +10444,7 @@
         if (posonlyargs == NULL) goto failed;
         for (i = 0; i < len; i++) {
             arg_ty val;
-            PyObject *tmp2 = PyList_GET_ITEM(tmp, i);
-            Py_INCREF(tmp2);
+            PyObject *tmp2 = Py_NewRef(PyList_GET_ITEM(tmp, i));
             if (_Py_EnterRecursiveCall(" while traversing 'arguments' node")) {
                 goto failed;
             }
@@ -10535,8 +10480,7 @@
         if (args == NULL) goto failed;
         for (i = 0; i < len; i++) {
             arg_ty val;
-            PyObject *tmp2 = PyList_GET_ITEM(tmp, i);
-            Py_INCREF(tmp2);
+            PyObject *tmp2 = Py_NewRef(PyList_GET_ITEM(tmp, i));
             if (_Py_EnterRecursiveCall(" while traversing 'arguments' node")) {
                 goto failed;
             }
@@ -10589,8 +10533,7 @@
         if (kwonlyargs == NULL) goto failed;
         for (i = 0; i < len; i++) {
             arg_ty val;
-            PyObject *tmp2 = PyList_GET_ITEM(tmp, i);
-            Py_INCREF(tmp2);
+            PyObject *tmp2 = Py_NewRef(PyList_GET_ITEM(tmp, i));
             if (_Py_EnterRecursiveCall(" while traversing 'arguments' node")) {
                 goto failed;
             }
@@ -10626,8 +10569,7 @@
         if (kw_defaults == NULL) goto failed;
         for (i = 0; i < len; i++) {
             expr_ty val;
-            PyObject *tmp2 = PyList_GET_ITEM(tmp, i);
-            Py_INCREF(tmp2);
+            PyObject *tmp2 = Py_NewRef(PyList_GET_ITEM(tmp, i));
             if (_Py_EnterRecursiveCall(" while traversing 'arguments' node")) {
                 goto failed;
             }
@@ -10680,8 +10622,7 @@
         if (defaults == NULL) goto failed;
         for (i = 0; i < len; i++) {
             expr_ty val;
-            PyObject *tmp2 = PyList_GET_ITEM(tmp, i);
-            Py_INCREF(tmp2);
+            PyObject *tmp2 = Py_NewRef(PyList_GET_ITEM(tmp, i));
             if (_Py_EnterRecursiveCall(" while traversing 'arguments' node")) {
                 goto failed;
             }
@@ -11200,8 +11141,7 @@
         if (body == NULL) goto failed;
         for (i = 0; i < len; i++) {
             stmt_ty val;
-            PyObject *tmp2 = PyList_GET_ITEM(tmp, i);
-            Py_INCREF(tmp2);
+            PyObject *tmp2 = Py_NewRef(PyList_GET_ITEM(tmp, i));
             if (_Py_EnterRecursiveCall(" while traversing 'match_case' node")) {
                 goto failed;
             }
@@ -11397,8 +11337,7 @@
             if (patterns == NULL) goto failed;
             for (i = 0; i < len; i++) {
                 pattern_ty val;
-                PyObject *tmp2 = PyList_GET_ITEM(tmp, i);
-                Py_INCREF(tmp2);
+                PyObject *tmp2 = Py_NewRef(PyList_GET_ITEM(tmp, i));
                 if (_Py_EnterRecursiveCall(" while traversing 'MatchSequence' node")) {
                     goto failed;
                 }
@@ -11449,8 +11388,7 @@
             if (keys == NULL) goto failed;
             for (i = 0; i < len; i++) {
                 expr_ty val;
-                PyObject *tmp2 = PyList_GET_ITEM(tmp, i);
-                Py_INCREF(tmp2);
+                PyObject *tmp2 = Py_NewRef(PyList_GET_ITEM(tmp, i));
                 if (_Py_EnterRecursiveCall(" while traversing 'MatchMapping' node")) {
                     goto failed;
                 }
@@ -11486,8 +11424,7 @@
             if (patterns == NULL) goto failed;
             for (i = 0; i < len; i++) {
                 pattern_ty val;
-                PyObject *tmp2 = PyList_GET_ITEM(tmp, i);
-                Py_INCREF(tmp2);
+                PyObject *tmp2 = Py_NewRef(PyList_GET_ITEM(tmp, i));
                 if (_Py_EnterRecursiveCall(" while traversing 'MatchMapping' node")) {
                     goto failed;
                 }
@@ -11573,8 +11510,7 @@
             if (patterns == NULL) goto failed;
             for (i = 0; i < len; i++) {
                 pattern_ty val;
-                PyObject *tmp2 = PyList_GET_ITEM(tmp, i);
-                Py_INCREF(tmp2);
+                PyObject *tmp2 = Py_NewRef(PyList_GET_ITEM(tmp, i));
                 if (_Py_EnterRecursiveCall(" while traversing 'MatchClass' node")) {
                     goto failed;
                 }
@@ -11610,8 +11546,7 @@
             if (kwd_attrs == NULL) goto failed;
             for (i = 0; i < len; i++) {
                 identifier val;
-                PyObject *tmp2 = PyList_GET_ITEM(tmp, i);
-                Py_INCREF(tmp2);
+                PyObject *tmp2 = Py_NewRef(PyList_GET_ITEM(tmp, i));
                 if (_Py_EnterRecursiveCall(" while traversing 'MatchClass' node")) {
                     goto failed;
                 }
@@ -11647,8 +11582,7 @@
             if (kwd_patterns == NULL) goto failed;
             for (i = 0; i < len; i++) {
                 pattern_ty val;
-                PyObject *tmp2 = PyList_GET_ITEM(tmp, i);
-                Py_INCREF(tmp2);
+                PyObject *tmp2 = Py_NewRef(PyList_GET_ITEM(tmp, i));
                 if (_Py_EnterRecursiveCall(" while traversing 'MatchClass' node")) {
                     goto failed;
                 }
@@ -11776,8 +11710,7 @@
             if (patterns == NULL) goto failed;
             for (i = 0; i < len; i++) {
                 pattern_ty val;
-                PyObject *tmp2 = PyList_GET_ITEM(tmp, i);
-                Py_INCREF(tmp2);
+                PyObject *tmp2 = Py_NewRef(PyList_GET_ITEM(tmp, i));
                 if (_Py_EnterRecursiveCall(" while traversing 'MatchOr' node")) {
                     goto failed;
                 }