Map<T, String> get reverse { if (reverseMap == null) { reverseMap = map!.map((k, v) => new MapEntry(v, k)); } return reverseMap!; }