mixin template Bar()
{
     override void func() { writeln("Bar.func()"); }
}
class Foo
{
     void func() { writeln("Foo.func()"); }
}
void test()
{
     Foo b = new Foo();
     b.func();      // calls Foo.func()
     b = new Foo();
     mixin(b, Bar());
     b.func();      // calls Bar.func()
}
It's crazy idea?