docs: def _container_start_handler(ion_type, length, ctx):
      """Handles container delegation."""
      _, self = yield
  
      container_ctx = ctx.derive_container_context(length)
      if ctx.annotations and ctx.limit != container_ctx.limit:
          # 'ctx' is the annotation wrapper context. `container_ctx` represents the wrapper's 'value' subfield. Their
          # limits must match.
          raise IonException('Incorrect annotation wrapper length.')
      delegate = _container_handler(ion_type, container_ctx)
  
      # We start the container, and transition to the new container processor.
      yield ctx.event_transition(
          IonEvent, IonEventType.CONTAINER_START, ion_type, value=None, whence=delegate
      )