Algebraic Datatypes for Dart