Map<K, T> parse(Map<K, dynamic> json) => json .map((key, e) => MapEntry(key, parseInternal(constructors[T]!, e))) .cast<K, T>();