Class::MOPベースのオブジェクトではカプセル化を実現できない?

Class::MOPに基づくインスタンスMOPでは以下のようなメソッドを提供しなければならないんだけど…

package Class::MOP::Instance;
#...
sub set_slot_value {
    my ($self, $instance, $slot_name, $value) = @_;
    $instance->{$slot_name} = $value;
}
#...

これはカプセル化しようと思ってもできないんじゃ…。
make_immutable()しなければ使えない,ということにして,inline_*だけ実装するのもありかなあ。

もう少し調べてみよう。