using System;
using System.Linq.Expressions;

class M
{
	public static void Foo<T> (Expression<Func<T, T>> x)
	{
	}
	
	static string Param (string b)
	{
		Expression<Func<string, Expression<Func<string>>>> e = (string s) => () => b;
		return e.Compile () ("-##54!2").Compile () ();
	}

	public static int Main ()
	{
		Foo<int> ((i) => i);

		Foo ((int i) => i);

		Expression<Func<int, int>> func = (i) => i;
		Foo (func);
		
		if (Param ("my test") != "my test")
			return 1;
		
		return 0;
	}
}