delegate T Foo<out T> ();

public class Test
{
	public static int Main ()
	{
		string message = "Hello World!";
		Foo<string> foo = () => message;
		if (Bar (foo) != message.GetHashCode ())
			return 1;

		return 0;
	}

	static int Bar (Foo<object> foo)
	{
		return foo().GetHashCode ();
	}
}