using System;

public delegate void Foo<V> (V v);

public delegate void Bar<W> (W w);


class Test<T>
{
	public static void Hello<S> (T t, S s)
	{
		Foo<long> foo = delegate (long r) {
			Console.WriteLine (r);
			Bar<T> bar = delegate (T x) {
				Console.WriteLine (r);
				Console.WriteLine (t);
				Console.WriteLine (s);
				Console.WriteLine (x);
			};
			bar (t);
		};
		foo (5);
	}
}

class X
{
	public static void Main ()
	{
		Test<string>.Hello ("World", 3.1415F);
	}
}