docs: def decode_iter(data, codec_options=DEFAULT_CODEC_OPTIONS):
      """Decode BSON data to multiple documents as a generator.
  
      Works similarly to the decode_all function, but yields one document at a
      time.
  
      `data` must be a string of concatenated, valid, BSON-encoded
      documents.
  
      :Parameters:
        - `data`: BSON data
        - `codec_options` (optional): An instance of
          :class:`~bson.codec_options.CodecOptions`.
  
      .. versionchanged:: 3.0
         Replaced `as_class`, `tz_aware`, and `uuid_subtype` options with
         `codec_options`.
  
      .. versionadded:: 2.8
      """
      if not isinstance(codec_options, CodecOptions):
          raise _CODEC_OPTIONS_TYPE_ERROR
  
      position = 0
      end = len(data) - 1
      while position < end:
          obj_size = _UNPACK_INT(data[position:position + 4])[0]
          elements = data[position:position + obj_size]
          position += obj_size
  
          yield _bson_to_dict(elements, codec_options)