metaclassをchange-classで変えようとしたら怒られた

gosh> (define-class <hoge> () ())
<hoge>
gosh> (define-class <hoge-meta> (<class>) ())
<hoge-meta>
gosh> (change-class <hoge> <hoge-meta>)
*** ERROR: %transplant-instance: classes are incompatible between #<class #f> and #<class <hoge>>
Stack Trace:
_______________________________________
  0  (%transplant-instance! new obj)
        At line 159 of "/usr/local/share/gauche/0.8.14/lib/gauche/redefutil.scm"

なんで怒られるのかよくわからない.base classが違うとtransplantできないらしい.klassのbase classというのはklass->cpaの中で最初にSCM_CLASS_CATEGORY(k)==SCM_CLASS_BASEを満たすkで,Cレベルで定義されるクラスの一種で…俺は何を言っているんだろう.
これは実装上の制限か何かなんだろうか.

gosh> (define-class <hoge> () ())
<hoge>
gosh> (define-class <hoge-meta> (<class>) ())
<hoge-meta>
gosh> (define-class <hoge> () () :metaclass <hoge-meta>)
<hoge>
gosh> (class-of <hoge>)
#<class <hoge-meta>>

これはやってることが違う.