using System; using System.Diagnostics; using SCG = System.Collections.Generic; public abstract class EnumerableBase : SCG.IEnumerable { public abstract SCG.IEnumerator GetEnumerator (); System.Collections.IEnumerator System.Collections.IEnumerable.GetEnumerator () { return GetEnumerator (); } } public abstract class CollectionValueBase : EnumerableBase { protected virtual void raiseItemsAdded (T item, int count) { } protected class RaiseForRemoveAllHandler { CircularQueue wasRemoved; } public override abstract SCG.IEnumerator GetEnumerator(); } public class CircularQueue : EnumerableBase { public override SCG.IEnumerator GetEnumerator() { yield break; } public virtual void Enqueue (T item) { } } public class HashSet : CollectionValueBase { private bool searchoradd (ref T item, bool add, bool update, bool raise) { return true; } public virtual void RemoveAll(SCG.IEnumerable items) where U : T { RaiseForRemoveAllHandler raiseHandler = new RaiseForRemoveAllHandler (); } public virtual void AddAll (SCG.IEnumerable items) where U : T { CircularQueue wasAdded = new CircularQueue (); foreach (T item in wasAdded) raiseItemsAdded (item, 1); } public override SCG.IEnumerator GetEnumerator() { yield break; } } class X { public static void Main () { } }