docs: def event_transition(self, event_cls, event_type,
                           ion_type=None, value=None, annotations=None, depth=None, whence=None):
          """Returns an ion event event_transition that yields to another co-routine.
  
          If ``annotations`` is not specified, then the ``annotations`` are the annotations of this
          context.
          If ``depth`` is not specified, then the ``depth`` is depth of this context.
          If ``whence`` is not specified, then ``whence`` is the whence of this context.
          """
          if annotations is None:
              annotations = self.annotations
          if annotations is None:
              annotations = ()
          if not (event_type is IonEventType.CONTAINER_START) and \
                  annotations and (self.limit - self.queue.position) != 0:
              # This value is contained in an annotation wrapper, from which its limit was inherited. It must have
              # reached, but not surpassed, that limit.
              raise IonException('Incorrect annotation wrapper length.')
  
          if depth is None:
              depth = self.depth
  
          if whence is None:
              whence = self.whence
  
          return Transition(
              event_cls(event_type, ion_type, value, self.field_name, annotations, depth),
              whence
          )