/// <summary>
        /// Set a timeout for the underlying ADO.NET query.
        /// </summary>
        /// <param name="timeout">The timeout in seconds.</param>
        /// <param name="multiCriteria">The <see cref="IMultiCriteria" /> on which to set the timeout.</param>
        /// <returns><paramref name="multiCriteria" /> (for method chaining).</returns>
        public static IMultiCriteria SetTimeout(this IMultiCriteria multiCriteria, int timeout)
        {
            if (multiCriteria == null)
            {
                throw new ArgumentNullException(nameof(multiCriteria));
            }

            if (multiCriteria is MultiCriteriaImpl impl)
            {
                return(impl.SetTimeout(timeout));
            }

            throw new NotSupportedException(multiCriteria.GetType() + " does not support SetTimeout");
        }