/// <summary>
        /// Intersection operation
        /// </summary>
        /// <param name="otherSet"></param>
        /// <returns></returns>
        public SetUniversal <T> Intersection(SetUniversal <T> otherSet)
        {
            //return new SetUniversal<T>(container.Intersect(otherSet));

            var result = new SetUniversal <T>();
            SetUniversal <T> big;
            SetUniversal <T> small;

            if (Count > otherSet.Count)
            {
                big   = this;
                small = otherSet;
            }
            else
            {
                big   = otherSet;
                small = this;
            }

            foreach (var item1 in small.container)
            {
                foreach (var item2 in big.container)
                {
                    if (item1.Equals(item2))
                    {
                        result.Add(item1);
                    }
                    break;
                }
            }

            return(result);
        }
        /// <summary>
        /// Union operation
        /// </summary>
        /// <param name="otherSet"></param>
        /// <returns></returns>
        public SetUniversal <T> Union(SetUniversal <T> otherSet)
        {
            //return new SetUniversal<T>(container.Union(otherSet));

            var result = new SetUniversal <T>();

            foreach (var item in container)
            {
                result.Add(item);
            }

            foreach (var item in otherSet.container)
            {
                result.Add(item);
            }

            return(result);
        }