// Compiler options: /t:library
using System;
using SCG = System.Collections.Generic;

namespace C5
{
	public abstract class EnumerableBase<T> : SCG.IEnumerable<T>
	{
		public abstract SCG.IEnumerator<T> GetEnumerator ();

		System.Collections.IEnumerator System.Collections.IEnumerable.GetEnumerator()
		{
			return GetEnumerator();
		}
	}

	public class ArrayBase<T> : EnumerableBase<T>
	{
		public override SCG.IEnumerator<T> GetEnumerator ()
		{
			yield break;
		}
	}

	public class ArrayList<T> : ArrayBase<T>
	{
		public override SCG.IEnumerator<T> GetEnumerator ()
		{
			return base.GetEnumerator ();
		}
	}
}