/// <summary>
        /// 指定された条件式要素自身とその子要素を取得します。
        /// </summary>
        /// <param name="element">条件式要素</param>
        /// <returns>条件式要素のコレクション</returns>
        public static IEnumerable <PredicateElement> ChildrenAndSelf(this PredicateElement element)
        {
            if (element == null)
            {
                throw new ArgumentNullException(nameof(element));
            }

            yield return(element);

            foreach (var x in element.Children())
            {
                yield return(x);
            }
        }
        /// <summary>
        /// 指定された条件式要素の子孫要素を取得します。
        /// </summary>
        /// <param name="element">条件式要素</param>
        /// <returns>条件式要素のコレクション</returns>
        public static IEnumerable <PredicateElement> Descendants(this PredicateElement element)
        {
            if (element == null)
            {
                throw new ArgumentNullException(nameof(element));
            }

            foreach (var child in element.Children())
            {
                yield return(child);

                foreach (var grandChild in child.Descendants())
                {
                    yield return(grandChild);
                }
            }
        }