docs: def decode_all(data, codec_options=DEFAULT_CODEC_OPTIONS):
      """Decode BSON data to multiple documents.
  
      `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
         Removed `compile_re` option: PyMongo now always represents BSON regular
         expressions as :class:`~bson.regex.Regex` objects. Use
         :meth:`~bson.regex.Regex.try_compile` to attempt to convert from a
         BSON regular expression to a Python regular expression object.
  
         Replaced `as_class`, `tz_aware`, and `uuid_subtype` options with
         `codec_options`.
  
      .. versionchanged:: 2.7
         Added `compile_re` option. If set to False, PyMongo represented BSON
         regular expressions as :class:`~bson.regex.Regex` objects instead of
         attempting to compile BSON regular expressions as Python native
         regular expressions, thus preventing errors for some incompatible
         patterns, see `PYTHON-500`_.
  
      .. _PYTHON-500: https://jira.mongodb.org/browse/PYTHON-500
      """
      if not isinstance(codec_options, CodecOptions):
          raise _CODEC_OPTIONS_TYPE_ERROR
  
      docs = []
      position = 0
      end = len(data) - 1
      use_raw = _raw_document_class(codec_options.document_class)
      try:
          while position < end:
              obj_size = _UNPACK_INT(data[position:position + 4])[0]
              if len(data) - position < obj_size:
                  raise InvalidBSON("invalid object size")
              obj_end = position + obj_size - 1
              if data[obj_end:position + obj_size] != b"\x00":
                  raise InvalidBSON("bad eoo")
              if use_raw:
                  docs.append(
                      codec_options.document_class(
                          data[position:obj_end + 1], codec_options))
              else:
                  docs.append(_elements_to_dict(data,
                                                position + 4,
                                                obj_end,
                                                codec_options))
              position += obj_size
          return docs
      except InvalidBSON:
          raise
      except Exception:
          # Change exception type to InvalidBSON but preserve traceback.
          _, exc_value, exc_tb = sys.exc_info()
          reraise(InvalidBSON, exc_value, exc_tb)