/// <summary>
        /// Performs a "union" of the two SerializableLists, where all the elements
        /// in both SerializableLists are present.  That is, the element is included if it is in either <c>a</c> or <c>b</c>.
        /// Neither this SerializableList nor the input SerializableList are modified during the operation.  The return value
        /// is a <c>Clone()</c> of this SerializableList with the extra elements added in.
        /// </summary>
        /// <param name="a">A collection of elements.</param>
        /// <returns>A new <c>SerializableList</c> containing the union of this <c>SerializableList</c> with the specified collection.
        /// Neither of the input objects is modified by the union.</returns>
        public virtual SerializableList <T> Union(SerializableList <T> a)
        {
            SerializableList <T> resultSerializableList = (SerializableList <T>) this.Clone();

            if (a != null)
            {
                resultSerializableList.AddAll(a);
            }
            return(resultSerializableList);
        }