code: def test_with_stmt_with_paren(self) -> None:
      grammar_source = """
          start[mod_ty]: a=[statements] ENDMARKER { _PyAST_Module(a, NULL, p->arena) }
          statements[asdl_stmt_seq*]: a=statement+ { (asdl_stmt_seq*)_PyPegen_seq_flatten(p, a) }
          statement[asdl_stmt_seq*]: a=compound_stmt { (asdl_stmt_seq*)_PyPegen_singleton_seq(p, a) }
          compound_stmt[stmt_ty]: with_stmt
          with_stmt[stmt_ty]: (
              a='with' '(' b[asdl_withitem_seq*]=','.with_item+ ')' ':' c=block {
                  _PyAST_With(b, (asdl_stmt_seq*) _PyPegen_singleton_seq(p, c), NULL, EXTRA) }
          )
          with_item[withitem_ty]: (
              e=NAME o=['as' t=NAME { t }] { _PyAST_withitem(e, _PyPegen_set_expr_context(p, o, Store), p->arena) }
          )
          block[stmt_ty]: a=pass_stmt NEWLINE { a } | NEWLINE INDENT a=pass_stmt DEDENT { a }
          pass_stmt[stmt_ty]: a='pass' { _PyAST_Pass(EXTRA) }
          """
      test_source = """
          stmt = "with (\\n    a as b,\\n    c as d\\n): pass"
          the_ast = parse.parse_string(stmt, mode=1)
          self.assertTrue(ast_dump(the_ast).startswith(
              "Module(body=[With(items=[withitem(context_expr=Name(id='a', ctx=Load()), optional_vars=Name(id='b', ctx=Store())), "
              "withitem(context_expr=Name(id='c', ctx=Load()), optional_vars=Name(id='d', ctx=Store()))]"
          ))
          """
      self.run_test(grammar_source, test_source)
  
imports: import contextlib
  import subprocess
  import sysconfig
  import textwrap
  import unittest
  import os
  import shutil
  import tempfile
  from pathlib import Path
  from test import test_tools
  from test import support
  from test.support import os_helper, import_helper
  from test.support.script_helper import assert_python_ok
label_desc: Use image node_id 20 for calling the TestCParser obj's underlying member method code with example usage: obj.test_with_stmt_with_paren() without return types