code: def visit_Rule(self, item: Rule) -> Set[str]:
      if item.name in self.in_process:
          return set()
      elif item.name not in self.first_sets:
          self.in_process.add(item.name)
          terminals = self.visit(item.rhs)
          if item in self.nullables:
              terminals.add("")
          self.first_sets[item.name] = terminals
          self.in_process.remove(item.name)
      return self.first_sets[item.name]
  
imports: import argparse
  import pprint
  import sys
  from typing import Dict, Set
  from pegen.build import build_parser
  from pegen.grammar import Alt, Cut, Gather, GrammarVisitor, Group, Lookahead, NamedItem, NameLeaf, NegativeLookahead, Opt, Repeat0, Repeat1, Rhs, Rule, StringLeaf
  from pegen.parser_generator import compute_nullables
label_desc: Use image node_id 16 for calling the FirstSetCalculator obj's underlying member method code with example usage: obj.visit_Rule(item) and returns: self, set