private ResultTreeNodeModel ConvertToTreeNodeModel(object obj, PropertyData propertyData)
        {
            if (propertyData.GetUnderLyingType().IsSimpleType() || obj == null)
            {
                return(new ResultTreeNodeModel
                {
                    Name = propertyData.Name,
                    Value = obj == null ? "null" : obj.ToString(),
                    Type = propertyData.FriendlyTypeName
                });
            }

            if (obj is IEnumerable enumerable && !(enumerable is BsonDocument))
            {
                int count = enumerable.Cast <object>().Count();

                var rowDoc = new ResultTreeNodeModel
                {
                    Name  = propertyData.Name + "[" + count + "]",
                    Value = null,
                    Type  = propertyData.FriendlyTypeName
                };
                var innerQueryResult = QueryResult.ToQueryResult(obj);
                rowDoc.Children.AddRange(ConvertToTreeNodeModels(innerQueryResult));
                return(rowDoc);
            }