public static class CoalescingWithGenericsBug { class Service { public void Foo () { } } static T Provide<T> () where T : class { return FindExisting<T> () ?? System.Activator.CreateInstance<T> (); } static T FindExisting<T> () where T : class { return null; } public static int Main () { Provide<Service> ().Foo (); return 0; } }