Concrete subclasses must provide a factory to create T from a map.
T fromMap(Map<String, dynamic> map);