diff --git a/head/dart/test/inputs/json/priority/bug427.json/default/TopLevel.dart b/head/dart/test/inputs/json/priority/bug427.json/default/TopLevel.dart
new file mode 100644
index 0000000..30d3770
--- /dev/null
+++ b/head/dart/test/inputs/json/priority/bug427.json/default/TopLevel.dart
@@ -0,0 +1,2361 @@
+// To parse this JSON data, do
+//
+//     final topLevel = topLevelFromJson(jsonString);
+
+import 'dart:convert';
+
+TopLevel topLevelFromJson(String str) => TopLevel.fromJson(json.decode(str));
+
+String topLevelToJson(TopLevel data) => json.encode(data.toJson());
+
+class TopLevel {
+    final List<TopLevelChild> children;
+    final GetSignatureFlags flags;
+    final List<Group> groups;
+    final int id;
+    final int kind;
+    final String name;
+
+    TopLevel({
+        required this.children,
+        required this.flags,
+        required this.groups,
+        required this.id,
+        required this.kind,
+        required this.name,
+    });
+
+    factory TopLevel.fromJson(Map<String, dynamic> json) => TopLevel(
+        children: List<TopLevelChild>.from(json["children"].map((x) => TopLevelChild.fromJson(x))),
+        flags: GetSignatureFlags.fromJson(json["flags"]),
+        groups: List<Group>.from(json["groups"].map((x) => Group.fromJson(x))),
+        id: json["id"],
+        kind: json["kind"],
+        name: json["name"],
+    );
+
+    Map<String, dynamic> toJson() => {
+        "children": List<dynamic>.from(children.map((x) => x.toJson())),
+        "flags": flags.toJson(),
+        "groups": List<dynamic>.from(groups.map((x) => x.toJson())),
+        "id": id,
+        "kind": kind,
+        "name": name,
+    };
+}
+
+class TopLevelChild {
+    final List<PurpleChild> children;
+    final IndecentComment? comment;
+    final PurpleFlags flags;
+    final List<Group> groups;
+    final int id;
+    final int kind;
+    final TentacledKindString kindString;
+    final String name;
+    final String originalName;
+    final List<Source> sources;
+
+    TopLevelChild({
+        required this.children,
+        this.comment,
+        required this.flags,
+        required this.groups,
+        required this.id,
+        required this.kind,
+        required this.kindString,
+        required this.name,
+        required this.originalName,
+        required this.sources,
+    });
+
+    factory TopLevelChild.fromJson(Map<String, dynamic> json) => TopLevelChild(
+        children: List<PurpleChild>.from(json["children"].map((x) => PurpleChild.fromJson(x))),
+        comment: json["comment"] == null ? null : IndecentComment.fromJson(json["comment"]),
+        flags: PurpleFlags.fromJson(json["flags"]),
+        groups: List<Group>.from(json["groups"].map((x) => Group.fromJson(x))),
+        id: json["id"],
+        kind: json["kind"],
+        kindString: tentacledKindStringValues.map[json["kindString"]]!,
+        name: json["name"],
+        originalName: json["originalName"],
+        sources: List<Source>.from(json["sources"].map((x) => Source.fromJson(x))),
+    );
+
+    Map<String, dynamic> toJson() => {
+        "children": List<dynamic>.from(children.map((x) => x.toJson())),
+        "comment": comment?.toJson(),
+        "flags": flags.toJson(),
+        "groups": List<dynamic>.from(groups.map((x) => x.toJson())),
+        "id": id,
+        "kind": kind,
+        "kindString": tentacledKindStringValues.reverse[kindString],
+        "name": name,
+        "originalName": originalName,
+        "sources": List<dynamic>.from(sources.map((x) => x.toJson())),
+    };
+}
+
+class PurpleChild {
+    final List<FluffyChild>? children;
+    final StickyComment? comment;
+    final String? defaultValue;
+    final List<ExtendedBy>? extendedBy;
+    final List<ExtendedBy>? extendedTypes;
+    final IndecentFlags flags;
+    final List<Group>? groups;
+    final int id;
+    final List<ExtendedBy>? implementedBy;
+    final List<ExtendedBy>? implementedTypes;
+    final int kind;
+    final FluffyKindString kindString;
+    final String name;
+    final List<StickySignature>? signatures;
+    final List<Source> sources;
+    final MagentaType? type;
+    final List<TypeParameter>? typeParameter;
+
+    PurpleChild({
+        this.children,
+        this.comment,
+        this.defaultValue,
+        this.extendedBy,
+        this.extendedTypes,
+        required this.flags,
+        this.groups,
+        required this.id,
+        this.implementedBy,
+        this.implementedTypes,
+        required this.kind,
+        required this.kindString,
+        required this.name,
+        this.signatures,
+        required this.sources,
+        this.type,
+        this.typeParameter,
+    });
+
+    factory PurpleChild.fromJson(Map<String, dynamic> json) => PurpleChild(
+        children: json["children"] == null ? null : List<FluffyChild>.from(json["children"]!.map((x) => FluffyChild.fromJson(x))),
+        comment: json["comment"] == null ? null : StickyComment.fromJson(json["comment"]),
+        defaultValue: json["defaultValue"],
+        extendedBy: json["extendedBy"] == null ? null : List<ExtendedBy>.from(json["extendedBy"]!.map((x) => ExtendedBy.fromJson(x))),
+        extendedTypes: json["extendedTypes"] == null ? null : List<ExtendedBy>.from(json["extendedTypes"]!.map((x) => ExtendedBy.fromJson(x))),
+        flags: IndecentFlags.fromJson(json["flags"]),
+        groups: json["groups"] == null ? null : List<Group>.from(json["groups"]!.map((x) => Group.fromJson(x))),
+        id: json["id"],
+        implementedBy: json["implementedBy"] == null ? null : List<ExtendedBy>.from(json["implementedBy"]!.map((x) => ExtendedBy.fromJson(x))),
+        implementedTypes: json["implementedTypes"] == null ? null : List<ExtendedBy>.from(json["implementedTypes"]!.map((x) => ExtendedBy.fromJson(x))),
+        kind: json["kind"],
+        kindString: fluffyKindStringValues.map[json["kindString"]]!,
+        name: json["name"],
+        signatures: json["signatures"] == null ? null : List<StickySignature>.from(json["signatures"]!.map((x) => StickySignature.fromJson(x))),
+        sources: List<Source>.from(json["sources"].map((x) => Source.fromJson(x))),
+        type: json["type"] == null ? null : MagentaType.fromJson(json["type"]),
+        typeParameter: json["typeParameter"] == null ? null : List<TypeParameter>.from(json["typeParameter"]!.map((x) => TypeParameter.fromJson(x))),
+    );
+
+    Map<String, dynamic> toJson() => {
+        "children": children == null ? null : List<dynamic>.from(children!.map((x) => x.toJson())),
+        "comment": comment?.toJson(),
+        "defaultValue": defaultValue,
+        "extendedBy": extendedBy == null ? null : List<dynamic>.from(extendedBy!.map((x) => x.toJson())),
+        "extendedTypes": extendedTypes == null ? null : List<dynamic>.from(extendedTypes!.map((x) => x.toJson())),
+        "flags": flags.toJson(),
+        "groups": groups == null ? null : List<dynamic>.from(groups!.map((x) => x.toJson())),
+        "id": id,
+        "implementedBy": implementedBy == null ? null : List<dynamic>.from(implementedBy!.map((x) => x.toJson())),
+        "implementedTypes": implementedTypes == null ? null : List<dynamic>.from(implementedTypes!.map((x) => x.toJson())),
+        "kind": kind,
+        "kindString": fluffyKindStringValues.reverse[kindString],
+        "name": name,
+        "signatures": signatures == null ? null : List<dynamic>.from(signatures!.map((x) => x.toJson())),
+        "sources": List<dynamic>.from(sources.map((x) => x.toJson())),
+        "type": type?.toJson(),
+        "typeParameter": typeParameter == null ? null : List<dynamic>.from(typeParameter!.map((x) => x.toJson())),
+    };
+}
+
+class FluffyChild {
+    final List<TentacledChild>? children;
+    final StickyComment? comment;
+    final String? defaultValue;
+    final StickyFlags flags;
+    final GetSignature? getSignature;
+    final List<Group>? groups;
+    final int id;
+    final ExtendedBy? implementationOf;
+    final ExtendedBy? inheritedFrom;
+    final int kind;
+    final PurpleKindString kindString;
+    final String name;
+    final ExtendedBy? overwrites;
+    final GetSignature? setSignature;
+    final List<FluffySignature>? signatures;
+    final List<Source> sources;
+    final IndigoType? type;
+
+    FluffyChild({
+        this.children,
+        this.comment,
+        this.defaultValue,
+        required this.flags,
+        this.getSignature,
+        this.groups,
+        required this.id,
+        this.implementationOf,
+        this.inheritedFrom,
+        required this.kind,
+        required this.kindString,
+        required this.name,
+        this.overwrites,
+        this.setSignature,
+        this.signatures,
+        required this.sources,
+        this.type,
+    });
+
+    factory FluffyChild.fromJson(Map<String, dynamic> json) => FluffyChild(
+        children: json["children"] == null ? null : List<TentacledChild>.from(json["children"]!.map((x) => TentacledChild.fromJson(x))),
+        comment: json["comment"] == null ? null : StickyComment.fromJson(json["comment"]),
+        defaultValue: json["defaultValue"],
+        flags: StickyFlags.fromJson(json["flags"]),
+        getSignature: json["getSignature"] == null ? null : GetSignature.fromJson(json["getSignature"]),
+        groups: json["groups"] == null ? null : List<Group>.from(json["groups"]!.map((x) => Group.fromJson(x))),
+        id: json["id"],
+        implementationOf: json["implementationOf"] == null ? null : ExtendedBy.fromJson(json["implementationOf"]),
+        inheritedFrom: json["inheritedFrom"] == null ? null : ExtendedBy.fromJson(json["inheritedFrom"]),
+        kind: json["kind"],
+        kindString: purpleKindStringValues.map[json["kindString"]]!,
+        name: json["name"],
+        overwrites: json["overwrites"] == null ? null : ExtendedBy.fromJson(json["overwrites"]),
+        setSignature: json["setSignature"] == null ? null : GetSignature.fromJson(json["setSignature"]),
+        signatures: json["signatures"] == null ? null : List<FluffySignature>.from(json["signatures"]!.map((x) => FluffySignature.fromJson(x))),
+        sources: List<Source>.from(json["sources"].map((x) => Source.fromJson(x))),
+        type: json["type"] == null ? null : IndigoType.fromJson(json["type"]),
+    );
+
+    Map<String, dynamic> toJson() => {
+        "children": children == null ? null : List<dynamic>.from(children!.map((x) => x.toJson())),
+        "comment": comment?.toJson(),
+        "defaultValue": defaultValue,
+        "flags": flags.toJson(),
+        "getSignature": getSignature?.toJson(),
+        "groups": groups == null ? null : List<dynamic>.from(groups!.map((x) => x.toJson())),
+        "id": id,
+        "implementationOf": implementationOf?.toJson(),
+        "inheritedFrom": inheritedFrom?.toJson(),
+        "kind": kind,
+        "kindString": purpleKindStringValues.reverse[kindString],
+        "name": name,
+        "overwrites": overwrites?.toJson(),
+        "setSignature": setSignature?.toJson(),
+        "signatures": signatures == null ? null : List<dynamic>.from(signatures!.map((x) => x.toJson())),
+        "sources": List<dynamic>.from(sources.map((x) => x.toJson())),
+        "type": type?.toJson(),
+    };
+}
+
+class TentacledChild {
+    final PurpleComment? comment;
+    final String? defaultValue;
+    final PurpleFlags flags;
+    final int id;
+    final int kind;
+    final PurpleKindString kindString;
+    final String name;
+    final List<PurpleSignature>? signatures;
+    final List<Source> sources;
+    final TypeElement? type;
+
+    TentacledChild({
+        this.comment,
+        this.defaultValue,
+        required this.flags,
+        required this.id,
+        required this.kind,
+        required this.kindString,
+        required this.name,
+        this.signatures,
+        required this.sources,
+        this.type,
+    });
+
+    factory TentacledChild.fromJson(Map<String, dynamic> json) => TentacledChild(
+        comment: json["comment"] == null ? null : PurpleComment.fromJson(json["comment"]),
+        defaultValue: json["defaultValue"],
+        flags: PurpleFlags.fromJson(json["flags"]),
+        id: json["id"],
+        kind: json["kind"],
+        kindString: purpleKindStringValues.map[json["kindString"]]!,
+        name: json["name"],
+        signatures: json["signatures"] == null ? null : List<PurpleSignature>.from(json["signatures"]!.map((x) => PurpleSignature.fromJson(x))),
+        sources: List<Source>.from(json["sources"].map((x) => Source.fromJson(x))),
+        type: json["type"] == null ? null : TypeElement.fromJson(json["type"]),
+    );
+
+    Map<String, dynamic> toJson() => {
+        "comment": comment?.toJson(),
+        "defaultValue": defaultValue,
+        "flags": flags.toJson(),
+        "id": id,
+        "kind": kind,
+        "kindString": purpleKindStringValues.reverse[kindString],
+        "name": name,
+        "signatures": signatures == null ? null : List<dynamic>.from(signatures!.map((x) => x.toJson())),
+        "sources": List<dynamic>.from(sources.map((x) => x.toJson())),
+        "type": type?.toJson(),
+    };
+}
+
+class PurpleComment {
+    final String shortText;
+
+    PurpleComment({
+        required this.shortText,
+    });
+
+    factory PurpleComment.fromJson(Map<String, dynamic> json) => PurpleComment(
+        shortText: json["shortText"],
+    );
+
+    Map<String, dynamic> toJson() => {
+        "shortText": shortText,
+    };
+}
+
+class PurpleFlags {
+    final bool? isExported;
+
+    PurpleFlags({
+        this.isExported,
+    });
+
+    factory PurpleFlags.fromJson(Map<String, dynamic> json) => PurpleFlags(
+        isExported: json["isExported"],
+    );
+
+    Map<String, dynamic> toJson() => {
+        "isExported": isExported,
+    };
+}
+
+enum PurpleKindString {
+    VARIABLE,
+    FUNCTION,
+    PROPERTY,
+    METHOD,
+    CONSTRUCTOR,
+    ACCESSOR,
+    ENUMERATION_MEMBER,
+    MODULE,
+    OBJECT_LITERAL
+}
+
+final purpleKindStringValues = EnumValues({
+    "Variable": PurpleKindString.VARIABLE,
+    "Function": PurpleKindString.FUNCTION,
+    "Property": PurpleKindString.PROPERTY,
+    "Method": PurpleKindString.METHOD,
+    "Constructor": PurpleKindString.CONSTRUCTOR,
+    "Accessor": PurpleKindString.ACCESSOR,
+    "Enumeration member": PurpleKindString.ENUMERATION_MEMBER,
+    "Module": PurpleKindString.MODULE,
+    "Object literal": PurpleKindString.OBJECT_LITERAL
+});
+
+class PurpleSignature {
+    final PurpleComment? comment;
+    final GetSignatureFlags flags;
+    final int id;
+    final int kind;
+    final SignatureKindString kindString;
+    final String name;
+    final List<GetSignature> parameters;
+    final TentacledType type;
+
+    PurpleSignature({
+        this.comment,
+        required this.flags,
+        required this.id,
+        required this.kind,
+        required this.kindString,
+        required this.name,
+        required this.parameters,
+        required this.type,
+    });
+
+    factory PurpleSignature.fromJson(Map<String, dynamic> json) => PurpleSignature(
+        comment: json["comment"] == null ? null : PurpleComment.fromJson(json["comment"]),
+        flags: GetSignatureFlags.fromJson(json["flags"]),
+        id: json["id"],
+        kind: json["kind"],
+        kindString: signatureKindStringValues.map[json["kindString"]]!,
+        name: json["name"],
+        parameters: List<GetSignature>.from(json["parameters"].map((x) => GetSignature.fromJson(x))),
+        type: TentacledType.fromJson(json["type"]),
+    );
+
+    Map<String, dynamic> toJson() => {
+        "comment": comment?.toJson(),
+        "flags": flags.toJson(),
+        "id": id,
+        "kind": kind,
+        "kindString": signatureKindStringValues.reverse[kindString],
+        "name": name,
+        "parameters": List<dynamic>.from(parameters.map((x) => x.toJson())),
+        "type": type.toJson(),
+    };
+}
+
+class GetSignatureFlags {
+    GetSignatureFlags();
+
+    factory GetSignatureFlags.fromJson(Map<String, dynamic> json) => GetSignatureFlags(
+    );
+
+    Map<String, dynamic> toJson() => {
+    };
+}
+
+enum SignatureKindString {
+    CALL_SIGNATURE,
+    CONSTRUCTOR_SIGNATURE
+}
+
+final signatureKindStringValues = EnumValues({
+    "Call signature": SignatureKindString.CALL_SIGNATURE,
+    "Constructor signature": SignatureKindString.CONSTRUCTOR_SIGNATURE
+});
+
+class GetSignatureType {
+    final GetSignature? declaration;
+    final ElementType? elementType;
+    final Name? name;
+    final TypeEnum type;
+
+    GetSignatureType({
+        this.declaration,
+        this.elementType,
+        this.name,
+        required this.type,
+    });
+
+    factory GetSignatureType.fromJson(Map<String, dynamic> json) => GetSignatureType(
+        declaration: json["declaration"] == null ? null : GetSignature.fromJson(json["declaration"]),
+        elementType: json["elementType"] == null ? null : ElementType.fromJson(json["elementType"]),
+        name: nameValues.map[json["name"]],
+        type: typeEnumValues.map[json["type"]]!,
+    );
+
+    Map<String, dynamic> toJson() => {
+        "declaration": declaration?.toJson(),
+        "elementType": elementType?.toJson(),
+        "name": nameValues.reverse[name],
+        "type": typeEnumValues.reverse[type],
+    };
+}
+
+class IndexSignatureElement {
+    final GetSignatureFlags flags;
+    final int id;
+    final int kind;
+    final String kindString;
+    final String name;
+    final List<GetSignature>? parameters;
+    final PurpleType type;
+
+    IndexSignatureElement({
+        required this.flags,
+        required this.id,
+        required this.kind,
+        required this.kindString,
+        required this.name,
+        this.parameters,
+        required this.type,
+    });
+
+    factory IndexSignatureElement.fromJson(Map<String, dynamic> json) => IndexSignatureElement(
+        flags: GetSignatureFlags.fromJson(json["flags"]),
+        id: json["id"],
+        kind: json["kind"],
+        kindString: json["kindString"],
+        name: json["name"],
+        parameters: json["parameters"] == null ? null : List<GetSignature>.from(json["parameters"]!.map((x) => GetSignature.fromJson(x))),
+        type: PurpleType.fromJson(json["type"]),
+    );
+
+    Map<String, dynamic> toJson() => {
+        "flags": flags.toJson(),
+        "id": id,
+        "kind": kind,
+        "kindString": kindString,
+        "name": name,
+        "parameters": parameters == null ? null : List<dynamic>.from(parameters!.map((x) => x.toJson())),
+        "type": type.toJson(),
+    };
+}
+
+class PurpleType {
+    final GetSignature? declaration;
+    final Name? name;
+    final TypeEnum type;
+
+    PurpleType({
+        this.declaration,
+        this.name,
+        required this.type,
+    });
+
+    factory PurpleType.fromJson(Map<String, dynamic> json) => PurpleType(
+        declaration: json["declaration"] == null ? null : GetSignature.fromJson(json["declaration"]),
+        name: nameValues.map[json["name"]],
+        type: typeEnumValues.map[json["type"]]!,
+    );
+
+    Map<String, dynamic> toJson() => {
+        "declaration": declaration?.toJson(),
+        "name": nameValues.reverse[name],
+        "type": typeEnumValues.reverse[type],
+    };
+}
+
+class GetSignatureChild {
+    final FluffyComment? comment;
+    final FluffyFlags flags;
+    final int id;
+    final int kind;
+    final PurpleKindString kindString;
+    final String name;
+    final List<Source> sources;
+    final PurpleType type;
+
+    GetSignatureChild({
+        this.comment,
+        required this.flags,
+        required this.id,
+        required this.kind,
+        required this.kindString,
+        required this.name,
+        required this.sources,
+        required this.type,
+    });
+
+    factory GetSignatureChild.fromJson(Map<String, dynamic> json) => GetSignatureChild(
+        comment: json["comment"] == null ? null : FluffyComment.fromJson(json["comment"]),
+        flags: FluffyFlags.fromJson(json["flags"]),
+        id: json["id"],
+        kind: json["kind"],
+        kindString: purpleKindStringValues.map[json["kindString"]]!,
+        name: json["name"],
+        sources: List<Source>.from(json["sources"].map((x) => Source.fromJson(x))),
+        type: PurpleType.fromJson(json["type"]),
+    );
+
+    Map<String, dynamic> toJson() => {
+        "comment": comment?.toJson(),
+        "flags": flags.toJson(),
+        "id": id,
+        "kind": kind,
+        "kindString": purpleKindStringValues.reverse[kindString],
+        "name": name,
+        "sources": List<dynamic>.from(sources.map((x) => x.toJson())),
+        "type": type.toJson(),
+    };
+}
+
+class GetSignature {
+    final List<GetSignatureChild>? children;
+    final GetSignatureComment? comment;
+    final String? defaultValue;
+    final GetSignatureFlags flags;
+    final List<Group>? groups;
+    final int id;
+    final int kind;
+    final String kindString;
+    final String name;
+    final List<GetSignatureParameter>? parameters;
+    final List<IndexSignatureElement>? signatures;
+    final List<Source>? sources;
+    final GetSignatureType? type;
+    final List<GetSignature>? typeParameter;
+
+    GetSignature({
+        this.children,
+        this.comment,
+        this.defaultValue,
+        required this.flags,
+        this.groups,
+        required this.id,
+        required this.kind,
+        required this.kindString,
+        required this.name,
+        this.parameters,
+        this.signatures,
+        this.sources,
+        this.type,
+        this.typeParameter,
+    });
+
+    factory GetSignature.fromJson(Map<String, dynamic> json) => GetSignature(
+        children: json["children"] == null ? null : List<GetSignatureChild>.from(json["children"]!.map((x) => GetSignatureChild.fromJson(x))),
+        comment: json["comment"] == null ? null : GetSignatureComment.fromJson(json["comment"]),
+        defaultValue: json["defaultValue"],
+        flags: GetSignatureFlags.fromJson(json["flags"]),
+        groups: json["groups"] == null ? null : List<Group>.from(json["groups"]!.map((x) => Group.fromJson(x))),
+        id: json["id"],
+        kind: json["kind"],
+        kindString: json["kindString"],
+        name: json["name"],
+        parameters: json["parameters"] == null ? null : List<GetSignatureParameter>.from(json["parameters"]!.map((x) => GetSignatureParameter.fromJson(x))),
+        signatures: json["signatures"] == null ? null : List<IndexSignatureElement>.from(json["signatures"]!.map((x) => IndexSignatureElement.fromJson(x))),
+        sources: json["sources"] == null ? null : List<Source>.from(json["sources"]!.map((x) => Source.fromJson(x))),
+        type: json["type"] == null ? null : GetSignatureType.fromJson(json["type"]),
+        typeParameter: json["typeParameter"] == null ? null : List<GetSignature>.from(json["typeParameter"]!.map((x) => GetSignature.fromJson(x))),
+    );
+
+    Map<String, dynamic> toJson() => {
+        "children": children == null ? null : List<dynamic>.from(children!.map((x) => x.toJson())),
+        "comment": comment?.toJson(),
+        "defaultValue": defaultValue,
+        "flags": flags.toJson(),
+        "groups": groups == null ? null : List<dynamic>.from(groups!.map((x) => x.toJson())),
+        "id": id,
+        "kind": kind,
+        "kindString": kindString,
+        "name": name,
+        "parameters": parameters == null ? null : List<dynamic>.from(parameters!.map((x) => x.toJson())),
+        "signatures": signatures == null ? null : List<dynamic>.from(signatures!.map((x) => x.toJson())),
+        "sources": sources == null ? null : List<dynamic>.from(sources!.map((x) => x.toJson())),
+        "type": type?.toJson(),
+        "typeParameter": typeParameter == null ? null : List<dynamic>.from(typeParameter!.map((x) => x.toJson())),
+    };
+}
+
+class ElementType {
+    final Name name;
+    final TypeEnum type;
+
+    ElementType({
+        required this.name,
+        required this.type,
+    });
+
+    factory ElementType.fromJson(Map<String, dynamic> json) => ElementType(
+        name: nameValues.map[json["name"]]!,
+        type: typeEnumValues.map[json["type"]]!,
+    );
+
+    Map<String, dynamic> toJson() => {
+        "name": nameValues.reverse[name],
+        "type": typeEnumValues.reverse[type],
+    };
+}
+
+enum Name {
+    STRING,
+    NUMBER,
+    VOID,
+    T,
+    BOOLEAN,
+    BASE_CLASS,
+    ANY,
+    ARRAY,
+    MY_NUMBER
+}
+
+final nameValues = EnumValues({
+    "string": Name.STRING,
+    "number": Name.NUMBER,
+    "void": Name.VOID,
+    "T": Name.T,
+    "boolean": Name.BOOLEAN,
+    "BaseClass": Name.BASE_CLASS,
+    "any": Name.ANY,
+    "Array": Name.ARRAY,
+    "MyNumber": Name.MY_NUMBER
+});
+
+enum TypeEnum {
+    INTRINSIC,
+    REFLECTION,
+    ARRAY,
+    REFERENCE,
+    TYPE_PARAMETER,
+    TUPLE,
+    UNION,
+    STRING_LITERAL
+}
+
+final typeEnumValues = EnumValues({
+    "intrinsic": TypeEnum.INTRINSIC,
+    "reflection": TypeEnum.REFLECTION,
+    "array": TypeEnum.ARRAY,
+    "reference": TypeEnum.REFERENCE,
+    "typeParameter": TypeEnum.TYPE_PARAMETER,
+    "tuple": TypeEnum.TUPLE,
+    "union": TypeEnum.UNION,
+    "stringLiteral": TypeEnum.STRING_LITERAL
+});
+
+class FluffyComment {
+    final String text;
+
+    FluffyComment({
+        required this.text,
+    });
+
+    factory FluffyComment.fromJson(Map<String, dynamic> json) => FluffyComment(
+        text: json["text"],
+    );
+
+    Map<String, dynamic> toJson() => {
+        "text": text,
+    };
+}
+
+class FluffyFlags {
+    final bool? isOptional;
+
+    FluffyFlags({
+        this.isOptional,
+    });
+
+    factory FluffyFlags.fromJson(Map<String, dynamic> json) => FluffyFlags(
+        isOptional: json["isOptional"],
+    );
+
+    Map<String, dynamic> toJson() => {
+        "isOptional": isOptional,
+    };
+}
+
+class Source {
+    final int character;
+    final FileName fileName;
+    final int line;
+
+    Source({
+        required this.character,
+        required this.fileName,
+        required this.line,
+    });
+
+    factory Source.fromJson(Map<String, dynamic> json) => Source(
+        character: json["character"],
+        fileName: fileNameValues.map[json["fileName"]]!,
+        line: json["line"],
+    );
+
+    Map<String, dynamic> toJson() => {
+        "character": character,
+        "fileName": fileNameValues.reverse[fileName],
+        "line": line,
+    };
+}
+
+enum FileName {
+    MODULES_TS,
+    CLASSES_TS,
+    FLATTENED_TS,
+    ACCESS_TS,
+    DEFAULT_EXPORT_TS,
+    ENUMERATIONS_TS,
+    FUNCTIONS_TS,
+    GENERICS_TS,
+    SINGLE_EXPORT_TS,
+    TYPESCRIPT_13_TS,
+    TYPESCRIPT_14_TS,
+    TYPESCRIPT_15_TS,
+    VARIABLES_TS
+}
+
+final fileNameValues = EnumValues({
+    "modules.ts": FileName.MODULES_TS,
+    "classes.ts": FileName.CLASSES_TS,
+    "flattened.ts": FileName.FLATTENED_TS,
+    "access.ts": FileName.ACCESS_TS,
+    "default-export.ts": FileName.DEFAULT_EXPORT_TS,
+    "enumerations.ts": FileName.ENUMERATIONS_TS,
+    "functions.ts": FileName.FUNCTIONS_TS,
+    "generics.ts": FileName.GENERICS_TS,
+    "single-export.ts": FileName.SINGLE_EXPORT_TS,
+    "typescript-1.3.ts": FileName.TYPESCRIPT_13_TS,
+    "typescript-1.4.ts": FileName.TYPESCRIPT_14_TS,
+    "typescript-1.5.ts": FileName.TYPESCRIPT_15_TS,
+    "variables.ts": FileName.VARIABLES_TS
+});
+
+class GetSignatureComment {
+    final String? returns;
+    final String? shortText;
+    final String? text;
+
+    GetSignatureComment({
+        this.returns,
+        this.shortText,
+        this.text,
+    });
+
+    factory GetSignatureComment.fromJson(Map<String, dynamic> json) => GetSignatureComment(
+        returns: json["returns"],
+        shortText: json["shortText"],
+        text: json["text"],
+    );
+
+    Map<String, dynamic> toJson() => {
+        "returns": returns,
+        "shortText": shortText,
+        "text": text,
+    };
+}
+
+class Group {
+    final List<int> children;
+    final int kind;
+    final String title;
+
+    Group({
+        required this.children,
+        required this.kind,
+        required this.title,
+    });
+
+    factory Group.fromJson(Map<String, dynamic> json) => Group(
+        children: List<int>.from(json["children"].map((x) => x)),
+        kind: json["kind"],
+        title: json["title"],
+    );
+
+    Map<String, dynamic> toJson() => {
+        "children": List<dynamic>.from(children.map((x) => x)),
+        "kind": kind,
+        "title": title,
+    };
+}
+
+class GetSignatureParameter {
+    final TentacledComment? comment;
+    final TentacledFlags flags;
+    final int id;
+    final int kind;
+    final ParameterKindString kindString;
+    final String name;
+    final FluffyType type;
+
+    GetSignatureParameter({
+        this.comment,
+        required this.flags,
+        required this.id,
+        required this.kind,
+        required this.kindString,
+        required this.name,
+        required this.type,
+    });
+
+    factory GetSignatureParameter.fromJson(Map<String, dynamic> json) => GetSignatureParameter(
+        comment: json["comment"] == null ? null : TentacledComment.fromJson(json["comment"]),
+        flags: TentacledFlags.fromJson(json["flags"]),
+        id: json["id"],
+        kind: json["kind"],
+        kindString: parameterKindStringValues.map[json["kindString"]]!,
+        name: json["name"],
+        type: FluffyType.fromJson(json["type"]),
+    );
+
+    Map<String, dynamic> toJson() => {
+        "comment": comment?.toJson(),
+        "flags": flags.toJson(),
+        "id": id,
+        "kind": kind,
+        "kindString": parameterKindStringValues.reverse[kindString],
+        "name": name,
+        "type": type.toJson(),
+    };
+}
+
+class TentacledComment {
+    final String? shortText;
+    final String? text;
+
+    TentacledComment({
+        this.shortText,
+        this.text,
+    });
+
+    factory TentacledComment.fromJson(Map<String, dynamic> json) => TentacledComment(
+        shortText: json["shortText"],
+        text: json["text"],
+    );
+
+    Map<String, dynamic> toJson() => {
+        "shortText": shortText,
+        "text": text,
+    };
+}
+
+class TentacledFlags {
+    final bool? isOptional;
+    final bool? isRest;
+
+    TentacledFlags({
+        this.isOptional,
+        this.isRest,
+    });
+
+    factory TentacledFlags.fromJson(Map<String, dynamic> json) => TentacledFlags(
+        isOptional: json["isOptional"],
+        isRest: json["isRest"],
+    );
+
+    Map<String, dynamic> toJson() => {
+        "isOptional": isOptional,
+        "isRest": isRest,
+    };
+}
+
+enum ParameterKindString {
+    PARAMETER
+}
+
+final parameterKindStringValues = EnumValues({
+    "Parameter": ParameterKindString.PARAMETER
+});
+
+class FluffyType {
+    final ElementType? elementType;
+    final Name? name;
+    final TypeEnum type;
+    final List<ElementType>? typeArguments;
+
+    FluffyType({
+        this.elementType,
+        this.name,
+        required this.type,
+        this.typeArguments,
+    });
+
+    factory FluffyType.fromJson(Map<String, dynamic> json) => FluffyType(
+        elementType: json["elementType"] == null ? null : ElementType.fromJson(json["elementType"]),
+        name: nameValues.map[json["name"]],
+        type: typeEnumValues.map[json["type"]]!,
+        typeArguments: json["typeArguments"] == null ? null : List<ElementType>.from(json["typeArguments"]!.map((x) => ElementType.fromJson(x))),
+    );
+
+    Map<String, dynamic> toJson() => {
+        "elementType": elementType?.toJson(),
+        "name": nameValues.reverse[name],
+        "type": typeEnumValues.reverse[type],
+        "typeArguments": typeArguments == null ? null : List<dynamic>.from(typeArguments!.map((x) => x.toJson())),
+    };
+}
+
+class TentacledType {
+    final PurpleDeclaration? declaration;
+    final Name? name;
+    final TypeEnum type;
+
+    TentacledType({
+        this.declaration,
+        this.name,
+        required this.type,
+    });
+
+    factory TentacledType.fromJson(Map<String, dynamic> json) => TentacledType(
+        declaration: json["declaration"] == null ? null : PurpleDeclaration.fromJson(json["declaration"]),
+        name: nameValues.map[json["name"]],
+        type: typeEnumValues.map[json["type"]]!,
+    );
+
+    Map<String, dynamic> toJson() => {
+        "declaration": declaration?.toJson(),
+        "name": nameValues.reverse[name],
+        "type": typeEnumValues.reverse[type],
+    };
+}
+
+class PurpleDeclaration {
+    final List<GetSignature> children;
+    final GetSignatureFlags flags;
+    final List<Group> groups;
+    final int id;
+    final int kind;
+    final String kindString;
+    final String name;
+
+    PurpleDeclaration({
+        required this.children,
+        required this.flags,
+        required this.groups,
+        required this.id,
+        required this.kind,
+        required this.kindString,
+        required this.name,
+    });
+
+    factory PurpleDeclaration.fromJson(Map<String, dynamic> json) => PurpleDeclaration(
+        children: List<GetSignature>.from(json["children"].map((x) => GetSignature.fromJson(x))),
+        flags: GetSignatureFlags.fromJson(json["flags"]),
+        groups: List<Group>.from(json["groups"].map((x) => Group.fromJson(x))),
+        id: json["id"],
+        kind: json["kind"],
+        kindString: json["kindString"],
+        name: json["name"],
+    );
+
+    Map<String, dynamic> toJson() => {
+        "children": List<dynamic>.from(children.map((x) => x.toJson())),
+        "flags": flags.toJson(),
+        "groups": List<dynamic>.from(groups.map((x) => x.toJson())),
+        "id": id,
+        "kind": kind,
+        "kindString": kindString,
+        "name": name,
+    };
+}
+
+class TypeElement {
+    final GetSignature? declaration;
+    final ElementType? elementType;
+    final Name? name;
+    final TypeEnum type;
+    final List<ElementType>? typeArguments;
+
+    TypeElement({
+        this.declaration,
+        this.elementType,
+        this.name,
+        required this.type,
+        this.typeArguments,
+    });
+
+    factory TypeElement.fromJson(Map<String, dynamic> json) => TypeElement(
+        declaration: json["declaration"] == null ? null : GetSignature.fromJson(json["declaration"]),
+        elementType: json["elementType"] == null ? null : ElementType.fromJson(json["elementType"]),
+        name: nameValues.map[json["name"]],
+        type: typeEnumValues.map[json["type"]]!,
+        typeArguments: json["typeArguments"] == null ? null : List<ElementType>.from(json["typeArguments"]!.map((x) => ElementType.fromJson(x))),
+    );
+
+    Map<String, dynamic> toJson() => {
+        "declaration": declaration?.toJson(),
+        "elementType": elementType?.toJson(),
+        "name": nameValues.reverse[name],
+        "type": typeEnumValues.reverse[type],
+        "typeArguments": typeArguments == null ? null : List<dynamic>.from(typeArguments!.map((x) => x.toJson())),
+    };
+}
+
+class StickyComment {
+    final String? returns;
+    final String? shortText;
+    final List<Tag>? tags;
+    final String? text;
+
+    StickyComment({
+        this.returns,
+        this.shortText,
+        this.tags,
+        this.text,
+    });
+
+    factory StickyComment.fromJson(Map<String, dynamic> json) => StickyComment(
+        returns: json["returns"],
+        shortText: json["shortText"],
+        tags: json["tags"] == null ? null : List<Tag>.from(json["tags"]!.map((x) => Tag.fromJson(x))),
+        text: json["text"],
+    );
+
+    Map<String, dynamic> toJson() => {
+        "returns": returns,
+        "shortText": shortText,
+        "tags": tags == null ? null : List<dynamic>.from(tags!.map((x) => x.toJson())),
+        "text": text,
+    };
+}
+
+class Tag {
+    final String tag;
+    final String text;
+
+    Tag({
+        required this.tag,
+        required this.text,
+    });
+
+    factory Tag.fromJson(Map<String, dynamic> json) => Tag(
+        tag: json["tag"],
+        text: json["text"],
+    );
+
+    Map<String, dynamic> toJson() => {
+        "tag": tag,
+        "text": text,
+    };
+}
+
+class StickyFlags {
+    final bool? isAbstract;
+    final bool? isConstructorProperty;
+    final bool? isExported;
+    final bool? isPrivate;
+    final bool? isProtected;
+    final bool? isPublic;
+    final bool? isStatic;
+
+    StickyFlags({
+        this.isAbstract,
+        this.isConstructorProperty,
+        this.isExported,
+        this.isPrivate,
+        this.isProtected,
+        this.isPublic,
+        this.isStatic,
+    });
+
+    factory StickyFlags.fromJson(Map<String, dynamic> json) => StickyFlags(
+        isAbstract: json["isAbstract"],
+        isConstructorProperty: json["isConstructorProperty"],
+        isExported: json["isExported"],
+        isPrivate: json["isPrivate"],
+        isProtected: json["isProtected"],
+        isPublic: json["isPublic"],
+        isStatic: json["isStatic"],
+    );
+
+    Map<String, dynamic> toJson() => {
+        "isAbstract": isAbstract,
+        "isConstructorProperty": isConstructorProperty,
+        "isExported": isExported,
+        "isPrivate": isPrivate,
+        "isProtected": isProtected,
+        "isPublic": isPublic,
+        "isStatic": isStatic,
+    };
+}
+
+class ExtendedBy {
+    final ExtendedBy? constraint;
+    final int? id;
+    final String name;
+    final TypeEnum type;
+    final List<ExtendedBy>? typeArguments;
+
+    ExtendedBy({
+        this.constraint,
+        this.id,
+        required this.name,
+        required this.type,
+        this.typeArguments,
+    });
+
+    factory ExtendedBy.fromJson(Map<String, dynamic> json) => ExtendedBy(
+        constraint: json["constraint"] == null ? null : ExtendedBy.fromJson(json["constraint"]),
+        id: json["id"],
+        name: json["name"],
+        type: typeEnumValues.map[json["type"]]!,
+        typeArguments: json["typeArguments"] == null ? null : List<ExtendedBy>.from(json["typeArguments"]!.map((x) => ExtendedBy.fromJson(x))),
+    );
+
+    Map<String, dynamic> toJson() => {
+        "constraint": constraint?.toJson(),
+        "id": id,
+        "name": name,
+        "type": typeEnumValues.reverse[type],
+        "typeArguments": typeArguments == null ? null : List<dynamic>.from(typeArguments!.map((x) => x.toJson())),
+    };
+}
+
+class FluffySignature {
+    final StickyComment? comment;
+    final IndigoFlags flags;
+    final int id;
+    final ExtendedBy? implementationOf;
+    final ExtendedBy? inheritedFrom;
+    final int kind;
+    final SignatureKindString kindString;
+    final String name;
+    final ExtendedBy? overwrites;
+    final List<PurpleParameter>? parameters;
+    final ExtendedBy type;
+    final List<GetSignature>? typeParameter;
+
+    FluffySignature({
+        this.comment,
+        required this.flags,
+        required this.id,
+        this.implementationOf,
+        this.inheritedFrom,
+        required this.kind,
+        required this.kindString,
+        required this.name,
+        this.overwrites,
+        this.parameters,
+        required this.type,
+        this.typeParameter,
+    });
+
+    factory FluffySignature.fromJson(Map<String, dynamic> json) => FluffySignature(
+        comment: json["comment"] == null ? null : StickyComment.fromJson(json["comment"]),
+        flags: IndigoFlags.fromJson(json["flags"]),
+        id: json["id"],
+        implementationOf: json["implementationOf"] == null ? null : ExtendedBy.fromJson(json["implementationOf"]),
+        inheritedFrom: json["inheritedFrom"] == null ? null : ExtendedBy.fromJson(json["inheritedFrom"]),
+        kind: json["kind"],
+        kindString: signatureKindStringValues.map[json["kindString"]]!,
+        name: json["name"],
+        overwrites: json["overwrites"] == null ? null : ExtendedBy.fromJson(json["overwrites"]),
+        parameters: json["parameters"] == null ? null : List<PurpleParameter>.from(json["parameters"]!.map((x) => PurpleParameter.fromJson(x))),
+        type: ExtendedBy.fromJson(json["type"]),
+        typeParameter: json["typeParameter"] == null ? null : List<GetSignature>.from(json["typeParameter"]!.map((x) => GetSignature.fromJson(x))),
+    );
+
+    Map<String, dynamic> toJson() => {
+        "comment": comment?.toJson(),
+        "flags": flags.toJson(),
+        "id": id,
+        "implementationOf": implementationOf?.toJson(),
+        "inheritedFrom": inheritedFrom?.toJson(),
+        "kind": kind,
+        "kindString": signatureKindStringValues.reverse[kindString],
+        "name": name,
+        "overwrites": overwrites?.toJson(),
+        "parameters": parameters == null ? null : List<dynamic>.from(parameters!.map((x) => x.toJson())),
+        "type": type.toJson(),
+        "typeParameter": typeParameter == null ? null : List<dynamic>.from(typeParameter!.map((x) => x.toJson())),
+    };
+}
+
+class IndigoFlags {
+    final bool? isPrivate;
+    final bool? isProtected;
+
+    IndigoFlags({
+        this.isPrivate,
+        this.isProtected,
+    });
+
+    factory IndigoFlags.fromJson(Map<String, dynamic> json) => IndigoFlags(
+        isPrivate: json["isPrivate"],
+        isProtected: json["isProtected"],
+    );
+
+    Map<String, dynamic> toJson() => {
+        "isPrivate": isPrivate,
+        "isProtected": isProtected,
+    };
+}
+
+class PurpleParameter {
+    final TentacledComment? comment;
+    final GetSignatureFlags flags;
+    final int id;
+    final int kind;
+    final ParameterKindString kindString;
+    final String name;
+    final StickyType type;
+
+    PurpleParameter({
+        this.comment,
+        required this.flags,
+        required this.id,
+        required this.kind,
+        required this.kindString,
+        required this.name,
+        required this.type,
+    });
+
+    factory PurpleParameter.fromJson(Map<String, dynamic> json) => PurpleParameter(
+        comment: json["comment"] == null ? null : TentacledComment.fromJson(json["comment"]),
+        flags: GetSignatureFlags.fromJson(json["flags"]),
+        id: json["id"],
+        kind: json["kind"],
+        kindString: parameterKindStringValues.map[json["kindString"]]!,
+        name: json["name"],
+        type: StickyType.fromJson(json["type"]),
+    );
+
+    Map<String, dynamic> toJson() => {
+        "comment": comment?.toJson(),
+        "flags": flags.toJson(),
+        "id": id,
+        "kind": kind,
+        "kindString": parameterKindStringValues.reverse[kindString],
+        "name": name,
+        "type": type.toJson(),
+    };
+}
+
+class StickyType {
+    final ExtendedBy? constraint;
+    final GetSignature? declaration;
+    final ElementType? elementType;
+    final List<ExtendedBy>? elements;
+    final int? id;
+    final String? name;
+    final TypeEnum type;
+    final List<ElementType>? typeArguments;
+
+    StickyType({
+        this.constraint,
+        this.declaration,
+        this.elementType,
+        this.elements,
+        this.id,
+        this.name,
+        required this.type,
+        this.typeArguments,
+    });
+
+    factory StickyType.fromJson(Map<String, dynamic> json) => StickyType(
+        constraint: json["constraint"] == null ? null : ExtendedBy.fromJson(json["constraint"]),
+        declaration: json["declaration"] == null ? null : GetSignature.fromJson(json["declaration"]),
+        elementType: json["elementType"] == null ? null : ElementType.fromJson(json["elementType"]),
+        elements: json["elements"] == null ? null : List<ExtendedBy>.from(json["elements"]!.map((x) => ExtendedBy.fromJson(x))),
+        id: json["id"],
+        name: json["name"],
+        type: typeEnumValues.map[json["type"]]!,
+        typeArguments: json["typeArguments"] == null ? null : List<ElementType>.from(json["typeArguments"]!.map((x) => ElementType.fromJson(x))),
+    );
+
+    Map<String, dynamic> toJson() => {
+        "constraint": constraint?.toJson(),
+        "declaration": declaration?.toJson(),
+        "elementType": elementType?.toJson(),
+        "elements": elements == null ? null : List<dynamic>.from(elements!.map((x) => x.toJson())),
+        "id": id,
+        "name": name,
+        "type": typeEnumValues.reverse[type],
+        "typeArguments": typeArguments == null ? null : List<dynamic>.from(typeArguments!.map((x) => x.toJson())),
+    };
+}
+
+class IndigoType {
+    final ExtendedBy? constraint;
+    final FluffyDeclaration? declaration;
+    final ExtendedBy? elementType;
+    final List<ElementType>? elements;
+    final int? id;
+    final String? name;
+    final TypeEnum type;
+    final List<PurpleTypeArgument>? typeArguments;
+    final List<TypeElement>? types;
+
+    IndigoType({
+        this.constraint,
+        this.declaration,
+        this.elementType,
+        this.elements,
+        this.id,
+        this.name,
+        required this.type,
+        this.typeArguments,
+        this.types,
+    });
+
+    factory IndigoType.fromJson(Map<String, dynamic> json) => IndigoType(
+        constraint: json["constraint"] == null ? null : ExtendedBy.fromJson(json["constraint"]),
+        declaration: json["declaration"] == null ? null : FluffyDeclaration.fromJson(json["declaration"]),
+        elementType: json["elementType"] == null ? null : ExtendedBy.fromJson(json["elementType"]),
+        elements: json["elements"] == null ? null : List<ElementType>.from(json["elements"]!.map((x) => ElementType.fromJson(x))),
+        id: json["id"],
+        name: json["name"],
+        type: typeEnumValues.map[json["type"]]!,
+        typeArguments: json["typeArguments"] == null ? null : List<PurpleTypeArgument>.from(json["typeArguments"]!.map((x) => PurpleTypeArgument.fromJson(x))),
+        types: json["types"] == null ? null : List<TypeElement>.from(json["types"]!.map((x) => TypeElement.fromJson(x))),
+    );
+
+    Map<String, dynamic> toJson() => {
+        "constraint": constraint?.toJson(),
+        "declaration": declaration?.toJson(),
+        "elementType": elementType?.toJson(),
+        "elements": elements == null ? null : List<dynamic>.from(elements!.map((x) => x.toJson())),
+        "id": id,
+        "name": name,
+        "type": typeEnumValues.reverse[type],
+        "typeArguments": typeArguments == null ? null : List<dynamic>.from(typeArguments!.map((x) => x.toJson())),
+        "types": types == null ? null : List<dynamic>.from(types!.map((x) => x.toJson())),
+    };
+}
+
+class FluffyDeclaration {
+    final List<StickyChild>? children;
+    final GetSignatureFlags flags;
+    final List<Group>? groups;
+    final int id;
+    final IndexSignature? indexSignature;
+    final int kind;
+    final String kindString;
+    final String name;
+    final List<TentacledSignature>? signatures;
+    final List<Source> sources;
+
+    FluffyDeclaration({
+        this.children,
+        required this.flags,
+        this.groups,
+        required this.id,
+        this.indexSignature,
+        required this.kind,
+        required this.kindString,
+        required this.name,
+        this.signatures,
+        required this.sources,
+    });
+
+    factory FluffyDeclaration.fromJson(Map<String, dynamic> json) => FluffyDeclaration(
+        children: json["children"] == null ? null : List<StickyChild>.from(json["children"]!.map((x) => StickyChild.fromJson(x))),
+        flags: GetSignatureFlags.fromJson(json["flags"]),
+        groups: json["groups"] == null ? null : List<Group>.from(json["groups"]!.map((x) => Group.fromJson(x))),
+        id: json["id"],
+        indexSignature: json["indexSignature"] == null ? null : IndexSignature.fromJson(json["indexSignature"]),
+        kind: json["kind"],
+        kindString: json["kindString"],
+        name: json["name"],
+        signatures: json["signatures"] == null ? null : List<TentacledSignature>.from(json["signatures"]!.map((x) => TentacledSignature.fromJson(x))),
+        sources: List<Source>.from(json["sources"].map((x) => Source.fromJson(x))),
+    );
+
+    Map<String, dynamic> toJson() => {
+        "children": children == null ? null : List<dynamic>.from(children!.map((x) => x.toJson())),
+        "flags": flags.toJson(),
+        "groups": groups == null ? null : List<dynamic>.from(groups!.map((x) => x.toJson())),
+        "id": id,
+        "indexSignature": indexSignature?.toJson(),
+        "kind": kind,
+        "kindString": kindString,
+        "name": name,
+        "signatures": signatures == null ? null : List<dynamic>.from(signatures!.map((x) => x.toJson())),
+        "sources": List<dynamic>.from(sources.map((x) => x.toJson())),
+    };
+}
+
+class StickyChild {
+    final FluffyComment? comment;
+    final FluffyFlags flags;
+    final int id;
+    final int kind;
+    final PurpleKindString kindString;
+    final String name;
+    final List<Source> sources;
+    final IndecentType type;
+
+    StickyChild({
+        this.comment,
+        required this.flags,
+        required this.id,
+        required this.kind,
+        required this.kindString,
+        required this.name,
+        required this.sources,
+        required this.type,
+    });
+
+    factory StickyChild.fromJson(Map<String, dynamic> json) => StickyChild(
+        comment: json["comment"] == null ? null : FluffyComment.fromJson(json["comment"]),
+        flags: FluffyFlags.fromJson(json["flags"]),
+        id: json["id"],
+        kind: json["kind"],
+        kindString: purpleKindStringValues.map[json["kindString"]]!,
+        name: json["name"],
+        sources: List<Source>.from(json["sources"].map((x) => Source.fromJson(x))),
+        type: IndecentType.fromJson(json["type"]),
+    );
+
+    Map<String, dynamic> toJson() => {
+        "comment": comment?.toJson(),
+        "flags": flags.toJson(),
+        "id": id,
+        "kind": kind,
+        "kindString": purpleKindStringValues.reverse[kindString],
+        "name": name,
+        "sources": List<dynamic>.from(sources.map((x) => x.toJson())),
+        "type": type.toJson(),
+    };
+}
+
+class IndecentType {
+    final GetSignature? declaration;
+    final List<ElementType>? elements;
+    final Name? name;
+    final TypeEnum type;
+
+    IndecentType({
+        this.declaration,
+        this.elements,
+        this.name,
+        required this.type,
+    });
+
+    factory IndecentType.fromJson(Map<String, dynamic> json) => IndecentType(
+        declaration: json["declaration"] == null ? null : GetSignature.fromJson(json["declaration"]),
+        elements: json["elements"] == null ? null : List<ElementType>.from(json["elements"]!.map((x) => ElementType.fromJson(x))),
+        name: nameValues.map[json["name"]],
+        type: typeEnumValues.map[json["type"]]!,
+    );
+
+    Map<String, dynamic> toJson() => {
+        "declaration": declaration?.toJson(),
+        "elements": elements == null ? null : List<dynamic>.from(elements!.map((x) => x.toJson())),
+        "name": nameValues.reverse[name],
+        "type": typeEnumValues.reverse[type],
+    };
+}
+
+class IndexSignature {
+    final GetSignatureFlags flags;
+    final int id;
+    final int kind;
+    final String kindString;
+    final String name;
+    final List<GetSignature> parameters;
+    final HilariousType type;
+
+    IndexSignature({
+        required this.flags,
+        required this.id,
+        required this.kind,
+        required this.kindString,
+        required this.name,
+        required this.parameters,
+        required this.type,
+    });
+
+    factory IndexSignature.fromJson(Map<String, dynamic> json) => IndexSignature(
+        flags: GetSignatureFlags.fromJson(json["flags"]),
+        id: json["id"],
+        kind: json["kind"],
+        kindString: json["kindString"],
+        name: json["name"],
+        parameters: List<GetSignature>.from(json["parameters"].map((x) => GetSignature.fromJson(x))),
+        type: HilariousType.fromJson(json["type"]),
+    );
+
+    Map<String, dynamic> toJson() => {
+        "flags": flags.toJson(),
+        "id": id,
+        "kind": kind,
+        "kindString": kindString,
+        "name": name,
+        "parameters": List<dynamic>.from(parameters.map((x) => x.toJson())),
+        "type": type.toJson(),
+    };
+}
+
+class HilariousType {
+    final GetSignature declaration;
+    final TypeEnum type;
+
+    HilariousType({
+        required this.declaration,
+        required this.type,
+    });
+
+    factory HilariousType.fromJson(Map<String, dynamic> json) => HilariousType(
+        declaration: GetSignature.fromJson(json["declaration"]),
+        type: typeEnumValues.map[json["type"]]!,
+    );
+
+    Map<String, dynamic> toJson() => {
+        "declaration": declaration.toJson(),
+        "type": typeEnumValues.reverse[type],
+    };
+}
+
+class TentacledSignature {
+    final IndigoComment? comment;
+    final GetSignatureFlags flags;
+    final int id;
+    final int kind;
+    final SignatureKindString kindString;
+    final String name;
+    final List<FluffyParameter>? parameters;
+    final ExtendedBy type;
+
+    TentacledSignature({
+        this.comment,
+        required this.flags,
+        required this.id,
+        required this.kind,
+        required this.kindString,
+        required this.name,
+        this.parameters,
+        required this.type,
+    });
+
+    factory TentacledSignature.fromJson(Map<String, dynamic> json) => TentacledSignature(
+        comment: json["comment"] == null ? null : IndigoComment.fromJson(json["comment"]),
+        flags: GetSignatureFlags.fromJson(json["flags"]),
+        id: json["id"],
+        kind: json["kind"],
+        kindString: signatureKindStringValues.map[json["kindString"]]!,
+        name: json["name"],
+        parameters: json["parameters"] == null ? null : List<FluffyParameter>.from(json["parameters"]!.map((x) => FluffyParameter.fromJson(x))),
+        type: ExtendedBy.fromJson(json["type"]),
+    );
+
+    Map<String, dynamic> toJson() => {
+        "comment": comment?.toJson(),
+        "flags": flags.toJson(),
+        "id": id,
+        "kind": kind,
+        "kindString": signatureKindStringValues.reverse[kindString],
+        "name": name,
+        "parameters": parameters == null ? null : List<dynamic>.from(parameters!.map((x) => x.toJson())),
+        "type": type.toJson(),
+    };
+}
+
+class IndigoComment {
+    final String returns;
+    final String shortText;
+
+    IndigoComment({
+        required this.returns,
+        required this.shortText,
+    });
+
+    factory IndigoComment.fromJson(Map<String, dynamic> json) => IndigoComment(
+        returns: json["returns"],
+        shortText: json["shortText"],
+    );
+
+    Map<String, dynamic> toJson() => {
+        "returns": returns,
+        "shortText": shortText,
+    };
+}
+
+class FluffyParameter {
+    final FluffyComment? comment;
+    final FluffyFlags flags;
+    final int id;
+    final int kind;
+    final String kindString;
+    final String name;
+    final List<Source>? sources;
+    final ElementType type;
+
+    FluffyParameter({
+        this.comment,
+        required this.flags,
+        required this.id,
+        required this.kind,
+        required this.kindString,
+        required this.name,
+        this.sources,
+        required this.type,
+    });
+
+    factory FluffyParameter.fromJson(Map<String, dynamic> json) => FluffyParameter(
+        comment: json["comment"] == null ? null : FluffyComment.fromJson(json["comment"]),
+        flags: FluffyFlags.fromJson(json["flags"]),
+        id: json["id"],
+        kind: json["kind"],
+        kindString: json["kindString"],
+        name: json["name"],
+        sources: json["sources"] == null ? null : List<Source>.from(json["sources"]!.map((x) => Source.fromJson(x))),
+        type: ElementType.fromJson(json["type"]),
+    );
+
+    Map<String, dynamic> toJson() => {
+        "comment": comment?.toJson(),
+        "flags": flags.toJson(),
+        "id": id,
+        "kind": kind,
+        "kindString": kindString,
+        "name": name,
+        "sources": sources == null ? null : List<dynamic>.from(sources!.map((x) => x.toJson())),
+        "type": type.toJson(),
+    };
+}
+
+class PurpleTypeArgument {
+    final ElementType target;
+    final String type;
+    final String typeArgumentOperator;
+
+    PurpleTypeArgument({
+        required this.target,
+        required this.type,
+        required this.typeArgumentOperator,
+    });
+
+    factory PurpleTypeArgument.fromJson(Map<String, dynamic> json) => PurpleTypeArgument(
+        target: ElementType.fromJson(json["target"]),
+        type: json["type"],
+        typeArgumentOperator: json["operator"],
+    );
+
+    Map<String, dynamic> toJson() => {
+        "target": target.toJson(),
+        "type": type,
+        "operator": typeArgumentOperator,
+    };
+}
+
+class IndecentFlags {
+    final bool? hasExportAssignment;
+    final bool? isAbstract;
+    final bool? isConst;
+    final bool? isExported;
+    final bool? isLet;
+    final bool? isPrivate;
+    final bool? isProtected;
+
+    IndecentFlags({
+        this.hasExportAssignment,
+        this.isAbstract,
+        this.isConst,
+        this.isExported,
+        this.isLet,
+        this.isPrivate,
+        this.isProtected,
+    });
+
+    factory IndecentFlags.fromJson(Map<String, dynamic> json) => IndecentFlags(
+        hasExportAssignment: json["hasExportAssignment"],
+        isAbstract: json["isAbstract"],
+        isConst: json["isConst"],
+        isExported: json["isExported"],
+        isLet: json["isLet"],
+        isPrivate: json["isPrivate"],
+        isProtected: json["isProtected"],
+    );
+
+    Map<String, dynamic> toJson() => {
+        "hasExportAssignment": hasExportAssignment,
+        "isAbstract": isAbstract,
+        "isConst": isConst,
+        "isExported": isExported,
+        "isLet": isLet,
+        "isPrivate": isPrivate,
+        "isProtected": isProtected,
+    };
+}
+
+enum FluffyKindString {
+    MODULE,
+    CLASS,
+    VARIABLE,
+    FUNCTION,
+    INTERFACE,
+    ENUMERATION,
+    OBJECT_LITERAL,
+    TYPE_ALIAS
+}
+
+final fluffyKindStringValues = EnumValues({
+    "Module": FluffyKindString.MODULE,
+    "Class": FluffyKindString.CLASS,
+    "Variable": FluffyKindString.VARIABLE,
+    "Function": FluffyKindString.FUNCTION,
+    "Interface": FluffyKindString.INTERFACE,
+    "Enumeration": FluffyKindString.ENUMERATION,
+    "Object literal": FluffyKindString.OBJECT_LITERAL,
+    "Type alias": FluffyKindString.TYPE_ALIAS
+});
+
+class StickySignature {
+    final StickyComment comment;
+    final IndigoFlags flags;
+    final int id;
+    final int kind;
+    final SignatureKindString kindString;
+    final String name;
+    final List<TentacledParameter>? parameters;
+    final CunningType type;
+    final List<GetSignature>? typeParameter;
+
+    StickySignature({
+        required this.comment,
+        required this.flags,
+        required this.id,
+        required this.kind,
+        required this.kindString,
+        required this.name,
+        this.parameters,
+        required this.type,
+        this.typeParameter,
+    });
+
+    factory StickySignature.fromJson(Map<String, dynamic> json) => StickySignature(
+        comment: StickyComment.fromJson(json["comment"]),
+        flags: IndigoFlags.fromJson(json["flags"]),
+        id: json["id"],
+        kind: json["kind"],
+        kindString: signatureKindStringValues.map[json["kindString"]]!,
+        name: json["name"],
+        parameters: json["parameters"] == null ? null : List<TentacledParameter>.from(json["parameters"]!.map((x) => TentacledParameter.fromJson(x))),
+        type: CunningType.fromJson(json["type"]),
+        typeParameter: json["typeParameter"] == null ? null : List<GetSignature>.from(json["typeParameter"]!.map((x) => GetSignature.fromJson(x))),
+    );
+
+    Map<String, dynamic> toJson() => {
+        "comment": comment.toJson(),
+        "flags": flags.toJson(),
+        "id": id,
+        "kind": kind,
+        "kindString": signatureKindStringValues.reverse[kindString],
+        "name": name,
+        "parameters": parameters == null ? null : List<dynamic>.from(parameters!.map((x) => x.toJson())),
+        "type": type.toJson(),
+        "typeParameter": typeParameter == null ? null : List<dynamic>.from(typeParameter!.map((x) => x.toJson())),
+    };
+}
+
+class TentacledParameter {
+    final TentacledComment? comment;
+    final String? defaultValue;
+    final TentacledFlags flags;
+    final int id;
+    final int kind;
+    final ParameterKindString kindString;
+    final String name;
+    final String? originalName;
+    final AmbitiousType type;
+
+    TentacledParameter({
+        this.comment,
+        this.defaultValue,
+        required this.flags,
+        required this.id,
+        required this.kind,
+        required this.kindString,
+        required this.name,
+        this.originalName,
+        required this.type,
+    });
+
+    factory TentacledParameter.fromJson(Map<String, dynamic> json) => TentacledParameter(
+        comment: json["comment"] == null ? null : TentacledComment.fromJson(json["comment"]),
+        defaultValue: json["defaultValue"],
+        flags: TentacledFlags.fromJson(json["flags"]),
+        id: json["id"],
+        kind: json["kind"],
+        kindString: parameterKindStringValues.map[json["kindString"]]!,
+        name: json["name"],
+        originalName: json["originalName"],
+        type: AmbitiousType.fromJson(json["type"]),
+    );
+
+    Map<String, dynamic> toJson() => {
+        "comment": comment?.toJson(),
+        "defaultValue": defaultValue,
+        "flags": flags.toJson(),
+        "id": id,
+        "kind": kind,
+        "kindString": parameterKindStringValues.reverse[kindString],
+        "name": name,
+        "originalName": originalName,
+        "type": type.toJson(),
+    };
+}
+
+class AmbitiousType {
+    final TentacledDeclaration? declaration;
+    final ElementType? elementType;
+    final int? id;
+    final String? name;
+    final TypeEnum type;
+    final List<ElementType>? typeArguments;
+
+    AmbitiousType({
+        this.declaration,
+        this.elementType,
+        this.id,
+        this.name,
+        required this.type,
+        this.typeArguments,
+    });
+
+    factory AmbitiousType.fromJson(Map<String, dynamic> json) => AmbitiousType(
+        declaration: json["declaration"] == null ? null : TentacledDeclaration.fromJson(json["declaration"]),
+        elementType: json["elementType"] == null ? null : ElementType.fromJson(json["elementType"]),
+        id: json["id"],
+        name: json["name"],
+        type: typeEnumValues.map[json["type"]]!,
+        typeArguments: json["typeArguments"] == null ? null : List<ElementType>.from(json["typeArguments"]!.map((x) => ElementType.fromJson(x))),
+    );
+
+    Map<String, dynamic> toJson() => {
+        "declaration": declaration?.toJson(),
+        "elementType": elementType?.toJson(),
+        "id": id,
+        "name": name,
+        "type": typeEnumValues.reverse[type],
+        "typeArguments": typeArguments == null ? null : List<dynamic>.from(typeArguments!.map((x) => x.toJson())),
+    };
+}
+
+class TentacledDeclaration {
+    final List<IndigoChild>? children;
+    final GetSignatureFlags flags;
+    final List<Group>? groups;
+    final int id;
+    final IndexSignatureElement? indexSignature;
+    final int kind;
+    final String kindString;
+    final String name;
+    final List<GetSignature>? signatures;
+    final List<Source> sources;
+
+    TentacledDeclaration({
+        this.children,
+        required this.flags,
+        this.groups,
+        required this.id,
+        this.indexSignature,
+        required this.kind,
+        required this.kindString,
+        required this.name,
+        this.signatures,
+        required this.sources,
+    });
+
+    factory TentacledDeclaration.fromJson(Map<String, dynamic> json) => TentacledDeclaration(
+        children: json["children"] == null ? null : List<IndigoChild>.from(json["children"]!.map((x) => IndigoChild.fromJson(x))),
+        flags: GetSignatureFlags.fromJson(json["flags"]),
+        groups: json["groups"] == null ? null : List<Group>.from(json["groups"]!.map((x) => Group.fromJson(x))),
+        id: json["id"],
+        indexSignature: json["indexSignature"] == null ? null : IndexSignatureElement.fromJson(json["indexSignature"]),
+        kind: json["kind"],
+        kindString: json["kindString"],
+        name: json["name"],
+        signatures: json["signatures"] == null ? null : List<GetSignature>.from(json["signatures"]!.map((x) => GetSignature.fromJson(x))),
+        sources: List<Source>.from(json["sources"].map((x) => Source.fromJson(x))),
+    );
+
+    Map<String, dynamic> toJson() => {
+        "children": children == null ? null : List<dynamic>.from(children!.map((x) => x.toJson())),
+        "flags": flags.toJson(),
+        "groups": groups == null ? null : List<dynamic>.from(groups!.map((x) => x.toJson())),
+        "id": id,
+        "indexSignature": indexSignature?.toJson(),
+        "kind": kind,
+        "kindString": kindString,
+        "name": name,
+        "signatures": signatures == null ? null : List<dynamic>.from(signatures!.map((x) => x.toJson())),
+        "sources": List<dynamic>.from(sources.map((x) => x.toJson())),
+    };
+}
+
+class IndigoChild {
+    final FluffyComment comment;
+    final String? defaultValue;
+    final FluffyFlags flags;
+    final int id;
+    final int kind;
+    final PurpleKindString kindString;
+    final String name;
+    final List<Source> sources;
+    final IndecentType type;
+
+    IndigoChild({
+        required this.comment,
+        this.defaultValue,
+        required this.flags,
+        required this.id,
+        required this.kind,
+        required this.kindString,
+        required this.name,
+        required this.sources,
+        required this.type,
+    });
+
+    factory IndigoChild.fromJson(Map<String, dynamic> json) => IndigoChild(
+        comment: FluffyComment.fromJson(json["comment"]),
+        defaultValue: json["defaultValue"],
+        flags: FluffyFlags.fromJson(json["flags"]),
+        id: json["id"],
+        kind: json["kind"],
+        kindString: purpleKindStringValues.map[json["kindString"]]!,
+        name: json["name"],
+        sources: List<Source>.from(json["sources"].map((x) => Source.fromJson(x))),
+        type: IndecentType.fromJson(json["type"]),
+    );
+
+    Map<String, dynamic> toJson() => {
+        "comment": comment.toJson(),
+        "defaultValue": defaultValue,
+        "flags": flags.toJson(),
+        "id": id,
+        "kind": kind,
+        "kindString": purpleKindStringValues.reverse[kindString],
+        "name": name,
+        "sources": List<dynamic>.from(sources.map((x) => x.toJson())),
+        "type": type.toJson(),
+    };
+}
+
+class CunningType {
+    final PurpleDeclaration? declaration;
+    final int? id;
+    final Name? name;
+    final TypeEnum type;
+    final List<ElementType>? typeArguments;
+
+    CunningType({
+        this.declaration,
+        this.id,
+        this.name,
+        required this.type,
+        this.typeArguments,
+    });
+
+    factory CunningType.fromJson(Map<String, dynamic> json) => CunningType(
+        declaration: json["declaration"] == null ? null : PurpleDeclaration.fromJson(json["declaration"]),
+        id: json["id"],
+        name: nameValues.map[json["name"]],
+        type: typeEnumValues.map[json["type"]]!,
+        typeArguments: json["typeArguments"] == null ? null : List<ElementType>.from(json["typeArguments"]!.map((x) => ElementType.fromJson(x))),
+    );
+
+    Map<String, dynamic> toJson() => {
+        "declaration": declaration?.toJson(),
+        "id": id,
+        "name": nameValues.reverse[name],
+        "type": typeEnumValues.reverse[type],
+        "typeArguments": typeArguments == null ? null : List<dynamic>.from(typeArguments!.map((x) => x.toJson())),
+    };
+}
+
+class MagentaType {
+    final StickyDeclaration? declaration;
+    final ElementType? elementType;
+    final List<ExtendedBy>? elements;
+    final int? id;
+    final String? name;
+    final TypeEnum type;
+    final List<FluffyTypeArgument>? typeArguments;
+    final List<ExtendedBy>? types;
+    final String? value;
+
+    MagentaType({
+        this.declaration,
+        this.elementType,
+        this.elements,
+        this.id,
+        this.name,
+        required this.type,
+        this.typeArguments,
+        this.types,
+        this.value,
+    });
+
+    factory MagentaType.fromJson(Map<String, dynamic> json) => MagentaType(
+        declaration: json["declaration"] == null ? null : StickyDeclaration.fromJson(json["declaration"]),
+        elementType: json["elementType"] == null ? null : ElementType.fromJson(json["elementType"]),
+        elements: json["elements"] == null ? null : List<ExtendedBy>.from(json["elements"]!.map((x) => ExtendedBy.fromJson(x))),
+        id: json["id"],
+        name: json["name"],
+        type: typeEnumValues.map[json["type"]]!,
+        typeArguments: json["typeArguments"] == null ? null : List<FluffyTypeArgument>.from(json["typeArguments"]!.map((x) => FluffyTypeArgument.fromJson(x))),
+        types: json["types"] == null ? null : List<ExtendedBy>.from(json["types"]!.map((x) => ExtendedBy.fromJson(x))),
+        value: json["value"],
+    );
+
+    Map<String, dynamic> toJson() => {
+        "declaration": declaration?.toJson(),
+        "elementType": elementType?.toJson(),
+        "elements": elements == null ? null : List<dynamic>.from(elements!.map((x) => x.toJson())),
+        "id": id,
+        "name": name,
+        "type": typeEnumValues.reverse[type],
+        "typeArguments": typeArguments == null ? null : List<dynamic>.from(typeArguments!.map((x) => x.toJson())),
+        "types": types == null ? null : List<dynamic>.from(types!.map((x) => x.toJson())),
+        "value": value,
+    };
+}
+
+class StickyDeclaration {
+    final List<IndecentChild>? children;
+    final GetSignatureFlags flags;
+    final List<Group>? groups;
+    final int id;
+    final int kind;
+    final String kindString;
+    final String name;
+    final List<GetSignature> signatures;
+    final List<Source> sources;
+
+    StickyDeclaration({
+        this.children,
+        required this.flags,
+        this.groups,
+        required this.id,
+        required this.kind,
+        required this.kindString,
+        required this.name,
+        required this.signatures,
+        required this.sources,
+    });
+
+    factory StickyDeclaration.fromJson(Map<String, dynamic> json) => StickyDeclaration(
+        children: json["children"] == null ? null : List<IndecentChild>.from(json["children"]!.map((x) => IndecentChild.fromJson(x))),
+        flags: GetSignatureFlags.fromJson(json["flags"]),
+        groups: json["groups"] == null ? null : List<Group>.from(json["groups"]!.map((x) => Group.fromJson(x))),
+        id: json["id"],
+        kind: json["kind"],
+        kindString: json["kindString"],
+        name: json["name"],
+        signatures: List<GetSignature>.from(json["signatures"].map((x) => GetSignature.fromJson(x))),
+        sources: List<Source>.from(json["sources"].map((x) => Source.fromJson(x))),
+    );
+
+    Map<String, dynamic> toJson() => {
+        "children": children == null ? null : List<dynamic>.from(children!.map((x) => x.toJson())),
+        "flags": flags.toJson(),
+        "groups": groups == null ? null : List<dynamic>.from(groups!.map((x) => x.toJson())),
+        "id": id,
+        "kind": kind,
+        "kindString": kindString,
+        "name": name,
+        "signatures": List<dynamic>.from(signatures.map((x) => x.toJson())),
+        "sources": List<dynamic>.from(sources.map((x) => x.toJson())),
+    };
+}
+
+class IndecentChild {
+    final FluffyFlags flags;
+    final int id;
+    final int kind;
+    final PurpleKindString kindString;
+    final String name;
+    final List<Source> sources;
+    final FriskyType type;
+
+    IndecentChild({
+        required this.flags,
+        required this.id,
+        required this.kind,
+        required this.kindString,
+        required this.name,
+        required this.sources,
+        required this.type,
+    });
+
+    factory IndecentChild.fromJson(Map<String, dynamic> json) => IndecentChild(
+        flags: FluffyFlags.fromJson(json["flags"]),
+        id: json["id"],
+        kind: json["kind"],
+        kindString: purpleKindStringValues.map[json["kindString"]]!,
+        name: json["name"],
+        sources: List<Source>.from(json["sources"].map((x) => Source.fromJson(x))),
+        type: FriskyType.fromJson(json["type"]),
+    );
+
+    Map<String, dynamic> toJson() => {
+        "flags": flags.toJson(),
+        "id": id,
+        "kind": kind,
+        "kindString": purpleKindStringValues.reverse[kindString],
+        "name": name,
+        "sources": List<dynamic>.from(sources.map((x) => x.toJson())),
+        "type": type.toJson(),
+    };
+}
+
+class FriskyType {
+    final IndigoDeclaration? declaration;
+    final Name? name;
+    final TypeEnum type;
+
+    FriskyType({
+        this.declaration,
+        this.name,
+        required this.type,
+    });
+
+    factory FriskyType.fromJson(Map<String, dynamic> json) => FriskyType(
+        declaration: json["declaration"] == null ? null : IndigoDeclaration.fromJson(json["declaration"]),
+        name: nameValues.map[json["name"]],
+        type: typeEnumValues.map[json["type"]]!,
+    );
+
+    Map<String, dynamic> toJson() => {
+        "declaration": declaration?.toJson(),
+        "name": nameValues.reverse[name],
+        "type": typeEnumValues.reverse[type],
+    };
+}
+
+class IndigoDeclaration {
+    final List<GetSignature>? children;
+    final GetSignatureFlags flags;
+    final List<Group>? groups;
+    final int id;
+    final int kind;
+    final String kindString;
+    final String name;
+    final List<GetSignature>? signatures;
+    final List<Source> sources;
+
+    IndigoDeclaration({
+        this.children,
+        required this.flags,
+        this.groups,
+        required this.id,
+        required this.kind,
+        required this.kindString,
+        required this.name,
+        this.signatures,
+        required this.sources,
+    });
+
+    factory IndigoDeclaration.fromJson(Map<String, dynamic> json) => IndigoDeclaration(
+        children: json["children"] == null ? null : List<GetSignature>.from(json["children"]!.map((x) => GetSignature.fromJson(x))),
+        flags: GetSignatureFlags.fromJson(json["flags"]),
+        groups: json["groups"] == null ? null : List<Group>.from(json["groups"]!.map((x) => Group.fromJson(x))),
+        id: json["id"],
+        kind: json["kind"],
+        kindString: json["kindString"],
+        name: json["name"],
+        signatures: json["signatures"] == null ? null : List<GetSignature>.from(json["signatures"]!.map((x) => GetSignature.fromJson(x))),
+        sources: List<Source>.from(json["sources"].map((x) => Source.fromJson(x))),
+    );
+
+    Map<String, dynamic> toJson() => {
+        "children": children == null ? null : List<dynamic>.from(children!.map((x) => x.toJson())),
+        "flags": flags.toJson(),
+        "groups": groups == null ? null : List<dynamic>.from(groups!.map((x) => x.toJson())),
+        "id": id,
+        "kind": kind,
+        "kindString": kindString,
+        "name": name,
+        "signatures": signatures == null ? null : List<dynamic>.from(signatures!.map((x) => x.toJson())),
+        "sources": List<dynamic>.from(sources.map((x) => x.toJson())),
+    };
+}
+
+class FluffyTypeArgument {
+    final TypeEnum type;
+    final List<ElementType> types;
+
+    FluffyTypeArgument({
+        required this.type,
+        required this.types,
+    });
+
+    factory FluffyTypeArgument.fromJson(Map<String, dynamic> json) => FluffyTypeArgument(
+        type: typeEnumValues.map[json["type"]]!,
+        types: List<ElementType>.from(json["types"].map((x) => ElementType.fromJson(x))),
+    );
+
+    Map<String, dynamic> toJson() => {
+        "type": typeEnumValues.reverse[type],
+        "types": List<dynamic>.from(types.map((x) => x.toJson())),
+    };
+}
+
+class TypeParameter {
+    final PurpleComment? comment;
+    final GetSignatureFlags flags;
+    final int id;
+    final int kind;
+    final String kindString;
+    final String name;
+    final MischievousType? type;
+
+    TypeParameter({
+        this.comment,
+        required this.flags,
+        required this.id,
+        required this.kind,
+        required this.kindString,
+        required this.name,
+        this.type,
+    });
+
+    factory TypeParameter.fromJson(Map<String, dynamic> json) => TypeParameter(
+        comment: json["comment"] == null ? null : PurpleComment.fromJson(json["comment"]),
+        flags: GetSignatureFlags.fromJson(json["flags"]),
+        id: json["id"],
+        kind: json["kind"],
+        kindString: json["kindString"],
+        name: json["name"],
+        type: json["type"] == null ? null : MischievousType.fromJson(json["type"]),
+    );
+
+    Map<String, dynamic> toJson() => {
+        "comment": comment?.toJson(),
+        "flags": flags.toJson(),
+        "id": id,
+        "kind": kind,
+        "kindString": kindString,
+        "name": name,
+        "type": type?.toJson(),
+    };
+}
+
+class MischievousType {
+    final int? id;
+    final Name? name;
+    final ElementType? target;
+    final String type;
+    final String? typeOperator;
+
+    MischievousType({
+        this.id,
+        this.name,
+        this.target,
+        required this.type,
+        this.typeOperator,
+    });
+
+    factory MischievousType.fromJson(Map<String, dynamic> json) => MischievousType(
+        id: json["id"],
+        name: nameValues.map[json["name"]],
+        target: json["target"] == null ? null : ElementType.fromJson(json["target"]),
+        type: json["type"],
+        typeOperator: json["operator"],
+    );
+
+    Map<String, dynamic> toJson() => {
+        "id": id,
+        "name": nameValues.reverse[name],
+        "target": target?.toJson(),
+        "type": type,
+        "operator": typeOperator,
+    };
+}
+
+class IndecentComment {
+    final String shortText;
+    final List<Tag>? tags;
+
+    IndecentComment({
+        required this.shortText,
+        this.tags,
+    });
+
+    factory IndecentComment.fromJson(Map<String, dynamic> json) => IndecentComment(
+        shortText: json["shortText"],
+        tags: json["tags"] == null ? null : List<Tag>.from(json["tags"]!.map((x) => Tag.fromJson(x))),
+    );
+
+    Map<String, dynamic> toJson() => {
+        "shortText": shortText,
+        "tags": tags == null ? null : List<dynamic>.from(tags!.map((x) => x.toJson())),
+    };
+}
+
+enum TentacledKindString {
+    EXTERNAL_MODULE
+}
+
+final tentacledKindStringValues = EnumValues({
+    "External module": TentacledKindString.EXTERNAL_MODULE
+});
+
+class EnumValues<T> {
+    Map<String, T> map;
+    late Map<T, String> reverseMap;
+
+    EnumValues(this.map);
+
+    Map<T, String> get reverse {
+            reverseMap = map.map((k, v) => MapEntry(v, k));
+            return reverseMap;
+    }
+}
diff --git a/head/dart/test/inputs/json/priority/combinations3.json/default/TopLevel.dart b/head/dart/test/inputs/json/priority/combinations3.json/default/TopLevel.dart
new file mode 100644
index 0000000..f08aef7
--- /dev/null
+++ b/head/dart/test/inputs/json/priority/combinations3.json/default/TopLevel.dart
@@ -0,0 +1,1537 @@
+// To parse this JSON data, do
+//
+//     final topLevel = topLevelFromJson(jsonString);
+
+import 'dart:convert';
+
+TopLevel topLevelFromJson(String str) => TopLevel.fromJson(json.decode(str));
+
+String topLevelToJson(TopLevel data) => json.encode(data.toJson());
+
+class TopLevel {
+    final List<dynamic> juror;
+    final List<dynamic> kongoni;
+    final List<dynamic> ladronism;
+    final List<dynamic> landlubberly;
+    final List<dynamic> listener;
+    final List<dynamic> lupus;
+    final List<Maslin> maslin;
+    final List<dynamic> monazite;
+    final List<dynamic> monoliteral;
+    final List<dynamic> monotheistically;
+    final List<dynamic> montage;
+    final List<dynamic> moralness;
+    final List<MonaziteClass?> mowra;
+    final List<dynamic> mulishly;
+    final List<dynamic> myoscope;
+    final List<List<int?>?> nach;
+    final List<dynamic> neuromastic;
+    final List<Noncontributing> noncontributing;
+    final List<dynamic> nonnervous;
+    final List<dynamic> nonvaluation;
+    final List<dynamic> occupationalist;
+    final List<dynamic> outrival;
+    final List<dynamic> paleographically;
+    final List<dynamic> pamphletwise;
+    final List<dynamic> pediatrics;
+    final List<bool> perceptive;
+    final List<dynamic> piaculum;
+    final List<dynamic> piccadilly;
+    final List<dynamic> piffler;
+    final List<dynamic> pithful;
+    final List<dynamic> placuntitis;
+    final List<dynamic> plectopterous;
+    final List<Pneumocele?> pneumocele;
+    final List<dynamic> poliorcetic;
+    final List<dynamic> poormaster;
+    final List<dynamic> potwhisky;
+    final List<dynamic> practicalizer;
+    final List<dynamic> prefreshman;
+    final List<dynamic> prehensility;
+    final List<dynamic> prevoidance;
+    final List<Map<String, int?>> probant;
+    final List<dynamic> protext;
+
+    TopLevel({
+        required this.juror,
+        required this.kongoni,
+        required this.ladronism,
+        required this.landlubberly,
+        required this.listener,
+        required this.lupus,
+        required this.maslin,
+        required this.monazite,
+        required this.monoliteral,
+        required this.monotheistically,
+        required this.montage,
+        required this.moralness,
+        required this.mowra,
+        required this.mulishly,
+        required this.myoscope,
+        required this.nach,
+        required this.neuromastic,
+        required this.noncontributing,
+        required this.nonnervous,
+        required this.nonvaluation,
+        required this.occupationalist,
+        required this.outrival,
+        required this.paleographically,
+        required this.pamphletwise,
+        required this.pediatrics,
+        required this.perceptive,
+        required this.piaculum,
+        required this.piccadilly,
+        required this.piffler,
+        required this.pithful,
+        required this.placuntitis,
+        required this.plectopterous,
+        required this.pneumocele,
+        required this.poliorcetic,
+        required this.poormaster,
+        required this.potwhisky,
+        required this.practicalizer,
+        required this.prefreshman,
+        required this.prehensility,
+        required this.prevoidance,
+        required this.probant,
+        required this.protext,
+    });
+
+    factory TopLevel.fromJson(Map<String, dynamic> json) => TopLevel(
+        juror: List<dynamic>.from(json["juror"].map((x) => x)),
+        kongoni: List<dynamic>.from(json["kongoni"].map((x) => x)),
+        ladronism: List<dynamic>.from(json["ladronism"].map((x) => x)),
+        landlubberly: List<dynamic>.from(json["landlubberly"].map((x) => x)),
+        listener: List<dynamic>.from(json["listener"].map((x) => x)),
+        lupus: List<dynamic>.from(json["lupus"].map((x) => x)),
+        maslin: List<Maslin>.from(json["maslin"].map((x) => Maslin.fromJson(x))),
+        monazite: List<dynamic>.from(json["monazite"].map((x) => x)),
+        monoliteral: List<dynamic>.from(json["monoliteral"].map((x) => x)),
+        monotheistically: List<dynamic>.from(json["monotheistically"].map((x) => x)),
+        montage: List<dynamic>.from(json["montage"].map((x) => x)),
+        moralness: List<dynamic>.from(json["moralness"].map((x) => x)),
+        mowra: List<MonaziteClass?>.from(json["mowra"].map((x) => x == null ? null : MonaziteClass.fromJson(x))),
+        mulishly: List<dynamic>.from(json["mulishly"].map((x) => x)),
+        myoscope: List<dynamic>.from(json["myoscope"].map((x) => x)),
+        nach: List<List<int?>?>.from(json["nach"].map((x) => x == null ? null : List<int?>.from(x!.map((x) => x)))),
+        neuromastic: List<dynamic>.from(json["neuromastic"].map((x) => x)),
+        noncontributing: List<Noncontributing>.from(json["noncontributing"].map((x) => Noncontributing.fromJson(x))),
+        nonnervous: List<dynamic>.from(json["nonnervous"].map((x) => x)),
+        nonvaluation: List<dynamic>.from(json["nonvaluation"].map((x) => x)),
+        occupationalist: List<dynamic>.from(json["occupationalist"].map((x) => x)),
+        outrival: List<dynamic>.from(json["outrival"].map((x) => x)),
+        paleographically: List<dynamic>.from(json["paleographically"].map((x) => x)),
+        pamphletwise: List<dynamic>.from(json["pamphletwise"].map((x) => x)),
+        pediatrics: List<dynamic>.from(json["pediatrics"].map((x) => x)),
+        perceptive: List<bool>.from(json["perceptive"].map((x) => x)),
+        piaculum: List<dynamic>.from(json["piaculum"].map((x) => x)),
+        piccadilly: List<dynamic>.from(json["piccadilly"].map((x) => x)),
+        piffler: List<dynamic>.from(json["piffler"].map((x) => x)),
+        pithful: List<dynamic>.from(json["pithful"].map((x) => x)),
+        placuntitis: List<dynamic>.from(json["placuntitis"].map((x) => x)),
+        plectopterous: List<dynamic>.from(json["plectopterous"].map((x) => x)),
+        pneumocele: List<Pneumocele?>.from(json["pneumocele"].map((x) => x == null ? null : Pneumocele.fromJson(x))),
+        poliorcetic: List<dynamic>.from(json["poliorcetic"].map((x) => x)),
+        poormaster: List<dynamic>.from(json["poormaster"].map((x) => x)),
+        potwhisky: List<dynamic>.from(json["potwhisky"].map((x) => x)),
+        practicalizer: List<dynamic>.from(json["practicalizer"].map((x) => x)),
+        prefreshman: List<dynamic>.from(json["prefreshman"].map((x) => x)),
+        prehensility: List<dynamic>.from(json["prehensility"].map((x) => x)),
+        prevoidance: List<dynamic>.from(json["prevoidance"].map((x) => x)),
+        probant: List<Map<String, int?>>.from(json["probant"].map((x) => Map.from(x).map((k, v) => MapEntry<String, int?>(k, v)))),
+        protext: List<dynamic>.from(json["protext"].map((x) => x)),
+    );
+
+    Map<String, dynamic> toJson() => {
+        "juror": List<dynamic>.from(juror.map((x) => x)),
+        "kongoni": List<dynamic>.from(kongoni.map((x) => x)),
+        "ladronism": List<dynamic>.from(ladronism.map((x) => x)),
+        "landlubberly": List<dynamic>.from(landlubberly.map((x) => x)),
+        "listener": List<dynamic>.from(listener.map((x) => x)),
+        "lupus": List<dynamic>.from(lupus.map((x) => x)),
+        "maslin": List<dynamic>.from(maslin.map((x) => x.toJson())),
+        "monazite": List<dynamic>.from(monazite.map((x) => x)),
+        "monoliteral": List<dynamic>.from(monoliteral.map((x) => x)),
+        "monotheistically": List<dynamic>.from(monotheistically.map((x) => x)),
+        "montage": List<dynamic>.from(montage.map((x) => x)),
+        "moralness": List<dynamic>.from(moralness.map((x) => x)),
+        "mowra": List<dynamic>.from(mowra.map((x) => x?.toJson())),
+        "mulishly": List<dynamic>.from(mulishly.map((x) => x)),
+        "myoscope": List<dynamic>.from(myoscope.map((x) => x)),
+        "nach": List<dynamic>.from(nach.map((x) => x == null ? null : List<dynamic>.from(x!.map((x) => x)))),
+        "neuromastic": List<dynamic>.from(neuromastic.map((x) => x)),
+        "noncontributing": List<dynamic>.from(noncontributing.map((x) => x.toJson())),
+        "nonnervous": List<dynamic>.from(nonnervous.map((x) => x)),
+        "nonvaluation": List<dynamic>.from(nonvaluation.map((x) => x)),
+        "occupationalist": List<dynamic>.from(occupationalist.map((x) => x)),
+        "outrival": List<dynamic>.from(outrival.map((x) => x)),
+        "paleographically": List<dynamic>.from(paleographically.map((x) => x)),
+        "pamphletwise": List<dynamic>.from(pamphletwise.map((x) => x)),
+        "pediatrics": List<dynamic>.from(pediatrics.map((x) => x)),
+        "perceptive": List<dynamic>.from(perceptive.map((x) => x)),
+        "piaculum": List<dynamic>.from(piaculum.map((x) => x)),
+        "piccadilly": List<dynamic>.from(piccadilly.map((x) => x)),
+        "piffler": List<dynamic>.from(piffler.map((x) => x)),
+        "pithful": List<dynamic>.from(pithful.map((x) => x)),
+        "placuntitis": List<dynamic>.from(placuntitis.map((x) => x)),
+        "plectopterous": List<dynamic>.from(plectopterous.map((x) => x)),
+        "pneumocele": List<dynamic>.from(pneumocele.map((x) => x?.toJson())),
+        "poliorcetic": List<dynamic>.from(poliorcetic.map((x) => x)),
+        "poormaster": List<dynamic>.from(poormaster.map((x) => x)),
+        "potwhisky": List<dynamic>.from(potwhisky.map((x) => x)),
+        "practicalizer": List<dynamic>.from(practicalizer.map((x) => x)),
+        "prefreshman": List<dynamic>.from(prefreshman.map((x) => x)),
+        "prehensility": List<dynamic>.from(prehensility.map((x) => x)),
+        "prevoidance": List<dynamic>.from(prevoidance.map((x) => x)),
+        "probant": List<dynamic>.from(probant.map((x) => Map.from(x).map((k, v) => MapEntry<String, dynamic>(k, v)))),
+        "protext": List<dynamic>.from(protext.map((x) => x)),
+    };
+}
+
+class JurorClass {
+    final dynamic adipsy;
+    final dynamic auxiliator;
+    final dynamic benda;
+    final dynamic benjamin;
+    final dynamic brandling;
+    final dynamic epicurishly;
+    final dynamic eremochaetous;
+    final dynamic marten;
+    final dynamic monocline;
+    final dynamic olea;
+    final dynamic palgat;
+    final dynamic pennyworth;
+    final dynamic pioury;
+    final dynamic pragmatistic;
+    final dynamic stylelessness;
+    final dynamic systematical;
+    final dynamic thready;
+    final dynamic uncontemporary;
+    final dynamic uncouched;
+    final dynamic uninhabitedness;
+
+    JurorClass({
+        required this.adipsy,
+        required this.auxiliator,
+        required this.benda,
+        required this.benjamin,
+        required this.brandling,
+        required this.epicurishly,
+        required this.eremochaetous,
+        required this.marten,
+        required this.monocline,
+        required this.olea,
+        required this.palgat,
+        required this.pennyworth,
+        required this.pioury,
+        required this.pragmatistic,
+        required this.stylelessness,
+        required this.systematical,
+        required this.thready,
+        required this.uncontemporary,
+        required this.uncouched,
+        required this.uninhabitedness,
+    });
+
+    factory JurorClass.fromJson(Map<String, dynamic> json) => JurorClass(
+        adipsy: json["adipsy"],
+        auxiliator: json["auxiliator"],
+        benda: json["benda"],
+        benjamin: json["benjamin"],
+        brandling: json["brandling"],
+        epicurishly: json["epicurishly"],
+        eremochaetous: json["eremochaetous"],
+        marten: json["marten"],
+        monocline: json["monocline"],
+        olea: json["Olea"],
+        palgat: json["palgat"],
+        pennyworth: json["pennyworth"],
+        pioury: json["pioury"],
+        pragmatistic: json["pragmatistic"],
+        stylelessness: json["stylelessness"],
+        systematical: json["systematical"],
+        thready: json["thready"],
+        uncontemporary: json["uncontemporary"],
+        uncouched: json["uncouched"],
+        uninhabitedness: json["uninhabitedness"],
+    );
+
+    Map<String, dynamic> toJson() => {
+        "adipsy": adipsy,
+        "auxiliator": auxiliator,
+        "benda": benda,
+        "benjamin": benjamin,
+        "brandling": brandling,
+        "epicurishly": epicurishly,
+        "eremochaetous": eremochaetous,
+        "marten": marten,
+        "monocline": monocline,
+        "Olea": olea,
+        "palgat": palgat,
+        "pennyworth": pennyworth,
+        "pioury": pioury,
+        "pragmatistic": pragmatistic,
+        "stylelessness": stylelessness,
+        "systematical": systematical,
+        "thready": thready,
+        "uncontemporary": uncontemporary,
+        "uncouched": uncouched,
+        "uninhabitedness": uninhabitedness,
+    };
+}
+
+class LadronismClass {
+    final dynamic acclaimer;
+    final dynamic achree;
+    final dynamic base;
+    final dynamic conundrumize;
+    final dynamic degerminator;
+    final dynamic describable;
+    final dynamic exasperatedly;
+    final dynamic heroine;
+    final dynamic indazin;
+    final dynamic luteous;
+    final dynamic papular;
+    final dynamic pritch;
+    final dynamic prodenia;
+    final dynamic seege;
+    final dynamic shopgirl;
+    final dynamic tragedietta;
+    final dynamic unsparse;
+    final dynamic uplook;
+    final dynamic vermiformis;
+    final dynamic whafabout;
+
+    LadronismClass({
+        required this.acclaimer,
+        required this.achree,
+        required this.base,
+        required this.conundrumize,
+        required this.degerminator,
+        required this.describable,
+        required this.exasperatedly,
+        required this.heroine,
+        required this.indazin,
+        required this.luteous,
+        required this.papular,
+        required this.pritch,
+        required this.prodenia,
+        required this.seege,
+        required this.shopgirl,
+        required this.tragedietta,
+        required this.unsparse,
+        required this.uplook,
+        required this.vermiformis,
+        required this.whafabout,
+    });
+
+    factory LadronismClass.fromJson(Map<String, dynamic> json) => LadronismClass(
+        acclaimer: json["acclaimer"],
+        achree: json["achree"],
+        base: json["base"],
+        conundrumize: json["conundrumize"],
+        degerminator: json["degerminator"],
+        describable: json["describable"],
+        exasperatedly: json["exasperatedly"],
+        heroine: json["heroine"],
+        indazin: json["indazin"],
+        luteous: json["luteous"],
+        papular: json["papular"],
+        pritch: json["pritch"],
+        prodenia: json["Prodenia"],
+        seege: json["seege"],
+        shopgirl: json["shopgirl"],
+        tragedietta: json["tragedietta"],
+        unsparse: json["unsparse"],
+        uplook: json["uplook"],
+        vermiformis: json["vermiformis"],
+        whafabout: json["whafabout"],
+    );
+
+    Map<String, dynamic> toJson() => {
+        "acclaimer": acclaimer,
+        "achree": achree,
+        "base": base,
+        "conundrumize": conundrumize,
+        "degerminator": degerminator,
+        "describable": describable,
+        "exasperatedly": exasperatedly,
+        "heroine": heroine,
+        "indazin": indazin,
+        "luteous": luteous,
+        "papular": papular,
+        "pritch": pritch,
+        "Prodenia": prodenia,
+        "seege": seege,
+        "shopgirl": shopgirl,
+        "tragedietta": tragedietta,
+        "unsparse": unsparse,
+        "uplook": uplook,
+        "vermiformis": vermiformis,
+        "whafabout": whafabout,
+    };
+}
+
+class LandlubberlyClass {
+    final dynamic acropoleis;
+    final dynamic aminate;
+    final dynamic amyraldism;
+    final dynamic bipenniform;
+    final dynamic bugre;
+    final dynamic calycule;
+    final dynamic caoutchouc;
+    final dynamic disprover;
+    final dynamic fitroot;
+    final dynamic fulgently;
+    final dynamic kickup;
+    final dynamic laevoversion;
+    final dynamic moter;
+    final dynamic objectivity;
+    final dynamic posterity;
+    final dynamic postnuptial;
+    final dynamic precedentary;
+    final dynamic saddling;
+    final dynamic subcurrent;
+    final dynamic unrecriminative;
+
+    LandlubberlyClass({
+        required this.acropoleis,
+        required this.aminate,
+        required this.amyraldism,
+        required this.bipenniform,
+        required this.bugre,
+        required this.calycule,
+        required this.caoutchouc,
+        required this.disprover,
+        required this.fitroot,
+        required this.fulgently,
+        required this.kickup,
+        required this.laevoversion,
+        required this.moter,
+        required this.objectivity,
+        required this.posterity,
+        required this.postnuptial,
+        required this.precedentary,
+        required this.saddling,
+        required this.subcurrent,
+        required this.unrecriminative,
+    });
+
+    factory LandlubberlyClass.fromJson(Map<String, dynamic> json) => LandlubberlyClass(
+        acropoleis: json["acropoleis"],
+        aminate: json["aminate"],
+        amyraldism: json["Amyraldism"],
+        bipenniform: json["bipenniform"],
+        bugre: json["bugre"],
+        calycule: json["calycule"],
+        caoutchouc: json["caoutchouc"],
+        disprover: json["disprover"],
+        fitroot: json["fitroot"],
+        fulgently: json["fulgently"],
+        kickup: json["kickup"],
+        laevoversion: json["laevoversion"],
+        moter: json["moter"],
+        objectivity: json["objectivity"],
+        posterity: json["posterity"],
+        postnuptial: json["postnuptial"],
+        precedentary: json["precedentary"],
+        saddling: json["saddling"],
+        subcurrent: json["subcurrent"],
+        unrecriminative: json["unrecriminative"],
+    );
+
+    Map<String, dynamic> toJson() => {
+        "acropoleis": acropoleis,
+        "aminate": aminate,
+        "Amyraldism": amyraldism,
+        "bipenniform": bipenniform,
+        "bugre": bugre,
+        "calycule": calycule,
+        "caoutchouc": caoutchouc,
+        "disprover": disprover,
+        "fitroot": fitroot,
+        "fulgently": fulgently,
+        "kickup": kickup,
+        "laevoversion": laevoversion,
+        "moter": moter,
+        "objectivity": objectivity,
+        "posterity": posterity,
+        "postnuptial": postnuptial,
+        "precedentary": precedentary,
+        "saddling": saddling,
+        "subcurrent": subcurrent,
+        "unrecriminative": unrecriminative,
+    };
+}
+
+class LupusClass {
+    final double? catharticalness;
+    final int? chirotherium;
+    final int? chlorioninae;
+    final int? corvinae;
+    final int? crassina;
+    final String? disdiapason;
+    final int? exiguity;
+    final int? farcist;
+    final int? holographical;
+    final bool? homocerc;
+    final int? ichthyophagan;
+    final int? implacable;
+    final dynamic nonbookish;
+    final int? outshiner;
+    final int? overweather;
+    final int? protonegroid;
+    final int? shallowish;
+    final int? snoke;
+    final int? snout;
+    final int? surveillance;
+    final int? threshingtime;
+    final int? thysanocarpus;
+    final int? unsignificantly;
+    final int? unsnap;
+    final int? vendible;
+
+    LupusClass({
+        this.catharticalness,
+        this.chirotherium,
+        this.chlorioninae,
+        this.corvinae,
+        this.crassina,
+        this.disdiapason,
+        this.exiguity,
+        this.farcist,
+        this.holographical,
+        this.homocerc,
+        this.ichthyophagan,
+        this.implacable,
+        this.nonbookish,
+        this.outshiner,
+        this.overweather,
+        this.protonegroid,
+        this.shallowish,
+        this.snoke,
+        this.snout,
+        this.surveillance,
+        this.threshingtime,
+        this.thysanocarpus,
+        this.unsignificantly,
+        this.unsnap,
+        this.vendible,
+    });
+
+    factory LupusClass.fromJson(Map<String, dynamic> json) => LupusClass(
+        catharticalness: json["catharticalness"]?.toDouble(),
+        chirotherium: json["Chirotherium"],
+        chlorioninae: json["Chlorioninae"],
+        corvinae: json["Corvinae"],
+        crassina: json["Crassina"],
+        disdiapason: json["disdiapason"],
+        exiguity: json["exiguity"],
+        farcist: json["farcist"],
+        holographical: json["holographical"],
+        homocerc: json["homocerc"],
+        ichthyophagan: json["ichthyophagan"],
+        implacable: json["implacable"],
+        nonbookish: json["nonbookish"],
+        outshiner: json["outshiner"],
+        overweather: json["overweather"],
+        protonegroid: json["protonegroid"],
+        shallowish: json["shallowish"],
+        snoke: json["snoke"],
+        snout: json["snout"],
+        surveillance: json["surveillance"],
+        threshingtime: json["threshingtime"],
+        thysanocarpus: json["Thysanocarpus"],
+        unsignificantly: json["unsignificantly"],
+        unsnap: json["unsnap"],
+        vendible: json["vendible"],
+    );
+
+    Map<String, dynamic> toJson() => {
+        "catharticalness": catharticalness,
+        "Chirotherium": chirotherium,
+        "Chlorioninae": chlorioninae,
+        "Corvinae": corvinae,
+        "Crassina": crassina,
+        "disdiapason": disdiapason,
+        "exiguity": exiguity,
+        "farcist": farcist,
+        "holographical": holographical,
+        "homocerc": homocerc,
+        "ichthyophagan": ichthyophagan,
+        "implacable": implacable,
+        "nonbookish": nonbookish,
+        "outshiner": outshiner,
+        "overweather": overweather,
+        "protonegroid": protonegroid,
+        "shallowish": shallowish,
+        "snoke": snoke,
+        "snout": snout,
+        "surveillance": surveillance,
+        "threshingtime": threshingtime,
+        "Thysanocarpus": thysanocarpus,
+        "unsignificantly": unsignificantly,
+        "unsnap": unsnap,
+        "vendible": vendible,
+    };
+}
+
+class Maslin {
+    final int? alicant;
+    final dynamic antiatonement;
+    final int? anticorrosive;
+    final dynamic aphidozer;
+    final dynamic bakuninist;
+    final int? be;
+    final double? catharticalness;
+    final int? chirotherium;
+    final int? chub;
+    final int? cuprosilicon;
+    final int? curtailedly;
+    final int? dellenite;
+    final int? dimitry;
+    final String? disdiapason;
+    final dynamic edifying;
+    final int? ethmoiditis;
+    final dynamic gastralgy;
+    final int? goatherd;
+    final int? hammerdress;
+    final dynamic hangfire;
+    final bool? homocerc;
+    final int? lacunosity;
+    final dynamic longiloquence;
+    final int? mameliere;
+    final dynamic motherless;
+    final dynamic nonbookish;
+    final dynamic noncorrodible;
+    final dynamic nonsensicality;
+    final int? oafishly;
+    final dynamic pfund;
+    final dynamic preadvisory;
+    final dynamic retroflexed;
+    final int? saccharulmic;
+    final int? scowlful;
+    final dynamic secluded;
+    final dynamic slackage;
+    final int? sphaeridial;
+    final dynamic spondulics;
+    final int? subsecive;
+    final dynamic swellmobsman;
+    final int? trachyglossate;
+    final dynamic trialogue;
+    final int? unassuaged;
+    final dynamic ungross;
+    final dynamic unjudiciously;
+
+    Maslin({
+        this.alicant,
+        this.antiatonement,
+        this.anticorrosive,
+        this.aphidozer,
+        this.bakuninist,
+        this.be,
+        this.catharticalness,
+        this.chirotherium,
+        this.chub,
+        this.cuprosilicon,
+        this.curtailedly,
+        this.dellenite,
+        this.dimitry,
+        this.disdiapason,
+        this.edifying,
+        this.ethmoiditis,
+        this.gastralgy,
+        this.goatherd,
+        this.hammerdress,
+        this.hangfire,
+        this.homocerc,
+        this.lacunosity,
+        this.longiloquence,
+        this.mameliere,
+        this.motherless,
+        this.nonbookish,
+        this.noncorrodible,
+        this.nonsensicality,
+        this.oafishly,
+        this.pfund,
+        this.preadvisory,
+        this.retroflexed,
+        this.saccharulmic,
+        this.scowlful,
+        this.secluded,
+        this.slackage,
+        this.sphaeridial,
+        this.spondulics,
+        this.subsecive,
+        this.swellmobsman,
+        this.trachyglossate,
+        this.trialogue,
+        this.unassuaged,
+        this.ungross,
+        this.unjudiciously,
+    });
+
+    factory Maslin.fromJson(Map<String, dynamic> json) => Maslin(
+        alicant: json["Alicant"],
+        antiatonement: json["antiatonement"],
+        anticorrosive: json["anticorrosive"],
+        aphidozer: json["aphidozer"],
+        bakuninist: json["Bakuninist"],
+        be: json["be"],
+        catharticalness: json["catharticalness"]?.toDouble(),
+        chirotherium: json["Chirotherium"],
+        chub: json["chub"],
+        cuprosilicon: json["cuprosilicon"],
+        curtailedly: json["curtailedly"],
+        dellenite: json["dellenite"],
+        dimitry: json["Dimitry"],
+        disdiapason: json["disdiapason"],
+        edifying: json["edifying"],
+        ethmoiditis: json["ethmoiditis"],
+        gastralgy: json["gastralgy"],
+        goatherd: json["goatherd"],
+        hammerdress: json["hammerdress"],
+        hangfire: json["hangfire"],
+        homocerc: json["homocerc"],
+        lacunosity: json["lacunosity"],
+        longiloquence: json["longiloquence"],
+        mameliere: json["mameliere"],
+        motherless: json["motherless"],
+        nonbookish: json["nonbookish"],
+        noncorrodible: json["noncorrodible"],
+        nonsensicality: json["nonsensicality"],
+        oafishly: json["oafishly"],
+        pfund: json["pfund"],
+        preadvisory: json["preadvisory"],
+        retroflexed: json["retroflexed"],
+        saccharulmic: json["saccharulmic"],
+        scowlful: json["scowlful"],
+        secluded: json["secluded"],
+        slackage: json["slackage"],
+        sphaeridial: json["sphaeridial"],
+        spondulics: json["spondulics"],
+        subsecive: json["subsecive"],
+        swellmobsman: json["swellmobsman"],
+        trachyglossate: json["trachyglossate"],
+        trialogue: json["trialogue"],
+        unassuaged: json["unassuaged"],
+        ungross: json["ungross"],
+        unjudiciously: json["unjudiciously"],
+    );
+
+    Map<String, dynamic> toJson() => {
+        "Alicant": alicant,
+        "antiatonement": antiatonement,
+        "anticorrosive": anticorrosive,
+        "aphidozer": aphidozer,
+        "Bakuninist": bakuninist,
+        "be": be,
+        "catharticalness": catharticalness,
+        "Chirotherium": chirotherium,
+        "chub": chub,
+        "cuprosilicon": cuprosilicon,
+        "curtailedly": curtailedly,
+        "dellenite": dellenite,
+        "Dimitry": dimitry,
+        "disdiapason": disdiapason,
+        "edifying": edifying,
+        "ethmoiditis": ethmoiditis,
+        "gastralgy": gastralgy,
+        "goatherd": goatherd,
+        "hammerdress": hammerdress,
+        "hangfire": hangfire,
+        "homocerc": homocerc,
+        "lacunosity": lacunosity,
+        "longiloquence": longiloquence,
+        "mameliere": mameliere,
+        "motherless": motherless,
+        "nonbookish": nonbookish,
+        "noncorrodible": noncorrodible,
+        "nonsensicality": nonsensicality,
+        "oafishly": oafishly,
+        "pfund": pfund,
+        "preadvisory": preadvisory,
+        "retroflexed": retroflexed,
+        "saccharulmic": saccharulmic,
+        "scowlful": scowlful,
+        "secluded": secluded,
+        "slackage": slackage,
+        "sphaeridial": sphaeridial,
+        "spondulics": spondulics,
+        "subsecive": subsecive,
+        "swellmobsman": swellmobsman,
+        "trachyglossate": trachyglossate,
+        "trialogue": trialogue,
+        "unassuaged": unassuaged,
+        "ungross": ungross,
+        "unjudiciously": unjudiciously,
+    };
+}
+
+class MonaziteClass {
+    final double catharticalness;
+    final int chirotherium;
+    final String disdiapason;
+    final bool homocerc;
+    final dynamic nonbookish;
+
+    MonaziteClass({
+        required this.catharticalness,
+        required this.chirotherium,
+        required this.disdiapason,
+        required this.homocerc,
+        required this.nonbookish,
+    });
+
+    factory MonaziteClass.fromJson(Map<String, dynamic> json) => MonaziteClass(
+        catharticalness: json["catharticalness"]?.toDouble(),
+        chirotherium: json["Chirotherium"],
+        disdiapason: json["disdiapason"],
+        homocerc: json["homocerc"],
+        nonbookish: json["nonbookish"],
+    );
+
+    Map<String, dynamic> toJson() => {
+        "catharticalness": catharticalness,
+        "Chirotherium": chirotherium,
+        "disdiapason": disdiapason,
+        "homocerc": homocerc,
+        "nonbookish": nonbookish,
+    };
+}
+
+class MonotheisticallyClass {
+    final dynamic blaspheme;
+    final double? catharticalness;
+    final dynamic celiosalpingectomy;
+    final int? chirotherium;
+    final dynamic consummativeness;
+    final String? disdiapason;
+    final dynamic egestive;
+    final dynamic enchylema;
+    final dynamic gasconade;
+    final dynamic holidayer;
+    final bool? homocerc;
+    final dynamic intuitionalism;
+    final dynamic lophiostomate;
+    final dynamic nonbookish;
+    final dynamic nonvolition;
+    final dynamic palatableness;
+    final dynamic pimpery;
+    final dynamic previolation;
+    final dynamic reconveyance;
+    final dynamic registership;
+    final dynamic rhyacolite;
+    final dynamic smithereens;
+    final dynamic superedification;
+    final dynamic trust;
+    final dynamic whitestone;
+
+    MonotheisticallyClass({
+        this.blaspheme,
+        this.catharticalness,
+        this.celiosalpingectomy,
+        this.chirotherium,
+        this.consummativeness,
+        this.disdiapason,
+        this.egestive,
+        this.enchylema,
+        this.gasconade,
+        this.holidayer,
+        this.homocerc,
+        this.intuitionalism,
+        this.lophiostomate,
+        this.nonbookish,
+        this.nonvolition,
+        this.palatableness,
+        this.pimpery,
+        this.previolation,
+        this.reconveyance,
+        this.registership,
+        this.rhyacolite,
+        this.smithereens,
+        this.superedification,
+        this.trust,
+        this.whitestone,
+    });
+
+    factory MonotheisticallyClass.fromJson(Map<String, dynamic> json) => MonotheisticallyClass(
+        blaspheme: json["blaspheme"],
+        catharticalness: json["catharticalness"]?.toDouble(),
+        celiosalpingectomy: json["celiosalpingectomy"],
+        chirotherium: json["Chirotherium"],
+        consummativeness: json["consummativeness"],
+        disdiapason: json["disdiapason"],
+        egestive: json["egestive"],
+        enchylema: json["enchylema"],
+        gasconade: json["gasconade"],
+        holidayer: json["holidayer"],
+        homocerc: json["homocerc"],
+        intuitionalism: json["intuitionalism"],
+        lophiostomate: json["lophiostomate"],
+        nonbookish: json["nonbookish"],
+        nonvolition: json["nonvolition"],
+        palatableness: json["palatableness"],
+        pimpery: json["pimpery"],
+        previolation: json["previolation"],
+        reconveyance: json["reconveyance"],
+        registership: json["registership"],
+        rhyacolite: json["rhyacolite"],
+        smithereens: json["smithereens"],
+        superedification: json["superedification"],
+        trust: json["trust"],
+        whitestone: json["whitestone"],
+    );
+
+    Map<String, dynamic> toJson() => {
+        "blaspheme": blaspheme,
+        "catharticalness": catharticalness,
+        "celiosalpingectomy": celiosalpingectomy,
+        "Chirotherium": chirotherium,
+        "consummativeness": consummativeness,
+        "disdiapason": disdiapason,
+        "egestive": egestive,
+        "enchylema": enchylema,
+        "gasconade": gasconade,
+        "holidayer": holidayer,
+        "homocerc": homocerc,
+        "intuitionalism": intuitionalism,
+        "lophiostomate": lophiostomate,
+        "nonbookish": nonbookish,
+        "nonvolition": nonvolition,
+        "palatableness": palatableness,
+        "pimpery": pimpery,
+        "previolation": previolation,
+        "reconveyance": reconveyance,
+        "registership": registership,
+        "rhyacolite": rhyacolite,
+        "smithereens": smithereens,
+        "superedification": superedification,
+        "trust": trust,
+        "whitestone": whitestone,
+    };
+}
+
+class Noncontributing {
+    final String estevin;
+    final double jolterhead;
+    final int sauternes;
+    final bool sparsely;
+    final dynamic unrequested;
+
+    Noncontributing({
+        required this.estevin,
+        required this.jolterhead,
+        required this.sauternes,
+        required this.sparsely,
+        required this.unrequested,
+    });
+
+    factory Noncontributing.fromJson(Map<String, dynamic> json) => Noncontributing(
+        estevin: json["estevin"],
+        jolterhead: json["jolterhead"]?.toDouble(),
+        sauternes: json["sauternes"],
+        sparsely: json["sparsely"],
+        unrequested: json["unrequested"],
+    );
+
+    Map<String, dynamic> toJson() => {
+        "estevin": estevin,
+        "jolterhead": jolterhead,
+        "sauternes": sauternes,
+        "sparsely": sparsely,
+        "unrequested": unrequested,
+    };
+}
+
+class OccupationalistClass {
+    final dynamic beholdable;
+    final dynamic brotuliform;
+    final dynamic chimakum;
+    final dynamic doodler;
+    final dynamic emulsin;
+    final dynamic fin;
+    final dynamic flourishing;
+    final dynamic flueless;
+    final dynamic furtively;
+    final dynamic gritter;
+    final dynamic interwish;
+    final dynamic monoxylic;
+    final dynamic myristic;
+    final dynamic nightwear;
+    final dynamic peruser;
+    final dynamic theoastrological;
+    final dynamic thumby;
+    final dynamic tingitid;
+    final dynamic trailless;
+    final dynamic unpocketed;
+
+    OccupationalistClass({
+        required this.beholdable,
+        required this.brotuliform,
+        required this.chimakum,
+        required this.doodler,
+        required this.emulsin,
+        required this.fin,
+        required this.flourishing,
+        required this.flueless,
+        required this.furtively,
+        required this.gritter,
+        required this.interwish,
+        required this.monoxylic,
+        required this.myristic,
+        required this.nightwear,
+        required this.peruser,
+        required this.theoastrological,
+        required this.thumby,
+        required this.tingitid,
+        required this.trailless,
+        required this.unpocketed,
+    });
+
+    factory OccupationalistClass.fromJson(Map<String, dynamic> json) => OccupationalistClass(
+        beholdable: json["beholdable"],
+        brotuliform: json["brotuliform"],
+        chimakum: json["Chimakum"],
+        doodler: json["doodler"],
+        emulsin: json["emulsin"],
+        fin: json["Fin"],
+        flourishing: json["flourishing"],
+        flueless: json["flueless"],
+        furtively: json["furtively"],
+        gritter: json["gritter"],
+        interwish: json["interwish"],
+        monoxylic: json["monoxylic"],
+        myristic: json["myristic"],
+        nightwear: json["nightwear"],
+        peruser: json["peruser"],
+        theoastrological: json["theoastrological"],
+        thumby: json["thumby"],
+        tingitid: json["tingitid"],
+        trailless: json["trailless"],
+        unpocketed: json["unpocketed"],
+    );
+
+    Map<String, dynamic> toJson() => {
+        "beholdable": beholdable,
+        "brotuliform": brotuliform,
+        "Chimakum": chimakum,
+        "doodler": doodler,
+        "emulsin": emulsin,
+        "Fin": fin,
+        "flourishing": flourishing,
+        "flueless": flueless,
+        "furtively": furtively,
+        "gritter": gritter,
+        "interwish": interwish,
+        "monoxylic": monoxylic,
+        "myristic": myristic,
+        "nightwear": nightwear,
+        "peruser": peruser,
+        "theoastrological": theoastrological,
+        "thumby": thumby,
+        "tingitid": tingitid,
+        "trailless": trailless,
+        "unpocketed": unpocketed,
+    };
+}
+
+class OutrivalClass {
+    final dynamic adroitly;
+    final dynamic bridehood;
+    final dynamic castoroides;
+    final dynamic czechoslovak;
+    final dynamic diagenesis;
+    final dynamic dihexahedron;
+    final dynamic dopester;
+    final dynamic eumerism;
+    final dynamic flyness;
+    final dynamic fouler;
+    final dynamic laudanosine;
+    final dynamic lingulidae;
+    final dynamic minutary;
+    final dynamic mitra;
+    final dynamic opisthorchiasis;
+    final dynamic pensively;
+    final dynamic pubigerous;
+    final dynamic rebellious;
+    final dynamic recodify;
+    final dynamic unpaced;
+
+    OutrivalClass({
+        required this.adroitly,
+        required this.bridehood,
+        required this.castoroides,
+        required this.czechoslovak,
+        required this.diagenesis,
+        required this.dihexahedron,
+        required this.dopester,
+        required this.eumerism,
+        required this.flyness,
+        required this.fouler,
+        required this.laudanosine,
+        required this.lingulidae,
+        required this.minutary,
+        required this.mitra,
+        required this.opisthorchiasis,
+        required this.pensively,
+        required this.pubigerous,
+        required this.rebellious,
+        required this.recodify,
+        required this.unpaced,
+    });
+
+    factory OutrivalClass.fromJson(Map<String, dynamic> json) => OutrivalClass(
+        adroitly: json["adroitly"],
+        bridehood: json["bridehood"],
+        castoroides: json["Castoroides"],
+        czechoslovak: json["Czechoslovak"],
+        diagenesis: json["diagenesis"],
+        dihexahedron: json["dihexahedron"],
+        dopester: json["dopester"],
+        eumerism: json["eumerism"],
+        flyness: json["flyness"],
+        fouler: json["fouler"],
+        laudanosine: json["laudanosine"],
+        lingulidae: json["Lingulidae"],
+        minutary: json["minutary"],
+        mitra: json["mitra"],
+        opisthorchiasis: json["opisthorchiasis"],
+        pensively: json["pensively"],
+        pubigerous: json["pubigerous"],
+        rebellious: json["rebellious"],
+        recodify: json["recodify"],
+        unpaced: json["unpaced"],
+    );
+
+    Map<String, dynamic> toJson() => {
+        "adroitly": adroitly,
+        "bridehood": bridehood,
+        "Castoroides": castoroides,
+        "Czechoslovak": czechoslovak,
+        "diagenesis": diagenesis,
+        "dihexahedron": dihexahedron,
+        "dopester": dopester,
+        "eumerism": eumerism,
+        "flyness": flyness,
+        "fouler": fouler,
+        "laudanosine": laudanosine,
+        "Lingulidae": lingulidae,
+        "minutary": minutary,
+        "mitra": mitra,
+        "opisthorchiasis": opisthorchiasis,
+        "pensively": pensively,
+        "pubigerous": pubigerous,
+        "rebellious": rebellious,
+        "recodify": recodify,
+        "unpaced": unpaced,
+    };
+}
+
+class PiaculumClass {
+    final int? alada;
+    final int? amphistomous;
+    final int? boysenberry;
+    final double? catharticalness;
+    final int? chirotherium;
+    final int? decardinalize;
+    final int? discouragement;
+    final String? disdiapason;
+    final int? doitrified;
+    final int? hexaspermous;
+    final bool? homocerc;
+    final int? insinking;
+    final int? loathfulness;
+    final int? miasmatical;
+    final int? neurofibril;
+    final dynamic nonbookish;
+    final int? phonendoscope;
+    final int? pilferment;
+    final int? predismissory;
+    final int? preinscription;
+    final int? quotative;
+    final int? sienna;
+    final int? thorax;
+    final int? yachting;
+    final int? zipper;
+
+    PiaculumClass({
+        this.alada,
+        this.amphistomous,
+        this.boysenberry,
+        this.catharticalness,
+        this.chirotherium,
+        this.decardinalize,
+        this.discouragement,
+        this.disdiapason,
+        this.doitrified,
+        this.hexaspermous,
+        this.homocerc,
+        this.insinking,
+        this.loathfulness,
+        this.miasmatical,
+        this.neurofibril,
+        this.nonbookish,
+        this.phonendoscope,
+        this.pilferment,
+        this.predismissory,
+        this.preinscription,
+        this.quotative,
+        this.sienna,
+        this.thorax,
+        this.yachting,
+        this.zipper,
+    });
+
+    factory PiaculumClass.fromJson(Map<String, dynamic> json) => PiaculumClass(
+        alada: json["alada"],
+        amphistomous: json["amphistomous"],
+        boysenberry: json["boysenberry"],
+        catharticalness: json["catharticalness"]?.toDouble(),
+        chirotherium: json["Chirotherium"],
+        decardinalize: json["decardinalize"],
+        discouragement: json["discouragement"],
+        disdiapason: json["disdiapason"],
+        doitrified: json["doitrified"],
+        hexaspermous: json["hexaspermous"],
+        homocerc: json["homocerc"],
+        insinking: json["insinking"],
+        loathfulness: json["loathfulness"],
+        miasmatical: json["miasmatical"],
+        neurofibril: json["neurofibril"],
+        nonbookish: json["nonbookish"],
+        phonendoscope: json["phonendoscope"],
+        pilferment: json["pilferment"],
+        predismissory: json["predismissory"],
+        preinscription: json["preinscription"],
+        quotative: json["quotative"],
+        sienna: json["sienna"],
+        thorax: json["thorax"],
+        yachting: json["yachting"],
+        zipper: json["Zipper"],
+    );
+
+    Map<String, dynamic> toJson() => {
+        "alada": alada,
+        "amphistomous": amphistomous,
+        "boysenberry": boysenberry,
+        "catharticalness": catharticalness,
+        "Chirotherium": chirotherium,
+        "decardinalize": decardinalize,
+        "discouragement": discouragement,
+        "disdiapason": disdiapason,
+        "doitrified": doitrified,
+        "hexaspermous": hexaspermous,
+        "homocerc": homocerc,
+        "insinking": insinking,
+        "loathfulness": loathfulness,
+        "miasmatical": miasmatical,
+        "neurofibril": neurofibril,
+        "nonbookish": nonbookish,
+        "phonendoscope": phonendoscope,
+        "pilferment": pilferment,
+        "predismissory": predismissory,
+        "preinscription": preinscription,
+        "quotative": quotative,
+        "sienna": sienna,
+        "thorax": thorax,
+        "yachting": yachting,
+        "Zipper": zipper,
+    };
+}
+
+class Pneumocele {
+    final dynamic carbonarism;
+    final double? catharticalness;
+    final int? chirotherium;
+    final dynamic cineolic;
+    final dynamic cobbly;
+    final dynamic conchyliferous;
+    final dynamic congregation;
+    final String? disdiapason;
+    final dynamic enterotomy;
+    final dynamic entophytal;
+    final dynamic fewtrils;
+    final dynamic herem;
+    final bool? homocerc;
+    final dynamic koniga;
+    final dynamic meticulosity;
+    final dynamic micky;
+    final dynamic mismarriage;
+    final dynamic neurotrophic;
+    final dynamic nonbookish;
+    final dynamic persuasively;
+    final dynamic replaceable;
+    final dynamic silex;
+    final dynamic taillight;
+    final dynamic unjealous;
+    final dynamic visitorial;
+
+    Pneumocele({
+        this.carbonarism,
+        this.catharticalness,
+        this.chirotherium,
+        this.cineolic,
+        this.cobbly,
+        this.conchyliferous,
+        this.congregation,
+        this.disdiapason,
+        this.enterotomy,
+        this.entophytal,
+        this.fewtrils,
+        this.herem,
+        this.homocerc,
+        this.koniga,
+        this.meticulosity,
+        this.micky,
+        this.mismarriage,
+        this.neurotrophic,
+        this.nonbookish,
+        this.persuasively,
+        this.replaceable,
+        this.silex,
+        this.taillight,
+        this.unjealous,
+        this.visitorial,
+    });
+
+    factory Pneumocele.fromJson(Map<String, dynamic> json) => Pneumocele(
+        carbonarism: json["Carbonarism"],
+        catharticalness: json["catharticalness"]?.toDouble(),
+        chirotherium: json["Chirotherium"],
+        cineolic: json["cineolic"],
+        cobbly: json["cobbly"],
+        conchyliferous: json["conchyliferous"],
+        congregation: json["congregation"],
+        disdiapason: json["disdiapason"],
+        enterotomy: json["enterotomy"],
+        entophytal: json["entophytal"],
+        fewtrils: json["fewtrils"],
+        herem: json["herem"],
+        homocerc: json["homocerc"],
+        koniga: json["Koniga"],
+        meticulosity: json["meticulosity"],
+        micky: json["Micky"],
+        mismarriage: json["mismarriage"],
+        neurotrophic: json["neurotrophic"],
+        nonbookish: json["nonbookish"],
+        persuasively: json["persuasively"],
+        replaceable: json["replaceable"],
+        silex: json["silex"],
+        taillight: json["taillight"],
+        unjealous: json["unjealous"],
+        visitorial: json["visitorial"],
+    );
+
+    Map<String, dynamic> toJson() => {
+        "Carbonarism": carbonarism,
+        "catharticalness": catharticalness,
+        "Chirotherium": chirotherium,
+        "cineolic": cineolic,
+        "cobbly": cobbly,
+        "conchyliferous": conchyliferous,
+        "congregation": congregation,
+        "disdiapason": disdiapason,
+        "enterotomy": enterotomy,
+        "entophytal": entophytal,
+        "fewtrils": fewtrils,
+        "herem": herem,
+        "homocerc": homocerc,
+        "Koniga": koniga,
+        "meticulosity": meticulosity,
+        "Micky": micky,
+        "mismarriage": mismarriage,
+        "neurotrophic": neurotrophic,
+        "nonbookish": nonbookish,
+        "persuasively": persuasively,
+        "replaceable": replaceable,
+        "silex": silex,
+        "taillight": taillight,
+        "unjealous": unjealous,
+        "visitorial": visitorial,
+    };
+}
+
+class PotwhiskyClass {
+    final dynamic arciform;
+    final dynamic cresolin;
+    final dynamic disheartener;
+    final dynamic disproportionable;
+    final dynamic euchorda;
+    final dynamic ferryway;
+    final dynamic filamentiferous;
+    final dynamic flemish;
+    final dynamic forgainst;
+    final dynamic grainering;
+    final dynamic irrevoluble;
+    final dynamic kindredship;
+    final dynamic pinguitudinous;
+    final dynamic simpletonic;
+    final dynamic singsong;
+    final dynamic submergement;
+    final dynamic supraoesophagal;
+    final dynamic thrashel;
+    final dynamic tyremesis;
+    final dynamic yoruba;
+
+    PotwhiskyClass({
+        required this.arciform,
+        required this.cresolin,
+        required this.disheartener,
+        required this.disproportionable,
+        required this.euchorda,
+        required this.ferryway,
+        required this.filamentiferous,
+        required this.flemish,
+        required this.forgainst,
+        required this.grainering,
+        required this.irrevoluble,
+        required this.kindredship,
+        required this.pinguitudinous,
+        required this.simpletonic,
+        required this.singsong,
+        required this.submergement,
+        required this.supraoesophagal,
+        required this.thrashel,
+        required this.tyremesis,
+        required this.yoruba,
+    });
+
+    factory PotwhiskyClass.fromJson(Map<String, dynamic> json) => PotwhiskyClass(
+        arciform: json["arciform"],
+        cresolin: json["cresolin"],
+        disheartener: json["disheartener"],
+        disproportionable: json["disproportionable"],
+        euchorda: json["Euchorda"],
+        ferryway: json["ferryway"],
+        filamentiferous: json["filamentiferous"],
+        flemish: json["flemish"],
+        forgainst: json["forgainst"],
+        grainering: json["grainering"],
+        irrevoluble: json["irrevoluble"],
+        kindredship: json["kindredship"],
+        pinguitudinous: json["pinguitudinous"],
+        simpletonic: json["simpletonic"],
+        singsong: json["singsong"],
+        submergement: json["submergement"],
+        supraoesophagal: json["supraoesophagal"],
+        thrashel: json["thrashel"],
+        tyremesis: json["tyremesis"],
+        yoruba: json["Yoruba"],
+    );
+
+    Map<String, dynamic> toJson() => {
+        "arciform": arciform,
+        "cresolin": cresolin,
+        "disheartener": disheartener,
+        "disproportionable": disproportionable,
+        "Euchorda": euchorda,
+        "ferryway": ferryway,
+        "filamentiferous": filamentiferous,
+        "flemish": flemish,
+        "forgainst": forgainst,
+        "grainering": grainering,
+        "irrevoluble": irrevoluble,
+        "kindredship": kindredship,
+        "pinguitudinous": pinguitudinous,
+        "simpletonic": simpletonic,
+        "singsong": singsong,
+        "submergement": submergement,
+        "supraoesophagal": supraoesophagal,
+        "thrashel": thrashel,
+        "tyremesis": tyremesis,
+        "Yoruba": yoruba,
+    };
+}
+
+class PrefreshmanClass {
+    final dynamic azorubine;
+    final dynamic choroiditis;
+    final dynamic coagulatory;
+    final dynamic cyclorama;
+    final dynamic dolphus;
+    final dynamic duckhearted;
+    final dynamic ficus;
+    final dynamic gemaric;
+    final dynamic jugation;
+    final dynamic myoliposis;
+    final dynamic nonnomination;
+    final dynamic palay;
+    final dynamic pentactinal;
+    final dynamic phaet;
+    final dynamic piquant;
+    final dynamic registration;
+    final dynamic remancipation;
+    final dynamic scutatiform;
+    final dynamic theodolite;
+    final dynamic underward;
+
+    PrefreshmanClass({
+        required this.azorubine,
+        required this.choroiditis,
+        required this.coagulatory,
+        required this.cyclorama,
+        required this.dolphus,
+        required this.duckhearted,
+        required this.ficus,
+        required this.gemaric,
+        required this.jugation,
+        required this.myoliposis,
+        required this.nonnomination,
+        required this.palay,
+        required this.pentactinal,
+        required this.phaet,
+        required this.piquant,
+        required this.registration,
+        required this.remancipation,
+        required this.scutatiform,
+        required this.theodolite,
+        required this.underward,
+    });
+
+    factory PrefreshmanClass.fromJson(Map<String, dynamic> json) => PrefreshmanClass(
+        azorubine: json["azorubine"],
+        choroiditis: json["choroiditis"],
+        coagulatory: json["coagulatory"],
+        cyclorama: json["cyclorama"],
+        dolphus: json["Dolphus"],
+        duckhearted: json["duckhearted"],
+        ficus: json["Ficus"],
+        gemaric: json["Gemaric"],
+        jugation: json["jugation"],
+        myoliposis: json["myoliposis"],
+        nonnomination: json["nonnomination"],
+        palay: json["palay"],
+        pentactinal: json["pentactinal"],
+        phaet: json["Phaet"],
+        piquant: json["piquant"],
+        registration: json["registration"],
+        remancipation: json["remancipation"],
+        scutatiform: json["scutatiform"],
+        theodolite: json["theodolite"],
+        underward: json["underward"],
+    );
+
+    Map<String, dynamic> toJson() => {
+        "azorubine": azorubine,
+        "choroiditis": choroiditis,
+        "coagulatory": coagulatory,
+        "cyclorama": cyclorama,
+        "Dolphus": dolphus,
+        "duckhearted": duckhearted,
+        "Ficus": ficus,
+        "Gemaric": gemaric,
+        "jugation": jugation,
+        "myoliposis": myoliposis,
+        "nonnomination": nonnomination,
+        "palay": palay,
+        "pentactinal": pentactinal,
+        "Phaet": phaet,
+        "piquant": piquant,
+        "registration": registration,
+        "remancipation": remancipation,
+        "scutatiform": scutatiform,
+        "theodolite": theodolite,
+        "underward": underward,
+    };
+}
diff --git a/head/dart/test/inputs/json/priority/combinations3.json/final-props-false--58a791807e0c/TopLevel.dart b/head/dart/test/inputs/json/priority/combinations3.json/final-props-false--58a791807e0c/TopLevel.dart
new file mode 100644
index 0000000..e603106
--- /dev/null
+++ b/head/dart/test/inputs/json/priority/combinations3.json/final-props-false--58a791807e0c/TopLevel.dart
@@ -0,0 +1,1537 @@
+// To parse this JSON data, do
+//
+//     final topLevel = topLevelFromJson(jsonString);
+
+import 'dart:convert';
+
+TopLevel topLevelFromJson(String str) => TopLevel.fromJson(json.decode(str));
+
+String topLevelToJson(TopLevel data) => json.encode(data.toJson());
+
+class TopLevel {
+    List<dynamic> juror;
+    List<dynamic> kongoni;
+    List<dynamic> ladronism;
+    List<dynamic> landlubberly;
+    List<dynamic> listener;
+    List<dynamic> lupus;
+    List<Maslin> maslin;
+    List<dynamic> monazite;
+    List<dynamic> monoliteral;
+    List<dynamic> monotheistically;
+    List<dynamic> montage;
+    List<dynamic> moralness;
+    List<MonaziteClass?> mowra;
+    List<dynamic> mulishly;
+    List<dynamic> myoscope;
+    List<List<int?>?> nach;
+    List<dynamic> neuromastic;
+    List<Noncontributing> noncontributing;
+    List<dynamic> nonnervous;
+    List<dynamic> nonvaluation;
+    List<dynamic> occupationalist;
+    List<dynamic> outrival;
+    List<dynamic> paleographically;
+    List<dynamic> pamphletwise;
+    List<dynamic> pediatrics;
+    List<bool> perceptive;
+    List<dynamic> piaculum;
+    List<dynamic> piccadilly;
+    List<dynamic> piffler;
+    List<dynamic> pithful;
+    List<dynamic> placuntitis;
+    List<dynamic> plectopterous;
+    List<Pneumocele?> pneumocele;
+    List<dynamic> poliorcetic;
+    List<dynamic> poormaster;
+    List<dynamic> potwhisky;
+    List<dynamic> practicalizer;
+    List<dynamic> prefreshman;
+    List<dynamic> prehensility;
+    List<dynamic> prevoidance;
+    List<Map<String, int?>> probant;
+    List<dynamic> protext;
+
+    TopLevel({
+        required this.juror,
+        required this.kongoni,
+        required this.ladronism,
+        required this.landlubberly,
+        required this.listener,
+        required this.lupus,
+        required this.maslin,
+        required this.monazite,
+        required this.monoliteral,
+        required this.monotheistically,
+        required this.montage,
+        required this.moralness,
+        required this.mowra,
+        required this.mulishly,
+        required this.myoscope,
+        required this.nach,
+        required this.neuromastic,
+        required this.noncontributing,
+        required this.nonnervous,
+        required this.nonvaluation,
+        required this.occupationalist,
+        required this.outrival,
+        required this.paleographically,
+        required this.pamphletwise,
+        required this.pediatrics,
+        required this.perceptive,
+        required this.piaculum,
+        required this.piccadilly,
+        required this.piffler,
+        required this.pithful,
+        required this.placuntitis,
+        required this.plectopterous,
+        required this.pneumocele,
+        required this.poliorcetic,
+        required this.poormaster,
+        required this.potwhisky,
+        required this.practicalizer,
+        required this.prefreshman,
+        required this.prehensility,
+        required this.prevoidance,
+        required this.probant,
+        required this.protext,
+    });
+
+    factory TopLevel.fromJson(Map<String, dynamic> json) => TopLevel(
+        juror: List<dynamic>.from(json["juror"].map((x) => x)),
+        kongoni: List<dynamic>.from(json["kongoni"].map((x) => x)),
+        ladronism: List<dynamic>.from(json["ladronism"].map((x) => x)),
+        landlubberly: List<dynamic>.from(json["landlubberly"].map((x) => x)),
+        listener: List<dynamic>.from(json["listener"].map((x) => x)),
+        lupus: List<dynamic>.from(json["lupus"].map((x) => x)),
+        maslin: List<Maslin>.from(json["maslin"].map((x) => Maslin.fromJson(x))),
+        monazite: List<dynamic>.from(json["monazite"].map((x) => x)),
+        monoliteral: List<dynamic>.from(json["monoliteral"].map((x) => x)),
+        monotheistically: List<dynamic>.from(json["monotheistically"].map((x) => x)),
+        montage: List<dynamic>.from(json["montage"].map((x) => x)),
+        moralness: List<dynamic>.from(json["moralness"].map((x) => x)),
+        mowra: List<MonaziteClass?>.from(json["mowra"].map((x) => x == null ? null : MonaziteClass.fromJson(x))),
+        mulishly: List<dynamic>.from(json["mulishly"].map((x) => x)),
+        myoscope: List<dynamic>.from(json["myoscope"].map((x) => x)),
+        nach: List<List<int?>?>.from(json["nach"].map((x) => x == null ? null : List<int?>.from(x!.map((x) => x)))),
+        neuromastic: List<dynamic>.from(json["neuromastic"].map((x) => x)),
+        noncontributing: List<Noncontributing>.from(json["noncontributing"].map((x) => Noncontributing.fromJson(x))),
+        nonnervous: List<dynamic>.from(json["nonnervous"].map((x) => x)),
+        nonvaluation: List<dynamic>.from(json["nonvaluation"].map((x) => x)),
+        occupationalist: List<dynamic>.from(json["occupationalist"].map((x) => x)),
+        outrival: List<dynamic>.from(json["outrival"].map((x) => x)),
+        paleographically: List<dynamic>.from(json["paleographically"].map((x) => x)),
+        pamphletwise: List<dynamic>.from(json["pamphletwise"].map((x) => x)),
+        pediatrics: List<dynamic>.from(json["pediatrics"].map((x) => x)),
+        perceptive: List<bool>.from(json["perceptive"].map((x) => x)),
+        piaculum: List<dynamic>.from(json["piaculum"].map((x) => x)),
+        piccadilly: List<dynamic>.from(json["piccadilly"].map((x) => x)),
+        piffler: List<dynamic>.from(json["piffler"].map((x) => x)),
+        pithful: List<dynamic>.from(json["pithful"].map((x) => x)),
+        placuntitis: List<dynamic>.from(json["placuntitis"].map((x) => x)),
+        plectopterous: List<dynamic>.from(json["plectopterous"].map((x) => x)),
+        pneumocele: List<Pneumocele?>.from(json["pneumocele"].map((x) => x == null ? null : Pneumocele.fromJson(x))),
+        poliorcetic: List<dynamic>.from(json["poliorcetic"].map((x) => x)),
+        poormaster: List<dynamic>.from(json["poormaster"].map((x) => x)),
+        potwhisky: List<dynamic>.from(json["potwhisky"].map((x) => x)),
+        practicalizer: List<dynamic>.from(json["practicalizer"].map((x) => x)),
+        prefreshman: List<dynamic>.from(json["prefreshman"].map((x) => x)),
+        prehensility: List<dynamic>.from(json["prehensility"].map((x) => x)),
+        prevoidance: List<dynamic>.from(json["prevoidance"].map((x) => x)),
+        probant: List<Map<String, int?>>.from(json["probant"].map((x) => Map.from(x).map((k, v) => MapEntry<String, int?>(k, v)))),
+        protext: List<dynamic>.from(json["protext"].map((x) => x)),
+    );
+
+    Map<String, dynamic> toJson() => {
+        "juror": List<dynamic>.from(juror.map((x) => x)),
+        "kongoni": List<dynamic>.from(kongoni.map((x) => x)),
+        "ladronism": List<dynamic>.from(ladronism.map((x) => x)),
+        "landlubberly": List<dynamic>.from(landlubberly.map((x) => x)),
+        "listener": List<dynamic>.from(listener.map((x) => x)),
+        "lupus": List<dynamic>.from(lupus.map((x) => x)),
+        "maslin": List<dynamic>.from(maslin.map((x) => x.toJson())),
+        "monazite": List<dynamic>.from(monazite.map((x) => x)),
+        "monoliteral": List<dynamic>.from(monoliteral.map((x) => x)),
+        "monotheistically": List<dynamic>.from(monotheistically.map((x) => x)),
+        "montage": List<dynamic>.from(montage.map((x) => x)),
+        "moralness": List<dynamic>.from(moralness.map((x) => x)),
+        "mowra": List<dynamic>.from(mowra.map((x) => x?.toJson())),
+        "mulishly": List<dynamic>.from(mulishly.map((x) => x)),
+        "myoscope": List<dynamic>.from(myoscope.map((x) => x)),
+        "nach": List<dynamic>.from(nach.map((x) => x == null ? null : List<dynamic>.from(x!.map((x) => x)))),
+        "neuromastic": List<dynamic>.from(neuromastic.map((x) => x)),
+        "noncontributing": List<dynamic>.from(noncontributing.map((x) => x.toJson())),
+        "nonnervous": List<dynamic>.from(nonnervous.map((x) => x)),
+        "nonvaluation": List<dynamic>.from(nonvaluation.map((x) => x)),
+        "occupationalist": List<dynamic>.from(occupationalist.map((x) => x)),
+        "outrival": List<dynamic>.from(outrival.map((x) => x)),
+        "paleographically": List<dynamic>.from(paleographically.map((x) => x)),
+        "pamphletwise": List<dynamic>.from(pamphletwise.map((x) => x)),
+        "pediatrics": List<dynamic>.from(pediatrics.map((x) => x)),
+        "perceptive": List<dynamic>.from(perceptive.map((x) => x)),
+        "piaculum": List<dynamic>.from(piaculum.map((x) => x)),
+        "piccadilly": List<dynamic>.from(piccadilly.map((x) => x)),
+        "piffler": List<dynamic>.from(piffler.map((x) => x)),
+        "pithful": List<dynamic>.from(pithful.map((x) => x)),
+        "placuntitis": List<dynamic>.from(placuntitis.map((x) => x)),
+        "plectopterous": List<dynamic>.from(plectopterous.map((x) => x)),
+        "pneumocele": List<dynamic>.from(pneumocele.map((x) => x?.toJson())),
+        "poliorcetic": List<dynamic>.from(poliorcetic.map((x) => x)),
+        "poormaster": List<dynamic>.from(poormaster.map((x) => x)),
+        "potwhisky": List<dynamic>.from(potwhisky.map((x) => x)),
+        "practicalizer": List<dynamic>.from(practicalizer.map((x) => x)),
+        "prefreshman": List<dynamic>.from(prefreshman.map((x) => x)),
+        "prehensility": List<dynamic>.from(prehensility.map((x) => x)),
+        "prevoidance": List<dynamic>.from(prevoidance.map((x) => x)),
+        "probant": List<dynamic>.from(probant.map((x) => Map.from(x).map((k, v) => MapEntry<String, dynamic>(k, v)))),
+        "protext": List<dynamic>.from(protext.map((x) => x)),
+    };
+}
+
+class JurorClass {
+    dynamic adipsy;
+    dynamic auxiliator;
+    dynamic benda;
+    dynamic benjamin;
+    dynamic brandling;
+    dynamic epicurishly;
+    dynamic eremochaetous;
+    dynamic marten;
+    dynamic monocline;
+    dynamic olea;
+    dynamic palgat;
+    dynamic pennyworth;
+    dynamic pioury;
+    dynamic pragmatistic;
+    dynamic stylelessness;
+    dynamic systematical;
+    dynamic thready;
+    dynamic uncontemporary;
+    dynamic uncouched;
+    dynamic uninhabitedness;
+
+    JurorClass({
+        required this.adipsy,
+        required this.auxiliator,
+        required this.benda,
+        required this.benjamin,
+        required this.brandling,
+        required this.epicurishly,
+        required this.eremochaetous,
+        required this.marten,
+        required this.monocline,
+        required this.olea,
+        required this.palgat,
+        required this.pennyworth,
+        required this.pioury,
+        required this.pragmatistic,
+        required this.stylelessness,
+        required this.systematical,
+        required this.thready,
+        required this.uncontemporary,
+        required this.uncouched,
+        required this.uninhabitedness,
+    });
+
+    factory JurorClass.fromJson(Map<String, dynamic> json) => JurorClass(
+        adipsy: json["adipsy"],
+        auxiliator: json["auxiliator"],
+        benda: json["benda"],
+        benjamin: json["benjamin"],
+        brandling: json["brandling"],
+        epicurishly: json["epicurishly"],
+        eremochaetous: json["eremochaetous"],
+        marten: json["marten"],
+        monocline: json["monocline"],
+        olea: json["Olea"],
+        palgat: json["palgat"],
+        pennyworth: json["pennyworth"],
+        pioury: json["pioury"],
+        pragmatistic: json["pragmatistic"],
+        stylelessness: json["stylelessness"],
+        systematical: json["systematical"],
+        thready: json["thready"],
+        uncontemporary: json["uncontemporary"],
+        uncouched: json["uncouched"],
+        uninhabitedness: json["uninhabitedness"],
+    );
+
+    Map<String, dynamic> toJson() => {
+        "adipsy": adipsy,
+        "auxiliator": auxiliator,
+        "benda": benda,
+        "benjamin": benjamin,
+        "brandling": brandling,
+        "epicurishly": epicurishly,
+        "eremochaetous": eremochaetous,
+        "marten": marten,
+        "monocline": monocline,
+        "Olea": olea,
+        "palgat": palgat,
+        "pennyworth": pennyworth,
+        "pioury": pioury,
+        "pragmatistic": pragmatistic,
+        "stylelessness": stylelessness,
+        "systematical": systematical,
+        "thready": thready,
+        "uncontemporary": uncontemporary,
+        "uncouched": uncouched,
+        "uninhabitedness": uninhabitedness,
+    };
+}
+
+class LadronismClass {
+    dynamic acclaimer;
+    dynamic achree;
+    dynamic base;
+    dynamic conundrumize;
+    dynamic degerminator;
+    dynamic describable;
+    dynamic exasperatedly;
+    dynamic heroine;
+    dynamic indazin;
+    dynamic luteous;
+    dynamic papular;
+    dynamic pritch;
+    dynamic prodenia;
+    dynamic seege;
+    dynamic shopgirl;
+    dynamic tragedietta;
+    dynamic unsparse;
+    dynamic uplook;
+    dynamic vermiformis;
+    dynamic whafabout;
+
+    LadronismClass({
+        required this.acclaimer,
+        required this.achree,
+        required this.base,
+        required this.conundrumize,
+        required this.degerminator,
+        required this.describable,
+        required this.exasperatedly,
+        required this.heroine,
+        required this.indazin,
+        required this.luteous,
+        required this.papular,
+        required this.pritch,
+        required this.prodenia,
+        required this.seege,
+        required this.shopgirl,
+        required this.tragedietta,
+        required this.unsparse,
+        required this.uplook,
+        required this.vermiformis,
+        required this.whafabout,
+    });
+
+    factory LadronismClass.fromJson(Map<String, dynamic> json) => LadronismClass(
+        acclaimer: json["acclaimer"],
+        achree: json["achree"],
+        base: json["base"],
+        conundrumize: json["conundrumize"],
+        degerminator: json["degerminator"],
+        describable: json["describable"],
+        exasperatedly: json["exasperatedly"],
+        heroine: json["heroine"],
+        indazin: json["indazin"],
+        luteous: json["luteous"],
+        papular: json["papular"],
+        pritch: json["pritch"],
+        prodenia: json["Prodenia"],
+        seege: json["seege"],
+        shopgirl: json["shopgirl"],
+        tragedietta: json["tragedietta"],
+        unsparse: json["unsparse"],
+        uplook: json["uplook"],
+        vermiformis: json["vermiformis"],
+        whafabout: json["whafabout"],
+    );
+
+    Map<String, dynamic> toJson() => {
+        "acclaimer": acclaimer,
+        "achree": achree,
+        "base": base,
+        "conundrumize": conundrumize,
+        "degerminator": degerminator,
+        "describable": describable,
+        "exasperatedly": exasperatedly,
+        "heroine": heroine,
+        "indazin": indazin,
+        "luteous": luteous,
+        "papular": papular,
+        "pritch": pritch,
+        "Prodenia": prodenia,
+        "seege": seege,
+        "shopgirl": shopgirl,
+        "tragedietta": tragedietta,
+        "unsparse": unsparse,
+        "uplook": uplook,
+        "vermiformis": vermiformis,
+        "whafabout": whafabout,
+    };
+}
+
+class LandlubberlyClass {
+    dynamic acropoleis;
+    dynamic aminate;
+    dynamic amyraldism;
+    dynamic bipenniform;
+    dynamic bugre;
+    dynamic calycule;
+    dynamic caoutchouc;
+    dynamic disprover;
+    dynamic fitroot;
+    dynamic fulgently;
+    dynamic kickup;
+    dynamic laevoversion;
+    dynamic moter;
+    dynamic objectivity;
+    dynamic posterity;
+    dynamic postnuptial;
+    dynamic precedentary;
+    dynamic saddling;
+    dynamic subcurrent;
+    dynamic unrecriminative;
+
+    LandlubberlyClass({
+        required this.acropoleis,
+        required this.aminate,
+        required this.amyraldism,
+        required this.bipenniform,
+        required this.bugre,
+        required this.calycule,
+        required this.caoutchouc,
+        required this.disprover,
+        required this.fitroot,
+        required this.fulgently,
+        required this.kickup,
+        required this.laevoversion,
+        required this.moter,
+        required this.objectivity,
+        required this.posterity,
+        required this.postnuptial,
+        required this.precedentary,
+        required this.saddling,
+        required this.subcurrent,
+        required this.unrecriminative,
+    });
+
+    factory LandlubberlyClass.fromJson(Map<String, dynamic> json) => LandlubberlyClass(
+        acropoleis: json["acropoleis"],
+        aminate: json["aminate"],
+        amyraldism: json["Amyraldism"],
+        bipenniform: json["bipenniform"],
+        bugre: json["bugre"],
+        calycule: json["calycule"],
+        caoutchouc: json["caoutchouc"],
+        disprover: json["disprover"],
+        fitroot: json["fitroot"],
+        fulgently: json["fulgently"],
+        kickup: json["kickup"],
+        laevoversion: json["laevoversion"],
+        moter: json["moter"],
+        objectivity: json["objectivity"],
+        posterity: json["posterity"],
+        postnuptial: json["postnuptial"],
+        precedentary: json["precedentary"],
+        saddling: json["saddling"],
+        subcurrent: json["subcurrent"],
+        unrecriminative: json["unrecriminative"],
+    );
+
+    Map<String, dynamic> toJson() => {
+        "acropoleis": acropoleis,
+        "aminate": aminate,
+        "Amyraldism": amyraldism,
+        "bipenniform": bipenniform,
+        "bugre": bugre,
+        "calycule": calycule,
+        "caoutchouc": caoutchouc,
+        "disprover": disprover,
+        "fitroot": fitroot,
+        "fulgently": fulgently,
+        "kickup": kickup,
+        "laevoversion": laevoversion,
+        "moter": moter,
+        "objectivity": objectivity,
+        "posterity": posterity,
+        "postnuptial": postnuptial,
+        "precedentary": precedentary,
+        "saddling": saddling,
+        "subcurrent": subcurrent,
+        "unrecriminative": unrecriminative,
+    };
+}
+
+class LupusClass {
+    double? catharticalness;
+    int? chirotherium;
+    int? chlorioninae;
+    int? corvinae;
+    int? crassina;
+    String? disdiapason;
+    int? exiguity;
+    int? farcist;
+    int? holographical;
+    bool? homocerc;
+    int? ichthyophagan;
+    int? implacable;
+    dynamic nonbookish;
+    int? outshiner;
+    int? overweather;
+    int? protonegroid;
+    int? shallowish;
+    int? snoke;
+    int? snout;
+    int? surveillance;
+    int? threshingtime;
+    int? thysanocarpus;
+    int? unsignificantly;
+    int? unsnap;
+    int? vendible;
+
+    LupusClass({
+        this.catharticalness,
+        this.chirotherium,
+        this.chlorioninae,
+        this.corvinae,
+        this.crassina,
+        this.disdiapason,
+        this.exiguity,
+        this.farcist,
+        this.holographical,
+        this.homocerc,
+        this.ichthyophagan,
+        this.implacable,
+        this.nonbookish,
+        this.outshiner,
+        this.overweather,
+        this.protonegroid,
+        this.shallowish,
+        this.snoke,
+        this.snout,
+        this.surveillance,
+        this.threshingtime,
+        this.thysanocarpus,
+        this.unsignificantly,
+        this.unsnap,
+        this.vendible,
+    });
+
+    factory LupusClass.fromJson(Map<String, dynamic> json) => LupusClass(
+        catharticalness: json["catharticalness"]?.toDouble(),
+        chirotherium: json["Chirotherium"],
+        chlorioninae: json["Chlorioninae"],
+        corvinae: json["Corvinae"],
+        crassina: json["Crassina"],
+        disdiapason: json["disdiapason"],
+        exiguity: json["exiguity"],
+        farcist: json["farcist"],
+        holographical: json["holographical"],
+        homocerc: json["homocerc"],
+        ichthyophagan: json["ichthyophagan"],
+        implacable: json["implacable"],
+        nonbookish: json["nonbookish"],
+        outshiner: json["outshiner"],
+        overweather: json["overweather"],
+        protonegroid: json["protonegroid"],
+        shallowish: json["shallowish"],
+        snoke: json["snoke"],
+        snout: json["snout"],
+        surveillance: json["surveillance"],
+        threshingtime: json["threshingtime"],
+        thysanocarpus: json["Thysanocarpus"],
+        unsignificantly: json["unsignificantly"],
+        unsnap: json["unsnap"],
+        vendible: json["vendible"],
+    );
+
+    Map<String, dynamic> toJson() => {
+        "catharticalness": catharticalness,
+        "Chirotherium": chirotherium,
+        "Chlorioninae": chlorioninae,
+        "Corvinae": corvinae,
+        "Crassina": crassina,
+        "disdiapason": disdiapason,
+        "exiguity": exiguity,
+        "farcist": farcist,
+        "holographical": holographical,
+        "homocerc": homocerc,
+        "ichthyophagan": ichthyophagan,
+        "implacable": implacable,
+        "nonbookish": nonbookish,
+        "outshiner": outshiner,
+        "overweather": overweather,
+        "protonegroid": protonegroid,
+        "shallowish": shallowish,
+        "snoke": snoke,
+        "snout": snout,
+        "surveillance": surveillance,
+        "threshingtime": threshingtime,
+        "Thysanocarpus": thysanocarpus,
+        "unsignificantly": unsignificantly,
+        "unsnap": unsnap,
+        "vendible": vendible,
+    };
+}
+
+class Maslin {
+    int? alicant;
+    dynamic antiatonement;
+    int? anticorrosive;
+    dynamic aphidozer;
+    dynamic bakuninist;
+    int? be;
+    double? catharticalness;
+    int? chirotherium;
+    int? chub;
+    int? cuprosilicon;
+    int? curtailedly;
+    int? dellenite;
+    int? dimitry;
+    String? disdiapason;
+    dynamic edifying;
+    int? ethmoiditis;
+    dynamic gastralgy;
+    int? goatherd;
+    int? hammerdress;
+    dynamic hangfire;
+    bool? homocerc;
+    int? lacunosity;
+    dynamic longiloquence;
+    int? mameliere;
+    dynamic motherless;
+    dynamic nonbookish;
+    dynamic noncorrodible;
+    dynamic nonsensicality;
+    int? oafishly;
+    dynamic pfund;
+    dynamic preadvisory;
+    dynamic retroflexed;
+    int? saccharulmic;
+    int? scowlful;
+    dynamic secluded;
+    dynamic slackage;
+    int? sphaeridial;
+    dynamic spondulics;
+    int? subsecive;
+    dynamic swellmobsman;
+    int? trachyglossate;
+    dynamic trialogue;
+    int? unassuaged;
+    dynamic ungross;
+    dynamic unjudiciously;
+
+    Maslin({
+        this.alicant,
+        this.antiatonement,
+        this.anticorrosive,
+        this.aphidozer,
+        this.bakuninist,
+        this.be,
+        this.catharticalness,
+        this.chirotherium,
+        this.chub,
+        this.cuprosilicon,
+        this.curtailedly,
+        this.dellenite,
+        this.dimitry,
+        this.disdiapason,
+        this.edifying,
+        this.ethmoiditis,
+        this.gastralgy,
+        this.goatherd,
+        this.hammerdress,
+        this.hangfire,
+        this.homocerc,
+        this.lacunosity,
+        this.longiloquence,
+        this.mameliere,
+        this.motherless,
+        this.nonbookish,
+        this.noncorrodible,
+        this.nonsensicality,
+        this.oafishly,
+        this.pfund,
+        this.preadvisory,
+        this.retroflexed,
+        this.saccharulmic,
+        this.scowlful,
+        this.secluded,
+        this.slackage,
+        this.sphaeridial,
+        this.spondulics,
+        this.subsecive,
+        this.swellmobsman,
+        this.trachyglossate,
+        this.trialogue,
+        this.unassuaged,
+        this.ungross,
+        this.unjudiciously,
+    });
+
+    factory Maslin.fromJson(Map<String, dynamic> json) => Maslin(
+        alicant: json["Alicant"],
+        antiatonement: json["antiatonement"],
+        anticorrosive: json["anticorrosive"],
+        aphidozer: json["aphidozer"],
+        bakuninist: json["Bakuninist"],
+        be: json["be"],
+        catharticalness: json["catharticalness"]?.toDouble(),
+        chirotherium: json["Chirotherium"],
+        chub: json["chub"],
+        cuprosilicon: json["cuprosilicon"],
+        curtailedly: json["curtailedly"],
+        dellenite: json["dellenite"],
+        dimitry: json["Dimitry"],
+        disdiapason: json["disdiapason"],
+        edifying: json["edifying"],
+        ethmoiditis: json["ethmoiditis"],
+        gastralgy: json["gastralgy"],
+        goatherd: json["goatherd"],
+        hammerdress: json["hammerdress"],
+        hangfire: json["hangfire"],
+        homocerc: json["homocerc"],
+        lacunosity: json["lacunosity"],
+        longiloquence: json["longiloquence"],
+        mameliere: json["mameliere"],
+        motherless: json["motherless"],
+        nonbookish: json["nonbookish"],
+        noncorrodible: json["noncorrodible"],
+        nonsensicality: json["nonsensicality"],
+        oafishly: json["oafishly"],
+        pfund: json["pfund"],
+        preadvisory: json["preadvisory"],
+        retroflexed: json["retroflexed"],
+        saccharulmic: json["saccharulmic"],
+        scowlful: json["scowlful"],
+        secluded: json["secluded"],
+        slackage: json["slackage"],
+        sphaeridial: json["sphaeridial"],
+        spondulics: json["spondulics"],
+        subsecive: json["subsecive"],
+        swellmobsman: json["swellmobsman"],
+        trachyglossate: json["trachyglossate"],
+        trialogue: json["trialogue"],
+        unassuaged: json["unassuaged"],
+        ungross: json["ungross"],
+        unjudiciously: json["unjudiciously"],
+    );
+
+    Map<String, dynamic> toJson() => {
+        "Alicant": alicant,
+        "antiatonement": antiatonement,
+        "anticorrosive": anticorrosive,
+        "aphidozer": aphidozer,
+        "Bakuninist": bakuninist,
+        "be": be,
+        "catharticalness": catharticalness,
+        "Chirotherium": chirotherium,
+        "chub": chub,
+        "cuprosilicon": cuprosilicon,
+        "curtailedly": curtailedly,
+        "dellenite": dellenite,
+        "Dimitry": dimitry,
+        "disdiapason": disdiapason,
+        "edifying": edifying,
+        "ethmoiditis": ethmoiditis,
+        "gastralgy": gastralgy,
+        "goatherd": goatherd,
+        "hammerdress": hammerdress,
+        "hangfire": hangfire,
+        "homocerc": homocerc,
+        "lacunosity": lacunosity,
+        "longiloquence": longiloquence,
+        "mameliere": mameliere,
+        "motherless": motherless,
+        "nonbookish": nonbookish,
+        "noncorrodible": noncorrodible,
+        "nonsensicality": nonsensicality,
+        "oafishly": oafishly,
+        "pfund": pfund,
+        "preadvisory": preadvisory,
+        "retroflexed": retroflexed,
+        "saccharulmic": saccharulmic,
+        "scowlful": scowlful,
+        "secluded": secluded,
+        "slackage": slackage,
+        "sphaeridial": sphaeridial,
+        "spondulics": spondulics,
+        "subsecive": subsecive,
+        "swellmobsman": swellmobsman,
+        "trachyglossate": trachyglossate,
+        "trialogue": trialogue,
+        "unassuaged": unassuaged,
+        "ungross": ungross,
+        "unjudiciously": unjudiciously,
+    };
+}
+
+class MonaziteClass {
+    double catharticalness;
+    int chirotherium;
+    String disdiapason;
+    bool homocerc;
+    dynamic nonbookish;
+
+    MonaziteClass({
+        required this.catharticalness,
+        required this.chirotherium,
+        required this.disdiapason,
+        required this.homocerc,
+        required this.nonbookish,
+    });
+
+    factory MonaziteClass.fromJson(Map<String, dynamic> json) => MonaziteClass(
+        catharticalness: json["catharticalness"]?.toDouble(),
+        chirotherium: json["Chirotherium"],
+        disdiapason: json["disdiapason"],
+        homocerc: json["homocerc"],
+        nonbookish: json["nonbookish"],
+    );
+
+    Map<String, dynamic> toJson() => {
+        "catharticalness": catharticalness,
+        "Chirotherium": chirotherium,
+        "disdiapason": disdiapason,
+        "homocerc": homocerc,
+        "nonbookish": nonbookish,
+    };
+}
+
+class MonotheisticallyClass {
+    dynamic blaspheme;
+    double? catharticalness;
+    dynamic celiosalpingectomy;
+    int? chirotherium;
+    dynamic consummativeness;
+    String? disdiapason;
+    dynamic egestive;
+    dynamic enchylema;
+    dynamic gasconade;
+    dynamic holidayer;
+    bool? homocerc;
+    dynamic intuitionalism;
+    dynamic lophiostomate;
+    dynamic nonbookish;
+    dynamic nonvolition;
+    dynamic palatableness;
+    dynamic pimpery;
+    dynamic previolation;
+    dynamic reconveyance;
+    dynamic registership;
+    dynamic rhyacolite;
+    dynamic smithereens;
+    dynamic superedification;
+    dynamic trust;
+    dynamic whitestone;
+
+    MonotheisticallyClass({
+        this.blaspheme,
+        this.catharticalness,
+        this.celiosalpingectomy,
+        this.chirotherium,
+        this.consummativeness,
+        this.disdiapason,
+        this.egestive,
+        this.enchylema,
+        this.gasconade,
+        this.holidayer,
+        this.homocerc,
+        this.intuitionalism,
+        this.lophiostomate,
+        this.nonbookish,
+        this.nonvolition,
+        this.palatableness,
+        this.pimpery,
+        this.previolation,
+        this.reconveyance,
+        this.registership,
+        this.rhyacolite,
+        this.smithereens,
+        this.superedification,
+        this.trust,
+        this.whitestone,
+    });
+
+    factory MonotheisticallyClass.fromJson(Map<String, dynamic> json) => MonotheisticallyClass(
+        blaspheme: json["blaspheme"],
+        catharticalness: json["catharticalness"]?.toDouble(),
+        celiosalpingectomy: json["celiosalpingectomy"],
+        chirotherium: json["Chirotherium"],
+        consummativeness: json["consummativeness"],
+        disdiapason: json["disdiapason"],
+        egestive: json["egestive"],
+        enchylema: json["enchylema"],
+        gasconade: json["gasconade"],
+        holidayer: json["holidayer"],
+        homocerc: json["homocerc"],
+        intuitionalism: json["intuitionalism"],
+        lophiostomate: json["lophiostomate"],
+        nonbookish: json["nonbookish"],
+        nonvolition: json["nonvolition"],
+        palatableness: json["palatableness"],
+        pimpery: json["pimpery"],
+        previolation: json["previolation"],
+        reconveyance: json["reconveyance"],
+        registership: json["registership"],
+        rhyacolite: json["rhyacolite"],
+        smithereens: json["smithereens"],
+        superedification: json["superedification"],
+        trust: json["trust"],
+        whitestone: json["whitestone"],
+    );
+
+    Map<String, dynamic> toJson() => {
+        "blaspheme": blaspheme,
+        "catharticalness": catharticalness,
+        "celiosalpingectomy": celiosalpingectomy,
+        "Chirotherium": chirotherium,
+        "consummativeness": consummativeness,
+        "disdiapason": disdiapason,
+        "egestive": egestive,
+        "enchylema": enchylema,
+        "gasconade": gasconade,
+        "holidayer": holidayer,
+        "homocerc": homocerc,
+        "intuitionalism": intuitionalism,
+        "lophiostomate": lophiostomate,
+        "nonbookish": nonbookish,
+        "nonvolition": nonvolition,
+        "palatableness": palatableness,
+        "pimpery": pimpery,
+        "previolation": previolation,
+        "reconveyance": reconveyance,
+        "registership": registership,
+        "rhyacolite": rhyacolite,
+        "smithereens": smithereens,
+        "superedification": superedification,
+        "trust": trust,
+        "whitestone": whitestone,
+    };
+}
+
+class Noncontributing {
+    String estevin;
+    double jolterhead;
+    int sauternes;
+    bool sparsely;
+    dynamic unrequested;
+
+    Noncontributing({
+        required this.estevin,
+        required this.jolterhead,
+        required this.sauternes,
+        required this.sparsely,
+        required this.unrequested,
+    });
+
+    factory Noncontributing.fromJson(Map<String, dynamic> json) => Noncontributing(
+        estevin: json["estevin"],
+        jolterhead: json["jolterhead"]?.toDouble(),
+        sauternes: json["sauternes"],
+        sparsely: json["sparsely"],
+        unrequested: json["unrequested"],
+    );
+
+    Map<String, dynamic> toJson() => {
+        "estevin": estevin,
+        "jolterhead": jolterhead,
+        "sauternes": sauternes,
+        "sparsely": sparsely,
+        "unrequested": unrequested,
+    };
+}
+
+class OccupationalistClass {
+    dynamic beholdable;
+    dynamic brotuliform;
+    dynamic chimakum;
+    dynamic doodler;
+    dynamic emulsin;
+    dynamic fin;
+    dynamic flourishing;
+    dynamic flueless;
+    dynamic furtively;
+    dynamic gritter;
+    dynamic interwish;
+    dynamic monoxylic;
+    dynamic myristic;
+    dynamic nightwear;
+    dynamic peruser;
+    dynamic theoastrological;
+    dynamic thumby;
+    dynamic tingitid;
+    dynamic trailless;
+    dynamic unpocketed;
+
+    OccupationalistClass({
+        required this.beholdable,
+        required this.brotuliform,
+        required this.chimakum,
+        required this.doodler,
+        required this.emulsin,
+        required this.fin,
+        required this.flourishing,
+        required this.flueless,
+        required this.furtively,
+        required this.gritter,
+        required this.interwish,
+        required this.monoxylic,
+        required this.myristic,
+        required this.nightwear,
+        required this.peruser,
+        required this.theoastrological,
+        required this.thumby,
+        required this.tingitid,
+        required this.trailless,
+        required this.unpocketed,
+    });
+
+    factory OccupationalistClass.fromJson(Map<String, dynamic> json) => OccupationalistClass(
+        beholdable: json["beholdable"],
+        brotuliform: json["brotuliform"],
+        chimakum: json["Chimakum"],
+        doodler: json["doodler"],
+        emulsin: json["emulsin"],
+        fin: json["Fin"],
+        flourishing: json["flourishing"],
+        flueless: json["flueless"],
+        furtively: json["furtively"],
+        gritter: json["gritter"],
+        interwish: json["interwish"],
+        monoxylic: json["monoxylic"],
+        myristic: json["myristic"],
+        nightwear: json["nightwear"],
+        peruser: json["peruser"],
+        theoastrological: json["theoastrological"],
+        thumby: json["thumby"],
+        tingitid: json["tingitid"],
+        trailless: json["trailless"],
+        unpocketed: json["unpocketed"],
+    );
+
+    Map<String, dynamic> toJson() => {
+        "beholdable": beholdable,
+        "brotuliform": brotuliform,
+        "Chimakum": chimakum,
+        "doodler": doodler,
+        "emulsin": emulsin,
+        "Fin": fin,
+        "flourishing": flourishing,
+        "flueless": flueless,
+        "furtively": furtively,
+        "gritter": gritter,
+        "interwish": interwish,
+        "monoxylic": monoxylic,
+        "myristic": myristic,
+        "nightwear": nightwear,
+        "peruser": peruser,
+        "theoastrological": theoastrological,
+        "thumby": thumby,
+        "tingitid": tingitid,
+        "trailless": trailless,
+        "unpocketed": unpocketed,
+    };
+}
+
+class OutrivalClass {
+    dynamic adroitly;
+    dynamic bridehood;
+    dynamic castoroides;
+    dynamic czechoslovak;
+    dynamic diagenesis;
+    dynamic dihexahedron;
+    dynamic dopester;
+    dynamic eumerism;
+    dynamic flyness;
+    dynamic fouler;
+    dynamic laudanosine;
+    dynamic lingulidae;
+    dynamic minutary;
+    dynamic mitra;
+    dynamic opisthorchiasis;
+    dynamic pensively;
+    dynamic pubigerous;
+    dynamic rebellious;
+    dynamic recodify;
+    dynamic unpaced;
+
+    OutrivalClass({
+        required this.adroitly,
+        required this.bridehood,
+        required this.castoroides,
+        required this.czechoslovak,
+        required this.diagenesis,
+        required this.dihexahedron,
+        required this.dopester,
+        required this.eumerism,
+        required this.flyness,
+        required this.fouler,
+        required this.laudanosine,
+        required this.lingulidae,
+        required this.minutary,
+        required this.mitra,
+        required this.opisthorchiasis,
+        required this.pensively,
+        required this.pubigerous,
+        required this.rebellious,
+        required this.recodify,
+        required this.unpaced,
+    });
+
+    factory OutrivalClass.fromJson(Map<String, dynamic> json) => OutrivalClass(
+        adroitly: json["adroitly"],
+        bridehood: json["bridehood"],
+        castoroides: json["Castoroides"],
+        czechoslovak: json["Czechoslovak"],
+        diagenesis: json["diagenesis"],
+        dihexahedron: json["dihexahedron"],
+        dopester: json["dopester"],
+        eumerism: json["eumerism"],
+        flyness: json["flyness"],
+        fouler: json["fouler"],
+        laudanosine: json["laudanosine"],
+        lingulidae: json["Lingulidae"],
+        minutary: json["minutary"],
+        mitra: json["mitra"],
+        opisthorchiasis: json["opisthorchiasis"],
+        pensively: json["pensively"],
+        pubigerous: json["pubigerous"],
+        rebellious: json["rebellious"],
+        recodify: json["recodify"],
+        unpaced: json["unpaced"],
+    );
+
+    Map<String, dynamic> toJson() => {
+        "adroitly": adroitly,
+        "bridehood": bridehood,
+        "Castoroides": castoroides,
+        "Czechoslovak": czechoslovak,
+        "diagenesis": diagenesis,
+        "dihexahedron": dihexahedron,
+        "dopester": dopester,
+        "eumerism": eumerism,
+        "flyness": flyness,
+        "fouler": fouler,
+        "laudanosine": laudanosine,
+        "Lingulidae": lingulidae,
+        "minutary": minutary,
+        "mitra": mitra,
+        "opisthorchiasis": opisthorchiasis,
+        "pensively": pensively,
+        "pubigerous": pubigerous,
+        "rebellious": rebellious,
+        "recodify": recodify,
+        "unpaced": unpaced,
+    };
+}
+
+class PiaculumClass {
+    int? alada;
+    int? amphistomous;
+    int? boysenberry;
+    double? catharticalness;
+    int? chirotherium;
+    int? decardinalize;
+    int? discouragement;
+    String? disdiapason;
+    int? doitrified;
+    int? hexaspermous;
+    bool? homocerc;
+    int? insinking;
+    int? loathfulness;
+    int? miasmatical;
+    int? neurofibril;
+    dynamic nonbookish;
+    int? phonendoscope;
+    int? pilferment;
+    int? predismissory;
+    int? preinscription;
+    int? quotative;
+    int? sienna;
+    int? thorax;
+    int? yachting;
+    int? zipper;
+
+    PiaculumClass({
+        this.alada,
+        this.amphistomous,
+        this.boysenberry,
+        this.catharticalness,
+        this.chirotherium,
+        this.decardinalize,
+        this.discouragement,
+        this.disdiapason,
+        this.doitrified,
+        this.hexaspermous,
+        this.homocerc,
+        this.insinking,
+        this.loathfulness,
+        this.miasmatical,
+        this.neurofibril,
+        this.nonbookish,
+        this.phonendoscope,
+        this.pilferment,
+        this.predismissory,
+        this.preinscription,
+        this.quotative,
+        this.sienna,
+        this.thorax,
+        this.yachting,
+        this.zipper,
+    });
+
+    factory PiaculumClass.fromJson(Map<String, dynamic> json) => PiaculumClass(
+        alada: json["alada"],
+        amphistomous: json["amphistomous"],
+        boysenberry: json["boysenberry"],
+        catharticalness: json["catharticalness"]?.toDouble(),
+        chirotherium: json["Chirotherium"],
+        decardinalize: json["decardinalize"],
+        discouragement: json["discouragement"],
+        disdiapason: json["disdiapason"],
+        doitrified: json["doitrified"],
+        hexaspermous: json["hexaspermous"],
+        homocerc: json["homocerc"],
+        insinking: json["insinking"],
+        loathfulness: json["loathfulness"],
+        miasmatical: json["miasmatical"],
+        neurofibril: json["neurofibril"],
+        nonbookish: json["nonbookish"],
+        phonendoscope: json["phonendoscope"],
+        pilferment: json["pilferment"],
+        predismissory: json["predismissory"],
+        preinscription: json["preinscription"],
+        quotative: json["quotative"],
+        sienna: json["sienna"],
+        thorax: json["thorax"],
+        yachting: json["yachting"],
+        zipper: json["Zipper"],
+    );
+
+    Map<String, dynamic> toJson() => {
+        "alada": alada,
+        "amphistomous": amphistomous,
+        "boysenberry": boysenberry,
+        "catharticalness": catharticalness,
+        "Chirotherium": chirotherium,
+        "decardinalize": decardinalize,
+        "discouragement": discouragement,
+        "disdiapason": disdiapason,
+        "doitrified": doitrified,
+        "hexaspermous": hexaspermous,
+        "homocerc": homocerc,
+        "insinking": insinking,
+        "loathfulness": loathfulness,
+        "miasmatical": miasmatical,
+        "neurofibril": neurofibril,
+        "nonbookish": nonbookish,
+        "phonendoscope": phonendoscope,
+        "pilferment": pilferment,
+        "predismissory": predismissory,
+        "preinscription": preinscription,
+        "quotative": quotative,
+        "sienna": sienna,
+        "thorax": thorax,
+        "yachting": yachting,
+        "Zipper": zipper,
+    };
+}
+
+class Pneumocele {
+    dynamic carbonarism;
+    double? catharticalness;
+    int? chirotherium;
+    dynamic cineolic;
+    dynamic cobbly;
+    dynamic conchyliferous;
+    dynamic congregation;
+    String? disdiapason;
+    dynamic enterotomy;
+    dynamic entophytal;
+    dynamic fewtrils;
+    dynamic herem;
+    bool? homocerc;
+    dynamic koniga;
+    dynamic meticulosity;
+    dynamic micky;
+    dynamic mismarriage;
+    dynamic neurotrophic;
+    dynamic nonbookish;
+    dynamic persuasively;
+    dynamic replaceable;
+    dynamic silex;
+    dynamic taillight;
+    dynamic unjealous;
+    dynamic visitorial;
+
+    Pneumocele({
+        this.carbonarism,
+        this.catharticalness,
+        this.chirotherium,
+        this.cineolic,
+        this.cobbly,
+        this.conchyliferous,
+        this.congregation,
+        this.disdiapason,
+        this.enterotomy,
+        this.entophytal,
+        this.fewtrils,
+        this.herem,
+        this.homocerc,
+        this.koniga,
+        this.meticulosity,
+        this.micky,
+        this.mismarriage,
+        this.neurotrophic,
+        this.nonbookish,
+        this.persuasively,
+        this.replaceable,
+        this.silex,
+        this.taillight,
+        this.unjealous,
+        this.visitorial,
+    });
+
+    factory Pneumocele.fromJson(Map<String, dynamic> json) => Pneumocele(
+        carbonarism: json["Carbonarism"],
+        catharticalness: json["catharticalness"]?.toDouble(),
+        chirotherium: json["Chirotherium"],
+        cineolic: json["cineolic"],
+        cobbly: json["cobbly"],
+        conchyliferous: json["conchyliferous"],
+        congregation: json["congregation"],
+        disdiapason: json["disdiapason"],
+        enterotomy: json["enterotomy"],
+        entophytal: json["entophytal"],
+        fewtrils: json["fewtrils"],
+        herem: json["herem"],
+        homocerc: json["homocerc"],
+        koniga: json["Koniga"],
+        meticulosity: json["meticulosity"],
+        micky: json["Micky"],
+        mismarriage: json["mismarriage"],
+        neurotrophic: json["neurotrophic"],
+        nonbookish: json["nonbookish"],
+        persuasively: json["persuasively"],
+        replaceable: json["replaceable"],
+        silex: json["silex"],
+        taillight: json["taillight"],
+        unjealous: json["unjealous"],
+        visitorial: json["visitorial"],
+    );
+
+    Map<String, dynamic> toJson() => {
+        "Carbonarism": carbonarism,
+        "catharticalness": catharticalness,
+        "Chirotherium": chirotherium,
+        "cineolic": cineolic,
+        "cobbly": cobbly,
+        "conchyliferous": conchyliferous,
+        "congregation": congregation,
+        "disdiapason": disdiapason,
+        "enterotomy": enterotomy,
+        "entophytal": entophytal,
+        "fewtrils": fewtrils,
+        "herem": herem,
+        "homocerc": homocerc,
+        "Koniga": koniga,
+        "meticulosity": meticulosity,
+        "Micky": micky,
+        "mismarriage": mismarriage,
+        "neurotrophic": neurotrophic,
+        "nonbookish": nonbookish,
+        "persuasively": persuasively,
+        "replaceable": replaceable,
+        "silex": silex,
+        "taillight": taillight,
+        "unjealous": unjealous,
+        "visitorial": visitorial,
+    };
+}
+
+class PotwhiskyClass {
+    dynamic arciform;
+    dynamic cresolin;
+    dynamic disheartener;
+    dynamic disproportionable;
+    dynamic euchorda;
+    dynamic ferryway;
+    dynamic filamentiferous;
+    dynamic flemish;
+    dynamic forgainst;
+    dynamic grainering;
+    dynamic irrevoluble;
+    dynamic kindredship;
+    dynamic pinguitudinous;
+    dynamic simpletonic;
+    dynamic singsong;
+    dynamic submergement;
+    dynamic supraoesophagal;
+    dynamic thrashel;
+    dynamic tyremesis;
+    dynamic yoruba;
+
+    PotwhiskyClass({
+        required this.arciform,
+        required this.cresolin,
+        required this.disheartener,
+        required this.disproportionable,
+        required this.euchorda,
+        required this.ferryway,
+        required this.filamentiferous,
+        required this.flemish,
+        required this.forgainst,
+        required this.grainering,
+        required this.irrevoluble,
+        required this.kindredship,
+        required this.pinguitudinous,
+        required this.simpletonic,
+        required this.singsong,
+        required this.submergement,
+        required this.supraoesophagal,
+        required this.thrashel,
+        required this.tyremesis,
+        required this.yoruba,
+    });
+
+    factory PotwhiskyClass.fromJson(Map<String, dynamic> json) => PotwhiskyClass(
+        arciform: json["arciform"],
+        cresolin: json["cresolin"],
+        disheartener: json["disheartener"],
+        disproportionable: json["disproportionable"],
+        euchorda: json["Euchorda"],
+        ferryway: json["ferryway"],
+        filamentiferous: json["filamentiferous"],
+        flemish: json["flemish"],
+        forgainst: json["forgainst"],
+        grainering: json["grainering"],
+        irrevoluble: json["irrevoluble"],
+        kindredship: json["kindredship"],
+        pinguitudinous: json["pinguitudinous"],
+        simpletonic: json["simpletonic"],
+        singsong: json["singsong"],
+        submergement: json["submergement"],
+        supraoesophagal: json["supraoesophagal"],
+        thrashel: json["thrashel"],
+        tyremesis: json["tyremesis"],
+        yoruba: json["Yoruba"],
+    );
+
+    Map<String, dynamic> toJson() => {
+        "arciform": arciform,
+        "cresolin": cresolin,
+        "disheartener": disheartener,
+        "disproportionable": disproportionable,
+        "Euchorda": euchorda,
+        "ferryway": ferryway,
+        "filamentiferous": filamentiferous,
+        "flemish": flemish,
+        "forgainst": forgainst,
+        "grainering": grainering,
+        "irrevoluble": irrevoluble,
+        "kindredship": kindredship,
+        "pinguitudinous": pinguitudinous,
+        "simpletonic": simpletonic,
+        "singsong": singsong,
+        "submergement": submergement,
+        "supraoesophagal": supraoesophagal,
+        "thrashel": thrashel,
+        "tyremesis": tyremesis,
+        "Yoruba": yoruba,
+    };
+}
+
+class PrefreshmanClass {
+    dynamic azorubine;
+    dynamic choroiditis;
+    dynamic coagulatory;
+    dynamic cyclorama;
+    dynamic dolphus;
+    dynamic duckhearted;
+    dynamic ficus;
+    dynamic gemaric;
+    dynamic jugation;
+    dynamic myoliposis;
+    dynamic nonnomination;
+    dynamic palay;
+    dynamic pentactinal;
+    dynamic phaet;
+    dynamic piquant;
+    dynamic registration;
+    dynamic remancipation;
+    dynamic scutatiform;
+    dynamic theodolite;
+    dynamic underward;
+
+    PrefreshmanClass({
+        required this.azorubine,
+        required this.choroiditis,
+        required this.coagulatory,
+        required this.cyclorama,
+        required this.dolphus,
+        required this.duckhearted,
+        required this.ficus,
+        required this.gemaric,
+        required this.jugation,
+        required this.myoliposis,
+        required this.nonnomination,
+        required this.palay,
+        required this.pentactinal,
+        required this.phaet,
+        required this.piquant,
+        required this.registration,
+        required this.remancipation,
+        required this.scutatiform,
+        required this.theodolite,
+        required this.underward,
+    });
+
+    factory PrefreshmanClass.fromJson(Map<String, dynamic> json) => PrefreshmanClass(
+        azorubine: json["azorubine"],
+        choroiditis: json["choroiditis"],
+        coagulatory: json["coagulatory"],
+        cyclorama: json["cyclorama"],
+        dolphus: json["Dolphus"],
+        duckhearted: json["duckhearted"],
+        ficus: json["Ficus"],
+        gemaric: json["Gemaric"],
+        jugation: json["jugation"],
+        myoliposis: json["myoliposis"],
+        nonnomination: json["nonnomination"],
+        palay: json["palay"],
+        pentactinal: json["pentactinal"],
+        phaet: json["Phaet"],
+        piquant: json["piquant"],
+        registration: json["registration"],
+        remancipation: json["remancipation"],
+        scutatiform: json["scutatiform"],
+        theodolite: json["theodolite"],
+        underward: json["underward"],
+    );
+
+    Map<String, dynamic> toJson() => {
+        "azorubine": azorubine,
+        "choroiditis": choroiditis,
+        "coagulatory": coagulatory,
+        "cyclorama": cyclorama,
+        "Dolphus": dolphus,
+        "duckhearted": duckhearted,
+        "Ficus": ficus,
+        "Gemaric": gemaric,
+        "jugation": jugation,
+        "myoliposis": myoliposis,
+        "nonnomination": nonnomination,
+        "palay": palay,
+        "pentactinal": pentactinal,
+        "Phaet": phaet,
+        "piquant": piquant,
+        "registration": registration,
+        "remancipation": remancipation,
+        "scutatiform": scutatiform,
+        "theodolite": theodolite,
+        "underward": underward,
+    };
+}
diff --git a/head/dart/test/inputs/json/priority/combinations4.json/default/TopLevel.dart b/head/dart/test/inputs/json/priority/combinations4.json/default/TopLevel.dart
new file mode 100644
index 0000000..d2580eb
--- /dev/null
+++ b/head/dart/test/inputs/json/priority/combinations4.json/default/TopLevel.dart
@@ -0,0 +1,1761 @@
+// To parse this JSON data, do
+//
+//     final topLevel = topLevelFromJson(jsonString);
+
+import 'dart:convert';
+
+TopLevel topLevelFromJson(String str) => TopLevel.fromJson(json.decode(str));
+
+String topLevelToJson(TopLevel data) => json.encode(data.toJson());
+
+class TopLevel {
+    final List<dynamic> protrusive;
+    final List<dynamic> pulpitism;
+    final List<dynamic> pyodermia;
+    final List<dynamic> quebrachine;
+    final List<dynamic> querier;
+    final List<dynamic> rebarbative;
+    final List<Reimagine> reimagine;
+    final Ressaut ressaut;
+    final List<dynamic> retrocervical;
+    final List<dynamic> revert;
+    final List<dynamic> rewrite;
+    final List<dynamic> saccoderm;
+    final List<dynamic> santir;
+    final List<dynamic> saprophilous;
+    final List<dynamic> saxten;
+    final List<Scatty?> scatty;
+    final List<dynamic> scoffer;
+    final List<dynamic> scrampum;
+    final double semantic;
+    final List<dynamic> serpentinic;
+    final List<dynamic> shadowable;
+    final List<dynamic> sistering;
+    final List<Staghunting> staghunting;
+    final List<dynamic> stagmometer;
+    final List<dynamic> stimulability;
+    final List<dynamic> strangleable;
+    final List<dynamic> strenuosity;
+    final List<dynamic> tabaxir;
+    final List<dynamic> talpiform;
+    final List<dynamic> thwack;
+    final List<double?> to;
+    final List<dynamic> tortricine;
+    final List<dynamic> truantcy;
+    final List<String> turgesce;
+    final List<dynamic> unbeginning;
+    final List<double> underdunged;
+    final List<dynamic> undesirability;
+    final List<dynamic> unerasing;
+    final List<dynamic> unguentarium;
+    final List<dynamic> unimpeachably;
+    final List<dynamic> unmortgaged;
+    final List<dynamic> unobstructed;
+    final List<dynamic> unreceptivity;
+    final List<dynamic> unsatisfactoriness;
+    final List<int> unsecurity;
+    final List<dynamic> unstressed;
+    final List<dynamic> untasked;
+    final List<dynamic> unvarying;
+    final List<dynamic> vehemently;
+    final Map<String, bool> warriorship;
+    final List<dynamic> whitepot;
+    final List<dynamic> wrothy;
+
+    TopLevel({
+        required this.protrusive,
+        required this.pulpitism,
+        required this.pyodermia,
+        required this.quebrachine,
+        required this.querier,
+        required this.rebarbative,
+        required this.reimagine,
+        required this.ressaut,
+        required this.retrocervical,
+        required this.revert,
+        required this.rewrite,
+        required this.saccoderm,
+        required this.santir,
+        required this.saprophilous,
+        required this.saxten,
+        required this.scatty,
+        required this.scoffer,
+        required this.scrampum,
+        required this.semantic,
+        required this.serpentinic,
+        required this.shadowable,
+        required this.sistering,
+        required this.staghunting,
+        required this.stagmometer,
+        required this.stimulability,
+        required this.strangleable,
+        required this.strenuosity,
+        required this.tabaxir,
+        required this.talpiform,
+        required this.thwack,
+        required this.to,
+        required this.tortricine,
+        required this.truantcy,
+        required this.turgesce,
+        required this.unbeginning,
+        required this.underdunged,
+        required this.undesirability,
+        required this.unerasing,
+        required this.unguentarium,
+        required this.unimpeachably,
+        required this.unmortgaged,
+        required this.unobstructed,
+        required this.unreceptivity,
+        required this.unsatisfactoriness,
+        required this.unsecurity,
+        required this.unstressed,
+        required this.untasked,
+        required this.unvarying,
+        required this.vehemently,
+        required this.warriorship,
+        required this.whitepot,
+        required this.wrothy,
+    });
+
+    factory TopLevel.fromJson(Map<String, dynamic> json) => TopLevel(
+        protrusive: List<dynamic>.from(json["protrusive"].map((x) => x)),
+        pulpitism: List<dynamic>.from(json["pulpitism"].map((x) => x)),
+        pyodermia: List<dynamic>.from(json["pyodermia"].map((x) => x)),
+        quebrachine: List<dynamic>.from(json["quebrachine"].map((x) => x)),
+        querier: List<dynamic>.from(json["querier"].map((x) => x)),
+        rebarbative: List<dynamic>.from(json["rebarbative"].map((x) => x)),
+        reimagine: List<Reimagine>.from(json["reimagine"].map((x) => Reimagine.fromJson(x))),
+        ressaut: Ressaut.fromJson(json["ressaut"]),
+        retrocervical: List<dynamic>.from(json["retrocervical"].map((x) => x)),
+        revert: List<dynamic>.from(json["revert"].map((x) => x)),
+        rewrite: List<dynamic>.from(json["rewrite"].map((x) => x)),
+        saccoderm: List<dynamic>.from(json["saccoderm"].map((x) => x)),
+        santir: List<dynamic>.from(json["santir"].map((x) => x)),
+        saprophilous: List<dynamic>.from(json["saprophilous"].map((x) => x)),
+        saxten: List<dynamic>.from(json["saxten"].map((x) => x)),
+        scatty: List<Scatty?>.from(json["scatty"].map((x) => x == null ? null : Scatty.fromJson(x))),
+        scoffer: List<dynamic>.from(json["scoffer"].map((x) => x)),
+        scrampum: List<dynamic>.from(json["scrampum"].map((x) => x)),
+        semantic: json["semantic"]?.toDouble(),
+        serpentinic: List<dynamic>.from(json["serpentinic"].map((x) => x)),
+        shadowable: List<dynamic>.from(json["shadowable"].map((x) => x)),
+        sistering: List<dynamic>.from(json["sistering"].map((x) => x)),
+        staghunting: List<Staghunting>.from(json["staghunting"].map((x) => Staghunting.fromJson(x))),
+        stagmometer: List<dynamic>.from(json["stagmometer"].map((x) => x)),
+        stimulability: List<dynamic>.from(json["stimulability"].map((x) => x)),
+        strangleable: List<dynamic>.from(json["strangleable"].map((x) => x)),
+        strenuosity: List<dynamic>.from(json["strenuosity"].map((x) => x)),
+        tabaxir: List<dynamic>.from(json["tabaxir"].map((x) => x)),
+        talpiform: List<dynamic>.from(json["talpiform"].map((x) => x)),
+        thwack: List<dynamic>.from(json["thwack"].map((x) => x)),
+        to: List<double?>.from(json["to"].map((x) => x?.toDouble())),
+        tortricine: List<dynamic>.from(json["tortricine"].map((x) => x)),
+        truantcy: List<dynamic>.from(json["truantcy"].map((x) => x)),
+        turgesce: List<String>.from(json["turgesce"].map((x) => x)),
+        unbeginning: List<dynamic>.from(json["unbeginning"].map((x) => x)),
+        underdunged: List<double>.from(json["underdunged"].map((x) => x?.toDouble())),
+        undesirability: List<dynamic>.from(json["undesirability"].map((x) => x)),
+        unerasing: List<dynamic>.from(json["unerasing"].map((x) => x)),
+        unguentarium: List<dynamic>.from(json["unguentarium"].map((x) => x)),
+        unimpeachably: List<dynamic>.from(json["unimpeachably"].map((x) => x)),
+        unmortgaged: List<dynamic>.from(json["unmortgaged"].map((x) => x)),
+        unobstructed: List<dynamic>.from(json["unobstructed"].map((x) => x)),
+        unreceptivity: List<dynamic>.from(json["unreceptivity"].map((x) => x)),
+        unsatisfactoriness: List<dynamic>.from(json["unsatisfactoriness"].map((x) => x)),
+        unsecurity: List<int>.from(json["unsecurity"].map((x) => x)),
+        unstressed: List<dynamic>.from(json["unstressed"].map((x) => x)),
+        untasked: List<dynamic>.from(json["untasked"].map((x) => x)),
+        unvarying: List<dynamic>.from(json["unvarying"].map((x) => x)),
+        vehemently: List<dynamic>.from(json["vehemently"].map((x) => x)),
+        warriorship: Map.from(json["warriorship"]).map((k, v) => MapEntry<String, bool>(k, v)),
+        whitepot: List<dynamic>.from(json["whitepot"].map((x) => x)),
+        wrothy: List<dynamic>.from(json["wrothy"].map((x) => x)),
+    );
+
+    Map<String, dynamic> toJson() => {
+        "protrusive": List<dynamic>.from(protrusive.map((x) => x)),
+        "pulpitism": List<dynamic>.from(pulpitism.map((x) => x)),
+        "pyodermia": List<dynamic>.from(pyodermia.map((x) => x)),
+        "quebrachine": List<dynamic>.from(quebrachine.map((x) => x)),
+        "querier": List<dynamic>.from(querier.map((x) => x)),
+        "rebarbative": List<dynamic>.from(rebarbative.map((x) => x)),
+        "reimagine": List<dynamic>.from(reimagine.map((x) => x.toJson())),
+        "ressaut": ressaut.toJson(),
+        "retrocervical": List<dynamic>.from(retrocervical.map((x) => x)),
+        "revert": List<dynamic>.from(revert.map((x) => x)),
+        "rewrite": List<dynamic>.from(rewrite.map((x) => x)),
+        "saccoderm": List<dynamic>.from(saccoderm.map((x) => x)),
+        "santir": List<dynamic>.from(santir.map((x) => x)),
+        "saprophilous": List<dynamic>.from(saprophilous.map((x) => x)),
+        "saxten": List<dynamic>.from(saxten.map((x) => x)),
+        "scatty": List<dynamic>.from(scatty.map((x) => x?.toJson())),
+        "scoffer": List<dynamic>.from(scoffer.map((x) => x)),
+        "scrampum": List<dynamic>.from(scrampum.map((x) => x)),
+        "semantic": semantic,
+        "serpentinic": List<dynamic>.from(serpentinic.map((x) => x)),
+        "shadowable": List<dynamic>.from(shadowable.map((x) => x)),
+        "sistering": List<dynamic>.from(sistering.map((x) => x)),
+        "staghunting": List<dynamic>.from(staghunting.map((x) => x.toJson())),
+        "stagmometer": List<dynamic>.from(stagmometer.map((x) => x)),
+        "stimulability": List<dynamic>.from(stimulability.map((x) => x)),
+        "strangleable": List<dynamic>.from(strangleable.map((x) => x)),
+        "strenuosity": List<dynamic>.from(strenuosity.map((x) => x)),
+        "tabaxir": List<dynamic>.from(tabaxir.map((x) => x)),
+        "talpiform": List<dynamic>.from(talpiform.map((x) => x)),
+        "thwack": List<dynamic>.from(thwack.map((x) => x)),
+        "to": List<dynamic>.from(to.map((x) => x)),
+        "tortricine": List<dynamic>.from(tortricine.map((x) => x)),
+        "truantcy": List<dynamic>.from(truantcy.map((x) => x)),
+        "turgesce": List<dynamic>.from(turgesce.map((x) => x)),
+        "unbeginning": List<dynamic>.from(unbeginning.map((x) => x)),
+        "underdunged": List<dynamic>.from(underdunged.map((x) => x)),
+        "undesirability": List<dynamic>.from(undesirability.map((x) => x)),
+        "unerasing": List<dynamic>.from(unerasing.map((x) => x)),
+        "unguentarium": List<dynamic>.from(unguentarium.map((x) => x)),
+        "unimpeachably": List<dynamic>.from(unimpeachably.map((x) => x)),
+        "unmortgaged": List<dynamic>.from(unmortgaged.map((x) => x)),
+        "unobstructed": List<dynamic>.from(unobstructed.map((x) => x)),
+        "unreceptivity": List<dynamic>.from(unreceptivity.map((x) => x)),
+        "unsatisfactoriness": List<dynamic>.from(unsatisfactoriness.map((x) => x)),
+        "unsecurity": List<dynamic>.from(unsecurity.map((x) => x)),
+        "unstressed": List<dynamic>.from(unstressed.map((x) => x)),
+        "untasked": List<dynamic>.from(untasked.map((x) => x)),
+        "unvarying": List<dynamic>.from(unvarying.map((x) => x)),
+        "vehemently": List<dynamic>.from(vehemently.map((x) => x)),
+        "warriorship": Map.from(warriorship).map((k, v) => MapEntry<String, dynamic>(k, v)),
+        "whitepot": List<dynamic>.from(whitepot.map((x) => x)),
+        "wrothy": List<dynamic>.from(wrothy.map((x) => x)),
+    };
+}
+
+class PulpitismClass {
+    final dynamic abnet;
+    final dynamic buckhorn;
+    final dynamic calciform;
+    final dynamic chelophore;
+    final dynamic cogitation;
+    final dynamic decreeable;
+    final dynamic despicable;
+    final dynamic isodiazo;
+    final dynamic jadedly;
+    final dynamic leptochlorite;
+    final dynamic nursling;
+    final dynamic palamedean;
+    final dynamic photoheliograph;
+    final dynamic pipewood;
+    final dynamic roberd;
+    final dynamic statable;
+    final dynamic superassume;
+    final dynamic syllabe;
+    final dynamic toughhead;
+    final dynamic underburn;
+
+    PulpitismClass({
+        required this.abnet,
+        required this.buckhorn,
+        required this.calciform,
+        required this.chelophore,
+        required this.cogitation,
+        required this.decreeable,
+        required this.despicable,
+        required this.isodiazo,
+        required this.jadedly,
+        required this.leptochlorite,
+        required this.nursling,
+        required this.palamedean,
+        required this.photoheliograph,
+        required this.pipewood,
+        required this.roberd,
+        required this.statable,
+        required this.superassume,
+        required this.syllabe,
+        required this.toughhead,
+        required this.underburn,
+    });
+
+    factory PulpitismClass.fromJson(Map<String, dynamic> json) => PulpitismClass(
+        abnet: json["abnet"],
+        buckhorn: json["buckhorn"],
+        calciform: json["calciform"],
+        chelophore: json["chelophore"],
+        cogitation: json["cogitation"],
+        decreeable: json["decreeable"],
+        despicable: json["despicable"],
+        isodiazo: json["isodiazo"],
+        jadedly: json["jadedly"],
+        leptochlorite: json["leptochlorite"],
+        nursling: json["nursling"],
+        palamedean: json["palamedean"],
+        photoheliograph: json["photoheliograph"],
+        pipewood: json["pipewood"],
+        roberd: json["roberd"],
+        statable: json["statable"],
+        superassume: json["superassume"],
+        syllabe: json["syllabe"],
+        toughhead: json["toughhead"],
+        underburn: json["underburn"],
+    );
+
+    Map<String, dynamic> toJson() => {
+        "abnet": abnet,
+        "buckhorn": buckhorn,
+        "calciform": calciform,
+        "chelophore": chelophore,
+        "cogitation": cogitation,
+        "decreeable": decreeable,
+        "despicable": despicable,
+        "isodiazo": isodiazo,
+        "jadedly": jadedly,
+        "leptochlorite": leptochlorite,
+        "nursling": nursling,
+        "palamedean": palamedean,
+        "photoheliograph": photoheliograph,
+        "pipewood": pipewood,
+        "roberd": roberd,
+        "statable": statable,
+        "superassume": superassume,
+        "syllabe": syllabe,
+        "toughhead": toughhead,
+        "underburn": underburn,
+    };
+}
+
+class PyodermiaClass {
+    final dynamic aphoristically;
+    final dynamic apophyllous;
+    final dynamic cognize;
+    final dynamic dermonosology;
+    final dynamic gyppo;
+    final dynamic ither;
+    final dynamic juglandaceous;
+    final dynamic litho;
+    final dynamic macropterous;
+    final dynamic photographer;
+    final dynamic romancing;
+    final dynamic rumness;
+    final dynamic somniloquist;
+    final dynamic stressfully;
+    final dynamic tactically;
+    final dynamic tracheophony;
+    final dynamic unappositely;
+    final dynamic unclothedly;
+    final dynamic unimplied;
+    final dynamic unsyncopated;
+
+    PyodermiaClass({
+        required this.aphoristically,
+        required this.apophyllous,
+        required this.cognize,
+        required this.dermonosology,
+        required this.gyppo,
+        required this.ither,
+        required this.juglandaceous,
+        required this.litho,
+        required this.macropterous,
+        required this.photographer,
+        required this.romancing,
+        required this.rumness,
+        required this.somniloquist,
+        required this.stressfully,
+        required this.tactically,
+        required this.tracheophony,
+        required this.unappositely,
+        required this.unclothedly,
+        required this.unimplied,
+        required this.unsyncopated,
+    });
+
+    factory PyodermiaClass.fromJson(Map<String, dynamic> json) => PyodermiaClass(
+        aphoristically: json["aphoristically"],
+        apophyllous: json["apophyllous"],
+        cognize: json["cognize"],
+        dermonosology: json["dermonosology"],
+        gyppo: json["Gyppo"],
+        ither: json["ither"],
+        juglandaceous: json["juglandaceous"],
+        litho: json["litho"],
+        macropterous: json["macropterous"],
+        photographer: json["photographer"],
+        romancing: json["romancing"],
+        rumness: json["rumness"],
+        somniloquist: json["somniloquist"],
+        stressfully: json["stressfully"],
+        tactically: json["tactically"],
+        tracheophony: json["tracheophony"],
+        unappositely: json["unappositely"],
+        unclothedly: json["unclothedly"],
+        unimplied: json["unimplied"],
+        unsyncopated: json["unsyncopated"],
+    );
+
+    Map<String, dynamic> toJson() => {
+        "aphoristically": aphoristically,
+        "apophyllous": apophyllous,
+        "cognize": cognize,
+        "dermonosology": dermonosology,
+        "Gyppo": gyppo,
+        "ither": ither,
+        "juglandaceous": juglandaceous,
+        "litho": litho,
+        "macropterous": macropterous,
+        "photographer": photographer,
+        "romancing": romancing,
+        "rumness": rumness,
+        "somniloquist": somniloquist,
+        "stressfully": stressfully,
+        "tactically": tactically,
+        "tracheophony": tracheophony,
+        "unappositely": unappositely,
+        "unclothedly": unclothedly,
+        "unimplied": unimplied,
+        "unsyncopated": unsyncopated,
+    };
+}
+
+class QuebrachineClass {
+    final double catharticalness;
+    final int chirotherium;
+    final String disdiapason;
+    final bool homocerc;
+    final dynamic nonbookish;
+
+    QuebrachineClass({
+        required this.catharticalness,
+        required this.chirotherium,
+        required this.disdiapason,
+        required this.homocerc,
+        required this.nonbookish,
+    });
+
+    factory QuebrachineClass.fromJson(Map<String, dynamic> json) => QuebrachineClass(
+        catharticalness: json["catharticalness"]?.toDouble(),
+        chirotherium: json["Chirotherium"],
+        disdiapason: json["disdiapason"],
+        homocerc: json["homocerc"],
+        nonbookish: json["nonbookish"],
+    );
+
+    Map<String, dynamic> toJson() => {
+        "catharticalness": catharticalness,
+        "Chirotherium": chirotherium,
+        "disdiapason": disdiapason,
+        "homocerc": homocerc,
+        "nonbookish": nonbookish,
+    };
+}
+
+class Reimagine {
+    final dynamic adducible;
+    final dynamic anabolin;
+    final dynamic brainy;
+    final double? catharticalness;
+    final int? chirotherium;
+    final dynamic chrysamine;
+    final String? disdiapason;
+    final dynamic fluxweed;
+    final dynamic glaucine;
+    final dynamic grobianism;
+    final dynamic hermo;
+    final dynamic hieroglyphist;
+    final bool? homocerc;
+    final dynamic icteroid;
+    final dynamic immortal;
+    final dynamic impetulant;
+    final dynamic irrigate;
+    final dynamic myxedema;
+    final dynamic nonbookish;
+    final dynamic onyx;
+    final dynamic repasser;
+    final dynamic septomarginal;
+    final dynamic subdie;
+    final dynamic tibiometatarsal;
+    final dynamic waltzlike;
+
+    Reimagine({
+        this.adducible,
+        this.anabolin,
+        this.brainy,
+        this.catharticalness,
+        this.chirotherium,
+        this.chrysamine,
+        this.disdiapason,
+        this.fluxweed,
+        this.glaucine,
+        this.grobianism,
+        this.hermo,
+        this.hieroglyphist,
+        this.homocerc,
+        this.icteroid,
+        this.immortal,
+        this.impetulant,
+        this.irrigate,
+        this.myxedema,
+        this.nonbookish,
+        this.onyx,
+        this.repasser,
+        this.septomarginal,
+        this.subdie,
+        this.tibiometatarsal,
+        this.waltzlike,
+    });
+
+    factory Reimagine.fromJson(Map<String, dynamic> json) => Reimagine(
+        adducible: json["adducible"],
+        anabolin: json["anabolin"],
+        brainy: json["brainy"],
+        catharticalness: json["catharticalness"]?.toDouble(),
+        chirotherium: json["Chirotherium"],
+        chrysamine: json["chrysamine"],
+        disdiapason: json["disdiapason"],
+        fluxweed: json["fluxweed"],
+        glaucine: json["glaucine"],
+        grobianism: json["grobianism"],
+        hermo: json["Hermo"],
+        hieroglyphist: json["hieroglyphist"],
+        homocerc: json["homocerc"],
+        icteroid: json["icteroid"],
+        immortal: json["immortal"],
+        impetulant: json["impetulant"],
+        irrigate: json["irrigate"],
+        myxedema: json["myxedema"],
+        nonbookish: json["nonbookish"],
+        onyx: json["onyx"],
+        repasser: json["repasser"],
+        septomarginal: json["septomarginal"],
+        subdie: json["subdie"],
+        tibiometatarsal: json["tibiometatarsal"],
+        waltzlike: json["waltzlike"],
+    );
+
+    Map<String, dynamic> toJson() => {
+        "adducible": adducible,
+        "anabolin": anabolin,
+        "brainy": brainy,
+        "catharticalness": catharticalness,
+        "Chirotherium": chirotherium,
+        "chrysamine": chrysamine,
+        "disdiapason": disdiapason,
+        "fluxweed": fluxweed,
+        "glaucine": glaucine,
+        "grobianism": grobianism,
+        "Hermo": hermo,
+        "hieroglyphist": hieroglyphist,
+        "homocerc": homocerc,
+        "icteroid": icteroid,
+        "immortal": immortal,
+        "impetulant": impetulant,
+        "irrigate": irrigate,
+        "myxedema": myxedema,
+        "nonbookish": nonbookish,
+        "onyx": onyx,
+        "repasser": repasser,
+        "septomarginal": septomarginal,
+        "subdie": subdie,
+        "tibiometatarsal": tibiometatarsal,
+        "waltzlike": waltzlike,
+    };
+}
+
+class Ressaut {
+    final String apperceptive;
+    final String cuttoo;
+    final String douser;
+    final String drinkproof;
+    final String forementioned;
+    final String freesia;
+    final String genevieve;
+    final String hyperdiabolical;
+    final String hypocone;
+    final String irreverentially;
+    final String jumart;
+    final String mimosaceae;
+    final String mollicrush;
+    final String nedder;
+    final String retinasphalt;
+    final String sough;
+    final String steading;
+    final String theopaschitism;
+    final String undurableness;
+    final String unmingleable;
+
+    Ressaut({
+        required this.apperceptive,
+        required this.cuttoo,
+        required this.douser,
+        required this.drinkproof,
+        required this.forementioned,
+        required this.freesia,
+        required this.genevieve,
+        required this.hyperdiabolical,
+        required this.hypocone,
+        required this.irreverentially,
+        required this.jumart,
+        required this.mimosaceae,
+        required this.mollicrush,
+        required this.nedder,
+        required this.retinasphalt,
+        required this.sough,
+        required this.steading,
+        required this.theopaschitism,
+        required this.undurableness,
+        required this.unmingleable,
+    });
+
+    factory Ressaut.fromJson(Map<String, dynamic> json) => Ressaut(
+        apperceptive: json["apperceptive"],
+        cuttoo: json["cuttoo"],
+        douser: json["douser"],
+        drinkproof: json["drinkproof"],
+        forementioned: json["forementioned"],
+        freesia: json["Freesia"],
+        genevieve: json["Genevieve"],
+        hyperdiabolical: json["hyperdiabolical"],
+        hypocone: json["hypocone"],
+        irreverentially: json["irreverentially"],
+        jumart: json["jumart"],
+        mimosaceae: json["Mimosaceae"],
+        mollicrush: json["mollicrush"],
+        nedder: json["nedder"],
+        retinasphalt: json["retinasphalt"],
+        sough: json["sough"],
+        steading: json["steading"],
+        theopaschitism: json["Theopaschitism"],
+        undurableness: json["undurableness"],
+        unmingleable: json["unmingleable"],
+    );
+
+    Map<String, dynamic> toJson() => {
+        "apperceptive": apperceptive,
+        "cuttoo": cuttoo,
+        "douser": douser,
+        "drinkproof": drinkproof,
+        "forementioned": forementioned,
+        "Freesia": freesia,
+        "Genevieve": genevieve,
+        "hyperdiabolical": hyperdiabolical,
+        "hypocone": hypocone,
+        "irreverentially": irreverentially,
+        "jumart": jumart,
+        "Mimosaceae": mimosaceae,
+        "mollicrush": mollicrush,
+        "nedder": nedder,
+        "retinasphalt": retinasphalt,
+        "sough": sough,
+        "steading": steading,
+        "Theopaschitism": theopaschitism,
+        "undurableness": undurableness,
+        "unmingleable": unmingleable,
+    };
+}
+
+class RewriteClass {
+    final dynamic accountancy;
+    final dynamic cacotrophic;
+    final dynamic contest;
+    final dynamic couthily;
+    final dynamic falculate;
+    final dynamic foreseize;
+    final dynamic hyades;
+    final dynamic lemnad;
+    final dynamic monotheistically;
+    final dynamic nonflying;
+    final dynamic ptenoglossa;
+    final dynamic repatch;
+    final dynamic rodman;
+    final dynamic strung;
+    final dynamic titmal;
+    final dynamic twalpennyworth;
+    final dynamic unblamable;
+    final dynamic vertical;
+    final dynamic whiggification;
+    final dynamic yardman;
+
+    RewriteClass({
+        required this.accountancy,
+        required this.cacotrophic,
+        required this.contest,
+        required this.couthily,
+        required this.falculate,
+        required this.foreseize,
+        required this.hyades,
+        required this.lemnad,
+        required this.monotheistically,
+        required this.nonflying,
+        required this.ptenoglossa,
+        required this.repatch,
+        required this.rodman,
+        required this.strung,
+        required this.titmal,
+        required this.twalpennyworth,
+        required this.unblamable,
+        required this.vertical,
+        required this.whiggification,
+        required this.yardman,
+    });
+
+    factory RewriteClass.fromJson(Map<String, dynamic> json) => RewriteClass(
+        accountancy: json["accountancy"],
+        cacotrophic: json["cacotrophic"],
+        contest: json["contest"],
+        couthily: json["couthily"],
+        falculate: json["falculate"],
+        foreseize: json["foreseize"],
+        hyades: json["Hyades"],
+        lemnad: json["lemnad"],
+        monotheistically: json["monotheistically"],
+        nonflying: json["nonflying"],
+        ptenoglossa: json["Ptenoglossa"],
+        repatch: json["repatch"],
+        rodman: json["rodman"],
+        strung: json["strung"],
+        titmal: json["titmal"],
+        twalpennyworth: json["twalpennyworth"],
+        unblamable: json["unblamable"],
+        vertical: json["vertical"],
+        whiggification: json["Whiggification"],
+        yardman: json["yardman"],
+    );
+
+    Map<String, dynamic> toJson() => {
+        "accountancy": accountancy,
+        "cacotrophic": cacotrophic,
+        "contest": contest,
+        "couthily": couthily,
+        "falculate": falculate,
+        "foreseize": foreseize,
+        "Hyades": hyades,
+        "lemnad": lemnad,
+        "monotheistically": monotheistically,
+        "nonflying": nonflying,
+        "Ptenoglossa": ptenoglossa,
+        "repatch": repatch,
+        "rodman": rodman,
+        "strung": strung,
+        "titmal": titmal,
+        "twalpennyworth": twalpennyworth,
+        "unblamable": unblamable,
+        "vertical": vertical,
+        "Whiggification": whiggification,
+        "yardman": yardman,
+    };
+}
+
+class SantirClass {
+    final dynamic admiredly;
+    final dynamic demicaponier;
+    final dynamic epitympanic;
+    final dynamic investitor;
+    final dynamic lupiform;
+    final dynamic monoflagellate;
+    final dynamic paleoethnic;
+    final dynamic prediscountable;
+    final dynamic rhetoricals;
+    final dynamic roomth;
+    final dynamic saccharose;
+    final dynamic septonasal;
+    final dynamic serpenticide;
+    final dynamic setarious;
+    final dynamic spaework;
+    final dynamic stylite;
+    final dynamic suessiones;
+    final dynamic timelily;
+    final dynamic unprofaned;
+    final dynamic vorticular;
+
+    SantirClass({
+        required this.admiredly,
+        required this.demicaponier,
+        required this.epitympanic,
+        required this.investitor,
+        required this.lupiform,
+        required this.monoflagellate,
+        required this.paleoethnic,
+        required this.prediscountable,
+        required this.rhetoricals,
+        required this.roomth,
+        required this.saccharose,
+        required this.septonasal,
+        required this.serpenticide,
+        required this.setarious,
+        required this.spaework,
+        required this.stylite,
+        required this.suessiones,
+        required this.timelily,
+        required this.unprofaned,
+        required this.vorticular,
+    });
+
+    factory SantirClass.fromJson(Map<String, dynamic> json) => SantirClass(
+        admiredly: json["admiredly"],
+        demicaponier: json["demicaponier"],
+        epitympanic: json["epitympanic"],
+        investitor: json["investitor"],
+        lupiform: json["lupiform"],
+        monoflagellate: json["monoflagellate"],
+        paleoethnic: json["paleoethnic"],
+        prediscountable: json["prediscountable"],
+        rhetoricals: json["rhetoricals"],
+        roomth: json["roomth"],
+        saccharose: json["saccharose"],
+        septonasal: json["septonasal"],
+        serpenticide: json["serpenticide"],
+        setarious: json["setarious"],
+        spaework: json["spaework"],
+        stylite: json["stylite"],
+        suessiones: json["Suessiones"],
+        timelily: json["timelily"],
+        unprofaned: json["unprofaned"],
+        vorticular: json["vorticular"],
+    );
+
+    Map<String, dynamic> toJson() => {
+        "admiredly": admiredly,
+        "demicaponier": demicaponier,
+        "epitympanic": epitympanic,
+        "investitor": investitor,
+        "lupiform": lupiform,
+        "monoflagellate": monoflagellate,
+        "paleoethnic": paleoethnic,
+        "prediscountable": prediscountable,
+        "rhetoricals": rhetoricals,
+        "roomth": roomth,
+        "saccharose": saccharose,
+        "septonasal": septonasal,
+        "serpenticide": serpenticide,
+        "setarious": setarious,
+        "spaework": spaework,
+        "stylite": stylite,
+        "Suessiones": suessiones,
+        "timelily": timelily,
+        "unprofaned": unprofaned,
+        "vorticular": vorticular,
+    };
+}
+
+class SaxtenClass {
+    final dynamic algarrobilla;
+    final dynamic bowgrace;
+    final double? catharticalness;
+    final dynamic centaurid;
+    final int? chirotherium;
+    final String? disdiapason;
+    final dynamic flix;
+    final dynamic germanely;
+    final bool? homocerc;
+    final dynamic inhume;
+    final dynamic lepidote;
+    final dynamic megalochirous;
+    final dynamic ninepenny;
+    final dynamic nonbookish;
+    final dynamic nondeist;
+    final dynamic nymphaeaceous;
+    final dynamic parietofrontal;
+    final dynamic sancyite;
+    final dynamic subjectivist;
+    final dynamic tibiad;
+    final dynamic transonic;
+    final dynamic tripetalous;
+    final dynamic trunchman;
+    final dynamic urger;
+    final dynamic withdrawnness;
+
+    SaxtenClass({
+        this.algarrobilla,
+        this.bowgrace,
+        this.catharticalness,
+        this.centaurid,
+        this.chirotherium,
+        this.disdiapason,
+        this.flix,
+        this.germanely,
+        this.homocerc,
+        this.inhume,
+        this.lepidote,
+        this.megalochirous,
+        this.ninepenny,
+        this.nonbookish,
+        this.nondeist,
+        this.nymphaeaceous,
+        this.parietofrontal,
+        this.sancyite,
+        this.subjectivist,
+        this.tibiad,
+        this.transonic,
+        this.tripetalous,
+        this.trunchman,
+        this.urger,
+        this.withdrawnness,
+    });
+
+    factory SaxtenClass.fromJson(Map<String, dynamic> json) => SaxtenClass(
+        algarrobilla: json["algarrobilla"],
+        bowgrace: json["bowgrace"],
+        catharticalness: json["catharticalness"]?.toDouble(),
+        centaurid: json["Centaurid"],
+        chirotherium: json["Chirotherium"],
+        disdiapason: json["disdiapason"],
+        flix: json["flix"],
+        germanely: json["germanely"],
+        homocerc: json["homocerc"],
+        inhume: json["inhume"],
+        lepidote: json["lepidote"],
+        megalochirous: json["megalochirous"],
+        ninepenny: json["ninepenny"],
+        nonbookish: json["nonbookish"],
+        nondeist: json["nondeist"],
+        nymphaeaceous: json["nymphaeaceous"],
+        parietofrontal: json["parietofrontal"],
+        sancyite: json["sancyite"],
+        subjectivist: json["subjectivist"],
+        tibiad: json["tibiad"],
+        transonic: json["transonic"],
+        tripetalous: json["tripetalous"],
+        trunchman: json["trunchman"],
+        urger: json["urger"],
+        withdrawnness: json["withdrawnness"],
+    );
+
+    Map<String, dynamic> toJson() => {
+        "algarrobilla": algarrobilla,
+        "bowgrace": bowgrace,
+        "catharticalness": catharticalness,
+        "Centaurid": centaurid,
+        "Chirotherium": chirotherium,
+        "disdiapason": disdiapason,
+        "flix": flix,
+        "germanely": germanely,
+        "homocerc": homocerc,
+        "inhume": inhume,
+        "lepidote": lepidote,
+        "megalochirous": megalochirous,
+        "ninepenny": ninepenny,
+        "nonbookish": nonbookish,
+        "nondeist": nondeist,
+        "nymphaeaceous": nymphaeaceous,
+        "parietofrontal": parietofrontal,
+        "sancyite": sancyite,
+        "subjectivist": subjectivist,
+        "tibiad": tibiad,
+        "transonic": transonic,
+        "tripetalous": tripetalous,
+        "trunchman": trunchman,
+        "urger": urger,
+        "withdrawnness": withdrawnness,
+    };
+}
+
+class Scatty {
+    final dynamic aeriferous;
+    final dynamic antical;
+    final dynamic antighostism;
+    final dynamic arcanum;
+    final dynamic autotrophy;
+    final dynamic baronial;
+    final dynamic caffeine;
+    final dynamic gorgoniacean;
+    final dynamic heroical;
+    final dynamic hydropical;
+    final dynamic mechanology;
+    final dynamic musicopoetic;
+    final dynamic officiality;
+    final dynamic oftentimes;
+    final dynamic ophthalmotonometer;
+    final dynamic reflectively;
+    final dynamic springer;
+    final dynamic tabasco;
+    final dynamic teleianthous;
+    final dynamic uncombated;
+
+    Scatty({
+        required this.aeriferous,
+        required this.antical,
+        required this.antighostism,
+        required this.arcanum,
+        required this.autotrophy,
+        required this.baronial,
+        required this.caffeine,
+        required this.gorgoniacean,
+        required this.heroical,
+        required this.hydropical,
+        required this.mechanology,
+        required this.musicopoetic,
+        required this.officiality,
+        required this.oftentimes,
+        required this.ophthalmotonometer,
+        required this.reflectively,
+        required this.springer,
+        required this.tabasco,
+        required this.teleianthous,
+        required this.uncombated,
+    });
+
+    factory Scatty.fromJson(Map<String, dynamic> json) => Scatty(
+        aeriferous: json["aeriferous"],
+        antical: json["antical"],
+        antighostism: json["antighostism"],
+        arcanum: json["arcanum"],
+        autotrophy: json["autotrophy"],
+        baronial: json["baronial"],
+        caffeine: json["caffeine"],
+        gorgoniacean: json["gorgoniacean"],
+        heroical: json["heroical"],
+        hydropical: json["hydropical"],
+        mechanology: json["mechanology"],
+        musicopoetic: json["musicopoetic"],
+        officiality: json["officiality"],
+        oftentimes: json["oftentimes"],
+        ophthalmotonometer: json["ophthalmotonometer"],
+        reflectively: json["reflectively"],
+        springer: json["springer"],
+        tabasco: json["Tabasco"],
+        teleianthous: json["teleianthous"],
+        uncombated: json["uncombated"],
+    );
+
+    Map<String, dynamic> toJson() => {
+        "aeriferous": aeriferous,
+        "antical": antical,
+        "antighostism": antighostism,
+        "arcanum": arcanum,
+        "autotrophy": autotrophy,
+        "baronial": baronial,
+        "caffeine": caffeine,
+        "gorgoniacean": gorgoniacean,
+        "heroical": heroical,
+        "hydropical": hydropical,
+        "mechanology": mechanology,
+        "musicopoetic": musicopoetic,
+        "officiality": officiality,
+        "oftentimes": oftentimes,
+        "ophthalmotonometer": ophthalmotonometer,
+        "reflectively": reflectively,
+        "springer": springer,
+        "Tabasco": tabasco,
+        "teleianthous": teleianthous,
+        "uncombated": uncombated,
+    };
+}
+
+class SisteringClass {
+    final dynamic amphicarpic;
+    final dynamic chianti;
+    final dynamic frigorific;
+    final dynamic haplomi;
+    final dynamic hyperkinesis;
+    final dynamic laudable;
+    final dynamic madwoman;
+    final dynamic maimedly;
+    final dynamic micropterygidae;
+    final dynamic microrhabdus;
+    final dynamic nondense;
+    final dynamic phlebemphraxis;
+    final dynamic redsear;
+    final dynamic schismatical;
+    final dynamic tartryl;
+    final dynamic unabhorred;
+    final dynamic undeliberateness;
+    final dynamic unmixable;
+    final dynamic untruckling;
+    final dynamic vineal;
+
+    SisteringClass({
+        required this.amphicarpic,
+        required this.chianti,
+        required this.frigorific,
+        required this.haplomi,
+        required this.hyperkinesis,
+        required this.laudable,
+        required this.madwoman,
+        required this.maimedly,
+        required this.micropterygidae,
+        required this.microrhabdus,
+        required this.nondense,
+        required this.phlebemphraxis,
+        required this.redsear,
+        required this.schismatical,
+        required this.tartryl,
+        required this.unabhorred,
+        required this.undeliberateness,
+        required this.unmixable,
+        required this.untruckling,
+        required this.vineal,
+    });
+
+    factory SisteringClass.fromJson(Map<String, dynamic> json) => SisteringClass(
+        amphicarpic: json["amphicarpic"],
+        chianti: json["Chianti"],
+        frigorific: json["frigorific"],
+        haplomi: json["Haplomi"],
+        hyperkinesis: json["hyperkinesis"],
+        laudable: json["laudable"],
+        madwoman: json["madwoman"],
+        maimedly: json["maimedly"],
+        micropterygidae: json["Micropterygidae"],
+        microrhabdus: json["microrhabdus"],
+        nondense: json["nondense"],
+        phlebemphraxis: json["phlebemphraxis"],
+        redsear: json["redsear"],
+        schismatical: json["schismatical"],
+        tartryl: json["tartryl"],
+        unabhorred: json["unabhorred"],
+        undeliberateness: json["undeliberateness"],
+        unmixable: json["unmixable"],
+        untruckling: json["untruckling"],
+        vineal: json["vineal"],
+    );
+
+    Map<String, dynamic> toJson() => {
+        "amphicarpic": amphicarpic,
+        "Chianti": chianti,
+        "frigorific": frigorific,
+        "Haplomi": haplomi,
+        "hyperkinesis": hyperkinesis,
+        "laudable": laudable,
+        "madwoman": madwoman,
+        "maimedly": maimedly,
+        "Micropterygidae": micropterygidae,
+        "microrhabdus": microrhabdus,
+        "nondense": nondense,
+        "phlebemphraxis": phlebemphraxis,
+        "redsear": redsear,
+        "schismatical": schismatical,
+        "tartryl": tartryl,
+        "unabhorred": unabhorred,
+        "undeliberateness": undeliberateness,
+        "unmixable": unmixable,
+        "untruckling": untruckling,
+        "vineal": vineal,
+    };
+}
+
+class Staghunting {
+    final int? calorimetric;
+    final int? canid;
+    final double? catharticalness;
+    final int? chirotherium;
+    final String? disdiapason;
+    final int? ditriglyphic;
+    final int? floriferousness;
+    final int? gamelike;
+    final int? grig;
+    final bool? homocerc;
+    final int? interloan;
+    final int? lithotomy;
+    final int? loric;
+    final int? membranocoriaceous;
+    final int? membranogenic;
+    final dynamic nonbookish;
+    final int? overtrump;
+    final int? scotino;
+    final int? seasonable;
+    final int? sephen;
+    final int? stigmarioid;
+    final int? tired;
+    final int? trifid;
+    final int? undefeatedly;
+    final int? ungirlish;
+
+    Staghunting({
+        this.calorimetric,
+        this.canid,
+        this.catharticalness,
+        this.chirotherium,
+        this.disdiapason,
+        this.ditriglyphic,
+        this.floriferousness,
+        this.gamelike,
+        this.grig,
+        this.homocerc,
+        this.interloan,
+        this.lithotomy,
+        this.loric,
+        this.membranocoriaceous,
+        this.membranogenic,
+        this.nonbookish,
+        this.overtrump,
+        this.scotino,
+        this.seasonable,
+        this.sephen,
+        this.stigmarioid,
+        this.tired,
+        this.trifid,
+        this.undefeatedly,
+        this.ungirlish,
+    });
+
+    factory Staghunting.fromJson(Map<String, dynamic> json) => Staghunting(
+        calorimetric: json["calorimetric"],
+        canid: json["canid"],
+        catharticalness: json["catharticalness"]?.toDouble(),
+        chirotherium: json["Chirotherium"],
+        disdiapason: json["disdiapason"],
+        ditriglyphic: json["ditriglyphic"],
+        floriferousness: json["floriferousness"],
+        gamelike: json["gamelike"],
+        grig: json["grig"],
+        homocerc: json["homocerc"],
+        interloan: json["interloan"],
+        lithotomy: json["lithotomy"],
+        loric: json["loric"],
+        membranocoriaceous: json["membranocoriaceous"],
+        membranogenic: json["membranogenic"],
+        nonbookish: json["nonbookish"],
+        overtrump: json["overtrump"],
+        scotino: json["scotino"],
+        seasonable: json["seasonable"],
+        sephen: json["sephen"],
+        stigmarioid: json["stigmarioid"],
+        tired: json["tired"],
+        trifid: json["trifid"],
+        undefeatedly: json["undefeatedly"],
+        ungirlish: json["ungirlish"],
+    );
+
+    Map<String, dynamic> toJson() => {
+        "calorimetric": calorimetric,
+        "canid": canid,
+        "catharticalness": catharticalness,
+        "Chirotherium": chirotherium,
+        "disdiapason": disdiapason,
+        "ditriglyphic": ditriglyphic,
+        "floriferousness": floriferousness,
+        "gamelike": gamelike,
+        "grig": grig,
+        "homocerc": homocerc,
+        "interloan": interloan,
+        "lithotomy": lithotomy,
+        "loric": loric,
+        "membranocoriaceous": membranocoriaceous,
+        "membranogenic": membranogenic,
+        "nonbookish": nonbookish,
+        "overtrump": overtrump,
+        "scotino": scotino,
+        "seasonable": seasonable,
+        "sephen": sephen,
+        "stigmarioid": stigmarioid,
+        "tired": tired,
+        "trifid": trifid,
+        "undefeatedly": undefeatedly,
+        "ungirlish": ungirlish,
+    };
+}
+
+class StrenuosityClass {
+    final int? bliss;
+    final int? buccate;
+    final int? bulletproof;
+    final double? catharticalness;
+    final int? chirotherium;
+    final int? crumblingness;
+    final String? disdiapason;
+    final int? engagedly;
+    final int? fightable;
+    final int? hoariness;
+    final bool? homocerc;
+    final int? hypopodium;
+    final int? luxurist;
+    final int? mechanician;
+    final dynamic nonbookish;
+    final int? onopordon;
+    final int? podgily;
+    final int? reformableness;
+    final int? scatterbrains;
+    final int? seminuria;
+    final int? sodomite;
+    final int? tramp;
+    final int? undueness;
+    final int? worthily;
+    final int? yankeeist;
+
+    StrenuosityClass({
+        this.bliss,
+        this.buccate,
+        this.bulletproof,
+        this.catharticalness,
+        this.chirotherium,
+        this.crumblingness,
+        this.disdiapason,
+        this.engagedly,
+        this.fightable,
+        this.hoariness,
+        this.homocerc,
+        this.hypopodium,
+        this.luxurist,
+        this.mechanician,
+        this.nonbookish,
+        this.onopordon,
+        this.podgily,
+        this.reformableness,
+        this.scatterbrains,
+        this.seminuria,
+        this.sodomite,
+        this.tramp,
+        this.undueness,
+        this.worthily,
+        this.yankeeist,
+    });
+
+    factory StrenuosityClass.fromJson(Map<String, dynamic> json) => StrenuosityClass(
+        bliss: json["bliss"],
+        buccate: json["buccate"],
+        bulletproof: json["bulletproof"],
+        catharticalness: json["catharticalness"]?.toDouble(),
+        chirotherium: json["Chirotherium"],
+        crumblingness: json["crumblingness"],
+        disdiapason: json["disdiapason"],
+        engagedly: json["engagedly"],
+        fightable: json["fightable"],
+        hoariness: json["hoariness"],
+        homocerc: json["homocerc"],
+        hypopodium: json["hypopodium"],
+        luxurist: json["luxurist"],
+        mechanician: json["mechanician"],
+        nonbookish: json["nonbookish"],
+        onopordon: json["Onopordon"],
+        podgily: json["podgily"],
+        reformableness: json["reformableness"],
+        scatterbrains: json["scatterbrains"],
+        seminuria: json["seminuria"],
+        sodomite: json["Sodomite"],
+        tramp: json["tramp"],
+        undueness: json["undueness"],
+        worthily: json["worthily"],
+        yankeeist: json["Yankeeist"],
+    );
+
+    Map<String, dynamic> toJson() => {
+        "bliss": bliss,
+        "buccate": buccate,
+        "bulletproof": bulletproof,
+        "catharticalness": catharticalness,
+        "Chirotherium": chirotherium,
+        "crumblingness": crumblingness,
+        "disdiapason": disdiapason,
+        "engagedly": engagedly,
+        "fightable": fightable,
+        "hoariness": hoariness,
+        "homocerc": homocerc,
+        "hypopodium": hypopodium,
+        "luxurist": luxurist,
+        "mechanician": mechanician,
+        "nonbookish": nonbookish,
+        "Onopordon": onopordon,
+        "podgily": podgily,
+        "reformableness": reformableness,
+        "scatterbrains": scatterbrains,
+        "seminuria": seminuria,
+        "Sodomite": sodomite,
+        "tramp": tramp,
+        "undueness": undueness,
+        "worthily": worthily,
+        "Yankeeist": yankeeist,
+    };
+}
+
+class TruantcyClass {
+    final dynamic alfiona;
+    final dynamic ascaridiasis;
+    final dynamic bungey;
+    final double? catharticalness;
+    final dynamic ceroxyle;
+    final int? chirotherium;
+    final dynamic chorology;
+    final String? disdiapason;
+    final dynamic enmarble;
+    final dynamic epeira;
+    final dynamic eurylaimi;
+    final dynamic germination;
+    final dynamic hallelujah;
+    final bool? homocerc;
+    final dynamic lev;
+    final dynamic mouthing;
+    final dynamic nonbookish;
+    final dynamic philliloo;
+    final dynamic planetal;
+    final dynamic poney;
+    final dynamic punctualist;
+    final dynamic returnlessly;
+    final dynamic skelder;
+    final dynamic windwaywardly;
+    final dynamic yuman;
+
+    TruantcyClass({
+        this.alfiona,
+        this.ascaridiasis,
+        this.bungey,
+        this.catharticalness,
+        this.ceroxyle,
+        this.chirotherium,
+        this.chorology,
+        this.disdiapason,
+        this.enmarble,
+        this.epeira,
+        this.eurylaimi,
+        this.germination,
+        this.hallelujah,
+        this.homocerc,
+        this.lev,
+        this.mouthing,
+        this.nonbookish,
+        this.philliloo,
+        this.planetal,
+        this.poney,
+        this.punctualist,
+        this.returnlessly,
+        this.skelder,
+        this.windwaywardly,
+        this.yuman,
+    });
+
+    factory TruantcyClass.fromJson(Map<String, dynamic> json) => TruantcyClass(
+        alfiona: json["alfiona"],
+        ascaridiasis: json["ascaridiasis"],
+        bungey: json["bungey"],
+        catharticalness: json["catharticalness"]?.toDouble(),
+        ceroxyle: json["ceroxyle"],
+        chirotherium: json["Chirotherium"],
+        chorology: json["chorology"],
+        disdiapason: json["disdiapason"],
+        enmarble: json["enmarble"],
+        epeira: json["Epeira"],
+        eurylaimi: json["Eurylaimi"],
+        germination: json["germination"],
+        hallelujah: json["hallelujah"],
+        homocerc: json["homocerc"],
+        lev: json["lev"],
+        mouthing: json["mouthing"],
+        nonbookish: json["nonbookish"],
+        philliloo: json["philliloo"],
+        planetal: json["planetal"],
+        poney: json["poney"],
+        punctualist: json["punctualist"],
+        returnlessly: json["returnlessly"],
+        skelder: json["skelder"],
+        windwaywardly: json["windwaywardly"],
+        yuman: json["Yuman"],
+    );
+
+    Map<String, dynamic> toJson() => {
+        "alfiona": alfiona,
+        "ascaridiasis": ascaridiasis,
+        "bungey": bungey,
+        "catharticalness": catharticalness,
+        "ceroxyle": ceroxyle,
+        "Chirotherium": chirotherium,
+        "chorology": chorology,
+        "disdiapason": disdiapason,
+        "enmarble": enmarble,
+        "Epeira": epeira,
+        "Eurylaimi": eurylaimi,
+        "germination": germination,
+        "hallelujah": hallelujah,
+        "homocerc": homocerc,
+        "lev": lev,
+        "mouthing": mouthing,
+        "nonbookish": nonbookish,
+        "philliloo": philliloo,
+        "planetal": planetal,
+        "poney": poney,
+        "punctualist": punctualist,
+        "returnlessly": returnlessly,
+        "skelder": skelder,
+        "windwaywardly": windwaywardly,
+        "Yuman": yuman,
+    };
+}
+
+class UnimpeachablyClass {
+    final int? acerin;
+    final int? bobadil;
+    final double? catharticalness;
+    final int? chirotherium;
+    final int? chlorophylligenous;
+    final int? conversational;
+    final int? demiowl;
+    final String? disdiapason;
+    final int? ectorhinal;
+    final int? gamblesomeness;
+    final bool? homocerc;
+    final int? irrorate;
+    final int? kindergartening;
+    final int? lateritic;
+    final int? mespil;
+    final int? misconfiguration;
+    final dynamic nonbookish;
+    final int? planometry;
+    final int? quiina;
+    final int? robert;
+    final int? rot;
+    final int? subcinctorium;
+    final int? tussocker;
+    final int? ultraproud;
+    final int? unsuggestedness;
+
+    UnimpeachablyClass({
+        this.acerin,
+        this.bobadil,
+        this.catharticalness,
+        this.chirotherium,
+        this.chlorophylligenous,
+        this.conversational,
+        this.demiowl,
+        this.disdiapason,
+        this.ectorhinal,
+        this.gamblesomeness,
+        this.homocerc,
+        this.irrorate,
+        this.kindergartening,
+        this.lateritic,
+        this.mespil,
+        this.misconfiguration,
+        this.nonbookish,
+        this.planometry,
+        this.quiina,
+        this.robert,
+        this.rot,
+        this.subcinctorium,
+        this.tussocker,
+        this.ultraproud,
+        this.unsuggestedness,
+    });
+
+    factory UnimpeachablyClass.fromJson(Map<String, dynamic> json) => UnimpeachablyClass(
+        acerin: json["acerin"],
+        bobadil: json["Bobadil"],
+        catharticalness: json["catharticalness"]?.toDouble(),
+        chirotherium: json["Chirotherium"],
+        chlorophylligenous: json["chlorophylligenous"],
+        conversational: json["conversational"],
+        demiowl: json["demiowl"],
+        disdiapason: json["disdiapason"],
+        ectorhinal: json["ectorhinal"],
+        gamblesomeness: json["gamblesomeness"],
+        homocerc: json["homocerc"],
+        irrorate: json["irrorate"],
+        kindergartening: json["kindergartening"],
+        lateritic: json["lateritic"],
+        mespil: json["mespil"],
+        misconfiguration: json["misconfiguration"],
+        nonbookish: json["nonbookish"],
+        planometry: json["planometry"],
+        quiina: json["Quiina"],
+        robert: json["Robert"],
+        rot: json["rot"],
+        subcinctorium: json["subcinctorium"],
+        tussocker: json["tussocker"],
+        ultraproud: json["ultraproud"],
+        unsuggestedness: json["unsuggestedness"],
+    );
+
+    Map<String, dynamic> toJson() => {
+        "acerin": acerin,
+        "Bobadil": bobadil,
+        "catharticalness": catharticalness,
+        "Chirotherium": chirotherium,
+        "chlorophylligenous": chlorophylligenous,
+        "conversational": conversational,
+        "demiowl": demiowl,
+        "disdiapason": disdiapason,
+        "ectorhinal": ectorhinal,
+        "gamblesomeness": gamblesomeness,
+        "homocerc": homocerc,
+        "irrorate": irrorate,
+        "kindergartening": kindergartening,
+        "lateritic": lateritic,
+        "mespil": mespil,
+        "misconfiguration": misconfiguration,
+        "nonbookish": nonbookish,
+        "planometry": planometry,
+        "Quiina": quiina,
+        "Robert": robert,
+        "rot": rot,
+        "subcinctorium": subcinctorium,
+        "tussocker": tussocker,
+        "ultraproud": ultraproud,
+        "unsuggestedness": unsuggestedness,
+    };
+}
+
+class UnstressedClass {
+    final dynamic alain;
+    final dynamic amphirhina;
+    final dynamic antimachinery;
+    final dynamic coldish;
+    final dynamic crantara;
+    final dynamic distinguishing;
+    final dynamic elytroposis;
+    final dynamic gentianwort;
+    final dynamic heliosis;
+    final dynamic instrumental;
+    final dynamic introinflection;
+    final dynamic kala;
+    final dynamic lincolnian;
+    final dynamic metad;
+    final dynamic sarcophilus;
+    final dynamic swingingly;
+    final dynamic unconformity;
+    final dynamic undecreed;
+    final dynamic venerable;
+    final dynamic vowellessness;
+
+    UnstressedClass({
+        required this.alain,
+        required this.amphirhina,
+        required this.antimachinery,
+        required this.coldish,
+        required this.crantara,
+        required this.distinguishing,
+        required this.elytroposis,
+        required this.gentianwort,
+        required this.heliosis,
+        required this.instrumental,
+        required this.introinflection,
+        required this.kala,
+        required this.lincolnian,
+        required this.metad,
+        required this.sarcophilus,
+        required this.swingingly,
+        required this.unconformity,
+        required this.undecreed,
+        required this.venerable,
+        required this.vowellessness,
+    });
+
+    factory UnstressedClass.fromJson(Map<String, dynamic> json) => UnstressedClass(
+        alain: json["Alain"],
+        amphirhina: json["Amphirhina"],
+        antimachinery: json["antimachinery"],
+        coldish: json["coldish"],
+        crantara: json["crantara"],
+        distinguishing: json["distinguishing"],
+        elytroposis: json["elytroposis"],
+        gentianwort: json["gentianwort"],
+        heliosis: json["heliosis"],
+        instrumental: json["instrumental"],
+        introinflection: json["introinflection"],
+        kala: json["kala"],
+        lincolnian: json["Lincolnian"],
+        metad: json["metad"],
+        sarcophilus: json["Sarcophilus"],
+        swingingly: json["swingingly"],
+        unconformity: json["unconformity"],
+        undecreed: json["undecreed"],
+        venerable: json["venerable"],
+        vowellessness: json["vowellessness"],
+    );
+
+    Map<String, dynamic> toJson() => {
+        "Alain": alain,
+        "Amphirhina": amphirhina,
+        "antimachinery": antimachinery,
+        "coldish": coldish,
+        "crantara": crantara,
+        "distinguishing": distinguishing,
+        "elytroposis": elytroposis,
+        "gentianwort": gentianwort,
+        "heliosis": heliosis,
+        "instrumental": instrumental,
+        "introinflection": introinflection,
+        "kala": kala,
+        "Lincolnian": lincolnian,
+        "metad": metad,
+        "Sarcophilus": sarcophilus,
+        "swingingly": swingingly,
+        "unconformity": unconformity,
+        "undecreed": undecreed,
+        "venerable": venerable,
+        "vowellessness": vowellessness,
+    };
+}
+
+class WrothyClass {
+    final dynamic aeschynanthus;
+    final dynamic aquiferous;
+    final dynamic cheapener;
+    final dynamic enumeration;
+    final dynamic ephesine;
+    final dynamic escadrille;
+    final dynamic estrous;
+    final dynamic interestedly;
+    final dynamic katakinetomer;
+    final dynamic mortification;
+    final dynamic morula;
+    final dynamic orthosymmetrical;
+    final dynamic overbark;
+    final dynamic politist;
+    final dynamic qualified;
+    final dynamic sphenomalar;
+    final dynamic throatful;
+    final dynamic transhumance;
+    final dynamic triandrian;
+    final dynamic unbooked;
+
+    WrothyClass({
+        required this.aeschynanthus,
+        required this.aquiferous,
+        required this.cheapener,
+        required this.enumeration,
+        required this.ephesine,
+        required this.escadrille,
+        required this.estrous,
+        required this.interestedly,
+        required this.katakinetomer,
+        required this.mortification,
+        required this.morula,
+        required this.orthosymmetrical,
+        required this.overbark,
+        required this.politist,
+        required this.qualified,
+        required this.sphenomalar,
+        required this.throatful,
+        required this.transhumance,
+        required this.triandrian,
+        required this.unbooked,
+    });
+
+    factory WrothyClass.fromJson(Map<String, dynamic> json) => WrothyClass(
+        aeschynanthus: json["Aeschynanthus"],
+        aquiferous: json["aquiferous"],
+        cheapener: json["cheapener"],
+        enumeration: json["enumeration"],
+        ephesine: json["Ephesine"],
+        escadrille: json["escadrille"],
+        estrous: json["estrous"],
+        interestedly: json["interestedly"],
+        katakinetomer: json["katakinetomer"],
+        mortification: json["mortification"],
+        morula: json["morula"],
+        orthosymmetrical: json["orthosymmetrical"],
+        overbark: json["overbark"],
+        politist: json["politist"],
+        qualified: json["qualified"],
+        sphenomalar: json["sphenomalar"],
+        throatful: json["throatful"],
+        transhumance: json["transhumance"],
+        triandrian: json["triandrian"],
+        unbooked: json["unbooked"],
+    );
+
+    Map<String, dynamic> toJson() => {
+        "Aeschynanthus": aeschynanthus,
+        "aquiferous": aquiferous,
+        "cheapener": cheapener,
+        "enumeration": enumeration,
+        "Ephesine": ephesine,
+        "escadrille": escadrille,
+        "estrous": estrous,
+        "interestedly": interestedly,
+        "katakinetomer": katakinetomer,
+        "mortification": mortification,
+        "morula": morula,
+        "orthosymmetrical": orthosymmetrical,
+        "overbark": overbark,
+        "politist": politist,
+        "qualified": qualified,
+        "sphenomalar": sphenomalar,
+        "throatful": throatful,
+        "transhumance": transhumance,
+        "triandrian": triandrian,
+        "unbooked": unbooked,
+    };
+}
diff --git a/head/dart/test/inputs/json/priority/combinations4.json/final-props-false--58a791807e0c/TopLevel.dart b/head/dart/test/inputs/json/priority/combinations4.json/final-props-false--58a791807e0c/TopLevel.dart
new file mode 100644
index 0000000..dbdb05d
--- /dev/null
+++ b/head/dart/test/inputs/json/priority/combinations4.json/final-props-false--58a791807e0c/TopLevel.dart
@@ -0,0 +1,1761 @@
+// To parse this JSON data, do
+//
+//     final topLevel = topLevelFromJson(jsonString);
+
+import 'dart:convert';
+
+TopLevel topLevelFromJson(String str) => TopLevel.fromJson(json.decode(str));
+
+String topLevelToJson(TopLevel data) => json.encode(data.toJson());
+
+class TopLevel {
+    List<dynamic> protrusive;
+    List<dynamic> pulpitism;
+    List<dynamic> pyodermia;
+    List<dynamic> quebrachine;
+    List<dynamic> querier;
+    List<dynamic> rebarbative;
+    List<Reimagine> reimagine;
+    Ressaut ressaut;
+    List<dynamic> retrocervical;
+    List<dynamic> revert;
+    List<dynamic> rewrite;
+    List<dynamic> saccoderm;
+    List<dynamic> santir;
+    List<dynamic> saprophilous;
+    List<dynamic> saxten;
+    List<Scatty?> scatty;
+    List<dynamic> scoffer;
+    List<dynamic> scrampum;
+    double semantic;
+    List<dynamic> serpentinic;
+    List<dynamic> shadowable;
+    List<dynamic> sistering;
+    List<Staghunting> staghunting;
+    List<dynamic> stagmometer;
+    List<dynamic> stimulability;
+    List<dynamic> strangleable;
+    List<dynamic> strenuosity;
+    List<dynamic> tabaxir;
+    List<dynamic> talpiform;
+    List<dynamic> thwack;
+    List<double?> to;
+    List<dynamic> tortricine;
+    List<dynamic> truantcy;
+    List<String> turgesce;
+    List<dynamic> unbeginning;
+    List<double> underdunged;
+    List<dynamic> undesirability;
+    List<dynamic> unerasing;
+    List<dynamic> unguentarium;
+    List<dynamic> unimpeachably;
+    List<dynamic> unmortgaged;
+    List<dynamic> unobstructed;
+    List<dynamic> unreceptivity;
+    List<dynamic> unsatisfactoriness;
+    List<int> unsecurity;
+    List<dynamic> unstressed;
+    List<dynamic> untasked;
+    List<dynamic> unvarying;
+    List<dynamic> vehemently;
+    Map<String, bool> warriorship;
+    List<dynamic> whitepot;
+    List<dynamic> wrothy;
+
+    TopLevel({
+        required this.protrusive,
+        required this.pulpitism,
+        required this.pyodermia,
+        required this.quebrachine,
+        required this.querier,
+        required this.rebarbative,
+        required this.reimagine,
+        required this.ressaut,
+        required this.retrocervical,
+        required this.revert,
+        required this.rewrite,
+        required this.saccoderm,
+        required this.santir,
+        required this.saprophilous,
+        required this.saxten,
+        required this.scatty,
+        required this.scoffer,
+        required this.scrampum,
+        required this.semantic,
+        required this.serpentinic,
+        required this.shadowable,
+        required this.sistering,
+        required this.staghunting,
+        required this.stagmometer,
+        required this.stimulability,
+        required this.strangleable,
+        required this.strenuosity,
+        required this.tabaxir,
+        required this.talpiform,
+        required this.thwack,
+        required this.to,
+        required this.tortricine,
+        required this.truantcy,
+        required this.turgesce,
+        required this.unbeginning,
+        required this.underdunged,
+        required this.undesirability,
+        required this.unerasing,
+        required this.unguentarium,
+        required this.unimpeachably,
+        required this.unmortgaged,
+        required this.unobstructed,
+        required this.unreceptivity,
+        required this.unsatisfactoriness,
+        required this.unsecurity,
+        required this.unstressed,
+        required this.untasked,
+        required this.unvarying,
+        required this.vehemently,
+        required this.warriorship,
+        required this.whitepot,
+        required this.wrothy,
+    });
+
+    factory TopLevel.fromJson(Map<String, dynamic> json) => TopLevel(
+        protrusive: List<dynamic>.from(json["protrusive"].map((x) => x)),
+        pulpitism: List<dynamic>.from(json["pulpitism"].map((x) => x)),
+        pyodermia: List<dynamic>.from(json["pyodermia"].map((x) => x)),
+        quebrachine: List<dynamic>.from(json["quebrachine"].map((x) => x)),
+        querier: List<dynamic>.from(json["querier"].map((x) => x)),
+        rebarbative: List<dynamic>.from(json["rebarbative"].map((x) => x)),
+        reimagine: List<Reimagine>.from(json["reimagine"].map((x) => Reimagine.fromJson(x))),
+        ressaut: Ressaut.fromJson(json["ressaut"]),
+        retrocervical: List<dynamic>.from(json["retrocervical"].map((x) => x)),
+        revert: List<dynamic>.from(json["revert"].map((x) => x)),
+        rewrite: List<dynamic>.from(json["rewrite"].map((x) => x)),
+        saccoderm: List<dynamic>.from(json["saccoderm"].map((x) => x)),
+        santir: List<dynamic>.from(json["santir"].map((x) => x)),
+        saprophilous: List<dynamic>.from(json["saprophilous"].map((x) => x)),
+        saxten: List<dynamic>.from(json["saxten"].map((x) => x)),
+        scatty: List<Scatty?>.from(json["scatty"].map((x) => x == null ? null : Scatty.fromJson(x))),
+        scoffer: List<dynamic>.from(json["scoffer"].map((x) => x)),
+        scrampum: List<dynamic>.from(json["scrampum"].map((x) => x)),
+        semantic: json["semantic"]?.toDouble(),
+        serpentinic: List<dynamic>.from(json["serpentinic"].map((x) => x)),
+        shadowable: List<dynamic>.from(json["shadowable"].map((x) => x)),
+        sistering: List<dynamic>.from(json["sistering"].map((x) => x)),
+        staghunting: List<Staghunting>.from(json["staghunting"].map((x) => Staghunting.fromJson(x))),
+        stagmometer: List<dynamic>.from(json["stagmometer"].map((x) => x)),
+        stimulability: List<dynamic>.from(json["stimulability"].map((x) => x)),
+        strangleable: List<dynamic>.from(json["strangleable"].map((x) => x)),
+        strenuosity: List<dynamic>.from(json["strenuosity"].map((x) => x)),
+        tabaxir: List<dynamic>.from(json["tabaxir"].map((x) => x)),
+        talpiform: List<dynamic>.from(json["talpiform"].map((x) => x)),
+        thwack: List<dynamic>.from(json["thwack"].map((x) => x)),
+        to: List<double?>.from(json["to"].map((x) => x?.toDouble())),
+        tortricine: List<dynamic>.from(json["tortricine"].map((x) => x)),
+        truantcy: List<dynamic>.from(json["truantcy"].map((x) => x)),
+        turgesce: List<String>.from(json["turgesce"].map((x) => x)),
+        unbeginning: List<dynamic>.from(json["unbeginning"].map((x) => x)),
+        underdunged: List<double>.from(json["underdunged"].map((x) => x?.toDouble())),
+        undesirability: List<dynamic>.from(json["undesirability"].map((x) => x)),
+        unerasing: List<dynamic>.from(json["unerasing"].map((x) => x)),
+        unguentarium: List<dynamic>.from(json["unguentarium"].map((x) => x)),
+        unimpeachably: List<dynamic>.from(json["unimpeachably"].map((x) => x)),
+        unmortgaged: List<dynamic>.from(json["unmortgaged"].map((x) => x)),
+        unobstructed: List<dynamic>.from(json["unobstructed"].map((x) => x)),
+        unreceptivity: List<dynamic>.from(json["unreceptivity"].map((x) => x)),
+        unsatisfactoriness: List<dynamic>.from(json["unsatisfactoriness"].map((x) => x)),
+        unsecurity: List<int>.from(json["unsecurity"].map((x) => x)),
+        unstressed: List<dynamic>.from(json["unstressed"].map((x) => x)),
+        untasked: List<dynamic>.from(json["untasked"].map((x) => x)),
+        unvarying: List<dynamic>.from(json["unvarying"].map((x) => x)),
+        vehemently: List<dynamic>.from(json["vehemently"].map((x) => x)),
+        warriorship: Map.from(json["warriorship"]).map((k, v) => MapEntry<String, bool>(k, v)),
+        whitepot: List<dynamic>.from(json["whitepot"].map((x) => x)),
+        wrothy: List<dynamic>.from(json["wrothy"].map((x) => x)),
+    );
+
+    Map<String, dynamic> toJson() => {
+        "protrusive": List<dynamic>.from(protrusive.map((x) => x)),
+        "pulpitism": List<dynamic>.from(pulpitism.map((x) => x)),
+        "pyodermia": List<dynamic>.from(pyodermia.map((x) => x)),
+        "quebrachine": List<dynamic>.from(quebrachine.map((x) => x)),
+        "querier": List<dynamic>.from(querier.map((x) => x)),
+        "rebarbative": List<dynamic>.from(rebarbative.map((x) => x)),
+        "reimagine": List<dynamic>.from(reimagine.map((x) => x.toJson())),
+        "ressaut": ressaut.toJson(),
+        "retrocervical": List<dynamic>.from(retrocervical.map((x) => x)),
+        "revert": List<dynamic>.from(revert.map((x) => x)),
+        "rewrite": List<dynamic>.from(rewrite.map((x) => x)),
+        "saccoderm": List<dynamic>.from(saccoderm.map((x) => x)),
+        "santir": List<dynamic>.from(santir.map((x) => x)),
+        "saprophilous": List<dynamic>.from(saprophilous.map((x) => x)),
+        "saxten": List<dynamic>.from(saxten.map((x) => x)),
+        "scatty": List<dynamic>.from(scatty.map((x) => x?.toJson())),
+        "scoffer": List<dynamic>.from(scoffer.map((x) => x)),
+        "scrampum": List<dynamic>.from(scrampum.map((x) => x)),
+        "semantic": semantic,
+        "serpentinic": List<dynamic>.from(serpentinic.map((x) => x)),
+        "shadowable": List<dynamic>.from(shadowable.map((x) => x)),
+        "sistering": List<dynamic>.from(sistering.map((x) => x)),
+        "staghunting": List<dynamic>.from(staghunting.map((x) => x.toJson())),
+        "stagmometer": List<dynamic>.from(stagmometer.map((x) => x)),
+        "stimulability": List<dynamic>.from(stimulability.map((x) => x)),
+        "strangleable": List<dynamic>.from(strangleable.map((x) => x)),
+        "strenuosity": List<dynamic>.from(strenuosity.map((x) => x)),
+        "tabaxir": List<dynamic>.from(tabaxir.map((x) => x)),
+        "talpiform": List<dynamic>.from(talpiform.map((x) => x)),
+        "thwack": List<dynamic>.from(thwack.map((x) => x)),
+        "to": List<dynamic>.from(to.map((x) => x)),
+        "tortricine": List<dynamic>.from(tortricine.map((x) => x)),
+        "truantcy": List<dynamic>.from(truantcy.map((x) => x)),
+        "turgesce": List<dynamic>.from(turgesce.map((x) => x)),
+        "unbeginning": List<dynamic>.from(unbeginning.map((x) => x)),
+        "underdunged": List<dynamic>.from(underdunged.map((x) => x)),
+        "undesirability": List<dynamic>.from(undesirability.map((x) => x)),
+        "unerasing": List<dynamic>.from(unerasing.map((x) => x)),
+        "unguentarium": List<dynamic>.from(unguentarium.map((x) => x)),
+        "unimpeachably": List<dynamic>.from(unimpeachably.map((x) => x)),
+        "unmortgaged": List<dynamic>.from(unmortgaged.map((x) => x)),
+        "unobstructed": List<dynamic>.from(unobstructed.map((x) => x)),
+        "unreceptivity": List<dynamic>.from(unreceptivity.map((x) => x)),
+        "unsatisfactoriness": List<dynamic>.from(unsatisfactoriness.map((x) => x)),
+        "unsecurity": List<dynamic>.from(unsecurity.map((x) => x)),
+        "unstressed": List<dynamic>.from(unstressed.map((x) => x)),
+        "untasked": List<dynamic>.from(untasked.map((x) => x)),
+        "unvarying": List<dynamic>.from(unvarying.map((x) => x)),
+        "vehemently": List<dynamic>.from(vehemently.map((x) => x)),
+        "warriorship": Map.from(warriorship).map((k, v) => MapEntry<String, dynamic>(k, v)),
+        "whitepot": List<dynamic>.from(whitepot.map((x) => x)),
+        "wrothy": List<dynamic>.from(wrothy.map((x) => x)),
+    };
+}
+
+class PulpitismClass {
+    dynamic abnet;
+    dynamic buckhorn;
+    dynamic calciform;
+    dynamic chelophore;
+    dynamic cogitation;
+    dynamic decreeable;
+    dynamic despicable;
+    dynamic isodiazo;
+    dynamic jadedly;
+    dynamic leptochlorite;
+    dynamic nursling;
+    dynamic palamedean;
+    dynamic photoheliograph;
+    dynamic pipewood;
+    dynamic roberd;
+    dynamic statable;
+    dynamic superassume;
+    dynamic syllabe;
+    dynamic toughhead;
+    dynamic underburn;
+
+    PulpitismClass({
+        required this.abnet,
+        required this.buckhorn,
+        required this.calciform,
+        required this.chelophore,
+        required this.cogitation,
+        required this.decreeable,
+        required this.despicable,
+        required this.isodiazo,
+        required this.jadedly,
+        required this.leptochlorite,
+        required this.nursling,
+        required this.palamedean,
+        required this.photoheliograph,
+        required this.pipewood,
+        required this.roberd,
+        required this.statable,
+        required this.superassume,
+        required this.syllabe,
+        required this.toughhead,
+        required this.underburn,
+    });
+
+    factory PulpitismClass.fromJson(Map<String, dynamic> json) => PulpitismClass(
+        abnet: json["abnet"],
+        buckhorn: json["buckhorn"],
+        calciform: json["calciform"],
+        chelophore: json["chelophore"],
+        cogitation: json["cogitation"],
+        decreeable: json["decreeable"],
+        despicable: json["despicable"],
+        isodiazo: json["isodiazo"],
+        jadedly: json["jadedly"],
+        leptochlorite: json["leptochlorite"],
+        nursling: json["nursling"],
+        palamedean: json["palamedean"],
+        photoheliograph: json["photoheliograph"],
+        pipewood: json["pipewood"],
+        roberd: json["roberd"],
+        statable: json["statable"],
+        superassume: json["superassume"],
+        syllabe: json["syllabe"],
+        toughhead: json["toughhead"],
+        underburn: json["underburn"],
+    );
+
+    Map<String, dynamic> toJson() => {
+        "abnet": abnet,
+        "buckhorn": buckhorn,
+        "calciform": calciform,
+        "chelophore": chelophore,
+        "cogitation": cogitation,
+        "decreeable": decreeable,
+        "despicable": despicable,
+        "isodiazo": isodiazo,
+        "jadedly": jadedly,
+        "leptochlorite": leptochlorite,
+        "nursling": nursling,
+        "palamedean": palamedean,
+        "photoheliograph": photoheliograph,
+        "pipewood": pipewood,
+        "roberd": roberd,
+        "statable": statable,
+        "superassume": superassume,
+        "syllabe": syllabe,
+        "toughhead": toughhead,
+        "underburn": underburn,
+    };
+}
+
+class PyodermiaClass {
+    dynamic aphoristically;
+    dynamic apophyllous;
+    dynamic cognize;
+    dynamic dermonosology;
+    dynamic gyppo;
+    dynamic ither;
+    dynamic juglandaceous;
+    dynamic litho;
+    dynamic macropterous;
+    dynamic photographer;
+    dynamic romancing;
+    dynamic rumness;
+    dynamic somniloquist;
+    dynamic stressfully;
+    dynamic tactically;
+    dynamic tracheophony;
+    dynamic unappositely;
+    dynamic unclothedly;
+    dynamic unimplied;
+    dynamic unsyncopated;
+
+    PyodermiaClass({
+        required this.aphoristically,
+        required this.apophyllous,
+        required this.cognize,
+        required this.dermonosology,
+        required this.gyppo,
+        required this.ither,
+        required this.juglandaceous,
+        required this.litho,
+        required this.macropterous,
+        required this.photographer,
+        required this.romancing,
+        required this.rumness,
+        required this.somniloquist,
+        required this.stressfully,
+        required this.tactically,
+        required this.tracheophony,
+        required this.unappositely,
+        required this.unclothedly,
+        required this.unimplied,
+        required this.unsyncopated,
+    });
+
+    factory PyodermiaClass.fromJson(Map<String, dynamic> json) => PyodermiaClass(
+        aphoristically: json["aphoristically"],
+        apophyllous: json["apophyllous"],
+        cognize: json["cognize"],
+        dermonosology: json["dermonosology"],
+        gyppo: json["Gyppo"],
+        ither: json["ither"],
+        juglandaceous: json["juglandaceous"],
+        litho: json["litho"],
+        macropterous: json["macropterous"],
+        photographer: json["photographer"],
+        romancing: json["romancing"],
+        rumness: json["rumness"],
+        somniloquist: json["somniloquist"],
+        stressfully: json["stressfully"],
+        tactically: json["tactically"],
+        tracheophony: json["tracheophony"],
+        unappositely: json["unappositely"],
+        unclothedly: json["unclothedly"],
+        unimplied: json["unimplied"],
+        unsyncopated: json["unsyncopated"],
+    );
+
+    Map<String, dynamic> toJson() => {
+        "aphoristically": aphoristically,
+        "apophyllous": apophyllous,
+        "cognize": cognize,
+        "dermonosology": dermonosology,
+        "Gyppo": gyppo,
+        "ither": ither,
+        "juglandaceous": juglandaceous,
+        "litho": litho,
+        "macropterous": macropterous,
+        "photographer": photographer,
+        "romancing": romancing,
+        "rumness": rumness,
+        "somniloquist": somniloquist,
+        "stressfully": stressfully,
+        "tactically": tactically,
+        "tracheophony": tracheophony,
+        "unappositely": unappositely,
+        "unclothedly": unclothedly,
+        "unimplied": unimplied,
+        "unsyncopated": unsyncopated,
+    };
+}
+
+class QuebrachineClass {
+    double catharticalness;
+    int chirotherium;
+    String disdiapason;
+    bool homocerc;
+    dynamic nonbookish;
+
+    QuebrachineClass({
+        required this.catharticalness,
+        required this.chirotherium,
+        required this.disdiapason,
+        required this.homocerc,
+        required this.nonbookish,
+    });
+
+    factory QuebrachineClass.fromJson(Map<String, dynamic> json) => QuebrachineClass(
+        catharticalness: json["catharticalness"]?.toDouble(),
+        chirotherium: json["Chirotherium"],
+        disdiapason: json["disdiapason"],
+        homocerc: json["homocerc"],
+        nonbookish: json["nonbookish"],
+    );
+
+    Map<String, dynamic> toJson() => {
+        "catharticalness": catharticalness,
+        "Chirotherium": chirotherium,
+        "disdiapason": disdiapason,
+        "homocerc": homocerc,
+        "nonbookish": nonbookish,
+    };
+}
+
+class Reimagine {
+    dynamic adducible;
+    dynamic anabolin;
+    dynamic brainy;
+    double? catharticalness;
+    int? chirotherium;
+    dynamic chrysamine;
+    String? disdiapason;
+    dynamic fluxweed;
+    dynamic glaucine;
+    dynamic grobianism;
+    dynamic hermo;
+    dynamic hieroglyphist;
+    bool? homocerc;
+    dynamic icteroid;
+    dynamic immortal;
+    dynamic impetulant;
+    dynamic irrigate;
+    dynamic myxedema;
+    dynamic nonbookish;
+    dynamic onyx;
+    dynamic repasser;
+    dynamic septomarginal;
+    dynamic subdie;
+    dynamic tibiometatarsal;
+    dynamic waltzlike;
+
+    Reimagine({
+        this.adducible,
+        this.anabolin,
+        this.brainy,
+        this.catharticalness,
+        this.chirotherium,
+        this.chrysamine,
+        this.disdiapason,
+        this.fluxweed,
+        this.glaucine,
+        this.grobianism,
+        this.hermo,
+        this.hieroglyphist,
+        this.homocerc,
+        this.icteroid,
+        this.immortal,
+        this.impetulant,
+        this.irrigate,
+        this.myxedema,
+        this.nonbookish,
+        this.onyx,
+        this.repasser,
+        this.septomarginal,
+        this.subdie,
+        this.tibiometatarsal,
+        this.waltzlike,
+    });
+
+    factory Reimagine.fromJson(Map<String, dynamic> json) => Reimagine(
+        adducible: json["adducible"],
+        anabolin: json["anabolin"],
+        brainy: json["brainy"],
+        catharticalness: json["catharticalness"]?.toDouble(),
+        chirotherium: json["Chirotherium"],
+        chrysamine: json["chrysamine"],
+        disdiapason: json["disdiapason"],
+        fluxweed: json["fluxweed"],
+        glaucine: json["glaucine"],
+        grobianism: json["grobianism"],
+        hermo: json["Hermo"],
+        hieroglyphist: json["hieroglyphist"],
+        homocerc: json["homocerc"],
+        icteroid: json["icteroid"],
+        immortal: json["immortal"],
+        impetulant: json["impetulant"],
+        irrigate: json["irrigate"],
+        myxedema: json["myxedema"],
+        nonbookish: json["nonbookish"],
+        onyx: json["onyx"],
+        repasser: json["repasser"],
+        septomarginal: json["septomarginal"],
+        subdie: json["subdie"],
+        tibiometatarsal: json["tibiometatarsal"],
+        waltzlike: json["waltzlike"],
+    );
+
+    Map<String, dynamic> toJson() => {
+        "adducible": adducible,
+        "anabolin": anabolin,
+        "brainy": brainy,
+        "catharticalness": catharticalness,
+        "Chirotherium": chirotherium,
+        "chrysamine": chrysamine,
+        "disdiapason": disdiapason,
+        "fluxweed": fluxweed,
+        "glaucine": glaucine,
+        "grobianism": grobianism,
+        "Hermo": hermo,
+        "hieroglyphist": hieroglyphist,
+        "homocerc": homocerc,
+        "icteroid": icteroid,
+        "immortal": immortal,
+        "impetulant": impetulant,
+        "irrigate": irrigate,
+        "myxedema": myxedema,
+        "nonbookish": nonbookish,
+        "onyx": onyx,
+        "repasser": repasser,
+        "septomarginal": septomarginal,
+        "subdie": subdie,
+        "tibiometatarsal": tibiometatarsal,
+        "waltzlike": waltzlike,
+    };
+}
+
+class Ressaut {
+    String apperceptive;
+    String cuttoo;
+    String douser;
+    String drinkproof;
+    String forementioned;
+    String freesia;
+    String genevieve;
+    String hyperdiabolical;
+    String hypocone;
+    String irreverentially;
+    String jumart;
+    String mimosaceae;
+    String mollicrush;
+    String nedder;
+    String retinasphalt;
+    String sough;
+    String steading;
+    String theopaschitism;
+    String undurableness;
+    String unmingleable;
+
+    Ressaut({
+        required this.apperceptive,
+        required this.cuttoo,
+        required this.douser,
+        required this.drinkproof,
+        required this.forementioned,
+        required this.freesia,
+        required this.genevieve,
+        required this.hyperdiabolical,
+        required this.hypocone,
+        required this.irreverentially,
+        required this.jumart,
+        required this.mimosaceae,
+        required this.mollicrush,
+        required this.nedder,
+        required this.retinasphalt,
+        required this.sough,
+        required this.steading,
+        required this.theopaschitism,
+        required this.undurableness,
+        required this.unmingleable,
+    });
+
+    factory Ressaut.fromJson(Map<String, dynamic> json) => Ressaut(
+        apperceptive: json["apperceptive"],
+        cuttoo: json["cuttoo"],
+        douser: json["douser"],
+        drinkproof: json["drinkproof"],
+        forementioned: json["forementioned"],
+        freesia: json["Freesia"],
+        genevieve: json["Genevieve"],
+        hyperdiabolical: json["hyperdiabolical"],
+        hypocone: json["hypocone"],
+        irreverentially: json["irreverentially"],
+        jumart: json["jumart"],
+        mimosaceae: json["Mimosaceae"],
+        mollicrush: json["mollicrush"],
+        nedder: json["nedder"],
+        retinasphalt: json["retinasphalt"],
+        sough: json["sough"],
+        steading: json["steading"],
+        theopaschitism: json["Theopaschitism"],
+        undurableness: json["undurableness"],
+        unmingleable: json["unmingleable"],
+    );
+
+    Map<String, dynamic> toJson() => {
+        "apperceptive": apperceptive,
+        "cuttoo": cuttoo,
+        "douser": douser,
+        "drinkproof": drinkproof,
+        "forementioned": forementioned,
+        "Freesia": freesia,
+        "Genevieve": genevieve,
+        "hyperdiabolical": hyperdiabolical,
+        "hypocone": hypocone,
+        "irreverentially": irreverentially,
+        "jumart": jumart,
+        "Mimosaceae": mimosaceae,
+        "mollicrush": mollicrush,
+        "nedder": nedder,
+        "retinasphalt": retinasphalt,
+        "sough": sough,
+        "steading": steading,
+        "Theopaschitism": theopaschitism,
+        "undurableness": undurableness,
+        "unmingleable": unmingleable,
+    };
+}
+
+class RewriteClass {
+    dynamic accountancy;
+    dynamic cacotrophic;
+    dynamic contest;
+    dynamic couthily;
+    dynamic falculate;
+    dynamic foreseize;
+    dynamic hyades;
+    dynamic lemnad;
+    dynamic monotheistically;
+    dynamic nonflying;
+    dynamic ptenoglossa;
+    dynamic repatch;
+    dynamic rodman;
+    dynamic strung;
+    dynamic titmal;
+    dynamic twalpennyworth;
+    dynamic unblamable;
+    dynamic vertical;
+    dynamic whiggification;
+    dynamic yardman;
+
+    RewriteClass({
+        required this.accountancy,
+        required this.cacotrophic,
+        required this.contest,
+        required this.couthily,
+        required this.falculate,
+        required this.foreseize,
+        required this.hyades,
+        required this.lemnad,
+        required this.monotheistically,
+        required this.nonflying,
+        required this.ptenoglossa,
+        required this.repatch,
+        required this.rodman,
+        required this.strung,
+        required this.titmal,
+        required this.twalpennyworth,
+        required this.unblamable,
+        required this.vertical,
+        required this.whiggification,
+        required this.yardman,
+    });
+
+    factory RewriteClass.fromJson(Map<String, dynamic> json) => RewriteClass(
+        accountancy: json["accountancy"],
+        cacotrophic: json["cacotrophic"],
+        contest: json["contest"],
+        couthily: json["couthily"],
+        falculate: json["falculate"],
+        foreseize: json["foreseize"],
+        hyades: json["Hyades"],
+        lemnad: json["lemnad"],
+        monotheistically: json["monotheistically"],
+        nonflying: json["nonflying"],
+        ptenoglossa: json["Ptenoglossa"],
+        repatch: json["repatch"],
+        rodman: json["rodman"],
+        strung: json["strung"],
+        titmal: json["titmal"],
+        twalpennyworth: json["twalpennyworth"],
+        unblamable: json["unblamable"],
+        vertical: json["vertical"],
+        whiggification: json["Whiggification"],
+        yardman: json["yardman"],
+    );
+
+    Map<String, dynamic> toJson() => {
+        "accountancy": accountancy,
+        "cacotrophic": cacotrophic,
+        "contest": contest,
+        "couthily": couthily,
+        "falculate": falculate,
+        "foreseize": foreseize,
+        "Hyades": hyades,
+        "lemnad": lemnad,
+        "monotheistically": monotheistically,
+        "nonflying": nonflying,
+        "Ptenoglossa": ptenoglossa,
+        "repatch": repatch,
+        "rodman": rodman,
+        "strung": strung,
+        "titmal": titmal,
+        "twalpennyworth": twalpennyworth,
+        "unblamable": unblamable,
+        "vertical": vertical,
+        "Whiggification": whiggification,
+        "yardman": yardman,
+    };
+}
+
+class SantirClass {
+    dynamic admiredly;
+    dynamic demicaponier;
+    dynamic epitympanic;
+    dynamic investitor;
+    dynamic lupiform;
+    dynamic monoflagellate;
+    dynamic paleoethnic;
+    dynamic prediscountable;
+    dynamic rhetoricals;
+    dynamic roomth;
+    dynamic saccharose;
+    dynamic septonasal;
+    dynamic serpenticide;
+    dynamic setarious;
+    dynamic spaework;
+    dynamic stylite;
+    dynamic suessiones;
+    dynamic timelily;
+    dynamic unprofaned;
+    dynamic vorticular;
+
+    SantirClass({
+        required this.admiredly,
+        required this.demicaponier,
+        required this.epitympanic,
+        required this.investitor,
+        required this.lupiform,
+        required this.monoflagellate,
+        required this.paleoethnic,
+        required this.prediscountable,
+        required this.rhetoricals,
+        required this.roomth,
+        required this.saccharose,
+        required this.septonasal,
+        required this.serpenticide,
+        required this.setarious,
+        required this.spaework,
+        required this.stylite,
+        required this.suessiones,
+        required this.timelily,
+        required this.unprofaned,
+        required this.vorticular,
+    });
+
+    factory SantirClass.fromJson(Map<String, dynamic> json) => SantirClass(
+        admiredly: json["admiredly"],
+        demicaponier: json["demicaponier"],
+        epitympanic: json["epitympanic"],
+        investitor: json["investitor"],
+        lupiform: json["lupiform"],
+        monoflagellate: json["monoflagellate"],
+        paleoethnic: json["paleoethnic"],
+        prediscountable: json["prediscountable"],
+        rhetoricals: json["rhetoricals"],
+        roomth: json["roomth"],
+        saccharose: json["saccharose"],
+        septonasal: json["septonasal"],
+        serpenticide: json["serpenticide"],
+        setarious: json["setarious"],
+        spaework: json["spaework"],
+        stylite: json["stylite"],
+        suessiones: json["Suessiones"],
+        timelily: json["timelily"],
+        unprofaned: json["unprofaned"],
+        vorticular: json["vorticular"],
+    );
+
+    Map<String, dynamic> toJson() => {
+        "admiredly": admiredly,
+        "demicaponier": demicaponier,
+        "epitympanic": epitympanic,
+        "investitor": investitor,
+        "lupiform": lupiform,
+        "monoflagellate": monoflagellate,
+        "paleoethnic": paleoethnic,
+        "prediscountable": prediscountable,
+        "rhetoricals": rhetoricals,
+        "roomth": roomth,
+        "saccharose": saccharose,
+        "septonasal": septonasal,
+        "serpenticide": serpenticide,
+        "setarious": setarious,
+        "spaework": spaework,
+        "stylite": stylite,
+        "Suessiones": suessiones,
+        "timelily": timelily,
+        "unprofaned": unprofaned,
+        "vorticular": vorticular,
+    };
+}
+
+class SaxtenClass {
+    dynamic algarrobilla;
+    dynamic bowgrace;
+    double? catharticalness;
+    dynamic centaurid;
+    int? chirotherium;
+    String? disdiapason;
+    dynamic flix;
+    dynamic germanely;
+    bool? homocerc;
+    dynamic inhume;
+    dynamic lepidote;
+    dynamic megalochirous;
+    dynamic ninepenny;
+    dynamic nonbookish;
+    dynamic nondeist;
+    dynamic nymphaeaceous;
+    dynamic parietofrontal;
+    dynamic sancyite;
+    dynamic subjectivist;
+    dynamic tibiad;
+    dynamic transonic;
+    dynamic tripetalous;
+    dynamic trunchman;
+    dynamic urger;
+    dynamic withdrawnness;
+
+    SaxtenClass({
+        this.algarrobilla,
+        this.bowgrace,
+        this.catharticalness,
+        this.centaurid,
+        this.chirotherium,
+        this.disdiapason,
+        this.flix,
+        this.germanely,
+        this.homocerc,
+        this.inhume,
+        this.lepidote,
+        this.megalochirous,
+        this.ninepenny,
+        this.nonbookish,
+        this.nondeist,
+        this.nymphaeaceous,
+        this.parietofrontal,
+        this.sancyite,
+        this.subjectivist,
+        this.tibiad,
+        this.transonic,
+        this.tripetalous,
+        this.trunchman,
+        this.urger,
+        this.withdrawnness,
+    });
+
+    factory SaxtenClass.fromJson(Map<String, dynamic> json) => SaxtenClass(
+        algarrobilla: json["algarrobilla"],
+        bowgrace: json["bowgrace"],
+        catharticalness: json["catharticalness"]?.toDouble(),
+        centaurid: json["Centaurid"],
+        chirotherium: json["Chirotherium"],
+        disdiapason: json["disdiapason"],
+        flix: json["flix"],
+        germanely: json["germanely"],
+        homocerc: json["homocerc"],
+        inhume: json["inhume"],
+        lepidote: json["lepidote"],
+        megalochirous: json["megalochirous"],
+        ninepenny: json["ninepenny"],
+        nonbookish: json["nonbookish"],
+        nondeist: json["nondeist"],
+        nymphaeaceous: json["nymphaeaceous"],
+        parietofrontal: json["parietofrontal"],
+        sancyite: json["sancyite"],
+        subjectivist: json["subjectivist"],
+        tibiad: json["tibiad"],
+        transonic: json["transonic"],
+        tripetalous: json["tripetalous"],
+        trunchman: json["trunchman"],
+        urger: json["urger"],
+        withdrawnness: json["withdrawnness"],
+    );
+
+    Map<String, dynamic> toJson() => {
+        "algarrobilla": algarrobilla,
+        "bowgrace": bowgrace,
+        "catharticalness": catharticalness,
+        "Centaurid": centaurid,
+        "Chirotherium": chirotherium,
+        "disdiapason": disdiapason,
+        "flix": flix,
+        "germanely": germanely,
+        "homocerc": homocerc,
+        "inhume": inhume,
+        "lepidote": lepidote,
+        "megalochirous": megalochirous,
+        "ninepenny": ninepenny,
+        "nonbookish": nonbookish,
+        "nondeist": nondeist,
+        "nymphaeaceous": nymphaeaceous,
+        "parietofrontal": parietofrontal,
+        "sancyite": sancyite,
+        "subjectivist": subjectivist,
+        "tibiad": tibiad,
+        "transonic": transonic,
+        "tripetalous": tripetalous,
+        "trunchman": trunchman,
+        "urger": urger,
+        "withdrawnness": withdrawnness,
+    };
+}
+
+class Scatty {
+    dynamic aeriferous;
+    dynamic antical;
+    dynamic antighostism;
+    dynamic arcanum;
+    dynamic autotrophy;
+    dynamic baronial;
+    dynamic caffeine;
+    dynamic gorgoniacean;
+    dynamic heroical;
+    dynamic hydropical;
+    dynamic mechanology;
+    dynamic musicopoetic;
+    dynamic officiality;
+    dynamic oftentimes;
+    dynamic ophthalmotonometer;
+    dynamic reflectively;
+    dynamic springer;
+    dynamic tabasco;
+    dynamic teleianthous;
+    dynamic uncombated;
+
+    Scatty({
+        required this.aeriferous,
+        required this.antical,
+        required this.antighostism,
+        required this.arcanum,
+        required this.autotrophy,
+        required this.baronial,
+        required this.caffeine,
+        required this.gorgoniacean,
+        required this.heroical,
+        required this.hydropical,
+        required this.mechanology,
+        required this.musicopoetic,
+        required this.officiality,
+        required this.oftentimes,
+        required this.ophthalmotonometer,
+        required this.reflectively,
+        required this.springer,
+        required this.tabasco,
+        required this.teleianthous,
+        required this.uncombated,
+    });
+
+    factory Scatty.fromJson(Map<String, dynamic> json) => Scatty(
+        aeriferous: json["aeriferous"],
+        antical: json["antical"],
+        antighostism: json["antighostism"],
+        arcanum: json["arcanum"],
+        autotrophy: json["autotrophy"],
+        baronial: json["baronial"],
+        caffeine: json["caffeine"],
+        gorgoniacean: json["gorgoniacean"],
+        heroical: json["heroical"],
+        hydropical: json["hydropical"],
+        mechanology: json["mechanology"],
+        musicopoetic: json["musicopoetic"],
+        officiality: json["officiality"],
+        oftentimes: json["oftentimes"],
+        ophthalmotonometer: json["ophthalmotonometer"],
+        reflectively: json["reflectively"],
+        springer: json["springer"],
+        tabasco: json["Tabasco"],
+        teleianthous: json["teleianthous"],
+        uncombated: json["uncombated"],
+    );
+
+    Map<String, dynamic> toJson() => {
+        "aeriferous": aeriferous,
+        "antical": antical,
+        "antighostism": antighostism,
+        "arcanum": arcanum,
+        "autotrophy": autotrophy,
+        "baronial": baronial,
+        "caffeine": caffeine,
+        "gorgoniacean": gorgoniacean,
+        "heroical": heroical,
+        "hydropical": hydropical,
+        "mechanology": mechanology,
+        "musicopoetic": musicopoetic,
+        "officiality": officiality,
+        "oftentimes": oftentimes,
+        "ophthalmotonometer": ophthalmotonometer,
+        "reflectively": reflectively,
+        "springer": springer,
+        "Tabasco": tabasco,
+        "teleianthous": teleianthous,
+        "uncombated": uncombated,
+    };
+}
+
+class SisteringClass {
+    dynamic amphicarpic;
+    dynamic chianti;
+    dynamic frigorific;
+    dynamic haplomi;
+    dynamic hyperkinesis;
+    dynamic laudable;
+    dynamic madwoman;
+    dynamic maimedly;
+    dynamic micropterygidae;
+    dynamic microrhabdus;
+    dynamic nondense;
+    dynamic phlebemphraxis;
+    dynamic redsear;
+    dynamic schismatical;
+    dynamic tartryl;
+    dynamic unabhorred;
+    dynamic undeliberateness;
+    dynamic unmixable;
+    dynamic untruckling;
+    dynamic vineal;
+
+    SisteringClass({
+        required this.amphicarpic,
+        required this.chianti,
+        required this.frigorific,
+        required this.haplomi,
+        required this.hyperkinesis,
+        required this.laudable,
+        required this.madwoman,
+        required this.maimedly,
+        required this.micropterygidae,
+        required this.microrhabdus,
+        required this.nondense,
+        required this.phlebemphraxis,
+        required this.redsear,
+        required this.schismatical,
+        required this.tartryl,
+        required this.unabhorred,
+        required this.undeliberateness,
+        required this.unmixable,
+        required this.untruckling,
+        required this.vineal,
+    });
+
+    factory SisteringClass.fromJson(Map<String, dynamic> json) => SisteringClass(
+        amphicarpic: json["amphicarpic"],
+        chianti: json["Chianti"],
+        frigorific: json["frigorific"],
+        haplomi: json["Haplomi"],
+        hyperkinesis: json["hyperkinesis"],
+        laudable: json["laudable"],
+        madwoman: json["madwoman"],
+        maimedly: json["maimedly"],
+        micropterygidae: json["Micropterygidae"],
+        microrhabdus: json["microrhabdus"],
+        nondense: json["nondense"],
+        phlebemphraxis: json["phlebemphraxis"],
+        redsear: json["redsear"],
+        schismatical: json["schismatical"],
+        tartryl: json["tartryl"],
+        unabhorred: json["unabhorred"],
+        undeliberateness: json["undeliberateness"],
+        unmixable: json["unmixable"],
+        untruckling: json["untruckling"],
+        vineal: json["vineal"],
+    );
+
+    Map<String, dynamic> toJson() => {
+        "amphicarpic": amphicarpic,
+        "Chianti": chianti,
+        "frigorific": frigorific,
+        "Haplomi": haplomi,
+        "hyperkinesis": hyperkinesis,
+        "laudable": laudable,
+        "madwoman": madwoman,
+        "maimedly": maimedly,
+        "Micropterygidae": micropterygidae,
+        "microrhabdus": microrhabdus,
+        "nondense": nondense,
+        "phlebemphraxis": phlebemphraxis,
+        "redsear": redsear,
+        "schismatical": schismatical,
+        "tartryl": tartryl,
+        "unabhorred": unabhorred,
+        "undeliberateness": undeliberateness,
+        "unmixable": unmixable,
+        "untruckling": untruckling,
+        "vineal": vineal,
+    };
+}
+
+class Staghunting {
+    int? calorimetric;
+    int? canid;
+    double? catharticalness;
+    int? chirotherium;
+    String? disdiapason;
+    int? ditriglyphic;
+    int? floriferousness;
+    int? gamelike;
+    int? grig;
+    bool? homocerc;
+    int? interloan;
+    int? lithotomy;
+    int? loric;
+    int? membranocoriaceous;
+    int? membranogenic;
+    dynamic nonbookish;
+    int? overtrump;
+    int? scotino;
+    int? seasonable;
+    int? sephen;
+    int? stigmarioid;
+    int? tired;
+    int? trifid;
+    int? undefeatedly;
+    int? ungirlish;
+
+    Staghunting({
+        this.calorimetric,
+        this.canid,
+        this.catharticalness,
+        this.chirotherium,
+        this.disdiapason,
+        this.ditriglyphic,
+        this.floriferousness,
+        this.gamelike,
+        this.grig,
+        this.homocerc,
+        this.interloan,
+        this.lithotomy,
+        this.loric,
+        this.membranocoriaceous,
+        this.membranogenic,
+        this.nonbookish,
+        this.overtrump,
+        this.scotino,
+        this.seasonable,
+        this.sephen,
+        this.stigmarioid,
+        this.tired,
+        this.trifid,
+        this.undefeatedly,
+        this.ungirlish,
+    });
+
+    factory Staghunting.fromJson(Map<String, dynamic> json) => Staghunting(
+        calorimetric: json["calorimetric"],
+        canid: json["canid"],
+        catharticalness: json["catharticalness"]?.toDouble(),
+        chirotherium: json["Chirotherium"],
+        disdiapason: json["disdiapason"],
+        ditriglyphic: json["ditriglyphic"],
+        floriferousness: json["floriferousness"],
+        gamelike: json["gamelike"],
+        grig: json["grig"],
+        homocerc: json["homocerc"],
+        interloan: json["interloan"],
+        lithotomy: json["lithotomy"],
+        loric: json["loric"],
+        membranocoriaceous: json["membranocoriaceous"],
+        membranogenic: json["membranogenic"],
+        nonbookish: json["nonbookish"],
+        overtrump: json["overtrump"],
+        scotino: json["scotino"],
+        seasonable: json["seasonable"],
+        sephen: json["sephen"],
+        stigmarioid: json["stigmarioid"],
+        tired: json["tired"],
+        trifid: json["trifid"],
+        undefeatedly: json["undefeatedly"],
+        ungirlish: json["ungirlish"],
+    );
+
+    Map<String, dynamic> toJson() => {
+        "calorimetric": calorimetric,
+        "canid": canid,
+        "catharticalness": catharticalness,
+        "Chirotherium": chirotherium,
+        "disdiapason": disdiapason,
+        "ditriglyphic": ditriglyphic,
+        "floriferousness": floriferousness,
+        "gamelike": gamelike,
+        "grig": grig,
+        "homocerc": homocerc,
+        "interloan": interloan,
+        "lithotomy": lithotomy,
+        "loric": loric,
+        "membranocoriaceous": membranocoriaceous,
+        "membranogenic": membranogenic,
+        "nonbookish": nonbookish,
+        "overtrump": overtrump,
+        "scotino": scotino,
+        "seasonable": seasonable,
+        "sephen": sephen,
+        "stigmarioid": stigmarioid,
+        "tired": tired,
+        "trifid": trifid,
+        "undefeatedly": undefeatedly,
+        "ungirlish": ungirlish,
+    };
+}
+
+class StrenuosityClass {
+    int? bliss;
+    int? buccate;
+    int? bulletproof;
+    double? catharticalness;
+    int? chirotherium;
+    int? crumblingness;
+    String? disdiapason;
+    int? engagedly;
+    int? fightable;
+    int? hoariness;
+    bool? homocerc;
+    int? hypopodium;
+    int? luxurist;
+    int? mechanician;
+    dynamic nonbookish;
+    int? onopordon;
+    int? podgily;
+    int? reformableness;
+    int? scatterbrains;
+    int? seminuria;
+    int? sodomite;
+    int? tramp;
+    int? undueness;
+    int? worthily;
+    int? yankeeist;
+
+    StrenuosityClass({
+        this.bliss,
+        this.buccate,
+        this.bulletproof,
+        this.catharticalness,
+        this.chirotherium,
+        this.crumblingness,
+        this.disdiapason,
+        this.engagedly,
+        this.fightable,
+        this.hoariness,
+        this.homocerc,
+        this.hypopodium,
+        this.luxurist,
+        this.mechanician,
+        this.nonbookish,
+        this.onopordon,
+        this.podgily,
+        this.reformableness,
+        this.scatterbrains,
+        this.seminuria,
+        this.sodomite,
+        this.tramp,
+        this.undueness,
+        this.worthily,
+        this.yankeeist,
+    });
+
+    factory StrenuosityClass.fromJson(Map<String, dynamic> json) => StrenuosityClass(
+        bliss: json["bliss"],
+        buccate: json["buccate"],
+        bulletproof: json["bulletproof"],
+        catharticalness: json["catharticalness"]?.toDouble(),
+        chirotherium: json["Chirotherium"],
+        crumblingness: json["crumblingness"],
+        disdiapason: json["disdiapason"],
+        engagedly: json["engagedly"],
+        fightable: json["fightable"],
+        hoariness: json["hoariness"],
+        homocerc: json["homocerc"],
+        hypopodium: json["hypopodium"],
+        luxurist: json["luxurist"],
+        mechanician: json["mechanician"],
+        nonbookish: json["nonbookish"],
+        onopordon: json["Onopordon"],
+        podgily: json["podgily"],
+        reformableness: json["reformableness"],
+        scatterbrains: json["scatterbrains"],
+        seminuria: json["seminuria"],
+        sodomite: json["Sodomite"],
+        tramp: json["tramp"],
+        undueness: json["undueness"],
+        worthily: json["worthily"],
+        yankeeist: json["Yankeeist"],
+    );
+
+    Map<String, dynamic> toJson() => {
+        "bliss": bliss,
+        "buccate": buccate,
+        "bulletproof": bulletproof,
+        "catharticalness": catharticalness,
+        "Chirotherium": chirotherium,
+        "crumblingness": crumblingness,
+        "disdiapason": disdiapason,
+        "engagedly": engagedly,
+        "fightable": fightable,
+        "hoariness": hoariness,
+        "homocerc": homocerc,
+        "hypopodium": hypopodium,
+        "luxurist": luxurist,
+        "mechanician": mechanician,
+        "nonbookish": nonbookish,
+        "Onopordon": onopordon,
+        "podgily": podgily,
+        "reformableness": reformableness,
+        "scatterbrains": scatterbrains,
+        "seminuria": seminuria,
+        "Sodomite": sodomite,
+        "tramp": tramp,
+        "undueness": undueness,
+        "worthily": worthily,
+        "Yankeeist": yankeeist,
+    };
+}
+
+class TruantcyClass {
+    dynamic alfiona;
+    dynamic ascaridiasis;
+    dynamic bungey;
+    double? catharticalness;
+    dynamic ceroxyle;
+    int? chirotherium;
+    dynamic chorology;
+    String? disdiapason;
+    dynamic enmarble;
+    dynamic epeira;
+    dynamic eurylaimi;
+    dynamic germination;
+    dynamic hallelujah;
+    bool? homocerc;
+    dynamic lev;
+    dynamic mouthing;
+    dynamic nonbookish;
+    dynamic philliloo;
+    dynamic planetal;
+    dynamic poney;
+    dynamic punctualist;
+    dynamic returnlessly;
+    dynamic skelder;
+    dynamic windwaywardly;
+    dynamic yuman;
+
+    TruantcyClass({
+        this.alfiona,
+        this.ascaridiasis,
+        this.bungey,
+        this.catharticalness,
+        this.ceroxyle,
+        this.chirotherium,
+        this.chorology,
+        this.disdiapason,
+        this.enmarble,
+        this.epeira,
+        this.eurylaimi,
+        this.germination,
+        this.hallelujah,
+        this.homocerc,
+        this.lev,
+        this.mouthing,
+        this.nonbookish,
+        this.philliloo,
+        this.planetal,
+        this.poney,
+        this.punctualist,
+        this.returnlessly,
+        this.skelder,
+        this.windwaywardly,
+        this.yuman,
+    });
+
+    factory TruantcyClass.fromJson(Map<String, dynamic> json) => TruantcyClass(
+        alfiona: json["alfiona"],
+        ascaridiasis: json["ascaridiasis"],
+        bungey: json["bungey"],
+        catharticalness: json["catharticalness"]?.toDouble(),
+        ceroxyle: json["ceroxyle"],
+        chirotherium: json["Chirotherium"],
+        chorology: json["chorology"],
+        disdiapason: json["disdiapason"],
+        enmarble: json["enmarble"],
+        epeira: json["Epeira"],
+        eurylaimi: json["Eurylaimi"],
+        germination: json["germination"],
+        hallelujah: json["hallelujah"],
+        homocerc: json["homocerc"],
+        lev: json["lev"],
+        mouthing: json["mouthing"],
+        nonbookish: json["nonbookish"],
+        philliloo: json["philliloo"],
+        planetal: json["planetal"],
+        poney: json["poney"],
+        punctualist: json["punctualist"],
+        returnlessly: json["returnlessly"],
+        skelder: json["skelder"],
+        windwaywardly: json["windwaywardly"],
+        yuman: json["Yuman"],
+    );
+
+    Map<String, dynamic> toJson() => {
+        "alfiona": alfiona,
+        "ascaridiasis": ascaridiasis,
+        "bungey": bungey,
+        "catharticalness": catharticalness,
+        "ceroxyle": ceroxyle,
+        "Chirotherium": chirotherium,
+        "chorology": chorology,
+        "disdiapason": disdiapason,
+        "enmarble": enmarble,
+        "Epeira": epeira,
+        "Eurylaimi": eurylaimi,
+        "germination": germination,
+        "hallelujah": hallelujah,
+        "homocerc": homocerc,
+        "lev": lev,
+        "mouthing": mouthing,
+        "nonbookish": nonbookish,
+        "philliloo": philliloo,
+        "planetal": planetal,
+        "poney": poney,
+        "punctualist": punctualist,
+        "returnlessly": returnlessly,
+        "skelder": skelder,
+        "windwaywardly": windwaywardly,
+        "Yuman": yuman,
+    };
+}
+
+class UnimpeachablyClass {
+    int? acerin;
+    int? bobadil;
+    double? catharticalness;
+    int? chirotherium;
+    int? chlorophylligenous;
+    int? conversational;
+    int? demiowl;
+    String? disdiapason;
+    int? ectorhinal;
+    int? gamblesomeness;
+    bool? homocerc;
+    int? irrorate;
+    int? kindergartening;
+    int? lateritic;
+    int? mespil;
+    int? misconfiguration;
+    dynamic nonbookish;
+    int? planometry;
+    int? quiina;
+    int? robert;
+    int? rot;
+    int? subcinctorium;
+    int? tussocker;
+    int? ultraproud;
+    int? unsuggestedness;
+
+    UnimpeachablyClass({
+        this.acerin,
+        this.bobadil,
+        this.catharticalness,
+        this.chirotherium,
+        this.chlorophylligenous,
+        this.conversational,
+        this.demiowl,
+        this.disdiapason,
+        this.ectorhinal,
+        this.gamblesomeness,
+        this.homocerc,
+        this.irrorate,
+        this.kindergartening,
+        this.lateritic,
+        this.mespil,
+        this.misconfiguration,
+        this.nonbookish,
+        this.planometry,
+        this.quiina,
+        this.robert,
+        this.rot,
+        this.subcinctorium,
+        this.tussocker,
+        this.ultraproud,
+        this.unsuggestedness,
+    });
+
+    factory UnimpeachablyClass.fromJson(Map<String, dynamic> json) => UnimpeachablyClass(
+        acerin: json["acerin"],
+        bobadil: json["Bobadil"],
+        catharticalness: json["catharticalness"]?.toDouble(),
+        chirotherium: json["Chirotherium"],
+        chlorophylligenous: json["chlorophylligenous"],
+        conversational: json["conversational"],
+        demiowl: json["demiowl"],
+        disdiapason: json["disdiapason"],
+        ectorhinal: json["ectorhinal"],
+        gamblesomeness: json["gamblesomeness"],
+        homocerc: json["homocerc"],
+        irrorate: json["irrorate"],
+        kindergartening: json["kindergartening"],
+        lateritic: json["lateritic"],
+        mespil: json["mespil"],
+        misconfiguration: json["misconfiguration"],
+        nonbookish: json["nonbookish"],
+        planometry: json["planometry"],
+        quiina: json["Quiina"],
+        robert: json["Robert"],
+        rot: json["rot"],
+        subcinctorium: json["subcinctorium"],
+        tussocker: json["tussocker"],
+        ultraproud: json["ultraproud"],
+        unsuggestedness: json["unsuggestedness"],
+    );
+
+    Map<String, dynamic> toJson() => {
+        "acerin": acerin,
+        "Bobadil": bobadil,
+        "catharticalness": catharticalness,
+        "Chirotherium": chirotherium,
+        "chlorophylligenous": chlorophylligenous,
+        "conversational": conversational,
+        "demiowl": demiowl,
+        "disdiapason": disdiapason,
+        "ectorhinal": ectorhinal,
+        "gamblesomeness": gamblesomeness,
+        "homocerc": homocerc,
+        "irrorate": irrorate,
+        "kindergartening": kindergartening,
+        "lateritic": lateritic,
+        "mespil": mespil,
+        "misconfiguration": misconfiguration,
+        "nonbookish": nonbookish,
+        "planometry": planometry,
+        "Quiina": quiina,
+        "Robert": robert,
+        "rot": rot,
+        "subcinctorium": subcinctorium,
+        "tussocker": tussocker,
+        "ultraproud": ultraproud,
+        "unsuggestedness": unsuggestedness,
+    };
+}
+
+class UnstressedClass {
+    dynamic alain;
+    dynamic amphirhina;
+    dynamic antimachinery;
+    dynamic coldish;
+    dynamic crantara;
+    dynamic distinguishing;
+    dynamic elytroposis;
+    dynamic gentianwort;
+    dynamic heliosis;
+    dynamic instrumental;
+    dynamic introinflection;
+    dynamic kala;
+    dynamic lincolnian;
+    dynamic metad;
+    dynamic sarcophilus;
+    dynamic swingingly;
+    dynamic unconformity;
+    dynamic undecreed;
+    dynamic venerable;
+    dynamic vowellessness;
+
+    UnstressedClass({
+        required this.alain,
+        required this.amphirhina,
+        required this.antimachinery,
+        required this.coldish,
+        required this.crantara,
+        required this.distinguishing,
+        required this.elytroposis,
+        required this.gentianwort,
+        required this.heliosis,
+        required this.instrumental,
+        required this.introinflection,
+        required this.kala,
+        required this.lincolnian,
+        required this.metad,
+        required this.sarcophilus,
+        required this.swingingly,
+        required this.unconformity,
+        required this.undecreed,
+        required this.venerable,
+        required this.vowellessness,
+    });
+
+    factory UnstressedClass.fromJson(Map<String, dynamic> json) => UnstressedClass(
+        alain: json["Alain"],
+        amphirhina: json["Amphirhina"],
+        antimachinery: json["antimachinery"],
+        coldish: json["coldish"],
+        crantara: json["crantara"],
+        distinguishing: json["distinguishing"],
+        elytroposis: json["elytroposis"],
+        gentianwort: json["gentianwort"],
+        heliosis: json["heliosis"],
+        instrumental: json["instrumental"],
+        introinflection: json["introinflection"],
+        kala: json["kala"],
+        lincolnian: json["Lincolnian"],
+        metad: json["metad"],
+        sarcophilus: json["Sarcophilus"],
+        swingingly: json["swingingly"],
+        unconformity: json["unconformity"],
+        undecreed: json["undecreed"],
+        venerable: json["venerable"],
+        vowellessness: json["vowellessness"],
+    );
+
+    Map<String, dynamic> toJson() => {
+        "Alain": alain,
+        "Amphirhina": amphirhina,
+        "antimachinery": antimachinery,
+        "coldish": coldish,
+        "crantara": crantara,
+        "distinguishing": distinguishing,
+        "elytroposis": elytroposis,
+        "gentianwort": gentianwort,
+        "heliosis": heliosis,
+        "instrumental": instrumental,
+        "introinflection": introinflection,
+        "kala": kala,
+        "Lincolnian": lincolnian,
+        "metad": metad,
+        "Sarcophilus": sarcophilus,
+        "swingingly": swingingly,
+        "unconformity": unconformity,
+        "undecreed": undecreed,
+        "venerable": venerable,
+        "vowellessness": vowellessness,
+    };
+}
+
+class WrothyClass {
+    dynamic aeschynanthus;
+    dynamic aquiferous;
+    dynamic cheapener;
+    dynamic enumeration;
+    dynamic ephesine;
+    dynamic escadrille;
+    dynamic estrous;
+    dynamic interestedly;
+    dynamic katakinetomer;
+    dynamic mortification;
+    dynamic morula;
+    dynamic orthosymmetrical;
+    dynamic overbark;
+    dynamic politist;
+    dynamic qualified;
+    dynamic sphenomalar;
+    dynamic throatful;
+    dynamic transhumance;
+    dynamic triandrian;
+    dynamic unbooked;
+
+    WrothyClass({
+        required this.aeschynanthus,
+        required this.aquiferous,
+        required this.cheapener,
+        required this.enumeration,
+        required this.ephesine,
+        required this.escadrille,
+        required this.estrous,
+        required this.interestedly,
+        required this.katakinetomer,
+        required this.mortification,
+        required this.morula,
+        required this.orthosymmetrical,
+        required this.overbark,
+        required this.politist,
+        required this.qualified,
+        required this.sphenomalar,
+        required this.throatful,
+        required this.transhumance,
+        required this.triandrian,
+        required this.unbooked,
+    });
+
+    factory WrothyClass.fromJson(Map<String, dynamic> json) => WrothyClass(
+        aeschynanthus: json["Aeschynanthus"],
+        aquiferous: json["aquiferous"],
+        cheapener: json["cheapener"],
+        enumeration: json["enumeration"],
+        ephesine: json["Ephesine"],
+        escadrille: json["escadrille"],
+        estrous: json["estrous"],
+        interestedly: json["interestedly"],
+        katakinetomer: json["katakinetomer"],
+        mortification: json["mortification"],
+        morula: json["morula"],
+        orthosymmetrical: json["orthosymmetrical"],
+        overbark: json["overbark"],
+        politist: json["politist"],
+        qualified: json["qualified"],
+        sphenomalar: json["sphenomalar"],
+        throatful: json["throatful"],
+        transhumance: json["transhumance"],
+        triandrian: json["triandrian"],
+        unbooked: json["unbooked"],
+    );
+
+    Map<String, dynamic> toJson() => {
+        "Aeschynanthus": aeschynanthus,
+        "aquiferous": aquiferous,
+        "cheapener": cheapener,
+        "enumeration": enumeration,
+        "Ephesine": ephesine,
+        "escadrille": escadrille,
+        "estrous": estrous,
+        "interestedly": interestedly,
+        "katakinetomer": katakinetomer,
+        "mortification": mortification,
+        "morula": morula,
+        "orthosymmetrical": orthosymmetrical,
+        "overbark": overbark,
+        "politist": politist,
+        "qualified": qualified,
+        "sphenomalar": sphenomalar,
+        "throatful": throatful,
+        "transhumance": transhumance,
+        "triandrian": triandrian,
+        "unbooked": unbooked,
+    };
+}
diff --git a/head/dart/test/inputs/json/priority/direct-recursive.json/default/TopLevel.dart b/head/dart/test/inputs/json/priority/direct-recursive.json/default/TopLevel.dart
new file mode 100644
index 0000000..027d880
--- /dev/null
+++ b/head/dart/test/inputs/json/priority/direct-recursive.json/default/TopLevel.dart
@@ -0,0 +1,41 @@
+// To parse this JSON data, do
+//
+//     final topLevel = topLevelFromJson(jsonString);
+
+import 'dart:convert';
+
+TopLevel topLevelFromJson(String str) => TopLevel.fromJson(json.decode(str));
+
+String topLevelToJson(TopLevel data) => json.encode(data.toJson());
+
+class TopLevel {
+    final TopLevel? also;
+    final bool bar;
+    final int foo;
+    final double moo;
+    final String quux;
+
+    TopLevel({
+        this.also,
+        required this.bar,
+        required this.foo,
+        required this.moo,
+        required this.quux,
+    });
+
+    factory TopLevel.fromJson(Map<String, dynamic> json) => TopLevel(
+        also: json["also"] == null ? null : TopLevel.fromJson(json["also"]),
+        bar: json["bar"],
+        foo: json["foo"],
+        moo: json["moo"]?.toDouble(),
+        quux: json["quux"],
+    );
+
+    Map<String, dynamic> toJson() => {
+        "also": also?.toJson(),
+        "bar": bar,
+        "foo": foo,
+        "moo": moo,
+        "quux": quux,
+    };
+}
diff --git a/head/dart/test/inputs/json/priority/list.json/default/TopLevel.dart b/head/dart/test/inputs/json/priority/list.json/default/TopLevel.dart
new file mode 100644
index 0000000..12bef77
--- /dev/null
+++ b/head/dart/test/inputs/json/priority/list.json/default/TopLevel.dart
@@ -0,0 +1,29 @@
+// To parse this JSON data, do
+//
+//     final topLevel = topLevelFromJson(jsonString);
+
+import 'dart:convert';
+
+TopLevel topLevelFromJson(String str) => TopLevel.fromJson(json.decode(str));
+
+String topLevelToJson(TopLevel data) => json.encode(data.toJson());
+
+class TopLevel {
+    final int data;
+    final TopLevel? next;
+
+    TopLevel({
+        required this.data,
+        required this.next,
+    });
+
+    factory TopLevel.fromJson(Map<String, dynamic> json) => TopLevel(
+        data: json["data"],
+        next: json["next"] == null ? null : TopLevel.fromJson(json["next"]),
+    );
+
+    Map<String, dynamic> toJson() => {
+        "data": data,
+        "next": next?.toJson(),
+    };
+}
diff --git a/head/dart/test/inputs/json/priority/nbl-stats.json/default/TopLevel.dart b/head/dart/test/inputs/json/priority/nbl-stats.json/default/TopLevel.dart
new file mode 100644
index 0000000..abf6fd4
--- /dev/null
+++ b/head/dart/test/inputs/json/priority/nbl-stats.json/default/TopLevel.dart
@@ -0,0 +1,1225 @@
+// To parse this JSON data, do
+//
+//     final topLevel = topLevelFromJson(jsonString);
+
+import 'dart:convert';
+
+TopLevel topLevelFromJson(String str) => TopLevel.fromJson(json.decode(str));
+
+String topLevelToJson(TopLevel data) => json.encode(data.toJson());
+
+class TopLevel {
+    final int attendance;
+    final String clock;
+    final int disableMatch;
+    final int inOt;
+    final List<List<dynamic>> leaddata;
+    final String officialsReferee1;
+    final String officialsReferee2;
+    final String officialsReferee3;
+    final List<Othermatch> othermatches;
+    final List<Pbp> pbp;
+    final int period;
+    final int periodLengthOvertime;
+    final int periodLengthRegular;
+    final PerType periodType;
+    final int periodsMax;
+    final Map<String, List<Scorer>> scorers;
+    final List<dynamic> timeline;
+    final Map<String, Tm> tm;
+    final int totalTimeAdded;
+    final Totallds totallds;
+
+    TopLevel({
+        required this.attendance,
+        required this.clock,
+        required this.disableMatch,
+        required this.inOt,
+        required this.leaddata,
+        required this.officialsReferee1,
+        required this.officialsReferee2,
+        required this.officialsReferee3,
+        required this.othermatches,
+        required this.pbp,
+        required this.period,
+        required this.periodLengthOvertime,
+        required this.periodLengthRegular,
+        required this.periodType,
+        required this.periodsMax,
+        required this.scorers,
+        required this.timeline,
+        required this.tm,
+        required this.totalTimeAdded,
+        required this.totallds,
+    });
+
+    factory TopLevel.fromJson(Map<String, dynamic> json) => TopLevel(
+        attendance: json["attendance"],
+        clock: json["clock"],
+        disableMatch: json["disableMatch"],
+        inOt: json["inOT"],
+        leaddata: List<List<dynamic>>.from(json["leaddata"].map((x) => List<dynamic>.from(x.map((x) => x)))),
+        officialsReferee1: json["officials_referee1"],
+        officialsReferee2: json["officials_referee2"],
+        officialsReferee3: json["officials_referee3"],
+        othermatches: List<Othermatch>.from(json["othermatches"].map((x) => Othermatch.fromJson(x))),
+        pbp: List<Pbp>.from(json["pbp"].map((x) => Pbp.fromJson(x))),
+        period: json["period"],
+        periodLengthOvertime: json["periodLengthOVERTIME"],
+        periodLengthRegular: json["periodLengthREGULAR"],
+        periodType: perTypeValues.map[json["periodType"]]!,
+        periodsMax: json["periodsMax"],
+        scorers: Map.from(json["scorers"]).map((k, v) => MapEntry<String, List<Scorer>>(k, List<Scorer>.from(v.map((x) => Scorer.fromJson(x))))),
+        timeline: List<dynamic>.from(json["timeline"].map((x) => x)),
+        tm: Map.from(json["tm"]).map((k, v) => MapEntry<String, Tm>(k, Tm.fromJson(v))),
+        totalTimeAdded: json["totalTimeAdded"],
+        totallds: Totallds.fromJson(json["totallds"]),
+    );
+
+    Map<String, dynamic> toJson() => {
+        "attendance": attendance,
+        "clock": clock,
+        "disableMatch": disableMatch,
+        "inOT": inOt,
+        "leaddata": List<dynamic>.from(leaddata.map((x) => List<dynamic>.from(x.map((x) => x)))),
+        "officials_referee1": officialsReferee1,
+        "officials_referee2": officialsReferee2,
+        "officials_referee3": officialsReferee3,
+        "othermatches": List<dynamic>.from(othermatches.map((x) => x.toJson())),
+        "pbp": List<dynamic>.from(pbp.map((x) => x.toJson())),
+        "period": period,
+        "periodLengthOVERTIME": periodLengthOvertime,
+        "periodLengthREGULAR": periodLengthRegular,
+        "periodType": perTypeValues.reverse[periodType],
+        "periodsMax": periodsMax,
+        "scorers": Map.from(scorers).map((k, v) => MapEntry<String, dynamic>(k, List<dynamic>.from(v.map((x) => x.toJson())))),
+        "timeline": List<dynamic>.from(timeline.map((x) => x)),
+        "tm": Map.from(tm).map((k, v) => MapEntry<String, dynamic>(k, v.toJson())),
+        "totalTimeAdded": totalTimeAdded,
+        "totallds": totallds.toJson(),
+    };
+}
+
+enum LeaddatumEnum {
+    EMPTY,
+    P1,
+    P2,
+    P3,
+    P4
+}
+
+final leaddatumEnumValues = EnumValues({
+    "": LeaddatumEnum.EMPTY,
+    "P1": LeaddatumEnum.P1,
+    "P2": LeaddatumEnum.P2,
+    "P3": LeaddatumEnum.P3,
+    "P4": LeaddatumEnum.P4
+});
+
+class Othermatch {
+    final String clock;
+    final String competitionName;
+    final String id;
+    final int period;
+    final PerType periodType;
+    final Team team1;
+    final String team1Name;
+    final int team1Score;
+    final Team team2;
+    final String team2Name;
+    final int team2Score;
+
+    Othermatch({
+        required this.clock,
+        required this.competitionName,
+        required this.id,
+        required this.period,
+        required this.periodType,
+        required this.team1,
+        required this.team1Name,
+        required this.team1Score,
+        required this.team2,
+        required this.team2Name,
+        required this.team2Score,
+    });
+
+    factory Othermatch.fromJson(Map<String, dynamic> json) => Othermatch(
+        clock: json["clock"],
+        competitionName: json["competitionName"],
+        id: json["id"],
+        period: json["period"],
+        periodType: perTypeValues.map[json["periodType"]]!,
+        team1: Team.fromJson(json["team1"]),
+        team1Name: json["team1Name"],
+        team1Score: json["team1Score"],
+        team2: Team.fromJson(json["team2"]),
+        team2Name: json["team2Name"],
+        team2Score: json["team2Score"],
+    );
+
+    Map<String, dynamic> toJson() => {
+        "clock": clock,
+        "competitionName": competitionName,
+        "id": id,
+        "period": period,
+        "periodType": perTypeValues.reverse[periodType],
+        "team1": team1.toJson(),
+        "team1Name": team1Name,
+        "team1Score": team1Score,
+        "team2": team2.toJson(),
+        "team2Name": team2Name,
+        "team2Score": team2Score,
+    };
+}
+
+enum PerType {
+    REGULAR
+}
+
+final perTypeValues = EnumValues({
+    "REGULAR": PerType.REGULAR
+});
+
+class Team {
+    final String teamCode;
+    final String teamCodeInternational;
+    final String teamName;
+    final String teamNameInternational;
+
+    Team({
+        required this.teamCode,
+        required this.teamCodeInternational,
+        required this.teamName,
+        required this.teamNameInternational,
+    });
+
+    factory Team.fromJson(Map<String, dynamic> json) => Team(
+        teamCode: json["teamCode"],
+        teamCodeInternational: json["teamCodeInternational"],
+        teamName: json["teamName"],
+        teamNameInternational: json["teamNameInternational"],
+    );
+
+    Map<String, dynamic> toJson() => {
+        "teamCode": teamCode,
+        "teamCodeInternational": teamCodeInternational,
+        "teamName": teamName,
+        "teamNameInternational": teamNameInternational,
+    };
+}
+
+class Pbp {
+    final ActionType actionType;
+    final String? familyName;
+    final FamilyNameInitial? familyNameInitial;
+    final String? firstName;
+    final FirstNameInitial? firstNameInitial;
+    final String gt;
+    final String? internationalFamilyName;
+    final FamilyNameInitial? internationalFamilyNameInitial;
+    final String? internationalFirstName;
+    final FirstNameInitial? internationalFirstNameInitial;
+    final int lead;
+    final int period;
+    final PerType periodType;
+    final String player;
+    final int pno;
+    final String qualifier;
+    final int s1;
+    final int s2;
+    final ScoreboardName? scoreboardName;
+    final int scoring;
+    final String shirtNumber;
+    final String subType;
+    final int success;
+    final int tno;
+
+    Pbp({
+        required this.actionType,
+        this.familyName,
+        this.familyNameInitial,
+        this.firstName,
+        this.firstNameInitial,
+        required this.gt,
+        this.internationalFamilyName,
+        this.internationalFamilyNameInitial,
+        this.internationalFirstName,
+        this.internationalFirstNameInitial,
+        required this.lead,
+        required this.period,
+        required this.periodType,
+        required this.player,
+        required this.pno,
+        required this.qualifier,
+        required this.s1,
+        required this.s2,
+        this.scoreboardName,
+        required this.scoring,
+        required this.shirtNumber,
+        required this.subType,
+        required this.success,
+        required this.tno,
+    });
+
+    factory Pbp.fromJson(Map<String, dynamic> json) => Pbp(
+        actionType: actionTypeValues.map[json["actionType"]]!,
+        familyName: json["familyName"],
+        familyNameInitial: familyNameInitialValues.map[json["familyNameInitial"]],
+        firstName: json["firstName"],
+        firstNameInitial: firstNameInitialValues.map[json["firstNameInitial"]],
+        gt: json["gt"],
+        internationalFamilyName: json["internationalFamilyName"],
+        internationalFamilyNameInitial: familyNameInitialValues.map[json["internationalFamilyNameInitial"]],
+        internationalFirstName: json["internationalFirstName"],
+        internationalFirstNameInitial: firstNameInitialValues.map[json["internationalFirstNameInitial"]],
+        lead: json["lead"],
+        period: json["period"],
+        periodType: perTypeValues.map[json["periodType"]]!,
+        player: json["player"],
+        pno: json["pno"],
+        qualifier: json["qualifier"],
+        s1: json["s1"],
+        s2: json["s2"],
+        scoreboardName: scoreboardNameValues.map[json["scoreboardName"]],
+        scoring: json["scoring"],
+        shirtNumber: json["shirtNumber"],
+        subType: json["subType"],
+        success: json["success"],
+        tno: json["tno"],
+    );
+
+    Map<String, dynamic> toJson() => {
+        "actionType": actionTypeValues.reverse[actionType],
+        "familyName": familyName,
+        "familyNameInitial": familyNameInitialValues.reverse[familyNameInitial],
+        "firstName": firstName,
+        "firstNameInitial": firstNameInitialValues.reverse[firstNameInitial],
+        "gt": gt,
+        "internationalFamilyName": internationalFamilyName,
+        "internationalFamilyNameInitial": familyNameInitialValues.reverse[internationalFamilyNameInitial],
+        "internationalFirstName": internationalFirstName,
+        "internationalFirstNameInitial": firstNameInitialValues.reverse[internationalFirstNameInitial],
+        "lead": lead,
+        "period": period,
+        "periodType": perTypeValues.reverse[periodType],
+        "player": player,
+        "pno": pno,
+        "qualifier": qualifier,
+        "s1": s1,
+        "s2": s2,
+        "scoreboardName": scoreboardNameValues.reverse[scoreboardName],
+        "scoring": scoring,
+        "shirtNumber": shirtNumber,
+        "subType": subType,
+        "success": success,
+        "tno": tno,
+    };
+}
+
+enum ActionType {
+    GAME,
+    PERIOD,
+    THE_3_PT,
+    THE_2_PT,
+    REBOUND,
+    TIMEOUT,
+    FOULON,
+    FOUL,
+    ASSIST,
+    SUBSTITUTION,
+    FREETHROW,
+    STEAL,
+    TURNOVER,
+    BLOCK,
+    JUMPBALL
+}
+
+final actionTypeValues = EnumValues({
+    "game": ActionType.GAME,
+    "period": ActionType.PERIOD,
+    "3pt": ActionType.THE_3_PT,
+    "2pt": ActionType.THE_2_PT,
+    "rebound": ActionType.REBOUND,
+    "timeout": ActionType.TIMEOUT,
+    "foulon": ActionType.FOULON,
+    "foul": ActionType.FOUL,
+    "assist": ActionType.ASSIST,
+    "substitution": ActionType.SUBSTITUTION,
+    "freethrow": ActionType.FREETHROW,
+    "steal": ActionType.STEAL,
+    "turnover": ActionType.TURNOVER,
+    "block": ActionType.BLOCK,
+    "jumpball": ActionType.JUMPBALL
+});
+
+enum FamilyNameInitial {
+    R,
+    M,
+    S,
+    C,
+    O,
+    W,
+    A,
+    P,
+    V,
+    I,
+    J,
+    FAMILY_NAME_INITIAL_S,
+    H,
+    B
+}
+
+final familyNameInitialValues = EnumValues({
+    "R": FamilyNameInitial.R,
+    "M": FamilyNameInitial.M,
+    "s": FamilyNameInitial.S,
+    "C": FamilyNameInitial.C,
+    "O": FamilyNameInitial.O,
+    "W": FamilyNameInitial.W,
+    "A": FamilyNameInitial.A,
+    "P": FamilyNameInitial.P,
+    "V": FamilyNameInitial.V,
+    "I": FamilyNameInitial.I,
+    "J": FamilyNameInitial.J,
+    "S": FamilyNameInitial.FAMILY_NAME_INITIAL_S,
+    "H": FamilyNameInitial.H,
+    "B": FamilyNameInitial.B
+});
+
+enum FirstNameInitial {
+    D,
+    J,
+    T,
+    C,
+    O,
+    H,
+    L,
+    A,
+    K,
+    R,
+    B,
+    N
+}
+
+final firstNameInitialValues = EnumValues({
+    "D": FirstNameInitial.D,
+    "J": FirstNameInitial.J,
+    "T": FirstNameInitial.T,
+    "C": FirstNameInitial.C,
+    "O": FirstNameInitial.O,
+    "H": FirstNameInitial.H,
+    "L": FirstNameInitial.L,
+    "A": FirstNameInitial.A,
+    "K": FirstNameInitial.K,
+    "R": FirstNameInitial.R,
+    "B": FirstNameInitial.B,
+    "N": FirstNameInitial.N
+});
+
+enum ScoreboardName {
+    EMPTY,
+    T_S,
+    R_IHATA,
+    D_JONES,
+    B_VALENTINE
+}
+
+final scoreboardNameValues = EnumValues({
+    "": ScoreboardName.EMPTY,
+    "T. s": ScoreboardName.T_S,
+    "R. Ihata": ScoreboardName.R_IHATA,
+    "D. Jones": ScoreboardName.D_JONES,
+    "B. Valentine": ScoreboardName.B_VALENTINE
+});
+
+class Scorer {
+    final String? familyName;
+    final FamilyNameInitial? familyNameInitial;
+    final String? firstName;
+    final FirstNameInitial? firstNameInitial;
+    final String? gt;
+    final String? internationalFamilyName;
+    final FamilyNameInitial? internationalFamilyNameInitial;
+    final String? internationalFirstName;
+    final FirstNameInitial? internationalFirstNameInitial;
+    final String? name;
+    final int? per;
+    final PerType? perType;
+    final String? player;
+    final int pno;
+    final ScoreboardName? scoreboardName;
+    final String shirtNumber;
+    final String? summary;
+    final List<Time>? times;
+    final int tno;
+    final int? tot;
+
+    Scorer({
+        this.familyName,
+        this.familyNameInitial,
+        this.firstName,
+        this.firstNameInitial,
+        this.gt,
+        this.internationalFamilyName,
+        this.internationalFamilyNameInitial,
+        this.internationalFirstName,
+        this.internationalFirstNameInitial,
+        this.name,
+        this.per,
+        this.perType,
+        this.player,
+        required this.pno,
+        this.scoreboardName,
+        required this.shirtNumber,
+        this.summary,
+        this.times,
+        required this.tno,
+        this.tot,
+    });
+
+    factory Scorer.fromJson(Map<String, dynamic> json) => Scorer(
+        familyName: json["familyName"],
+        familyNameInitial: familyNameInitialValues.map[json["familyNameInitial"]],
+        firstName: json["firstName"],
+        firstNameInitial: firstNameInitialValues.map[json["firstNameInitial"]],
+        gt: json["gt"],
+        internationalFamilyName: json["internationalFamilyName"],
+        internationalFamilyNameInitial: familyNameInitialValues.map[json["internationalFamilyNameInitial"]],
+        internationalFirstName: json["internationalFirstName"],
+        internationalFirstNameInitial: firstNameInitialValues.map[json["internationalFirstNameInitial"]],
+        name: json["name"],
+        per: json["per"],
+        perType: perTypeValues.map[json["perType"]],
+        player: json["player"],
+        pno: json["pno"],
+        scoreboardName: scoreboardNameValues.map[json["scoreboardName"]],
+        shirtNumber: json["shirtNumber"],
+        summary: json["summary"],
+        times: json["times"] == null ? null : List<Time>.from(json["times"]!.map((x) => Time.fromJson(x))),
+        tno: json["tno"],
+        tot: json["tot"],
+    );
+
+    Map<String, dynamic> toJson() => {
+        "familyName": familyName,
+        "familyNameInitial": familyNameInitialValues.reverse[familyNameInitial],
+        "firstName": firstName,
+        "firstNameInitial": firstNameInitialValues.reverse[firstNameInitial],
+        "gt": gt,
+        "internationalFamilyName": internationalFamilyName,
+        "internationalFamilyNameInitial": familyNameInitialValues.reverse[internationalFamilyNameInitial],
+        "internationalFirstName": internationalFirstName,
+        "internationalFirstNameInitial": firstNameInitialValues.reverse[internationalFirstNameInitial],
+        "name": name,
+        "per": per,
+        "perType": perTypeValues.reverse[perType],
+        "player": player,
+        "pno": pno,
+        "scoreboardName": scoreboardNameValues.reverse[scoreboardName],
+        "shirtNumber": shirtNumber,
+        "summary": summary,
+        "times": times == null ? null : List<dynamic>.from(times!.map((x) => x.toJson())),
+        "tno": tno,
+        "tot": tot,
+    };
+}
+
+class Time {
+    final String gt;
+    final int per;
+    final PerType perType;
+
+    Time({
+        required this.gt,
+        required this.per,
+        required this.perType,
+    });
+
+    factory Time.fromJson(Map<String, dynamic> json) => Time(
+        gt: json["gt"],
+        per: json["per"],
+        perType: perTypeValues.map[json["perType"]]!,
+    );
+
+    Map<String, dynamic> toJson() => {
+        "gt": gt,
+        "per": per,
+        "perType": perTypeValues.reverse[perType],
+    };
+}
+
+class Tm {
+    final String code;
+    final String codeInternational;
+    final int fouls;
+    final int fullScore;
+    final Lds lds;
+    final String logo;
+    final String name;
+    final String nameInternational;
+    final int p1Score;
+    final int p2Score;
+    final int p3Score;
+    final int p4Score;
+    final Map<String, Pl> pl;
+    final int score;
+    final List<Scorer> scoring;
+    final String shortName;
+    final String shortNameInternational;
+    final List<Shot> shot;
+    final int timeouts;
+    final int totEff1;
+    final int totEff2;
+    final double totEff3;
+    final int totEff4;
+    final int totEff5;
+    final int totEff6;
+    final int totEff7;
+    final int totSAssists;
+    final int totSBenchPoints;
+    final int totSBiggestLead;
+    final int totSBiggestScoringRun;
+    final int totSBlocks;
+    final int totSBlocksReceived;
+    final int totSFieldGoalsAttempted;
+    final int totSFieldGoalsMade;
+    final int totSFieldGoalsPercentage;
+    final int totSFoulsOn;
+    final int totSFoulsPersonal;
+    final int totSFoulsTeam;
+    final int totSFreeThrowsAttempted;
+    final int totSFreeThrowsMade;
+    final int totSFreeThrowsPercentage;
+    final int totSLeadChanges;
+    final int totSMinutes;
+    final int totSPoints;
+    final int totSPointsFastBreak;
+    final int totSPointsFromTurnovers;
+    final int totSPointsInThePaint;
+    final int totSPointsSecondChance;
+    final int totSReboundsDefensive;
+    final int totSReboundsOffensive;
+    final int totSReboundsTeam;
+    final int totSReboundsTeamDefensive;
+    final int totSReboundsTeamOffensive;
+    final int totSReboundsTotal;
+    final int totSSteals;
+    final int totSThreePointersAttempted;
+    final int totSThreePointersMade;
+    final int totSThreePointersPercentage;
+    final double totSTimeLeading;
+    final int totSTimesScoresLevel;
+    final int totSTurnovers;
+    final int totSTurnoversTeam;
+    final int totSTwoPointersAttempted;
+    final int totSTwoPointersMade;
+    final int totSTwoPointersPercentage;
+
+    Tm({
+        required this.code,
+        required this.codeInternational,
+        required this.fouls,
+        required this.fullScore,
+        required this.lds,
+        required this.logo,
+        required this.name,
+        required this.nameInternational,
+        required this.p1Score,
+        required this.p2Score,
+        required this.p3Score,
+        required this.p4Score,
+        required this.pl,
+        required this.score,
+        required this.scoring,
+        required this.shortName,
+        required this.shortNameInternational,
+        required this.shot,
+        required this.timeouts,
+        required this.totEff1,
+        required this.totEff2,
+        required this.totEff3,
+        required this.totEff4,
+        required this.totEff5,
+        required this.totEff6,
+        required this.totEff7,
+        required this.totSAssists,
+        required this.totSBenchPoints,
+        required this.totSBiggestLead,
+        required this.totSBiggestScoringRun,
+        required this.totSBlocks,
+        required this.totSBlocksReceived,
+        required this.totSFieldGoalsAttempted,
+        required this.totSFieldGoalsMade,
+        required this.totSFieldGoalsPercentage,
+        required this.totSFoulsOn,
+        required this.totSFoulsPersonal,
+        required this.totSFoulsTeam,
+        required this.totSFreeThrowsAttempted,
+        required this.totSFreeThrowsMade,
+        required this.totSFreeThrowsPercentage,
+        required this.totSLeadChanges,
+        required this.totSMinutes,
+        required this.totSPoints,
+        required this.totSPointsFastBreak,
+        required this.totSPointsFromTurnovers,
+        required this.totSPointsInThePaint,
+        required this.totSPointsSecondChance,
+        required this.totSReboundsDefensive,
+        required this.totSReboundsOffensive,
+        required this.totSReboundsTeam,
+        required this.totSReboundsTeamDefensive,
+        required this.totSReboundsTeamOffensive,
+        required this.totSReboundsTotal,
+        required this.totSSteals,
+        required this.totSThreePointersAttempted,
+        required this.totSThreePointersMade,
+        required this.totSThreePointersPercentage,
+        required this.totSTimeLeading,
+        required this.totSTimesScoresLevel,
+        required this.totSTurnovers,
+        required this.totSTurnoversTeam,
+        required this.totSTwoPointersAttempted,
+        required this.totSTwoPointersMade,
+        required this.totSTwoPointersPercentage,
+    });
+
+    factory Tm.fromJson(Map<String, dynamic> json) => Tm(
+        code: json["code"],
+        codeInternational: json["codeInternational"],
+        fouls: json["fouls"],
+        fullScore: json["full_score"],
+        lds: Lds.fromJson(json["lds"]),
+        logo: json["logo"],
+        name: json["name"],
+        nameInternational: json["nameInternational"],
+        p1Score: json["p1_score"],
+        p2Score: json["p2_score"],
+        p3Score: json["p3_score"],
+        p4Score: json["p4_score"],
+        pl: Map.from(json["pl"]).map((k, v) => MapEntry<String, Pl>(k, Pl.fromJson(v))),
+        score: json["score"],
+        scoring: List<Scorer>.from(json["scoring"].map((x) => Scorer.fromJson(x))),
+        shortName: json["shortName"],
+        shortNameInternational: json["shortNameInternational"],
+        shot: List<Shot>.from(json["shot"].map((x) => Shot.fromJson(x))),
+        timeouts: json["timeouts"],
+        totEff1: json["tot_eff_1"],
+        totEff2: json["tot_eff_2"],
+        totEff3: json["tot_eff_3"]?.toDouble(),
+        totEff4: json["tot_eff_4"],
+        totEff5: json["tot_eff_5"],
+        totEff6: json["tot_eff_6"],
+        totEff7: json["tot_eff_7"],
+        totSAssists: json["tot_sAssists"],
+        totSBenchPoints: json["tot_sBenchPoints"],
+        totSBiggestLead: json["tot_sBiggestLead"],
+        totSBiggestScoringRun: json["tot_sBiggestScoringRun"],
+        totSBlocks: json["tot_sBlocks"],
+        totSBlocksReceived: json["tot_sBlocksReceived"],
+        totSFieldGoalsAttempted: json["tot_sFieldGoalsAttempted"],
+        totSFieldGoalsMade: json["tot_sFieldGoalsMade"],
+        totSFieldGoalsPercentage: json["tot_sFieldGoalsPercentage"],
+        totSFoulsOn: json["tot_sFoulsOn"],
+        totSFoulsPersonal: json["tot_sFoulsPersonal"],
+        totSFoulsTeam: json["tot_sFoulsTeam"],
+        totSFreeThrowsAttempted: json["tot_sFreeThrowsAttempted"],
+        totSFreeThrowsMade: json["tot_sFreeThrowsMade"],
+        totSFreeThrowsPercentage: json["tot_sFreeThrowsPercentage"],
+        totSLeadChanges: json["tot_sLeadChanges"],
+        totSMinutes: json["tot_sMinutes"],
+        totSPoints: json["tot_sPoints"],
+        totSPointsFastBreak: json["tot_sPointsFastBreak"],
+        totSPointsFromTurnovers: json["tot_sPointsFromTurnovers"],
+        totSPointsInThePaint: json["tot_sPointsInThePaint"],
+        totSPointsSecondChance: json["tot_sPointsSecondChance"],
+        totSReboundsDefensive: json["tot_sReboundsDefensive"],
+        totSReboundsOffensive: json["tot_sReboundsOffensive"],
+        totSReboundsTeam: json["tot_sReboundsTeam"],
+        totSReboundsTeamDefensive: json["tot_sReboundsTeamDefensive"],
+        totSReboundsTeamOffensive: json["tot_sReboundsTeamOffensive"],
+        totSReboundsTotal: json["tot_sReboundsTotal"],
+        totSSteals: json["tot_sSteals"],
+        totSThreePointersAttempted: json["tot_sThreePointersAttempted"],
+        totSThreePointersMade: json["tot_sThreePointersMade"],
+        totSThreePointersPercentage: json["tot_sThreePointersPercentage"],
+        totSTimeLeading: json["tot_sTimeLeading"]?.toDouble(),
+        totSTimesScoresLevel: json["tot_sTimesScoresLevel"],
+        totSTurnovers: json["tot_sTurnovers"],
+        totSTurnoversTeam: json["tot_sTurnoversTeam"],
+        totSTwoPointersAttempted: json["tot_sTwoPointersAttempted"],
+        totSTwoPointersMade: json["tot_sTwoPointersMade"],
+        totSTwoPointersPercentage: json["tot_sTwoPointersPercentage"],
+    );
+
+    Map<String, dynamic> toJson() => {
+        "code": code,
+        "codeInternational": codeInternational,
+        "fouls": fouls,
+        "full_score": fullScore,
+        "lds": lds.toJson(),
+        "logo": logo,
+        "name": name,
+        "nameInternational": nameInternational,
+        "p1_score": p1Score,
+        "p2_score": p2Score,
+        "p3_score": p3Score,
+        "p4_score": p4Score,
+        "pl": Map.from(pl).map((k, v) => MapEntry<String, dynamic>(k, v.toJson())),
+        "score": score,
+        "scoring": List<dynamic>.from(scoring.map((x) => x.toJson())),
+        "shortName": shortName,
+        "shortNameInternational": shortNameInternational,
+        "shot": List<dynamic>.from(shot.map((x) => x.toJson())),
+        "timeouts": timeouts,
+        "tot_eff_1": totEff1,
+        "tot_eff_2": totEff2,
+        "tot_eff_3": totEff3,
+        "tot_eff_4": totEff4,
+        "tot_eff_5": totEff5,
+        "tot_eff_6": totEff6,
+        "tot_eff_7": totEff7,
+        "tot_sAssists": totSAssists,
+        "tot_sBenchPoints": totSBenchPoints,
+        "tot_sBiggestLead": totSBiggestLead,
+        "tot_sBiggestScoringRun": totSBiggestScoringRun,
+        "tot_sBlocks": totSBlocks,
+        "tot_sBlocksReceived": totSBlocksReceived,
+        "tot_sFieldGoalsAttempted": totSFieldGoalsAttempted,
+        "tot_sFieldGoalsMade": totSFieldGoalsMade,
+        "tot_sFieldGoalsPercentage": totSFieldGoalsPercentage,
+        "tot_sFoulsOn": totSFoulsOn,
+        "tot_sFoulsPersonal": totSFoulsPersonal,
+        "tot_sFoulsTeam": totSFoulsTeam,
+        "tot_sFreeThrowsAttempted": totSFreeThrowsAttempted,
+        "tot_sFreeThrowsMade": totSFreeThrowsMade,
+        "tot_sFreeThrowsPercentage": totSFreeThrowsPercentage,
+        "tot_sLeadChanges": totSLeadChanges,
+        "tot_sMinutes": totSMinutes,
+        "tot_sPoints": totSPoints,
+        "tot_sPointsFastBreak": totSPointsFastBreak,
+        "tot_sPointsFromTurnovers": totSPointsFromTurnovers,
+        "tot_sPointsInThePaint": totSPointsInThePaint,
+        "tot_sPointsSecondChance": totSPointsSecondChance,
+        "tot_sReboundsDefensive": totSReboundsDefensive,
+        "tot_sReboundsOffensive": totSReboundsOffensive,
+        "tot_sReboundsTeam": totSReboundsTeam,
+        "tot_sReboundsTeamDefensive": totSReboundsTeamDefensive,
+        "tot_sReboundsTeamOffensive": totSReboundsTeamOffensive,
+        "tot_sReboundsTotal": totSReboundsTotal,
+        "tot_sSteals": totSSteals,
+        "tot_sThreePointersAttempted": totSThreePointersAttempted,
+        "tot_sThreePointersMade": totSThreePointersMade,
+        "tot_sThreePointersPercentage": totSThreePointersPercentage,
+        "tot_sTimeLeading": totSTimeLeading,
+        "tot_sTimesScoresLevel": totSTimesScoresLevel,
+        "tot_sTurnovers": totSTurnovers,
+        "tot_sTurnoversTeam": totSTurnoversTeam,
+        "tot_sTwoPointersAttempted": totSTwoPointersAttempted,
+        "tot_sTwoPointersMade": totSTwoPointersMade,
+        "tot_sTwoPointersPercentage": totSTwoPointersPercentage,
+    };
+}
+
+class Lds {
+    final Map<String, Scorer> sAssists;
+    final SBlocks sBlocks;
+    final Map<String, Scorer> sPoints;
+    final Map<String, Scorer> sReboundsTotal;
+    final Map<String, Scorer> sSteals;
+
+    Lds({
+        required this.sAssists,
+        required this.sBlocks,
+        required this.sPoints,
+        required this.sReboundsTotal,
+        required this.sSteals,
+    });
+
+    factory Lds.fromJson(Map<String, dynamic> json) => Lds(
+        sAssists: Map.from(json["sAssists"]).map((k, v) => MapEntry<String, Scorer>(k, Scorer.fromJson(v))),
+        sBlocks: SBlocks.fromJson(json["sBlocks"]),
+        sPoints: Map.from(json["sPoints"]).map((k, v) => MapEntry<String, Scorer>(k, Scorer.fromJson(v))),
+        sReboundsTotal: Map.from(json["sReboundsTotal"]).map((k, v) => MapEntry<String, Scorer>(k, Scorer.fromJson(v))),
+        sSteals: Map.from(json["sSteals"]).map((k, v) => MapEntry<String, Scorer>(k, Scorer.fromJson(v))),
+    );
+
+    Map<String, dynamic> toJson() => {
+        "sAssists": Map.from(sAssists).map((k, v) => MapEntry<String, dynamic>(k, v.toJson())),
+        "sBlocks": sBlocks.toJson(),
+        "sPoints": Map.from(sPoints).map((k, v) => MapEntry<String, dynamic>(k, v.toJson())),
+        "sReboundsTotal": Map.from(sReboundsTotal).map((k, v) => MapEntry<String, dynamic>(k, v.toJson())),
+        "sSteals": Map.from(sSteals).map((k, v) => MapEntry<String, dynamic>(k, v.toJson())),
+    };
+}
+
+class SBlocks {
+    final Scorer the1;
+
+    SBlocks({
+        required this.the1,
+    });
+
+    factory SBlocks.fromJson(Map<String, dynamic> json) => SBlocks(
+        the1: Scorer.fromJson(json["1"]),
+    );
+
+    Map<String, dynamic> toJson() => {
+        "1": the1.toJson(),
+    };
+}
+
+class Pl {
+    final int active;
+    final int? captain;
+    final Comp? comp;
+    final int eff1;
+    final int eff2;
+    final double eff3;
+    final double eff4;
+    final int eff5;
+    final int eff6;
+    final int eff7;
+    final String familyName;
+    final FamilyNameInitial familyNameInitial;
+    final String firstName;
+    final FirstNameInitial firstNameInitial;
+    final String internationalFamilyName;
+    final FamilyNameInitial internationalFamilyNameInitial;
+    final String internationalFirstName;
+    final FirstNameInitial internationalFirstNameInitial;
+    final String name;
+    final String playingPosition;
+    final int sAssists;
+    final int sBlocks;
+    final int sBlocksReceived;
+    final int sFieldGoalsAttempted;
+    final int sFieldGoalsMade;
+    final int sFieldGoalsPercentage;
+    final int sFoulsOn;
+    final int sFoulsPersonal;
+    final int sFreeThrowsAttempted;
+    final int sFreeThrowsMade;
+    final int sFreeThrowsPercentage;
+    final dynamic sMinutes;
+    final int sPlusMinusPoints;
+    final int sPoints;
+    final int sPointsFastBreak;
+    final int sPointsInThePaint;
+    final int sPointsSecondChance;
+    final int sReboundsDefensive;
+    final int sReboundsOffensive;
+    final int sReboundsTotal;
+    final int sSteals;
+    final int sThreePointersAttempted;
+    final int sThreePointersMade;
+    final int sThreePointersPercentage;
+    final int sTurnovers;
+    final int sTwoPointersAttempted;
+    final int sTwoPointersMade;
+    final int sTwoPointersPercentage;
+    final String shirtNumber;
+    final int starter;
+
+    Pl({
+        required this.active,
+        this.captain,
+        this.comp,
+        required this.eff1,
+        required this.eff2,
+        required this.eff3,
+        required this.eff4,
+        required this.eff5,
+        required this.eff6,
+        required this.eff7,
+        required this.familyName,
+        required this.familyNameInitial,
+        required this.firstName,
+        required this.firstNameInitial,
+        required this.internationalFamilyName,
+        required this.internationalFamilyNameInitial,
+        required this.internationalFirstName,
+        required this.internationalFirstNameInitial,
+        required this.name,
+        required this.playingPosition,
+        required this.sAssists,
+        required this.sBlocks,
+        required this.sBlocksReceived,
+        required this.sFieldGoalsAttempted,
+        required this.sFieldGoalsMade,
+        required this.sFieldGoalsPercentage,
+        required this.sFoulsOn,
+        required this.sFoulsPersonal,
+        required this.sFreeThrowsAttempted,
+        required this.sFreeThrowsMade,
+        required this.sFreeThrowsPercentage,
+        required this.sMinutes,
+        required this.sPlusMinusPoints,
+        required this.sPoints,
+        required this.sPointsFastBreak,
+        required this.sPointsInThePaint,
+        required this.sPointsSecondChance,
+        required this.sReboundsDefensive,
+        required this.sReboundsOffensive,
+        required this.sReboundsTotal,
+        required this.sSteals,
+        required this.sThreePointersAttempted,
+        required this.sThreePointersMade,
+        required this.sThreePointersPercentage,
+        required this.sTurnovers,
+        required this.sTwoPointersAttempted,
+        required this.sTwoPointersMade,
+        required this.sTwoPointersPercentage,
+        required this.shirtNumber,
+        required this.starter,
+    });
+
+    factory Pl.fromJson(Map<String, dynamic> json) => Pl(
+        active: json["active"],
+        captain: json["captain"],
+        comp: json["comp"] == null ? null : Comp.fromJson(json["comp"]),
+        eff1: json["eff_1"],
+        eff2: json["eff_2"],
+        eff3: json["eff_3"]?.toDouble(),
+        eff4: json["eff_4"]?.toDouble(),
+        eff5: json["eff_5"],
+        eff6: json["eff_6"],
+        eff7: json["eff_7"],
+        familyName: json["familyName"],
+        familyNameInitial: familyNameInitialValues.map[json["familyNameInitial"]]!,
+        firstName: json["firstName"],
+        firstNameInitial: firstNameInitialValues.map[json["firstNameInitial"]]!,
+        internationalFamilyName: json["internationalFamilyName"],
+        internationalFamilyNameInitial: familyNameInitialValues.map[json["internationalFamilyNameInitial"]]!,
+        internationalFirstName: json["internationalFirstName"],
+        internationalFirstNameInitial: firstNameInitialValues.map[json["internationalFirstNameInitial"]]!,
+        name: json["name"],
+        playingPosition: json["playingPosition"],
+        sAssists: json["sAssists"],
+        sBlocks: json["sBlocks"],
+        sBlocksReceived: json["sBlocksReceived"],
+        sFieldGoalsAttempted: json["sFieldGoalsAttempted"],
+        sFieldGoalsMade: json["sFieldGoalsMade"],
+        sFieldGoalsPercentage: json["sFieldGoalsPercentage"],
+        sFoulsOn: json["sFoulsOn"],
+        sFoulsPersonal: json["sFoulsPersonal"],
+        sFreeThrowsAttempted: json["sFreeThrowsAttempted"],
+        sFreeThrowsMade: json["sFreeThrowsMade"],
+        sFreeThrowsPercentage: json["sFreeThrowsPercentage"],
+        sMinutes: json["sMinutes"],
+        sPlusMinusPoints: json["sPlusMinusPoints"],
+        sPoints: json["sPoints"],
+        sPointsFastBreak: json["sPointsFastBreak"],
+        sPointsInThePaint: json["sPointsInThePaint"],
+        sPointsSecondChance: json["sPointsSecondChance"],
+        sReboundsDefensive: json["sReboundsDefensive"],
+        sReboundsOffensive: json["sReboundsOffensive"],
+        sReboundsTotal: json["sReboundsTotal"],
+        sSteals: json["sSteals"],
+        sThreePointersAttempted: json["sThreePointersAttempted"],
+        sThreePointersMade: json["sThreePointersMade"],
+        sThreePointersPercentage: json["sThreePointersPercentage"],
+        sTurnovers: json["sTurnovers"],
+        sTwoPointersAttempted: json["sTwoPointersAttempted"],
+        sTwoPointersMade: json["sTwoPointersMade"],
+        sTwoPointersPercentage: json["sTwoPointersPercentage"],
+        shirtNumber: json["shirtNumber"],
+        starter: json["starter"],
+    );
+
+    Map<String, dynamic> toJson() => {
+        "active": active,
+        "captain": captain,
+        "comp": comp?.toJson(),
+        "eff_1": eff1,
+        "eff_2": eff2,
+        "eff_3": eff3,
+        "eff_4": eff4,
+        "eff_5": eff5,
+        "eff_6": eff6,
+        "eff_7": eff7,
+        "familyName": familyName,
+        "familyNameInitial": familyNameInitialValues.reverse[familyNameInitial],
+        "firstName": firstName,
+        "firstNameInitial": firstNameInitialValues.reverse[firstNameInitial],
+        "internationalFamilyName": internationalFamilyName,
+        "internationalFamilyNameInitial": familyNameInitialValues.reverse[internationalFamilyNameInitial],
+        "internationalFirstName": internationalFirstName,
+        "internationalFirstNameInitial": firstNameInitialValues.reverse[internationalFirstNameInitial],
+        "name": name,
+        "playingPosition": playingPosition,
+        "sAssists": sAssists,
+        "sBlocks": sBlocks,
+        "sBlocksReceived": sBlocksReceived,
+        "sFieldGoalsAttempted": sFieldGoalsAttempted,
+        "sFieldGoalsMade": sFieldGoalsMade,
+        "sFieldGoalsPercentage": sFieldGoalsPercentage,
+        "sFoulsOn": sFoulsOn,
+        "sFoulsPersonal": sFoulsPersonal,
+        "sFreeThrowsAttempted": sFreeThrowsAttempted,
+        "sFreeThrowsMade": sFreeThrowsMade,
+        "sFreeThrowsPercentage": sFreeThrowsPercentage,
+        "sMinutes": sMinutes,
+        "sPlusMinusPoints": sPlusMinusPoints,
+        "sPoints": sPoints,
+        "sPointsFastBreak": sPointsFastBreak,
+        "sPointsInThePaint": sPointsInThePaint,
+        "sPointsSecondChance": sPointsSecondChance,
+        "sReboundsDefensive": sReboundsDefensive,
+        "sReboundsOffensive": sReboundsOffensive,
+        "sReboundsTotal": sReboundsTotal,
+        "sSteals": sSteals,
+        "sThreePointersAttempted": sThreePointersAttempted,
+        "sThreePointersMade": sThreePointersMade,
+        "sThreePointersPercentage": sThreePointersPercentage,
+        "sTurnovers": sTurnovers,
+        "sTwoPointersAttempted": sTwoPointersAttempted,
+        "sTwoPointersMade": sTwoPointersMade,
+        "sTwoPointersPercentage": sTwoPointersPercentage,
+        "shirtNumber": shirtNumber,
+        "starter": starter,
+    };
+}
+
+class Comp {
+    final double sAssistsAverage;
+    final String sMinutesAverage;
+    final double sPointsAverage;
+    final double sReboundsTotalAverage;
+
+    Comp({
+        required this.sAssistsAverage,
+        required this.sMinutesAverage,
+        required this.sPointsAverage,
+        required this.sReboundsTotalAverage,
+    });
+
+    factory Comp.fromJson(Map<String, dynamic> json) => Comp(
+        sAssistsAverage: json["sAssistsAverage"]?.toDouble(),
+        sMinutesAverage: json["sMinutesAverage"],
+        sPointsAverage: json["sPointsAverage"]?.toDouble(),
+        sReboundsTotalAverage: json["sReboundsTotalAverage"]?.toDouble(),
+    );
+
+    Map<String, dynamic> toJson() => {
+        "sAssistsAverage": sAssistsAverage,
+        "sMinutesAverage": sMinutesAverage,
+        "sPointsAverage": sPointsAverage,
+        "sReboundsTotalAverage": sReboundsTotalAverage,
+    };
+}
+
+class Shot {
+    final ActionType actionType;
+    final int p;
+    final int per;
+    final PerType perType;
+    final String player;
+    final int pno;
+    final int r;
+    final String shirtNumber;
+    final SubType subType;
+    final int tno;
+    final int x;
+    final int y;
+
+    Shot({
+        required this.actionType,
+        required this.p,
+        required this.per,
+        required this.perType,
+        required this.player,
+        required this.pno,
+        required this.r,
+        required this.shirtNumber,
+        required this.subType,
+        required this.tno,
+        required this.x,
+        required this.y,
+    });
+
+    factory Shot.fromJson(Map<String, dynamic> json) => Shot(
+        actionType: actionTypeValues.map[json["actionType"]]!,
+        p: json["p"],
+        per: json["per"],
+        perType: perTypeValues.map[json["perType"]]!,
+        player: json["player"],
+        pno: json["pno"],
+        r: json["r"],
+        shirtNumber: json["shirtNumber"],
+        subType: subTypeValues.map[json["subType"]]!,
+        tno: json["tno"],
+        x: json["x"],
+        y: json["y"],
+    );
+
+    Map<String, dynamic> toJson() => {
+        "actionType": actionTypeValues.reverse[actionType],
+        "p": p,
+        "per": per,
+        "perType": perTypeValues.reverse[perType],
+        "player": player,
+        "pno": pno,
+        "r": r,
+        "shirtNumber": shirtNumber,
+        "subType": subTypeValues.reverse[subType],
+        "tno": tno,
+        "x": x,
+        "y": y,
+    };
+}
+
+enum SubType {
+    JUMPSHOT,
+    LAYUP,
+    DUNK
+}
+
+final subTypeValues = EnumValues({
+    "jumpshot": SubType.JUMPSHOT,
+    "layup": SubType.LAYUP,
+    "dunk": SubType.DUNK
+});
+
+class Totallds {
+    final Map<String, Scorer> sAssists;
+    final Map<String, Scorer> sBlocks;
+    final Map<String, Scorer> sPoints;
+    final Map<String, Scorer> sReboundsTotal;
+    final Map<String, Scorer> sSteals;
+
+    Totallds({
+        required this.sAssists,
+        required this.sBlocks,
+        required this.sPoints,
+        required this.sReboundsTotal,
+        required this.sSteals,
+    });
+
+    factory Totallds.fromJson(Map<String, dynamic> json) => Totallds(
+        sAssists: Map.from(json["sAssists"]).map((k, v) => MapEntry<String, Scorer>(k, Scorer.fromJson(v))),
+        sBlocks: Map.from(json["sBlocks"]).map((k, v) => MapEntry<String, Scorer>(k, Scorer.fromJson(v))),
+        sPoints: Map.from(json["sPoints"]).map((k, v) => MapEntry<String, Scorer>(k, Scorer.fromJson(v))),
+        sReboundsTotal: Map.from(json["sReboundsTotal"]).map((k, v) => MapEntry<String, Scorer>(k, Scorer.fromJson(v))),
+        sSteals: Map.from(json["sSteals"]).map((k, v) => MapEntry<String, Scorer>(k, Scorer.fromJson(v))),
+    );
+
+    Map<String, dynamic> toJson() => {
+        "sAssists": Map.from(sAssists).map((k, v) => MapEntry<String, dynamic>(k, v.toJson())),
+        "sBlocks": Map.from(sBlocks).map((k, v) => MapEntry<String, dynamic>(k, v.toJson())),
+        "sPoints": Map.from(sPoints).map((k, v) => MapEntry<String, dynamic>(k, v.toJson())),
+        "sReboundsTotal": Map.from(sReboundsTotal).map((k, v) => MapEntry<String, dynamic>(k, v.toJson())),
+        "sSteals": Map.from(sSteals).map((k, v) => MapEntry<String, dynamic>(k, v.toJson())),
+    };
+}
+
+class EnumValues<T> {
+    Map<String, T> map;
+    late Map<T, String> reverseMap;
+
+    EnumValues(this.map);
+
+    Map<T, String> get reverse {
+            reverseMap = map.map((k, v) => MapEntry(v, k));
+            return reverseMap;
+    }
+}
diff --git a/head/dart/test/inputs/json/priority/recursive.json/default/TopLevel.dart b/head/dart/test/inputs/json/priority/recursive.json/default/TopLevel.dart
new file mode 100644
index 0000000..4baf627
--- /dev/null
+++ b/head/dart/test/inputs/json/priority/recursive.json/default/TopLevel.dart
@@ -0,0 +1,501 @@
+// To parse this JSON data, do
+//
+//     final topLevel = topLevelFromJson(jsonString);
+
+import 'dart:convert';
+
+TopLevel topLevelFromJson(String str) => TopLevel.fromJson(json.decode(str));
+
+String topLevelToJson(TopLevel data) => json.encode(data.toJson());
+
+class TopLevel {
+    final Category category;
+    final Details details;
+    final String match;
+    final int page;
+    final List<ProductElement> product;
+    final bool schk;
+    final int totallooseoffers;
+    final int totalpages;
+    final int totalresultsavailable;
+    final int totalresultsreturned;
+
+    TopLevel({
+        required this.category,
+        required this.details,
+        required this.match,
+        required this.page,
+        required this.product,
+        required this.schk,
+        required this.totallooseoffers,
+        required this.totalpages,
+        required this.totalresultsavailable,
+        required this.totalresultsreturned,
+    });
+
+    factory TopLevel.fromJson(Map<String, dynamic> json) => TopLevel(
+        category: Category.fromJson(json["category"]),
+        details: Details.fromJson(json["details"]),
+        match: json["match"],
+        page: json["page"],
+        product: List<ProductElement>.from(json["product"].map((x) => ProductElement.fromJson(x))),
+        schk: json["schk"],
+        totallooseoffers: json["totallooseoffers"],
+        totalpages: json["totalpages"],
+        totalresultsavailable: json["totalresultsavailable"],
+        totalresultsreturned: json["totalresultsreturned"],
+    );
+
+    Map<String, dynamic> toJson() => {
+        "category": category.toJson(),
+        "details": details.toJson(),
+        "match": match,
+        "page": page,
+        "product": List<dynamic>.from(product.map((x) => x.toJson())),
+        "schk": schk,
+        "totallooseoffers": totallooseoffers,
+        "totalpages": totalpages,
+        "totalresultsavailable": totalresultsavailable,
+        "totalresultsreturned": totalresultsreturned,
+    };
+}
+
+class Category {
+    final bool concatenatecategoryname;
+    final bool hasoffer;
+    final int id;
+    final bool isfinal;
+    final List<LinkElement> links;
+    final String name;
+    final int parentcategoryid;
+    final CategoryThumbnail thumbnail;
+
+    Category({
+        required this.concatenatecategoryname,
+        required this.hasoffer,
+        required this.id,
+        required this.isfinal,
+        required this.links,
+        required this.name,
+        required this.parentcategoryid,
+        required this.thumbnail,
+    });
+
+    factory Category.fromJson(Map<String, dynamic> json) => Category(
+        concatenatecategoryname: json["concatenatecategoryname"],
+        hasoffer: json["hasoffer"],
+        id: json["id"],
+        isfinal: json["isfinal"],
+        links: List<LinkElement>.from(json["links"].map((x) => LinkElement.fromJson(x))),
+        name: json["name"],
+        parentcategoryid: json["parentcategoryid"],
+        thumbnail: CategoryThumbnail.fromJson(json["thumbnail"]),
+    );
+
+    Map<String, dynamic> toJson() => {
+        "concatenatecategoryname": concatenatecategoryname,
+        "hasoffer": hasoffer,
+        "id": id,
+        "isfinal": isfinal,
+        "links": List<dynamic>.from(links.map((x) => x.toJson())),
+        "name": name,
+        "parentcategoryid": parentcategoryid,
+        "thumbnail": thumbnail.toJson(),
+    };
+}
+
+class LinkElement {
+    final LinkLink link;
+
+    LinkElement({
+        required this.link,
+    });
+
+    factory LinkElement.fromJson(Map<String, dynamic> json) => LinkElement(
+        link: LinkLink.fromJson(json["link"]),
+    );
+
+    Map<String, dynamic> toJson() => {
+        "link": link.toJson(),
+    };
+}
+
+class LinkLink {
+    final String type;
+    final String url;
+
+    LinkLink({
+        required this.type,
+        required this.url,
+    });
+
+    factory LinkLink.fromJson(Map<String, dynamic> json) => LinkLink(
+        type: json["type"],
+        url: json["url"],
+    );
+
+    Map<String, dynamic> toJson() => {
+        "type": type,
+        "url": url,
+    };
+}
+
+class CategoryThumbnail {
+    final String url;
+
+    CategoryThumbnail({
+        required this.url,
+    });
+
+    factory CategoryThumbnail.fromJson(Map<String, dynamic> json) => CategoryThumbnail(
+        url: json["url"],
+    );
+
+    Map<String, dynamic> toJson() => {
+        "url": url,
+    };
+}
+
+class Details {
+    final String applicationid;
+    final String applicationversion;
+    final int code;
+    final Date date;
+    final int elapsedtime;
+    final String message;
+    final String status;
+
+    Details({
+        required this.applicationid,
+        required this.applicationversion,
+        required this.code,
+        required this.date,
+        required this.elapsedtime,
+        required this.message,
+        required this.status,
+    });
+
+    factory Details.fromJson(Map<String, dynamic> json) => Details(
+        applicationid: json["applicationid"],
+        applicationversion: json["applicationversion"],
+        code: json["code"],
+        date: Date.fromJson(json["date"]),
+        elapsedtime: json["elapsedtime"],
+        message: json["message"],
+        status: json["status"],
+    );
+
+    Map<String, dynamic> toJson() => {
+        "applicationid": applicationid,
+        "applicationversion": applicationversion,
+        "code": code,
+        "date": date.toJson(),
+        "elapsedtime": elapsedtime,
+        "message": message,
+        "status": status,
+    };
+}
+
+class Date {
+    final int day;
+    final Eonandyear eonandyear;
+    final int hour;
+    final int millisecond;
+    final int minute;
+    final int month;
+    final int second;
+    final int timezone;
+    final bool valid;
+    final Xmlschematype xmlschematype;
+    final int year;
+
+    Date({
+        required this.day,
+        required this.eonandyear,
+        required this.hour,
+        required this.millisecond,
+        required this.minute,
+        required this.month,
+        required this.second,
+        required this.timezone,
+        required this.valid,
+        required this.xmlschematype,
+        required this.year,
+    });
+
+    factory Date.fromJson(Map<String, dynamic> json) => Date(
+        day: json["day"],
+        eonandyear: Eonandyear.fromJson(json["eonandyear"]),
+        hour: json["hour"],
+        millisecond: json["millisecond"],
+        minute: json["minute"],
+        month: json["month"],
+        second: json["second"],
+        timezone: json["timezone"],
+        valid: json["valid"],
+        xmlschematype: Xmlschematype.fromJson(json["xmlschematype"]),
+        year: json["year"],
+    );
+
+    Map<String, dynamic> toJson() => {
+        "day": day,
+        "eonandyear": eonandyear.toJson(),
+        "hour": hour,
+        "millisecond": millisecond,
+        "minute": minute,
+        "month": month,
+        "second": second,
+        "timezone": timezone,
+        "valid": valid,
+        "xmlschematype": xmlschematype.toJson(),
+        "year": year,
+    };
+}
+
+class Eonandyear {
+    final int lowestsetbit;
+
+    Eonandyear({
+        required this.lowestsetbit,
+    });
+
+    factory Eonandyear.fromJson(Map<String, dynamic> json) => Eonandyear(
+        lowestsetbit: json["lowestsetbit"],
+    );
+
+    Map<String, dynamic> toJson() => {
+        "lowestsetbit": lowestsetbit,
+    };
+}
+
+class Xmlschematype {
+    final String localpart;
+    final String namespaceuri;
+    final String prefix;
+
+    Xmlschematype({
+        required this.localpart,
+        required this.namespaceuri,
+        required this.prefix,
+    });
+
+    factory Xmlschematype.fromJson(Map<String, dynamic> json) => Xmlschematype(
+        localpart: json["localpart"],
+        namespaceuri: json["namespaceuri"],
+        prefix: json["prefix"],
+    );
+
+    Map<String, dynamic> toJson() => {
+        "localpart": localpart,
+        "namespaceuri": namespaceuri,
+        "prefix": prefix,
+    };
+}
+
+class ProductElement {
+    final ProductProduct product;
+
+    ProductElement({
+        required this.product,
+    });
+
+    factory ProductElement.fromJson(Map<String, dynamic> json) => ProductElement(
+        product: ProductProduct.fromJson(json["product"]),
+    );
+
+    Map<String, dynamic> toJson() => {
+        "product": product.toJson(),
+    };
+}
+
+class ProductProduct {
+    final int categoryid;
+    final Currency currency;
+    final bool eco;
+    final bool fulldescription;
+    final bool hasmetasearch;
+    final int id;
+    final List<LinkElement> links;
+    final int numoffers;
+    final String pricemax;
+    final String pricemin;
+    final String productname;
+    final int quantity;
+    final Rating rating;
+    final Specification specification;
+    final FormatsClass thumbnail;
+    final int totalsellers;
+
+    ProductProduct({
+        required this.categoryid,
+        required this.currency,
+        required this.eco,
+        required this.fulldescription,
+        required this.hasmetasearch,
+        required this.id,
+        required this.links,
+        required this.numoffers,
+        required this.pricemax,
+        required this.pricemin,
+        required this.productname,
+        required this.quantity,
+        required this.rating,
+        required this.specification,
+        required this.thumbnail,
+        required this.totalsellers,
+    });
+
+    factory ProductProduct.fromJson(Map<String, dynamic> json) => ProductProduct(
+        categoryid: json["categoryid"],
+        currency: Currency.fromJson(json["currency"]),
+        eco: json["eco"],
+        fulldescription: json["fulldescription"],
+        hasmetasearch: json["hasmetasearch"],
+        id: json["id"],
+        links: List<LinkElement>.from(json["links"].map((x) => LinkElement.fromJson(x))),
+        numoffers: json["numoffers"],
+        pricemax: json["pricemax"],
+        pricemin: json["pricemin"],
+        productname: json["productname"],
+        quantity: json["quantity"],
+        rating: Rating.fromJson(json["rating"]),
+        specification: Specification.fromJson(json["specification"]),
+        thumbnail: FormatsClass.fromJson(json["thumbnail"]),
+        totalsellers: json["totalsellers"],
+    );
+
+    Map<String, dynamic> toJson() => {
+        "categoryid": categoryid,
+        "currency": currency.toJson(),
+        "eco": eco,
+        "fulldescription": fulldescription,
+        "hasmetasearch": hasmetasearch,
+        "id": id,
+        "links": List<dynamic>.from(links.map((x) => x.toJson())),
+        "numoffers": numoffers,
+        "pricemax": pricemax,
+        "pricemin": pricemin,
+        "productname": productname,
+        "quantity": quantity,
+        "rating": rating.toJson(),
+        "specification": specification.toJson(),
+        "thumbnail": thumbnail.toJson(),
+        "totalsellers": totalsellers,
+    };
+}
+
+class Currency {
+    final String abbreviation;
+
+    Currency({
+        required this.abbreviation,
+    });
+
+    factory Currency.fromJson(Map<String, dynamic> json) => Currency(
+        abbreviation: json["abbreviation"],
+    );
+
+    Map<String, dynamic> toJson() => {
+        "abbreviation": abbreviation,
+    };
+}
+
+class Rating {
+    final Useraveragerating useraveragerating;
+
+    Rating({
+        required this.useraveragerating,
+    });
+
+    factory Rating.fromJson(Map<String, dynamic> json) => Rating(
+        useraveragerating: Useraveragerating.fromJson(json["useraveragerating"]),
+    );
+
+    Map<String, dynamic> toJson() => {
+        "useraveragerating": useraveragerating.toJson(),
+    };
+}
+
+class Useraveragerating {
+    final List<LinkElement> links;
+    final int numcomments;
+    final String rating;
+
+    Useraveragerating({
+        required this.links,
+        required this.numcomments,
+        required this.rating,
+    });
+
+    factory Useraveragerating.fromJson(Map<String, dynamic> json) => Useraveragerating(
+        links: List<LinkElement>.from(json["links"].map((x) => LinkElement.fromJson(x))),
+        numcomments: json["numcomments"],
+        rating: json["rating"],
+    );
+
+    Map<String, dynamic> toJson() => {
+        "links": List<dynamic>.from(links.map((x) => x.toJson())),
+        "numcomments": numcomments,
+        "rating": rating,
+    };
+}
+
+class Specification {
+    final List<LinkElement> links;
+
+    Specification({
+        required this.links,
+    });
+
+    factory Specification.fromJson(Map<String, dynamic> json) => Specification(
+        links: List<LinkElement>.from(json["links"].map((x) => LinkElement.fromJson(x))),
+    );
+
+    Map<String, dynamic> toJson() => {
+        "links": List<dynamic>.from(links.map((x) => x.toJson())),
+    };
+}
+
+class Format {
+    final FormatsClass formats;
+
+    Format({
+        required this.formats,
+    });
+
+    factory Format.fromJson(Map<String, dynamic> json) => Format(
+        formats: FormatsClass.fromJson(json["formats"]),
+    );
+
+    Map<String, dynamic> toJson() => {
+        "formats": formats.toJson(),
+    };
+}
+
+class FormatsClass {
+    final List<Format>? formats;
+    final int height;
+    final String url;
+    final int width;
+
+    FormatsClass({
+        this.formats,
+        required this.height,
+        required this.url,
+        required this.width,
+    });
+
+    factory FormatsClass.fromJson(Map<String, dynamic> json) => FormatsClass(
+        formats: json["formats"] == null ? null : List<Format>.from(json["formats"]!.map((x) => Format.fromJson(x))),
+        height: json["height"],
+        url: json["url"],
+        width: json["width"],
+    );
+
+    Map<String, dynamic> toJson() => {
+        "formats": formats == null ? null : List<dynamic>.from(formats!.map((x) => x.toJson())),
+        "height": height,
+        "url": url,
+        "width": width,
+    };
+}
diff --git a/head/dart/test/inputs/json/samples/github-events.json/default/TopLevel.dart b/head/dart/test/inputs/json/samples/github-events.json/default/TopLevel.dart
new file mode 100644
index 0000000..e8eb5a9
--- /dev/null
+++ b/head/dart/test/inputs/json/samples/github-events.json/default/TopLevel.dart
@@ -0,0 +1,1175 @@
+// To parse this JSON data, do
+//
+//     final topLevel = topLevelFromJson(jsonString);
+
+import 'dart:convert';
+
+List<TopLevel> topLevelFromJson(String str) => List<TopLevel>.from(json.decode(str).map((x) => TopLevel.fromJson(x)));
+
+String topLevelToJson(List<TopLevel> data) => json.encode(List<dynamic>.from(data.map((x) => x.toJson())));
+
+class TopLevel {
+    final Actor actor;
+    final DateTime createdAt;
+    final String id;
+    final Actor? org;
+    final Payload payload;
+    final bool public;
+    final TopLevelRepo repo;
+    final String type;
+
+    TopLevel({
+        required this.actor,
+        required this.createdAt,
+        required this.id,
+        this.org,
+        required this.payload,
+        required this.public,
+        required this.repo,
+        required this.type,
+    });
+
+    factory TopLevel.fromJson(Map<String, dynamic> json) => TopLevel(
+        actor: Actor.fromJson(json["actor"]),
+        createdAt: DateTime.parse(json["created_at"]),
+        id: json["id"],
+        org: json["org"] == null ? null : Actor.fromJson(json["org"]),
+        payload: Payload.fromJson(json["payload"]),
+        public: json["public"],
+        repo: TopLevelRepo.fromJson(json["repo"]),
+        type: json["type"],
+    );
+
+    Map<String, dynamic> toJson() => {
+        "actor": actor.toJson(),
+        "created_at": createdAt.toIso8601String(),
+        "id": id,
+        "org": org?.toJson(),
+        "payload": payload.toJson(),
+        "public": public,
+        "repo": repo.toJson(),
+        "type": type,
+    };
+}
+
+class Actor {
+    final String avatarUrl;
+    final String? displayLogin;
+    final String gravatarId;
+    final int id;
+    final String login;
+    final String url;
+
+    Actor({
+        required this.avatarUrl,
+        this.displayLogin,
+        required this.gravatarId,
+        required this.id,
+        required this.login,
+        required this.url,
+    });
+
+    factory Actor.fromJson(Map<String, dynamic> json) => Actor(
+        avatarUrl: json["avatar_url"],
+        displayLogin: json["display_login"],
+        gravatarId: json["gravatar_id"],
+        id: json["id"],
+        login: json["login"],
+        url: json["url"],
+    );
+
+    Map<String, dynamic> toJson() => {
+        "avatar_url": avatarUrl,
+        "display_login": displayLogin,
+        "gravatar_id": gravatarId,
+        "id": id,
+        "login": login,
+        "url": url,
+    };
+}
+
+class Payload {
+    final String? action;
+    final String? before;
+    final Comment? comment;
+    final List<Commit>? commits;
+    final String? description;
+    final int? distinctSize;
+    final String? head;
+    final Issue? issue;
+    final String? masterBranch;
+    final int? number;
+    final PayloadPullRequest? pullRequest;
+    final int? pushId;
+    final String? pusherType;
+    final String? ref;
+    final String? refType;
+    final int? size;
+
+    Payload({
+        this.action,
+        this.before,
+        this.comment,
+        this.commits,
+        this.description,
+        this.distinctSize,
+        this.head,
+        this.issue,
+        this.masterBranch,
+        this.number,
+        this.pullRequest,
+        this.pushId,
+        this.pusherType,
+        this.ref,
+        this.refType,
+        this.size,
+    });
+
+    factory Payload.fromJson(Map<String, dynamic> json) => Payload(
+        action: json["action"],
+        before: json["before"],
+        comment: json["comment"] == null ? null : Comment.fromJson(json["comment"]),
+        commits: json["commits"] == null ? null : List<Commit>.from(json["commits"]!.map((x) => Commit.fromJson(x))),
+        description: json["description"],
+        distinctSize: json["distinct_size"],
+        head: json["head"],
+        issue: json["issue"] == null ? null : Issue.fromJson(json["issue"]),
+        masterBranch: json["master_branch"],
+        number: json["number"],
+        pullRequest: json["pull_request"] == null ? null : PayloadPullRequest.fromJson(json["pull_request"]),
+        pushId: json["push_id"],
+        pusherType: json["pusher_type"],
+        ref: json["ref"],
+        refType: json["ref_type"],
+        size: json["size"],
+    );
+
+    Map<String, dynamic> toJson() => {
+        "action": action,
+        "before": before,
+        "comment": comment?.toJson(),
+        "commits": commits == null ? null : List<dynamic>.from(commits!.map((x) => x.toJson())),
+        "description": description,
+        "distinct_size": distinctSize,
+        "head": head,
+        "issue": issue?.toJson(),
+        "master_branch": masterBranch,
+        "number": number,
+        "pull_request": pullRequest?.toJson(),
+        "push_id": pushId,
+        "pusher_type": pusherType,
+        "ref": ref,
+        "ref_type": refType,
+        "size": size,
+    };
+}
+
+class Comment {
+    final String body;
+    final DateTime createdAt;
+    final String htmlUrl;
+    final int id;
+    final String issueUrl;
+    final DateTime updatedAt;
+    final String url;
+    final User user;
+
+    Comment({
+        required this.body,
+        required this.createdAt,
+        required this.htmlUrl,
+        required this.id,
+        required this.issueUrl,
+        required this.updatedAt,
+        required this.url,
+        required this.user,
+    });
+
+    factory Comment.fromJson(Map<String, dynamic> json) => Comment(
+        body: json["body"],
+        createdAt: DateTime.parse(json["created_at"]),
+        htmlUrl: json["html_url"],
+        id: json["id"],
+        issueUrl: json["issue_url"],
+        updatedAt: DateTime.parse(json["updated_at"]),
+        url: json["url"],
+        user: User.fromJson(json["user"]),
+    );
+
+    Map<String, dynamic> toJson() => {
+        "body": body,
+        "created_at": createdAt.toIso8601String(),
+        "html_url": htmlUrl,
+        "id": id,
+        "issue_url": issueUrl,
+        "updated_at": updatedAt.toIso8601String(),
+        "url": url,
+        "user": user.toJson(),
+    };
+}
+
+class User {
+    final String avatarUrl;
+    final String eventsUrl;
+    final String followersUrl;
+    final String followingUrl;
+    final String gistsUrl;
+    final String gravatarId;
+    final String htmlUrl;
+    final int id;
+    final String login;
+    final String organizationsUrl;
+    final String receivedEventsUrl;
+    final String reposUrl;
+    final bool siteAdmin;
+    final String starredUrl;
+    final String subscriptionsUrl;
+    final Type type;
+    final String url;
+
+    User({
+        required this.avatarUrl,
+        required this.eventsUrl,
+        required this.followersUrl,
+        required this.followingUrl,
+        required this.gistsUrl,
+        required this.gravatarId,
+        required this.htmlUrl,
+        required this.id,
+        required this.login,
+        required this.organizationsUrl,
+        required this.receivedEventsUrl,
+        required this.reposUrl,
+        required this.siteAdmin,
+        required this.starredUrl,
+        required this.subscriptionsUrl,
+        required this.type,
+        required this.url,
+    });
+
+    factory User.fromJson(Map<String, dynamic> json) => User(
+        avatarUrl: json["avatar_url"],
+        eventsUrl: json["events_url"],
+        followersUrl: json["followers_url"],
+        followingUrl: json["following_url"],
+        gistsUrl: json["gists_url"],
+        gravatarId: json["gravatar_id"],
+        htmlUrl: json["html_url"],
+        id: json["id"],
+        login: json["login"],
+        organizationsUrl: json["organizations_url"],
+        receivedEventsUrl: json["received_events_url"],
+        reposUrl: json["repos_url"],
+        siteAdmin: json["site_admin"],
+        starredUrl: json["starred_url"],
+        subscriptionsUrl: json["subscriptions_url"],
+        type: typeValues.map[json["type"]]!,
+        url: json["url"],
+    );
+
+    Map<String, dynamic> toJson() => {
+        "avatar_url": avatarUrl,
+        "events_url": eventsUrl,
+        "followers_url": followersUrl,
+        "following_url": followingUrl,
+        "gists_url": gistsUrl,
+        "gravatar_id": gravatarId,
+        "html_url": htmlUrl,
+        "id": id,
+        "login": login,
+        "organizations_url": organizationsUrl,
+        "received_events_url": receivedEventsUrl,
+        "repos_url": reposUrl,
+        "site_admin": siteAdmin,
+        "starred_url": starredUrl,
+        "subscriptions_url": subscriptionsUrl,
+        "type": typeValues.reverse[type],
+        "url": url,
+    };
+}
+
+enum Type {
+    USER,
+    ORGANIZATION
+}
+
+final typeValues = EnumValues({
+    "User": Type.USER,
+    "Organization": Type.ORGANIZATION
+});
+
+class Commit {
+    final Author author;
+    final bool distinct;
+    final String message;
+    final String sha;
+    final String url;
+
+    Commit({
+        required this.author,
+        required this.distinct,
+        required this.message,
+        required this.sha,
+        required this.url,
+    });
+
+    factory Commit.fromJson(Map<String, dynamic> json) => Commit(
+        author: Author.fromJson(json["author"]),
+        distinct: json["distinct"],
+        message: json["message"],
+        sha: json["sha"],
+        url: json["url"],
+    );
+
+    Map<String, dynamic> toJson() => {
+        "author": author.toJson(),
+        "distinct": distinct,
+        "message": message,
+        "sha": sha,
+        "url": url,
+    };
+}
+
+class Author {
+    final String email;
+    final String name;
+
+    Author({
+        required this.email,
+        required this.name,
+    });
+
+    factory Author.fromJson(Map<String, dynamic> json) => Author(
+        email: json["email"],
+        name: json["name"],
+    );
+
+    Map<String, dynamic> toJson() => {
+        "email": email,
+        "name": name,
+    };
+}
+
+class Issue {
+    final dynamic assignee;
+    final List<dynamic> assignees;
+    final String body;
+    final DateTime? closedAt;
+    final int comments;
+    final String commentsUrl;
+    final DateTime createdAt;
+    final String eventsUrl;
+    final String htmlUrl;
+    final int id;
+    final List<Label> labels;
+    final String labelsUrl;
+    final bool locked;
+    final Milestone? milestone;
+    final int number;
+    final IssuePullRequest? pullRequest;
+    final String repositoryUrl;
+    final String state;
+    final String title;
+    final DateTime updatedAt;
+    final String url;
+    final User user;
+
+    Issue({
+        required this.assignee,
+        required this.assignees,
+        required this.body,
+        required this.closedAt,
+        required this.comments,
+        required this.commentsUrl,
+        required this.createdAt,
+        required this.eventsUrl,
+        required this.htmlUrl,
+        required this.id,
+        required this.labels,
+        required this.labelsUrl,
+        required this.locked,
+        required this.milestone,
+        required this.number,
+        this.pullRequest,
+        required this.repositoryUrl,
+        required this.state,
+        required this.title,
+        required this.updatedAt,
+        required this.url,
+        required this.user,
+    });
+
+    factory Issue.fromJson(Map<String, dynamic> json) => Issue(
+        assignee: json["assignee"],
+        assignees: List<dynamic>.from(json["assignees"].map((x) => x)),
+        body: json["body"],
+        closedAt: json["closed_at"] == null ? null : DateTime.parse(json["closed_at"]),
+        comments: json["comments"],
+        commentsUrl: json["comments_url"],
+        createdAt: DateTime.parse(json["created_at"]),
+        eventsUrl: json["events_url"],
+        htmlUrl: json["html_url"],
+        id: json["id"],
+        labels: List<Label>.from(json["labels"].map((x) => Label.fromJson(x))),
+        labelsUrl: json["labels_url"],
+        locked: json["locked"],
+        milestone: json["milestone"] == null ? null : Milestone.fromJson(json["milestone"]),
+        number: json["number"],
+        pullRequest: json["pull_request"] == null ? null : IssuePullRequest.fromJson(json["pull_request"]),
+        repositoryUrl: json["repository_url"],
+        state: json["state"],
+        title: json["title"],
+        updatedAt: DateTime.parse(json["updated_at"]),
+        url: json["url"],
+        user: User.fromJson(json["user"]),
+    );
+
+    Map<String, dynamic> toJson() => {
+        "assignee": assignee,
+        "assignees": List<dynamic>.from(assignees.map((x) => x)),
+        "body": body,
+        "closed_at": closedAt?.toIso8601String(),
+        "comments": comments,
+        "comments_url": commentsUrl,
+        "created_at": createdAt.toIso8601String(),
+        "events_url": eventsUrl,
+        "html_url": htmlUrl,
+        "id": id,
+        "labels": List<dynamic>.from(labels.map((x) => x.toJson())),
+        "labels_url": labelsUrl,
+        "locked": locked,
+        "milestone": milestone?.toJson(),
+        "number": number,
+        "pull_request": pullRequest?.toJson(),
+        "repository_url": repositoryUrl,
+        "state": state,
+        "title": title,
+        "updated_at": updatedAt.toIso8601String(),
+        "url": url,
+        "user": user.toJson(),
+    };
+}
+
+class Label {
+    final String color;
+    final int id;
+    final bool labelDefault;
+    final String name;
+    final String url;
+
+    Label({
+        required this.color,
+        required this.id,
+        required this.labelDefault,
+        required this.name,
+        required this.url,
+    });
+
+    factory Label.fromJson(Map<String, dynamic> json) => Label(
+        color: json["color"],
+        id: json["id"],
+        labelDefault: json["default"],
+        name: json["name"],
+        url: json["url"],
+    );
+
+    Map<String, dynamic> toJson() => {
+        "color": color,
+        "id": id,
+        "default": labelDefault,
+        "name": name,
+        "url": url,
+    };
+}
+
+class Milestone {
+    final dynamic closedAt;
+    final int closedIssues;
+    final DateTime createdAt;
+    final User creator;
+    final String description;
+    final DateTime? dueOn;
+    final String htmlUrl;
+    final int id;
+    final String labelsUrl;
+    final int number;
+    final int openIssues;
+    final String state;
+    final String title;
+    final DateTime updatedAt;
+    final String url;
+
+    Milestone({
+        required this.closedAt,
+        required this.closedIssues,
+        required this.createdAt,
+        required this.creator,
+        required this.description,
+        required this.dueOn,
+        required this.htmlUrl,
+        required this.id,
+        required this.labelsUrl,
+        required this.number,
+        required this.openIssues,
+        required this.state,
+        required this.title,
+        required this.updatedAt,
+        required this.url,
+    });
+
+    factory Milestone.fromJson(Map<String, dynamic> json) => Milestone(
+        closedAt: json["closed_at"],
+        closedIssues: json["closed_issues"],
+        createdAt: DateTime.parse(json["created_at"]),
+        creator: User.fromJson(json["creator"]),
+        description: json["description"],
+        dueOn: json["due_on"] == null ? null : DateTime.parse(json["due_on"]),
+        htmlUrl: json["html_url"],
+        id: json["id"],
+        labelsUrl: json["labels_url"],
+        number: json["number"],
+        openIssues: json["open_issues"],
+        state: json["state"],
+        title: json["title"],
+        updatedAt: DateTime.parse(json["updated_at"]),
+        url: json["url"],
+    );
+
+    Map<String, dynamic> toJson() => {
+        "closed_at": closedAt,
+        "closed_issues": closedIssues,
+        "created_at": createdAt.toIso8601String(),
+        "creator": creator.toJson(),
+        "description": description,
+        "due_on": dueOn?.toIso8601String(),
+        "html_url": htmlUrl,
+        "id": id,
+        "labels_url": labelsUrl,
+        "number": number,
+        "open_issues": openIssues,
+        "state": state,
+        "title": title,
+        "updated_at": updatedAt.toIso8601String(),
+        "url": url,
+    };
+}
+
+class IssuePullRequest {
+    final String diffUrl;
+    final String htmlUrl;
+    final String patchUrl;
+    final String url;
+
+    IssuePullRequest({
+        required this.diffUrl,
+        required this.htmlUrl,
+        required this.patchUrl,
+        required this.url,
+    });
+
+    factory IssuePullRequest.fromJson(Map<String, dynamic> json) => IssuePullRequest(
+        diffUrl: json["diff_url"],
+        htmlUrl: json["html_url"],
+        patchUrl: json["patch_url"],
+        url: json["url"],
+    );
+
+    Map<String, dynamic> toJson() => {
+        "diff_url": diffUrl,
+        "html_url": htmlUrl,
+        "patch_url": patchUrl,
+        "url": url,
+    };
+}
+
+class PayloadPullRequest {
+    final int additions;
+    final dynamic assignee;
+    final List<dynamic> assignees;
+    final Base base;
+    final String body;
+    final int changedFiles;
+    final DateTime closedAt;
+    final int comments;
+    final String commentsUrl;
+    final int commits;
+    final String commitsUrl;
+    final DateTime createdAt;
+    final int deletions;
+    final String diffUrl;
+    final Base head;
+    final String htmlUrl;
+    final int id;
+    final String issueUrl;
+    final Links links;
+    final bool locked;
+    final bool maintainerCanModify;
+    final String mergeCommitSha;
+    final dynamic mergeable;
+    final String mergeableState;
+    final bool merged;
+    final DateTime mergedAt;
+    final User mergedBy;
+    final dynamic milestone;
+    final int number;
+    final String patchUrl;
+    final dynamic rebaseable;
+    final List<dynamic> requestedReviewers;
+    final String reviewCommentUrl;
+    final int reviewComments;
+    final String reviewCommentsUrl;
+    final String state;
+    final String statusesUrl;
+    final String title;
+    final DateTime updatedAt;
+    final String url;
+    final User user;
+
+    PayloadPullRequest({
+        required this.additions,
+        required this.assignee,
+        required this.assignees,
+        required this.base,
+        required this.body,
+        required this.changedFiles,
+        required this.closedAt,
+        required this.comments,
+        required this.commentsUrl,
+        required this.commits,
+        required this.commitsUrl,
+        required this.createdAt,
+        required this.deletions,
+        required this.diffUrl,
+        required this.head,
+        required this.htmlUrl,
+        required this.id,
+        required this.issueUrl,
+        required this.links,
+        required this.locked,
+        required this.maintainerCanModify,
+        required this.mergeCommitSha,
+        required this.mergeable,
+        required this.mergeableState,
+        required this.merged,
+        required this.mergedAt,
+        required this.mergedBy,
+        required this.milestone,
+        required this.number,
+        required this.patchUrl,
+        required this.rebaseable,
+        required this.requestedReviewers,
+        required this.reviewCommentUrl,
+        required this.reviewComments,
+        required this.reviewCommentsUrl,
+        required this.state,
+        required this.statusesUrl,
+        required this.title,
+        required this.updatedAt,
+        required this.url,
+        required this.user,
+    });
+
+    factory PayloadPullRequest.fromJson(Map<String, dynamic> json) => PayloadPullRequest(
+        additions: json["additions"],
+        assignee: json["assignee"],
+        assignees: List<dynamic>.from(json["assignees"].map((x) => x)),
+        base: Base.fromJson(json["base"]),
+        body: json["body"],
+        changedFiles: json["changed_files"],
+        closedAt: DateTime.parse(json["closed_at"]),
+        comments: json["comments"],
+        commentsUrl: json["comments_url"],
+        commits: json["commits"],
+        commitsUrl: json["commits_url"],
+        createdAt: DateTime.parse(json["created_at"]),
+        deletions: json["deletions"],
+        diffUrl: json["diff_url"],
+        head: Base.fromJson(json["head"]),
+        htmlUrl: json["html_url"],
+        id: json["id"],
+        issueUrl: json["issue_url"],
+        links: Links.fromJson(json["_links"]),
+        locked: json["locked"],
+        maintainerCanModify: json["maintainer_can_modify"],
+        mergeCommitSha: json["merge_commit_sha"],
+        mergeable: json["mergeable"],
+        mergeableState: json["mergeable_state"],
+        merged: json["merged"],
+        mergedAt: DateTime.parse(json["merged_at"]),
+        mergedBy: User.fromJson(json["merged_by"]),
+        milestone: json["milestone"],
+        number: json["number"],
+        patchUrl: json["patch_url"],
+        rebaseable: json["rebaseable"],
+        requestedReviewers: List<dynamic>.from(json["requested_reviewers"].map((x) => x)),
+        reviewCommentUrl: json["review_comment_url"],
+        reviewComments: json["review_comments"],
+        reviewCommentsUrl: json["review_comments_url"],
+        state: json["state"],
+        statusesUrl: json["statuses_url"],
+        title: json["title"],
+        updatedAt: DateTime.parse(json["updated_at"]),
+        url: json["url"],
+        user: User.fromJson(json["user"]),
+    );
+
+    Map<String, dynamic> toJson() => {
+        "additions": additions,
+        "assignee": assignee,
+        "assignees": List<dynamic>.from(assignees.map((x) => x)),
+        "base": base.toJson(),
+        "body": body,
+        "changed_files": changedFiles,
+        "closed_at": closedAt.toIso8601String(),
+        "comments": comments,
+        "comments_url": commentsUrl,
+        "commits": commits,
+        "commits_url": commitsUrl,
+        "created_at": createdAt.toIso8601String(),
+        "deletions": deletions,
+        "diff_url": diffUrl,
+        "head": head.toJson(),
+        "html_url": htmlUrl,
+        "id": id,
+        "issue_url": issueUrl,
+        "_links": links.toJson(),
+        "locked": locked,
+        "maintainer_can_modify": maintainerCanModify,
+        "merge_commit_sha": mergeCommitSha,
+        "mergeable": mergeable,
+        "mergeable_state": mergeableState,
+        "merged": merged,
+        "merged_at": mergedAt.toIso8601String(),
+        "merged_by": mergedBy.toJson(),
+        "milestone": milestone,
+        "number": number,
+        "patch_url": patchUrl,
+        "rebaseable": rebaseable,
+        "requested_reviewers": List<dynamic>.from(requestedReviewers.map((x) => x)),
+        "review_comment_url": reviewCommentUrl,
+        "review_comments": reviewComments,
+        "review_comments_url": reviewCommentsUrl,
+        "state": state,
+        "statuses_url": statusesUrl,
+        "title": title,
+        "updated_at": updatedAt.toIso8601String(),
+        "url": url,
+        "user": user.toJson(),
+    };
+}
+
+class Base {
+    final String label;
+    final String ref;
+    final BaseRepo repo;
+    final String sha;
+    final User user;
+
+    Base({
+        required this.label,
+        required this.ref,
+        required this.repo,
+        required this.sha,
+        required this.user,
+    });
+
+    factory Base.fromJson(Map<String, dynamic> json) => Base(
+        label: json["label"],
+        ref: json["ref"],
+        repo: BaseRepo.fromJson(json["repo"]),
+        sha: json["sha"],
+        user: User.fromJson(json["user"]),
+    );
+
+    Map<String, dynamic> toJson() => {
+        "label": label,
+        "ref": ref,
+        "repo": repo.toJson(),
+        "sha": sha,
+        "user": user.toJson(),
+    };
+}
+
+class BaseRepo {
+    final String archiveUrl;
+    final String assigneesUrl;
+    final String blobsUrl;
+    final String branchesUrl;
+    final String cloneUrl;
+    final String collaboratorsUrl;
+    final String commentsUrl;
+    final String commitsUrl;
+    final String compareUrl;
+    final String contentsUrl;
+    final String contributorsUrl;
+    final DateTime createdAt;
+    final String defaultBranch;
+    final String deploymentsUrl;
+    final String description;
+    final String downloadsUrl;
+    final String eventsUrl;
+    final bool fork;
+    final int forks;
+    final int forksCount;
+    final String forksUrl;
+    final String fullName;
+    final String gitCommitsUrl;
+    final String gitRefsUrl;
+    final String gitTagsUrl;
+    final String gitUrl;
+    final bool hasDownloads;
+    final bool hasIssues;
+    final bool hasPages;
+    final bool hasProjects;
+    final bool hasWiki;
+    final String homepage;
+    final String hooksUrl;
+    final String htmlUrl;
+    final int id;
+    final String issueCommentUrl;
+    final String issueEventsUrl;
+    final String issuesUrl;
+    final String keysUrl;
+    final String labelsUrl;
+    final String language;
+    final String languagesUrl;
+    final String mergesUrl;
+    final String milestonesUrl;
+    final dynamic mirrorUrl;
+    final String name;
+    final String notificationsUrl;
+    final int openIssues;
+    final int openIssuesCount;
+    final User owner;
+    final bool private;
+    final String pullsUrl;
+    final DateTime pushedAt;
+    final String releasesUrl;
+    final int size;
+    final String sshUrl;
+    final int stargazersCount;
+    final String stargazersUrl;
+    final String statusesUrl;
+    final String subscribersUrl;
+    final String subscriptionUrl;
+    final String svnUrl;
+    final String tagsUrl;
+    final String teamsUrl;
+    final String treesUrl;
+    final DateTime updatedAt;
+    final String url;
+    final int watchers;
+    final int watchersCount;
+
+    BaseRepo({
+        required this.archiveUrl,
+        required this.assigneesUrl,
+        required this.blobsUrl,
+        required this.branchesUrl,
+        required this.cloneUrl,
+        required this.collaboratorsUrl,
+        required this.commentsUrl,
+        required this.commitsUrl,
+        required this.compareUrl,
+        required this.contentsUrl,
+        required this.contributorsUrl,
+        required this.createdAt,
+        required this.defaultBranch,
+        required this.deploymentsUrl,
+        required this.description,
+        required this.downloadsUrl,
+        required this.eventsUrl,
+        required this.fork,
+        required this.forks,
+        required this.forksCount,
+        required this.forksUrl,
+        required this.fullName,
+        required this.gitCommitsUrl,
+        required this.gitRefsUrl,
+        required this.gitTagsUrl,
+        required this.gitUrl,
+        required this.hasDownloads,
+        required this.hasIssues,
+        required this.hasPages,
+        required this.hasProjects,
+        required this.hasWiki,
+        required this.homepage,
+        required this.hooksUrl,
+        required this.htmlUrl,
+        required this.id,
+        required this.issueCommentUrl,
+        required this.issueEventsUrl,
+        required this.issuesUrl,
+        required this.keysUrl,
+        required this.labelsUrl,
+        required this.language,
+        required this.languagesUrl,
+        required this.mergesUrl,
+        required this.milestonesUrl,
+        required this.mirrorUrl,
+        required this.name,
+        required this.notificationsUrl,
+        required this.openIssues,
+        required this.openIssuesCount,
+        required this.owner,
+        required this.private,
+        required this.pullsUrl,
+        required this.pushedAt,
+        required this.releasesUrl,
+        required this.size,
+        required this.sshUrl,
+        required this.stargazersCount,
+        required this.stargazersUrl,
+        required this.statusesUrl,
+        required this.subscribersUrl,
+        required this.subscriptionUrl,
+        required this.svnUrl,
+        required this.tagsUrl,
+        required this.teamsUrl,
+        required this.treesUrl,
+        required this.updatedAt,
+        required this.url,
+        required this.watchers,
+        required this.watchersCount,
+    });
+
+    factory BaseRepo.fromJson(Map<String, dynamic> json) => BaseRepo(
+        archiveUrl: json["archive_url"],
+        assigneesUrl: json["assignees_url"],
+        blobsUrl: json["blobs_url"],
+        branchesUrl: json["branches_url"],
+        cloneUrl: json["clone_url"],
+        collaboratorsUrl: json["collaborators_url"],
+        commentsUrl: json["comments_url"],
+        commitsUrl: json["commits_url"],
+        compareUrl: json["compare_url"],
+        contentsUrl: json["contents_url"],
+        contributorsUrl: json["contributors_url"],
+        createdAt: DateTime.parse(json["created_at"]),
+        defaultBranch: json["default_branch"],
+        deploymentsUrl: json["deployments_url"],
+        description: json["description"],
+        downloadsUrl: json["downloads_url"],
+        eventsUrl: json["events_url"],
+        fork: json["fork"],
+        forks: json["forks"],
+        forksCount: json["forks_count"],
+        forksUrl: json["forks_url"],
+        fullName: json["full_name"],
+        gitCommitsUrl: json["git_commits_url"],
+        gitRefsUrl: json["git_refs_url"],
+        gitTagsUrl: json["git_tags_url"],
+        gitUrl: json["git_url"],
+        hasDownloads: json["has_downloads"],
+        hasIssues: json["has_issues"],
+        hasPages: json["has_pages"],
+        hasProjects: json["has_projects"],
+        hasWiki: json["has_wiki"],
+        homepage: json["homepage"],
+        hooksUrl: json["hooks_url"],
+        htmlUrl: json["html_url"],
+        id: json["id"],
+        issueCommentUrl: json["issue_comment_url"],
+        issueEventsUrl: json["issue_events_url"],
+        issuesUrl: json["issues_url"],
+        keysUrl: json["keys_url"],
+        labelsUrl: json["labels_url"],
+        language: json["language"],
+        languagesUrl: json["languages_url"],
+        mergesUrl: json["merges_url"],
+        milestonesUrl: json["milestones_url"],
+        mirrorUrl: json["mirror_url"],
+        name: json["name"],
+        notificationsUrl: json["notifications_url"],
+        openIssues: json["open_issues"],
+        openIssuesCount: json["open_issues_count"],
+        owner: User.fromJson(json["owner"]),
+        private: json["private"],
+        pullsUrl: json["pulls_url"],
+        pushedAt: DateTime.parse(json["pushed_at"]),
+        releasesUrl: json["releases_url"],
+        size: json["size"],
+        sshUrl: json["ssh_url"],
+        stargazersCount: json["stargazers_count"],
+        stargazersUrl: json["stargazers_url"],
+        statusesUrl: json["statuses_url"],
+        subscribersUrl: json["subscribers_url"],
+        subscriptionUrl: json["subscription_url"],
+        svnUrl: json["svn_url"],
+        tagsUrl: json["tags_url"],
+        teamsUrl: json["teams_url"],
+        treesUrl: json["trees_url"],
+        updatedAt: DateTime.parse(json["updated_at"]),
+        url: json["url"],
+        watchers: json["watchers"],
+        watchersCount: json["watchers_count"],
+    );
+
+    Map<String, dynamic> toJson() => {
+        "archive_url": archiveUrl,
+        "assignees_url": assigneesUrl,
+        "blobs_url": blobsUrl,
+        "branches_url": branchesUrl,
+        "clone_url": cloneUrl,
+        "collaborators_url": collaboratorsUrl,
+        "comments_url": commentsUrl,
+        "commits_url": commitsUrl,
+        "compare_url": compareUrl,
+        "contents_url": contentsUrl,
+        "contributors_url": contributorsUrl,
+        "created_at": createdAt.toIso8601String(),
+        "default_branch": defaultBranch,
+        "deployments_url": deploymentsUrl,
+        "description": description,
+        "downloads_url": downloadsUrl,
+        "events_url": eventsUrl,
+        "fork": fork,
+        "forks": forks,
+        "forks_count": forksCount,
+        "forks_url": forksUrl,
+        "full_name": fullName,
+        "git_commits_url": gitCommitsUrl,
+        "git_refs_url": gitRefsUrl,
+        "git_tags_url": gitTagsUrl,
+        "git_url": gitUrl,
+        "has_downloads": hasDownloads,
+        "has_issues": hasIssues,
+        "has_pages": hasPages,
+        "has_projects": hasProjects,
+        "has_wiki": hasWiki,
+        "homepage": homepage,
+        "hooks_url": hooksUrl,
+        "html_url": htmlUrl,
+        "id": id,
+        "issue_comment_url": issueCommentUrl,
+        "issue_events_url": issueEventsUrl,
+        "issues_url": issuesUrl,
+        "keys_url": keysUrl,
+        "labels_url": labelsUrl,
+        "language": language,
+        "languages_url": languagesUrl,
+        "merges_url": mergesUrl,
+        "milestones_url": milestonesUrl,
+        "mirror_url": mirrorUrl,
+        "name": name,
+        "notifications_url": notificationsUrl,
+        "open_issues": openIssues,
+        "open_issues_count": openIssuesCount,
+        "owner": owner.toJson(),
+        "private": private,
+        "pulls_url": pullsUrl,
+        "pushed_at": pushedAt.toIso8601String(),
+        "releases_url": releasesUrl,
+        "size": size,
+        "ssh_url": sshUrl,
+        "stargazers_count": stargazersCount,
+        "stargazers_url": stargazersUrl,
+        "statuses_url": statusesUrl,
+        "subscribers_url": subscribersUrl,
+        "subscription_url": subscriptionUrl,
+        "svn_url": svnUrl,
+        "tags_url": tagsUrl,
+        "teams_url": teamsUrl,
+        "trees_url": treesUrl,
+        "updated_at": updatedAt.toIso8601String(),
+        "url": url,
+        "watchers": watchers,
+        "watchers_count": watchersCount,
+    };
+}
+
+class Links {
+    final Comments comments;
+    final Comments commits;
+    final Comments html;
+    final Comments issue;
+    final Comments reviewComment;
+    final Comments reviewComments;
+    final Comments self;
+    final Comments statuses;
+
+    Links({
+        required this.comments,
+        required this.commits,
+        required this.html,
+        required this.issue,
+        required this.reviewComment,
+        required this.reviewComments,
+        required this.self,
+        required this.statuses,
+    });
+
+    factory Links.fromJson(Map<String, dynamic> json) => Links(
+        comments: Comments.fromJson(json["comments"]),
+        commits: Comments.fromJson(json["commits"]),
+        html: Comments.fromJson(json["html"]),
+        issue: Comments.fromJson(json["issue"]),
+        reviewComment: Comments.fromJson(json["review_comment"]),
+        reviewComments: Comments.fromJson(json["review_comments"]),
+        self: Comments.fromJson(json["self"]),
+        statuses: Comments.fromJson(json["statuses"]),
+    );
+
+    Map<String, dynamic> toJson() => {
+        "comments": comments.toJson(),
+        "commits": commits.toJson(),
+        "html": html.toJson(),
+        "issue": issue.toJson(),
+        "review_comment": reviewComment.toJson(),
+        "review_comments": reviewComments.toJson(),
+        "self": self.toJson(),
+        "statuses": statuses.toJson(),
+    };
+}
+
+class Comments {
+    final String href;
+
+    Comments({
+        required this.href,
+    });
+
+    factory Comments.fromJson(Map<String, dynamic> json) => Comments(
+        href: json["href"],
+    );
+
+    Map<String, dynamic> toJson() => {
+        "href": href,
+    };
+}
+
+class TopLevelRepo {
+    final int id;
+    final String name;
+    final String url;
+
+    TopLevelRepo({
+        required this.id,
+        required this.name,
+        required this.url,
+    });
+
+    factory TopLevelRepo.fromJson(Map<String, dynamic> json) => TopLevelRepo(
+        id: json["id"],
+        name: json["name"],
+        url: json["url"],
+    );
+
+    Map<String, dynamic> toJson() => {
+        "id": id,
+        "name": name,
+        "url": url,
+    };
+}
+
+class EnumValues<T> {
+    Map<String, T> map;
+    late Map<T, String> reverseMap;
+
+    EnumValues(this.map);
+
+    Map<T, String> get reverse {
+            reverseMap = map.map((k, v) => MapEntry(v, k));
+            return reverseMap;
+    }
+}
diff --git a/head/dart/test/inputs/json/samples/pokedex.json/default/TopLevel.dart b/head/dart/test/inputs/json/samples/pokedex.json/default/TopLevel.dart
new file mode 100644
index 0000000..758ba3f
--- /dev/null
+++ b/head/dart/test/inputs/json/samples/pokedex.json/default/TopLevel.dart
@@ -0,0 +1,195 @@
+// To parse this JSON data, do
+//
+//     final topLevel = topLevelFromJson(jsonString);
+
+import 'dart:convert';
+
+TopLevel topLevelFromJson(String str) => TopLevel.fromJson(json.decode(str));
+
+String topLevelToJson(TopLevel data) => json.encode(data.toJson());
+
+class TopLevel {
+    final List<Pokemon> pokemon;
+
+    TopLevel({
+        required this.pokemon,
+    });
+
+    factory TopLevel.fromJson(Map<String, dynamic> json) => TopLevel(
+        pokemon: List<Pokemon>.from(json["pokemon"].map((x) => Pokemon.fromJson(x))),
+    );
+
+    Map<String, dynamic> toJson() => {
+        "pokemon": List<dynamic>.from(pokemon.map((x) => x.toJson())),
+    };
+}
+
+class Pokemon {
+    final double avgSpawns;
+    final String candy;
+    final int? candyCount;
+    final Egg egg;
+    final String height;
+    final int id;
+    final String img;
+    final List<double>? multipliers;
+    final String name;
+    final List<Evolution>? nextEvolution;
+    final String num;
+    final List<Evolution>? prevEvolution;
+    final double spawnChance;
+    final String spawnTime;
+    final List<Type> type;
+    final List<Type> weaknesses;
+    final String weight;
+
+    Pokemon({
+        required this.avgSpawns,
+        required this.candy,
+        this.candyCount,
+        required this.egg,
+        required this.height,
+        required this.id,
+        required this.img,
+        required this.multipliers,
+        required this.name,
+        this.nextEvolution,
+        required this.num,
+        this.prevEvolution,
+        required this.spawnChance,
+        required this.spawnTime,
+        required this.type,
+        required this.weaknesses,
+        required this.weight,
+    });
+
+    factory Pokemon.fromJson(Map<String, dynamic> json) => Pokemon(
+        avgSpawns: json["avg_spawns"]?.toDouble(),
+        candy: json["candy"],
+        candyCount: json["candy_count"],
+        egg: eggValues.map[json["egg"]]!,
+        height: json["height"],
+        id: json["id"],
+        img: json["img"],
+        multipliers: json["multipliers"] == null ? null : List<double>.from(json["multipliers"]!.map((x) => x?.toDouble())),
+        name: json["name"],
+        nextEvolution: json["next_evolution"] == null ? null : List<Evolution>.from(json["next_evolution"]!.map((x) => Evolution.fromJson(x))),
+        num: json["num"],
+        prevEvolution: json["prev_evolution"] == null ? null : List<Evolution>.from(json["prev_evolution"]!.map((x) => Evolution.fromJson(x))),
+        spawnChance: json["spawn_chance"]?.toDouble(),
+        spawnTime: json["spawn_time"],
+        type: List<Type>.from(json["type"].map((x) => typeValues.map[x]!)),
+        weaknesses: List<Type>.from(json["weaknesses"].map((x) => typeValues.map[x]!)),
+        weight: json["weight"],
+    );
+
+    Map<String, dynamic> toJson() => {
+        "avg_spawns": avgSpawns,
+        "candy": candy,
+        "candy_count": candyCount,
+        "egg": eggValues.reverse[egg],
+        "height": height,
+        "id": id,
+        "img": img,
+        "multipliers": multipliers == null ? null : List<dynamic>.from(multipliers!.map((x) => x)),
+        "name": name,
+        "next_evolution": nextEvolution == null ? null : List<dynamic>.from(nextEvolution!.map((x) => x.toJson())),
+        "num": num,
+        "prev_evolution": prevEvolution == null ? null : List<dynamic>.from(prevEvolution!.map((x) => x.toJson())),
+        "spawn_chance": spawnChance,
+        "spawn_time": spawnTime,
+        "type": List<dynamic>.from(type.map((x) => typeValues.reverse[x])),
+        "weaknesses": List<dynamic>.from(weaknesses.map((x) => typeValues.reverse[x])),
+        "weight": weight,
+    };
+}
+
+enum Egg {
+    THE_2_KM,
+    NOT_IN_EGGS,
+    THE_5_KM,
+    THE_10_KM,
+    OMANYTE_CANDY
+}
+
+final eggValues = EnumValues({
+    "2 km": Egg.THE_2_KM,
+    "Not in Eggs": Egg.NOT_IN_EGGS,
+    "5 km": Egg.THE_5_KM,
+    "10 km": Egg.THE_10_KM,
+    "Omanyte Candy": Egg.OMANYTE_CANDY
+});
+
+class Evolution {
+    final String name;
+    final String num;
+
+    Evolution({
+        required this.name,
+        required this.num,
+    });
+
+    factory Evolution.fromJson(Map<String, dynamic> json) => Evolution(
+        name: json["name"],
+        num: json["num"],
+    );
+
+    Map<String, dynamic> toJson() => {
+        "name": name,
+        "num": num,
+    };
+}
+
+enum Type {
+    FIRE,
+    ICE,
+    FLYING,
+    PSYCHIC,
+    WATER,
+    GROUND,
+    ROCK,
+    ELECTRIC,
+    GRASS,
+    FIGHTING,
+    POISON,
+    BUG,
+    FAIRY,
+    GHOST,
+    DARK,
+    STEEL,
+    DRAGON,
+    NORMAL
+}
+
+final typeValues = EnumValues({
+    "Fire": Type.FIRE,
+    "Ice": Type.ICE,
+    "Flying": Type.FLYING,
+    "Psychic": Type.PSYCHIC,
+    "Water": Type.WATER,
+    "Ground": Type.GROUND,
+    "Rock": Type.ROCK,
+    "Electric": Type.ELECTRIC,
+    "Grass": Type.GRASS,
+    "Fighting": Type.FIGHTING,
+    "Poison": Type.POISON,
+    "Bug": Type.BUG,
+    "Fairy": Type.FAIRY,
+    "Ghost": Type.GHOST,
+    "Dark": Type.DARK,
+    "Steel": Type.STEEL,
+    "Dragon": Type.DRAGON,
+    "Normal": Type.NORMAL
+});
+
+class EnumValues<T> {
+    Map<String, T> map;
+    late Map<T, String> reverseMap;
+
+    EnumValues(this.map);
+
+    Map<T, String> get reverse {
+            reverseMap = map.map((k, v) => MapEntry(v, k));
+            return reverseMap;
+    }
+}
diff --git a/head/dart/test/inputs/json/samples/reddit.json/default/TopLevel.dart b/head/dart/test/inputs/json/samples/reddit.json/default/TopLevel.dart
new file mode 100644
index 0000000..2879a3f
--- /dev/null
+++ b/head/dart/test/inputs/json/samples/reddit.json/default/TopLevel.dart
@@ -0,0 +1,559 @@
+// To parse this JSON data, do
+//
+//     final topLevel = topLevelFromJson(jsonString);
+
+import 'dart:convert';
+
+TopLevel topLevelFromJson(String str) => TopLevel.fromJson(json.decode(str));
+
+String topLevelToJson(TopLevel data) => json.encode(data.toJson());
+
+class TopLevel {
+    final TopLevelData data;
+    final String kind;
+
+    TopLevel({
+        required this.data,
+        required this.kind,
+    });
+
+    factory TopLevel.fromJson(Map<String, dynamic> json) => TopLevel(
+        data: TopLevelData.fromJson(json["data"]),
+        kind: json["kind"],
+    );
+
+    Map<String, dynamic> toJson() => {
+        "data": data.toJson(),
+        "kind": kind,
+    };
+}
+
+class TopLevelData {
+    final String after;
+    final dynamic before;
+    final List<Child> children;
+    final String modhash;
+
+    TopLevelData({
+        required this.after,
+        required this.before,
+        required this.children,
+        required this.modhash,
+    });
+
+    factory TopLevelData.fromJson(Map<String, dynamic> json) => TopLevelData(
+        after: json["after"],
+        before: json["before"],
+        children: List<Child>.from(json["children"].map((x) => Child.fromJson(x))),
+        modhash: json["modhash"],
+    );
+
+    Map<String, dynamic> toJson() => {
+        "after": after,
+        "before": before,
+        "children": List<dynamic>.from(children.map((x) => x.toJson())),
+        "modhash": modhash,
+    };
+}
+
+class Child {
+    final ChildData data;
+    final Kind kind;
+
+    Child({
+        required this.data,
+        required this.kind,
+    });
+
+    factory Child.fromJson(Map<String, dynamic> json) => Child(
+        data: ChildData.fromJson(json["data"]),
+        kind: kindValues.map[json["kind"]]!,
+    );
+
+    Map<String, dynamic> toJson() => {
+        "data": data.toJson(),
+        "kind": kindValues.reverse[kind],
+    };
+}
+
+class ChildData {
+    final dynamic approvedAtUtc;
+    final dynamic approvedBy;
+    final bool archived;
+    final String author;
+    final String? authorFlairCssClass;
+    final String? authorFlairText;
+    final dynamic bannedAtUtc;
+    final dynamic bannedBy;
+    final bool brandSafe;
+    final bool canGild;
+    final bool canModPost;
+    final bool clicked;
+    final bool contestMode;
+    final int created;
+    final int createdUtc;
+    final String? distinguished;
+    final Domain domain;
+    final int downs;
+    final bool edited;
+    final int gilded;
+    final bool hidden;
+    final bool hideScore;
+    final String id;
+    final bool isSelf;
+    final bool isVideo;
+    final dynamic likes;
+    final String? linkFlairCssClass;
+    final String? linkFlairText;
+    final bool locked;
+    final dynamic media;
+    final MediaEmbed mediaEmbed;
+    final List<dynamic> modReports;
+    final String name;
+    final int numComments;
+    final dynamic numReports;
+    final bool over18;
+    final WhitelistStatus parentWhitelistStatus;
+    final String permalink;
+    final PostHint postHint;
+    final Preview preview;
+    final bool quarantine;
+    final dynamic removalReason;
+    final dynamic reportReasons;
+    final bool saved;
+    final int score;
+    final dynamic secureMedia;
+    final MediaEmbed secureMediaEmbed;
+    final String selftext;
+    final dynamic selftextHtml;
+    final bool spoiler;
+    final bool stickied;
+    final Subreddit subreddit;
+    final SubredditId subredditId;
+    final SubredditNamePrefixed subredditNamePrefixed;
+    final SubredditType subredditType;
+    final dynamic suggestedSort;
+    final String thumbnail;
+    final int thumbnailHeight;
+    final int thumbnailWidth;
+    final String title;
+    final int ups;
+    final String url;
+    final List<dynamic> userReports;
+    final dynamic viewCount;
+    final bool visited;
+    final WhitelistStatus whitelistStatus;
+
+    ChildData({
+        required this.approvedAtUtc,
+        required this.approvedBy,
+        required this.archived,
+        required this.author,
+        required this.authorFlairCssClass,
+        required this.authorFlairText,
+        required this.bannedAtUtc,
+        required this.bannedBy,
+        required this.brandSafe,
+        required this.canGild,
+        required this.canModPost,
+        required this.clicked,
+        required this.contestMode,
+        required this.created,
+        required this.createdUtc,
+        required this.distinguished,
+        required this.domain,
+        required this.downs,
+        required this.edited,
+        required this.gilded,
+        required this.hidden,
+        required this.hideScore,
+        required this.id,
+        required this.isSelf,
+        required this.isVideo,
+        required this.likes,
+        required this.linkFlairCssClass,
+        required this.linkFlairText,
+        required this.locked,
+        required this.media,
+        required this.mediaEmbed,
+        required this.modReports,
+        required this.name,
+        required this.numComments,
+        required this.numReports,
+        required this.over18,
+        required this.parentWhitelistStatus,
+        required this.permalink,
+        required this.postHint,
+        required this.preview,
+        required this.quarantine,
+        required this.removalReason,
+        required this.reportReasons,
+        required this.saved,
+        required this.score,
+        required this.secureMedia,
+        required this.secureMediaEmbed,
+        required this.selftext,
+        required this.selftextHtml,
+        required this.spoiler,
+        required this.stickied,
+        required this.subreddit,
+        required this.subredditId,
+        required this.subredditNamePrefixed,
+        required this.subredditType,
+        required this.suggestedSort,
+        required this.thumbnail,
+        required this.thumbnailHeight,
+        required this.thumbnailWidth,
+        required this.title,
+        required this.ups,
+        required this.url,
+        required this.userReports,
+        required this.viewCount,
+        required this.visited,
+        required this.whitelistStatus,
+    });
+
+    factory ChildData.fromJson(Map<String, dynamic> json) => ChildData(
+        approvedAtUtc: json["approved_at_utc"],
+        approvedBy: json["approved_by"],
+        archived: json["archived"],
+        author: json["author"],
+        authorFlairCssClass: json["author_flair_css_class"],
+        authorFlairText: json["author_flair_text"],
+        bannedAtUtc: json["banned_at_utc"],
+        bannedBy: json["banned_by"],
+        brandSafe: json["brand_safe"],
+        canGild: json["can_gild"],
+        canModPost: json["can_mod_post"],
+        clicked: json["clicked"],
+        contestMode: json["contest_mode"],
+        created: json["created"],
+        createdUtc: json["created_utc"],
+        distinguished: json["distinguished"],
+        domain: domainValues.map[json["domain"]]!,
+        downs: json["downs"],
+        edited: json["edited"],
+        gilded: json["gilded"],
+        hidden: json["hidden"],
+        hideScore: json["hide_score"],
+        id: json["id"],
+        isSelf: json["is_self"],
+        isVideo: json["is_video"],
+        likes: json["likes"],
+        linkFlairCssClass: json["link_flair_css_class"],
+        linkFlairText: json["link_flair_text"],
+        locked: json["locked"],
+        media: json["media"],
+        mediaEmbed: MediaEmbed.fromJson(json["media_embed"]),
+        modReports: List<dynamic>.from(json["mod_reports"].map((x) => x)),
+        name: json["name"],
+        numComments: json["num_comments"],
+        numReports: json["num_reports"],
+        over18: json["over_18"],
+        parentWhitelistStatus: whitelistStatusValues.map[json["parent_whitelist_status"]]!,
+        permalink: json["permalink"],
+        postHint: postHintValues.map[json["post_hint"]]!,
+        preview: Preview.fromJson(json["preview"]),
+        quarantine: json["quarantine"],
+        removalReason: json["removal_reason"],
+        reportReasons: json["report_reasons"],
+        saved: json["saved"],
+        score: json["score"],
+        secureMedia: json["secure_media"],
+        secureMediaEmbed: MediaEmbed.fromJson(json["secure_media_embed"]),
+        selftext: json["selftext"],
+        selftextHtml: json["selftext_html"],
+        spoiler: json["spoiler"],
+        stickied: json["stickied"],
+        subreddit: subredditValues.map[json["subreddit"]]!,
+        subredditId: subredditIdValues.map[json["subreddit_id"]]!,
+        subredditNamePrefixed: subredditNamePrefixedValues.map[json["subreddit_name_prefixed"]]!,
+        subredditType: subredditTypeValues.map[json["subreddit_type"]]!,
+        suggestedSort: json["suggested_sort"],
+        thumbnail: json["thumbnail"],
+        thumbnailHeight: json["thumbnail_height"],
+        thumbnailWidth: json["thumbnail_width"],
+        title: json["title"],
+        ups: json["ups"],
+        url: json["url"],
+        userReports: List<dynamic>.from(json["user_reports"].map((x) => x)),
+        viewCount: json["view_count"],
+        visited: json["visited"],
+        whitelistStatus: whitelistStatusValues.map[json["whitelist_status"]]!,
+    );
+
+    Map<String, dynamic> toJson() => {
+        "approved_at_utc": approvedAtUtc,
+        "approved_by": approvedBy,
+        "archived": archived,
+        "author": author,
+        "author_flair_css_class": authorFlairCssClass,
+        "author_flair_text": authorFlairText,
+        "banned_at_utc": bannedAtUtc,
+        "banned_by": bannedBy,
+        "brand_safe": brandSafe,
+        "can_gild": canGild,
+        "can_mod_post": canModPost,
+        "clicked": clicked,
+        "contest_mode": contestMode,
+        "created": created,
+        "created_utc": createdUtc,
+        "distinguished": distinguished,
+        "domain": domainValues.reverse[domain],
+        "downs": downs,
+        "edited": edited,
+        "gilded": gilded,
+        "hidden": hidden,
+        "hide_score": hideScore,
+        "id": id,
+        "is_self": isSelf,
+        "is_video": isVideo,
+        "likes": likes,
+        "link_flair_css_class": linkFlairCssClass,
+        "link_flair_text": linkFlairText,
+        "locked": locked,
+        "media": media,
+        "media_embed": mediaEmbed.toJson(),
+        "mod_reports": List<dynamic>.from(modReports.map((x) => x)),
+        "name": name,
+        "num_comments": numComments,
+        "num_reports": numReports,
+        "over_18": over18,
+        "parent_whitelist_status": whitelistStatusValues.reverse[parentWhitelistStatus],
+        "permalink": permalink,
+        "post_hint": postHintValues.reverse[postHint],
+        "preview": preview.toJson(),
+        "quarantine": quarantine,
+        "removal_reason": removalReason,
+        "report_reasons": reportReasons,
+        "saved": saved,
+        "score": score,
+        "secure_media": secureMedia,
+        "secure_media_embed": secureMediaEmbed.toJson(),
+        "selftext": selftext,
+        "selftext_html": selftextHtml,
+        "spoiler": spoiler,
+        "stickied": stickied,
+        "subreddit": subredditValues.reverse[subreddit],
+        "subreddit_id": subredditIdValues.reverse[subredditId],
+        "subreddit_name_prefixed": subredditNamePrefixedValues.reverse[subredditNamePrefixed],
+        "subreddit_type": subredditTypeValues.reverse[subredditType],
+        "suggested_sort": suggestedSort,
+        "thumbnail": thumbnail,
+        "thumbnail_height": thumbnailHeight,
+        "thumbnail_width": thumbnailWidth,
+        "title": title,
+        "ups": ups,
+        "url": url,
+        "user_reports": List<dynamic>.from(userReports.map((x) => x)),
+        "view_count": viewCount,
+        "visited": visited,
+        "whitelist_status": whitelistStatusValues.reverse[whitelistStatus],
+    };
+}
+
+enum Domain {
+    REDDIT_COM,
+    I_IMGUR_COM,
+    IMGUR_COM,
+    I_REDD_IT
+}
+
+final domainValues = EnumValues({
+    "reddit.com": Domain.REDDIT_COM,
+    "i.imgur.com": Domain.I_IMGUR_COM,
+    "imgur.com": Domain.IMGUR_COM,
+    "i.redd.it": Domain.I_REDD_IT
+});
+
+class MediaEmbed {
+    MediaEmbed();
+
+    factory MediaEmbed.fromJson(Map<String, dynamic> json) => MediaEmbed(
+    );
+
+    Map<String, dynamic> toJson() => {
+    };
+}
+
+enum WhitelistStatus {
+    ALL_ADS
+}
+
+final whitelistStatusValues = EnumValues({
+    "all_ads": WhitelistStatus.ALL_ADS
+});
+
+enum PostHint {
+    LINK,
+    IMAGE
+}
+
+final postHintValues = EnumValues({
+    "link": PostHint.LINK,
+    "image": PostHint.IMAGE
+});
+
+class Preview {
+    final bool enabled;
+    final List<Image> images;
+
+    Preview({
+        required this.enabled,
+        required this.images,
+    });
+
+    factory Preview.fromJson(Map<String, dynamic> json) => Preview(
+        enabled: json["enabled"],
+        images: List<Image>.from(json["images"].map((x) => Image.fromJson(x))),
+    );
+
+    Map<String, dynamic> toJson() => {
+        "enabled": enabled,
+        "images": List<dynamic>.from(images.map((x) => x.toJson())),
+    };
+}
+
+class Image {
+    final String id;
+    final List<Source> resolutions;
+    final Source source;
+    final Variants variants;
+
+    Image({
+        required this.id,
+        required this.resolutions,
+        required this.source,
+        required this.variants,
+    });
+
+    factory Image.fromJson(Map<String, dynamic> json) => Image(
+        id: json["id"],
+        resolutions: List<Source>.from(json["resolutions"].map((x) => Source.fromJson(x))),
+        source: Source.fromJson(json["source"]),
+        variants: Variants.fromJson(json["variants"]),
+    );
+
+    Map<String, dynamic> toJson() => {
+        "id": id,
+        "resolutions": List<dynamic>.from(resolutions.map((x) => x.toJson())),
+        "source": source.toJson(),
+        "variants": variants.toJson(),
+    };
+}
+
+class Source {
+    final int height;
+    final String url;
+    final int width;
+
+    Source({
+        required this.height,
+        required this.url,
+        required this.width,
+    });
+
+    factory Source.fromJson(Map<String, dynamic> json) => Source(
+        height: json["height"],
+        url: json["url"],
+        width: json["width"],
+    );
+
+    Map<String, dynamic> toJson() => {
+        "height": height,
+        "url": url,
+        "width": width,
+    };
+}
+
+class Variants {
+    final Gif? gif;
+    final Gif? mp4;
+
+    Variants({
+        this.gif,
+        this.mp4,
+    });
+
+    factory Variants.fromJson(Map<String, dynamic> json) => Variants(
+        gif: json["gif"] == null ? null : Gif.fromJson(json["gif"]),
+        mp4: json["mp4"] == null ? null : Gif.fromJson(json["mp4"]),
+    );
+
+    Map<String, dynamic> toJson() => {
+        "gif": gif?.toJson(),
+        "mp4": mp4?.toJson(),
+    };
+}
+
+class Gif {
+    final List<Source> resolutions;
+    final Source source;
+
+    Gif({
+        required this.resolutions,
+        required this.source,
+    });
+
+    factory Gif.fromJson(Map<String, dynamic> json) => Gif(
+        resolutions: List<Source>.from(json["resolutions"].map((x) => Source.fromJson(x))),
+        source: Source.fromJson(json["source"]),
+    );
+
+    Map<String, dynamic> toJson() => {
+        "resolutions": List<dynamic>.from(resolutions.map((x) => x.toJson())),
+        "source": source.toJson(),
+    };
+}
+
+enum Subreddit {
+    FUNNY
+}
+
+final subredditValues = EnumValues({
+    "funny": Subreddit.FUNNY
+});
+
+enum SubredditId {
+    T5_2_QH33
+}
+
+final subredditIdValues = EnumValues({
+    "t5_2qh33": SubredditId.T5_2_QH33
+});
+
+enum SubredditNamePrefixed {
+    R_FUNNY
+}
+
+final subredditNamePrefixedValues = EnumValues({
+    "r/funny": SubredditNamePrefixed.R_FUNNY
+});
+
+enum SubredditType {
+    PUBLIC
+}
+
+final subredditTypeValues = EnumValues({
+    "public": SubredditType.PUBLIC
+});
+
+enum Kind {
+    T3
+}
+
+final kindValues = EnumValues({
+    "t3": Kind.T3
+});
+
+class EnumValues<T> {
+    Map<String, T> map;
+    late Map<T, String> reverseMap;
+
+    EnumValues(this.map);
+
+    Map<T, String> get reverse {
+            reverseMap = map.map((k, v) => MapEntry(v, k));
+            return reverseMap;
+    }
+}
diff --git a/head/dart/test/inputs/json/samples/us-senators.json/default/TopLevel.dart b/head/dart/test/inputs/json/samples/us-senators.json/default/TopLevel.dart
new file mode 100644
index 0000000..3e07dc2
--- /dev/null
+++ b/head/dart/test/inputs/json/samples/us-senators.json/default/TopLevel.dart
@@ -0,0 +1,389 @@
+// To parse this JSON data, do
+//
+//     final topLevel = topLevelFromJson(jsonString);
+
+import 'dart:convert';
+
+TopLevel topLevelFromJson(String str) => TopLevel.fromJson(json.decode(str));
+
+String topLevelToJson(TopLevel data) => json.encode(data.toJson());
+
+class TopLevel {
+    final Meta meta;
+    final List<Object> objects;
+
+    TopLevel({
+        required this.meta,
+        required this.objects,
+    });
+
+    factory TopLevel.fromJson(Map<String, dynamic> json) => TopLevel(
+        meta: Meta.fromJson(json["meta"]),
+        objects: List<Object>.from(json["objects"].map((x) => Object.fromJson(x))),
+    );
+
+    Map<String, dynamic> toJson() => {
+        "meta": meta.toJson(),
+        "objects": List<dynamic>.from(objects.map((x) => x.toJson())),
+    };
+}
+
+class Meta {
+    final int limit;
+    final int offset;
+    final int totalCount;
+
+    Meta({
+        required this.limit,
+        required this.offset,
+        required this.totalCount,
+    });
+
+    factory Meta.fromJson(Map<String, dynamic> json) => Meta(
+        limit: json["limit"],
+        offset: json["offset"],
+        totalCount: json["total_count"],
+    );
+
+    Map<String, dynamic> toJson() => {
+        "limit": limit,
+        "offset": offset,
+        "total_count": totalCount,
+    };
+}
+
+class Object {
+    final Party? caucus;
+    final List<int> congressNumbers;
+    final bool current;
+    final String description;
+    final dynamic district;
+    final DateTime enddate;
+    final Extra extra;
+    final String? leadershipTitle;
+    final Party party;
+    final Person person;
+    final String phone;
+    final RoleType roleType;
+    final RoleTypeLabel roleTypeLabel;
+    final SenatorClass senatorClass;
+    final SenatorClassLabel senatorClassLabel;
+    final SenatorRank senatorRank;
+    final SenatorRankLabel senatorRankLabel;
+    final DateTime startdate;
+    final String state;
+    final Title title;
+    final RoleTypeLabel titleLong;
+    final String website;
+
+    Object({
+        required this.caucus,
+        required this.congressNumbers,
+        required this.current,
+        required this.description,
+        required this.district,
+        required this.enddate,
+        required this.extra,
+        required this.leadershipTitle,
+        required this.party,
+        required this.person,
+        required this.phone,
+        required this.roleType,
+        required this.roleTypeLabel,
+        required this.senatorClass,
+        required this.senatorClassLabel,
+        required this.senatorRank,
+        required this.senatorRankLabel,
+        required this.startdate,
+        required this.state,
+        required this.title,
+        required this.titleLong,
+        required this.website,
+    });
+
+    factory Object.fromJson(Map<String, dynamic> json) => Object(
+        caucus: partyValues.map[json["caucus"]],
+        congressNumbers: List<int>.from(json["congress_numbers"].map((x) => x)),
+        current: json["current"],
+        description: json["description"],
+        district: json["district"],
+        enddate: DateTime.parse(json["enddate"]),
+        extra: Extra.fromJson(json["extra"]),
+        leadershipTitle: json["leadership_title"],
+        party: partyValues.map[json["party"]]!,
+        person: Person.fromJson(json["person"]),
+        phone: json["phone"],
+        roleType: roleTypeValues.map[json["role_type"]]!,
+        roleTypeLabel: roleTypeLabelValues.map[json["role_type_label"]]!,
+        senatorClass: senatorClassValues.map[json["senator_class"]]!,
+        senatorClassLabel: senatorClassLabelValues.map[json["senator_class_label"]]!,
+        senatorRank: senatorRankValues.map[json["senator_rank"]]!,
+        senatorRankLabel: senatorRankLabelValues.map[json["senator_rank_label"]]!,
+        startdate: DateTime.parse(json["startdate"]),
+        state: json["state"],
+        title: titleValues.map[json["title"]]!,
+        titleLong: roleTypeLabelValues.map[json["title_long"]]!,
+        website: json["website"],
+    );
+
+    Map<String, dynamic> toJson() => {
+        "caucus": partyValues.reverse[caucus],
+        "congress_numbers": List<dynamic>.from(congressNumbers.map((x) => x)),
+        "current": current,
+        "description": description,
+        "district": district,
+        "enddate": "${enddate.year.toString().padLeft(4, '0')}-${enddate.month.toString().padLeft(2, '0')}-${enddate.day.toString().padLeft(2, '0')}",
+        "extra": extra.toJson(),
+        "leadership_title": leadershipTitle,
+        "party": partyValues.reverse[party],
+        "person": person.toJson(),
+        "phone": phone,
+        "role_type": roleTypeValues.reverse[roleType],
+        "role_type_label": roleTypeLabelValues.reverse[roleTypeLabel],
+        "senator_class": senatorClassValues.reverse[senatorClass],
+        "senator_class_label": senatorClassLabelValues.reverse[senatorClassLabel],
+        "senator_rank": senatorRankValues.reverse[senatorRank],
+        "senator_rank_label": senatorRankLabelValues.reverse[senatorRankLabel],
+        "startdate": "${startdate.year.toString().padLeft(4, '0')}-${startdate.month.toString().padLeft(2, '0')}-${startdate.day.toString().padLeft(2, '0')}",
+        "state": state,
+        "title": titleValues.reverse[title],
+        "title_long": roleTypeLabelValues.reverse[titleLong],
+        "website": website,
+    };
+}
+
+enum Party {
+    DEMOCRAT,
+    REPUBLICAN,
+    INDEPENDENT
+}
+
+final partyValues = EnumValues({
+    "Democrat": Party.DEMOCRAT,
+    "Republican": Party.REPUBLICAN,
+    "Independent": Party.INDEPENDENT
+});
+
+class Extra {
+    final String address;
+    final String contactForm;
+    final String? fax;
+    final String office;
+    final String? rssUrl;
+
+    Extra({
+        required this.address,
+        required this.contactForm,
+        this.fax,
+        required this.office,
+        this.rssUrl,
+    });
+
+    factory Extra.fromJson(Map<String, dynamic> json) => Extra(
+        address: json["address"],
+        contactForm: json["contact_form"],
+        fax: json["fax"],
+        office: json["office"],
+        rssUrl: json["rss_url"],
+    );
+
+    Map<String, dynamic> toJson() => {
+        "address": address,
+        "contact_form": contactForm,
+        "fax": fax,
+        "office": office,
+        "rss_url": rssUrl,
+    };
+}
+
+class Person {
+    final String bioguideid;
+    final DateTime birthday;
+    final int cspanid;
+    final String firstname;
+    final Gender gender;
+    final GenderLabel genderLabel;
+    final String lastname;
+    final String link;
+    final String middlename;
+    final String name;
+    final Namemod namemod;
+    final String nickname;
+    final String osid;
+    final String pvsid;
+    final String sortname;
+    final String? twitterid;
+    final String? youtubeid;
+
+    Person({
+        required this.bioguideid,
+        required this.birthday,
+        required this.cspanid,
+        required this.firstname,
+        required this.gender,
+        required this.genderLabel,
+        required this.lastname,
+        required this.link,
+        required this.middlename,
+        required this.name,
+        required this.namemod,
+        required this.nickname,
+        required this.osid,
+        required this.pvsid,
+        required this.sortname,
+        required this.twitterid,
+        required this.youtubeid,
+    });
+
+    factory Person.fromJson(Map<String, dynamic> json) => Person(
+        bioguideid: json["bioguideid"],
+        birthday: DateTime.parse(json["birthday"]),
+        cspanid: json["cspanid"],
+        firstname: json["firstname"],
+        gender: genderValues.map[json["gender"]]!,
+        genderLabel: genderLabelValues.map[json["gender_label"]]!,
+        lastname: json["lastname"],
+        link: json["link"],
+        middlename: json["middlename"],
+        name: json["name"],
+        namemod: namemodValues.map[json["namemod"]]!,
+        nickname: json["nickname"],
+        osid: json["osid"],
+        pvsid: json["pvsid"],
+        sortname: json["sortname"],
+        twitterid: json["twitterid"],
+        youtubeid: json["youtubeid"],
+    );
+
+    Map<String, dynamic> toJson() => {
+        "bioguideid": bioguideid,
+        "birthday": "${birthday.year.toString().padLeft(4, '0')}-${birthday.month.toString().padLeft(2, '0')}-${birthday.day.toString().padLeft(2, '0')}",
+        "cspanid": cspanid,
+        "firstname": firstname,
+        "gender": genderValues.reverse[gender],
+        "gender_label": genderLabelValues.reverse[genderLabel],
+        "lastname": lastname,
+        "link": link,
+        "middlename": middlename,
+        "name": name,
+        "namemod": namemodValues.reverse[namemod],
+        "nickname": nickname,
+        "osid": osid,
+        "pvsid": pvsid,
+        "sortname": sortname,
+        "twitterid": twitterid,
+        "youtubeid": youtubeid,
+    };
+}
+
+enum Gender {
+    FEMALE,
+    MALE
+}
+
+final genderValues = EnumValues({
+    "female": Gender.FEMALE,
+    "male": Gender.MALE
+});
+
+enum GenderLabel {
+    FEMALE,
+    MALE
+}
+
+final genderLabelValues = EnumValues({
+    "Female": GenderLabel.FEMALE,
+    "Male": GenderLabel.MALE
+});
+
+enum Namemod {
+    EMPTY,
+    JR,
+    III
+}
+
+final namemodValues = EnumValues({
+    "": Namemod.EMPTY,
+    "Jr.": Namemod.JR,
+    "III": Namemod.III
+});
+
+enum RoleType {
+    SENATOR
+}
+
+final roleTypeValues = EnumValues({
+    "senator": RoleType.SENATOR
+});
+
+enum RoleTypeLabel {
+    SENATOR
+}
+
+final roleTypeLabelValues = EnumValues({
+    "Senator": RoleTypeLabel.SENATOR
+});
+
+enum SenatorClass {
+    CLASS1,
+    CLASS2,
+    CLASS3
+}
+
+final senatorClassValues = EnumValues({
+    "class1": SenatorClass.CLASS1,
+    "class2": SenatorClass.CLASS2,
+    "class3": SenatorClass.CLASS3
+});
+
+enum SenatorClassLabel {
+    CLASS_1,
+    CLASS_2,
+    CLASS_3
+}
+
+final senatorClassLabelValues = EnumValues({
+    "Class 1": SenatorClassLabel.CLASS_1,
+    "Class 2": SenatorClassLabel.CLASS_2,
+    "Class 3": SenatorClassLabel.CLASS_3
+});
+
+enum SenatorRank {
+    JUNIOR,
+    SENIOR
+}
+
+final senatorRankValues = EnumValues({
+    "junior": SenatorRank.JUNIOR,
+    "senior": SenatorRank.SENIOR
+});
+
+enum SenatorRankLabel {
+    JUNIOR,
+    SENIOR
+}
+
+final senatorRankLabelValues = EnumValues({
+    "Junior": SenatorRankLabel.JUNIOR,
+    "Senior": SenatorRankLabel.SENIOR
+});
+
+enum Title {
+    SEN
+}
+
+final titleValues = EnumValues({
+    "Sen.": Title.SEN
+});
+
+class EnumValues<T> {
+    Map<String, T> map;
+    late Map<T, String> reverseMap;
+
+    EnumValues(this.map);
+
+    Map<T, String> get reverse {
+            reverseMap = map.map((k, v) => MapEntry(v, k));
+            return reverseMap;
+    }
+}
diff --git a/head/schema-dart/test/inputs/schema/bool-string.schema/default/TopLevel.dart b/head/schema-dart/test/inputs/schema/bool-string.schema/default/TopLevel.dart
new file mode 100644
index 0000000..dd09fef
--- /dev/null
+++ b/head/schema-dart/test/inputs/schema/bool-string.schema/default/TopLevel.dart
@@ -0,0 +1,49 @@
+// To parse this JSON data, do
+//
+//     final topLevel = topLevelFromJson(jsonString);
+
+import 'dart:convert';
+
+TopLevel topLevelFromJson(String str) => TopLevel.fromJson(json.decode(str));
+
+String topLevelToJson(TopLevel data) => json.encode(data.toJson());
+
+class TopLevel {
+    final List<String?>? arrNullable;
+    final List<String>? arrOne;
+    final String? nullable;
+    final String one;
+    final String? optional;
+    final dynamic unionWithBool;
+    final dynamic unionWithBoolAndEnum;
+
+    TopLevel({
+        this.arrNullable,
+        this.arrOne,
+        required this.nullable,
+        required this.one,
+        this.optional,
+        required this.unionWithBool,
+        required this.unionWithBoolAndEnum,
+    });
+
+    factory TopLevel.fromJson(Map<String, dynamic> json) => TopLevel(
+        arrNullable: json["arrNullable"] == null ? null : List<String?>.from(json["arrNullable"]!.map((x) => x)),
+        arrOne: json["arrOne"] == null ? null : List<String>.from(json["arrOne"]!.map((x) => x)),
+        nullable: json["nullable"],
+        one: json["one"],
+        optional: json["optional"],
+        unionWithBool: json["unionWithBool"],
+        unionWithBoolAndEnum: json["unionWithBoolAndEnum"],
+    );
+
+    Map<String, dynamic> toJson() => {
+        "arrNullable": arrNullable == null ? null : List<dynamic>.from(arrNullable!.map((x) => x)),
+        "arrOne": arrOne == null ? null : List<dynamic>.from(arrOne!.map((x) => x)),
+        "nullable": nullable,
+        "one": one,
+        "optional": optional,
+        "unionWithBool": unionWithBool,
+        "unionWithBoolAndEnum": unionWithBoolAndEnum,
+    };
+}
diff --git a/head/schema-dart/test/inputs/schema/const-non-string.schema/default/TopLevel.dart b/head/schema-dart/test/inputs/schema/const-non-string.schema/default/TopLevel.dart
new file mode 100644
index 0000000..d75cbac
--- /dev/null
+++ b/head/schema-dart/test/inputs/schema/const-non-string.schema/default/TopLevel.dart
@@ -0,0 +1,61 @@
+// To parse this JSON data, do
+//
+//     final topLevel = topLevelFromJson(jsonString);
+
+import 'dart:convert';
+
+TopLevel topLevelFromJson(String str) => TopLevel.fromJson(json.decode(str));
+
+String topLevelToJson(TopLevel data) => json.encode(data.toJson());
+
+class TopLevel {
+    final int amount;
+    final bool enabled;
+    final Kind kind;
+    final double ratio;
+    final double version;
+
+    TopLevel({
+        required this.amount,
+        required this.enabled,
+        required this.kind,
+        required this.ratio,
+        required this.version,
+    });
+
+    factory TopLevel.fromJson(Map<String, dynamic> json) => TopLevel(
+        amount: json["amount"],
+        enabled: json["enabled"],
+        kind: kindValues.map[json["kind"]]!,
+        ratio: json["ratio"]?.toDouble(),
+        version: json["version"]?.toDouble(),
+    );
+
+    Map<String, dynamic> toJson() => {
+        "amount": amount,
+        "enabled": enabled,
+        "kind": kindValues.reverse[kind],
+        "ratio": ratio,
+        "version": version,
+    };
+}
+
+enum Kind {
+    WIDGET
+}
+
+final kindValues = EnumValues({
+    "widget": Kind.WIDGET
+});
+
+class EnumValues<T> {
+    Map<String, T> map;
+    late Map<T, String> reverseMap;
+
+    EnumValues(this.map);
+
+    Map<T, String> get reverse {
+            reverseMap = map.map((k, v) => MapEntry(v, k));
+            return reverseMap;
+    }
+}
diff --git a/head/schema-dart/test/inputs/schema/enum-large.schema/default/TopLevel.dart b/head/schema-dart/test/inputs/schema/enum-large.schema/default/TopLevel.dart
new file mode 100644
index 0000000..b084bcf
--- /dev/null
+++ b/head/schema-dart/test/inputs/schema/enum-large.schema/default/TopLevel.dart
@@ -0,0 +1,99 @@
+// To parse this JSON data, do
+//
+//     final topLevel = topLevelFromJson(jsonString);
+
+import 'dart:convert';
+
+TopLevel topLevelFromJson(String str) => TopLevel.fromJson(json.decode(str));
+
+String topLevelToJson(TopLevel data) => json.encode(data.toJson());
+
+class TopLevel {
+    final Callsign callsign;
+    final Priority priority;
+
+    TopLevel({
+        required this.callsign,
+        required this.priority,
+    });
+
+    factory TopLevel.fromJson(Map<String, dynamic> json) => TopLevel(
+        callsign: callsignValues.map[json["callsign"]]!,
+        priority: priorityValues.map[json["priority"]]!,
+    );
+
+    Map<String, dynamic> toJson() => {
+        "callsign": callsignValues.reverse[callsign],
+        "priority": priorityValues.reverse[priority],
+    };
+}
+
+enum Callsign {
+    ALPHA,
+    BRAVO,
+    CHARLIE,
+    DELTA,
+    ECHO,
+    FOXTROT,
+    GOLF,
+    HOTEL,
+    INDIA,
+    JULIETT,
+    KILO,
+    LIMA,
+    MIKE,
+    NOVEMBER,
+    OSCAR,
+    PAPA,
+    QUEBEC,
+    ROMEO,
+    SIERRA,
+    TANGO
+}
+
+final callsignValues = EnumValues({
+    "alpha": Callsign.ALPHA,
+    "bravo": Callsign.BRAVO,
+    "charlie": Callsign.CHARLIE,
+    "delta": Callsign.DELTA,
+    "echo": Callsign.ECHO,
+    "foxtrot": Callsign.FOXTROT,
+    "golf": Callsign.GOLF,
+    "hotel": Callsign.HOTEL,
+    "india": Callsign.INDIA,
+    "juliett": Callsign.JULIETT,
+    "kilo": Callsign.KILO,
+    "lima": Callsign.LIMA,
+    "mike": Callsign.MIKE,
+    "november": Callsign.NOVEMBER,
+    "oscar": Callsign.OSCAR,
+    "papa": Callsign.PAPA,
+    "quebec": Callsign.QUEBEC,
+    "romeo": Callsign.ROMEO,
+    "sierra": Callsign.SIERRA,
+    "tango": Callsign.TANGO
+});
+
+enum Priority {
+    LOW,
+    MEDIUM,
+    HIGH
+}
+
+final priorityValues = EnumValues({
+    "low": Priority.LOW,
+    "medium": Priority.MEDIUM,
+    "high": Priority.HIGH
+});
+
+class EnumValues<T> {
+    Map<String, T> map;
+    late Map<T, String> reverseMap;
+
+    EnumValues(this.map);
+
+    Map<T, String> get reverse {
+            reverseMap = map.map((k, v) => MapEntry(v, k));
+            return reverseMap;
+    }
+}
diff --git a/head/schema-dart/test/inputs/schema/enum-with-null.schema/default/TopLevel.dart b/head/schema-dart/test/inputs/schema/enum-with-null.schema/default/TopLevel.dart
new file mode 100644
index 0000000..f8d7990
--- /dev/null
+++ b/head/schema-dart/test/inputs/schema/enum-with-null.schema/default/TopLevel.dart
@@ -0,0 +1,47 @@
+// To parse this JSON data, do
+//
+//     final topLevel = topLevelFromJson(jsonString);
+
+import 'dart:convert';
+
+TopLevel topLevelFromJson(String str) => TopLevel.fromJson(json.decode(str));
+
+String topLevelToJson(TopLevel data) => json.encode(data.toJson());
+
+class TopLevel {
+    final Enum? topLevelEnum;
+
+    TopLevel({
+        required this.topLevelEnum,
+    });
+
+    factory TopLevel.fromJson(Map<String, dynamic> json) => TopLevel(
+        topLevelEnum: enumValues.map[json["enum"]],
+    );
+
+    Map<String, dynamic> toJson() => {
+        "enum": enumValues.reverse[topLevelEnum],
+    };
+}
+
+enum Enum {
+    FOO,
+    BAR
+}
+
+final enumValues = EnumValues({
+    "foo": Enum.FOO,
+    "bar": Enum.BAR
+});
+
+class EnumValues<T> {
+    Map<String, T> map;
+    late Map<T, String> reverseMap;
+
+    EnumValues(this.map);
+
+    Map<T, String> get reverse {
+            reverseMap = map.map((k, v) => MapEntry(v, k));
+            return reverseMap;
+    }
+}
diff --git a/head/schema-dart/test/inputs/schema/enum.schema/default/TopLevel.dart b/head/schema-dart/test/inputs/schema/enum.schema/default/TopLevel.dart
new file mode 100644
index 0000000..1150433
--- /dev/null
+++ b/head/schema-dart/test/inputs/schema/enum.schema/default/TopLevel.dart
@@ -0,0 +1,89 @@
+// To parse this JSON data, do
+//
+//     final topLevel = topLevelFromJson(jsonString);
+
+import 'dart:convert';
+
+TopLevel topLevelFromJson(String str) => TopLevel.fromJson(json.decode(str));
+
+String topLevelToJson(TopLevel data) => json.encode(data.toJson());
+
+class TopLevel {
+    final List<dynamic>? arr;
+    final String? topLevelFor;
+    final Gve gve;
+    final Lvc? lvc;
+    final List<OtherArr>? otherArr;
+
+    TopLevel({
+        this.arr,
+        this.topLevelFor,
+        required this.gve,
+        this.lvc,
+        this.otherArr,
+    });
+
+    factory TopLevel.fromJson(Map<String, dynamic> json) => TopLevel(
+        arr: json["arr"] == null ? null : List<dynamic>.from(json["arr"]!.map((x) => x)),
+        topLevelFor: json["for"],
+        gve: gveValues.map[json["gve"]]!,
+        lvc: lvcValues.map[json["lvc"]],
+        otherArr: json["otherArr"] == null ? null : List<OtherArr>.from(json["otherArr"]!.map((x) => otherArrValues.map[x]!)),
+    );
+
+    Map<String, dynamic> toJson() => {
+        "arr": arr == null ? null : List<dynamic>.from(arr!.map((x) => x)),
+        "for": topLevelFor,
+        "gve": gveValues.reverse[gve],
+        "lvc": lvcValues.reverse[lvc],
+        "otherArr": otherArr == null ? null : List<dynamic>.from(otherArr!.map((x) => otherArrValues.reverse[x])),
+    };
+}
+
+enum OtherArr {
+    FOO,
+    BAR,
+    IF
+}
+
+final otherArrValues = EnumValues({
+    "foo": OtherArr.FOO,
+    "bar": OtherArr.BAR,
+    "if": OtherArr.IF
+});
+
+enum Gve {
+    GOOD,
+    NEUTRAL,
+    EVIL
+}
+
+final gveValues = EnumValues({
+    "good": Gve.GOOD,
+    "neutral": Gve.NEUTRAL,
+    "evil": Gve.EVIL
+});
+
+enum Lvc {
+    LAWFUL,
+    NEUTRAL,
+    CHAOTIC
+}
+
+final lvcValues = EnumValues({
+    "lawful": Lvc.LAWFUL,
+    "neutral": Lvc.NEUTRAL,
+    "chaotic": Lvc.CHAOTIC
+});
+
+class EnumValues<T> {
+    Map<String, T> map;
+    late Map<T, String> reverseMap;
+
+    EnumValues(this.map);
+
+    Map<T, String> get reverse {
+            reverseMap = map.map((k, v) => MapEntry(v, k));
+            return reverseMap;
+    }
+}
diff --git a/head/schema-dart/test/inputs/schema/integer-string.schema/default/TopLevel.dart b/head/schema-dart/test/inputs/schema/integer-string.schema/default/TopLevel.dart
new file mode 100644
index 0000000..106a7ec
--- /dev/null
+++ b/head/schema-dart/test/inputs/schema/integer-string.schema/default/TopLevel.dart
@@ -0,0 +1,49 @@
+// To parse this JSON data, do
+//
+//     final topLevel = topLevelFromJson(jsonString);
+
+import 'dart:convert';
+
+TopLevel topLevelFromJson(String str) => TopLevel.fromJson(json.decode(str));
+
+String topLevelToJson(TopLevel data) => json.encode(data.toJson());
+
+class TopLevel {
+    final List<String?>? arrNullable;
+    final List<String>? arrOne;
+    final String? nullable;
+    final String one;
+    final String? optional;
+    final dynamic unionWithInt;
+    final dynamic unionWithIntAndEnum;
+
+    TopLevel({
+        this.arrNullable,
+        this.arrOne,
+        required this.nullable,
+        required this.one,
+        this.optional,
+        required this.unionWithInt,
+        required this.unionWithIntAndEnum,
+    });
+
+    factory TopLevel.fromJson(Map<String, dynamic> json) => TopLevel(
+        arrNullable: json["arrNullable"] == null ? null : List<String?>.from(json["arrNullable"]!.map((x) => x)),
+        arrOne: json["arrOne"] == null ? null : List<String>.from(json["arrOne"]!.map((x) => x)),
+        nullable: json["nullable"],
+        one: json["one"],
+        optional: json["optional"],
+        unionWithInt: json["unionWithInt"],
+        unionWithIntAndEnum: json["unionWithIntAndEnum"],
+    );
+
+    Map<String, dynamic> toJson() => {
+        "arrNullable": arrNullable == null ? null : List<dynamic>.from(arrNullable!.map((x) => x)),
+        "arrOne": arrOne == null ? null : List<dynamic>.from(arrOne!.map((x) => x)),
+        "nullable": nullable,
+        "one": one,
+        "optional": optional,
+        "unionWithInt": unionWithInt,
+        "unionWithIntAndEnum": unionWithIntAndEnum,
+    };
+}
diff --git a/head/schema-dart/test/inputs/schema/intersection.schema/default/TopLevel.dart b/head/schema-dart/test/inputs/schema/intersection.schema/default/TopLevel.dart
new file mode 100644
index 0000000..2161d1c
--- /dev/null
+++ b/head/schema-dart/test/inputs/schema/intersection.schema/default/TopLevel.dart
@@ -0,0 +1,45 @@
+// To parse this JSON data, do
+//
+//     final topLevel = topLevelFromJson(jsonString);
+
+import 'dart:convert';
+
+TopLevel topLevelFromJson(String str) => TopLevel.fromJson(json.decode(str));
+
+String topLevelToJson(TopLevel data) => json.encode(data.toJson());
+
+class TopLevel {
+    final Intersection? intersection;
+
+    TopLevel({
+        this.intersection,
+    });
+
+    factory TopLevel.fromJson(Map<String, dynamic> json) => TopLevel(
+        intersection: json["intersection"] == null ? null : Intersection.fromJson(json["intersection"]),
+    );
+
+    Map<String, dynamic> toJson() => {
+        "intersection": intersection?.toJson(),
+    };
+}
+
+class Intersection {
+    final double foo;
+    final String? bar;
+
+    Intersection({
+        required this.foo,
+        this.bar,
+    });
+
+    factory Intersection.fromJson(Map<String, dynamic> json) => Intersection(
+        foo: json["foo"]?.toDouble(),
+        bar: json["bar"],
+    );
+
+    Map<String, dynamic> toJson() => {
+        "foo": foo,
+        "bar": bar,
+    };
+}
diff --git a/head/schema-dart/test/inputs/schema/keyword-enum.schema/default/TopLevel.dart b/head/schema-dart/test/inputs/schema/keyword-enum.schema/default/TopLevel.dart
new file mode 100644
index 0000000..174fd43
--- /dev/null
+++ b/head/schema-dart/test/inputs/schema/keyword-enum.schema/default/TopLevel.dart
@@ -0,0 +1,597 @@
+// To parse this JSON data, do
+//
+//     final topLevel = topLevelFromJson(jsonString);
+
+import 'dart:convert';
+
+TopLevel topLevelFromJson(String str) => TopLevel.fromJson(json.decode(str));
+
+String topLevelToJson(TopLevel data) => json.encode(data.toJson());
+
+class TopLevel {
+    final Enum? topLevelEnum;
+
+    TopLevel({
+        this.topLevelEnum,
+    });
+
+    factory TopLevel.fromJson(Map<String, dynamic> json) => TopLevel(
+        topLevelEnum: enumValues.map[json["enum"]],
+    );
+
+    Map<String, dynamic> toJson() => {
+        "enum": enumValues.reverse[topLevelEnum],
+    };
+}
+
+enum Enum {
+    EMPTY,
+    BOOL,
+    COMPLEX,
+    IMAGINERY,
+    ABSTRACT,
+    ALIGNAS,
+    ALIGNOF,
+    AND,
+    AND_EQ,
+    ANY,
+    ENUM_ANY,
+    ARRAY,
+    AS,
+    ASM,
+    ASSERT,
+    ASSOCIATEDTYPE,
+    ASSOCIATIVITY,
+    ASYNC,
+    ATOMIC,
+    ATOMIC_CANCEL,
+    ATOMIC_COMMIT,
+    ATOMIC_NOEXCEPT,
+    AUTO,
+    AWAIT,
+    BASE,
+    BITAND,
+    BITOR,
+    ENUM_BOOL,
+    PURPLE_BOOL,
+    BOOLEAN,
+    BREAK,
+    BYCOPY,
+    BYREF,
+    BYTE,
+    CASE,
+    CATCH,
+    CHAN,
+    CHAR,
+    CHAR16_T,
+    CHAR32_T,
+    CHECKED,
+    CLASS,
+    ENUM_CLASS,
+    CO_AWAIT,
+    CO_RETURN,
+    CO_YIELD,
+    COMPL,
+    CONCEPT,
+    CONSOLE,
+    CONST,
+    CONST_CAST,
+    CONSTEXPR,
+    CONSTRUCTOR,
+    CONTINUE,
+    CONVENIENCE,
+    CONVERT,
+    CONVERTER,
+    DATE,
+    DATE_PARSE_HANDLING,
+    DEBUGGER,
+    DECIMAL,
+    DECLARE,
+    DECLTYPE,
+    DECODE_STRING,
+    DEF,
+    DEFAULT,
+    DEFER,
+    DEINIT,
+    DEL,
+    DELEGATE,
+    DELETE,
+    DICT,
+    DICTIONARY,
+    DID_SET,
+    DO,
+    DOUBLE,
+    DYNAMIC,
+    DYNAMIC_CAST,
+    ELIF,
+    ELSE,
+    ENCODE_QUICK_TYPE,
+    ENUM,
+    EVENT,
+    EXCEPT,
+    EXCEPTION,
+    EXPLICIT,
+    EXPORT,
+    EXPOSING,
+    EXTENDS,
+    EXTENSION,
+    EXTERN,
+    FALLTHROUGH,
+    FALSE,
+    ENUM_FALSE,
+    FILEPRIVATE,
+    FINAL,
+    FINALLY,
+    FIXED,
+    FLOAT,
+    FOR,
+    FOREACH,
+    FRIEND,
+    FROM,
+    FROM_JSON,
+    FUNC,
+    FUNCTION,
+    GET,
+    GLOBAL,
+    GO,
+    GOTO,
+    GUARD,
+    HAS_OWN_PROPERTY,
+    ID,
+    IF,
+    IMP,
+    IMPLEMENTS,
+    IMPLICIT,
+    IMPORT,
+    IN,
+    INDIRECT,
+    INFIX,
+    INIT,
+    INLINE,
+    INOUT,
+    INSTANCEOF,
+    INT,
+    INTERFACE,
+    INTERNAL,
+    ITERABLE,
+    IS,
+    JDEC,
+    JENC,
+    JPIPE,
+    JSON,
+    JSON_CONVERTER,
+    JSON_SERIALIZER,
+    JSON_TOKEN,
+    JSON_WRITER,
+    LAMBDA,
+    LAZY,
+    LEFT,
+    LET,
+    LIST,
+    LOCK,
+    LONG,
+    MAP,
+    METADATA_PROPERTY_HANDLING,
+    MODULE,
+    MUTABLE,
+    MUTATING,
+    NAMESPACE,
+    NATIVE,
+    NEW,
+    NEWTONSOFT,
+    NIL,
+    NO,
+    NOEXCEPT,
+    NONATOMIC,
+    NONE,
+    ENUM_NONE,
+    NONLOCAL,
+    NONMUTATING,
+    NOT,
+    NOT_EQ,
+    NS_STRING,
+    NULL,
+    ENUM_NULL,
+    NULLPTR,
+    NUMBER,
+    OBJECT,
+    OF,
+    ONEWAY,
+    OPEN,
+    OPERATOR,
+    OPTIONAL,
+    OR,
+    OR_EQ,
+    OUT,
+    OVERRIDE,
+    PACKAGE,
+    PARAMS,
+    PASS,
+    PORT,
+    POSTFIX,
+    PRECEDENCE,
+    PREFIX,
+    PRINT,
+    PRINTF,
+    PRIVATE,
+    PROTECTED,
+    PROTOCOL,
+    ENUM_PROTOCOL,
+    PUBLIC,
+    QUICKTYPE,
+    RAISE,
+    RANGE,
+    READONLY,
+    REF,
+    REGISTER,
+    REINTERPRET_CAST,
+    REPEAT,
+    REQUIRE,
+    REQUIRED,
+    REQUIRES,
+    RESTRICT,
+    RETAIN,
+    RETHROWS,
+    RETURN,
+    RIGHT,
+    SBYTE,
+    SEALED,
+    SEL,
+    SELECT,
+    SELF,
+    ENUM_SELF,
+    SERIALIZE,
+    SET,
+    SHORT,
+    SIGNED,
+    SIZEOF,
+    STACKALLOC,
+    STATIC,
+    STATIC_ASSERT,
+    STATIC_CAST,
+    STRICTFP,
+    STRING,
+    STRUCT,
+    SUBSCRIPT,
+    SUPER,
+    SWITCH,
+    SYMBOL,
+    SYNCHRONIZED,
+    SYSTEM,
+    TEMPLATE,
+    THEN,
+    THIS,
+    THREAD_LOCAL,
+    THROW,
+    THROWS,
+    TO_JSON,
+    TOP_LEVEL,
+    TRANSIENT,
+    TRUE,
+    ENUM_TRUE,
+    TRY,
+    TYPE,
+    ENUM_TYPE,
+    TYPEALIAS,
+    TYPEDEF,
+    TYPEID,
+    TYPENAME,
+    TYPEOF,
+    UINT,
+    ULONG,
+    UNCHECKED,
+    UNDEFINED,
+    UNION,
+    UNOWNED,
+    UNSAFE,
+    UNSIGNED,
+    USHORT,
+    USING,
+    VAR,
+    VIRTUAL,
+    VOID,
+    VOLATILE,
+    WCHAR_T,
+    WEAK,
+    WHERE,
+    WHILE,
+    WILL_SET,
+    WITH,
+    XOR,
+    XOR_EQ,
+    YES,
+    YIELD,
+    DUMMY
+}
+
+final enumValues = EnumValues({
+    "_": Enum.EMPTY,
+    "_Bool": Enum.BOOL,
+    "_Complex": Enum.COMPLEX,
+    "_Imaginery": Enum.IMAGINERY,
+    "abstract": Enum.ABSTRACT,
+    "alignas": Enum.ALIGNAS,
+    "alignof": Enum.ALIGNOF,
+    "and": Enum.AND,
+    "and_eq": Enum.AND_EQ,
+    "any": Enum.ANY,
+    "Any": Enum.ENUM_ANY,
+    "array": Enum.ARRAY,
+    "as": Enum.AS,
+    "asm": Enum.ASM,
+    "assert": Enum.ASSERT,
+    "associatedtype": Enum.ASSOCIATEDTYPE,
+    "associativity": Enum.ASSOCIATIVITY,
+    "async": Enum.ASYNC,
+    "atomic": Enum.ATOMIC,
+    "atomic_cancel": Enum.ATOMIC_CANCEL,
+    "atomic_commit": Enum.ATOMIC_COMMIT,
+    "atomic_noexcept": Enum.ATOMIC_NOEXCEPT,
+    "auto": Enum.AUTO,
+    "await": Enum.AWAIT,
+    "base": Enum.BASE,
+    "bitand": Enum.BITAND,
+    "bitor": Enum.BITOR,
+    "BOOL": Enum.ENUM_BOOL,
+    "bool": Enum.PURPLE_BOOL,
+    "boolean": Enum.BOOLEAN,
+    "break": Enum.BREAK,
+    "bycopy": Enum.BYCOPY,
+    "byref": Enum.BYREF,
+    "byte": Enum.BYTE,
+    "case": Enum.CASE,
+    "catch": Enum.CATCH,
+    "chan": Enum.CHAN,
+    "char": Enum.CHAR,
+    "char16_t": Enum.CHAR16_T,
+    "char32_t": Enum.CHAR32_T,
+    "checked": Enum.CHECKED,
+    "class": Enum.CLASS,
+    "Class": Enum.ENUM_CLASS,
+    "co_await": Enum.CO_AWAIT,
+    "co_return": Enum.CO_RETURN,
+    "co_yield": Enum.CO_YIELD,
+    "compl": Enum.COMPL,
+    "concept": Enum.CONCEPT,
+    "console": Enum.CONSOLE,
+    "const": Enum.CONST,
+    "const_cast": Enum.CONST_CAST,
+    "constexpr": Enum.CONSTEXPR,
+    "constructor": Enum.CONSTRUCTOR,
+    "continue": Enum.CONTINUE,
+    "convenience": Enum.CONVENIENCE,
+    "convert": Enum.CONVERT,
+    "converter": Enum.CONVERTER,
+    "date": Enum.DATE,
+    "date_parse_handling": Enum.DATE_PARSE_HANDLING,
+    "debugger": Enum.DEBUGGER,
+    "decimal": Enum.DECIMAL,
+    "declare": Enum.DECLARE,
+    "decltype": Enum.DECLTYPE,
+    "decode_string": Enum.DECODE_STRING,
+    "def": Enum.DEF,
+    "default": Enum.DEFAULT,
+    "defer": Enum.DEFER,
+    "deinit": Enum.DEINIT,
+    "del": Enum.DEL,
+    "delegate": Enum.DELEGATE,
+    "delete": Enum.DELETE,
+    "dict": Enum.DICT,
+    "dictionary": Enum.DICTIONARY,
+    "didSet": Enum.DID_SET,
+    "do": Enum.DO,
+    "double": Enum.DOUBLE,
+    "dynamic": Enum.DYNAMIC,
+    "dynamic_cast": Enum.DYNAMIC_CAST,
+    "elif": Enum.ELIF,
+    "else": Enum.ELSE,
+    "encode_quick_type": Enum.ENCODE_QUICK_TYPE,
+    "enum": Enum.ENUM,
+    "event": Enum.EVENT,
+    "except": Enum.EXCEPT,
+    "exception": Enum.EXCEPTION,
+    "explicit": Enum.EXPLICIT,
+    "export": Enum.EXPORT,
+    "exposing": Enum.EXPOSING,
+    "extends": Enum.EXTENDS,
+    "extension": Enum.EXTENSION,
+    "extern": Enum.EXTERN,
+    "fallthrough": Enum.FALLTHROUGH,
+    "false": Enum.FALSE,
+    "False": Enum.ENUM_FALSE,
+    "fileprivate": Enum.FILEPRIVATE,
+    "final": Enum.FINAL,
+    "finally": Enum.FINALLY,
+    "fixed": Enum.FIXED,
+    "float": Enum.FLOAT,
+    "for": Enum.FOR,
+    "foreach": Enum.FOREACH,
+    "friend": Enum.FRIEND,
+    "from": Enum.FROM,
+    "from_json": Enum.FROM_JSON,
+    "func": Enum.FUNC,
+    "function": Enum.FUNCTION,
+    "get": Enum.GET,
+    "global": Enum.GLOBAL,
+    "go": Enum.GO,
+    "goto": Enum.GOTO,
+    "guard": Enum.GUARD,
+    "hasOwnProperty": Enum.HAS_OWN_PROPERTY,
+    "id": Enum.ID,
+    "if": Enum.IF,
+    "IMP": Enum.IMP,
+    "implements": Enum.IMPLEMENTS,
+    "implicit": Enum.IMPLICIT,
+    "import": Enum.IMPORT,
+    "in": Enum.IN,
+    "indirect": Enum.INDIRECT,
+    "infix": Enum.INFIX,
+    "init": Enum.INIT,
+    "inline": Enum.INLINE,
+    "inout": Enum.INOUT,
+    "instanceof": Enum.INSTANCEOF,
+    "int": Enum.INT,
+    "interface": Enum.INTERFACE,
+    "internal": Enum.INTERNAL,
+    "iterable": Enum.ITERABLE,
+    "is": Enum.IS,
+    "jdec": Enum.JDEC,
+    "jenc": Enum.JENC,
+    "jpipe": Enum.JPIPE,
+    "json": Enum.JSON,
+    "json_converter": Enum.JSON_CONVERTER,
+    "json_serializer": Enum.JSON_SERIALIZER,
+    "json_token": Enum.JSON_TOKEN,
+    "json_writer": Enum.JSON_WRITER,
+    "lambda": Enum.LAMBDA,
+    "lazy": Enum.LAZY,
+    "left": Enum.LEFT,
+    "let": Enum.LET,
+    "list": Enum.LIST,
+    "lock": Enum.LOCK,
+    "long": Enum.LONG,
+    "map": Enum.MAP,
+    "metadata_property_handling": Enum.METADATA_PROPERTY_HANDLING,
+    "module": Enum.MODULE,
+    "mutable": Enum.MUTABLE,
+    "mutating": Enum.MUTATING,
+    "namespace": Enum.NAMESPACE,
+    "native": Enum.NATIVE,
+    "new": Enum.NEW,
+    "newtonsoft": Enum.NEWTONSOFT,
+    "nil": Enum.NIL,
+    "NO": Enum.NO,
+    "noexcept": Enum.NOEXCEPT,
+    "nonatomic": Enum.NONATOMIC,
+    "none": Enum.NONE,
+    "None": Enum.ENUM_NONE,
+    "nonlocal": Enum.NONLOCAL,
+    "nonmutating": Enum.NONMUTATING,
+    "not": Enum.NOT,
+    "not_eq": Enum.NOT_EQ,
+    "NSString": Enum.NS_STRING,
+    "NULL": Enum.NULL,
+    "null": Enum.ENUM_NULL,
+    "nullptr": Enum.NULLPTR,
+    "number": Enum.NUMBER,
+    "object": Enum.OBJECT,
+    "of": Enum.OF,
+    "oneway": Enum.ONEWAY,
+    "open": Enum.OPEN,
+    "operator": Enum.OPERATOR,
+    "optional": Enum.OPTIONAL,
+    "or": Enum.OR,
+    "or_eq": Enum.OR_EQ,
+    "out": Enum.OUT,
+    "override": Enum.OVERRIDE,
+    "package": Enum.PACKAGE,
+    "params": Enum.PARAMS,
+    "pass": Enum.PASS,
+    "port": Enum.PORT,
+    "postfix": Enum.POSTFIX,
+    "precedence": Enum.PRECEDENCE,
+    "prefix": Enum.PREFIX,
+    "print": Enum.PRINT,
+    "printf": Enum.PRINTF,
+    "private": Enum.PRIVATE,
+    "protected": Enum.PROTECTED,
+    "Protocol": Enum.PROTOCOL,
+    "protocol": Enum.ENUM_PROTOCOL,
+    "public": Enum.PUBLIC,
+    "quicktype": Enum.QUICKTYPE,
+    "raise": Enum.RAISE,
+    "range": Enum.RANGE,
+    "readonly": Enum.READONLY,
+    "ref": Enum.REF,
+    "register": Enum.REGISTER,
+    "reinterpret_cast": Enum.REINTERPRET_CAST,
+    "repeat": Enum.REPEAT,
+    "require": Enum.REQUIRE,
+    "required": Enum.REQUIRED,
+    "requires": Enum.REQUIRES,
+    "restrict": Enum.RESTRICT,
+    "retain": Enum.RETAIN,
+    "rethrows": Enum.RETHROWS,
+    "return": Enum.RETURN,
+    "right": Enum.RIGHT,
+    "sbyte": Enum.SBYTE,
+    "sealed": Enum.SEALED,
+    "SEL": Enum.SEL,
+    "select": Enum.SELECT,
+    "Self": Enum.SELF,
+    "self": Enum.ENUM_SELF,
+    "serialize": Enum.SERIALIZE,
+    "set": Enum.SET,
+    "short": Enum.SHORT,
+    "signed": Enum.SIGNED,
+    "sizeof": Enum.SIZEOF,
+    "stackalloc": Enum.STACKALLOC,
+    "static": Enum.STATIC,
+    "static_assert": Enum.STATIC_ASSERT,
+    "static_cast": Enum.STATIC_CAST,
+    "strictfp": Enum.STRICTFP,
+    "string": Enum.STRING,
+    "struct": Enum.STRUCT,
+    "subscript": Enum.SUBSCRIPT,
+    "super": Enum.SUPER,
+    "switch": Enum.SWITCH,
+    "symbol": Enum.SYMBOL,
+    "synchronized": Enum.SYNCHRONIZED,
+    "system": Enum.SYSTEM,
+    "template": Enum.TEMPLATE,
+    "then": Enum.THEN,
+    "this": Enum.THIS,
+    "thread_local": Enum.THREAD_LOCAL,
+    "throw": Enum.THROW,
+    "throws": Enum.THROWS,
+    "to_json": Enum.TO_JSON,
+    "top_level": Enum.TOP_LEVEL,
+    "transient": Enum.TRANSIENT,
+    "True": Enum.TRUE,
+    "true": Enum.ENUM_TRUE,
+    "try": Enum.TRY,
+    "Type": Enum.TYPE,
+    "type": Enum.ENUM_TYPE,
+    "typealias": Enum.TYPEALIAS,
+    "typedef": Enum.TYPEDEF,
+    "typeid": Enum.TYPEID,
+    "typename": Enum.TYPENAME,
+    "typeof": Enum.TYPEOF,
+    "uint": Enum.UINT,
+    "ulong": Enum.ULONG,
+    "unchecked": Enum.UNCHECKED,
+    "undefined": Enum.UNDEFINED,
+    "union": Enum.UNION,
+    "unowned": Enum.UNOWNED,
+    "unsafe": Enum.UNSAFE,
+    "unsigned": Enum.UNSIGNED,
+    "ushort": Enum.USHORT,
+    "using": Enum.USING,
+    "var": Enum.VAR,
+    "virtual": Enum.VIRTUAL,
+    "void": Enum.VOID,
+    "volatile": Enum.VOLATILE,
+    "wchar_t": Enum.WCHAR_T,
+    "weak": Enum.WEAK,
+    "where": Enum.WHERE,
+    "while": Enum.WHILE,
+    "willSet": Enum.WILL_SET,
+    "with": Enum.WITH,
+    "xor": Enum.XOR,
+    "xor_eq": Enum.XOR_EQ,
+    "YES": Enum.YES,
+    "yield": Enum.YIELD,
+    "dummy": Enum.DUMMY
+});
+
+class EnumValues<T> {
+    Map<String, T> map;
+    late Map<T, String> reverseMap;
+
+    EnumValues(this.map);
+
+    Map<T, String> get reverse {
+            reverseMap = map.map((k, v) => MapEntry(v, k));
+            return reverseMap;
+    }
+}
diff --git a/head/schema-dart/test/inputs/schema/list.schema/default/TopLevel.dart b/head/schema-dart/test/inputs/schema/list.schema/default/TopLevel.dart
new file mode 100644
index 0000000..84ca054
--- /dev/null
+++ b/head/schema-dart/test/inputs/schema/list.schema/default/TopLevel.dart
@@ -0,0 +1,27 @@
+// To parse this JSON data, do
+//
+//     final topLevel = topLevelFromJson(jsonString);
+
+import 'dart:convert';
+
+TopLevel topLevelFromJson(String str) => TopLevel.fromJson(json.decode(str));
+
+String topLevelToJson(TopLevel data) => json.encode(data.toJson());
+
+
+///A recursive class type
+class TopLevel {
+    final TopLevel? next;
+
+    TopLevel({
+        this.next,
+    });
+
+    factory TopLevel.fromJson(Map<String, dynamic> json) => TopLevel(
+        next: json["next"] == null ? null : TopLevel.fromJson(json["next"]),
+    );
+
+    Map<String, dynamic> toJson() => {
+        "next": next?.toJson(),
+    };
+}
diff --git a/head/schema-dart/test/inputs/schema/mutually-recursive.schema/default/TopLevel.dart b/head/schema-dart/test/inputs/schema/mutually-recursive.schema/default/TopLevel.dart
new file mode 100644
index 0000000..75527ec
--- /dev/null
+++ b/head/schema-dart/test/inputs/schema/mutually-recursive.schema/default/TopLevel.dart
@@ -0,0 +1,41 @@
+// To parse this JSON data, do
+//
+//     final topLevel = topLevelFromJson(jsonString);
+
+import 'dart:convert';
+
+TopLevel topLevelFromJson(String str) => TopLevel.fromJson(json.decode(str));
+
+String topLevelToJson(TopLevel data) => json.encode(data.toJson());
+
+class Bar {
+    final dynamic foo;
+
+    Bar({
+        required this.foo,
+    });
+
+    factory Bar.fromJson(Map<String, dynamic> json) => Bar(
+        foo: json["foo"],
+    );
+
+    Map<String, dynamic> toJson() => {
+        "foo": foo,
+    };
+}
+
+class TopLevel {
+    final Bar? bar;
+
+    TopLevel({
+        this.bar,
+    });
+
+    factory TopLevel.fromJson(Map<String, dynamic> json) => TopLevel(
+        bar: json["bar"] == null ? null : Bar.fromJson(json["bar"]),
+    );
+
+    Map<String, dynamic> toJson() => {
+        "bar": bar?.toJson(),
+    };
+}
diff --git a/head/schema-dart/test/inputs/schema/postman-collection.schema/default/TopLevel.dart b/head/schema-dart/test/inputs/schema/postman-collection.schema/default/TopLevel.dart
new file mode 100644
index 0000000..9ad5d9e
--- /dev/null
+++ b/head/schema-dart/test/inputs/schema/postman-collection.schema/default/TopLevel.dart
@@ -0,0 +1,51 @@
+// To parse this JSON data, do
+//
+//     final topLevel = topLevelFromJson(jsonString);
+
+import 'dart:convert';
+
+TopLevel topLevelFromJson(String str) => TopLevel.fromJson(json.decode(str));
+
+String topLevelToJson(TopLevel data) => json.encode(data.toJson());
+
+
+///Postman collection
+class TopLevel {
+    final List<TopLevel>? item;
+    final String? name;
+    final List<Response>? response;
+
+    TopLevel({
+        this.item,
+        this.name,
+        this.response,
+    });
+
+    factory TopLevel.fromJson(Map<String, dynamic> json) => TopLevel(
+        item: json["item"] == null ? null : List<TopLevel>.from(json["item"]!.map((x) => TopLevel.fromJson(x))),
+        name: json["name"],
+        response: json["response"] == null ? null : List<Response>.from(json["response"]!.map((x) => Response.fromJson(x))),
+    );
+
+    Map<String, dynamic> toJson() => {
+        "item": item == null ? null : List<dynamic>.from(item!.map((x) => x.toJson())),
+        "name": name,
+        "response": response == null ? null : List<dynamic>.from(response!.map((x) => x.toJson())),
+    };
+}
+
+class Response {
+    final String? body;
+
+    Response({
+        this.body,
+    });
+
+    factory Response.fromJson(Map<String, dynamic> json) => Response(
+        body: json["body"],
+    );
+
+    Map<String, dynamic> toJson() => {
+        "body": body,
+    };
+}
diff --git a/head/schema-dart/test/inputs/schema/ref-remote.schema/default/TopLevel.dart b/head/schema-dart/test/inputs/schema/ref-remote.schema/default/TopLevel.dart
new file mode 100644
index 0000000..84ca054
--- /dev/null
+++ b/head/schema-dart/test/inputs/schema/ref-remote.schema/default/TopLevel.dart
@@ -0,0 +1,27 @@
+// To parse this JSON data, do
+//
+//     final topLevel = topLevelFromJson(jsonString);
+
+import 'dart:convert';
+
+TopLevel topLevelFromJson(String str) => TopLevel.fromJson(json.decode(str));
+
+String topLevelToJson(TopLevel data) => json.encode(data.toJson());
+
+
+///A recursive class type
+class TopLevel {
+    final TopLevel? next;
+
+    TopLevel({
+        this.next,
+    });
+
+    factory TopLevel.fromJson(Map<String, dynamic> json) => TopLevel(
+        next: json["next"] == null ? null : TopLevel.fromJson(json["next"]),
+    );
+
+    Map<String, dynamic> toJson() => {
+        "next": next?.toJson(),
+    };
+}
diff --git a/head/schema-dart/test/inputs/schema/simple-ref.schema/default/TopLevel.dart b/head/schema-dart/test/inputs/schema/simple-ref.schema/default/TopLevel.dart
new file mode 100644
index 0000000..84ca054
--- /dev/null
+++ b/head/schema-dart/test/inputs/schema/simple-ref.schema/default/TopLevel.dart
@@ -0,0 +1,27 @@
+// To parse this JSON data, do
+//
+//     final topLevel = topLevelFromJson(jsonString);
+
+import 'dart:convert';
+
+TopLevel topLevelFromJson(String str) => TopLevel.fromJson(json.decode(str));
+
+String topLevelToJson(TopLevel data) => json.encode(data.toJson());
+
+
+///A recursive class type
+class TopLevel {
+    final TopLevel? next;
+
+    TopLevel({
+        this.next,
+    });
+
+    factory TopLevel.fromJson(Map<String, dynamic> json) => TopLevel(
+        next: json["next"] == null ? null : TopLevel.fromJson(json["next"]),
+    );
+
+    Map<String, dynamic> toJson() => {
+        "next": next?.toJson(),
+    };
+}
diff --git a/head/schema-dart/test/inputs/schema/uuid.schema/default/TopLevel.dart b/head/schema-dart/test/inputs/schema/uuid.schema/default/TopLevel.dart
new file mode 100644
index 0000000..f019796
--- /dev/null
+++ b/head/schema-dart/test/inputs/schema/uuid.schema/default/TopLevel.dart
@@ -0,0 +1,45 @@
+// To parse this JSON data, do
+//
+//     final topLevel = topLevelFromJson(jsonString);
+
+import 'dart:convert';
+
+TopLevel topLevelFromJson(String str) => TopLevel.fromJson(json.decode(str));
+
+String topLevelToJson(TopLevel data) => json.encode(data.toJson());
+
+class TopLevel {
+    final List<String?>? arrNullable;
+    final List<String>? arrOne;
+    final String? nullable;
+    final String one;
+    final String? optional;
+    final String unionWithEnum;
+
+    TopLevel({
+        this.arrNullable,
+        this.arrOne,
+        required this.nullable,
+        required this.one,
+        this.optional,
+        required this.unionWithEnum,
+    });
+
+    factory TopLevel.fromJson(Map<String, dynamic> json) => TopLevel(
+        arrNullable: json["arrNullable"] == null ? null : List<String?>.from(json["arrNullable"]!.map((x) => x)),
+        arrOne: json["arrOne"] == null ? null : List<String>.from(json["arrOne"]!.map((x) => x)),
+        nullable: json["nullable"],
+        one: json["one"],
+        optional: json["optional"],
+        unionWithEnum: json["unionWithEnum"],
+    );
+
+    Map<String, dynamic> toJson() => {
+        "arrNullable": arrNullable == null ? null : List<dynamic>.from(arrNullable!.map((x) => x)),
+        "arrOne": arrOne == null ? null : List<dynamic>.from(arrOne!.map((x) => x)),
+        "nullable": nullable,
+        "one": one,
+        "optional": optional,
+        "unionWithEnum": unionWithEnum,
+    };
+}
