docs: def raw_reader(queue=None):
      """Returns a raw binary reader co-routine.
  
      Args:
          queue (Optional[BufferQueue]): The buffer read data for parsing, if ``None`` a
              new one will be created.
  
      Yields:
          IonEvent: parse events, will have an event type of ``INCOMPLETE`` if data is needed
              in the middle of a value or ``STREAM_END`` if there is no data **and** the parser
              is not in the middle of parsing a value.
  
              Receives :class:`DataEvent`, with :class:`ReadEventType` of ``NEXT`` or ``SKIP``
              to iterate over values, or ``DATA`` if the last event was a ``INCOMPLETE``
              or ``STREAM_END`` event type.
  
              ``SKIP`` is only allowed within a container. A reader is *in* a container
              when the ``CONTAINER_START`` event type is encountered and *not in* a container
              when the ``CONTAINER_END`` event type for that container is encountered.
      """
      if queue is None:
          queue = BufferQueue()
      ctx = _HandlerContext(
          position=0,
          limit=None,
          queue=queue,
          field_name=None,
          annotations=None,
          depth=0,
          whence=None
      )
  
      return reader_trampoline(_container_handler(None, ctx))