public override void Serialize(
BsonWriter bsonWriter,
Type nominalType,
object value,
IBsonSerializationOptions options)
{
if (value == null)
{
bsonWriter.WriteNull();
}
else
{
var lazyBsonDocument = (LazyBsonDocument)value;
var slice = lazyBsonDocument.Slice;
if (slice == null)
{
BsonDocumentSerializer.Instance.Serialize(bsonWriter, typeof(BsonDocument), lazyBsonDocument, options);
}
else
{
using (var clonedSlice = slice.GetSlice(0, slice.Length))
{
bsonWriter.WriteRawBsonDocument(clonedSlice);
}
}
}
}
}