code: def handle_alt_normal(
      self, node: Alt, is_gather: bool, rulename: Optional[str]
  ) -> None:
      self.join_conditions(keyword="if", node=node)
      self.print("{")
      # We have parsed successfully all the conditions for the option.
      with self.indent():
          node_str = str(node).replace('"', '\\"')
          self.print(
              f'D(fprintf(stderr, "%*c+ {rulename}[%d-%d]: %s succeeded!\\n", p->level, \' \', _mark, p->mark, "{node_str}"));'
          )
          # Prepare to emit the rule action and do so
          if node.action and "EXTRA" in node.action:
              self._set_up_token_end_metadata_extraction()
          if self.skip_actions:
              self.emit_dummy_action()
          elif node.action:
              self.emit_action(node)
          else:
              self.emit_default_action(is_gather, node)
  
          # As the current option has parsed correctly, do not continue with the rest.
          self.print(f"goto done;")
      self.print("}")
  
imports: import ast
  import os.path
  import re
  from dataclasses import dataclass, field
  from enum import Enum
  from typing import IO, Any, Dict, List, Optional, Set, Text, Tuple
  from pegen import grammar
  from pegen.grammar import Alt, Cut, Forced, Gather, GrammarVisitor, Group, Leaf, Lookahead, NamedItem, NameLeaf, NegativeLookahead, Opt, PositiveLookahead, Repeat0, Repeat1, Rhs, Rule, StringLeaf
  from pegen.parser_generator import ParserGenerator
label_desc: Use image node_id 28 for calling the CParserGenerator obj's underlying member method code with example usage: obj.handle_alt_normal(node, is_gather, rulename) without return types