/// <summary>
        /// Realiza a união com o conjunto informado.
        /// </summary>
        /// <param name="ses"></param>
        /// <returns></returns>
        public StringExpressionSet Union(StringExpressionSet ses)
        {
            if ((ses == null) || ses.IsEmpty())
            {
                return(this.Copy());
            }
            if (this.IsEmpty())
            {
                return(ses.Copy());
            }
            this.CheckList();
            ses.CheckList();
            StringExpressionSet set  = (ses._list.Count > _list.Count) ? ses : this;
            StringExpressionSet set2 = (ses._list.Count <= _list.Count) ? ses : this;
            StringExpressionSet set3 = set.Copy();

            set3.Reduce();
            for (int i = 0; i < set2._list.Count; i++)
            {
                set3.AddSingleExpressionNoDuplicates(set2._list[i]);
            }
            set3.GenerateString();
            return(set3);
        }