code: def dump(self, level=0):
      seqtypes = (tuple, list)
      for op, av in self.data:
          print(level * "  " + str(op), end="")
          if op is IN:
              # member sublanguage
              print()
              for op, a in av:
                  print((level + 1) * "  " + str(op), a)
          elif op is BRANCH:
              print()
              for i, a in enumerate(av[1]):
                  if i:
                      print(level * "  " + "OR")
                  a.dump(level + 1)
          elif op is GROUPREF_EXISTS:
              condgroup, item_yes, item_no = av
              print("", condgroup)
              item_yes.dump(level + 1)
              if item_no:
                  print(level * "  " + "ELSE")
                  item_no.dump(level + 1)
          elif isinstance(av, SubPattern):
              print()
              av.dump(level + 1)
          elif isinstance(av, seqtypes):
              nl = False
              for a in av:
                  if isinstance(a, SubPattern):
                      if not nl:
                          print()
                      a.dump(level + 1)
                      nl = True
                  else:
                      if not nl:
                          print(" ", end="")
                      print(a, end="")
                      nl = False
              if not nl:
                  print()
          else:
              print("", av)
  
imports: from ._constants import *
label_desc: Use image node_id 2 for calling the SubPattern obj's underlying member method code with example usage: obj.dump(level) without return types