docs: def _elements_to_dict(data, position, obj_end, opts, subdocument=None):
      """Decode a BSON document."""
      if type(opts.document_class) == tuple:
          result = opts.document_class[0](**opts.document_class[1]) if not subdocument else dict()
      else:
          result = opts.document_class() if not subdocument else dict()
      end = obj_end - 1
      while position < end:
          (key, value, position) = _element_to_dict(data, position, obj_end, opts)
          result[key] = value
      return result