べつにそれで実装してもいいんだけど、そうすると traversal におけるイテレータ型とか諸々のインターフェースとかすべてを strong typedef して露出するみたいな虚無作業が待ち受けているのであまりに険しいし保守性が悪い