interface Foo : Object { public void foo (owned T bar) { bar = null; } } class Bar { } class Baz : Object, Foo { } void foo (owned T bar) { bar = null; } bool is_check () { var o = new Bar (); return o is G; } void main () { var bar = new Object (); foo (bar); assert (bar.ref_count == 1); var baz = new Baz (); baz.foo (bar); assert (baz.ref_count == 1); assert (is_check ()); assert (!is_check ()); }