using System;

public interface IDirectedEnumerable
{
	IDirectedEnumerable Backwards();
}

public interface IDirectedCollectionValue : IDirectedEnumerable
{
	new IDirectedCollectionValue Backwards();
}

public class GuardedCollectionValue : IDirectedCollectionValue
{
	IDirectedEnumerable IDirectedEnumerable.Backwards ()
	{
		return this;
	}

	public IDirectedCollectionValue Backwards ()
	{
		return this;
	}
}

public interface ISequenced : IDirectedCollectionValue
{
}

public class GuardedSequenced
{
	ISequenced sequenced;

	public IDirectedCollectionValue Test ()
	{
		return sequenced.Backwards();
	}
}

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