public static BsonWriter Create(
     BsonBuffer buffer,
     BsonBinaryWriterSettings settings
 )
 {
     return new BsonBinaryWriter(null, buffer, settings);
 }
 public static BsonWriter Create(
     Stream stream,
     BsonBinaryWriterSettings settings
 )
 {
     return new BsonBinaryWriter(stream, null, BsonBinaryWriterSettings.Defaults);
 }
 public BsonBinaryWriter(
     Stream stream,
     BsonBuffer buffer,
     BsonBinaryWriterSettings settings
 ) {
     this.stream = stream;
     this.buffer = buffer ?? new BsonBuffer();
     this.disposeBuffer = buffer == null; // only call Dispose if we allocated the buffer
     this.settings = settings;
     context = new BsonBinaryWriterContext(null, BsonWriteState.Initial);
 }