/// <summary>
        /// Initializes a new instance of the <see cref="DocumentQueryCriteria" /> class.
        /// </summary>
        /// <param name="property">The <see cref="DocumentQueryProperty" />.</param>
        /// <param name="queryOperator">The <see cref="QueryOperator" />.</param>
        private DocumentQueryCriteria(DocumentQueryProperty property, QueryOperator queryOperator)
        {
            if (!property.Operators.Contains(queryOperator))
            {
                throw new ArgumentException($"{queryOperator} is not a valid operator for query property {property.Name}.");
            }

            _propertyName  = property.Name;
            _queryOperator = queryOperator;
        }
        /// <summary>
        /// Initializes a new instance of the <see cref="DocumentQueryCriteria" /> class.
        /// </summary>
        /// <param name="property">The <see cref="DocumentQueryProperty" />.</param>
        /// <param name="queryOperator">The <see cref="QueryOperator" />.</param>
        /// <param name="values">The criteria query values.</param>
        public DocumentQueryCriteria(DocumentQueryProperty property, QueryOperator queryOperator, IEnumerable <object> values)
            : this(property, queryOperator)
        {
            if (values == null)
            {
                throw new ArgumentNullException(nameof(values));
            }

            foreach (object value in values)
            {
                _values.Add(value);
            }
        }
 /// <summary>
 /// Initializes a new instance of the <see cref="DocumentQueryCriteria" /> class.
 /// </summary>
 /// <param name="property">The <see cref="DocumentQueryProperty" />.</param>
 /// <param name="queryOperator">The <see cref="QueryOperator" />.</param>
 /// <param name="value">The criteria query value.</param>
 public DocumentQueryCriteria(DocumentQueryProperty property, QueryOperator queryOperator, object value)
     : this(property, queryOperator)
 {
     _values.Add(value);
 }