public override void Serialize(
BsonWriter bsonWriter,
Type nominalType,
object value,
IBsonSerializationOptions options)
{
if (value == null)
{
bsonWriter.WriteNull();
}
else
{
var lazyBsonArray = (LazyBsonArray)value;
var slice = lazyBsonArray.Slice;
if (slice == null)
{
BsonArraySerializer.Instance.Serialize(bsonWriter, typeof(BsonArray), lazyBsonArray, options);
}
else
{
using (var clonedSlice = slice.GetSlice(0, slice.Length))
{
bsonWriter.WriteRawBsonArray(clonedSlice);
}
}
}
}
}