サンプルコードはなんとか読めるようになったけれど、これをどう実際のコードに持っていくかを考えている。状態を値から型で保持するので(メタだから当たり前だけど)考え方を変えなくてはいけない。今の既存のコードは変数で状態を持っていて、スレッドセーフにするためにアトミック変数とかにしているけど型で状態を保持した場合そのあたりどうするかとか。状態をスレッドセーフにした場合のサンプルとかあればいいんだけど。
後やっぱりUMLの状態遷移図を書いたほうが実装しやすそうなので、ArgoUMLをインストールしてみた。svgにも落ちるしね。下はサンプル。