code: def test_nasty_left_recursion(self) -> None:
      # TODO: Validate this
      grammar = """
          start: target '='
          target: maybe '+' | NAME
          maybe: maybe '-' | target
          """
      self.assertEqual(
          self.calculate_first_sets(grammar),
          {"maybe": set(), "target": {"NAME"}, "start": {"NAME"}},
      )
  
imports: import unittest
  from test import test_tools
  from typing import Dict, Set
label_desc: Use image node_id 19 for calling the TestFirstSets obj's underlying member method code with example usage: obj.test_nasty_left_recursion() without return types