Shouldn't this be `static if (is(T : IUnknown))`? A derived interface should also format as well.