flatten
flatten!
はselfを返して

flatten!?
はselfかnil
でいい

現在の!から返されるselfは「デバッグ用」の情報であって
型がnilになる可能性もある為に実際に使ってはいけないデータなんだから
ただのselfを返す仕様ってのは落とし穴を作っちゃってる
自由度は下がってもtrueかfalseのほうが10倍マシ

!?の導入か、または
selfじゃなくて破壊的メソッド特有のデバッグ情報としてのselfを返す等にするべき