code: def process_tag(self):
      tag = self.event.tag
      if isinstance(self.event, ScalarEvent):
          if self.style is None:
              self.style = self.choose_scalar_style()
          if (not self.canonical or tag is None) and (
              (self.style == "" and self.event.implicit[0])
              or (self.style != "" and self.event.implicit[1])
          ):
              self.prepared_tag = None
              return
          if self.event.implicit[0] and tag is None:
              tag = "!"
              self.prepared_tag = None
      else:
          if (
              not self.canonical or tag is None
          ) and self.event.implicit:
              self.prepared_tag = None
              return
      if tag is None:
          raise EmitterError("tag is not specified")
      if self.prepared_tag is None:
          self.prepared_tag = self.prepare_tag(tag)
      if self.prepared_tag:
          self.write_indicator(self.prepared_tag, True)
      self.prepared_tag = None
  
imports: from .error import YAMLError
  from .events import *
label_desc: Use image node_id 37 for calling the Emitter obj's underlying member method code with example usage: obj.process_tag() without return types