class Test
{
	public delegate int Foo<T> (T t, T u);

	public void Hello<U> (Foo<U> foo, U u)
	{ }
}

class X
{
	static int Add (int a, int b)
	{
		return a + b;
	}

	public static void Main ()
	{
		Test test = new Test ();
		test.Hello<int> (new Test.Foo<int> (Add), 5);
	}
}