// public static methods
        public static KnownSerializersRegistry FindKnownSerializers(Expression root, IBsonDocumentSerializer rootSerializer)
        {
            var visitor = new KnownSerializerFinder(root, rootSerializer);

            visitor.Visit(root);
            return(visitor._registry);
        }
        /// <summary>
        /// Initializes a new instance of the <see cref="BsonDocumentBackedClass"/> class.
        /// </summary>
        /// <param name="backingDocument">The backing document.</param>
        /// <param name="serializer">The serializer.</param>
        protected BsonDocumentBackedClass(BsonDocument backingDocument, IBsonDocumentSerializer serializer)
        {
            if (backingDocument == null)
            {
                throw new ArgumentNullException("backingDocument");
            }
            if (serializer == null)
            {
                throw new ArgumentNullException("serializer");
            }

            _backingDocument = backingDocument;
            _serializer      = serializer;
        }
 public TestDocument(BsonDocument backingDocument, IBsonDocumentSerializer serializer)
     : base(backingDocument, serializer)
 {
 }
 // constructors
 /// <summary>
 /// Initializes a new instance of the <see cref="BsonDocumentBackedClass"/> class.
 /// </summary>
 /// <param name="serializer">The serializer.</param>
 protected BsonDocumentBackedClass(IBsonDocumentSerializer serializer)
     : this(new BsonDocument(), serializer)
 {
 }
        public MongoDocument(BsonDocument backingDocument, IBsonDocumentSerializer serializer)
            : base(backingDocument, serializer)
        {

        }