Very interesting discussion, although there already are solutions to some of these problems in other type systems.<p>Erlang also has optional type annotations via the dialyzer tool and all types are by default non-nullable.<p>Generally I think that the dart language implementors should try harder not to copy language design fails from Java / C++, like null-pointers or half-baked enumeration types.