using System;

interface IFoo <T>
{
        T this [int index] {
                get; set;
        }
}

public class FooCollection <T> : IFoo <T>
{
        T IFoo<T>.this [int index] {
                get {
                        return default(T);
                }
                set {
                }
        }
}

class X
{
	public static void Main ()
	{
		IFoo<int> foo = new FooCollection<int> ();
		int a = foo [3];
		Console.WriteLine (a);
	}
}