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