using System; namespace Tests { class Generics { class ClassA : IDisposable { public void Dispose() { } } static void DoDispose(mut T val) where T : IDisposable { val.Dispose(); } struct Disposer { static void UseDispose(IDisposable disp) { } static void DoDisposeA(mut T val) where T : IDisposable { val.Dispose(); UseDispose(val); } static void DoDisposeB(mut T val) where T : IDisposable { val.Dispose(); } } [Test] public static void TestBasics() { } } }