code: def _annotation_handler(ion_type, length, ctx):
      
      _, self = yield
      self_handler = _create_delegate_handler(self)
  
      if ctx.annotations is not None:
          raise IonException('Annotation cannot be nested in annotations')
  
      # We have to replace our context for annotations specifically to encapsulate the limit
      ctx = ctx.derive_container_context(length, add_depth=0)
      # Immediately read the length field and the annotations
      (ann_length, _), _ = yield ctx.immediate_transition(
          _var_uint_field_handler(self_handler, ctx)
      )
  
      if ann_length < 1:
          raise IonException('Invalid annotation length subfield; annotation wrapper must have at least one annotation.')
  
      # Read/parse the annotations.
      yield ctx.read_data_transition(ann_length, self)
      ann_data = ctx.queue.read(ann_length)
      annotations = tuple(_parse_sid_iter(ann_data))
  
      if ctx.limit - ctx.queue.position < 1:
          # There is no space left for the 'value' subfield, which is required.
          raise IonException('Incorrect annotation wrapper length.')
  
      # Go parse the start of the value but go back to the real parent container.
      yield ctx.immediate_transition(
          _start_type_handler(ctx.field_name, ctx.whence, ctx, annotations=annotations)
      )
docs: Handles annotations.  ``ion_type`` is ignored.