code: def test_gather(self) -> None:
      grammar = """
          start: ','.thing+ NEWLINE
          thing: NUMBER
          """
      rules = parse_string(grammar, GrammarParser).rules
      self.assertEqual(str(rules["start"]), "start: ','.thing+ NEWLINE")
      self.assertTrue(
          repr(rules["start"]).startswith(
              "Rule('start', None, Rhs([Alt([NamedItem(None, Gather(StringLeaf(\"','\"), NameLeaf('thing'"
          )
      )
      self.assertEqual(str(rules["thing"]), "thing: NUMBER")
      parser_class = make_parser(grammar)
      node = parse_string("42\n", parser_class)
      node = parse_string("1, 2\n", parser_class)
      self.assertEqual(
          node,
          [
              [
                  TokenInfo(
                      NUMBER,
                      string="1",
                      start=(1, 0),
                      end=(1, 1),
                      line="1, 2\n",
                  ),
                  TokenInfo(
                      NUMBER,
                      string="2",
                      start=(1, 3),
                      end=(1, 4),
                      line="1, 2\n",
                  ),
              ],
              TokenInfo(
                  NEWLINE,
                  string="\n",
                  start=(1, 4),
                  end=(1, 5),
                  line="1, 2\n",
              ),
          ],
      )
  
imports: import ast
  import difflib
  import io
  import textwrap
  import unittest
  from test import test_tools
  from typing import Dict, Any
  from tokenize import TokenInfo, NAME, NEWLINE, NUMBER, OP
label_desc: Use image node_id 5 for calling the TestPegen obj's underlying member method code with example usage: obj.test_gather() without return types