using System;

namespace MonoBugs
{
	public struct Foo<T>
	{
		public T Item;
	}

	public static class Bar
	{
		public static void DoStuff<T> (T item, Action<T> fn)
		{
			throw new ApplicationException ("failed");
		}

		public static void DoStuff<T> (T? item, Action<T> fn)
			where T : struct
		{
			fn (item.Value);
		}
	}

	public static class Program
	{
		public static void Main ()
		{
			Foo<int>? value = new Foo<int> { Item = 3 };
			Bar.DoStuff (value, x => Console.WriteLine (x.Item));
		}
	}
}