private void CopyType1Section(BsonStream inputStream, BsonStream outputStream)
        {
            var payloadType = (PayloadType)inputStream.ReadByte();

            if (payloadType != PayloadType.Type1)
            {
                throw new FormatException("Expected subsequent sections to be of type 1.");
            }

            var sectionStartPosition = inputStream.Position;
            var sectionSize          = inputStream.ReadInt32();
            var sectionEndPosition   = sectionStartPosition + sectionSize;
            var identifier           = inputStream.ReadCString(Utf8Encodings.Lenient);

            outputStream.WriteByte((byte)BsonType.Array);
            outputStream.WriteCString(identifier);
            var arrayStartPosition = outputStream.Position;

            outputStream.WriteInt32(0); // array length will be backpatched
            var index = 0;

            while (inputStream.Position < sectionEndPosition)
            {
                outputStream.WriteByte((byte)BsonType.Document);
                outputStream.WriteCString(index.ToString());
                CopyBsonDocument(inputStream, outputStream);
                index++;
            }
            outputStream.WriteByte(0);
            outputStream.BackpatchSize(arrayStartPosition);
        }
            private long FindType0SectionPosition()
            {
                _stream.Position = _messageStartPosition;
                var messageLength = _stream.ReadInt32();

                _stream.Position = _messageStartPosition + 20;
                var messageEndPosition = _messageStartPosition + messageLength;

                while (_stream.Position < messageEndPosition)
                {
                    var sectionPosition = _stream.Position;

                    var payloadType = (PayloadType)_stream.ReadByte();
                    if (payloadType == PayloadType.Type0)
                    {
                        return(sectionPosition);
                    }
                    else if (payloadType != PayloadType.Type1)
                    {
                        throw new FormatException($"Invalid payload type: {payloadType}.");
                    }

                    var sectionSize = _stream.ReadInt32();
                    _stream.Position = sectionPosition + 1 + sectionSize;
                }

                throw new InvalidOperationException("No type 0 section found.");
            }
        private void CopyType0Section(BsonStream inputStream, BsonStream outputStream)
        {
            var payloadType = (PayloadType)inputStream.ReadByte();

            if (payloadType != PayloadType.Type0)
            {
                throw new FormatException("Expected first section to be of type 0.");
            }

            CopyBsonDocument(inputStream, outputStream);
        }