private List <T> Assert <T>(IMongoQueryable <T> queryable, int resultCount, params string[] expectedStages)
        {
            var stages = ((AggregateQueryableExecutionModel <T>)queryable.BuildExecutionModel()).Stages;

            CollectionAssert.AreEqual(expectedStages.Select(x => BsonDocument.Parse(x)).ToList(), stages);

            // async
            var results = queryable.ToListAsync().GetAwaiter().GetResult();

            results.Count.Should().Be(resultCount);

            // sync
            results = queryable.ToList();
            results.Count.Should().Be(resultCount);

            return(results);
        }