Classbox/R

「Classboxes: Controlling Visibility of Class Extensions」
これが最初に理解できなかった原因は、classbox自体に継承関係があって、さらに、再定義するクラス個々についてimport宣言するのだと思い込んでいたためだった。それで上位のclassboxで定義されたクラスは下位のclassboxで、そのまま全て参照可能だとしていたために悩んだ。実際にはclassbox自体に継承関係はなく、クラス単位でimport宣言することによって拡張の継承関係をもつ。再定義はしないで参照のみ行うクラスに対してもimport宣言が必要。これでダイアモンド継承の衝突問題も起きない。フィールドの追加拡張はできない。
これで全て解決したと思ったが、まだ問題が残っていた。
以下の例では、BarではBクラスをimportしていないので、実行時にエラーになるのだろうか?

classbox Foo
  class A
    def m(); ...; end
  end
  class B < A
    def m(); ...; end
  end
  class C
    def initialize(); @a = B.new; end
  end
end

classbox Bar
  import A from Foo
  import C from Foo
  class C
    def self.m(); @a.m(); end
  end
end

classbox Baz
  import C from Bar
  C.m()
end