using System;

class Foo<T>
{
	public T Test<U> (U u)
		where U : T
	{
		return u;
	}
}

class X
{
	static void Main ()
	{
		Foo<X> foo = new Foo<X> ();

		Y y = new Y ();
		X x = foo.Test<Y> (y);
	}
}

class Y : X
{
}
