前から思ったんだけどさ、collections api使ってると、A is not subtype of Bという
例外が出たりするんだけど
例外の意味は分かるんだけど、何でコンパイル通るのかなという
例えば
List<Hoge> hoge;
hoge = あるコレクション.map();
で、コンパイル通るけど、実行時に例外で
hoge = あるコレクション.map().toList();
にすると例外でない

ようはIterable<E>とList<E>の違いなんだけど、なんでコンパイル通って実行時に例外でるの?