/// <summary> /// Performs an "intersection" of the two SerializableLists, where only the elements /// that are present in both SerializableLists remain. That is, the element is included if it exists in /// both SerializableLists. The <c>Intersect()</c> operation does not modify the input SerializableLists. It returns /// a <c>Clone()</c> of this SerializableList with the appropriate elements removed. /// </summary> /// <param name="a">A SerializableList of elements.</param> /// <returns>The intersection of this SerializableList with <c>a</c>.</returns> public virtual SerializableList <T> Intersect(SerializableList <T> a) { SerializableList <T> resultSerializableList = (SerializableList <T>) this.Clone(); if (a != null) { resultSerializableList.RetainAll(a); } else { resultSerializableList.Clear(); } return(resultSerializableList); }