Specially here:
```D void destroy(bool initialize = true, T)(T obj) if (is(T == class)) { (..) else { // Bypass overloaded opCast auto ptr = (() @trusted => *cast(void**) &obj)(); rt_finalize2(ptr, true, initialize); } } ``` and for interface: ```D cast(Object)obj ``` But i suspect you'll have to implement the whole typeinfo