自己を動的に派生クラスに書き換えるモデルを考えて、
以下のようなコードを組んでみたのですが、失敗しました。
そもそも自己を動的に派生クラスに書き直せるのかちょっと疑問になったのですが、
こういうことは可能なのでしょうか。

class Hoge {
this() {}
void rewrite() {
this = new Huga;
}
}

class Huga : Hoge {}

void main(){
auto a = new Hoge;
a.rewrite;
writefln(a);  // -> Hoge
}