public class CollectionValueBase<T>
{
	public virtual T[] ToArray()
	{
		return null;
	}
}

public class CollectionBase<T>: CollectionValueBase<T>
{
}

public class SequencedBase<T>: CollectionBase<T>
{
}

public class ArrayBase<T>: SequencedBase<T>
{
	public override T[] ToArray()
	{
		return null;
	}
}

class X
{
	public static void Main ()
	{ }
}