Skip to content

EVE SDE Schema

Documentation for third-party developers

freelanceJobSchemas.jsonl

Schema

  • _key (required): integer
    Range: 1 .. 1
  • _value (required): array of object

    • _key (required): enum
      Enum values: BoostShield, CaptureFWComplex, DamageShip, DefendFWComplex, DeliverItem, KillCapsuleer, KillNPC, MineOre, RepairArmor, ShipInsurance
    • contentTags (required): array of string
      Type: string
    • contributionMultiplier: object

      • defaultValue (required): integer
        Range: 1 .. 1
      • description (required): object

        • de (required): string
        • en (required): string
        • es (required): string
        • fr (required): string
        • ja (required): string
        • ko (required): string
        • ru (required): string
        • zh (required): string
      • iconID (required): enum
        Enum values: isk

      • maxValue (required): integer
        Range: 2 .. 2
      • minValue (required): number
        Range: 0.1 .. 0.1
      • title (required): object

        • de (required): string
        • en (required): string
        • es (required): string
        • fr (required): string
        • ja (required): string
        • ko (required): string
        • ru (required): string
        • zh (required): string
      • unsetDescription (required): object

        • de (required): string
        • en (required): string
        • es (required): string
        • fr (required): string
        • ja (required): string
        • ko (required): string
        • ru (required): string
        • zh (required): string
    • description (required): object

      • de (required): string
      • en (required): string
      • es (required): string
      • fr (required): string
      • ja (required): string
      • ko (required): string
      • ru (required): string
      • zh (required): string
    • iconID (required): string

    • maxContributionsPerParticipant (required): object

      • description (required): object

        • de (required): string
        • en (required): string
        • es (required): string
        • fr (required): string
        • ja (required): string
        • ko (required): string
        • ru (required): string
        • zh (required): string
      • iconID (required): enum
        Enum values: personal, isk

      • title (required): object

        • de (required): string
        • en (required): string
        • es (required): string
        • fr (required): string
        • ja (required): string
        • ko (required): string
        • ru (required): string
        • zh (required): string
      • unsetDescription (required): object

        • de (required): string
        • en (required): string
        • es (required): string
        • fr (required): string
        • ja (required): string
        • ko (required): string
        • ru (required): string
        • zh (required): string
    • maxProgressPerContribution: object

      • description (required): object

        • de (required): string
        • en (required): string
        • es (required): string
        • fr (required): string
        • ja (required): string
        • ko (required): string
        • ru (required): string
        • zh (required): string
      • iconID (required): enum
        Enum values: isk

      • title (required): object

        • de (required): string
        • en (required): string
        • es (required): string
        • fr (required): string
        • ja (required): string
        • ko (required): string
        • ru (required): string
        • zh (required): string
      • unsetDescription (required): object

        • de (required): string
        • en (required): string
        • es (required): string
        • fr (required): string
        • ja (required): string
        • ko (required): string
        • ru (required): string
        • zh (required): string
    • parameters (required): array of object

      • _key (required): string
      • boolean: object

        • choiceLabel (required): object

          • de (required): string
          • en (required): string
          • es (required): string
          • fr (required): string
          • ja (required): string
          • ko (required): string
          • ru (required): string
          • zh (required): string
        • default (required): boolean

        • description (required): object

          • de (required): string
          • en (required): string
          • es (required): string
          • fr (required): string
          • ja (required): string
          • ko (required): string
          • ru (required): string
          • zh (required): string
        • iconID (required): enum
          Enum values: person

        • optionFalse (required): object

          • description (required): object

            • de (required): string
            • en (required): string
            • es (required): string
            • fr (required): string
            • ja (required): string
            • ko (required): string
            • ru (required): string
            • zh (required): string
          • title (required): object

            • de (required): string
            • en (required): string
            • es (required): string
            • fr (required): string
            • ja (required): string
            • ko (required): string
            • ru (required): string
            • zh (required): string
        • optionTrue (required): object

          • description (required): object

            • de (required): string
            • en (required): string
            • es (required): string
            • fr (required): string
            • ja (required): string
            • ko (required): string
            • ru (required): string
            • zh (required): string
          • title (required): object

            • de (required): string
            • en (required): string
            • es (required): string
            • fr (required): string
            • ja (required): string
            • ko (required): string
            • ru (required): string
            • zh (required): string
        • title (required): object

          • de (required): string
          • en (required): string
          • es (required): string
          • fr (required): string
          • ja (required): string
          • ko (required): string
          • ru (required): string
          • zh (required): string
      • itemDelivery: object

        • deliveryLocation (required): object

          • acceptedValueTypes (required): array of enum
            Type: string
            Enum values: station, structure
          • description (required): object

            • de (required): string
            • en (required): string
            • es (required): string
            • fr (required): string
            • ja (required): string
            • ko (required): string
            • ru (required): string
            • zh (required): string
          • iconID (required): enum
            Enum values: location

          • maxEntries (required): integer
            Range: 10 .. 10
          • title (required): object

            • de (required): string
            • en (required): string
            • es (required): string
            • fr (required): string
            • ja (required): string
            • ko (required): string
            • ru (required): string
            • zh (required): string
          • unsetDescription (required): object

            • de (required): string
            • en (required): string
            • es (required): string
            • fr (required): string
            • ja (required): string
            • ko (required): string
            • ru (required): string
            • zh (required): string
        • description (required): object

          • de (required): string
          • en (required): string
          • es (required): string
          • fr (required): string
          • ja (required): string
          • ko (required): string
          • ru (required): string
          • zh (required): string
        • iconID (required): enum
          Enum values: inventory

        • inventoryType (required): object

          • acceptedValueTypes (required): array of string
            Type: string
          • description (required): object

            • de (required): string
            • en (required): string
            • es (required): string
            • fr (required): string
            • ja (required): string
            • ko (required): string
            • ru (required): string
            • zh (required): string
          • iconID (required): enum
            Enum values: inventory

          • title (required): object

            • de (required): string
            • en (required): string
            • es (required): string
            • fr (required): string
            • ja (required): string
            • ko (required): string
            • ru (required): string
            • zh (required): string
          • unsetDescription (required): object

            • de (required): string
            • en (required): string
            • es (required): string
            • fr (required): string
            • ja (required): string
            • ko (required): string
            • ru (required): string
            • zh (required): string
        • title (required): object

          • de (required): string
          • en (required): string
          • es (required): string
          • fr (required): string
          • ja (required): string
          • ko (required): string
          • ru (required): string
          • zh (required): string
      • matcher: object

        • acceptedValueTypes (required): array of string
          Type: string
        • description (required): object

          • de (required): string
          • en (required): string
          • es (required): string
          • fr (required): string
          • ja (required): string
          • ko (required): string
          • ru (required): string
          • zh (required): string
        • iconID (required): string

        • maxEntries (required): integer
          Range: 4 .. 10
        • optional (required): boolean
        • title (required): object

          • de (required): string
          • en (required): string
          • es (required): string
          • fr (required): string
          • ja (required): string
          • ko (required): string
          • ru (required): string
          • zh (required): string
        • type (required): string

        • unsetDescription (required): object
          • de (required): string
          • en (required): string
          • es (required): string
          • fr (required): string
          • ja (required): string
          • ko (required): string
          • ru (required): string
          • zh (required): string
    • progressDescription (required): object

      • de (required): string
      • en (required): string
      • es (required): string
      • fr (required): string
      • ja (required): string
      • ko (required): string
      • ru (required): string
      • zh (required): string
    • rewardDescription (required): object

      • de (required): string
      • en (required): string
      • es (required): string
      • fr (required): string
      • ja (required): string
      • ko (required): string
      • ru (required): string
      • zh (required): string
    • targetDescription (required): object

      • de (required): string
      • en (required): string
      • es (required): string
      • fr (required): string
      • ja (required): string
      • ko (required): string
      • ru (required): string
      • zh (required): string
    • title (required): object

      • de (required): string
      • en (required): string
      • es (required): string
      • fr (required): string
      • ja (required): string
      • ko (required): string
      • ru (required): string
      • zh (required): string

Code snippets

// <auto-generated />
//
// To parse this JSON data, add NuGet 'System.Text.Json' then do:
//
//    using QuickType;
//
//    var freelanceJobSchema = FreelanceJobSchema.FromJson(jsonString);
#nullable enable
#pragma warning disable CS8618
#pragma warning disable CS8601
#pragma warning disable CS8602
#pragma warning disable CS8603

namespace QuickType
{
    using System;
    using System.Collections.Generic;

    using System.Text.Json;
    using System.Text.Json.Serialization;
    using System.Globalization;

    public partial class FreelanceJobSchema
    {
        [JsonPropertyName("_key")]
        public long Key { get; set; }

        [JsonPropertyName("_value")]
        public Value[] Value { get; set; }
    }

    public partial class Value
    {
        [JsonPropertyName("_key")]
        public Key Key { get; set; }

        [JsonPropertyName("contentTags")]
        [JsonConverter(typeof(PurpleDecodeArrayConverter))]
        public string[] ContentTags { get; set; }

        [JsonIgnore(Condition = JsonIgnoreCondition.WhenWritingNull)]
        [JsonPropertyName("contributionMultiplier")]
        public ContributionMultiplier? ContributionMultiplier { get; set; }

        [JsonPropertyName("description")]
        public ValueDescription Description { get; set; }

        [JsonPropertyName("iconID")]
        [JsonConverter(typeof(MinMaxLengthCheckConverter17))]
        public string IconId { get; set; }

        [JsonPropertyName("maxContributionsPerParticipant")]
        public MaxContributionsPerParticipant MaxContributionsPerParticipant { get; set; }

        [JsonIgnore(Condition = JsonIgnoreCondition.WhenWritingNull)]
        [JsonPropertyName("maxProgressPerContribution")]
        public MaxProgressPerContribution? MaxProgressPerContribution { get; set; }

        [JsonPropertyName("parameters")]
        public Parameter[] Parameters { get; set; }

        [JsonPropertyName("progressDescription")]
        public ProgressDescription ProgressDescription { get; set; }

        [JsonPropertyName("rewardDescription")]
        public RewardDescription RewardDescription { get; set; }

        [JsonPropertyName("targetDescription")]
        public TargetDescription TargetDescription { get; set; }

        [JsonPropertyName("title")]
        public ValueTitle Title { get; set; }
    }

    public partial class ContributionMultiplier
    {
        [JsonPropertyName("defaultValue")]
        public long DefaultValue { get; set; }

        [JsonPropertyName("description")]
        public ContributionMultiplierDescription Description { get; set; }

        [JsonPropertyName("iconID")]
        public ContributionMultiplierIconId IconId { get; set; }

        [JsonPropertyName("maxValue")]
        public long MaxValue { get; set; }

        [JsonPropertyName("minValue")]
        [JsonConverter(typeof(MinMaxValueCheckConverter))]
        public double MinValue { get; set; }

        [JsonPropertyName("title")]
        public ContributionMultiplierTitle Title { get; set; }

        [JsonPropertyName("unsetDescription")]
        public ContributionMultiplierUnsetDescription UnsetDescription { get; set; }
    }

    public partial class ContributionMultiplierDescription
    {
        [JsonPropertyName("de")]
        [JsonConverter(typeof(FluffyMinMaxLengthCheckConverter))]
        public string De { get; set; }

        [JsonPropertyName("en")]
        [JsonConverter(typeof(TentacledMinMaxLengthCheckConverter))]
        public string En { get; set; }

        [JsonPropertyName("es")]
        [JsonConverter(typeof(StickyMinMaxLengthCheckConverter))]
        public string Es { get; set; }

        [JsonPropertyName("fr")]
        [JsonConverter(typeof(IndigoMinMaxLengthCheckConverter))]
        public string Fr { get; set; }

        [JsonPropertyName("ja")]
        [JsonConverter(typeof(IndecentMinMaxLengthCheckConverter))]
        public string Ja { get; set; }

        [JsonPropertyName("ko")]
        [JsonConverter(typeof(HilariousMinMaxLengthCheckConverter))]
        public string Ko { get; set; }

        [JsonPropertyName("ru")]
        [JsonConverter(typeof(AmbitiousMinMaxLengthCheckConverter))]
        public string Ru { get; set; }

        [JsonPropertyName("zh")]
        [JsonConverter(typeof(CunningMinMaxLengthCheckConverter))]
        public string Zh { get; set; }
    }

    public partial class ContributionMultiplierTitle
    {
        [JsonPropertyName("de")]
        [JsonConverter(typeof(MagentaMinMaxLengthCheckConverter))]
        public string De { get; set; }

        [JsonPropertyName("en")]
        [JsonConverter(typeof(FriskyMinMaxLengthCheckConverter))]
        public string En { get; set; }

        [JsonPropertyName("es")]
        [JsonConverter(typeof(MischievousMinMaxLengthCheckConverter))]
        public string Es { get; set; }

        [JsonPropertyName("fr")]
        [JsonConverter(typeof(BraggadociousMinMaxLengthCheckConverter))]
        public string Fr { get; set; }

        [JsonPropertyName("ja")]
        [JsonConverter(typeof(MinMaxLengthCheckConverter1))]
        public string Ja { get; set; }

        [JsonPropertyName("ko")]
        [JsonConverter(typeof(MinMaxLengthCheckConverter2))]
        public string Ko { get; set; }

        [JsonPropertyName("ru")]
        [JsonConverter(typeof(MagentaMinMaxLengthCheckConverter))]
        public string Ru { get; set; }

        [JsonPropertyName("zh")]
        [JsonConverter(typeof(MinMaxLengthCheckConverter1))]
        public string Zh { get; set; }
    }

    public partial class ContributionMultiplierUnsetDescription
    {
        [JsonPropertyName("de")]
        [JsonConverter(typeof(MinMaxLengthCheckConverter3))]
        public string De { get; set; }

        [JsonPropertyName("en")]
        [JsonConverter(typeof(MinMaxLengthCheckConverter4))]
        public string En { get; set; }

        [JsonPropertyName("es")]
        [JsonConverter(typeof(MinMaxLengthCheckConverter1))]
        public string Es { get; set; }

        [JsonPropertyName("fr")]
        [JsonConverter(typeof(MinMaxLengthCheckConverter2))]
        public string Fr { get; set; }

        [JsonPropertyName("ja")]
        [JsonConverter(typeof(MinMaxLengthCheckConverter5))]
        public string Ja { get; set; }

        [JsonPropertyName("ko")]
        [JsonConverter(typeof(MinMaxLengthCheckConverter6))]
        public string Ko { get; set; }

        [JsonPropertyName("ru")]
        [JsonConverter(typeof(MinMaxLengthCheckConverter7))]
        public string Ru { get; set; }

        [JsonPropertyName("zh")]
        [JsonConverter(typeof(MinMaxLengthCheckConverter8))]
        public string Zh { get; set; }
    }

    public partial class ValueDescription
    {
        [JsonPropertyName("de")]
        [JsonConverter(typeof(MinMaxLengthCheckConverter9))]
        public string De { get; set; }

        [JsonPropertyName("en")]
        [JsonConverter(typeof(MinMaxLengthCheckConverter10))]
        public string En { get; set; }

        [JsonPropertyName("es")]
        [JsonConverter(typeof(MinMaxLengthCheckConverter11))]
        public string Es { get; set; }

        [JsonPropertyName("fr")]
        [JsonConverter(typeof(MinMaxLengthCheckConverter12))]
        public string Fr { get; set; }

        [JsonPropertyName("ja")]
        [JsonConverter(typeof(MinMaxLengthCheckConverter13))]
        public string Ja { get; set; }

        [JsonPropertyName("ko")]
        [JsonConverter(typeof(MinMaxLengthCheckConverter14))]
        public string Ko { get; set; }

        [JsonPropertyName("ru")]
        [JsonConverter(typeof(MinMaxLengthCheckConverter15))]
        public string Ru { get; set; }

        [JsonPropertyName("zh")]
        [JsonConverter(typeof(MinMaxLengthCheckConverter16))]
        public string Zh { get; set; }
    }

    public partial class MaxContributionsPerParticipant
    {
        [JsonPropertyName("description")]
        public MaxContributionsPerParticipantDescription Description { get; set; }

        [JsonPropertyName("iconID")]
        public MaxContributionsPerParticipantIconId IconId { get; set; }

        [JsonPropertyName("title")]
        public MaxContributionsPerParticipantTitle Title { get; set; }

        [JsonPropertyName("unsetDescription")]
        public MaxContributionsPerParticipantUnsetDescription UnsetDescription { get; set; }
    }

    public partial class MaxContributionsPerParticipantDescription
    {
        [JsonPropertyName("de")]
        [JsonConverter(typeof(MinMaxLengthCheckConverter18))]
        public string De { get; set; }

        [JsonPropertyName("en")]
        [JsonConverter(typeof(MinMaxLengthCheckConverter19))]
        public string En { get; set; }

        [JsonPropertyName("es")]
        [JsonConverter(typeof(MinMaxLengthCheckConverter20))]
        public string Es { get; set; }

        [JsonPropertyName("fr")]
        [JsonConverter(typeof(MinMaxLengthCheckConverter21))]
        public string Fr { get; set; }

        [JsonPropertyName("ja")]
        [JsonConverter(typeof(MinMaxLengthCheckConverter22))]
        public string Ja { get; set; }

        [JsonPropertyName("ko")]
        [JsonConverter(typeof(MinMaxLengthCheckConverter23))]
        public string Ko { get; set; }

        [JsonPropertyName("ru")]
        [JsonConverter(typeof(MinMaxLengthCheckConverter24))]
        public string Ru { get; set; }

        [JsonPropertyName("zh")]
        [JsonConverter(typeof(MinMaxLengthCheckConverter25))]
        public string Zh { get; set; }
    }

    public partial class MaxContributionsPerParticipantTitle
    {
        [JsonPropertyName("de")]
        [JsonConverter(typeof(MinMaxLengthCheckConverter26))]
        public string De { get; set; }

        [JsonPropertyName("en")]
        [JsonConverter(typeof(MinMaxLengthCheckConverter27))]
        public string En { get; set; }

        [JsonPropertyName("es")]
        [JsonConverter(typeof(MinMaxLengthCheckConverter28))]
        public string Es { get; set; }

        [JsonPropertyName("fr")]
        [JsonConverter(typeof(MinMaxLengthCheckConverter29))]
        public string Fr { get; set; }

        [JsonPropertyName("ja")]
        [JsonConverter(typeof(MinMaxLengthCheckConverter30))]
        public string Ja { get; set; }

        [JsonPropertyName("ko")]
        [JsonConverter(typeof(MinMaxLengthCheckConverter31))]
        public string Ko { get; set; }

        [JsonPropertyName("ru")]
        [JsonConverter(typeof(MinMaxLengthCheckConverter32))]
        public string Ru { get; set; }

        [JsonPropertyName("zh")]
        [JsonConverter(typeof(MinMaxLengthCheckConverter33))]
        public string Zh { get; set; }
    }

    public partial class MaxContributionsPerParticipantUnsetDescription
    {
        [JsonPropertyName("de")]
        [JsonConverter(typeof(MinMaxLengthCheckConverter34))]
        public string De { get; set; }

        [JsonPropertyName("en")]
        [JsonConverter(typeof(MinMaxLengthCheckConverter35))]
        public string En { get; set; }

        [JsonPropertyName("es")]
        [JsonConverter(typeof(MinMaxLengthCheckConverter36))]
        public string Es { get; set; }

        [JsonPropertyName("fr")]
        [JsonConverter(typeof(MinMaxLengthCheckConverter37))]
        public string Fr { get; set; }

        [JsonPropertyName("ja")]
        [JsonConverter(typeof(MinMaxLengthCheckConverter38))]
        public string Ja { get; set; }

        [JsonPropertyName("ko")]
        [JsonConverter(typeof(MinMaxLengthCheckConverter39))]
        public string Ko { get; set; }

        [JsonPropertyName("ru")]
        [JsonConverter(typeof(MinMaxLengthCheckConverter40))]
        public string Ru { get; set; }

        [JsonPropertyName("zh")]
        [JsonConverter(typeof(MinMaxLengthCheckConverter31))]
        public string Zh { get; set; }
    }

    public partial class MaxProgressPerContribution
    {
        [JsonPropertyName("description")]
        public MaxProgressPerContributionDescription Description { get; set; }

        [JsonPropertyName("iconID")]
        public ContributionMultiplierIconId IconId { get; set; }

        [JsonPropertyName("title")]
        public MaxProgressPerContributionTitle Title { get; set; }

        [JsonPropertyName("unsetDescription")]
        public MaxProgressPerContributionUnsetDescription UnsetDescription { get; set; }
    }

    public partial class MaxProgressPerContributionDescription
    {
        [JsonPropertyName("de")]
        [JsonConverter(typeof(MinMaxLengthCheckConverter41))]
        public string De { get; set; }

        [JsonPropertyName("en")]
        [JsonConverter(typeof(MinMaxLengthCheckConverter42))]
        public string En { get; set; }

        [JsonPropertyName("es")]
        [JsonConverter(typeof(MinMaxLengthCheckConverter43))]
        public string Es { get; set; }

        [JsonPropertyName("fr")]
        [JsonConverter(typeof(MinMaxLengthCheckConverter44))]
        public string Fr { get; set; }

        [JsonPropertyName("ja")]
        [JsonConverter(typeof(MinMaxLengthCheckConverter45))]
        public string Ja { get; set; }

        [JsonPropertyName("ko")]
        [JsonConverter(typeof(MinMaxLengthCheckConverter46))]
        public string Ko { get; set; }

        [JsonPropertyName("ru")]
        [JsonConverter(typeof(MinMaxLengthCheckConverter47))]
        public string Ru { get; set; }

        [JsonPropertyName("zh")]
        [JsonConverter(typeof(MinMaxLengthCheckConverter48))]
        public string Zh { get; set; }
    }

    public partial class MaxProgressPerContributionTitle
    {
        [JsonPropertyName("de")]
        [JsonConverter(typeof(MinMaxLengthCheckConverter49))]
        public string De { get; set; }

        [JsonPropertyName("en")]
        [JsonConverter(typeof(MinMaxLengthCheckConverter50))]
        public string En { get; set; }

        [JsonPropertyName("es")]
        [JsonConverter(typeof(MinMaxLengthCheckConverter7))]
        public string Es { get; set; }

        [JsonPropertyName("fr")]
        [JsonConverter(typeof(MinMaxLengthCheckConverter1))]
        public string Fr { get; set; }

        [JsonPropertyName("ja")]
        [JsonConverter(typeof(MinMaxLengthCheckConverter51))]
        public string Ja { get; set; }

        [JsonPropertyName("ko")]
        [JsonConverter(typeof(MinMaxLengthCheckConverter8))]
        public string Ko { get; set; }

        [JsonPropertyName("ru")]
        [JsonConverter(typeof(MinMaxLengthCheckConverter52))]
        public string Ru { get; set; }

        [JsonPropertyName("zh")]
        [JsonConverter(typeof(MinMaxLengthCheckConverter8))]
        public string Zh { get; set; }
    }

    public partial class MaxProgressPerContributionUnsetDescription
    {
        [JsonPropertyName("de")]
        [JsonConverter(typeof(MinMaxLengthCheckConverter49))]
        public string De { get; set; }

        [JsonPropertyName("en")]
        [JsonConverter(typeof(MinMaxLengthCheckConverter53))]
        public string En { get; set; }

        [JsonPropertyName("es")]
        [JsonConverter(typeof(MinMaxLengthCheckConverter53))]
        public string Es { get; set; }

        [JsonPropertyName("fr")]
        [JsonConverter(typeof(MinMaxLengthCheckConverter54))]
        public string Fr { get; set; }

        [JsonPropertyName("ja")]
        [JsonConverter(typeof(MinMaxLengthCheckConverter55))]
        public string Ja { get; set; }

        [JsonPropertyName("ko")]
        [JsonConverter(typeof(MinMaxLengthCheckConverter6))]
        public string Ko { get; set; }

        [JsonPropertyName("ru")]
        [JsonConverter(typeof(MinMaxLengthCheckConverter56))]
        public string Ru { get; set; }

        [JsonPropertyName("zh")]
        [JsonConverter(typeof(MinMaxLengthCheckConverter57))]
        public string Zh { get; set; }
    }

    public partial class Parameter
    {
        [JsonPropertyName("_key")]
        [JsonConverter(typeof(MinMaxLengthCheckConverter58))]
        public string Key { get; set; }

        [JsonIgnore(Condition = JsonIgnoreCondition.WhenWritingNull)]
        [JsonPropertyName("boolean")]
        public Boolean? Boolean { get; set; }

        [JsonIgnore(Condition = JsonIgnoreCondition.WhenWritingNull)]
        [JsonPropertyName("itemDelivery")]
        public ItemDelivery? ItemDelivery { get; set; }

        [JsonIgnore(Condition = JsonIgnoreCondition.WhenWritingNull)]
        [JsonPropertyName("matcher")]
        public Matcher? Matcher { get; set; }
    }

    public partial class Boolean
    {
        [JsonPropertyName("choiceLabel")]
        public ChoiceLabel ChoiceLabel { get; set; }

        [JsonPropertyName("default")]
        public bool Default { get; set; }

        [JsonPropertyName("description")]
        public BooleanDescription Description { get; set; }

        [JsonPropertyName("iconID")]
        public BooleanIconId IconId { get; set; }

        [JsonPropertyName("optionFalse")]
        public OptionFalse OptionFalse { get; set; }

        [JsonPropertyName("optionTrue")]
        public OptionTrue OptionTrue { get; set; }

        [JsonPropertyName("title")]
        public BooleanTitle Title { get; set; }
    }

    public partial class ChoiceLabel
    {
        [JsonPropertyName("de")]
        [JsonConverter(typeof(MinMaxLengthCheckConverter59))]
        public string De { get; set; }

        [JsonPropertyName("en")]
        [JsonConverter(typeof(MinMaxLengthCheckConverter60))]
        public string En { get; set; }

        [JsonPropertyName("es")]
        [JsonConverter(typeof(MinMaxLengthCheckConverter61))]
        public string Es { get; set; }

        [JsonPropertyName("fr")]
        [JsonConverter(typeof(MinMaxLengthCheckConverter62))]
        public string Fr { get; set; }

        [JsonPropertyName("ja")]
        [JsonConverter(typeof(MinMaxLengthCheckConverter63))]
        public string Ja { get; set; }

        [JsonPropertyName("ko")]
        [JsonConverter(typeof(MinMaxLengthCheckConverter64))]
        public string Ko { get; set; }

        [JsonPropertyName("ru")]
        [JsonConverter(typeof(MinMaxLengthCheckConverter65))]
        public string Ru { get; set; }

        [JsonPropertyName("zh")]
        [JsonConverter(typeof(MinMaxLengthCheckConverter66))]
        public string Zh { get; set; }
    }

    public partial class BooleanDescription
    {
        [JsonPropertyName("de")]
        [JsonConverter(typeof(MinMaxLengthCheckConverter67))]
        public string De { get; set; }

        [JsonPropertyName("en")]
        [JsonConverter(typeof(MinMaxLengthCheckConverter68))]
        public string En { get; set; }

        [JsonPropertyName("es")]
        [JsonConverter(typeof(MinMaxLengthCheckConverter69))]
        public string Es { get; set; }

        [JsonPropertyName("fr")]
        [JsonConverter(typeof(MinMaxLengthCheckConverter70))]
        public string Fr { get; set; }

        [JsonPropertyName("ja")]
        [JsonConverter(typeof(MinMaxLengthCheckConverter71))]
        public string Ja { get; set; }

        [JsonPropertyName("ko")]
        [JsonConverter(typeof(MinMaxLengthCheckConverter72))]
        public string Ko { get; set; }

        [JsonPropertyName("ru")]
        [JsonConverter(typeof(MinMaxLengthCheckConverter73))]
        public string Ru { get; set; }

        [JsonPropertyName("zh")]
        [JsonConverter(typeof(MinMaxLengthCheckConverter74))]
        public string Zh { get; set; }
    }

    public partial class OptionFalse
    {
        [JsonPropertyName("description")]
        public OptionFalseDescription Description { get; set; }

        [JsonPropertyName("title")]
        public OptionFalseTitle Title { get; set; }
    }

    public partial class OptionFalseDescription
    {
        [JsonPropertyName("de")]
        [JsonConverter(typeof(MinMaxLengthCheckConverter75))]
        public string De { get; set; }

        [JsonPropertyName("en")]
        [JsonConverter(typeof(MinMaxLengthCheckConverter76))]
        public string En { get; set; }

        [JsonPropertyName("es")]
        [JsonConverter(typeof(MinMaxLengthCheckConverter77))]
        public string Es { get; set; }

        [JsonPropertyName("fr")]
        [JsonConverter(typeof(MinMaxLengthCheckConverter78))]
        public string Fr { get; set; }

        [JsonPropertyName("ja")]
        [JsonConverter(typeof(MinMaxLengthCheckConverter79))]
        public string Ja { get; set; }

        [JsonPropertyName("ko")]
        [JsonConverter(typeof(MinMaxLengthCheckConverter80))]
        public string Ko { get; set; }

        [JsonPropertyName("ru")]
        [JsonConverter(typeof(MinMaxLengthCheckConverter81))]
        public string Ru { get; set; }

        [JsonPropertyName("zh")]
        [JsonConverter(typeof(MinMaxLengthCheckConverter82))]
        public string Zh { get; set; }
    }

    public partial class OptionFalseTitle
    {
        [JsonPropertyName("de")]
        [JsonConverter(typeof(MinMaxLengthCheckConverter75))]
        public string De { get; set; }

        [JsonPropertyName("en")]
        [JsonConverter(typeof(MinMaxLengthCheckConverter76))]
        public string En { get; set; }

        [JsonPropertyName("es")]
        [JsonConverter(typeof(MinMaxLengthCheckConverter77))]
        public string Es { get; set; }

        [JsonPropertyName("fr")]
        [JsonConverter(typeof(MinMaxLengthCheckConverter78))]
        public string Fr { get; set; }

        [JsonPropertyName("ja")]
        [JsonConverter(typeof(MinMaxLengthCheckConverter79))]
        public string Ja { get; set; }

        [JsonPropertyName("ko")]
        [JsonConverter(typeof(MinMaxLengthCheckConverter80))]
        public string Ko { get; set; }

        [JsonPropertyName("ru")]
        [JsonConverter(typeof(MinMaxLengthCheckConverter81))]
        public string Ru { get; set; }

        [JsonPropertyName("zh")]
        [JsonConverter(typeof(MinMaxLengthCheckConverter82))]
        public string Zh { get; set; }
    }

    public partial class OptionTrue
    {
        [JsonPropertyName("description")]
        public OptionTrueDescription Description { get; set; }

        [JsonPropertyName("title")]
        public OptionTrueTitle Title { get; set; }
    }

    public partial class OptionTrueDescription
    {
        [JsonPropertyName("de")]
        [JsonConverter(typeof(MinMaxLengthCheckConverter83))]
        public string De { get; set; }

        [JsonPropertyName("en")]
        [JsonConverter(typeof(MinMaxLengthCheckConverter84))]
        public string En { get; set; }

        [JsonPropertyName("es")]
        [JsonConverter(typeof(MinMaxLengthCheckConverter85))]
        public string Es { get; set; }

        [JsonPropertyName("fr")]
        [JsonConverter(typeof(MinMaxLengthCheckConverter86))]
        public string Fr { get; set; }

        [JsonPropertyName("ja")]
        [JsonConverter(typeof(MinMaxLengthCheckConverter87))]
        public string Ja { get; set; }

        [JsonPropertyName("ko")]
        [JsonConverter(typeof(MinMaxLengthCheckConverter88))]
        public string Ko { get; set; }

        [JsonPropertyName("ru")]
        [JsonConverter(typeof(MinMaxLengthCheckConverter89))]
        public string Ru { get; set; }

        [JsonPropertyName("zh")]
        [JsonConverter(typeof(MinMaxLengthCheckConverter90))]
        public string Zh { get; set; }
    }

    public partial class OptionTrueTitle
    {
        [JsonPropertyName("de")]
        [JsonConverter(typeof(MinMaxLengthCheckConverter83))]
        public string De { get; set; }

        [JsonPropertyName("en")]
        [JsonConverter(typeof(MinMaxLengthCheckConverter84))]
        public string En { get; set; }

        [JsonPropertyName("es")]
        [JsonConverter(typeof(MinMaxLengthCheckConverter85))]
        public string Es { get; set; }

        [JsonPropertyName("fr")]
        [JsonConverter(typeof(MinMaxLengthCheckConverter86))]
        public string Fr { get; set; }

        [JsonPropertyName("ja")]
        [JsonConverter(typeof(MinMaxLengthCheckConverter87))]
        public string Ja { get; set; }

        [JsonPropertyName("ko")]
        [JsonConverter(typeof(MinMaxLengthCheckConverter88))]
        public string Ko { get; set; }

        [JsonPropertyName("ru")]
        [JsonConverter(typeof(MinMaxLengthCheckConverter89))]
        public string Ru { get; set; }

        [JsonPropertyName("zh")]
        [JsonConverter(typeof(MinMaxLengthCheckConverter90))]
        public string Zh { get; set; }
    }

    public partial class BooleanTitle
    {
        [JsonPropertyName("de")]
        [JsonConverter(typeof(MinMaxLengthCheckConverter59))]
        public string De { get; set; }

        [JsonPropertyName("en")]
        [JsonConverter(typeof(MinMaxLengthCheckConverter60))]
        public string En { get; set; }

        [JsonPropertyName("es")]
        [JsonConverter(typeof(MinMaxLengthCheckConverter61))]
        public string Es { get; set; }

        [JsonPropertyName("fr")]
        [JsonConverter(typeof(MinMaxLengthCheckConverter62))]
        public string Fr { get; set; }

        [JsonPropertyName("ja")]
        [JsonConverter(typeof(MinMaxLengthCheckConverter63))]
        public string Ja { get; set; }

        [JsonPropertyName("ko")]
        [JsonConverter(typeof(MinMaxLengthCheckConverter64))]
        public string Ko { get; set; }

        [JsonPropertyName("ru")]
        [JsonConverter(typeof(MinMaxLengthCheckConverter65))]
        public string Ru { get; set; }

        [JsonPropertyName("zh")]
        [JsonConverter(typeof(MinMaxLengthCheckConverter66))]
        public string Zh { get; set; }
    }

    public partial class ItemDelivery
    {
        [JsonPropertyName("deliveryLocation")]
        public DeliveryLocation DeliveryLocation { get; set; }

        [JsonPropertyName("description")]
        public ItemDeliveryDescription Description { get; set; }

        [JsonPropertyName("iconID")]
        public ItemDeliveryIconId IconId { get; set; }

        [JsonPropertyName("inventoryType")]
        public InventoryType InventoryType { get; set; }

        [JsonPropertyName("title")]
        public ItemDeliveryTitle Title { get; set; }
    }

    public partial class DeliveryLocation
    {
        [JsonPropertyName("acceptedValueTypes")]
        public AcceptedValueType[] AcceptedValueTypes { get; set; }

        [JsonPropertyName("description")]
        public DeliveryLocationDescription Description { get; set; }

        [JsonPropertyName("iconID")]
        public DeliveryLocationIconId IconId { get; set; }

        [JsonPropertyName("maxEntries")]
        public long MaxEntries { get; set; }

        [JsonPropertyName("title")]
        public DeliveryLocationTitle Title { get; set; }

        [JsonPropertyName("unsetDescription")]
        public DeliveryLocationUnsetDescription UnsetDescription { get; set; }
    }

    public partial class DeliveryLocationDescription
    {
        [JsonPropertyName("de")]
        [JsonConverter(typeof(MinMaxLengthCheckConverter91))]
        public string De { get; set; }

        [JsonPropertyName("en")]
        [JsonConverter(typeof(MinMaxLengthCheckConverter92))]
        public string En { get; set; }

        [JsonPropertyName("es")]
        [JsonConverter(typeof(MinMaxLengthCheckConverter93))]
        public string Es { get; set; }

        [JsonPropertyName("fr")]
        [JsonConverter(typeof(MinMaxLengthCheckConverter94))]
        public string Fr { get; set; }

        [JsonPropertyName("ja")]
        [JsonConverter(typeof(MinMaxLengthCheckConverter95))]
        public string Ja { get; set; }

        [JsonPropertyName("ko")]
        [JsonConverter(typeof(MinMaxLengthCheckConverter96))]
        public string Ko { get; set; }

        [JsonPropertyName("ru")]
        [JsonConverter(typeof(MinMaxLengthCheckConverter92))]
        public string Ru { get; set; }

        [JsonPropertyName("zh")]
        [JsonConverter(typeof(MinMaxLengthCheckConverter53))]
        public string Zh { get; set; }
    }

    public partial class DeliveryLocationTitle
    {
        [JsonPropertyName("de")]
        [JsonConverter(typeof(MinMaxLengthCheckConverter97))]
        public string De { get; set; }

        [JsonPropertyName("en")]
        [JsonConverter(typeof(MinMaxLengthCheckConverter98))]
        public string En { get; set; }

        [JsonPropertyName("es")]
        [JsonConverter(typeof(MinMaxLengthCheckConverter99))]
        public string Es { get; set; }

        [JsonPropertyName("fr")]
        [JsonConverter(typeof(MinMaxLengthCheckConverter98))]
        public string Fr { get; set; }

        [JsonPropertyName("ja")]
        [JsonConverter(typeof(MinMaxLengthCheckConverter100))]
        public string Ja { get; set; }

        [JsonPropertyName("ko")]
        [JsonConverter(typeof(MinMaxLengthCheckConverter100))]
        public string Ko { get; set; }

        [JsonPropertyName("ru")]
        [JsonConverter(typeof(MinMaxLengthCheckConverter101))]
        public string Ru { get; set; }

        [JsonPropertyName("zh")]
        [JsonConverter(typeof(MinMaxLengthCheckConverter100))]
        public string Zh { get; set; }
    }

    public partial class DeliveryLocationUnsetDescription
    {
        [JsonPropertyName("de")]
        [JsonConverter(typeof(MinMaxLengthCheckConverter102))]
        public string De { get; set; }

        [JsonPropertyName("en")]
        [JsonConverter(typeof(MinMaxLengthCheckConverter103))]
        public string En { get; set; }

        [JsonPropertyName("es")]
        [JsonConverter(typeof(MinMaxLengthCheckConverter55))]
        public string Es { get; set; }

        [JsonPropertyName("fr")]
        [JsonConverter(typeof(MinMaxLengthCheckConverter51))]
        public string Fr { get; set; }

        [JsonPropertyName("ja")]
        [JsonConverter(typeof(MinMaxLengthCheckConverter104))]
        public string Ja { get; set; }

        [JsonPropertyName("ko")]
        [JsonConverter(typeof(MinMaxLengthCheckConverter104))]
        public string Ko { get; set; }

        [JsonPropertyName("ru")]
        [JsonConverter(typeof(MinMaxLengthCheckConverter101))]
        public string Ru { get; set; }

        [JsonPropertyName("zh")]
        [JsonConverter(typeof(MinMaxLengthCheckConverter97))]
        public string Zh { get; set; }
    }

    public partial class ItemDeliveryDescription
    {
        [JsonPropertyName("de")]
        [JsonConverter(typeof(MinMaxLengthCheckConverter105))]
        public string De { get; set; }

        [JsonPropertyName("en")]
        [JsonConverter(typeof(MinMaxLengthCheckConverter106))]
        public string En { get; set; }

        [JsonPropertyName("es")]
        [JsonConverter(typeof(MinMaxLengthCheckConverter107))]
        public string Es { get; set; }

        [JsonPropertyName("fr")]
        [JsonConverter(typeof(MinMaxLengthCheckConverter2))]
        public string Fr { get; set; }

        [JsonPropertyName("ja")]
        [JsonConverter(typeof(MinMaxLengthCheckConverter50))]
        public string Ja { get; set; }

        [JsonPropertyName("ko")]
        [JsonConverter(typeof(MinMaxLengthCheckConverter108))]
        public string Ko { get; set; }

        [JsonPropertyName("ru")]
        [JsonConverter(typeof(MinMaxLengthCheckConverter109))]
        public string Ru { get; set; }

        [JsonPropertyName("zh")]
        [JsonConverter(typeof(MinMaxLengthCheckConverter51))]
        public string Zh { get; set; }
    }

    public partial class InventoryType
    {
        [JsonPropertyName("acceptedValueTypes")]
        [JsonConverter(typeof(FluffyDecodeArrayConverter))]
        public string[] AcceptedValueTypes { get; set; }

        [JsonPropertyName("description")]
        public InventoryTypeDescription Description { get; set; }

        [JsonPropertyName("iconID")]
        public ItemDeliveryIconId IconId { get; set; }

        [JsonPropertyName("title")]
        public InventoryTypeTitle Title { get; set; }

        [JsonPropertyName("unsetDescription")]
        public InventoryTypeUnsetDescription UnsetDescription { get; set; }
    }

    public partial class InventoryTypeDescription
    {
        [JsonPropertyName("de")]
        [JsonConverter(typeof(MinMaxLengthCheckConverter105))]
        public string De { get; set; }

        [JsonPropertyName("en")]
        [JsonConverter(typeof(MinMaxLengthCheckConverter106))]
        public string En { get; set; }

        [JsonPropertyName("es")]
        [JsonConverter(typeof(MinMaxLengthCheckConverter107))]
        public string Es { get; set; }

        [JsonPropertyName("fr")]
        [JsonConverter(typeof(MinMaxLengthCheckConverter2))]
        public string Fr { get; set; }

        [JsonPropertyName("ja")]
        [JsonConverter(typeof(MinMaxLengthCheckConverter50))]
        public string Ja { get; set; }

        [JsonPropertyName("ko")]
        [JsonConverter(typeof(MinMaxLengthCheckConverter108))]
        public string Ko { get; set; }

        [JsonPropertyName("ru")]
        [JsonConverter(typeof(MinMaxLengthCheckConverter109))]
        public string Ru { get; set; }

        [JsonPropertyName("zh")]
        [JsonConverter(typeof(MinMaxLengthCheckConverter51))]
        public string Zh { get; set; }
    }

    public partial class InventoryTypeTitle
    {
        [JsonPropertyName("de")]
        [JsonConverter(typeof(MinMaxLengthCheckConverter110))]
        public string De { get; set; }

        [JsonPropertyName("en")]
        [JsonConverter(typeof(MinMaxLengthCheckConverter5))]
        public string En { get; set; }

        [JsonPropertyName("es")]
        [JsonConverter(typeof(MinMaxLengthCheckConverter50))]
        public string Es { get; set; }

        [JsonPropertyName("fr")]
        [JsonConverter(typeof(MinMaxLengthCheckConverter111))]
        public string Fr { get; set; }

        [JsonPropertyName("ja")]
        [JsonConverter(typeof(MinMaxLengthCheckConverter6))]
        public string Ja { get; set; }

        [JsonPropertyName("ko")]
        [JsonConverter(typeof(MinMaxLengthCheckConverter103))]
        public string Ko { get; set; }

        [JsonPropertyName("ru")]
        [JsonConverter(typeof(MinMaxLengthCheckConverter108))]
        public string Ru { get; set; }

        [JsonPropertyName("zh")]
        [JsonConverter(typeof(MinMaxLengthCheckConverter99))]
        public string Zh { get; set; }
    }

    public partial class InventoryTypeUnsetDescription
    {
        [JsonPropertyName("de")]
        [JsonConverter(typeof(MinMaxLengthCheckConverter102))]
        public string De { get; set; }

        [JsonPropertyName("en")]
        [JsonConverter(typeof(MinMaxLengthCheckConverter103))]
        public string En { get; set; }

        [JsonPropertyName("es")]
        [JsonConverter(typeof(MinMaxLengthCheckConverter55))]
        public string Es { get; set; }

        [JsonPropertyName("fr")]
        [JsonConverter(typeof(MinMaxLengthCheckConverter51))]
        public string Fr { get; set; }

        [JsonPropertyName("ja")]
        [JsonConverter(typeof(MinMaxLengthCheckConverter104))]
        public string Ja { get; set; }

        [JsonPropertyName("ko")]
        [JsonConverter(typeof(MinMaxLengthCheckConverter104))]
        public string Ko { get; set; }

        [JsonPropertyName("ru")]
        [JsonConverter(typeof(MinMaxLengthCheckConverter101))]
        public string Ru { get; set; }

        [JsonPropertyName("zh")]
        [JsonConverter(typeof(MinMaxLengthCheckConverter97))]
        public string Zh { get; set; }
    }

    public partial class ItemDeliveryTitle
    {
        [JsonPropertyName("de")]
        [JsonConverter(typeof(MinMaxLengthCheckConverter110))]
        public string De { get; set; }

        [JsonPropertyName("en")]
        [JsonConverter(typeof(MinMaxLengthCheckConverter5))]
        public string En { get; set; }

        [JsonPropertyName("es")]
        [JsonConverter(typeof(MinMaxLengthCheckConverter50))]
        public string Es { get; set; }

        [JsonPropertyName("fr")]
        [JsonConverter(typeof(MinMaxLengthCheckConverter111))]
        public string Fr { get; set; }

        [JsonPropertyName("ja")]
        [JsonConverter(typeof(MinMaxLengthCheckConverter6))]
        public string Ja { get; set; }

        [JsonPropertyName("ko")]
        [JsonConverter(typeof(MinMaxLengthCheckConverter103))]
        public string Ko { get; set; }

        [JsonPropertyName("ru")]
        [JsonConverter(typeof(MinMaxLengthCheckConverter108))]
        public string Ru { get; set; }

        [JsonPropertyName("zh")]
        [JsonConverter(typeof(MinMaxLengthCheckConverter99))]
        public string Zh { get; set; }
    }

    public partial class Matcher
    {
        [JsonPropertyName("acceptedValueTypes")]
        [JsonConverter(typeof(TentacledDecodeArrayConverter))]
        public string[] AcceptedValueTypes { get; set; }

        [JsonPropertyName("description")]
        public MatcherDescription Description { get; set; }

        [JsonPropertyName("iconID")]
        [JsonConverter(typeof(MinMaxLengthCheckConverter121))]
        public string IconId { get; set; }

        [JsonPropertyName("maxEntries")]
        public long MaxEntries { get; set; }

        [JsonPropertyName("optional")]
        public bool Optional { get; set; }

        [JsonPropertyName("title")]
        public MatcherTitle Title { get; set; }

        [JsonPropertyName("type")]
        [JsonConverter(typeof(MinMaxLengthCheckConverter130))]
        public string Type { get; set; }

        [JsonPropertyName("unsetDescription")]
        public MatcherUnsetDescription UnsetDescription { get; set; }
    }

    public partial class MatcherDescription
    {
        [JsonPropertyName("de")]
        [JsonConverter(typeof(MinMaxLengthCheckConverter113))]
        public string De { get; set; }

        [JsonPropertyName("en")]
        [JsonConverter(typeof(MinMaxLengthCheckConverter114))]
        public string En { get; set; }

        [JsonPropertyName("es")]
        [JsonConverter(typeof(MinMaxLengthCheckConverter115))]
        public string Es { get; set; }

        [JsonPropertyName("fr")]
        [JsonConverter(typeof(MinMaxLengthCheckConverter116))]
        public string Fr { get; set; }

        [JsonPropertyName("ja")]
        [JsonConverter(typeof(MinMaxLengthCheckConverter117))]
        public string Ja { get; set; }

        [JsonPropertyName("ko")]
        [JsonConverter(typeof(MinMaxLengthCheckConverter118))]
        public string Ko { get; set; }

        [JsonPropertyName("ru")]
        [JsonConverter(typeof(MinMaxLengthCheckConverter119))]
        public string Ru { get; set; }

        [JsonPropertyName("zh")]
        [JsonConverter(typeof(MinMaxLengthCheckConverter120))]
        public string Zh { get; set; }
    }

    public partial class MatcherTitle
    {
        [JsonPropertyName("de")]
        [JsonConverter(typeof(MinMaxLengthCheckConverter122))]
        public string De { get; set; }

        [JsonPropertyName("en")]
        [JsonConverter(typeof(MinMaxLengthCheckConverter123))]
        public string En { get; set; }

        [JsonPropertyName("es")]
        [JsonConverter(typeof(MinMaxLengthCheckConverter124))]
        public string Es { get; set; }

        [JsonPropertyName("fr")]
        [JsonConverter(typeof(MinMaxLengthCheckConverter125))]
        public string Fr { get; set; }

        [JsonPropertyName("ja")]
        [JsonConverter(typeof(MinMaxLengthCheckConverter126))]
        public string Ja { get; set; }

        [JsonPropertyName("ko")]
        [JsonConverter(typeof(MinMaxLengthCheckConverter127))]
        public string Ko { get; set; }

        [JsonPropertyName("ru")]
        [JsonConverter(typeof(MinMaxLengthCheckConverter128))]
        public string Ru { get; set; }

        [JsonPropertyName("zh")]
        [JsonConverter(typeof(MinMaxLengthCheckConverter129))]
        public string Zh { get; set; }
    }

    public partial class MatcherUnsetDescription
    {
        [JsonPropertyName("de")]
        [JsonConverter(typeof(MinMaxLengthCheckConverter102))]
        public string De { get; set; }

        [JsonPropertyName("en")]
        [JsonConverter(typeof(MinMaxLengthCheckConverter103))]
        public string En { get; set; }

        [JsonPropertyName("es")]
        [JsonConverter(typeof(MinMaxLengthCheckConverter55))]
        public string Es { get; set; }

        [JsonPropertyName("fr")]
        [JsonConverter(typeof(MinMaxLengthCheckConverter51))]
        public string Fr { get; set; }

        [JsonPropertyName("ja")]
        [JsonConverter(typeof(MinMaxLengthCheckConverter104))]
        public string Ja { get; set; }

        [JsonPropertyName("ko")]
        [JsonConverter(typeof(MinMaxLengthCheckConverter104))]
        public string Ko { get; set; }

        [JsonPropertyName("ru")]
        [JsonConverter(typeof(MinMaxLengthCheckConverter101))]
        public string Ru { get; set; }

        [JsonPropertyName("zh")]
        [JsonConverter(typeof(MinMaxLengthCheckConverter97))]
        public string Zh { get; set; }
    }

    public partial class ProgressDescription
    {
        [JsonPropertyName("de")]
        [JsonConverter(typeof(MinMaxLengthCheckConverter131))]
        public string De { get; set; }

        [JsonPropertyName("en")]
        [JsonConverter(typeof(MinMaxLengthCheckConverter132))]
        public string En { get; set; }

        [JsonPropertyName("es")]
        [JsonConverter(typeof(MinMaxLengthCheckConverter133))]
        public string Es { get; set; }

        [JsonPropertyName("fr")]
        [JsonConverter(typeof(MinMaxLengthCheckConverter134))]
        public string Fr { get; set; }

        [JsonPropertyName("ja")]
        [JsonConverter(typeof(MinMaxLengthCheckConverter135))]
        public string Ja { get; set; }

        [JsonPropertyName("ko")]
        [JsonConverter(typeof(MinMaxLengthCheckConverter136))]
        public string Ko { get; set; }

        [JsonPropertyName("ru")]
        [JsonConverter(typeof(MinMaxLengthCheckConverter137))]
        public string Ru { get; set; }

        [JsonPropertyName("zh")]
        [JsonConverter(typeof(MinMaxLengthCheckConverter138))]
        public string Zh { get; set; }
    }

    public partial class RewardDescription
    {
        [JsonPropertyName("de")]
        [JsonConverter(typeof(MinMaxLengthCheckConverter139))]
        public string De { get; set; }

        [JsonPropertyName("en")]
        [JsonConverter(typeof(MinMaxLengthCheckConverter140))]
        public string En { get; set; }

        [JsonPropertyName("es")]
        [JsonConverter(typeof(MinMaxLengthCheckConverter141))]
        public string Es { get; set; }

        [JsonPropertyName("fr")]
        [JsonConverter(typeof(MinMaxLengthCheckConverter142))]
        public string Fr { get; set; }

        [JsonPropertyName("ja")]
        [JsonConverter(typeof(MinMaxLengthCheckConverter143))]
        public string Ja { get; set; }

        [JsonPropertyName("ko")]
        [JsonConverter(typeof(MinMaxLengthCheckConverter144))]
        public string Ko { get; set; }

        [JsonPropertyName("ru")]
        [JsonConverter(typeof(MinMaxLengthCheckConverter145))]
        public string Ru { get; set; }

        [JsonPropertyName("zh")]
        [JsonConverter(typeof(MinMaxLengthCheckConverter146))]
        public string Zh { get; set; }
    }

    public partial class TargetDescription
    {
        [JsonPropertyName("de")]
        [JsonConverter(typeof(MinMaxLengthCheckConverter147))]
        public string De { get; set; }

        [JsonPropertyName("en")]
        [JsonConverter(typeof(MinMaxLengthCheckConverter148))]
        public string En { get; set; }

        [JsonPropertyName("es")]
        [JsonConverter(typeof(MinMaxLengthCheckConverter149))]
        public string Es { get; set; }

        [JsonPropertyName("fr")]
        [JsonConverter(typeof(MinMaxLengthCheckConverter150))]
        public string Fr { get; set; }

        [JsonPropertyName("ja")]
        [JsonConverter(typeof(MinMaxLengthCheckConverter151))]
        public string Ja { get; set; }

        [JsonPropertyName("ko")]
        [JsonConverter(typeof(MinMaxLengthCheckConverter152))]
        public string Ko { get; set; }

        [JsonPropertyName("ru")]
        [JsonConverter(typeof(MinMaxLengthCheckConverter153))]
        public string Ru { get; set; }

        [JsonPropertyName("zh")]
        [JsonConverter(typeof(MinMaxLengthCheckConverter154))]
        public string Zh { get; set; }
    }

    public partial class ValueTitle
    {
        [JsonPropertyName("de")]
        [JsonConverter(typeof(MinMaxLengthCheckConverter155))]
        public string De { get; set; }

        [JsonPropertyName("en")]
        [JsonConverter(typeof(MinMaxLengthCheckConverter155))]
        public string En { get; set; }

        [JsonPropertyName("es")]
        [JsonConverter(typeof(MinMaxLengthCheckConverter156))]
        public string Es { get; set; }

        [JsonPropertyName("fr")]
        [JsonConverter(typeof(MinMaxLengthCheckConverter157))]
        public string Fr { get; set; }

        [JsonPropertyName("ja")]
        [JsonConverter(typeof(MinMaxLengthCheckConverter158))]
        public string Ja { get; set; }

        [JsonPropertyName("ko")]
        [JsonConverter(typeof(MinMaxLengthCheckConverter159))]
        public string Ko { get; set; }

        [JsonPropertyName("ru")]
        [JsonConverter(typeof(MinMaxLengthCheckConverter160))]
        public string Ru { get; set; }

        [JsonPropertyName("zh")]
        [JsonConverter(typeof(MinMaxLengthCheckConverter161))]
        public string Zh { get; set; }
    }

    public enum ContributionMultiplierIconId { Isk };

    public enum Key { BoostShield, CaptureFwComplex, DamageShip, DefendFwComplex, DeliverItem, KillCapsuleer, KillNpc, MineOre, RepairArmor, ShipInsurance };

    public enum MaxContributionsPerParticipantIconId { Isk, Personal };

    public enum BooleanIconId { Person };

    public enum AcceptedValueType { Station, Structure };

    public enum DeliveryLocationIconId { Location };

    public enum ItemDeliveryIconId { Inventory };

    public partial class FreelanceJobSchema
    {
        public static FreelanceJobSchema FromJson(string json) => JsonSerializer.Deserialize<FreelanceJobSchema>(json, QuickType.Converter.Settings);
    }

    public static class Serialize
    {
        public static string ToJson(this FreelanceJobSchema self) => JsonSerializer.Serialize(self, QuickType.Converter.Settings);
    }

    internal static class Converter
    {
        public static readonly JsonSerializerOptions Settings = new(JsonSerializerDefaults.General)
        {
            Converters =
            {
                KeyConverter.Singleton,
                ContributionMultiplierIconIdConverter.Singleton,
                MaxContributionsPerParticipantIconIdConverter.Singleton,
                BooleanIconIdConverter.Singleton,
                AcceptedValueTypeConverter.Singleton,
                DeliveryLocationIconIdConverter.Singleton,
                ItemDeliveryIconIdConverter.Singleton,
                new DateOnlyConverter(),
                new TimeOnlyConverter(),
                IsoDateTimeOffsetConverter.Singleton
            },
        };
    }

    internal class KeyConverter : JsonConverter<Key>
    {
        public override bool CanConvert(Type t) => t == typeof(Key);

        public override Key Read(ref Utf8JsonReader reader, Type typeToConvert, JsonSerializerOptions options)
        {
            var value = reader.GetString();
            switch (value)
            {
                case "BoostShield":
                    return Key.BoostShield;
                case "CaptureFWComplex":
                    return Key.CaptureFwComplex;
                case "DamageShip":
                    return Key.DamageShip;
                case "DefendFWComplex":
                    return Key.DefendFwComplex;
                case "DeliverItem":
                    return Key.DeliverItem;
                case "KillCapsuleer":
                    return Key.KillCapsuleer;
                case "KillNPC":
                    return Key.KillNpc;
                case "MineOre":
                    return Key.MineOre;
                case "RepairArmor":
                    return Key.RepairArmor;
                case "ShipInsurance":
                    return Key.ShipInsurance;
            }
            throw new Exception("Cannot unmarshal type Key");
        }

        public override void Write(Utf8JsonWriter writer, Key value, JsonSerializerOptions options)
        {
            switch (value)
            {
                case Key.BoostShield:
                    JsonSerializer.Serialize(writer, "BoostShield", options);
                    return;
                case Key.CaptureFwComplex:
                    JsonSerializer.Serialize(writer, "CaptureFWComplex", options);
                    return;
                case Key.DamageShip:
                    JsonSerializer.Serialize(writer, "DamageShip", options);
                    return;
                case Key.DefendFwComplex:
                    JsonSerializer.Serialize(writer, "DefendFWComplex", options);
                    return;
                case Key.DeliverItem:
                    JsonSerializer.Serialize(writer, "DeliverItem", options);
                    return;
                case Key.KillCapsuleer:
                    JsonSerializer.Serialize(writer, "KillCapsuleer", options);
                    return;
                case Key.KillNpc:
                    JsonSerializer.Serialize(writer, "KillNPC", options);
                    return;
                case Key.MineOre:
                    JsonSerializer.Serialize(writer, "MineOre", options);
                    return;
                case Key.RepairArmor:
                    JsonSerializer.Serialize(writer, "RepairArmor", options);
                    return;
                case Key.ShipInsurance:
                    JsonSerializer.Serialize(writer, "ShipInsurance", options);
                    return;
            }
            throw new Exception("Cannot marshal type Key");
        }

        public static readonly KeyConverter Singleton = new KeyConverter();
    }

    internal class PurpleDecodeArrayConverter : JsonConverter<string[]>
    {
        public override bool CanConvert(Type t) => t == typeof(string[]);

        public override string[] Read(ref Utf8JsonReader reader, Type typeToConvert, JsonSerializerOptions options)
        {
            reader.Read();
            var value = new List<string>();
            while (reader.TokenType != JsonTokenType.EndArray)
            {
                var converter = PurpleMinMaxLengthCheckConverter.Singleton;
                var arrayItem = (string)converter.Read(ref reader, typeof(string), options);
                value.Add(arrayItem);
                reader.Read();
            }
            return value.ToArray();
        }

        public override void Write(Utf8JsonWriter writer, string[] value, JsonSerializerOptions options)
        {
            writer.WriteStartArray();
            foreach (var arrayItem in value)
            {
                var converter = PurpleMinMaxLengthCheckConverter.Singleton;
                converter.Write(writer, arrayItem, options);
            }
            writer.WriteEndArray();
            return;
        }

        public static readonly PurpleDecodeArrayConverter Singleton = new PurpleDecodeArrayConverter();
    }

    internal class PurpleMinMaxLengthCheckConverter : JsonConverter<string>
    {
        public override bool CanConvert(Type t) => t == typeof(string);

        public override string Read(ref Utf8JsonReader reader, Type typeToConvert, JsonSerializerOptions options)
        {
            var value = reader.GetString();
            if (value.Length >= 14 && value.Length <= 30)
            {
                return value;
            }
            throw new Exception("Cannot unmarshal type string");
        }

        public override void Write(Utf8JsonWriter writer, string value, JsonSerializerOptions options)
        {
            if (value.Length >= 14 && value.Length <= 30)
            {
                JsonSerializer.Serialize(writer, value, options);
                return;
            }
            throw new Exception("Cannot marshal type string");
        }

        public static readonly PurpleMinMaxLengthCheckConverter Singleton = new PurpleMinMaxLengthCheckConverter();
    }

    internal class FluffyMinMaxLengthCheckConverter : JsonConverter<string>
    {
        public override bool CanConvert(Type t) => t == typeof(string);

        public override string Read(ref Utf8JsonReader reader, Type typeToConvert, JsonSerializerOptions options)
        {
            var value = reader.GetString();
            if (value.Length >= 467 && value.Length <= 467)
            {
                return value;
            }
            throw new Exception("Cannot unmarshal type string");
        }

        public override void Write(Utf8JsonWriter writer, string value, JsonSerializerOptions options)
        {
            if (value.Length >= 467 && value.Length <= 467)
            {
                JsonSerializer.Serialize(writer, value, options);
                return;
            }
            throw new Exception("Cannot marshal type string");
        }

        public static readonly FluffyMinMaxLengthCheckConverter Singleton = new FluffyMinMaxLengthCheckConverter();
    }

    internal class TentacledMinMaxLengthCheckConverter : JsonConverter<string>
    {
        public override bool CanConvert(Type t) => t == typeof(string);

        public override string Read(ref Utf8JsonReader reader, Type typeToConvert, JsonSerializerOptions options)
        {
            var value = reader.GetString();
            if (value.Length >= 395 && value.Length <= 395)
            {
                return value;
            }
            throw new Exception("Cannot unmarshal type string");
        }

        public override void Write(Utf8JsonWriter writer, string value, JsonSerializerOptions options)
        {
            if (value.Length >= 395 && value.Length <= 395)
            {
                JsonSerializer.Serialize(writer, value, options);
                return;
            }
            throw new Exception("Cannot marshal type string");
        }

        public static readonly TentacledMinMaxLengthCheckConverter Singleton = new TentacledMinMaxLengthCheckConverter();
    }

    internal class StickyMinMaxLengthCheckConverter : JsonConverter<string>
    {
        public override bool CanConvert(Type t) => t == typeof(string);

        public override string Read(ref Utf8JsonReader reader, Type typeToConvert, JsonSerializerOptions options)
        {
            var value = reader.GetString();
            if (value.Length >= 439 && value.Length <= 439)
            {
                return value;
            }
            throw new Exception("Cannot unmarshal type string");
        }

        public override void Write(Utf8JsonWriter writer, string value, JsonSerializerOptions options)
        {
            if (value.Length >= 439 && value.Length <= 439)
            {
                JsonSerializer.Serialize(writer, value, options);
                return;
            }
            throw new Exception("Cannot marshal type string");
        }

        public static readonly StickyMinMaxLengthCheckConverter Singleton = new StickyMinMaxLengthCheckConverter();
    }

    internal class IndigoMinMaxLengthCheckConverter : JsonConverter<string>
    {
        public override bool CanConvert(Type t) => t == typeof(string);

        public override string Read(ref Utf8JsonReader reader, Type typeToConvert, JsonSerializerOptions options)
        {
            var value = reader.GetString();
            if (value.Length >= 441 && value.Length <= 441)
            {
                return value;
            }
            throw new Exception("Cannot unmarshal type string");
        }

        public override void Write(Utf8JsonWriter writer, string value, JsonSerializerOptions options)
        {
            if (value.Length >= 441 && value.Length <= 441)
            {
                JsonSerializer.Serialize(writer, value, options);
                return;
            }
            throw new Exception("Cannot marshal type string");
        }

        public static readonly IndigoMinMaxLengthCheckConverter Singleton = new IndigoMinMaxLengthCheckConverter();
    }

    internal class IndecentMinMaxLengthCheckConverter : JsonConverter<string>
    {
        public override bool CanConvert(Type t) => t == typeof(string);

        public override string Read(ref Utf8JsonReader reader, Type typeToConvert, JsonSerializerOptions options)
        {
            var value = reader.GetString();
            if (value.Length >= 155 && value.Length <= 155)
            {
                return value;
            }
            throw new Exception("Cannot unmarshal type string");
        }

        public override void Write(Utf8JsonWriter writer, string value, JsonSerializerOptions options)
        {
            if (value.Length >= 155 && value.Length <= 155)
            {
                JsonSerializer.Serialize(writer, value, options);
                return;
            }
            throw new Exception("Cannot marshal type string");
        }

        public static readonly IndecentMinMaxLengthCheckConverter Singleton = new IndecentMinMaxLengthCheckConverter();
    }

    internal class HilariousMinMaxLengthCheckConverter : JsonConverter<string>
    {
        public override bool CanConvert(Type t) => t == typeof(string);

        public override string Read(ref Utf8JsonReader reader, Type typeToConvert, JsonSerializerOptions options)
        {
            var value = reader.GetString();
            if (value.Length >= 217 && value.Length <= 217)
            {
                return value;
            }
            throw new Exception("Cannot unmarshal type string");
        }

        public override void Write(Utf8JsonWriter writer, string value, JsonSerializerOptions options)
        {
            if (value.Length >= 217 && value.Length <= 217)
            {
                JsonSerializer.Serialize(writer, value, options);
                return;
            }
            throw new Exception("Cannot marshal type string");
        }

        public static readonly HilariousMinMaxLengthCheckConverter Singleton = new HilariousMinMaxLengthCheckConverter();
    }

    internal class AmbitiousMinMaxLengthCheckConverter : JsonConverter<string>
    {
        public override bool CanConvert(Type t) => t == typeof(string);

        public override string Read(ref Utf8JsonReader reader, Type typeToConvert, JsonSerializerOptions options)
        {
            var value = reader.GetString();
            if (value.Length >= 438 && value.Length <= 438)
            {
                return value;
            }
            throw new Exception("Cannot unmarshal type string");
        }

        public override void Write(Utf8JsonWriter writer, string value, JsonSerializerOptions options)
        {
            if (value.Length >= 438 && value.Length <= 438)
            {
                JsonSerializer.Serialize(writer, value, options);
                return;
            }
            throw new Exception("Cannot marshal type string");
        }

        public static readonly AmbitiousMinMaxLengthCheckConverter Singleton = new AmbitiousMinMaxLengthCheckConverter();
    }

    internal class CunningMinMaxLengthCheckConverter : JsonConverter<string>
    {
        public override bool CanConvert(Type t) => t == typeof(string);

        public override string Read(ref Utf8JsonReader reader, Type typeToConvert, JsonSerializerOptions options)
        {
            var value = reader.GetString();
            if (value.Length >= 122 && value.Length <= 122)
            {
                return value;
            }
            throw new Exception("Cannot unmarshal type string");
        }

        public override void Write(Utf8JsonWriter writer, string value, JsonSerializerOptions options)
        {
            if (value.Length >= 122 && value.Length <= 122)
            {
                JsonSerializer.Serialize(writer, value, options);
                return;
            }
            throw new Exception("Cannot marshal type string");
        }

        public static readonly CunningMinMaxLengthCheckConverter Singleton = new CunningMinMaxLengthCheckConverter();
    }

    internal class ContributionMultiplierIconIdConverter : JsonConverter<ContributionMultiplierIconId>
    {
        public override bool CanConvert(Type t) => t == typeof(ContributionMultiplierIconId);

        public override ContributionMultiplierIconId Read(ref Utf8JsonReader reader, Type typeToConvert, JsonSerializerOptions options)
        {
            var value = reader.GetString();
            if (value == "isk")
            {
                return ContributionMultiplierIconId.Isk;
            }
            throw new Exception("Cannot unmarshal type ContributionMultiplierIconId");
        }

        public override void Write(Utf8JsonWriter writer, ContributionMultiplierIconId value, JsonSerializerOptions options)
        {
            if (value == ContributionMultiplierIconId.Isk)
            {
                JsonSerializer.Serialize(writer, "isk", options);
                return;
            }
            throw new Exception("Cannot marshal type ContributionMultiplierIconId");
        }

        public static readonly ContributionMultiplierIconIdConverter Singleton = new ContributionMultiplierIconIdConverter();
    }

    internal class MinMaxValueCheckConverter : JsonConverter<double>
    {
        public override bool CanConvert(Type t) => t == typeof(double);

        public override double Read(ref Utf8JsonReader reader, Type typeToConvert, JsonSerializerOptions options)
        {
            var value = reader.GetDouble();
            if (value >= 0.1 && value <= 0.1)
            {
                return value;
            }
            throw new Exception("Cannot unmarshal type double");
        }

        public override void Write(Utf8JsonWriter writer, double value, JsonSerializerOptions options)
        {
            if (value >= 0.1 && value <= 0.1)
            {
                JsonSerializer.Serialize(writer, value, options);
                return;
            }
            throw new Exception("Cannot marshal type double");
        }

        public static readonly MinMaxValueCheckConverter Singleton = new MinMaxValueCheckConverter();
    }

    internal class MagentaMinMaxLengthCheckConverter : JsonConverter<string>
    {
        public override bool CanConvert(Type t) => t == typeof(string);

        public override string Read(ref Utf8JsonReader reader, Type typeToConvert, JsonSerializerOptions options)
        {
            var value = reader.GetString();
            if (value.Length >= 49 && value.Length <= 49)
            {
                return value;
            }
            throw new Exception("Cannot unmarshal type string");
        }

        public override void Write(Utf8JsonWriter writer, string value, JsonSerializerOptions options)
        {
            if (value.Length >= 49 && value.Length <= 49)
            {
                JsonSerializer.Serialize(writer, value, options);
                return;
            }
            throw new Exception("Cannot marshal type string");
        }

        public static readonly MagentaMinMaxLengthCheckConverter Singleton = new MagentaMinMaxLengthCheckConverter();
    }

    internal class FriskyMinMaxLengthCheckConverter : JsonConverter<string>
    {
        public override bool CanConvert(Type t) => t == typeof(string);

        public override string Read(ref Utf8JsonReader reader, Type typeToConvert, JsonSerializerOptions options)
        {
            var value = reader.GetString();
            if (value.Length >= 48 && value.Length <= 48)
            {
                return value;
            }
            throw new Exception("Cannot unmarshal type string");
        }

        public override void Write(Utf8JsonWriter writer, string value, JsonSerializerOptions options)
        {
            if (value.Length >= 48 && value.Length <= 48)
            {
                JsonSerializer.Serialize(writer, value, options);
                return;
            }
            throw new Exception("Cannot marshal type string");
        }

        public static readonly FriskyMinMaxLengthCheckConverter Singleton = new FriskyMinMaxLengthCheckConverter();
    }

    internal class MischievousMinMaxLengthCheckConverter : JsonConverter<string>
    {
        public override bool CanConvert(Type t) => t == typeof(string);

        public override string Read(ref Utf8JsonReader reader, Type typeToConvert, JsonSerializerOptions options)
        {
            var value = reader.GetString();
            if (value.Length >= 51 && value.Length <= 51)
            {
                return value;
            }
            throw new Exception("Cannot unmarshal type string");
        }

        public override void Write(Utf8JsonWriter writer, string value, JsonSerializerOptions options)
        {
            if (value.Length >= 51 && value.Length <= 51)
            {
                JsonSerializer.Serialize(writer, value, options);
                return;
            }
            throw new Exception("Cannot marshal type string");
        }

        public static readonly MischievousMinMaxLengthCheckConverter Singleton = new MischievousMinMaxLengthCheckConverter();
    }

    internal class BraggadociousMinMaxLengthCheckConverter : JsonConverter<string>
    {
        public override bool CanConvert(Type t) => t == typeof(string);

        public override string Read(ref Utf8JsonReader reader, Type typeToConvert, JsonSerializerOptions options)
        {
            var value = reader.GetString();
            if (value.Length >= 55 && value.Length <= 55)
            {
                return value;
            }
            throw new Exception("Cannot unmarshal type string");
        }

        public override void Write(Utf8JsonWriter writer, string value, JsonSerializerOptions options)
        {
            if (value.Length >= 55 && value.Length <= 55)
            {
                JsonSerializer.Serialize(writer, value, options);
                return;
            }
            throw new Exception("Cannot marshal type string");
        }

        public static readonly BraggadociousMinMaxLengthCheckConverter Singleton = new BraggadociousMinMaxLengthCheckConverter();
    }

    internal class MinMaxLengthCheckConverter1 : JsonConverter<string>
    {
        public override bool CanConvert(Type t) => t == typeof(string);

        public override string Read(ref Utf8JsonReader reader, Type typeToConvert, JsonSerializerOptions options)
        {
            var value = reader.GetString();
            if (value.Length >= 32 && value.Length <= 32)
            {
                return value;
            }
            throw new Exception("Cannot unmarshal type string");
        }

        public override void Write(Utf8JsonWriter writer, string value, JsonSerializerOptions options)
        {
            if (value.Length >= 32 && value.Length <= 32)
            {
                JsonSerializer.Serialize(writer, value, options);
                return;
            }
            throw new Exception("Cannot marshal type string");
        }

        public static readonly MinMaxLengthCheckConverter1 Singleton = new MinMaxLengthCheckConverter1();
    }

    internal class MinMaxLengthCheckConverter2 : JsonConverter<string>
    {
        public override bool CanConvert(Type t) => t == typeof(string);

        public override string Read(ref Utf8JsonReader reader, Type typeToConvert, JsonSerializerOptions options)
        {
            var value = reader.GetString();
            if (value.Length >= 34 && value.Length <= 34)
            {
                return value;
            }
            throw new Exception("Cannot unmarshal type string");
        }

        public override void Write(Utf8JsonWriter writer, string value, JsonSerializerOptions options)
        {
            if (value.Length >= 34 && value.Length <= 34)
            {
                JsonSerializer.Serialize(writer, value, options);
                return;
            }
            throw new Exception("Cannot marshal type string");
        }

        public static readonly MinMaxLengthCheckConverter2 Singleton = new MinMaxLengthCheckConverter2();
    }

    internal class MinMaxLengthCheckConverter3 : JsonConverter<string>
    {
        public override bool CanConvert(Type t) => t == typeof(string);

        public override string Read(ref Utf8JsonReader reader, Type typeToConvert, JsonSerializerOptions options)
        {
            var value = reader.GetString();
            if (value.Length >= 40 && value.Length <= 40)
            {
                return value;
            }
            throw new Exception("Cannot unmarshal type string");
        }

        public override void Write(Utf8JsonWriter writer, string value, JsonSerializerOptions options)
        {
            if (value.Length >= 40 && value.Length <= 40)
            {
                JsonSerializer.Serialize(writer, value, options);
                return;
            }
            throw new Exception("Cannot marshal type string");
        }

        public static readonly MinMaxLengthCheckConverter3 Singleton = new MinMaxLengthCheckConverter3();
    }

    internal class MinMaxLengthCheckConverter4 : JsonConverter<string>
    {
        public override bool CanConvert(Type t) => t == typeof(string);

        public override string Read(ref Utf8JsonReader reader, Type typeToConvert, JsonSerializerOptions options)
        {
            var value = reader.GetString();
            if (value.Length >= 33 && value.Length <= 33)
            {
                return value;
            }
            throw new Exception("Cannot unmarshal type string");
        }

        public override void Write(Utf8JsonWriter writer, string value, JsonSerializerOptions options)
        {
            if (value.Length >= 33 && value.Length <= 33)
            {
                JsonSerializer.Serialize(writer, value, options);
                return;
            }
            throw new Exception("Cannot marshal type string");
        }

        public static readonly MinMaxLengthCheckConverter4 Singleton = new MinMaxLengthCheckConverter4();
    }

    internal class MinMaxLengthCheckConverter5 : JsonConverter<string>
    {
        public override bool CanConvert(Type t) => t == typeof(string);

        public override string Read(ref Utf8JsonReader reader, Type typeToConvert, JsonSerializerOptions options)
        {
            var value = reader.GetString();
            if (value.Length >= 18 && value.Length <= 18)
            {
                return value;
            }
            throw new Exception("Cannot unmarshal type string");
        }

        public override void Write(Utf8JsonWriter writer, string value, JsonSerializerOptions options)
        {
            if (value.Length >= 18 && value.Length <= 18)
            {
                JsonSerializer.Serialize(writer, value, options);
                return;
            }
            throw new Exception("Cannot marshal type string");
        }

        public static readonly MinMaxLengthCheckConverter5 Singleton = new MinMaxLengthCheckConverter5();
    }

    internal class MinMaxLengthCheckConverter6 : JsonConverter<string>
    {
        public override bool CanConvert(Type t) => t == typeof(string);

        public override string Read(ref Utf8JsonReader reader, Type typeToConvert, JsonSerializerOptions options)
        {
            var value = reader.GetString();
            if (value.Length >= 15 && value.Length <= 15)
            {
                return value;
            }
            throw new Exception("Cannot unmarshal type string");
        }

        public override void Write(Utf8JsonWriter writer, string value, JsonSerializerOptions options)
        {
            if (value.Length >= 15 && value.Length <= 15)
            {
                JsonSerializer.Serialize(writer, value, options);
                return;
            }
            throw new Exception("Cannot marshal type string");
        }

        public static readonly MinMaxLengthCheckConverter6 Singleton = new MinMaxLengthCheckConverter6();
    }

    internal class MinMaxLengthCheckConverter7 : JsonConverter<string>
    {
        public override bool CanConvert(Type t) => t == typeof(string);

        public override string Read(ref Utf8JsonReader reader, Type typeToConvert, JsonSerializerOptions options)
        {
            var value = reader.GetString();
            if (value.Length >= 31 && value.Length <= 31)
            {
                return value;
            }
            throw new Exception("Cannot unmarshal type string");
        }

        public override void Write(Utf8JsonWriter writer, string value, JsonSerializerOptions options)
        {
            if (value.Length >= 31 && value.Length <= 31)
            {
                JsonSerializer.Serialize(writer, value, options);
                return;
            }
            throw new Exception("Cannot marshal type string");
        }

        public static readonly MinMaxLengthCheckConverter7 Singleton = new MinMaxLengthCheckConverter7();
    }

    internal class MinMaxLengthCheckConverter8 : JsonConverter<string>
    {
        public override bool CanConvert(Type t) => t == typeof(string);

        public override string Read(ref Utf8JsonReader reader, Type typeToConvert, JsonSerializerOptions options)
        {
            var value = reader.GetString();
            if (value.Length >= 9 && value.Length <= 9)
            {
                return value;
            }
            throw new Exception("Cannot unmarshal type string");
        }

        public override void Write(Utf8JsonWriter writer, string value, JsonSerializerOptions options)
        {
            if (value.Length >= 9 && value.Length <= 9)
            {
                JsonSerializer.Serialize(writer, value, options);
                return;
            }
            throw new Exception("Cannot marshal type string");
        }

        public static readonly MinMaxLengthCheckConverter8 Singleton = new MinMaxLengthCheckConverter8();
    }

    internal class MinMaxLengthCheckConverter9 : JsonConverter<string>
    {
        public override bool CanConvert(Type t) => t == typeof(string);

        public override string Read(ref Utf8JsonReader reader, Type typeToConvert, JsonSerializerOptions options)
        {
            var value = reader.GetString();
            if (value.Length >= 28 && value.Length <= 410)
            {
                return value;
            }
            throw new Exception("Cannot unmarshal type string");
        }

        public override void Write(Utf8JsonWriter writer, string value, JsonSerializerOptions options)
        {
            if (value.Length >= 28 && value.Length <= 410)
            {
                JsonSerializer.Serialize(writer, value, options);
                return;
            }
            throw new Exception("Cannot marshal type string");
        }

        public static readonly MinMaxLengthCheckConverter9 Singleton = new MinMaxLengthCheckConverter9();
    }

    internal class MinMaxLengthCheckConverter10 : JsonConverter<string>
    {
        public override bool CanConvert(Type t) => t == typeof(string);

        public override string Read(ref Utf8JsonReader reader, Type typeToConvert, JsonSerializerOptions options)
        {
            var value = reader.GetString();
            if (value.Length >= 19 && value.Length <= 318)
            {
                return value;
            }
            throw new Exception("Cannot unmarshal type string");
        }

        public override void Write(Utf8JsonWriter writer, string value, JsonSerializerOptions options)
        {
            if (value.Length >= 19 && value.Length <= 318)
            {
                JsonSerializer.Serialize(writer, value, options);
                return;
            }
            throw new Exception("Cannot marshal type string");
        }

        public static readonly MinMaxLengthCheckConverter10 Singleton = new MinMaxLengthCheckConverter10();
    }

    internal class MinMaxLengthCheckConverter11 : JsonConverter<string>
    {
        public override bool CanConvert(Type t) => t == typeof(string);

        public override string Read(ref Utf8JsonReader reader, Type typeToConvert, JsonSerializerOptions options)
        {
            var value = reader.GetString();
            if (value.Length >= 23 && value.Length <= 367)
            {
                return value;
            }
            throw new Exception("Cannot unmarshal type string");
        }

        public override void Write(Utf8JsonWriter writer, string value, JsonSerializerOptions options)
        {
            if (value.Length >= 23 && value.Length <= 367)
            {
                JsonSerializer.Serialize(writer, value, options);
                return;
            }
            throw new Exception("Cannot marshal type string");
        }

        public static readonly MinMaxLengthCheckConverter11 Singleton = new MinMaxLengthCheckConverter11();
    }

    internal class MinMaxLengthCheckConverter12 : JsonConverter<string>
    {
        public override bool CanConvert(Type t) => t == typeof(string);

        public override string Read(ref Utf8JsonReader reader, Type typeToConvert, JsonSerializerOptions options)
        {
            var value = reader.GetString();
            if (value.Length >= 29 && value.Length <= 386)
            {
                return value;
            }
            throw new Exception("Cannot unmarshal type string");
        }

        public override void Write(Utf8JsonWriter writer, string value, JsonSerializerOptions options)
        {
            if (value.Length >= 29 && value.Length <= 386)
            {
                JsonSerializer.Serialize(writer, value, options);
                return;
            }
            throw new Exception("Cannot marshal type string");
        }

        public static readonly MinMaxLengthCheckConverter12 Singleton = new MinMaxLengthCheckConverter12();
    }

    internal class MinMaxLengthCheckConverter13 : JsonConverter<string>
    {
        public override bool CanConvert(Type t) => t == typeof(string);

        public override string Read(ref Utf8JsonReader reader, Type typeToConvert, JsonSerializerOptions options)
        {
            var value = reader.GetString();
            if (value.Length >= 11 && value.Length <= 178)
            {
                return value;
            }
            throw new Exception("Cannot unmarshal type string");
        }

        public override void Write(Utf8JsonWriter writer, string value, JsonSerializerOptions options)
        {
            if (value.Length >= 11 && value.Length <= 178)
            {
                JsonSerializer.Serialize(writer, value, options);
                return;
            }
            throw new Exception("Cannot marshal type string");
        }

        public static readonly MinMaxLengthCheckConverter13 Singleton = new MinMaxLengthCheckConverter13();
    }

    internal class MinMaxLengthCheckConverter14 : JsonConverter<string>
    {
        public override bool CanConvert(Type t) => t == typeof(string);

        public override string Read(ref Utf8JsonReader reader, Type typeToConvert, JsonSerializerOptions options)
        {
            var value = reader.GetString();
            if (value.Length >= 11 && value.Length <= 168)
            {
                return value;
            }
            throw new Exception("Cannot unmarshal type string");
        }

        public override void Write(Utf8JsonWriter writer, string value, JsonSerializerOptions options)
        {
            if (value.Length >= 11 && value.Length <= 168)
            {
                JsonSerializer.Serialize(writer, value, options);
                return;
            }
            throw new Exception("Cannot marshal type string");
        }

        public static readonly MinMaxLengthCheckConverter14 Singleton = new MinMaxLengthCheckConverter14();
    }

    internal class MinMaxLengthCheckConverter15 : JsonConverter<string>
    {
        public override bool CanConvert(Type t) => t == typeof(string);

        public override string Read(ref Utf8JsonReader reader, Type typeToConvert, JsonSerializerOptions options)
        {
            var value = reader.GetString();
            if (value.Length >= 15 && value.Length <= 361)
            {
                return value;
            }
            throw new Exception("Cannot unmarshal type string");
        }

        public override void Write(Utf8JsonWriter writer, string value, JsonSerializerOptions options)
        {
            if (value.Length >= 15 && value.Length <= 361)
            {
                JsonSerializer.Serialize(writer, value, options);
                return;
            }
            throw new Exception("Cannot marshal type string");
        }

        public static readonly MinMaxLengthCheckConverter15 Singleton = new MinMaxLengthCheckConverter15();
    }

    internal class MinMaxLengthCheckConverter16 : JsonConverter<string>
    {
        public override bool CanConvert(Type t) => t == typeof(string);

        public override string Read(ref Utf8JsonReader reader, Type typeToConvert, JsonSerializerOptions options)
        {
            var value = reader.GetString();
            if (value.Length >= 6 && value.Length <= 108)
            {
                return value;
            }
            throw new Exception("Cannot unmarshal type string");
        }

        public override void Write(Utf8JsonWriter writer, string value, JsonSerializerOptions options)
        {
            if (value.Length >= 6 && value.Length <= 108)
            {
                JsonSerializer.Serialize(writer, value, options);
                return;
            }
            throw new Exception("Cannot marshal type string");
        }

        public static readonly MinMaxLengthCheckConverter16 Singleton = new MinMaxLengthCheckConverter16();
    }

    internal class MinMaxLengthCheckConverter17 : JsonConverter<string>
    {
        public override bool CanConvert(Type t) => t == typeof(string);

        public override string Read(ref Utf8JsonReader reader, Type typeToConvert, JsonSerializerOptions options)
        {
            var value = reader.GetString();
            if (value.Length >= 5 && value.Length <= 17)
            {
                return value;
            }
            throw new Exception("Cannot unmarshal type string");
        }

        public override void Write(Utf8JsonWriter writer, string value, JsonSerializerOptions options)
        {
            if (value.Length >= 5 && value.Length <= 17)
            {
                JsonSerializer.Serialize(writer, value, options);
                return;
            }
            throw new Exception("Cannot marshal type string");
        }

        public static readonly MinMaxLengthCheckConverter17 Singleton = new MinMaxLengthCheckConverter17();
    }

    internal class MinMaxLengthCheckConverter18 : JsonConverter<string>
    {
        public override bool CanConvert(Type t) => t == typeof(string);

        public override string Read(ref Utf8JsonReader reader, Type typeToConvert, JsonSerializerOptions options)
        {
            var value = reader.GetString();
            if (value.Length >= 75 && value.Length <= 189)
            {
                return value;
            }
            throw new Exception("Cannot unmarshal type string");
        }

        public override void Write(Utf8JsonWriter writer, string value, JsonSerializerOptions options)
        {
            if (value.Length >= 75 && value.Length <= 189)
            {
                JsonSerializer.Serialize(writer, value, options);
                return;
            }
            throw new Exception("Cannot marshal type string");
        }

        public static readonly MinMaxLengthCheckConverter18 Singleton = new MinMaxLengthCheckConverter18();
    }

    internal class MinMaxLengthCheckConverter19 : JsonConverter<string>
    {
        public override bool CanConvert(Type t) => t == typeof(string);

        public override string Read(ref Utf8JsonReader reader, Type typeToConvert, JsonSerializerOptions options)
        {
            var value = reader.GetString();
            if (value.Length >= 63 && value.Length <= 173)
            {
                return value;
            }
            throw new Exception("Cannot unmarshal type string");
        }

        public override void Write(Utf8JsonWriter writer, string value, JsonSerializerOptions options)
        {
            if (value.Length >= 63 && value.Length <= 173)
            {
                JsonSerializer.Serialize(writer, value, options);
                return;
            }
            throw new Exception("Cannot marshal type string");
        }

        public static readonly MinMaxLengthCheckConverter19 Singleton = new MinMaxLengthCheckConverter19();
    }

    internal class MinMaxLengthCheckConverter20 : JsonConverter<string>
    {
        public override bool CanConvert(Type t) => t == typeof(string);

        public override string Read(ref Utf8JsonReader reader, Type typeToConvert, JsonSerializerOptions options)
        {
            var value = reader.GetString();
            if (value.Length >= 83 && value.Length <= 185)
            {
                return value;
            }
            throw new Exception("Cannot unmarshal type string");
        }

        public override void Write(Utf8JsonWriter writer, string value, JsonSerializerOptions options)
        {
            if (value.Length >= 83 && value.Length <= 185)
            {
                JsonSerializer.Serialize(writer, value, options);
                return;
            }
            throw new Exception("Cannot marshal type string");
        }

        public static readonly MinMaxLengthCheckConverter20 Singleton = new MinMaxLengthCheckConverter20();
    }

    internal class MinMaxLengthCheckConverter21 : JsonConverter<string>
    {
        public override bool CanConvert(Type t) => t == typeof(string);

        public override string Read(ref Utf8JsonReader reader, Type typeToConvert, JsonSerializerOptions options)
        {
            var value = reader.GetString();
            if (value.Length >= 60 && value.Length <= 157)
            {
                return value;
            }
            throw new Exception("Cannot unmarshal type string");
        }

        public override void Write(Utf8JsonWriter writer, string value, JsonSerializerOptions options)
        {
            if (value.Length >= 60 && value.Length <= 157)
            {
                JsonSerializer.Serialize(writer, value, options);
                return;
            }
            throw new Exception("Cannot marshal type string");
        }

        public static readonly MinMaxLengthCheckConverter21 Singleton = new MinMaxLengthCheckConverter21();
    }

    internal class MinMaxLengthCheckConverter22 : JsonConverter<string>
    {
        public override bool CanConvert(Type t) => t == typeof(string);

        public override string Read(ref Utf8JsonReader reader, Type typeToConvert, JsonSerializerOptions options)
        {
            var value = reader.GetString();
            if (value.Length >= 25 && value.Length <= 69)
            {
                return value;
            }
            throw new Exception("Cannot unmarshal type string");
        }

        public override void Write(Utf8JsonWriter writer, string value, JsonSerializerOptions options)
        {
            if (value.Length >= 25 && value.Length <= 69)
            {
                JsonSerializer.Serialize(writer, value, options);
                return;
            }
            throw new Exception("Cannot marshal type string");
        }

        public static readonly MinMaxLengthCheckConverter22 Singleton = new MinMaxLengthCheckConverter22();
    }

    internal class MinMaxLengthCheckConverter23 : JsonConverter<string>
    {
        public override bool CanConvert(Type t) => t == typeof(string);

        public override string Read(ref Utf8JsonReader reader, Type typeToConvert, JsonSerializerOptions options)
        {
            var value = reader.GetString();
            if (value.Length >= 29 && value.Length <= 87)
            {
                return value;
            }
            throw new Exception("Cannot unmarshal type string");
        }

        public override void Write(Utf8JsonWriter writer, string value, JsonSerializerOptions options)
        {
            if (value.Length >= 29 && value.Length <= 87)
            {
                JsonSerializer.Serialize(writer, value, options);
                return;
            }
            throw new Exception("Cannot marshal type string");
        }

        public static readonly MinMaxLengthCheckConverter23 Singleton = new MinMaxLengthCheckConverter23();
    }

    internal class MinMaxLengthCheckConverter24 : JsonConverter<string>
    {
        public override bool CanConvert(Type t) => t == typeof(string);

        public override string Read(ref Utf8JsonReader reader, Type typeToConvert, JsonSerializerOptions options)
        {
            var value = reader.GetString();
            if (value.Length >= 62 && value.Length <= 181)
            {
                return value;
            }
            throw new Exception("Cannot unmarshal type string");
        }

        public override void Write(Utf8JsonWriter writer, string value, JsonSerializerOptions options)
        {
            if (value.Length >= 62 && value.Length <= 181)
            {
                JsonSerializer.Serialize(writer, value, options);
                return;
            }
            throw new Exception("Cannot marshal type string");
        }

        public static readonly MinMaxLengthCheckConverter24 Singleton = new MinMaxLengthCheckConverter24();
    }

    internal class MinMaxLengthCheckConverter25 : JsonConverter<string>
    {
        public override bool CanConvert(Type t) => t == typeof(string);

        public override string Read(ref Utf8JsonReader reader, Type typeToConvert, JsonSerializerOptions options)
        {
            var value = reader.GetString();
            if (value.Length >= 18 && value.Length <= 49)
            {
                return value;
            }
            throw new Exception("Cannot unmarshal type string");
        }

        public override void Write(Utf8JsonWriter writer, string value, JsonSerializerOptions options)
        {
            if (value.Length >= 18 && value.Length <= 49)
            {
                JsonSerializer.Serialize(writer, value, options);
                return;
            }
            throw new Exception("Cannot marshal type string");
        }

        public static readonly MinMaxLengthCheckConverter25 Singleton = new MinMaxLengthCheckConverter25();
    }

    internal class MaxContributionsPerParticipantIconIdConverter : JsonConverter<MaxContributionsPerParticipantIconId>
    {
        public override bool CanConvert(Type t) => t == typeof(MaxContributionsPerParticipantIconId);

        public override MaxContributionsPerParticipantIconId Read(ref Utf8JsonReader reader, Type typeToConvert, JsonSerializerOptions options)
        {
            var value = reader.GetString();
            switch (value)
            {
                case "isk":
                    return MaxContributionsPerParticipantIconId.Isk;
                case "personal":
                    return MaxContributionsPerParticipantIconId.Personal;
            }
            throw new Exception("Cannot unmarshal type MaxContributionsPerParticipantIconId");
        }

        public override void Write(Utf8JsonWriter writer, MaxContributionsPerParticipantIconId value, JsonSerializerOptions options)
        {
            switch (value)
            {
                case MaxContributionsPerParticipantIconId.Isk:
                    JsonSerializer.Serialize(writer, "isk", options);
                    return;
                case MaxContributionsPerParticipantIconId.Personal:
                    JsonSerializer.Serialize(writer, "personal", options);
                    return;
            }
            throw new Exception("Cannot marshal type MaxContributionsPerParticipantIconId");
        }

        public static readonly MaxContributionsPerParticipantIconIdConverter Singleton = new MaxContributionsPerParticipantIconIdConverter();
    }

    internal class MinMaxLengthCheckConverter26 : JsonConverter<string>
    {
        public override bool CanConvert(Type t) => t == typeof(string);

        public override string Read(ref Utf8JsonReader reader, Type typeToConvert, JsonSerializerOptions options)
        {
            var value = reader.GetString();
            if (value.Length >= 22 && value.Length <= 28)
            {
                return value;
            }
            throw new Exception("Cannot unmarshal type string");
        }

        public override void Write(Utf8JsonWriter writer, string value, JsonSerializerOptions options)
        {
            if (value.Length >= 22 && value.Length <= 28)
            {
                JsonSerializer.Serialize(writer, value, options);
                return;
            }
            throw new Exception("Cannot marshal type string");
        }

        public static readonly MinMaxLengthCheckConverter26 Singleton = new MinMaxLengthCheckConverter26();
    }

    internal class MinMaxLengthCheckConverter27 : JsonConverter<string>
    {
        public override bool CanConvert(Type t) => t == typeof(string);

        public override string Read(ref Utf8JsonReader reader, Type typeToConvert, JsonSerializerOptions options)
        {
            var value = reader.GetString();
            if (value.Length >= 21 && value.Length <= 30)
            {
                return value;
            }
            throw new Exception("Cannot unmarshal type string");
        }

        public override void Write(Utf8JsonWriter writer, string value, JsonSerializerOptions options)
        {
            if (value.Length >= 21 && value.Length <= 30)
            {
                JsonSerializer.Serialize(writer, value, options);
                return;
            }
            throw new Exception("Cannot marshal type string");
        }

        public static readonly MinMaxLengthCheckConverter27 Singleton = new MinMaxLengthCheckConverter27();
    }

    internal class MinMaxLengthCheckConverter28 : JsonConverter<string>
    {
        public override bool CanConvert(Type t) => t == typeof(string);

        public override string Read(ref Utf8JsonReader reader, Type typeToConvert, JsonSerializerOptions options)
        {
            var value = reader.GetString();
            if (value.Length >= 24 && value.Length <= 36)
            {
                return value;
            }
            throw new Exception("Cannot unmarshal type string");
        }

        public override void Write(Utf8JsonWriter writer, string value, JsonSerializerOptions options)
        {
            if (value.Length >= 24 && value.Length <= 36)
            {
                JsonSerializer.Serialize(writer, value, options);
                return;
            }
            throw new Exception("Cannot marshal type string");
        }

        public static readonly MinMaxLengthCheckConverter28 Singleton = new MinMaxLengthCheckConverter28();
    }

    internal class MinMaxLengthCheckConverter29 : JsonConverter<string>
    {
        public override bool CanConvert(Type t) => t == typeof(string);

        public override string Read(ref Utf8JsonReader reader, Type typeToConvert, JsonSerializerOptions options)
        {
            var value = reader.GetString();
            if (value.Length >= 23 && value.Length <= 36)
            {
                return value;
            }
            throw new Exception("Cannot unmarshal type string");
        }

        public override void Write(Utf8JsonWriter writer, string value, JsonSerializerOptions options)
        {
            if (value.Length >= 23 && value.Length <= 36)
            {
                JsonSerializer.Serialize(writer, value, options);
                return;
            }
            throw new Exception("Cannot marshal type string");
        }

        public static readonly MinMaxLengthCheckConverter29 Singleton = new MinMaxLengthCheckConverter29();
    }

    internal class MinMaxLengthCheckConverter30 : JsonConverter<string>
    {
        public override bool CanConvert(Type t) => t == typeof(string);

        public override string Read(ref Utf8JsonReader reader, Type typeToConvert, JsonSerializerOptions options)
        {
            var value = reader.GetString();
            if (value.Length >= 9 && value.Length <= 14)
            {
                return value;
            }
            throw new Exception("Cannot unmarshal type string");
        }

        public override void Write(Utf8JsonWriter writer, string value, JsonSerializerOptions options)
        {
            if (value.Length >= 9 && value.Length <= 14)
            {
                JsonSerializer.Serialize(writer, value, options);
                return;
            }
            throw new Exception("Cannot marshal type string");
        }

        public static readonly MinMaxLengthCheckConverter30 Singleton = new MinMaxLengthCheckConverter30();
    }

    internal class MinMaxLengthCheckConverter31 : JsonConverter<string>
    {
        public override bool CanConvert(Type t) => t == typeof(string);

        public override string Read(ref Utf8JsonReader reader, Type typeToConvert, JsonSerializerOptions options)
        {
            var value = reader.GetString();
            if (value.Length >= 9 && value.Length <= 10)
            {
                return value;
            }
            throw new Exception("Cannot unmarshal type string");
        }

        public override void Write(Utf8JsonWriter writer, string value, JsonSerializerOptions options)
        {
            if (value.Length >= 9 && value.Length <= 10)
            {
                JsonSerializer.Serialize(writer, value, options);
                return;
            }
            throw new Exception("Cannot marshal type string");
        }

        public static readonly MinMaxLengthCheckConverter31 Singleton = new MinMaxLengthCheckConverter31();
    }

    internal class MinMaxLengthCheckConverter32 : JsonConverter<string>
    {
        public override bool CanConvert(Type t) => t == typeof(string);

        public override string Read(ref Utf8JsonReader reader, Type typeToConvert, JsonSerializerOptions options)
        {
            var value = reader.GetString();
            if (value.Length >= 25 && value.Length <= 29)
            {
                return value;
            }
            throw new Exception("Cannot unmarshal type string");
        }

        public override void Write(Utf8JsonWriter writer, string value, JsonSerializerOptions options)
        {
            if (value.Length >= 25 && value.Length <= 29)
            {
                JsonSerializer.Serialize(writer, value, options);
                return;
            }
            throw new Exception("Cannot marshal type string");
        }

        public static readonly MinMaxLengthCheckConverter32 Singleton = new MinMaxLengthCheckConverter32();
    }

    internal class MinMaxLengthCheckConverter33 : JsonConverter<string>
    {
        public override bool CanConvert(Type t) => t == typeof(string);

        public override string Read(ref Utf8JsonReader reader, Type typeToConvert, JsonSerializerOptions options)
        {
            var value = reader.GetString();
            if (value.Length >= 6 && value.Length <= 10)
            {
                return value;
            }
            throw new Exception("Cannot unmarshal type string");
        }

        public override void Write(Utf8JsonWriter writer, string value, JsonSerializerOptions options)
        {
            if (value.Length >= 6 && value.Length <= 10)
            {
                JsonSerializer.Serialize(writer, value, options);
                return;
            }
            throw new Exception("Cannot marshal type string");
        }

        public static readonly MinMaxLengthCheckConverter33 Singleton = new MinMaxLengthCheckConverter33();
    }

    internal class MinMaxLengthCheckConverter34 : JsonConverter<string>
    {
        public override bool CanConvert(Type t) => t == typeof(string);

        public override string Read(ref Utf8JsonReader reader, Type typeToConvert, JsonSerializerOptions options)
        {
            var value = reader.GetString();
            if (value.Length >= 25 && value.Length <= 32)
            {
                return value;
            }
            throw new Exception("Cannot unmarshal type string");
        }

        public override void Write(Utf8JsonWriter writer, string value, JsonSerializerOptions options)
        {
            if (value.Length >= 25 && value.Length <= 32)
            {
                JsonSerializer.Serialize(writer, value, options);
                return;
            }
            throw new Exception("Cannot marshal type string");
        }

        public static readonly MinMaxLengthCheckConverter34 Singleton = new MinMaxLengthCheckConverter34();
    }

    internal class MinMaxLengthCheckConverter35 : JsonConverter<string>
    {
        public override bool CanConvert(Type t) => t == typeof(string);

        public override string Read(ref Utf8JsonReader reader, Type typeToConvert, JsonSerializerOptions options)
        {
            var value = reader.GetString();
            if (value.Length >= 28 && value.Length <= 38)
            {
                return value;
            }
            throw new Exception("Cannot unmarshal type string");
        }

        public override void Write(Utf8JsonWriter writer, string value, JsonSerializerOptions options)
        {
            if (value.Length >= 28 && value.Length <= 38)
            {
                JsonSerializer.Serialize(writer, value, options);
                return;
            }
            throw new Exception("Cannot marshal type string");
        }

        public static readonly MinMaxLengthCheckConverter35 Singleton = new MinMaxLengthCheckConverter35();
    }

    internal class MinMaxLengthCheckConverter36 : JsonConverter<string>
    {
        public override bool CanConvert(Type t) => t == typeof(string);

        public override string Read(ref Utf8JsonReader reader, Type typeToConvert, JsonSerializerOptions options)
        {
            var value = reader.GetString();
            if (value.Length >= 28 && value.Length <= 46)
            {
                return value;
            }
            throw new Exception("Cannot unmarshal type string");
        }

        public override void Write(Utf8JsonWriter writer, string value, JsonSerializerOptions options)
        {
            if (value.Length >= 28 && value.Length <= 46)
            {
                JsonSerializer.Serialize(writer, value, options);
                return;
            }
            throw new Exception("Cannot marshal type string");
        }

        public static readonly MinMaxLengthCheckConverter36 Singleton = new MinMaxLengthCheckConverter36();
    }

    internal class MinMaxLengthCheckConverter37 : JsonConverter<string>
    {
        public override bool CanConvert(Type t) => t == typeof(string);

        public override string Read(ref Utf8JsonReader reader, Type typeToConvert, JsonSerializerOptions options)
        {
            var value = reader.GetString();
            if (value.Length >= 29 && value.Length <= 48)
            {
                return value;
            }
            throw new Exception("Cannot unmarshal type string");
        }

        public override void Write(Utf8JsonWriter writer, string value, JsonSerializerOptions options)
        {
            if (value.Length >= 29 && value.Length <= 48)
            {
                JsonSerializer.Serialize(writer, value, options);
                return;
            }
            throw new Exception("Cannot marshal type string");
        }

        public static readonly MinMaxLengthCheckConverter37 Singleton = new MinMaxLengthCheckConverter37();
    }

    internal class MinMaxLengthCheckConverter38 : JsonConverter<string>
    {
        public override bool CanConvert(Type t) => t == typeof(string);

        public override string Read(ref Utf8JsonReader reader, Type typeToConvert, JsonSerializerOptions options)
        {
            var value = reader.GetString();
            if (value.Length >= 16 && value.Length <= 17)
            {
                return value;
            }
            throw new Exception("Cannot unmarshal type string");
        }

        public override void Write(Utf8JsonWriter writer, string value, JsonSerializerOptions options)
        {
            if (value.Length >= 16 && value.Length <= 17)
            {
                JsonSerializer.Serialize(writer, value, options);
                return;
            }
            throw new Exception("Cannot marshal type string");
        }

        public static readonly MinMaxLengthCheckConverter38 Singleton = new MinMaxLengthCheckConverter38();
    }

    internal class MinMaxLengthCheckConverter39 : JsonConverter<string>
    {
        public override bool CanConvert(Type t) => t == typeof(string);

        public override string Read(ref Utf8JsonReader reader, Type typeToConvert, JsonSerializerOptions options)
        {
            var value = reader.GetString();
            if (value.Length >= 12 && value.Length <= 15)
            {
                return value;
            }
            throw new Exception("Cannot unmarshal type string");
        }

        public override void Write(Utf8JsonWriter writer, string value, JsonSerializerOptions options)
        {
            if (value.Length >= 12 && value.Length <= 15)
            {
                JsonSerializer.Serialize(writer, value, options);
                return;
            }
            throw new Exception("Cannot marshal type string");
        }

        public static readonly MinMaxLengthCheckConverter39 Singleton = new MinMaxLengthCheckConverter39();
    }

    internal class MinMaxLengthCheckConverter40 : JsonConverter<string>
    {
        public override bool CanConvert(Type t) => t == typeof(string);

        public override string Read(ref Utf8JsonReader reader, Type typeToConvert, JsonSerializerOptions options)
        {
            var value = reader.GetString();
            if (value.Length >= 35 && value.Length <= 37)
            {
                return value;
            }
            throw new Exception("Cannot unmarshal type string");
        }

        public override void Write(Utf8JsonWriter writer, string value, JsonSerializerOptions options)
        {
            if (value.Length >= 35 && value.Length <= 37)
            {
                JsonSerializer.Serialize(writer, value, options);
                return;
            }
            throw new Exception("Cannot marshal type string");
        }

        public static readonly MinMaxLengthCheckConverter40 Singleton = new MinMaxLengthCheckConverter40();
    }

    internal class MinMaxLengthCheckConverter41 : JsonConverter<string>
    {
        public override bool CanConvert(Type t) => t == typeof(string);

        public override string Read(ref Utf8JsonReader reader, Type typeToConvert, JsonSerializerOptions options)
        {
            var value = reader.GetString();
            if (value.Length >= 177 && value.Length <= 177)
            {
                return value;
            }
            throw new Exception("Cannot unmarshal type string");
        }

        public override void Write(Utf8JsonWriter writer, string value, JsonSerializerOptions options)
        {
            if (value.Length >= 177 && value.Length <= 177)
            {
                JsonSerializer.Serialize(writer, value, options);
                return;
            }
            throw new Exception("Cannot marshal type string");
        }

        public static readonly MinMaxLengthCheckConverter41 Singleton = new MinMaxLengthCheckConverter41();
    }

    internal class MinMaxLengthCheckConverter42 : JsonConverter<string>
    {
        public override bool CanConvert(Type t) => t == typeof(string);

        public override string Read(ref Utf8JsonReader reader, Type typeToConvert, JsonSerializerOptions options)
        {
            var value = reader.GetString();
            if (value.Length >= 159 && value.Length <= 159)
            {
                return value;
            }
            throw new Exception("Cannot unmarshal type string");
        }

        public override void Write(Utf8JsonWriter writer, string value, JsonSerializerOptions options)
        {
            if (value.Length >= 159 && value.Length <= 159)
            {
                JsonSerializer.Serialize(writer, value, options);
                return;
            }
            throw new Exception("Cannot marshal type string");
        }

        public static readonly MinMaxLengthCheckConverter42 Singleton = new MinMaxLengthCheckConverter42();
    }

    internal class MinMaxLengthCheckConverter43 : JsonConverter<string>
    {
        public override bool CanConvert(Type t) => t == typeof(string);

        public override string Read(ref Utf8JsonReader reader, Type typeToConvert, JsonSerializerOptions options)
        {
            var value = reader.GetString();
            if (value.Length >= 173 && value.Length <= 173)
            {
                return value;
            }
            throw new Exception("Cannot unmarshal type string");
        }

        public override void Write(Utf8JsonWriter writer, string value, JsonSerializerOptions options)
        {
            if (value.Length >= 173 && value.Length <= 173)
            {
                JsonSerializer.Serialize(writer, value, options);
                return;
            }
            throw new Exception("Cannot marshal type string");
        }

        public static readonly MinMaxLengthCheckConverter43 Singleton = new MinMaxLengthCheckConverter43();
    }

    internal class MinMaxLengthCheckConverter44 : JsonConverter<string>
    {
        public override bool CanConvert(Type t) => t == typeof(string);

        public override string Read(ref Utf8JsonReader reader, Type typeToConvert, JsonSerializerOptions options)
        {
            var value = reader.GetString();
            if (value.Length >= 136 && value.Length <= 136)
            {
                return value;
            }
            throw new Exception("Cannot unmarshal type string");
        }

        public override void Write(Utf8JsonWriter writer, string value, JsonSerializerOptions options)
        {
            if (value.Length >= 136 && value.Length <= 136)
            {
                JsonSerializer.Serialize(writer, value, options);
                return;
            }
            throw new Exception("Cannot marshal type string");
        }

        public static readonly MinMaxLengthCheckConverter44 Singleton = new MinMaxLengthCheckConverter44();
    }

    internal class MinMaxLengthCheckConverter45 : JsonConverter<string>
    {
        public override bool CanConvert(Type t) => t == typeof(string);

        public override string Read(ref Utf8JsonReader reader, Type typeToConvert, JsonSerializerOptions options)
        {
            var value = reader.GetString();
            if (value.Length >= 58 && value.Length <= 58)
            {
                return value;
            }
            throw new Exception("Cannot unmarshal type string");
        }

        public override void Write(Utf8JsonWriter writer, string value, JsonSerializerOptions options)
        {
            if (value.Length >= 58 && value.Length <= 58)
            {
                JsonSerializer.Serialize(writer, value, options);
                return;
            }
            throw new Exception("Cannot marshal type string");
        }

        public static readonly MinMaxLengthCheckConverter45 Singleton = new MinMaxLengthCheckConverter45();
    }

    internal class MinMaxLengthCheckConverter46 : JsonConverter<string>
    {
        public override bool CanConvert(Type t) => t == typeof(string);

        public override string Read(ref Utf8JsonReader reader, Type typeToConvert, JsonSerializerOptions options)
        {
            var value = reader.GetString();
            if (value.Length >= 75 && value.Length <= 75)
            {
                return value;
            }
            throw new Exception("Cannot unmarshal type string");
        }

        public override void Write(Utf8JsonWriter writer, string value, JsonSerializerOptions options)
        {
            if (value.Length >= 75 && value.Length <= 75)
            {
                JsonSerializer.Serialize(writer, value, options);
                return;
            }
            throw new Exception("Cannot marshal type string");
        }

        public static readonly MinMaxLengthCheckConverter46 Singleton = new MinMaxLengthCheckConverter46();
    }

    internal class MinMaxLengthCheckConverter47 : JsonConverter<string>
    {
        public override bool CanConvert(Type t) => t == typeof(string);

        public override string Read(ref Utf8JsonReader reader, Type typeToConvert, JsonSerializerOptions options)
        {
            var value = reader.GetString();
            if (value.Length >= 167 && value.Length <= 167)
            {
                return value;
            }
            throw new Exception("Cannot unmarshal type string");
        }

        public override void Write(Utf8JsonWriter writer, string value, JsonSerializerOptions options)
        {
            if (value.Length >= 167 && value.Length <= 167)
            {
                JsonSerializer.Serialize(writer, value, options);
                return;
            }
            throw new Exception("Cannot marshal type string");
        }

        public static readonly MinMaxLengthCheckConverter47 Singleton = new MinMaxLengthCheckConverter47();
    }

    internal class MinMaxLengthCheckConverter48 : JsonConverter<string>
    {
        public override bool CanConvert(Type t) => t == typeof(string);

        public override string Read(ref Utf8JsonReader reader, Type typeToConvert, JsonSerializerOptions options)
        {
            var value = reader.GetString();
            if (value.Length >= 42 && value.Length <= 42)
            {
                return value;
            }
            throw new Exception("Cannot unmarshal type string");
        }

        public override void Write(Utf8JsonWriter writer, string value, JsonSerializerOptions options)
        {
            if (value.Length >= 42 && value.Length <= 42)
            {
                JsonSerializer.Serialize(writer, value, options);
                return;
            }
            throw new Exception("Cannot marshal type string");
        }

        public static readonly MinMaxLengthCheckConverter48 Singleton = new MinMaxLengthCheckConverter48();
    }

    internal class MinMaxLengthCheckConverter49 : JsonConverter<string>
    {
        public override bool CanConvert(Type t) => t == typeof(string);

        public override string Read(ref Utf8JsonReader reader, Type typeToConvert, JsonSerializerOptions options)
        {
            var value = reader.GetString();
            if (value.Length >= 25 && value.Length <= 25)
            {
                return value;
            }
            throw new Exception("Cannot unmarshal type string");
        }

        public override void Write(Utf8JsonWriter writer, string value, JsonSerializerOptions options)
        {
            if (value.Length >= 25 && value.Length <= 25)
            {
                JsonSerializer.Serialize(writer, value, options);
                return;
            }
            throw new Exception("Cannot marshal type string");
        }

        public static readonly MinMaxLengthCheckConverter49 Singleton = new MinMaxLengthCheckConverter49();
    }

    internal class MinMaxLengthCheckConverter50 : JsonConverter<string>
    {
        public override bool CanConvert(Type t) => t == typeof(string);

        public override string Read(ref Utf8JsonReader reader, Type typeToConvert, JsonSerializerOptions options)
        {
            var value = reader.GetString();
            if (value.Length >= 23 && value.Length <= 23)
            {
                return value;
            }
            throw new Exception("Cannot unmarshal type string");
        }

        public override void Write(Utf8JsonWriter writer, string value, JsonSerializerOptions options)
        {
            if (value.Length >= 23 && value.Length <= 23)
            {
                JsonSerializer.Serialize(writer, value, options);
                return;
            }
            throw new Exception("Cannot marshal type string");
        }

        public static readonly MinMaxLengthCheckConverter50 Singleton = new MinMaxLengthCheckConverter50();
    }

    internal class MinMaxLengthCheckConverter51 : JsonConverter<string>
    {
        public override bool CanConvert(Type t) => t == typeof(string);

        public override string Read(ref Utf8JsonReader reader, Type typeToConvert, JsonSerializerOptions options)
        {
            var value = reader.GetString();
            if (value.Length >= 13 && value.Length <= 13)
            {
                return value;
            }
            throw new Exception("Cannot unmarshal type string");
        }

        public override void Write(Utf8JsonWriter writer, string value, JsonSerializerOptions options)
        {
            if (value.Length >= 13 && value.Length <= 13)
            {
                JsonSerializer.Serialize(writer, value, options);
                return;
            }
            throw new Exception("Cannot marshal type string");
        }

        public static readonly MinMaxLengthCheckConverter51 Singleton = new MinMaxLengthCheckConverter51();
    }

    internal class MinMaxLengthCheckConverter52 : JsonConverter<string>
    {
        public override bool CanConvert(Type t) => t == typeof(string);

        public override string Read(ref Utf8JsonReader reader, Type typeToConvert, JsonSerializerOptions options)
        {
            var value = reader.GetString();
            if (value.Length >= 26 && value.Length <= 26)
            {
                return value;
            }
            throw new Exception("Cannot unmarshal type string");
        }

        public override void Write(Utf8JsonWriter writer, string value, JsonSerializerOptions options)
        {
            if (value.Length >= 26 && value.Length <= 26)
            {
                JsonSerializer.Serialize(writer, value, options);
                return;
            }
            throw new Exception("Cannot marshal type string");
        }

        public static readonly MinMaxLengthCheckConverter52 Singleton = new MinMaxLengthCheckConverter52();
    }

    internal class MinMaxLengthCheckConverter53 : JsonConverter<string>
    {
        public override bool CanConvert(Type t) => t == typeof(string);

        public override string Read(ref Utf8JsonReader reader, Type typeToConvert, JsonSerializerOptions options)
        {
            var value = reader.GetString();
            if (value.Length >= 28 && value.Length <= 28)
            {
                return value;
            }
            throw new Exception("Cannot unmarshal type string");
        }

        public override void Write(Utf8JsonWriter writer, string value, JsonSerializerOptions options)
        {
            if (value.Length >= 28 && value.Length <= 28)
            {
                JsonSerializer.Serialize(writer, value, options);
                return;
            }
            throw new Exception("Cannot marshal type string");
        }

        public static readonly MinMaxLengthCheckConverter53 Singleton = new MinMaxLengthCheckConverter53();
    }

    internal class MinMaxLengthCheckConverter54 : JsonConverter<string>
    {
        public override bool CanConvert(Type t) => t == typeof(string);

        public override string Read(ref Utf8JsonReader reader, Type typeToConvert, JsonSerializerOptions options)
        {
            var value = reader.GetString();
            if (value.Length >= 29 && value.Length <= 29)
            {
                return value;
            }
            throw new Exception("Cannot unmarshal type string");
        }

        public override void Write(Utf8JsonWriter writer, string value, JsonSerializerOptions options)
        {
            if (value.Length >= 29 && value.Length <= 29)
            {
                JsonSerializer.Serialize(writer, value, options);
                return;
            }
            throw new Exception("Cannot marshal type string");
        }

        public static readonly MinMaxLengthCheckConverter54 Singleton = new MinMaxLengthCheckConverter54();
    }

    internal class MinMaxLengthCheckConverter55 : JsonConverter<string>
    {
        public override bool CanConvert(Type t) => t == typeof(string);

        public override string Read(ref Utf8JsonReader reader, Type typeToConvert, JsonSerializerOptions options)
        {
            var value = reader.GetString();
            if (value.Length >= 17 && value.Length <= 17)
            {
                return value;
            }
            throw new Exception("Cannot unmarshal type string");
        }

        public override void Write(Utf8JsonWriter writer, string value, JsonSerializerOptions options)
        {
            if (value.Length >= 17 && value.Length <= 17)
            {
                JsonSerializer.Serialize(writer, value, options);
                return;
            }
            throw new Exception("Cannot marshal type string");
        }

        public static readonly MinMaxLengthCheckConverter55 Singleton = new MinMaxLengthCheckConverter55();
    }

    internal class MinMaxLengthCheckConverter56 : JsonConverter<string>
    {
        public override bool CanConvert(Type t) => t == typeof(string);

        public override string Read(ref Utf8JsonReader reader, Type typeToConvert, JsonSerializerOptions options)
        {
            var value = reader.GetString();
            if (value.Length >= 35 && value.Length <= 35)
            {
                return value;
            }
            throw new Exception("Cannot unmarshal type string");
        }

        public override void Write(Utf8JsonWriter writer, string value, JsonSerializerOptions options)
        {
            if (value.Length >= 35 && value.Length <= 35)
            {
                JsonSerializer.Serialize(writer, value, options);
                return;
            }
            throw new Exception("Cannot marshal type string");
        }

        public static readonly MinMaxLengthCheckConverter56 Singleton = new MinMaxLengthCheckConverter56();
    }

    internal class MinMaxLengthCheckConverter57 : JsonConverter<string>
    {
        public override bool CanConvert(Type t) => t == typeof(string);

        public override string Read(ref Utf8JsonReader reader, Type typeToConvert, JsonSerializerOptions options)
        {
            var value = reader.GetString();
            if (value.Length >= 10 && value.Length <= 10)
            {
                return value;
            }
            throw new Exception("Cannot unmarshal type string");
        }

        public override void Write(Utf8JsonWriter writer, string value, JsonSerializerOptions options)
        {
            if (value.Length >= 10 && value.Length <= 10)
            {
                JsonSerializer.Serialize(writer, value, options);
                return;
            }
            throw new Exception("Cannot marshal type string");
        }

        public static readonly MinMaxLengthCheckConverter57 Singleton = new MinMaxLengthCheckConverter57();
    }

    internal class MinMaxLengthCheckConverter58 : JsonConverter<string>
    {
        public override bool CanConvert(Type t) => t == typeof(string);

        public override string Read(ref Utf8JsonReader reader, Type typeToConvert, JsonSerializerOptions options)
        {
            var value = reader.GetString();
            if (value.Length >= 3 && value.Length <= 29)
            {
                return value;
            }
            throw new Exception("Cannot unmarshal type string");
        }

        public override void Write(Utf8JsonWriter writer, string value, JsonSerializerOptions options)
        {
            if (value.Length >= 3 && value.Length <= 29)
            {
                JsonSerializer.Serialize(writer, value, options);
                return;
            }
            throw new Exception("Cannot marshal type string");
        }

        public static readonly MinMaxLengthCheckConverter58 Singleton = new MinMaxLengthCheckConverter58();
    }

    internal class MinMaxLengthCheckConverter59 : JsonConverter<string>
    {
        public override bool CanConvert(Type t) => t == typeof(string);

        public override string Read(ref Utf8JsonReader reader, Type typeToConvert, JsonSerializerOptions options)
        {
            var value = reader.GetString();
            if (value.Length >= 37 && value.Length <= 38)
            {
                return value;
            }
            throw new Exception("Cannot unmarshal type string");
        }

        public override void Write(Utf8JsonWriter writer, string value, JsonSerializerOptions options)
        {
            if (value.Length >= 37 && value.Length <= 38)
            {
                JsonSerializer.Serialize(writer, value, options);
                return;
            }
            throw new Exception("Cannot marshal type string");
        }

        public static readonly MinMaxLengthCheckConverter59 Singleton = new MinMaxLengthCheckConverter59();
    }

    internal class MinMaxLengthCheckConverter60 : JsonConverter<string>
    {
        public override bool CanConvert(Type t) => t == typeof(string);

        public override string Read(ref Utf8JsonReader reader, Type typeToConvert, JsonSerializerOptions options)
        {
            var value = reader.GetString();
            if (value.Length >= 30 && value.Length <= 30)
            {
                return value;
            }
            throw new Exception("Cannot unmarshal type string");
        }

        public override void Write(Utf8JsonWriter writer, string value, JsonSerializerOptions options)
        {
            if (value.Length >= 30 && value.Length <= 30)
            {
                JsonSerializer.Serialize(writer, value, options);
                return;
            }
            throw new Exception("Cannot marshal type string");
        }

        public static readonly MinMaxLengthCheckConverter60 Singleton = new MinMaxLengthCheckConverter60();
    }

    internal class MinMaxLengthCheckConverter61 : JsonConverter<string>
    {
        public override bool CanConvert(Type t) => t == typeof(string);

        public override string Read(ref Utf8JsonReader reader, Type typeToConvert, JsonSerializerOptions options)
        {
            var value = reader.GetString();
            if (value.Length >= 40 && value.Length <= 42)
            {
                return value;
            }
            throw new Exception("Cannot unmarshal type string");
        }

        public override void Write(Utf8JsonWriter writer, string value, JsonSerializerOptions options)
        {
            if (value.Length >= 40 && value.Length <= 42)
            {
                JsonSerializer.Serialize(writer, value, options);
                return;
            }
            throw new Exception("Cannot marshal type string");
        }

        public static readonly MinMaxLengthCheckConverter61 Singleton = new MinMaxLengthCheckConverter61();
    }

    internal class MinMaxLengthCheckConverter62 : JsonConverter<string>
    {
        public override bool CanConvert(Type t) => t == typeof(string);

        public override string Read(ref Utf8JsonReader reader, Type typeToConvert, JsonSerializerOptions options)
        {
            var value = reader.GetString();
            if (value.Length >= 40 && value.Length <= 47)
            {
                return value;
            }
            throw new Exception("Cannot unmarshal type string");
        }

        public override void Write(Utf8JsonWriter writer, string value, JsonSerializerOptions options)
        {
            if (value.Length >= 40 && value.Length <= 47)
            {
                JsonSerializer.Serialize(writer, value, options);
                return;
            }
            throw new Exception("Cannot marshal type string");
        }

        public static readonly MinMaxLengthCheckConverter62 Singleton = new MinMaxLengthCheckConverter62();
    }

    internal class MinMaxLengthCheckConverter63 : JsonConverter<string>
    {
        public override bool CanConvert(Type t) => t == typeof(string);

        public override string Read(ref Utf8JsonReader reader, Type typeToConvert, JsonSerializerOptions options)
        {
            var value = reader.GetString();
            if (value.Length >= 17 && value.Length <= 21)
            {
                return value;
            }
            throw new Exception("Cannot unmarshal type string");
        }

        public override void Write(Utf8JsonWriter writer, string value, JsonSerializerOptions options)
        {
            if (value.Length >= 17 && value.Length <= 21)
            {
                JsonSerializer.Serialize(writer, value, options);
                return;
            }
            throw new Exception("Cannot marshal type string");
        }

        public static readonly MinMaxLengthCheckConverter63 Singleton = new MinMaxLengthCheckConverter63();
    }

    internal class MinMaxLengthCheckConverter64 : JsonConverter<string>
    {
        public override bool CanConvert(Type t) => t == typeof(string);

        public override string Read(ref Utf8JsonReader reader, Type typeToConvert, JsonSerializerOptions options)
        {
            var value = reader.GetString();
            if (value.Length >= 10 && value.Length <= 15)
            {
                return value;
            }
            throw new Exception("Cannot unmarshal type string");
        }

        public override void Write(Utf8JsonWriter writer, string value, JsonSerializerOptions options)
        {
            if (value.Length >= 10 && value.Length <= 15)
            {
                JsonSerializer.Serialize(writer, value, options);
                return;
            }
            throw new Exception("Cannot marshal type string");
        }

        public static readonly MinMaxLengthCheckConverter64 Singleton = new MinMaxLengthCheckConverter64();
    }

    internal class MinMaxLengthCheckConverter65 : JsonConverter<string>
    {
        public override bool CanConvert(Type t) => t == typeof(string);

        public override string Read(ref Utf8JsonReader reader, Type typeToConvert, JsonSerializerOptions options)
        {
            var value = reader.GetString();
            if (value.Length >= 45 && value.Length <= 48)
            {
                return value;
            }
            throw new Exception("Cannot unmarshal type string");
        }

        public override void Write(Utf8JsonWriter writer, string value, JsonSerializerOptions options)
        {
            if (value.Length >= 45 && value.Length <= 48)
            {
                JsonSerializer.Serialize(writer, value, options);
                return;
            }
            throw new Exception("Cannot marshal type string");
        }

        public static readonly MinMaxLengthCheckConverter65 Singleton = new MinMaxLengthCheckConverter65();
    }

    internal class MinMaxLengthCheckConverter66 : JsonConverter<string>
    {
        public override bool CanConvert(Type t) => t == typeof(string);

        public override string Read(ref Utf8JsonReader reader, Type typeToConvert, JsonSerializerOptions options)
        {
            var value = reader.GetString();
            if (value.Length >= 11 && value.Length <= 12)
            {
                return value;
            }
            throw new Exception("Cannot unmarshal type string");
        }

        public override void Write(Utf8JsonWriter writer, string value, JsonSerializerOptions options)
        {
            if (value.Length >= 11 && value.Length <= 12)
            {
                JsonSerializer.Serialize(writer, value, options);
                return;
            }
            throw new Exception("Cannot marshal type string");
        }

        public static readonly MinMaxLengthCheckConverter66 Singleton = new MinMaxLengthCheckConverter66();
    }

    internal class MinMaxLengthCheckConverter67 : JsonConverter<string>
    {
        public override bool CanConvert(Type t) => t == typeof(string);

        public override string Read(ref Utf8JsonReader reader, Type typeToConvert, JsonSerializerOptions options)
        {
            var value = reader.GetString();
            if (value.Length >= 91 && value.Length <= 409)
            {
                return value;
            }
            throw new Exception("Cannot unmarshal type string");
        }

        public override void Write(Utf8JsonWriter writer, string value, JsonSerializerOptions options)
        {
            if (value.Length >= 91 && value.Length <= 409)
            {
                JsonSerializer.Serialize(writer, value, options);
                return;
            }
            throw new Exception("Cannot marshal type string");
        }

        public static readonly MinMaxLengthCheckConverter67 Singleton = new MinMaxLengthCheckConverter67();
    }

    internal class MinMaxLengthCheckConverter68 : JsonConverter<string>
    {
        public override bool CanConvert(Type t) => t == typeof(string);

        public override string Read(ref Utf8JsonReader reader, Type typeToConvert, JsonSerializerOptions options)
        {
            var value = reader.GetString();
            if (value.Length >= 74 && value.Length <= 333)
            {
                return value;
            }
            throw new Exception("Cannot unmarshal type string");
        }

        public override void Write(Utf8JsonWriter writer, string value, JsonSerializerOptions options)
        {
            if (value.Length >= 74 && value.Length <= 333)
            {
                JsonSerializer.Serialize(writer, value, options);
                return;
            }
            throw new Exception("Cannot marshal type string");
        }

        public static readonly MinMaxLengthCheckConverter68 Singleton = new MinMaxLengthCheckConverter68();
    }

    internal class MinMaxLengthCheckConverter69 : JsonConverter<string>
    {
        public override bool CanConvert(Type t) => t == typeof(string);

        public override string Read(ref Utf8JsonReader reader, Type typeToConvert, JsonSerializerOptions options)
        {
            var value = reader.GetString();
            if (value.Length >= 73 && value.Length <= 381)
            {
                return value;
            }
            throw new Exception("Cannot unmarshal type string");
        }

        public override void Write(Utf8JsonWriter writer, string value, JsonSerializerOptions options)
        {
            if (value.Length >= 73 && value.Length <= 381)
            {
                JsonSerializer.Serialize(writer, value, options);
                return;
            }
            throw new Exception("Cannot marshal type string");
        }

        public static readonly MinMaxLengthCheckConverter69 Singleton = new MinMaxLengthCheckConverter69();
    }

    internal class MinMaxLengthCheckConverter70 : JsonConverter<string>
    {
        public override bool CanConvert(Type t) => t == typeof(string);

        public override string Read(ref Utf8JsonReader reader, Type typeToConvert, JsonSerializerOptions options)
        {
            var value = reader.GetString();
            if (value.Length >= 78 && value.Length <= 397)
            {
                return value;
            }
            throw new Exception("Cannot unmarshal type string");
        }

        public override void Write(Utf8JsonWriter writer, string value, JsonSerializerOptions options)
        {
            if (value.Length >= 78 && value.Length <= 397)
            {
                JsonSerializer.Serialize(writer, value, options);
                return;
            }
            throw new Exception("Cannot marshal type string");
        }

        public static readonly MinMaxLengthCheckConverter70 Singleton = new MinMaxLengthCheckConverter70();
    }

    internal class MinMaxLengthCheckConverter71 : JsonConverter<string>
    {
        public override bool CanConvert(Type t) => t == typeof(string);

        public override string Read(ref Utf8JsonReader reader, Type typeToConvert, JsonSerializerOptions options)
        {
            var value = reader.GetString();
            if (value.Length >= 28 && value.Length <= 182)
            {
                return value;
            }
            throw new Exception("Cannot unmarshal type string");
        }

        public override void Write(Utf8JsonWriter writer, string value, JsonSerializerOptions options)
        {
            if (value.Length >= 28 && value.Length <= 182)
            {
                JsonSerializer.Serialize(writer, value, options);
                return;
            }
            throw new Exception("Cannot marshal type string");
        }

        public static readonly MinMaxLengthCheckConverter71 Singleton = new MinMaxLengthCheckConverter71();
    }

    internal class MinMaxLengthCheckConverter72 : JsonConverter<string>
    {
        public override bool CanConvert(Type t) => t == typeof(string);

        public override string Read(ref Utf8JsonReader reader, Type typeToConvert, JsonSerializerOptions options)
        {
            var value = reader.GetString();
            if (value.Length >= 23 && value.Length <= 199)
            {
                return value;
            }
            throw new Exception("Cannot unmarshal type string");
        }

        public override void Write(Utf8JsonWriter writer, string value, JsonSerializerOptions options)
        {
            if (value.Length >= 23 && value.Length <= 199)
            {
                JsonSerializer.Serialize(writer, value, options);
                return;
            }
            throw new Exception("Cannot marshal type string");
        }

        public static readonly MinMaxLengthCheckConverter72 Singleton = new MinMaxLengthCheckConverter72();
    }

    internal class MinMaxLengthCheckConverter73 : JsonConverter<string>
    {
        public override bool CanConvert(Type t) => t == typeof(string);

        public override string Read(ref Utf8JsonReader reader, Type typeToConvert, JsonSerializerOptions options)
        {
            var value = reader.GetString();
            if (value.Length >= 70 && value.Length <= 393)
            {
                return value;
            }
            throw new Exception("Cannot unmarshal type string");
        }

        public override void Write(Utf8JsonWriter writer, string value, JsonSerializerOptions options)
        {
            if (value.Length >= 70 && value.Length <= 393)
            {
                JsonSerializer.Serialize(writer, value, options);
                return;
            }
            throw new Exception("Cannot marshal type string");
        }

        public static readonly MinMaxLengthCheckConverter73 Singleton = new MinMaxLengthCheckConverter73();
    }

    internal class MinMaxLengthCheckConverter74 : JsonConverter<string>
    {
        public override bool CanConvert(Type t) => t == typeof(string);

        public override string Read(ref Utf8JsonReader reader, Type typeToConvert, JsonSerializerOptions options)
        {
            var value = reader.GetString();
            if (value.Length >= 17 && value.Length <= 113)
            {
                return value;
            }
            throw new Exception("Cannot unmarshal type string");
        }

        public override void Write(Utf8JsonWriter writer, string value, JsonSerializerOptions options)
        {
            if (value.Length >= 17 && value.Length <= 113)
            {
                JsonSerializer.Serialize(writer, value, options);
                return;
            }
            throw new Exception("Cannot marshal type string");
        }

        public static readonly MinMaxLengthCheckConverter74 Singleton = new MinMaxLengthCheckConverter74();
    }

    internal class BooleanIconIdConverter : JsonConverter<BooleanIconId>
    {
        public override bool CanConvert(Type t) => t == typeof(BooleanIconId);

        public override BooleanIconId Read(ref Utf8JsonReader reader, Type typeToConvert, JsonSerializerOptions options)
        {
            var value = reader.GetString();
            if (value == "person")
            {
                return BooleanIconId.Person;
            }
            throw new Exception("Cannot unmarshal type BooleanIconId");
        }

        public override void Write(Utf8JsonWriter writer, BooleanIconId value, JsonSerializerOptions options)
        {
            if (value == BooleanIconId.Person)
            {
                JsonSerializer.Serialize(writer, "person", options);
                return;
            }
            throw new Exception("Cannot marshal type BooleanIconId");
        }

        public static readonly BooleanIconIdConverter Singleton = new BooleanIconIdConverter();
    }

    internal class MinMaxLengthCheckConverter75 : JsonConverter<string>
    {
        public override bool CanConvert(Type t) => t == typeof(string);

        public override string Read(ref Utf8JsonReader reader, Type typeToConvert, JsonSerializerOptions options)
        {
            var value = reader.GetString();
            if (value.Length >= 58 && value.Length <= 99)
            {
                return value;
            }
            throw new Exception("Cannot unmarshal type string");
        }

        public override void Write(Utf8JsonWriter writer, string value, JsonSerializerOptions options)
        {
            if (value.Length >= 58 && value.Length <= 99)
            {
                JsonSerializer.Serialize(writer, value, options);
                return;
            }
            throw new Exception("Cannot marshal type string");
        }

        public static readonly MinMaxLengthCheckConverter75 Singleton = new MinMaxLengthCheckConverter75();
    }

    internal class MinMaxLengthCheckConverter76 : JsonConverter<string>
    {
        public override bool CanConvert(Type t) => t == typeof(string);

        public override string Read(ref Utf8JsonReader reader, Type typeToConvert, JsonSerializerOptions options)
        {
            var value = reader.GetString();
            if (value.Length >= 49 && value.Length <= 71)
            {
                return value;
            }
            throw new Exception("Cannot unmarshal type string");
        }

        public override void Write(Utf8JsonWriter writer, string value, JsonSerializerOptions options)
        {
            if (value.Length >= 49 && value.Length <= 71)
            {
                JsonSerializer.Serialize(writer, value, options);
                return;
            }
            throw new Exception("Cannot marshal type string");
        }

        public static readonly MinMaxLengthCheckConverter76 Singleton = new MinMaxLengthCheckConverter76();
    }

    internal class MinMaxLengthCheckConverter77 : JsonConverter<string>
    {
        public override bool CanConvert(Type t) => t == typeof(string);

        public override string Read(ref Utf8JsonReader reader, Type typeToConvert, JsonSerializerOptions options)
        {
            var value = reader.GetString();
            if (value.Length >= 69 && value.Length <= 93)
            {
                return value;
            }
            throw new Exception("Cannot unmarshal type string");
        }

        public override void Write(Utf8JsonWriter writer, string value, JsonSerializerOptions options)
        {
            if (value.Length >= 69 && value.Length <= 93)
            {
                JsonSerializer.Serialize(writer, value, options);
                return;
            }
            throw new Exception("Cannot marshal type string");
        }

        public static readonly MinMaxLengthCheckConverter77 Singleton = new MinMaxLengthCheckConverter77();
    }

    internal class MinMaxLengthCheckConverter78 : JsonConverter<string>
    {
        public override bool CanConvert(Type t) => t == typeof(string);

        public override string Read(ref Utf8JsonReader reader, Type typeToConvert, JsonSerializerOptions options)
        {
            var value = reader.GetString();
            if (value.Length >= 86 && value.Length <= 90)
            {
                return value;
            }
            throw new Exception("Cannot unmarshal type string");
        }

        public override void Write(Utf8JsonWriter writer, string value, JsonSerializerOptions options)
        {
            if (value.Length >= 86 && value.Length <= 90)
            {
                JsonSerializer.Serialize(writer, value, options);
                return;
            }
            throw new Exception("Cannot marshal type string");
        }

        public static readonly MinMaxLengthCheckConverter78 Singleton = new MinMaxLengthCheckConverter78();
    }

    internal class MinMaxLengthCheckConverter79 : JsonConverter<string>
    {
        public override bool CanConvert(Type t) => t == typeof(string);

        public override string Read(ref Utf8JsonReader reader, Type typeToConvert, JsonSerializerOptions options)
        {
            var value = reader.GetString();
            if (value.Length >= 30 && value.Length <= 38)
            {
                return value;
            }
            throw new Exception("Cannot unmarshal type string");
        }

        public override void Write(Utf8JsonWriter writer, string value, JsonSerializerOptions options)
        {
            if (value.Length >= 30 && value.Length <= 38)
            {
                JsonSerializer.Serialize(writer, value, options);
                return;
            }
            throw new Exception("Cannot marshal type string");
        }

        public static readonly MinMaxLengthCheckConverter79 Singleton = new MinMaxLengthCheckConverter79();
    }

    internal class MinMaxLengthCheckConverter80 : JsonConverter<string>
    {
        public override bool CanConvert(Type t) => t == typeof(string);

        public override string Read(ref Utf8JsonReader reader, Type typeToConvert, JsonSerializerOptions options)
        {
            var value = reader.GetString();
            if (value.Length >= 29 && value.Length <= 40)
            {
                return value;
            }
            throw new Exception("Cannot unmarshal type string");
        }

        public override void Write(Utf8JsonWriter writer, string value, JsonSerializerOptions options)
        {
            if (value.Length >= 29 && value.Length <= 40)
            {
                JsonSerializer.Serialize(writer, value, options);
                return;
            }
            throw new Exception("Cannot marshal type string");
        }

        public static readonly MinMaxLengthCheckConverter80 Singleton = new MinMaxLengthCheckConverter80();
    }

    internal class MinMaxLengthCheckConverter81 : JsonConverter<string>
    {
        public override bool CanConvert(Type t) => t == typeof(string);

        public override string Read(ref Utf8JsonReader reader, Type typeToConvert, JsonSerializerOptions options)
        {
            var value = reader.GetString();
            if (value.Length >= 73 && value.Length <= 77)
            {
                return value;
            }
            throw new Exception("Cannot unmarshal type string");
        }

        public override void Write(Utf8JsonWriter writer, string value, JsonSerializerOptions options)
        {
            if (value.Length >= 73 && value.Length <= 77)
            {
                JsonSerializer.Serialize(writer, value, options);
                return;
            }
            throw new Exception("Cannot marshal type string");
        }

        public static readonly MinMaxLengthCheckConverter81 Singleton = new MinMaxLengthCheckConverter81();
    }

    internal class MinMaxLengthCheckConverter82 : JsonConverter<string>
    {
        public override bool CanConvert(Type t) => t == typeof(string);

        public override string Read(ref Utf8JsonReader reader, Type typeToConvert, JsonSerializerOptions options)
        {
            var value = reader.GetString();
            if (value.Length >= 20 && value.Length <= 35)
            {
                return value;
            }
            throw new Exception("Cannot unmarshal type string");
        }

        public override void Write(Utf8JsonWriter writer, string value, JsonSerializerOptions options)
        {
            if (value.Length >= 20 && value.Length <= 35)
            {
                JsonSerializer.Serialize(writer, value, options);
                return;
            }
            throw new Exception("Cannot marshal type string");
        }

        public static readonly MinMaxLengthCheckConverter82 Singleton = new MinMaxLengthCheckConverter82();
    }

    internal class MinMaxLengthCheckConverter83 : JsonConverter<string>
    {
        public override bool CanConvert(Type t) => t == typeof(string);

        public override string Read(ref Utf8JsonReader reader, Type typeToConvert, JsonSerializerOptions options)
        {
            var value = reader.GetString();
            if (value.Length >= 52 && value.Length <= 86)
            {
                return value;
            }
            throw new Exception("Cannot unmarshal type string");
        }

        public override void Write(Utf8JsonWriter writer, string value, JsonSerializerOptions options)
        {
            if (value.Length >= 52 && value.Length <= 86)
            {
                JsonSerializer.Serialize(writer, value, options);
                return;
            }
            throw new Exception("Cannot marshal type string");
        }

        public static readonly MinMaxLengthCheckConverter83 Singleton = new MinMaxLengthCheckConverter83();
    }

    internal class MinMaxLengthCheckConverter84 : JsonConverter<string>
    {
        public override bool CanConvert(Type t) => t == typeof(string);

        public override string Read(ref Utf8JsonReader reader, Type typeToConvert, JsonSerializerOptions options)
        {
            var value = reader.GetString();
            if (value.Length >= 45 && value.Length <= 64)
            {
                return value;
            }
            throw new Exception("Cannot unmarshal type string");
        }

        public override void Write(Utf8JsonWriter writer, string value, JsonSerializerOptions options)
        {
            if (value.Length >= 45 && value.Length <= 64)
            {
                JsonSerializer.Serialize(writer, value, options);
                return;
            }
            throw new Exception("Cannot marshal type string");
        }

        public static readonly MinMaxLengthCheckConverter84 Singleton = new MinMaxLengthCheckConverter84();
    }

    internal class MinMaxLengthCheckConverter85 : JsonConverter<string>
    {
        public override bool CanConvert(Type t) => t == typeof(string);

        public override string Read(ref Utf8JsonReader reader, Type typeToConvert, JsonSerializerOptions options)
        {
            var value = reader.GetString();
            if (value.Length >= 66 && value.Length <= 72)
            {
                return value;
            }
            throw new Exception("Cannot unmarshal type string");
        }

        public override void Write(Utf8JsonWriter writer, string value, JsonSerializerOptions options)
        {
            if (value.Length >= 66 && value.Length <= 72)
            {
                JsonSerializer.Serialize(writer, value, options);
                return;
            }
            throw new Exception("Cannot marshal type string");
        }

        public static readonly MinMaxLengthCheckConverter85 Singleton = new MinMaxLengthCheckConverter85();
    }

    internal class MinMaxLengthCheckConverter86 : JsonConverter<string>
    {
        public override bool CanConvert(Type t) => t == typeof(string);

        public override string Read(ref Utf8JsonReader reader, Type typeToConvert, JsonSerializerOptions options)
        {
            var value = reader.GetString();
            if (value.Length >= 71 && value.Length <= 82)
            {
                return value;
            }
            throw new Exception("Cannot unmarshal type string");
        }

        public override void Write(Utf8JsonWriter writer, string value, JsonSerializerOptions options)
        {
            if (value.Length >= 71 && value.Length <= 82)
            {
                JsonSerializer.Serialize(writer, value, options);
                return;
            }
            throw new Exception("Cannot marshal type string");
        }

        public static readonly MinMaxLengthCheckConverter86 Singleton = new MinMaxLengthCheckConverter86();
    }

    internal class MinMaxLengthCheckConverter87 : JsonConverter<string>
    {
        public override bool CanConvert(Type t) => t == typeof(string);

        public override string Read(ref Utf8JsonReader reader, Type typeToConvert, JsonSerializerOptions options)
        {
            var value = reader.GetString();
            if (value.Length >= 29 && value.Length <= 34)
            {
                return value;
            }
            throw new Exception("Cannot unmarshal type string");
        }

        public override void Write(Utf8JsonWriter writer, string value, JsonSerializerOptions options)
        {
            if (value.Length >= 29 && value.Length <= 34)
            {
                JsonSerializer.Serialize(writer, value, options);
                return;
            }
            throw new Exception("Cannot marshal type string");
        }

        public static readonly MinMaxLengthCheckConverter87 Singleton = new MinMaxLengthCheckConverter87();
    }

    internal class MinMaxLengthCheckConverter88 : JsonConverter<string>
    {
        public override bool CanConvert(Type t) => t == typeof(string);

        public override string Read(ref Utf8JsonReader reader, Type typeToConvert, JsonSerializerOptions options)
        {
            var value = reader.GetString();
            if (value.Length >= 31 && value.Length <= 32)
            {
                return value;
            }
            throw new Exception("Cannot unmarshal type string");
        }

        public override void Write(Utf8JsonWriter writer, string value, JsonSerializerOptions options)
        {
            if (value.Length >= 31 && value.Length <= 32)
            {
                JsonSerializer.Serialize(writer, value, options);
                return;
            }
            throw new Exception("Cannot marshal type string");
        }

        public static readonly MinMaxLengthCheckConverter88 Singleton = new MinMaxLengthCheckConverter88();
    }

    internal class MinMaxLengthCheckConverter89 : JsonConverter<string>
    {
        public override bool CanConvert(Type t) => t == typeof(string);

        public override string Read(ref Utf8JsonReader reader, Type typeToConvert, JsonSerializerOptions options)
        {
            var value = reader.GetString();
            if (value.Length >= 69 && value.Length <= 70)
            {
                return value;
            }
            throw new Exception("Cannot unmarshal type string");
        }

        public override void Write(Utf8JsonWriter writer, string value, JsonSerializerOptions options)
        {
            if (value.Length >= 69 && value.Length <= 70)
            {
                JsonSerializer.Serialize(writer, value, options);
                return;
            }
            throw new Exception("Cannot marshal type string");
        }

        public static readonly MinMaxLengthCheckConverter89 Singleton = new MinMaxLengthCheckConverter89();
    }

    internal class MinMaxLengthCheckConverter90 : JsonConverter<string>
    {
        public override bool CanConvert(Type t) => t == typeof(string);

        public override string Read(ref Utf8JsonReader reader, Type typeToConvert, JsonSerializerOptions options)
        {
            var value = reader.GetString();
            if (value.Length >= 19 && value.Length <= 25)
            {
                return value;
            }
            throw new Exception("Cannot unmarshal type string");
        }

        public override void Write(Utf8JsonWriter writer, string value, JsonSerializerOptions options)
        {
            if (value.Length >= 19 && value.Length <= 25)
            {
                JsonSerializer.Serialize(writer, value, options);
                return;
            }
            throw new Exception("Cannot marshal type string");
        }

        public static readonly MinMaxLengthCheckConverter90 Singleton = new MinMaxLengthCheckConverter90();
    }

    internal class AcceptedValueTypeConverter : JsonConverter<AcceptedValueType>
    {
        public override bool CanConvert(Type t) => t == typeof(AcceptedValueType);

        public override AcceptedValueType Read(ref Utf8JsonReader reader, Type typeToConvert, JsonSerializerOptions options)
        {
            var value = reader.GetString();
            switch (value)
            {
                case "station":
                    return AcceptedValueType.Station;
                case "structure":
                    return AcceptedValueType.Structure;
            }
            throw new Exception("Cannot unmarshal type AcceptedValueType");
        }

        public override void Write(Utf8JsonWriter writer, AcceptedValueType value, JsonSerializerOptions options)
        {
            switch (value)
            {
                case AcceptedValueType.Station:
                    JsonSerializer.Serialize(writer, "station", options);
                    return;
                case AcceptedValueType.Structure:
                    JsonSerializer.Serialize(writer, "structure", options);
                    return;
            }
            throw new Exception("Cannot marshal type AcceptedValueType");
        }

        public static readonly AcceptedValueTypeConverter Singleton = new AcceptedValueTypeConverter();
    }

    internal class MinMaxLengthCheckConverter91 : JsonConverter<string>
    {
        public override bool CanConvert(Type t) => t == typeof(string);

        public override string Read(ref Utf8JsonReader reader, Type typeToConvert, JsonSerializerOptions options)
        {
            var value = reader.GetString();
            if (value.Length >= 105 && value.Length <= 105)
            {
                return value;
            }
            throw new Exception("Cannot unmarshal type string");
        }

        public override void Write(Utf8JsonWriter writer, string value, JsonSerializerOptions options)
        {
            if (value.Length >= 105 && value.Length <= 105)
            {
                JsonSerializer.Serialize(writer, value, options);
                return;
            }
            throw new Exception("Cannot marshal type string");
        }

        public static readonly MinMaxLengthCheckConverter91 Singleton = new MinMaxLengthCheckConverter91();
    }

    internal class MinMaxLengthCheckConverter92 : JsonConverter<string>
    {
        public override bool CanConvert(Type t) => t == typeof(string);

        public override string Read(ref Utf8JsonReader reader, Type typeToConvert, JsonSerializerOptions options)
        {
            var value = reader.GetString();
            if (value.Length >= 92 && value.Length <= 92)
            {
                return value;
            }
            throw new Exception("Cannot unmarshal type string");
        }

        public override void Write(Utf8JsonWriter writer, string value, JsonSerializerOptions options)
        {
            if (value.Length >= 92 && value.Length <= 92)
            {
                JsonSerializer.Serialize(writer, value, options);
                return;
            }
            throw new Exception("Cannot marshal type string");
        }

        public static readonly MinMaxLengthCheckConverter92 Singleton = new MinMaxLengthCheckConverter92();
    }

    internal class MinMaxLengthCheckConverter93 : JsonConverter<string>
    {
        public override bool CanConvert(Type t) => t == typeof(string);

        public override string Read(ref Utf8JsonReader reader, Type typeToConvert, JsonSerializerOptions options)
        {
            var value = reader.GetString();
            if (value.Length >= 110 && value.Length <= 110)
            {
                return value;
            }
            throw new Exception("Cannot unmarshal type string");
        }

        public override void Write(Utf8JsonWriter writer, string value, JsonSerializerOptions options)
        {
            if (value.Length >= 110 && value.Length <= 110)
            {
                JsonSerializer.Serialize(writer, value, options);
                return;
            }
            throw new Exception("Cannot marshal type string");
        }

        public static readonly MinMaxLengthCheckConverter93 Singleton = new MinMaxLengthCheckConverter93();
    }

    internal class MinMaxLengthCheckConverter94 : JsonConverter<string>
    {
        public override bool CanConvert(Type t) => t == typeof(string);

        public override string Read(ref Utf8JsonReader reader, Type typeToConvert, JsonSerializerOptions options)
        {
            var value = reader.GetString();
            if (value.Length >= 109 && value.Length <= 109)
            {
                return value;
            }
            throw new Exception("Cannot unmarshal type string");
        }

        public override void Write(Utf8JsonWriter writer, string value, JsonSerializerOptions options)
        {
            if (value.Length >= 109 && value.Length <= 109)
            {
                JsonSerializer.Serialize(writer, value, options);
                return;
            }
            throw new Exception("Cannot marshal type string");
        }

        public static readonly MinMaxLengthCheckConverter94 Singleton = new MinMaxLengthCheckConverter94();
    }

    internal class MinMaxLengthCheckConverter95 : JsonConverter<string>
    {
        public override bool CanConvert(Type t) => t == typeof(string);

        public override string Read(ref Utf8JsonReader reader, Type typeToConvert, JsonSerializerOptions options)
        {
            var value = reader.GetString();
            if (value.Length >= 39 && value.Length <= 39)
            {
                return value;
            }
            throw new Exception("Cannot unmarshal type string");
        }

        public override void Write(Utf8JsonWriter writer, string value, JsonSerializerOptions options)
        {
            if (value.Length >= 39 && value.Length <= 39)
            {
                JsonSerializer.Serialize(writer, value, options);
                return;
            }
            throw new Exception("Cannot marshal type string");
        }

        public static readonly MinMaxLengthCheckConverter95 Singleton = new MinMaxLengthCheckConverter95();
    }

    internal class MinMaxLengthCheckConverter96 : JsonConverter<string>
    {
        public override bool CanConvert(Type t) => t == typeof(string);

        public override string Read(ref Utf8JsonReader reader, Type typeToConvert, JsonSerializerOptions options)
        {
            var value = reader.GetString();
            if (value.Length >= 50 && value.Length <= 50)
            {
                return value;
            }
            throw new Exception("Cannot unmarshal type string");
        }

        public override void Write(Utf8JsonWriter writer, string value, JsonSerializerOptions options)
        {
            if (value.Length >= 50 && value.Length <= 50)
            {
                JsonSerializer.Serialize(writer, value, options);
                return;
            }
            throw new Exception("Cannot marshal type string");
        }

        public static readonly MinMaxLengthCheckConverter96 Singleton = new MinMaxLengthCheckConverter96();
    }

    internal class DeliveryLocationIconIdConverter : JsonConverter<DeliveryLocationIconId>
    {
        public override bool CanConvert(Type t) => t == typeof(DeliveryLocationIconId);

        public override DeliveryLocationIconId Read(ref Utf8JsonReader reader, Type typeToConvert, JsonSerializerOptions options)
        {
            var value = reader.GetString();
            if (value == "location")
            {
                return DeliveryLocationIconId.Location;
            }
            throw new Exception("Cannot unmarshal type DeliveryLocationIconId");
        }

        public override void Write(Utf8JsonWriter writer, DeliveryLocationIconId value, JsonSerializerOptions options)
        {
            if (value == DeliveryLocationIconId.Location)
            {
                JsonSerializer.Serialize(writer, "location", options);
                return;
            }
            throw new Exception("Cannot marshal type DeliveryLocationIconId");
        }

        public static readonly DeliveryLocationIconIdConverter Singleton = new DeliveryLocationIconIdConverter();
    }

    internal class MinMaxLengthCheckConverter97 : JsonConverter<string>
    {
        public override bool CanConvert(Type t) => t == typeof(string);

        public override string Read(ref Utf8JsonReader reader, Type typeToConvert, JsonSerializerOptions options)
        {
            var value = reader.GetString();
            if (value.Length >= 4 && value.Length <= 4)
            {
                return value;
            }
            throw new Exception("Cannot unmarshal type string");
        }

        public override void Write(Utf8JsonWriter writer, string value, JsonSerializerOptions options)
        {
            if (value.Length >= 4 && value.Length <= 4)
            {
                JsonSerializer.Serialize(writer, value, options);
                return;
            }
            throw new Exception("Cannot marshal type string");
        }

        public static readonly MinMaxLengthCheckConverter97 Singleton = new MinMaxLengthCheckConverter97();
    }

    internal class MinMaxLengthCheckConverter98 : JsonConverter<string>
    {
        public override bool CanConvert(Type t) => t == typeof(string);

        public override string Read(ref Utf8JsonReader reader, Type typeToConvert, JsonSerializerOptions options)
        {
            var value = reader.GetString();
            if (value.Length >= 11 && value.Length <= 11)
            {
                return value;
            }
            throw new Exception("Cannot unmarshal type string");
        }

        public override void Write(Utf8JsonWriter writer, string value, JsonSerializerOptions options)
        {
            if (value.Length >= 11 && value.Length <= 11)
            {
                JsonSerializer.Serialize(writer, value, options);
                return;
            }
            throw new Exception("Cannot marshal type string");
        }

        public static readonly MinMaxLengthCheckConverter98 Singleton = new MinMaxLengthCheckConverter98();
    }

    internal class MinMaxLengthCheckConverter99 : JsonConverter<string>
    {
        public override bool CanConvert(Type t) => t == typeof(string);

        public override string Read(ref Utf8JsonReader reader, Type typeToConvert, JsonSerializerOptions options)
        {
            var value = reader.GetString();
            if (value.Length >= 7 && value.Length <= 7)
            {
                return value;
            }
            throw new Exception("Cannot unmarshal type string");
        }

        public override void Write(Utf8JsonWriter writer, string value, JsonSerializerOptions options)
        {
            if (value.Length >= 7 && value.Length <= 7)
            {
                JsonSerializer.Serialize(writer, value, options);
                return;
            }
            throw new Exception("Cannot marshal type string");
        }

        public static readonly MinMaxLengthCheckConverter99 Singleton = new MinMaxLengthCheckConverter99();
    }

    internal class MinMaxLengthCheckConverter100 : JsonConverter<string>
    {
        public override bool CanConvert(Type t) => t == typeof(string);

        public override string Read(ref Utf8JsonReader reader, Type typeToConvert, JsonSerializerOptions options)
        {
            var value = reader.GetString();
            if (value.Length >= 3 && value.Length <= 3)
            {
                return value;
            }
            throw new Exception("Cannot unmarshal type string");
        }

        public override void Write(Utf8JsonWriter writer, string value, JsonSerializerOptions options)
        {
            if (value.Length >= 3 && value.Length <= 3)
            {
                JsonSerializer.Serialize(writer, value, options);
                return;
            }
            throw new Exception("Cannot marshal type string");
        }

        public static readonly MinMaxLengthCheckConverter100 Singleton = new MinMaxLengthCheckConverter100();
    }

    internal class MinMaxLengthCheckConverter101 : JsonConverter<string>
    {
        public override bool CanConvert(Type t) => t == typeof(string);

        public override string Read(ref Utf8JsonReader reader, Type typeToConvert, JsonSerializerOptions options)
        {
            var value = reader.GetString();
            if (value.Length >= 16 && value.Length <= 16)
            {
                return value;
            }
            throw new Exception("Cannot unmarshal type string");
        }

        public override void Write(Utf8JsonWriter writer, string value, JsonSerializerOptions options)
        {
            if (value.Length >= 16 && value.Length <= 16)
            {
                JsonSerializer.Serialize(writer, value, options);
                return;
            }
            throw new Exception("Cannot marshal type string");
        }

        public static readonly MinMaxLengthCheckConverter101 Singleton = new MinMaxLengthCheckConverter101();
    }

    internal class MinMaxLengthCheckConverter102 : JsonConverter<string>
    {
        public override bool CanConvert(Type t) => t == typeof(string);

        public override string Read(ref Utf8JsonReader reader, Type typeToConvert, JsonSerializerOptions options)
        {
            var value = reader.GetString();
            if (value.Length >= 14 && value.Length <= 14)
            {
                return value;
            }
            throw new Exception("Cannot unmarshal type string");
        }

        public override void Write(Utf8JsonWriter writer, string value, JsonSerializerOptions options)
        {
            if (value.Length >= 14 && value.Length <= 14)
            {
                JsonSerializer.Serialize(writer, value, options);
                return;
            }
            throw new Exception("Cannot marshal type string");
        }

        public static readonly MinMaxLengthCheckConverter102 Singleton = new MinMaxLengthCheckConverter102();
    }

    internal class MinMaxLengthCheckConverter103 : JsonConverter<string>
    {
        public override bool CanConvert(Type t) => t == typeof(string);

        public override string Read(ref Utf8JsonReader reader, Type typeToConvert, JsonSerializerOptions options)
        {
            var value = reader.GetString();
            if (value.Length >= 12 && value.Length <= 12)
            {
                return value;
            }
            throw new Exception("Cannot unmarshal type string");
        }

        public override void Write(Utf8JsonWriter writer, string value, JsonSerializerOptions options)
        {
            if (value.Length >= 12 && value.Length <= 12)
            {
                JsonSerializer.Serialize(writer, value, options);
                return;
            }
            throw new Exception("Cannot marshal type string");
        }

        public static readonly MinMaxLengthCheckConverter103 Singleton = new MinMaxLengthCheckConverter103();
    }

    internal class MinMaxLengthCheckConverter104 : JsonConverter<string>
    {
        public override bool CanConvert(Type t) => t == typeof(string);

        public override string Read(ref Utf8JsonReader reader, Type typeToConvert, JsonSerializerOptions options)
        {
            var value = reader.GetString();
            if (value.Length >= 5 && value.Length <= 5)
            {
                return value;
            }
            throw new Exception("Cannot unmarshal type string");
        }

        public override void Write(Utf8JsonWriter writer, string value, JsonSerializerOptions options)
        {
            if (value.Length >= 5 && value.Length <= 5)
            {
                JsonSerializer.Serialize(writer, value, options);
                return;
            }
            throw new Exception("Cannot marshal type string");
        }

        public static readonly MinMaxLengthCheckConverter104 Singleton = new MinMaxLengthCheckConverter104();
    }

    internal class MinMaxLengthCheckConverter105 : JsonConverter<string>
    {
        public override bool CanConvert(Type t) => t == typeof(string);

        public override string Read(ref Utf8JsonReader reader, Type typeToConvert, JsonSerializerOptions options)
        {
            var value = reader.GetString();
            if (value.Length >= 77 && value.Length <= 77)
            {
                return value;
            }
            throw new Exception("Cannot unmarshal type string");
        }

        public override void Write(Utf8JsonWriter writer, string value, JsonSerializerOptions options)
        {
            if (value.Length >= 77 && value.Length <= 77)
            {
                JsonSerializer.Serialize(writer, value, options);
                return;
            }
            throw new Exception("Cannot marshal type string");
        }

        public static readonly MinMaxLengthCheckConverter105 Singleton = new MinMaxLengthCheckConverter105();
    }

    internal class MinMaxLengthCheckConverter106 : JsonConverter<string>
    {
        public override bool CanConvert(Type t) => t == typeof(string);

        public override string Read(ref Utf8JsonReader reader, Type typeToConvert, JsonSerializerOptions options)
        {
            var value = reader.GetString();
            if (value.Length >= 46 && value.Length <= 46)
            {
                return value;
            }
            throw new Exception("Cannot unmarshal type string");
        }

        public override void Write(Utf8JsonWriter writer, string value, JsonSerializerOptions options)
        {
            if (value.Length >= 46 && value.Length <= 46)
            {
                JsonSerializer.Serialize(writer, value, options);
                return;
            }
            throw new Exception("Cannot marshal type string");
        }

        public static readonly MinMaxLengthCheckConverter106 Singleton = new MinMaxLengthCheckConverter106();
    }

    internal class MinMaxLengthCheckConverter107 : JsonConverter<string>
    {
        public override bool CanConvert(Type t) => t == typeof(string);

        public override string Read(ref Utf8JsonReader reader, Type typeToConvert, JsonSerializerOptions options)
        {
            var value = reader.GetString();
            if (value.Length >= 52 && value.Length <= 52)
            {
                return value;
            }
            throw new Exception("Cannot unmarshal type string");
        }

        public override void Write(Utf8JsonWriter writer, string value, JsonSerializerOptions options)
        {
            if (value.Length >= 52 && value.Length <= 52)
            {
                JsonSerializer.Serialize(writer, value, options);
                return;
            }
            throw new Exception("Cannot marshal type string");
        }

        public static readonly MinMaxLengthCheckConverter107 Singleton = new MinMaxLengthCheckConverter107();
    }

    internal class MinMaxLengthCheckConverter108 : JsonConverter<string>
    {
        public override bool CanConvert(Type t) => t == typeof(string);

        public override string Read(ref Utf8JsonReader reader, Type typeToConvert, JsonSerializerOptions options)
        {
            var value = reader.GetString();
            if (value.Length >= 24 && value.Length <= 24)
            {
                return value;
            }
            throw new Exception("Cannot unmarshal type string");
        }

        public override void Write(Utf8JsonWriter writer, string value, JsonSerializerOptions options)
        {
            if (value.Length >= 24 && value.Length <= 24)
            {
                JsonSerializer.Serialize(writer, value, options);
                return;
            }
            throw new Exception("Cannot marshal type string");
        }

        public static readonly MinMaxLengthCheckConverter108 Singleton = new MinMaxLengthCheckConverter108();
    }

    internal class MinMaxLengthCheckConverter109 : JsonConverter<string>
    {
        public override bool CanConvert(Type t) => t == typeof(string);

        public override string Read(ref Utf8JsonReader reader, Type typeToConvert, JsonSerializerOptions options)
        {
            var value = reader.GetString();
            if (value.Length >= 36 && value.Length <= 36)
            {
                return value;
            }
            throw new Exception("Cannot unmarshal type string");
        }

        public override void Write(Utf8JsonWriter writer, string value, JsonSerializerOptions options)
        {
            if (value.Length >= 36 && value.Length <= 36)
            {
                JsonSerializer.Serialize(writer, value, options);
                return;
            }
            throw new Exception("Cannot marshal type string");
        }

        public static readonly MinMaxLengthCheckConverter109 Singleton = new MinMaxLengthCheckConverter109();
    }

    internal class ItemDeliveryIconIdConverter : JsonConverter<ItemDeliveryIconId>
    {
        public override bool CanConvert(Type t) => t == typeof(ItemDeliveryIconId);

        public override ItemDeliveryIconId Read(ref Utf8JsonReader reader, Type typeToConvert, JsonSerializerOptions options)
        {
            var value = reader.GetString();
            if (value == "inventory")
            {
                return ItemDeliveryIconId.Inventory;
            }
            throw new Exception("Cannot unmarshal type ItemDeliveryIconId");
        }

        public override void Write(Utf8JsonWriter writer, ItemDeliveryIconId value, JsonSerializerOptions options)
        {
            if (value == ItemDeliveryIconId.Inventory)
            {
                JsonSerializer.Serialize(writer, "inventory", options);
                return;
            }
            throw new Exception("Cannot marshal type ItemDeliveryIconId");
        }

        public static readonly ItemDeliveryIconIdConverter Singleton = new ItemDeliveryIconIdConverter();
    }

    internal class FluffyDecodeArrayConverter : JsonConverter<string[]>
    {
        public override bool CanConvert(Type t) => t == typeof(string[]);

        public override string[] Read(ref Utf8JsonReader reader, Type typeToConvert, JsonSerializerOptions options)
        {
            reader.Read();
            var value = new List<string>();
            while (reader.TokenType != JsonTokenType.EndArray)
            {
                var converter = MinMaxLengthCheckConverter31.Singleton;
                var arrayItem = (string)converter.Read(ref reader, typeof(string), options);
                value.Add(arrayItem);
                reader.Read();
            }
            return value.ToArray();
        }

        public override void Write(Utf8JsonWriter writer, string[] value, JsonSerializerOptions options)
        {
            writer.WriteStartArray();
            foreach (var arrayItem in value)
            {
                var converter = MinMaxLengthCheckConverter31.Singleton;
                converter.Write(writer, arrayItem, options);
            }
            writer.WriteEndArray();
            return;
        }

        public static readonly FluffyDecodeArrayConverter Singleton = new FluffyDecodeArrayConverter();
    }

    internal class MinMaxLengthCheckConverter110 : JsonConverter<string>
    {
        public override bool CanConvert(Type t) => t == typeof(string);

        public override string Read(ref Utf8JsonReader reader, Type typeToConvert, JsonSerializerOptions options)
        {
            var value = reader.GetString();
            if (value.Length >= 27 && value.Length <= 27)
            {
                return value;
            }
            throw new Exception("Cannot unmarshal type string");
        }

        public override void Write(Utf8JsonWriter writer, string value, JsonSerializerOptions options)
        {
            if (value.Length >= 27 && value.Length <= 27)
            {
                JsonSerializer.Serialize(writer, value, options);
                return;
            }
            throw new Exception("Cannot marshal type string");
        }

        public static readonly MinMaxLengthCheckConverter110 Singleton = new MinMaxLengthCheckConverter110();
    }

    internal class MinMaxLengthCheckConverter111 : JsonConverter<string>
    {
        public override bool CanConvert(Type t) => t == typeof(string);

        public override string Read(ref Utf8JsonReader reader, Type typeToConvert, JsonSerializerOptions options)
        {
            var value = reader.GetString();
            if (value.Length >= 22 && value.Length <= 22)
            {
                return value;
            }
            throw new Exception("Cannot unmarshal type string");
        }

        public override void Write(Utf8JsonWriter writer, string value, JsonSerializerOptions options)
        {
            if (value.Length >= 22 && value.Length <= 22)
            {
                JsonSerializer.Serialize(writer, value, options);
                return;
            }
            throw new Exception("Cannot marshal type string");
        }

        public static readonly MinMaxLengthCheckConverter111 Singleton = new MinMaxLengthCheckConverter111();
    }

    internal class TentacledDecodeArrayConverter : JsonConverter<string[]>
    {
        public override bool CanConvert(Type t) => t == typeof(string[]);

        public override string[] Read(ref Utf8JsonReader reader, Type typeToConvert, JsonSerializerOptions options)
        {
            reader.Read();
            var value = new List<string>();
            while (reader.TokenType != JsonTokenType.EndArray)
            {
                var converter = MinMaxLengthCheckConverter112.Singleton;
                var arrayItem = (string)converter.Read(ref reader, typeof(string), options);
                value.Add(arrayItem);
                reader.Read();
            }
            return value.ToArray();
        }

        public override void Write(Utf8JsonWriter writer, string[] value, JsonSerializerOptions options)
        {
            writer.WriteStartArray();
            foreach (var arrayItem in value)
            {
                var converter = MinMaxLengthCheckConverter112.Singleton;
                converter.Write(writer, arrayItem, options);
            }
            writer.WriteEndArray();
            return;
        }

        public static readonly TentacledDecodeArrayConverter Singleton = new TentacledDecodeArrayConverter();
    }

    internal class MinMaxLengthCheckConverter112 : JsonConverter<string>
    {
        public override bool CanConvert(Type t) => t == typeof(string);

        public override string Read(ref Utf8JsonReader reader, Type typeToConvert, JsonSerializerOptions options)
        {
            var value = reader.GetString();
            if (value.Length >= 6 && value.Length <= 13)
            {
                return value;
            }
            throw new Exception("Cannot unmarshal type string");
        }

        public override void Write(Utf8JsonWriter writer, string value, JsonSerializerOptions options)
        {
            if (value.Length >= 6 && value.Length <= 13)
            {
                JsonSerializer.Serialize(writer, value, options);
                return;
            }
            throw new Exception("Cannot marshal type string");
        }

        public static readonly MinMaxLengthCheckConverter112 Singleton = new MinMaxLengthCheckConverter112();
    }

    internal class MinMaxLengthCheckConverter113 : JsonConverter<string>
    {
        public override bool CanConvert(Type t) => t == typeof(string);

        public override string Read(ref Utf8JsonReader reader, Type typeToConvert, JsonSerializerOptions options)
        {
            var value = reader.GetString();
            if (value.Length >= 40 && value.Length <= 177)
            {
                return value;
            }
            throw new Exception("Cannot unmarshal type string");
        }

        public override void Write(Utf8JsonWriter writer, string value, JsonSerializerOptions options)
        {
            if (value.Length >= 40 && value.Length <= 177)
            {
                JsonSerializer.Serialize(writer, value, options);
                return;
            }
            throw new Exception("Cannot marshal type string");
        }

        public static readonly MinMaxLengthCheckConverter113 Singleton = new MinMaxLengthCheckConverter113();
    }

    internal class MinMaxLengthCheckConverter114 : JsonConverter<string>
    {
        public override bool CanConvert(Type t) => t == typeof(string);

        public override string Read(ref Utf8JsonReader reader, Type typeToConvert, JsonSerializerOptions options)
        {
            var value = reader.GetString();
            if (value.Length >= 42 && value.Length <= 158)
            {
                return value;
            }
            throw new Exception("Cannot unmarshal type string");
        }

        public override void Write(Utf8JsonWriter writer, string value, JsonSerializerOptions options)
        {
            if (value.Length >= 42 && value.Length <= 158)
            {
                JsonSerializer.Serialize(writer, value, options);
                return;
            }
            throw new Exception("Cannot marshal type string");
        }

        public static readonly MinMaxLengthCheckConverter114 Singleton = new MinMaxLengthCheckConverter114();
    }

    internal class MinMaxLengthCheckConverter115 : JsonConverter<string>
    {
        public override bool CanConvert(Type t) => t == typeof(string);

        public override string Read(ref Utf8JsonReader reader, Type typeToConvert, JsonSerializerOptions options)
        {
            var value = reader.GetString();
            if (value.Length >= 41 && value.Length <= 161)
            {
                return value;
            }
            throw new Exception("Cannot unmarshal type string");
        }

        public override void Write(Utf8JsonWriter writer, string value, JsonSerializerOptions options)
        {
            if (value.Length >= 41 && value.Length <= 161)
            {
                JsonSerializer.Serialize(writer, value, options);
                return;
            }
            throw new Exception("Cannot marshal type string");
        }

        public static readonly MinMaxLengthCheckConverter115 Singleton = new MinMaxLengthCheckConverter115();
    }

    internal class MinMaxLengthCheckConverter116 : JsonConverter<string>
    {
        public override bool CanConvert(Type t) => t == typeof(string);

        public override string Read(ref Utf8JsonReader reader, Type typeToConvert, JsonSerializerOptions options)
        {
            var value = reader.GetString();
            if (value.Length >= 42 && value.Length <= 170)
            {
                return value;
            }
            throw new Exception("Cannot unmarshal type string");
        }

        public override void Write(Utf8JsonWriter writer, string value, JsonSerializerOptions options)
        {
            if (value.Length >= 42 && value.Length <= 170)
            {
                JsonSerializer.Serialize(writer, value, options);
                return;
            }
            throw new Exception("Cannot marshal type string");
        }

        public static readonly MinMaxLengthCheckConverter116 Singleton = new MinMaxLengthCheckConverter116();
    }

    internal class MinMaxLengthCheckConverter117 : JsonConverter<string>
    {
        public override bool CanConvert(Type t) => t == typeof(string);

        public override string Read(ref Utf8JsonReader reader, Type typeToConvert, JsonSerializerOptions options)
        {
            var value = reader.GetString();
            if (value.Length >= 16 && value.Length <= 64)
            {
                return value;
            }
            throw new Exception("Cannot unmarshal type string");
        }

        public override void Write(Utf8JsonWriter writer, string value, JsonSerializerOptions options)
        {
            if (value.Length >= 16 && value.Length <= 64)
            {
                JsonSerializer.Serialize(writer, value, options);
                return;
            }
            throw new Exception("Cannot marshal type string");
        }

        public static readonly MinMaxLengthCheckConverter117 Singleton = new MinMaxLengthCheckConverter117();
    }

    internal class MinMaxLengthCheckConverter118 : JsonConverter<string>
    {
        public override bool CanConvert(Type t) => t == typeof(string);

        public override string Read(ref Utf8JsonReader reader, Type typeToConvert, JsonSerializerOptions options)
        {
            var value = reader.GetString();
            if (value.Length >= 16 && value.Length <= 76)
            {
                return value;
            }
            throw new Exception("Cannot unmarshal type string");
        }

        public override void Write(Utf8JsonWriter writer, string value, JsonSerializerOptions options)
        {
            if (value.Length >= 16 && value.Length <= 76)
            {
                JsonSerializer.Serialize(writer, value, options);
                return;
            }
            throw new Exception("Cannot marshal type string");
        }

        public static readonly MinMaxLengthCheckConverter118 Singleton = new MinMaxLengthCheckConverter118();
    }

    internal class MinMaxLengthCheckConverter119 : JsonConverter<string>
    {
        public override bool CanConvert(Type t) => t == typeof(string);

        public override string Read(ref Utf8JsonReader reader, Type typeToConvert, JsonSerializerOptions options)
        {
            var value = reader.GetString();
            if (value.Length >= 37 && value.Length <= 144)
            {
                return value;
            }
            throw new Exception("Cannot unmarshal type string");
        }

        public override void Write(Utf8JsonWriter writer, string value, JsonSerializerOptions options)
        {
            if (value.Length >= 37 && value.Length <= 144)
            {
                JsonSerializer.Serialize(writer, value, options);
                return;
            }
            throw new Exception("Cannot marshal type string");
        }

        public static readonly MinMaxLengthCheckConverter119 Singleton = new MinMaxLengthCheckConverter119();
    }

    internal class MinMaxLengthCheckConverter120 : JsonConverter<string>
    {
        public override bool CanConvert(Type t) => t == typeof(string);

        public override string Read(ref Utf8JsonReader reader, Type typeToConvert, JsonSerializerOptions options)
        {
            var value = reader.GetString();
            if (value.Length >= 11 && value.Length <= 51)
            {
                return value;
            }
            throw new Exception("Cannot unmarshal type string");
        }

        public override void Write(Utf8JsonWriter writer, string value, JsonSerializerOptions options)
        {
            if (value.Length >= 11 && value.Length <= 51)
            {
                JsonSerializer.Serialize(writer, value, options);
                return;
            }
            throw new Exception("Cannot marshal type string");
        }

        public static readonly MinMaxLengthCheckConverter120 Singleton = new MinMaxLengthCheckConverter120();
    }

    internal class MinMaxLengthCheckConverter121 : JsonConverter<string>
    {
        public override bool CanConvert(Type t) => t == typeof(string);

        public override string Read(ref Utf8JsonReader reader, Type typeToConvert, JsonSerializerOptions options)
        {
            var value = reader.GetString();
            if (value.Length >= 6 && value.Length <= 21)
            {
                return value;
            }
            throw new Exception("Cannot unmarshal type string");
        }

        public override void Write(Utf8JsonWriter writer, string value, JsonSerializerOptions options)
        {
            if (value.Length >= 6 && value.Length <= 21)
            {
                JsonSerializer.Serialize(writer, value, options);
                return;
            }
            throw new Exception("Cannot marshal type string");
        }

        public static readonly MinMaxLengthCheckConverter121 Singleton = new MinMaxLengthCheckConverter121();
    }

    internal class MinMaxLengthCheckConverter122 : JsonConverter<string>
    {
        public override bool CanConvert(Type t) => t == typeof(string);

        public override string Read(ref Utf8JsonReader reader, Type typeToConvert, JsonSerializerOptions options)
        {
            var value = reader.GetString();
            if (value.Length >= 10 && value.Length <= 33)
            {
                return value;
            }
            throw new Exception("Cannot unmarshal type string");
        }

        public override void Write(Utf8JsonWriter writer, string value, JsonSerializerOptions options)
        {
            if (value.Length >= 10 && value.Length <= 33)
            {
                JsonSerializer.Serialize(writer, value, options);
                return;
            }
            throw new Exception("Cannot marshal type string");
        }

        public static readonly MinMaxLengthCheckConverter122 Singleton = new MinMaxLengthCheckConverter122();
    }

    internal class MinMaxLengthCheckConverter123 : JsonConverter<string>
    {
        public override bool CanConvert(Type t) => t == typeof(string);

        public override string Read(ref Utf8JsonReader reader, Type typeToConvert, JsonSerializerOptions options)
        {
            var value = reader.GetString();
            if (value.Length >= 12 && value.Length <= 27)
            {
                return value;
            }
            throw new Exception("Cannot unmarshal type string");
        }

        public override void Write(Utf8JsonWriter writer, string value, JsonSerializerOptions options)
        {
            if (value.Length >= 12 && value.Length <= 27)
            {
                JsonSerializer.Serialize(writer, value, options);
                return;
            }
            throw new Exception("Cannot marshal type string");
        }

        public static readonly MinMaxLengthCheckConverter123 Singleton = new MinMaxLengthCheckConverter123();
    }

    internal class MinMaxLengthCheckConverter124 : JsonConverter<string>
    {
        public override bool CanConvert(Type t) => t == typeof(string);

        public override string Read(ref Utf8JsonReader reader, Type typeToConvert, JsonSerializerOptions options)
        {
            var value = reader.GetString();
            if (value.Length >= 16 && value.Length <= 28)
            {
                return value;
            }
            throw new Exception("Cannot unmarshal type string");
        }

        public override void Write(Utf8JsonWriter writer, string value, JsonSerializerOptions options)
        {
            if (value.Length >= 16 && value.Length <= 28)
            {
                JsonSerializer.Serialize(writer, value, options);
                return;
            }
            throw new Exception("Cannot marshal type string");
        }

        public static readonly MinMaxLengthCheckConverter124 Singleton = new MinMaxLengthCheckConverter124();
    }

    internal class MinMaxLengthCheckConverter125 : JsonConverter<string>
    {
        public override bool CanConvert(Type t) => t == typeof(string);

        public override string Read(ref Utf8JsonReader reader, Type typeToConvert, JsonSerializerOptions options)
        {
            var value = reader.GetString();
            if (value.Length >= 16 && value.Length <= 30)
            {
                return value;
            }
            throw new Exception("Cannot unmarshal type string");
        }

        public override void Write(Utf8JsonWriter writer, string value, JsonSerializerOptions options)
        {
            if (value.Length >= 16 && value.Length <= 30)
            {
                JsonSerializer.Serialize(writer, value, options);
                return;
            }
            throw new Exception("Cannot marshal type string");
        }

        public static readonly MinMaxLengthCheckConverter125 Singleton = new MinMaxLengthCheckConverter125();
    }

    internal class MinMaxLengthCheckConverter126 : JsonConverter<string>
    {
        public override bool CanConvert(Type t) => t == typeof(string);

        public override string Read(ref Utf8JsonReader reader, Type typeToConvert, JsonSerializerOptions options)
        {
            var value = reader.GetString();
            if (value.Length >= 4 && value.Length <= 12)
            {
                return value;
            }
            throw new Exception("Cannot unmarshal type string");
        }

        public override void Write(Utf8JsonWriter writer, string value, JsonSerializerOptions options)
        {
            if (value.Length >= 4 && value.Length <= 12)
            {
                JsonSerializer.Serialize(writer, value, options);
                return;
            }
            throw new Exception("Cannot marshal type string");
        }

        public static readonly MinMaxLengthCheckConverter126 Singleton = new MinMaxLengthCheckConverter126();
    }

    internal class MinMaxLengthCheckConverter127 : JsonConverter<string>
    {
        public override bool CanConvert(Type t) => t == typeof(string);

        public override string Read(ref Utf8JsonReader reader, Type typeToConvert, JsonSerializerOptions options)
        {
            var value = reader.GetString();
            if (value.Length >= 5 && value.Length <= 11)
            {
                return value;
            }
            throw new Exception("Cannot unmarshal type string");
        }

        public override void Write(Utf8JsonWriter writer, string value, JsonSerializerOptions options)
        {
            if (value.Length >= 5 && value.Length <= 11)
            {
                JsonSerializer.Serialize(writer, value, options);
                return;
            }
            throw new Exception("Cannot marshal type string");
        }

        public static readonly MinMaxLengthCheckConverter127 Singleton = new MinMaxLengthCheckConverter127();
    }

    internal class MinMaxLengthCheckConverter128 : JsonConverter<string>
    {
        public override bool CanConvert(Type t) => t == typeof(string);

        public override string Read(ref Utf8JsonReader reader, Type typeToConvert, JsonSerializerOptions options)
        {
            var value = reader.GetString();
            if (value.Length >= 13 && value.Length <= 41)
            {
                return value;
            }
            throw new Exception("Cannot unmarshal type string");
        }

        public override void Write(Utf8JsonWriter writer, string value, JsonSerializerOptions options)
        {
            if (value.Length >= 13 && value.Length <= 41)
            {
                JsonSerializer.Serialize(writer, value, options);
                return;
            }
            throw new Exception("Cannot marshal type string");
        }

        public static readonly MinMaxLengthCheckConverter128 Singleton = new MinMaxLengthCheckConverter128();
    }

    internal class MinMaxLengthCheckConverter129 : JsonConverter<string>
    {
        public override bool CanConvert(Type t) => t == typeof(string);

        public override string Read(ref Utf8JsonReader reader, Type typeToConvert, JsonSerializerOptions options)
        {
            var value = reader.GetString();
            if (value.Length >= 4 && value.Length <= 8)
            {
                return value;
            }
            throw new Exception("Cannot unmarshal type string");
        }

        public override void Write(Utf8JsonWriter writer, string value, JsonSerializerOptions options)
        {
            if (value.Length >= 4 && value.Length <= 8)
            {
                JsonSerializer.Serialize(writer, value, options);
                return;
            }
            throw new Exception("Cannot marshal type string");
        }

        public static readonly MinMaxLengthCheckConverter129 Singleton = new MinMaxLengthCheckConverter129();
    }

    internal class MinMaxLengthCheckConverter130 : JsonConverter<string>
    {
        public override bool CanConvert(Type t) => t == typeof(string);

        public override string Read(ref Utf8JsonReader reader, Type typeToConvert, JsonSerializerOptions options)
        {
            var value = reader.GetString();
            if (value.Length >= 8 && value.Length <= 30)
            {
                return value;
            }
            throw new Exception("Cannot unmarshal type string");
        }

        public override void Write(Utf8JsonWriter writer, string value, JsonSerializerOptions options)
        {
            if (value.Length >= 8 && value.Length <= 30)
            {
                JsonSerializer.Serialize(writer, value, options);
                return;
            }
            throw new Exception("Cannot marshal type string");
        }

        public static readonly MinMaxLengthCheckConverter130 Singleton = new MinMaxLengthCheckConverter130();
    }

    internal class MinMaxLengthCheckConverter131 : JsonConverter<string>
    {
        public override bool CanConvert(Type t) => t == typeof(string);

        public override string Read(ref Utf8JsonReader reader, Type typeToConvert, JsonSerializerOptions options)
        {
            var value = reader.GetString();
            if (value.Length >= 11 && value.Length <= 30)
            {
                return value;
            }
            throw new Exception("Cannot unmarshal type string");
        }

        public override void Write(Utf8JsonWriter writer, string value, JsonSerializerOptions options)
        {
            if (value.Length >= 11 && value.Length <= 30)
            {
                JsonSerializer.Serialize(writer, value, options);
                return;
            }
            throw new Exception("Cannot marshal type string");
        }

        public static readonly MinMaxLengthCheckConverter131 Singleton = new MinMaxLengthCheckConverter131();
    }

    internal class MinMaxLengthCheckConverter132 : JsonConverter<string>
    {
        public override bool CanConvert(Type t) => t == typeof(string);

        public override string Read(ref Utf8JsonReader reader, Type typeToConvert, JsonSerializerOptions options)
        {
            var value = reader.GetString();
            if (value.Length >= 10 && value.Length <= 24)
            {
                return value;
            }
            throw new Exception("Cannot unmarshal type string");
        }

        public override void Write(Utf8JsonWriter writer, string value, JsonSerializerOptions options)
        {
            if (value.Length >= 10 && value.Length <= 24)
            {
                JsonSerializer.Serialize(writer, value, options);
                return;
            }
            throw new Exception("Cannot marshal type string");
        }

        public static readonly MinMaxLengthCheckConverter132 Singleton = new MinMaxLengthCheckConverter132();
    }

    internal class MinMaxLengthCheckConverter133 : JsonConverter<string>
    {
        public override bool CanConvert(Type t) => t == typeof(string);

        public override string Read(ref Utf8JsonReader reader, Type typeToConvert, JsonSerializerOptions options)
        {
            var value = reader.GetString();
            if (value.Length >= 12 && value.Length <= 25)
            {
                return value;
            }
            throw new Exception("Cannot unmarshal type string");
        }

        public override void Write(Utf8JsonWriter writer, string value, JsonSerializerOptions options)
        {
            if (value.Length >= 12 && value.Length <= 25)
            {
                JsonSerializer.Serialize(writer, value, options);
                return;
            }
            throw new Exception("Cannot marshal type string");
        }

        public static readonly MinMaxLengthCheckConverter133 Singleton = new MinMaxLengthCheckConverter133();
    }

    internal class MinMaxLengthCheckConverter134 : JsonConverter<string>
    {
        public override bool CanConvert(Type t) => t == typeof(string);

        public override string Read(ref Utf8JsonReader reader, Type typeToConvert, JsonSerializerOptions options)
        {
            var value = reader.GetString();
            if (value.Length >= 9 && value.Length <= 23)
            {
                return value;
            }
            throw new Exception("Cannot unmarshal type string");
        }

        public override void Write(Utf8JsonWriter writer, string value, JsonSerializerOptions options)
        {
            if (value.Length >= 9 && value.Length <= 23)
            {
                JsonSerializer.Serialize(writer, value, options);
                return;
            }
            throw new Exception("Cannot marshal type string");
        }

        public static readonly MinMaxLengthCheckConverter134 Singleton = new MinMaxLengthCheckConverter134();
    }

    internal class MinMaxLengthCheckConverter135 : JsonConverter<string>
    {
        public override bool CanConvert(Type t) => t == typeof(string);

        public override string Read(ref Utf8JsonReader reader, Type typeToConvert, JsonSerializerOptions options)
        {
            var value = reader.GetString();
            if (value.Length >= 4 && value.Length <= 9)
            {
                return value;
            }
            throw new Exception("Cannot unmarshal type string");
        }

        public override void Write(Utf8JsonWriter writer, string value, JsonSerializerOptions options)
        {
            if (value.Length >= 4 && value.Length <= 9)
            {
                JsonSerializer.Serialize(writer, value, options);
                return;
            }
            throw new Exception("Cannot marshal type string");
        }

        public static readonly MinMaxLengthCheckConverter135 Singleton = new MinMaxLengthCheckConverter135();
    }

    internal class MinMaxLengthCheckConverter136 : JsonConverter<string>
    {
        public override bool CanConvert(Type t) => t == typeof(string);

        public override string Read(ref Utf8JsonReader reader, Type typeToConvert, JsonSerializerOptions options)
        {
            var value = reader.GetString();
            if (value.Length >= 6 && value.Length <= 8)
            {
                return value;
            }
            throw new Exception("Cannot unmarshal type string");
        }

        public override void Write(Utf8JsonWriter writer, string value, JsonSerializerOptions options)
        {
            if (value.Length >= 6 && value.Length <= 8)
            {
                JsonSerializer.Serialize(writer, value, options);
                return;
            }
            throw new Exception("Cannot marshal type string");
        }

        public static readonly MinMaxLengthCheckConverter136 Singleton = new MinMaxLengthCheckConverter136();
    }

    internal class MinMaxLengthCheckConverter137 : JsonConverter<string>
    {
        public override bool CanConvert(Type t) => t == typeof(string);

        public override string Read(ref Utf8JsonReader reader, Type typeToConvert, JsonSerializerOptions options)
        {
            var value = reader.GetString();
            if (value.Length >= 14 && value.Length <= 23)
            {
                return value;
            }
            throw new Exception("Cannot unmarshal type string");
        }

        public override void Write(Utf8JsonWriter writer, string value, JsonSerializerOptions options)
        {
            if (value.Length >= 14 && value.Length <= 23)
            {
                JsonSerializer.Serialize(writer, value, options);
                return;
            }
            throw new Exception("Cannot marshal type string");
        }

        public static readonly MinMaxLengthCheckConverter137 Singleton = new MinMaxLengthCheckConverter137();
    }

    internal class MinMaxLengthCheckConverter138 : JsonConverter<string>
    {
        public override bool CanConvert(Type t) => t == typeof(string);

        public override string Read(ref Utf8JsonReader reader, Type typeToConvert, JsonSerializerOptions options)
        {
            var value = reader.GetString();
            if (value.Length >= 3 && value.Length <= 9)
            {
                return value;
            }
            throw new Exception("Cannot unmarshal type string");
        }

        public override void Write(Utf8JsonWriter writer, string value, JsonSerializerOptions options)
        {
            if (value.Length >= 3 && value.Length <= 9)
            {
                JsonSerializer.Serialize(writer, value, options);
                return;
            }
            throw new Exception("Cannot marshal type string");
        }

        public static readonly MinMaxLengthCheckConverter138 Singleton = new MinMaxLengthCheckConverter138();
    }

    internal class MinMaxLengthCheckConverter139 : JsonConverter<string>
    {
        public override bool CanConvert(Type t) => t == typeof(string);

        public override string Read(ref Utf8JsonReader reader, Type typeToConvert, JsonSerializerOptions options)
        {
            var value = reader.GetString();
            if (value.Length >= 18 && value.Length <= 36)
            {
                return value;
            }
            throw new Exception("Cannot unmarshal type string");
        }

        public override void Write(Utf8JsonWriter writer, string value, JsonSerializerOptions options)
        {
            if (value.Length >= 18 && value.Length <= 36)
            {
                JsonSerializer.Serialize(writer, value, options);
                return;
            }
            throw new Exception("Cannot marshal type string");
        }

        public static readonly MinMaxLengthCheckConverter139 Singleton = new MinMaxLengthCheckConverter139();
    }

    internal class MinMaxLengthCheckConverter140 : JsonConverter<string>
    {
        public override bool CanConvert(Type t) => t == typeof(string);

        public override string Read(ref Utf8JsonReader reader, Type typeToConvert, JsonSerializerOptions options)
        {
            var value = reader.GetString();
            if (value.Length >= 14 && value.Length <= 29)
            {
                return value;
            }
            throw new Exception("Cannot unmarshal type string");
        }

        public override void Write(Utf8JsonWriter writer, string value, JsonSerializerOptions options)
        {
            if (value.Length >= 14 && value.Length <= 29)
            {
                JsonSerializer.Serialize(writer, value, options);
                return;
            }
            throw new Exception("Cannot marshal type string");
        }

        public static readonly MinMaxLengthCheckConverter140 Singleton = new MinMaxLengthCheckConverter140();
    }

    internal class MinMaxLengthCheckConverter141 : JsonConverter<string>
    {
        public override bool CanConvert(Type t) => t == typeof(string);

        public override string Read(ref Utf8JsonReader reader, Type typeToConvert, JsonSerializerOptions options)
        {
            var value = reader.GetString();
            if (value.Length >= 17 && value.Length <= 40)
            {
                return value;
            }
            throw new Exception("Cannot unmarshal type string");
        }

        public override void Write(Utf8JsonWriter writer, string value, JsonSerializerOptions options)
        {
            if (value.Length >= 17 && value.Length <= 40)
            {
                JsonSerializer.Serialize(writer, value, options);
                return;
            }
            throw new Exception("Cannot marshal type string");
        }

        public static readonly MinMaxLengthCheckConverter141 Singleton = new MinMaxLengthCheckConverter141();
    }

    internal class MinMaxLengthCheckConverter142 : JsonConverter<string>
    {
        public override bool CanConvert(Type t) => t == typeof(string);

        public override string Read(ref Utf8JsonReader reader, Type typeToConvert, JsonSerializerOptions options)
        {
            var value = reader.GetString();
            if (value.Length >= 18 && value.Length <= 34)
            {
                return value;
            }
            throw new Exception("Cannot unmarshal type string");
        }

        public override void Write(Utf8JsonWriter writer, string value, JsonSerializerOptions options)
        {
            if (value.Length >= 18 && value.Length <= 34)
            {
                JsonSerializer.Serialize(writer, value, options);
                return;
            }
            throw new Exception("Cannot marshal type string");
        }

        public static readonly MinMaxLengthCheckConverter142 Singleton = new MinMaxLengthCheckConverter142();
    }

    internal class MinMaxLengthCheckConverter143 : JsonConverter<string>
    {
        public override bool CanConvert(Type t) => t == typeof(string);

        public override string Read(ref Utf8JsonReader reader, Type typeToConvert, JsonSerializerOptions options)
        {
            var value = reader.GetString();
            if (value.Length >= 3 && value.Length <= 14)
            {
                return value;
            }
            throw new Exception("Cannot unmarshal type string");
        }

        public override void Write(Utf8JsonWriter writer, string value, JsonSerializerOptions options)
        {
            if (value.Length >= 3 && value.Length <= 14)
            {
                JsonSerializer.Serialize(writer, value, options);
                return;
            }
            throw new Exception("Cannot marshal type string");
        }

        public static readonly MinMaxLengthCheckConverter143 Singleton = new MinMaxLengthCheckConverter143();
    }

    internal class MinMaxLengthCheckConverter144 : JsonConverter<string>
    {
        public override bool CanConvert(Type t) => t == typeof(string);

        public override string Read(ref Utf8JsonReader reader, Type typeToConvert, JsonSerializerOptions options)
        {
            var value = reader.GetString();
            if (value.Length >= 5 && value.Length <= 12)
            {
                return value;
            }
            throw new Exception("Cannot unmarshal type string");
        }

        public override void Write(Utf8JsonWriter writer, string value, JsonSerializerOptions options)
        {
            if (value.Length >= 5 && value.Length <= 12)
            {
                JsonSerializer.Serialize(writer, value, options);
                return;
            }
            throw new Exception("Cannot marshal type string");
        }

        public static readonly MinMaxLengthCheckConverter144 Singleton = new MinMaxLengthCheckConverter144();
    }

    internal class MinMaxLengthCheckConverter145 : JsonConverter<string>
    {
        public override bool CanConvert(Type t) => t == typeof(string);

        public override string Read(ref Utf8JsonReader reader, Type typeToConvert, JsonSerializerOptions options)
        {
            var value = reader.GetString();
            if (value.Length >= 18 && value.Length <= 39)
            {
                return value;
            }
            throw new Exception("Cannot unmarshal type string");
        }

        public override void Write(Utf8JsonWriter writer, string value, JsonSerializerOptions options)
        {
            if (value.Length >= 18 && value.Length <= 39)
            {
                JsonSerializer.Serialize(writer, value, options);
                return;
            }
            throw new Exception("Cannot marshal type string");
        }

        public static readonly MinMaxLengthCheckConverter145 Singleton = new MinMaxLengthCheckConverter145();
    }

    internal class MinMaxLengthCheckConverter146 : JsonConverter<string>
    {
        public override bool CanConvert(Type t) => t == typeof(string);

        public override string Read(ref Utf8JsonReader reader, Type typeToConvert, JsonSerializerOptions options)
        {
            var value = reader.GetString();
            if (value.Length >= 3 && value.Length <= 11)
            {
                return value;
            }
            throw new Exception("Cannot unmarshal type string");
        }

        public override void Write(Utf8JsonWriter writer, string value, JsonSerializerOptions options)
        {
            if (value.Length >= 3 && value.Length <= 11)
            {
                JsonSerializer.Serialize(writer, value, options);
                return;
            }
            throw new Exception("Cannot marshal type string");
        }

        public static readonly MinMaxLengthCheckConverter146 Singleton = new MinMaxLengthCheckConverter146();
    }

    internal class MinMaxLengthCheckConverter147 : JsonConverter<string>
    {
        public override bool CanConvert(Type t) => t == typeof(string);

        public override string Read(ref Utf8JsonReader reader, Type typeToConvert, JsonSerializerOptions options)
        {
            var value = reader.GetString();
            if (value.Length >= 21 && value.Length <= 43)
            {
                return value;
            }
            throw new Exception("Cannot unmarshal type string");
        }

        public override void Write(Utf8JsonWriter writer, string value, JsonSerializerOptions options)
        {
            if (value.Length >= 21 && value.Length <= 43)
            {
                JsonSerializer.Serialize(writer, value, options);
                return;
            }
            throw new Exception("Cannot marshal type string");
        }

        public static readonly MinMaxLengthCheckConverter147 Singleton = new MinMaxLengthCheckConverter147();
    }

    internal class MinMaxLengthCheckConverter148 : JsonConverter<string>
    {
        public override bool CanConvert(Type t) => t == typeof(string);

        public override string Read(ref Utf8JsonReader reader, Type typeToConvert, JsonSerializerOptions options)
        {
            var value = reader.GetString();
            if (value.Length >= 20 && value.Length <= 37)
            {
                return value;
            }
            throw new Exception("Cannot unmarshal type string");
        }

        public override void Write(Utf8JsonWriter writer, string value, JsonSerializerOptions options)
        {
            if (value.Length >= 20 && value.Length <= 37)
            {
                JsonSerializer.Serialize(writer, value, options);
                return;
            }
            throw new Exception("Cannot marshal type string");
        }

        public static readonly MinMaxLengthCheckConverter148 Singleton = new MinMaxLengthCheckConverter148();
    }

    internal class MinMaxLengthCheckConverter149 : JsonConverter<string>
    {
        public override bool CanConvert(Type t) => t == typeof(string);

        public override string Read(ref Utf8JsonReader reader, Type typeToConvert, JsonSerializerOptions options)
        {
            var value = reader.GetString();
            if (value.Length >= 20 && value.Length <= 40)
            {
                return value;
            }
            throw new Exception("Cannot unmarshal type string");
        }

        public override void Write(Utf8JsonWriter writer, string value, JsonSerializerOptions options)
        {
            if (value.Length >= 20 && value.Length <= 40)
            {
                JsonSerializer.Serialize(writer, value, options);
                return;
            }
            throw new Exception("Cannot marshal type string");
        }

        public static readonly MinMaxLengthCheckConverter149 Singleton = new MinMaxLengthCheckConverter149();
    }

    internal class MinMaxLengthCheckConverter150 : JsonConverter<string>
    {
        public override bool CanConvert(Type t) => t == typeof(string);

        public override string Read(ref Utf8JsonReader reader, Type typeToConvert, JsonSerializerOptions options)
        {
            var value = reader.GetString();
            if (value.Length >= 23 && value.Length <= 39)
            {
                return value;
            }
            throw new Exception("Cannot unmarshal type string");
        }

        public override void Write(Utf8JsonWriter writer, string value, JsonSerializerOptions options)
        {
            if (value.Length >= 23 && value.Length <= 39)
            {
                JsonSerializer.Serialize(writer, value, options);
                return;
            }
            throw new Exception("Cannot marshal type string");
        }

        public static readonly MinMaxLengthCheckConverter150 Singleton = new MinMaxLengthCheckConverter150();
    }

    internal class MinMaxLengthCheckConverter151 : JsonConverter<string>
    {
        public override bool CanConvert(Type t) => t == typeof(string);

        public override string Read(ref Utf8JsonReader reader, Type typeToConvert, JsonSerializerOptions options)
        {
            var value = reader.GetString();
            if (value.Length >= 9 && value.Length <= 12)
            {
                return value;
            }
            throw new Exception("Cannot unmarshal type string");
        }

        public override void Write(Utf8JsonWriter writer, string value, JsonSerializerOptions options)
        {
            if (value.Length >= 9 && value.Length <= 12)
            {
                JsonSerializer.Serialize(writer, value, options);
                return;
            }
            throw new Exception("Cannot marshal type string");
        }

        public static readonly MinMaxLengthCheckConverter151 Singleton = new MinMaxLengthCheckConverter151();
    }

    internal class MinMaxLengthCheckConverter152 : JsonConverter<string>
    {
        public override bool CanConvert(Type t) => t == typeof(string);

        public override string Read(ref Utf8JsonReader reader, Type typeToConvert, JsonSerializerOptions options)
        {
            var value = reader.GetString();
            if (value.Length >= 8 && value.Length <= 12)
            {
                return value;
            }
            throw new Exception("Cannot unmarshal type string");
        }

        public override void Write(Utf8JsonWriter writer, string value, JsonSerializerOptions options)
        {
            if (value.Length >= 8 && value.Length <= 12)
            {
                JsonSerializer.Serialize(writer, value, options);
                return;
            }
            throw new Exception("Cannot marshal type string");
        }

        public static readonly MinMaxLengthCheckConverter152 Singleton = new MinMaxLengthCheckConverter152();
    }

    internal class MinMaxLengthCheckConverter153 : JsonConverter<string>
    {
        public override bool CanConvert(Type t) => t == typeof(string);

        public override string Read(ref Utf8JsonReader reader, Type typeToConvert, JsonSerializerOptions options)
        {
            var value = reader.GetString();
            if (value.Length >= 17 && value.Length <= 37)
            {
                return value;
            }
            throw new Exception("Cannot unmarshal type string");
        }

        public override void Write(Utf8JsonWriter writer, string value, JsonSerializerOptions options)
        {
            if (value.Length >= 17 && value.Length <= 37)
            {
                JsonSerializer.Serialize(writer, value, options);
                return;
            }
            throw new Exception("Cannot marshal type string");
        }

        public static readonly MinMaxLengthCheckConverter153 Singleton = new MinMaxLengthCheckConverter153();
    }

    internal class MinMaxLengthCheckConverter154 : JsonConverter<string>
    {
        public override bool CanConvert(Type t) => t == typeof(string);

        public override string Read(ref Utf8JsonReader reader, Type typeToConvert, JsonSerializerOptions options)
        {
            var value = reader.GetString();
            if (value.Length >= 6 && value.Length <= 12)
            {
                return value;
            }
            throw new Exception("Cannot unmarshal type string");
        }

        public override void Write(Utf8JsonWriter writer, string value, JsonSerializerOptions options)
        {
            if (value.Length >= 6 && value.Length <= 12)
            {
                JsonSerializer.Serialize(writer, value, options);
                return;
            }
            throw new Exception("Cannot marshal type string");
        }

        public static readonly MinMaxLengthCheckConverter154 Singleton = new MinMaxLengthCheckConverter154();
    }

    internal class MinMaxLengthCheckConverter155 : JsonConverter<string>
    {
        public override bool CanConvert(Type t) => t == typeof(string);

        public override string Read(ref Utf8JsonReader reader, Type typeToConvert, JsonSerializerOptions options)
        {
            var value = reader.GetString();
            if (value.Length >= 7 && value.Length <= 35)
            {
                return value;
            }
            throw new Exception("Cannot unmarshal type string");
        }

        public override void Write(Utf8JsonWriter writer, string value, JsonSerializerOptions options)
        {
            if (value.Length >= 7 && value.Length <= 35)
            {
                JsonSerializer.Serialize(writer, value, options);
                return;
            }
            throw new Exception("Cannot marshal type string");
        }

        public static readonly MinMaxLengthCheckConverter155 Singleton = new MinMaxLengthCheckConverter155();
    }

    internal class MinMaxLengthCheckConverter156 : JsonConverter<string>
    {
        public override bool CanConvert(Type t) => t == typeof(string);

        public override string Read(ref Utf8JsonReader reader, Type typeToConvert, JsonSerializerOptions options)
        {
            var value = reader.GetString();
            if (value.Length >= 8 && value.Length <= 41)
            {
                return value;
            }
            throw new Exception("Cannot unmarshal type string");
        }

        public override void Write(Utf8JsonWriter writer, string value, JsonSerializerOptions options)
        {
            if (value.Length >= 8 && value.Length <= 41)
            {
                JsonSerializer.Serialize(writer, value, options);
                return;
            }
            throw new Exception("Cannot marshal type string");
        }

        public static readonly MinMaxLengthCheckConverter156 Singleton = new MinMaxLengthCheckConverter156();
    }

    internal class MinMaxLengthCheckConverter157 : JsonConverter<string>
    {
        public override bool CanConvert(Type t) => t == typeof(string);

        public override string Read(ref Utf8JsonReader reader, Type typeToConvert, JsonSerializerOptions options)
        {
            var value = reader.GetString();
            if (value.Length >= 6 && value.Length <= 44)
            {
                return value;
            }
            throw new Exception("Cannot unmarshal type string");
        }

        public override void Write(Utf8JsonWriter writer, string value, JsonSerializerOptions options)
        {
            if (value.Length >= 6 && value.Length <= 44)
            {
                JsonSerializer.Serialize(writer, value, options);
                return;
            }
            throw new Exception("Cannot marshal type string");
        }

        public static readonly MinMaxLengthCheckConverter157 Singleton = new MinMaxLengthCheckConverter157();
    }

    internal class MinMaxLengthCheckConverter158 : JsonConverter<string>
    {
        public override bool CanConvert(Type t) => t == typeof(string);

        public override string Read(ref Utf8JsonReader reader, Type typeToConvert, JsonSerializerOptions options)
        {
            var value = reader.GetString();
            if (value.Length >= 2 && value.Length <= 15)
            {
                return value;
            }
            throw new Exception("Cannot unmarshal type string");
        }

        public override void Write(Utf8JsonWriter writer, string value, JsonSerializerOptions options)
        {
            if (value.Length >= 2 && value.Length <= 15)
            {
                JsonSerializer.Serialize(writer, value, options);
                return;
            }
            throw new Exception("Cannot marshal type string");
        }

        public static readonly MinMaxLengthCheckConverter158 Singleton = new MinMaxLengthCheckConverter158();
    }

    internal class MinMaxLengthCheckConverter159 : JsonConverter<string>
    {
        public override bool CanConvert(Type t) => t == typeof(string);

        public override string Read(ref Utf8JsonReader reader, Type typeToConvert, JsonSerializerOptions options)
        {
            var value = reader.GetString();
            if (value.Length >= 2 && value.Length <= 13)
            {
                return value;
            }
            throw new Exception("Cannot unmarshal type string");
        }

        public override void Write(Utf8JsonWriter writer, string value, JsonSerializerOptions options)
        {
            if (value.Length >= 2 && value.Length <= 13)
            {
                JsonSerializer.Serialize(writer, value, options);
                return;
            }
            throw new Exception("Cannot marshal type string");
        }

        public static readonly MinMaxLengthCheckConverter159 Singleton = new MinMaxLengthCheckConverter159();
    }

    internal class MinMaxLengthCheckConverter160 : JsonConverter<string>
    {
        public override bool CanConvert(Type t) => t == typeof(string);

        public override string Read(ref Utf8JsonReader reader, Type typeToConvert, JsonSerializerOptions options)
        {
            var value = reader.GetString();
            if (value.Length >= 9 && value.Length <= 45)
            {
                return value;
            }
            throw new Exception("Cannot unmarshal type string");
        }

        public override void Write(Utf8JsonWriter writer, string value, JsonSerializerOptions options)
        {
            if (value.Length >= 9 && value.Length <= 45)
            {
                JsonSerializer.Serialize(writer, value, options);
                return;
            }
            throw new Exception("Cannot marshal type string");
        }

        public static readonly MinMaxLengthCheckConverter160 Singleton = new MinMaxLengthCheckConverter160();
    }

    internal class MinMaxLengthCheckConverter161 : JsonConverter<string>
    {
        public override bool CanConvert(Type t) => t == typeof(string);

        public override string Read(ref Utf8JsonReader reader, Type typeToConvert, JsonSerializerOptions options)
        {
            var value = reader.GetString();
            if (value.Length >= 2 && value.Length <= 10)
            {
                return value;
            }
            throw new Exception("Cannot unmarshal type string");
        }

        public override void Write(Utf8JsonWriter writer, string value, JsonSerializerOptions options)
        {
            if (value.Length >= 2 && value.Length <= 10)
            {
                JsonSerializer.Serialize(writer, value, options);
                return;
            }
            throw new Exception("Cannot marshal type string");
        }

        public static readonly MinMaxLengthCheckConverter161 Singleton = new MinMaxLengthCheckConverter161();
    }

    public class DateOnlyConverter : JsonConverter<DateOnly>
    {
        private readonly string serializationFormat;
        public DateOnlyConverter() : this(null) { }

        public DateOnlyConverter(string? serializationFormat)
        {
                this.serializationFormat = serializationFormat ?? "yyyy-MM-dd";
        }

        public override DateOnly Read(ref Utf8JsonReader reader, Type typeToConvert, JsonSerializerOptions options)
        {
                var value = reader.GetString();
                return DateOnly.Parse(value!);
        }

        public override void Write(Utf8JsonWriter writer, DateOnly value, JsonSerializerOptions options)
                => writer.WriteStringValue(value.ToString(serializationFormat));
    }

    public class TimeOnlyConverter : JsonConverter<TimeOnly>
    {
        private readonly string serializationFormat;

        public TimeOnlyConverter() : this(null) { }

        public TimeOnlyConverter(string? serializationFormat)
        {
                this.serializationFormat = serializationFormat ?? "HH:mm:ss.fff";
        }

        public override TimeOnly Read(ref Utf8JsonReader reader, Type typeToConvert, JsonSerializerOptions options)
        {
                var value = reader.GetString();
                return TimeOnly.Parse(value!);
        }

        public override void Write(Utf8JsonWriter writer, TimeOnly value, JsonSerializerOptions options)
                => writer.WriteStringValue(value.ToString(serializationFormat));
    }

    internal class IsoDateTimeOffsetConverter : JsonConverter<DateTimeOffset>
    {
        public override bool CanConvert(Type t) => t == typeof(DateTimeOffset);

        private const string DefaultDateTimeFormat = "yyyy'-'MM'-'dd'T'HH':'mm':'ss.FFFFFFFK";

        private DateTimeStyles _dateTimeStyles = DateTimeStyles.RoundtripKind;
        private string? _dateTimeFormat;
        private CultureInfo? _culture;

        public DateTimeStyles DateTimeStyles
        {
                get => _dateTimeStyles;
                set => _dateTimeStyles = value;
        }

        public string? DateTimeFormat
        {
                get => _dateTimeFormat ?? string.Empty;
                set => _dateTimeFormat = (string.IsNullOrEmpty(value)) ? null : value;
        }

        public CultureInfo Culture
        {
                get => _culture ?? CultureInfo.CurrentCulture;
                set => _culture = value;
        }

        public override void Write(Utf8JsonWriter writer, DateTimeOffset value, JsonSerializerOptions options)
        {
                string text;


                if ((_dateTimeStyles & DateTimeStyles.AdjustToUniversal) == DateTimeStyles.AdjustToUniversal
                        || (_dateTimeStyles & DateTimeStyles.AssumeUniversal) == DateTimeStyles.AssumeUniversal)
                {
                        value = value.ToUniversalTime();
                }

                text = value.ToString(_dateTimeFormat ?? DefaultDateTimeFormat, Culture);

                writer.WriteStringValue(text);
        }

        public override DateTimeOffset Read(ref Utf8JsonReader reader, Type typeToConvert, JsonSerializerOptions options)
        {
                string? dateText = reader.GetString();

                if (string.IsNullOrEmpty(dateText) == false)
                {
                        if (!string.IsNullOrEmpty(_dateTimeFormat))
                        {
                                return DateTimeOffset.ParseExact(dateText, _dateTimeFormat, Culture, _dateTimeStyles);
                        }
                        else
                        {
                                return DateTimeOffset.Parse(dateText, Culture, _dateTimeStyles);
                        }
                }
                else
                {
                        return default(DateTimeOffset);
                }
        }


        public static readonly IsoDateTimeOffsetConverter Singleton = new IsoDateTimeOffsetConverter();
    }
}
#pragma warning restore CS8618
#pragma warning restore CS8601
#pragma warning restore CS8602
#pragma warning restore CS8603
// Code generated from JSON Schema using quicktype. DO NOT EDIT.
// To parse and unparse this JSON data, add this code to your project and do:
//
//    freelanceJobSchema, err := UnmarshalFreelanceJobSchema(bytes)
//    bytes, err = freelanceJobSchema.Marshal()

package model

import "encoding/json"

func UnmarshalFreelanceJobSchema(data []byte) (FreelanceJobSchema, error) {
    var r FreelanceJobSchema
    err := json.Unmarshal(data, &r)
    return r, err
}

func (r *FreelanceJobSchema) Marshal() ([]byte, error) {
    return json.Marshal(r)
}

type FreelanceJobSchema struct {
    Key   int64   `json:"_key"`
    Value []Value `json:"_value"`
}

type Value struct {
    Key                            Key                            `json:"_key"`
    ContentTags                    []string                       `json:"contentTags"`
    ContributionMultiplier         *ContributionMultiplier        `json:"contributionMultiplier,omitempty"`
    Description                    ValueDescription               `json:"description"`
    IconID                         string                         `json:"iconID"`
    MaxContributionsPerParticipant MaxContributionsPerParticipant `json:"maxContributionsPerParticipant"`
    MaxProgressPerContribution     *MaxProgressPerContribution    `json:"maxProgressPerContribution,omitempty"`
    Parameters                     []Parameter                    `json:"parameters"`
    ProgressDescription            ProgressDescription            `json:"progressDescription"`
    RewardDescription              RewardDescription              `json:"rewardDescription"`
    TargetDescription              TargetDescription              `json:"targetDescription"`
    Title                          ValueTitle                     `json:"title"`
}

type ContributionMultiplier struct {
    DefaultValue     int64                                  `json:"defaultValue"`
    Description      ContributionMultiplierDescription      `json:"description"`
    IconID           ContributionMultiplierIconID           `json:"iconID"`
    MaxValue         int64                                  `json:"maxValue"`
    MinValue         float64                                `json:"minValue"`
    Title            ContributionMultiplierTitle            `json:"title"`
    UnsetDescription ContributionMultiplierUnsetDescription `json:"unsetDescription"`
}

type ContributionMultiplierDescription struct {
    De string `json:"de"`
    En string `json:"en"`
    Es string `json:"es"`
    Fr string `json:"fr"`
    Ja string `json:"ja"`
    Ko string `json:"ko"`
    Ru string `json:"ru"`
    Zh string `json:"zh"`
}

type ContributionMultiplierTitle struct {
    De string `json:"de"`
    En string `json:"en"`
    Es string `json:"es"`
    Fr string `json:"fr"`
    Ja string `json:"ja"`
    Ko string `json:"ko"`
    Ru string `json:"ru"`
    Zh string `json:"zh"`
}

type ContributionMultiplierUnsetDescription struct {
    De string `json:"de"`
    En string `json:"en"`
    Es string `json:"es"`
    Fr string `json:"fr"`
    Ja string `json:"ja"`
    Ko string `json:"ko"`
    Ru string `json:"ru"`
    Zh string `json:"zh"`
}

type ValueDescription struct {
    De string `json:"de"`
    En string `json:"en"`
    Es string `json:"es"`
    Fr string `json:"fr"`
    Ja string `json:"ja"`
    Ko string `json:"ko"`
    Ru string `json:"ru"`
    Zh string `json:"zh"`
}

type MaxContributionsPerParticipant struct {
    Description      MaxContributionsPerParticipantDescription      `json:"description"`
    IconID           MaxContributionsPerParticipantIconID           `json:"iconID"`
    Title            MaxContributionsPerParticipantTitle            `json:"title"`
    UnsetDescription MaxContributionsPerParticipantUnsetDescription `json:"unsetDescription"`
}

type MaxContributionsPerParticipantDescription struct {
    De string `json:"de"`
    En string `json:"en"`
    Es string `json:"es"`
    Fr string `json:"fr"`
    Ja string `json:"ja"`
    Ko string `json:"ko"`
    Ru string `json:"ru"`
    Zh string `json:"zh"`
}

type MaxContributionsPerParticipantTitle struct {
    De string `json:"de"`
    En string `json:"en"`
    Es string `json:"es"`
    Fr string `json:"fr"`
    Ja string `json:"ja"`
    Ko string `json:"ko"`
    Ru string `json:"ru"`
    Zh string `json:"zh"`
}

type MaxContributionsPerParticipantUnsetDescription struct {
    De string `json:"de"`
    En string `json:"en"`
    Es string `json:"es"`
    Fr string `json:"fr"`
    Ja string `json:"ja"`
    Ko string `json:"ko"`
    Ru string `json:"ru"`
    Zh string `json:"zh"`
}

type MaxProgressPerContribution struct {
    Description      MaxProgressPerContributionDescription      `json:"description"`
    IconID           ContributionMultiplierIconID               `json:"iconID"`
    Title            MaxProgressPerContributionTitle            `json:"title"`
    UnsetDescription MaxProgressPerContributionUnsetDescription `json:"unsetDescription"`
}

type MaxProgressPerContributionDescription struct {
    De string `json:"de"`
    En string `json:"en"`
    Es string `json:"es"`
    Fr string `json:"fr"`
    Ja string `json:"ja"`
    Ko string `json:"ko"`
    Ru string `json:"ru"`
    Zh string `json:"zh"`
}

type MaxProgressPerContributionTitle struct {
    De string `json:"de"`
    En string `json:"en"`
    Es string `json:"es"`
    Fr string `json:"fr"`
    Ja string `json:"ja"`
    Ko string `json:"ko"`
    Ru string `json:"ru"`
    Zh string `json:"zh"`
}

type MaxProgressPerContributionUnsetDescription struct {
    De string `json:"de"`
    En string `json:"en"`
    Es string `json:"es"`
    Fr string `json:"fr"`
    Ja string `json:"ja"`
    Ko string `json:"ko"`
    Ru string `json:"ru"`
    Zh string `json:"zh"`
}

type Parameter struct {
    Key          string        `json:"_key"`
    Boolean      *Boolean      `json:"boolean,omitempty"`
    ItemDelivery *ItemDelivery `json:"itemDelivery,omitempty"`
    Matcher      *Matcher      `json:"matcher,omitempty"`
}

type Boolean struct {
    ChoiceLabel ChoiceLabel        `json:"choiceLabel"`
    Default     bool               `json:"default"`
    Description BooleanDescription `json:"description"`
    IconID      BooleanIconID      `json:"iconID"`
    OptionFalse OptionFalse        `json:"optionFalse"`
    OptionTrue  OptionTrue         `json:"optionTrue"`
    Title       BooleanTitle       `json:"title"`
}

type ChoiceLabel struct {
    De string `json:"de"`
    En string `json:"en"`
    Es string `json:"es"`
    Fr string `json:"fr"`
    Ja string `json:"ja"`
    Ko string `json:"ko"`
    Ru string `json:"ru"`
    Zh string `json:"zh"`
}

type BooleanDescription struct {
    De string `json:"de"`
    En string `json:"en"`
    Es string `json:"es"`
    Fr string `json:"fr"`
    Ja string `json:"ja"`
    Ko string `json:"ko"`
    Ru string `json:"ru"`
    Zh string `json:"zh"`
}

type OptionFalse struct {
    Description OptionFalseDescription `json:"description"`
    Title       OptionFalseTitle       `json:"title"`
}

type OptionFalseDescription struct {
    De string `json:"de"`
    En string `json:"en"`
    Es string `json:"es"`
    Fr string `json:"fr"`
    Ja string `json:"ja"`
    Ko string `json:"ko"`
    Ru string `json:"ru"`
    Zh string `json:"zh"`
}

type OptionFalseTitle struct {
    De string `json:"de"`
    En string `json:"en"`
    Es string `json:"es"`
    Fr string `json:"fr"`
    Ja string `json:"ja"`
    Ko string `json:"ko"`
    Ru string `json:"ru"`
    Zh string `json:"zh"`
}

type OptionTrue struct {
    Description OptionTrueDescription `json:"description"`
    Title       OptionTrueTitle       `json:"title"`
}

type OptionTrueDescription struct {
    De string `json:"de"`
    En string `json:"en"`
    Es string `json:"es"`
    Fr string `json:"fr"`
    Ja string `json:"ja"`
    Ko string `json:"ko"`
    Ru string `json:"ru"`
    Zh string `json:"zh"`
}

type OptionTrueTitle struct {
    De string `json:"de"`
    En string `json:"en"`
    Es string `json:"es"`
    Fr string `json:"fr"`
    Ja string `json:"ja"`
    Ko string `json:"ko"`
    Ru string `json:"ru"`
    Zh string `json:"zh"`
}

type BooleanTitle struct {
    De string `json:"de"`
    En string `json:"en"`
    Es string `json:"es"`
    Fr string `json:"fr"`
    Ja string `json:"ja"`
    Ko string `json:"ko"`
    Ru string `json:"ru"`
    Zh string `json:"zh"`
}

type ItemDelivery struct {
    DeliveryLocation DeliveryLocation        `json:"deliveryLocation"`
    Description      ItemDeliveryDescription `json:"description"`
    IconID           ItemDeliveryIconID      `json:"iconID"`
    InventoryType    InventoryType           `json:"inventoryType"`
    Title            ItemDeliveryTitle       `json:"title"`
}

type DeliveryLocation struct {
    AcceptedValueTypes []AcceptedValueType              `json:"acceptedValueTypes"`
    Description        DeliveryLocationDescription      `json:"description"`
    IconID             DeliveryLocationIconID           `json:"iconID"`
    MaxEntries         int64                            `json:"maxEntries"`
    Title              DeliveryLocationTitle            `json:"title"`
    UnsetDescription   DeliveryLocationUnsetDescription `json:"unsetDescription"`
}

type DeliveryLocationDescription struct {
    De string `json:"de"`
    En string `json:"en"`
    Es string `json:"es"`
    Fr string `json:"fr"`
    Ja string `json:"ja"`
    Ko string `json:"ko"`
    Ru string `json:"ru"`
    Zh string `json:"zh"`
}

type DeliveryLocationTitle struct {
    De string `json:"de"`
    En string `json:"en"`
    Es string `json:"es"`
    Fr string `json:"fr"`
    Ja string `json:"ja"`
    Ko string `json:"ko"`
    Ru string `json:"ru"`
    Zh string `json:"zh"`
}

type DeliveryLocationUnsetDescription struct {
    De string `json:"de"`
    En string `json:"en"`
    Es string `json:"es"`
    Fr string `json:"fr"`
    Ja string `json:"ja"`
    Ko string `json:"ko"`
    Ru string `json:"ru"`
    Zh string `json:"zh"`
}

type ItemDeliveryDescription struct {
    De string `json:"de"`
    En string `json:"en"`
    Es string `json:"es"`
    Fr string `json:"fr"`
    Ja string `json:"ja"`
    Ko string `json:"ko"`
    Ru string `json:"ru"`
    Zh string `json:"zh"`
}

type InventoryType struct {
    AcceptedValueTypes []string                      `json:"acceptedValueTypes"`
    Description        InventoryTypeDescription      `json:"description"`
    IconID             ItemDeliveryIconID            `json:"iconID"`
    Title              InventoryTypeTitle            `json:"title"`
    UnsetDescription   InventoryTypeUnsetDescription `json:"unsetDescription"`
}

type InventoryTypeDescription struct {
    De string `json:"de"`
    En string `json:"en"`
    Es string `json:"es"`
    Fr string `json:"fr"`
    Ja string `json:"ja"`
    Ko string `json:"ko"`
    Ru string `json:"ru"`
    Zh string `json:"zh"`
}

type InventoryTypeTitle struct {
    De string `json:"de"`
    En string `json:"en"`
    Es string `json:"es"`
    Fr string `json:"fr"`
    Ja string `json:"ja"`
    Ko string `json:"ko"`
    Ru string `json:"ru"`
    Zh string `json:"zh"`
}

type InventoryTypeUnsetDescription struct {
    De string `json:"de"`
    En string `json:"en"`
    Es string `json:"es"`
    Fr string `json:"fr"`
    Ja string `json:"ja"`
    Ko string `json:"ko"`
    Ru string `json:"ru"`
    Zh string `json:"zh"`
}

type ItemDeliveryTitle struct {
    De string `json:"de"`
    En string `json:"en"`
    Es string `json:"es"`
    Fr string `json:"fr"`
    Ja string `json:"ja"`
    Ko string `json:"ko"`
    Ru string `json:"ru"`
    Zh string `json:"zh"`
}

type Matcher struct {
    AcceptedValueTypes []string                `json:"acceptedValueTypes"`
    Description        MatcherDescription      `json:"description"`
    IconID             string                  `json:"iconID"`
    MaxEntries         int64                   `json:"maxEntries"`
    Optional           bool                    `json:"optional"`
    Title              MatcherTitle            `json:"title"`
    Type               string                  `json:"type"`
    UnsetDescription   MatcherUnsetDescription `json:"unsetDescription"`
}

type MatcherDescription struct {
    De string `json:"de"`
    En string `json:"en"`
    Es string `json:"es"`
    Fr string `json:"fr"`
    Ja string `json:"ja"`
    Ko string `json:"ko"`
    Ru string `json:"ru"`
    Zh string `json:"zh"`
}

type MatcherTitle struct {
    De string `json:"de"`
    En string `json:"en"`
    Es string `json:"es"`
    Fr string `json:"fr"`
    Ja string `json:"ja"`
    Ko string `json:"ko"`
    Ru string `json:"ru"`
    Zh string `json:"zh"`
}

type MatcherUnsetDescription struct {
    De string `json:"de"`
    En string `json:"en"`
    Es string `json:"es"`
    Fr string `json:"fr"`
    Ja string `json:"ja"`
    Ko string `json:"ko"`
    Ru string `json:"ru"`
    Zh string `json:"zh"`
}

type ProgressDescription struct {
    De string `json:"de"`
    En string `json:"en"`
    Es string `json:"es"`
    Fr string `json:"fr"`
    Ja string `json:"ja"`
    Ko string `json:"ko"`
    Ru string `json:"ru"`
    Zh string `json:"zh"`
}

type RewardDescription struct {
    De string `json:"de"`
    En string `json:"en"`
    Es string `json:"es"`
    Fr string `json:"fr"`
    Ja string `json:"ja"`
    Ko string `json:"ko"`
    Ru string `json:"ru"`
    Zh string `json:"zh"`
}

type TargetDescription struct {
    De string `json:"de"`
    En string `json:"en"`
    Es string `json:"es"`
    Fr string `json:"fr"`
    Ja string `json:"ja"`
    Ko string `json:"ko"`
    Ru string `json:"ru"`
    Zh string `json:"zh"`
}

type ValueTitle struct {
    De string `json:"de"`
    En string `json:"en"`
    Es string `json:"es"`
    Fr string `json:"fr"`
    Ja string `json:"ja"`
    Ko string `json:"ko"`
    Ru string `json:"ru"`
    Zh string `json:"zh"`
}

type ContributionMultiplierIconID string

const (
    PurpleIsk ContributionMultiplierIconID = "isk"
)

type Key string

const (
    BoostShield      Key = "BoostShield"
    CaptureFWComplex Key = "CaptureFWComplex"
    DamageShip       Key = "DamageShip"
    DefendFWComplex  Key = "DefendFWComplex"
    DeliverItem      Key = "DeliverItem"
    KillCapsuleer    Key = "KillCapsuleer"
    KillNPC          Key = "KillNPC"
    MineOre          Key = "MineOre"
    RepairArmor      Key = "RepairArmor"
    ShipInsurance    Key = "ShipInsurance"
)

type MaxContributionsPerParticipantIconID string

const (
    FluffyIsk MaxContributionsPerParticipantIconID = "isk"
    Personal  MaxContributionsPerParticipantIconID = "personal"
)

type BooleanIconID string

const (
    Person BooleanIconID = "person"
)

type AcceptedValueType string

const (
    Station   AcceptedValueType = "station"
    Structure AcceptedValueType = "structure"
)

type DeliveryLocationIconID string

const (
    Location DeliveryLocationIconID = "location"
)

type ItemDeliveryIconID string

const (
    Inventory ItemDeliveryIconID = "inventory"
)
{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"_key":{"type":"integer","minimum":1,"maximum":1},"_value":{"type":"array","items":{"type":"object","properties":{"_key":{"type":"string","enum":["BoostShield","CaptureFWComplex","DamageShip","DefendFWComplex","DeliverItem","KillCapsuleer","KillNPC","MineOre","RepairArmor","ShipInsurance"]},"contentTags":{"type":"array","items":{"type":"string","minLength":14,"maxLength":30},"minItems":2,"maxItems":4},"contributionMultiplier":{"type":"object","properties":{"defaultValue":{"type":"integer","minimum":1,"maximum":1},"description":{"type":"object","properties":{"de":{"type":"string","minLength":467,"maxLength":467},"en":{"type":"string","minLength":395,"maxLength":395},"es":{"type":"string","minLength":439,"maxLength":439},"fr":{"type":"string","minLength":441,"maxLength":441},"ja":{"type":"string","minLength":155,"maxLength":155},"ko":{"type":"string","minLength":217,"maxLength":217},"ru":{"type":"string","minLength":438,"maxLength":438},"zh":{"type":"string","minLength":122,"maxLength":122}},"required":["de","en","es","fr","ja","ko","ru","zh"]},"iconID":{"type":"string","enum":["isk"]},"maxValue":{"type":"integer","minimum":2,"maximum":2},"minValue":{"type":"number","minimum":0.1,"maximum":0.1},"title":{"type":"object","properties":{"de":{"type":"string","minLength":49,"maxLength":49},"en":{"type":"string","minLength":48,"maxLength":48},"es":{"type":"string","minLength":51,"maxLength":51},"fr":{"type":"string","minLength":55,"maxLength":55},"ja":{"type":"string","minLength":32,"maxLength":32},"ko":{"type":"string","minLength":34,"maxLength":34},"ru":{"type":"string","minLength":49,"maxLength":49},"zh":{"type":"string","minLength":32,"maxLength":32}},"required":["de","en","es","fr","ja","ko","ru","zh"]},"unsetDescription":{"type":"object","properties":{"de":{"type":"string","minLength":40,"maxLength":40},"en":{"type":"string","minLength":33,"maxLength":33},"es":{"type":"string","minLength":32,"maxLength":32},"fr":{"type":"string","minLength":34,"maxLength":34},"ja":{"type":"string","minLength":18,"maxLength":18},"ko":{"type":"string","minLength":15,"maxLength":15},"ru":{"type":"string","minLength":31,"maxLength":31},"zh":{"type":"string","minLength":9,"maxLength":9}},"required":["de","en","es","fr","ja","ko","ru","zh"]}},"required":["defaultValue","description","iconID","maxValue","minValue","title","unsetDescription"]},"description":{"type":"object","properties":{"de":{"type":"string","minLength":28,"maxLength":410},"en":{"type":"string","minLength":19,"maxLength":318},"es":{"type":"string","minLength":23,"maxLength":367},"fr":{"type":"string","minLength":29,"maxLength":386},"ja":{"type":"string","minLength":11,"maxLength":178},"ko":{"type":"string","minLength":11,"maxLength":168},"ru":{"type":"string","minLength":15,"maxLength":361},"zh":{"type":"string","minLength":6,"maxLength":108}},"required":["de","en","es","fr","ja","ko","ru","zh"]},"iconID":{"type":"string","minLength":5,"maxLength":17},"maxContributionsPerParticipant":{"type":"object","properties":{"description":{"type":"object","properties":{"de":{"type":"string","minLength":75,"maxLength":189},"en":{"type":"string","minLength":63,"maxLength":173},"es":{"type":"string","minLength":83,"maxLength":185},"fr":{"type":"string","minLength":60,"maxLength":157},"ja":{"type":"string","minLength":25,"maxLength":69},"ko":{"type":"string","minLength":29,"maxLength":87},"ru":{"type":"string","minLength":62,"maxLength":181},"zh":{"type":"string","minLength":18,"maxLength":49}},"required":["de","en","es","fr","ja","ko","ru","zh"]},"iconID":{"type":"string","enum":["personal","isk"]},"title":{"type":"object","properties":{"de":{"type":"string","minLength":22,"maxLength":28},"en":{"type":"string","minLength":21,"maxLength":30},"es":{"type":"string","minLength":24,"maxLength":36},"fr":{"type":"string","minLength":23,"maxLength":36},"ja":{"type":"string","minLength":9,"maxLength":14},"ko":{"type":"string","minLength":9,"maxLength":10},"ru":{"type":"string","minLength":25,"maxLength":29},"zh":{"type":"string","minLength":6,"maxLength":10}},"required":["de","en","es","fr","ja","ko","ru","zh"]},"unsetDescription":{"type":"object","properties":{"de":{"type":"string","minLength":25,"maxLength":32},"en":{"type":"string","minLength":28,"maxLength":38},"es":{"type":"string","minLength":28,"maxLength":46},"fr":{"type":"string","minLength":29,"maxLength":48},"ja":{"type":"string","minLength":16,"maxLength":17},"ko":{"type":"string","minLength":12,"maxLength":15},"ru":{"type":"string","minLength":35,"maxLength":37},"zh":{"type":"string","minLength":9,"maxLength":10}},"required":["de","en","es","fr","ja","ko","ru","zh"]}},"required":["description","iconID","title","unsetDescription"]},"maxProgressPerContribution":{"type":"object","properties":{"description":{"type":"object","properties":{"de":{"type":"string","minLength":177,"maxLength":177},"en":{"type":"string","minLength":159,"maxLength":159},"es":{"type":"string","minLength":173,"maxLength":173},"fr":{"type":"string","minLength":136,"maxLength":136},"ja":{"type":"string","minLength":58,"maxLength":58},"ko":{"type":"string","minLength":75,"maxLength":75},"ru":{"type":"string","minLength":167,"maxLength":167},"zh":{"type":"string","minLength":42,"maxLength":42}},"required":["de","en","es","fr","ja","ko","ru","zh"]},"iconID":{"type":"string","enum":["isk"]},"title":{"type":"object","properties":{"de":{"type":"string","minLength":25,"maxLength":25},"en":{"type":"string","minLength":23,"maxLength":23},"es":{"type":"string","minLength":31,"maxLength":31},"fr":{"type":"string","minLength":32,"maxLength":32},"ja":{"type":"string","minLength":13,"maxLength":13},"ko":{"type":"string","minLength":9,"maxLength":9},"ru":{"type":"string","minLength":26,"maxLength":26},"zh":{"type":"string","minLength":9,"maxLength":9}},"required":["de","en","es","fr","ja","ko","ru","zh"]},"unsetDescription":{"type":"object","properties":{"de":{"type":"string","minLength":25,"maxLength":25},"en":{"type":"string","minLength":28,"maxLength":28},"es":{"type":"string","minLength":28,"maxLength":28},"fr":{"type":"string","minLength":29,"maxLength":29},"ja":{"type":"string","minLength":17,"maxLength":17},"ko":{"type":"string","minLength":15,"maxLength":15},"ru":{"type":"string","minLength":35,"maxLength":35},"zh":{"type":"string","minLength":10,"maxLength":10}},"required":["de","en","es","fr","ja","ko","ru","zh"]}},"required":["description","iconID","title","unsetDescription"]},"parameters":{"type":"array","items":{"type":"object","properties":{"_key":{"type":"string","minLength":3,"maxLength":29},"boolean":{"type":"object","properties":{"choiceLabel":{"type":"object","properties":{"de":{"type":"string","minLength":37,"maxLength":38},"en":{"type":"string","minLength":30,"maxLength":30},"es":{"type":"string","minLength":40,"maxLength":42},"fr":{"type":"string","minLength":40,"maxLength":47},"ja":{"type":"string","minLength":17,"maxLength":21},"ko":{"type":"string","minLength":10,"maxLength":15},"ru":{"type":"string","minLength":45,"maxLength":48},"zh":{"type":"string","minLength":11,"maxLength":12}},"required":["de","en","es","fr","ja","ko","ru","zh"]},"default":{"type":"boolean"},"description":{"type":"object","properties":{"de":{"type":"string","minLength":91,"maxLength":409},"en":{"type":"string","minLength":74,"maxLength":333},"es":{"type":"string","minLength":73,"maxLength":381},"fr":{"type":"string","minLength":78,"maxLength":397},"ja":{"type":"string","minLength":28,"maxLength":182},"ko":{"type":"string","minLength":23,"maxLength":199},"ru":{"type":"string","minLength":70,"maxLength":393},"zh":{"type":"string","minLength":17,"maxLength":113}},"required":["de","en","es","fr","ja","ko","ru","zh"]},"iconID":{"type":"string","enum":["person"]},"optionFalse":{"type":"object","properties":{"description":{"type":"object","properties":{"de":{"type":"string","minLength":58,"maxLength":99},"en":{"type":"string","minLength":49,"maxLength":71},"es":{"type":"string","minLength":69,"maxLength":93},"fr":{"type":"string","minLength":86,"maxLength":90},"ja":{"type":"string","minLength":30,"maxLength":38},"ko":{"type":"string","minLength":29,"maxLength":40},"ru":{"type":"string","minLength":73,"maxLength":77},"zh":{"type":"string","minLength":20,"maxLength":35}},"required":["de","en","es","fr","ja","ko","ru","zh"]},"title":{"type":"object","properties":{"de":{"type":"string","minLength":58,"maxLength":99},"en":{"type":"string","minLength":49,"maxLength":71},"es":{"type":"string","minLength":69,"maxLength":93},"fr":{"type":"string","minLength":86,"maxLength":90},"ja":{"type":"string","minLength":30,"maxLength":38},"ko":{"type":"string","minLength":29,"maxLength":40},"ru":{"type":"string","minLength":73,"maxLength":77},"zh":{"type":"string","minLength":20,"maxLength":35}},"required":["de","en","es","fr","ja","ko","ru","zh"]}},"required":["description","title"]},"optionTrue":{"type":"object","properties":{"description":{"type":"object","properties":{"de":{"type":"string","minLength":52,"maxLength":86},"en":{"type":"string","minLength":45,"maxLength":64},"es":{"type":"string","minLength":66,"maxLength":72},"fr":{"type":"string","minLength":71,"maxLength":82},"ja":{"type":"string","minLength":29,"maxLength":34},"ko":{"type":"string","minLength":31,"maxLength":32},"ru":{"type":"string","minLength":69,"maxLength":70},"zh":{"type":"string","minLength":19,"maxLength":25}},"required":["de","en","es","fr","ja","ko","ru","zh"]},"title":{"type":"object","properties":{"de":{"type":"string","minLength":52,"maxLength":86},"en":{"type":"string","minLength":45,"maxLength":64},"es":{"type":"string","minLength":66,"maxLength":72},"fr":{"type":"string","minLength":71,"maxLength":82},"ja":{"type":"string","minLength":29,"maxLength":34},"ko":{"type":"string","minLength":31,"maxLength":32},"ru":{"type":"string","minLength":69,"maxLength":70},"zh":{"type":"string","minLength":19,"maxLength":25}},"required":["de","en","es","fr","ja","ko","ru","zh"]}},"required":["description","title"]},"title":{"type":"object","properties":{"de":{"type":"string","minLength":37,"maxLength":38},"en":{"type":"string","minLength":30,"maxLength":30},"es":{"type":"string","minLength":40,"maxLength":42},"fr":{"type":"string","minLength":40,"maxLength":47},"ja":{"type":"string","minLength":17,"maxLength":21},"ko":{"type":"string","minLength":10,"maxLength":15},"ru":{"type":"string","minLength":45,"maxLength":48},"zh":{"type":"string","minLength":11,"maxLength":12}},"required":["de","en","es","fr","ja","ko","ru","zh"]}},"required":["choiceLabel","default","description","iconID","optionFalse","optionTrue","title"]},"itemDelivery":{"type":"object","properties":{"deliveryLocation":{"type":"object","properties":{"acceptedValueTypes":{"type":"array","items":{"type":"string","enum":["station","structure"]},"minItems":2,"maxItems":2},"description":{"type":"object","properties":{"de":{"type":"string","minLength":105,"maxLength":105},"en":{"type":"string","minLength":92,"maxLength":92},"es":{"type":"string","minLength":110,"maxLength":110},"fr":{"type":"string","minLength":109,"maxLength":109},"ja":{"type":"string","minLength":39,"maxLength":39},"ko":{"type":"string","minLength":50,"maxLength":50},"ru":{"type":"string","minLength":92,"maxLength":92},"zh":{"type":"string","minLength":28,"maxLength":28}},"required":["de","en","es","fr","ja","ko","ru","zh"]},"iconID":{"type":"string","enum":["location"]},"maxEntries":{"type":"integer","minimum":10,"maximum":10},"title":{"type":"object","properties":{"de":{"type":"string","minLength":4,"maxLength":4},"en":{"type":"string","minLength":11,"maxLength":11},"es":{"type":"string","minLength":7,"maxLength":7},"fr":{"type":"string","minLength":11,"maxLength":11},"ja":{"type":"string","minLength":3,"maxLength":3},"ko":{"type":"string","minLength":3,"maxLength":3},"ru":{"type":"string","minLength":16,"maxLength":16},"zh":{"type":"string","minLength":3,"maxLength":3}},"required":["de","en","es","fr","ja","ko","ru","zh"]},"unsetDescription":{"type":"object","properties":{"de":{"type":"string","minLength":14,"maxLength":14},"en":{"type":"string","minLength":12,"maxLength":12},"es":{"type":"string","minLength":17,"maxLength":17},"fr":{"type":"string","minLength":13,"maxLength":13},"ja":{"type":"string","minLength":5,"maxLength":5},"ko":{"type":"string","minLength":5,"maxLength":5},"ru":{"type":"string","minLength":16,"maxLength":16},"zh":{"type":"string","minLength":4,"maxLength":4}},"required":["de","en","es","fr","ja","ko","ru","zh"]}},"required":["acceptedValueTypes","description","iconID","maxEntries","title","unsetDescription"]},"description":{"type":"object","properties":{"de":{"type":"string","minLength":77,"maxLength":77},"en":{"type":"string","minLength":46,"maxLength":46},"es":{"type":"string","minLength":52,"maxLength":52},"fr":{"type":"string","minLength":34,"maxLength":34},"ja":{"type":"string","minLength":23,"maxLength":23},"ko":{"type":"string","minLength":24,"maxLength":24},"ru":{"type":"string","minLength":36,"maxLength":36},"zh":{"type":"string","minLength":13,"maxLength":13}},"required":["de","en","es","fr","ja","ko","ru","zh"]},"iconID":{"type":"string","enum":["inventory"]},"inventoryType":{"type":"object","properties":{"acceptedValueTypes":{"type":"array","items":{"type":"string","minLength":9,"maxLength":10},"minItems":2,"maxItems":2},"description":{"type":"object","properties":{"de":{"type":"string","minLength":77,"maxLength":77},"en":{"type":"string","minLength":46,"maxLength":46},"es":{"type":"string","minLength":52,"maxLength":52},"fr":{"type":"string","minLength":34,"maxLength":34},"ja":{"type":"string","minLength":23,"maxLength":23},"ko":{"type":"string","minLength":24,"maxLength":24},"ru":{"type":"string","minLength":36,"maxLength":36},"zh":{"type":"string","minLength":13,"maxLength":13}},"required":["de","en","es","fr","ja","ko","ru","zh"]},"iconID":{"type":"string","enum":["inventory"]},"title":{"type":"object","properties":{"de":{"type":"string","minLength":27,"maxLength":27},"en":{"type":"string","minLength":18,"maxLength":18},"es":{"type":"string","minLength":23,"maxLength":23},"fr":{"type":"string","minLength":22,"maxLength":22},"ja":{"type":"string","minLength":15,"maxLength":15},"ko":{"type":"string","minLength":12,"maxLength":12},"ru":{"type":"string","minLength":24,"maxLength":24},"zh":{"type":"string","minLength":7,"maxLength":7}},"required":["de","en","es","fr","ja","ko","ru","zh"]},"unsetDescription":{"type":"object","properties":{"de":{"type":"string","minLength":14,"maxLength":14},"en":{"type":"string","minLength":12,"maxLength":12},"es":{"type":"string","minLength":17,"maxLength":17},"fr":{"type":"string","minLength":13,"maxLength":13},"ja":{"type":"string","minLength":5,"maxLength":5},"ko":{"type":"string","minLength":5,"maxLength":5},"ru":{"type":"string","minLength":16,"maxLength":16},"zh":{"type":"string","minLength":4,"maxLength":4}},"required":["de","en","es","fr","ja","ko","ru","zh"]}},"required":["acceptedValueTypes","description","iconID","title","unsetDescription"]},"title":{"type":"object","properties":{"de":{"type":"string","minLength":27,"maxLength":27},"en":{"type":"string","minLength":18,"maxLength":18},"es":{"type":"string","minLength":23,"maxLength":23},"fr":{"type":"string","minLength":22,"maxLength":22},"ja":{"type":"string","minLength":15,"maxLength":15},"ko":{"type":"string","minLength":12,"maxLength":12},"ru":{"type":"string","minLength":24,"maxLength":24},"zh":{"type":"string","minLength":7,"maxLength":7}},"required":["de","en","es","fr","ja","ko","ru","zh"]}},"required":["deliveryLocation","description","iconID","inventoryType","title"]},"matcher":{"type":"object","properties":{"acceptedValueTypes":{"type":"array","items":{"type":"string","minLength":6,"maxLength":13},"minItems":1,"maxItems":4},"description":{"type":"object","properties":{"de":{"type":"string","minLength":40,"maxLength":177},"en":{"type":"string","minLength":42,"maxLength":158},"es":{"type":"string","minLength":41,"maxLength":161},"fr":{"type":"string","minLength":42,"maxLength":170},"ja":{"type":"string","minLength":16,"maxLength":64},"ko":{"type":"string","minLength":16,"maxLength":76},"ru":{"type":"string","minLength":37,"maxLength":144},"zh":{"type":"string","minLength":11,"maxLength":51}},"required":["de","en","es","fr","ja","ko","ru","zh"]},"iconID":{"type":"string","minLength":6,"maxLength":21},"maxEntries":{"type":"integer","minimum":4,"maximum":10},"optional":{"type":"boolean"},"title":{"type":"object","properties":{"de":{"type":"string","minLength":10,"maxLength":33},"en":{"type":"string","minLength":12,"maxLength":27},"es":{"type":"string","minLength":16,"maxLength":28},"fr":{"type":"string","minLength":16,"maxLength":30},"ja":{"type":"string","minLength":4,"maxLength":12},"ko":{"type":"string","minLength":5,"maxLength":11},"ru":{"type":"string","minLength":13,"maxLength":41},"zh":{"type":"string","minLength":4,"maxLength":8}},"required":["de","en","es","fr","ja","ko","ru","zh"]},"type":{"type":"string","minLength":8,"maxLength":30},"unsetDescription":{"type":"object","properties":{"de":{"type":"string","minLength":14,"maxLength":14},"en":{"type":"string","minLength":12,"maxLength":12},"es":{"type":"string","minLength":17,"maxLength":17},"fr":{"type":"string","minLength":13,"maxLength":13},"ja":{"type":"string","minLength":5,"maxLength":5},"ko":{"type":"string","minLength":5,"maxLength":5},"ru":{"type":"string","minLength":16,"maxLength":16},"zh":{"type":"string","minLength":4,"maxLength":4}},"required":["de","en","es","fr","ja","ko","ru","zh"]}},"required":["acceptedValueTypes","description","iconID","maxEntries","optional","title","type","unsetDescription"]}},"required":["_key"]},"minItems":1,"maxItems":5},"progressDescription":{"type":"object","properties":{"de":{"type":"string","minLength":11,"maxLength":30},"en":{"type":"string","minLength":10,"maxLength":24},"es":{"type":"string","minLength":12,"maxLength":25},"fr":{"type":"string","minLength":9,"maxLength":23},"ja":{"type":"string","minLength":4,"maxLength":9},"ko":{"type":"string","minLength":6,"maxLength":8},"ru":{"type":"string","minLength":14,"maxLength":23},"zh":{"type":"string","minLength":3,"maxLength":9}},"required":["de","en","es","fr","ja","ko","ru","zh"]},"rewardDescription":{"type":"object","properties":{"de":{"type":"string","minLength":18,"maxLength":36},"en":{"type":"string","minLength":14,"maxLength":29},"es":{"type":"string","minLength":17,"maxLength":40},"fr":{"type":"string","minLength":18,"maxLength":34},"ja":{"type":"string","minLength":3,"maxLength":14},"ko":{"type":"string","minLength":5,"maxLength":12},"ru":{"type":"string","minLength":18,"maxLength":39},"zh":{"type":"string","minLength":3,"maxLength":11}},"required":["de","en","es","fr","ja","ko","ru","zh"]},"targetDescription":{"type":"object","properties":{"de":{"type":"string","minLength":21,"maxLength":43},"en":{"type":"string","minLength":20,"maxLength":37},"es":{"type":"string","minLength":20,"maxLength":40},"fr":{"type":"string","minLength":23,"maxLength":39},"ja":{"type":"string","minLength":9,"maxLength":12},"ko":{"type":"string","minLength":8,"maxLength":12},"ru":{"type":"string","minLength":17,"maxLength":37},"zh":{"type":"string","minLength":6,"maxLength":12}},"required":["de","en","es","fr","ja","ko","ru","zh"]},"title":{"type":"object","properties":{"de":{"type":"string","minLength":7,"maxLength":35},"en":{"type":"string","minLength":7,"maxLength":35},"es":{"type":"string","minLength":8,"maxLength":41},"fr":{"type":"string","minLength":6,"maxLength":44},"ja":{"type":"string","minLength":2,"maxLength":15},"ko":{"type":"string","minLength":2,"maxLength":13},"ru":{"type":"string","minLength":9,"maxLength":45},"zh":{"type":"string","minLength":2,"maxLength":10}},"required":["de","en","es","fr","ja","ko","ru","zh"]}},"required":["_key","contentTags","description","iconID","maxContributionsPerParticipant","parameters","progressDescription","rewardDescription","targetDescription","title"]},"minItems":10,"maxItems":10}},"required":["_key","_value"]}
// To parse the JSON, install kotlin's serialization plugin and do:
//
// val json               = Json { allowStructuredMapKeys = true }
// val freelanceJobSchema = json.parse(FreelanceJobSchema.serializer(), jsonString)

package model

import kotlinx.serialization.*
import kotlinx.serialization.json.*
import kotlinx.serialization.descriptors.*
import kotlinx.serialization.encoding.*

@Serializable
data class FreelanceJobSchema (
    @SerialName("_key")
    val key: Long,

    @SerialName("_value")
    val value: List<Value>
)

@Serializable
data class Value (
    @SerialName("_key")
    val key: Key,

    val contentTags: List<String>,
    val contributionMultiplier: ContributionMultiplier? = null,
    val description: ValueDescription,

    @SerialName("iconID")
    val iconId: String,

    val maxContributionsPerParticipant: MaxContributionsPerParticipant,
    val maxProgressPerContribution: MaxProgressPerContribution? = null,
    val parameters: List<Parameter>,
    val progressDescription: ProgressDescription,
    val rewardDescription: RewardDescription,
    val targetDescription: TargetDescription,
    val title: ValueTitle
)

@Serializable
data class ContributionMultiplier (
    val defaultValue: Long,
    val description: ContributionMultiplierDescription,

    @SerialName("iconID")
    val iconId: ContributionMultiplierIconId,

    val maxValue: Long,
    val minValue: Double,
    val title: ContributionMultiplierTitle,
    val unsetDescription: ContributionMultiplierUnsetDescription
)

@Serializable
data class ContributionMultiplierDescription (
    val de: String,
    val en: String,
    val es: String,
    val fr: String,
    val ja: String,
    val ko: String,
    val ru: String,
    val zh: String
)

@Serializable
enum class ContributionMultiplierIconId(val value: String) {
    @SerialName("isk") Isk("isk");
}

@Serializable
data class ContributionMultiplierTitle (
    val de: String,
    val en: String,
    val es: String,
    val fr: String,
    val ja: String,
    val ko: String,
    val ru: String,
    val zh: String
)

@Serializable
data class ContributionMultiplierUnsetDescription (
    val de: String,
    val en: String,
    val es: String,
    val fr: String,
    val ja: String,
    val ko: String,
    val ru: String,
    val zh: String
)

@Serializable
data class ValueDescription (
    val de: String,
    val en: String,
    val es: String,
    val fr: String,
    val ja: String,
    val ko: String,
    val ru: String,
    val zh: String
)

@Serializable
enum class Key(val value: String) {
    @SerialName("BoostShield") BoostShield("BoostShield"),
    @SerialName("CaptureFWComplex") CaptureFwComplex("CaptureFWComplex"),
    @SerialName("DamageShip") DamageShip("DamageShip"),
    @SerialName("DefendFWComplex") DefendFwComplex("DefendFWComplex"),
    @SerialName("DeliverItem") DeliverItem("DeliverItem"),
    @SerialName("KillCapsuleer") KillCapsuleer("KillCapsuleer"),
    @SerialName("KillNPC") KillNpc("KillNPC"),
    @SerialName("MineOre") MineOre("MineOre"),
    @SerialName("RepairArmor") RepairArmor("RepairArmor"),
    @SerialName("ShipInsurance") ShipInsurance("ShipInsurance");
}

@Serializable
data class MaxContributionsPerParticipant (
    val description: MaxContributionsPerParticipantDescription,

    @SerialName("iconID")
    val iconId: MaxContributionsPerParticipantIconId,

    val title: MaxContributionsPerParticipantTitle,
    val unsetDescription: MaxContributionsPerParticipantUnsetDescription
)

@Serializable
data class MaxContributionsPerParticipantDescription (
    val de: String,
    val en: String,
    val es: String,
    val fr: String,
    val ja: String,
    val ko: String,
    val ru: String,
    val zh: String
)

@Serializable
enum class MaxContributionsPerParticipantIconId(val value: String) {
    @SerialName("isk") Isk("isk"),
    @SerialName("personal") Personal("personal");
}

@Serializable
data class MaxContributionsPerParticipantTitle (
    val de: String,
    val en: String,
    val es: String,
    val fr: String,
    val ja: String,
    val ko: String,
    val ru: String,
    val zh: String
)

@Serializable
data class MaxContributionsPerParticipantUnsetDescription (
    val de: String,
    val en: String,
    val es: String,
    val fr: String,
    val ja: String,
    val ko: String,
    val ru: String,
    val zh: String
)

@Serializable
data class MaxProgressPerContribution (
    val description: MaxProgressPerContributionDescription,

    @SerialName("iconID")
    val iconId: ContributionMultiplierIconId,

    val title: MaxProgressPerContributionTitle,
    val unsetDescription: MaxProgressPerContributionUnsetDescription
)

@Serializable
data class MaxProgressPerContributionDescription (
    val de: String,
    val en: String,
    val es: String,
    val fr: String,
    val ja: String,
    val ko: String,
    val ru: String,
    val zh: String
)

@Serializable
data class MaxProgressPerContributionTitle (
    val de: String,
    val en: String,
    val es: String,
    val fr: String,
    val ja: String,
    val ko: String,
    val ru: String,
    val zh: String
)

@Serializable
data class MaxProgressPerContributionUnsetDescription (
    val de: String,
    val en: String,
    val es: String,
    val fr: String,
    val ja: String,
    val ko: String,
    val ru: String,
    val zh: String
)

@Serializable
data class Parameter (
    @SerialName("_key")
    val key: String,

    val boolean: BooleanClass? = null,
    val itemDelivery: ItemDelivery? = null,
    val matcher: Matcher? = null
)

@Serializable
data class BooleanClass (
    val choiceLabel: ChoiceLabel,
    val default: Boolean,
    val description: BooleanDescription,

    @SerialName("iconID")
    val iconId: BooleanIconId,

    val optionFalse: OptionFalse,
    val optionTrue: OptionTrue,
    val title: BooleanTitle
)

@Serializable
data class ChoiceLabel (
    val de: String,
    val en: String,
    val es: String,
    val fr: String,
    val ja: String,
    val ko: String,
    val ru: String,
    val zh: String
)

@Serializable
data class BooleanDescription (
    val de: String,
    val en: String,
    val es: String,
    val fr: String,
    val ja: String,
    val ko: String,
    val ru: String,
    val zh: String
)

@Serializable
enum class BooleanIconId(val value: String) {
    @SerialName("person") Person("person");
}

@Serializable
data class OptionFalse (
    val description: OptionFalseDescription,
    val title: OptionFalseTitle
)

@Serializable
data class OptionFalseDescription (
    val de: String,
    val en: String,
    val es: String,
    val fr: String,
    val ja: String,
    val ko: String,
    val ru: String,
    val zh: String
)

@Serializable
data class OptionFalseTitle (
    val de: String,
    val en: String,
    val es: String,
    val fr: String,
    val ja: String,
    val ko: String,
    val ru: String,
    val zh: String
)

@Serializable
data class OptionTrue (
    val description: OptionTrueDescription,
    val title: OptionTrueTitle
)

@Serializable
data class OptionTrueDescription (
    val de: String,
    val en: String,
    val es: String,
    val fr: String,
    val ja: String,
    val ko: String,
    val ru: String,
    val zh: String
)

@Serializable
data class OptionTrueTitle (
    val de: String,
    val en: String,
    val es: String,
    val fr: String,
    val ja: String,
    val ko: String,
    val ru: String,
    val zh: String
)

@Serializable
data class BooleanTitle (
    val de: String,
    val en: String,
    val es: String,
    val fr: String,
    val ja: String,
    val ko: String,
    val ru: String,
    val zh: String
)

@Serializable
data class ItemDelivery (
    val deliveryLocation: DeliveryLocation,
    val description: ItemDeliveryDescription,

    @SerialName("iconID")
    val iconId: ItemDeliveryIconId,

    val inventoryType: InventoryType,
    val title: ItemDeliveryTitle
)

@Serializable
data class DeliveryLocation (
    val acceptedValueTypes: List<AcceptedValueType>,
    val description: DeliveryLocationDescription,

    @SerialName("iconID")
    val iconId: DeliveryLocationIconId,

    val maxEntries: Long,
    val title: DeliveryLocationTitle,
    val unsetDescription: DeliveryLocationUnsetDescription
)

@Serializable
enum class AcceptedValueType(val value: String) {
    @SerialName("station") Station("station"),
    @SerialName("structure") Structure("structure");
}

@Serializable
data class DeliveryLocationDescription (
    val de: String,
    val en: String,
    val es: String,
    val fr: String,
    val ja: String,
    val ko: String,
    val ru: String,
    val zh: String
)

@Serializable
enum class DeliveryLocationIconId(val value: String) {
    @SerialName("location") Location("location");
}

@Serializable
data class DeliveryLocationTitle (
    val de: String,
    val en: String,
    val es: String,
    val fr: String,
    val ja: String,
    val ko: String,
    val ru: String,
    val zh: String
)

@Serializable
data class DeliveryLocationUnsetDescription (
    val de: String,
    val en: String,
    val es: String,
    val fr: String,
    val ja: String,
    val ko: String,
    val ru: String,
    val zh: String
)

@Serializable
data class ItemDeliveryDescription (
    val de: String,
    val en: String,
    val es: String,
    val fr: String,
    val ja: String,
    val ko: String,
    val ru: String,
    val zh: String
)

@Serializable
enum class ItemDeliveryIconId(val value: String) {
    @SerialName("inventory") Inventory("inventory");
}

@Serializable
data class InventoryType (
    val acceptedValueTypes: List<String>,
    val description: InventoryTypeDescription,

    @SerialName("iconID")
    val iconId: ItemDeliveryIconId,

    val title: InventoryTypeTitle,
    val unsetDescription: InventoryTypeUnsetDescription
)

@Serializable
data class InventoryTypeDescription (
    val de: String,
    val en: String,
    val es: String,
    val fr: String,
    val ja: String,
    val ko: String,
    val ru: String,
    val zh: String
)

@Serializable
data class InventoryTypeTitle (
    val de: String,
    val en: String,
    val es: String,
    val fr: String,
    val ja: String,
    val ko: String,
    val ru: String,
    val zh: String
)

@Serializable
data class InventoryTypeUnsetDescription (
    val de: String,
    val en: String,
    val es: String,
    val fr: String,
    val ja: String,
    val ko: String,
    val ru: String,
    val zh: String
)

@Serializable
data class ItemDeliveryTitle (
    val de: String,
    val en: String,
    val es: String,
    val fr: String,
    val ja: String,
    val ko: String,
    val ru: String,
    val zh: String
)

@Serializable
data class Matcher (
    val acceptedValueTypes: List<String>,
    val description: MatcherDescription,

    @SerialName("iconID")
    val iconId: String,

    val maxEntries: Long,
    val optional: Boolean,
    val title: MatcherTitle,
    val type: String,
    val unsetDescription: MatcherUnsetDescription
)

@Serializable
data class MatcherDescription (
    val de: String,
    val en: String,
    val es: String,
    val fr: String,
    val ja: String,
    val ko: String,
    val ru: String,
    val zh: String
)

@Serializable
data class MatcherTitle (
    val de: String,
    val en: String,
    val es: String,
    val fr: String,
    val ja: String,
    val ko: String,
    val ru: String,
    val zh: String
)

@Serializable
data class MatcherUnsetDescription (
    val de: String,
    val en: String,
    val es: String,
    val fr: String,
    val ja: String,
    val ko: String,
    val ru: String,
    val zh: String
)

@Serializable
data class ProgressDescription (
    val de: String,
    val en: String,
    val es: String,
    val fr: String,
    val ja: String,
    val ko: String,
    val ru: String,
    val zh: String
)

@Serializable
data class RewardDescription (
    val de: String,
    val en: String,
    val es: String,
    val fr: String,
    val ja: String,
    val ko: String,
    val ru: String,
    val zh: String
)

@Serializable
data class TargetDescription (
    val de: String,
    val en: String,
    val es: String,
    val fr: String,
    val ja: String,
    val ko: String,
    val ru: String,
    val zh: String
)

@Serializable
data class ValueTitle (
    val de: String,
    val en: String,
    val es: String,
    val fr: String,
    val ja: String,
    val ko: String,
    val ru: String,
    val zh: String
)
<?php

// This is an autogenerated file:FreelanceJobSchema

class FreelanceJobSchema {
    private int $key; // json:_key Required
    private array $value; // json:_value Required

    /**
     * @param int $key
     * @param array $value
     */
    public function __construct(int $key, array $value) {
        $this->key = $key;
        $this->value = $value;
    }

    /**
     * @param int $value
     * @throws Exception
     * @return int
     */
    public static function fromKey(int $value): int {
        return $value; /*int*/
    }

    /**
     * @throws Exception
     * @return int
     */
    public function toKey(): int {
        if (FreelanceJobSchema::validateKey($this->key))  {
            return $this->key; /*int*/
        }
        throw new Exception('never get to this FreelanceJobSchema::key');
    }

    /**
     * @param int
     * @return bool
     * @throws Exception
     */
    public static function validateKey(int $value): bool {
        if (!is_integer($value)) {
            throw new Exception("Attribute Error:FreelanceJobSchema::key");
        }
        return true;
    }

    /**
     * @throws Exception
     * @return int
     */
    public function getKey(): int {
        if (FreelanceJobSchema::validateKey($this->key))  {
            return $this->key;
        }
        throw new Exception('never get to getKey FreelanceJobSchema::key');
    }

    /**
     * @return int
     */
    public static function sampleKey(): int {
        return 31; /*31:key*/
    }

    /**
     * @param array $value
     * @throws Exception
     * @return array
     */
    public static function fromValue(array $value): array {
        return  array_map(function ($value) {
            return Value::from($value); /*class*/
        }, $value);
    }

    /**
     * @throws Exception
     * @return array
     */
    public function toValue(): array {
        if (FreelanceJobSchema::validateValue($this->value))  {
            return array_map(function ($value) {
                return $value->to(); /*class*/
            }, $this->value);
        }
        throw new Exception('never get to this FreelanceJobSchema::value');
    }

    /**
     * @param array
     * @return bool
     * @throws Exception
     */
    public static function validateValue(array $value): bool {
        if (!is_array($value)) {
            throw new Exception("Attribute Error:FreelanceJobSchema::value");
        }
        array_walk($value, function($value_v) {
            $value_v->validate();
        });
        return true;
    }

    /**
     * @throws Exception
     * @return array
     */
    public function getValue(): array {
        if (FreelanceJobSchema::validateValue($this->value))  {
            return $this->value;
        }
        throw new Exception('never get to getValue FreelanceJobSchema::value');
    }

    /**
     * @return array
     */
    public static function sampleValue(): array {
        return  array(
            Value::sample() /*32:*/
        ); /* 32:value*/
    }

    /**
     * @throws Exception
     * @return bool
     */
    public function validate(): bool {
        return FreelanceJobSchema::validateKey($this->key)
        || FreelanceJobSchema::validateValue($this->value);
    }

    /**
     * @return stdClass
     * @throws Exception
     */
    public function to(): stdClass  {
        $out = new stdClass();
        $out->{'_key'} = $this->toKey();
        $out->{'_value'} = $this->toValue();
        return $out;
    }

    /**
     * @param stdClass $obj
     * @return FreelanceJobSchema
     * @throws Exception
     */
    public static function from(stdClass $obj): FreelanceJobSchema {
        return new FreelanceJobSchema(
         FreelanceJobSchema::fromKey($obj->{'_key'})
        ,FreelanceJobSchema::fromValue($obj->{'_value'})
        );
    }

    /**
     * @return FreelanceJobSchema
     */
    public static function sample(): FreelanceJobSchema {
        return new FreelanceJobSchema(
         FreelanceJobSchema::sampleKey()
        ,FreelanceJobSchema::sampleValue()
        );
    }
}

// This is an autogenerated file:Value

class Value {
    private Key $key; // json:_key Required
    private array $contentTags; // json:contentTags Required
    private ?ContributionMultiplier $contributionMultiplier; // json:contributionMultiplier Optional
    private ValueDescription $description; // json:description Required
    private string $iconId; // json:iconID Required
    private MaxContributionsPerParticipant $maxContributionsPerParticipant; // json:maxContributionsPerParticipant Required
    private ?MaxProgressPerContribution $maxProgressPerContribution; // json:maxProgressPerContribution Optional
    private array $parameters; // json:parameters Required
    private ProgressDescription $progressDescription; // json:progressDescription Required
    private RewardDescription $rewardDescription; // json:rewardDescription Required
    private TargetDescription $targetDescription; // json:targetDescription Required
    private ValueTitle $title; // json:title Required

    /**
     * @param Key $key
     * @param array $contentTags
     * @param ContributionMultiplier|null $contributionMultiplier
     * @param ValueDescription $description
     * @param string $iconId
     * @param MaxContributionsPerParticipant $maxContributionsPerParticipant
     * @param MaxProgressPerContribution|null $maxProgressPerContribution
     * @param array $parameters
     * @param ProgressDescription $progressDescription
     * @param RewardDescription $rewardDescription
     * @param TargetDescription $targetDescription
     * @param ValueTitle $title
     */
    public function __construct(Key $key, array $contentTags, ?ContributionMultiplier $contributionMultiplier, ValueDescription $description, string $iconId, MaxContributionsPerParticipant $maxContributionsPerParticipant, ?MaxProgressPerContribution $maxProgressPerContribution, array $parameters, ProgressDescription $progressDescription, RewardDescription $rewardDescription, TargetDescription $targetDescription, ValueTitle $title) {
        $this->key = $key;
        $this->contentTags = $contentTags;
        $this->contributionMultiplier = $contributionMultiplier;
        $this->description = $description;
        $this->iconId = $iconId;
        $this->maxContributionsPerParticipant = $maxContributionsPerParticipant;
        $this->maxProgressPerContribution = $maxProgressPerContribution;
        $this->parameters = $parameters;
        $this->progressDescription = $progressDescription;
        $this->rewardDescription = $rewardDescription;
        $this->targetDescription = $targetDescription;
        $this->title = $title;
    }

    /**
     * @param string $value
     * @throws Exception
     * @return Key
     */
    public static function fromKey(string $value): Key {
        return Key::from($value); /*enum*/
    }

    /**
     * @throws Exception
     * @return string
     */
    public function toKey(): string {
        if (Value::validateKey($this->key))  {
            return Key::to($this->key); /*enum*/
        }
        throw new Exception('never get to this Value::key');
    }

    /**
     * @param Key
     * @return bool
     * @throws Exception
     */
    public static function validateKey(Key $value): bool {
        Key::to($value);
        return true;
    }

    /**
     * @throws Exception
     * @return Key
     */
    public function getKey(): Key {
        if (Value::validateKey($this->key))  {
            return $this->key;
        }
        throw new Exception('never get to getKey Value::key');
    }

    /**
     * @return Key
     */
    public static function sampleKey(): Key {
        return Key::sample(); /*enum*/
    }

    /**
     * @param array $value
     * @throws Exception
     * @return array
     */
    public static function fromContentTags(array $value): array {
        return  array_map(function ($value) {
            return $value; /*string*/
        }, $value);
    }

    /**
     * @throws Exception
     * @return array
     */
    public function toContentTags(): array {
        if (Value::validateContentTags($this->contentTags))  {
            return array_map(function ($value) {
                return $value; /*string*/
            }, $this->contentTags);
        }
        throw new Exception('never get to this Value::contentTags');
    }

    /**
     * @param array
     * @return bool
     * @throws Exception
     */
    public static function validateContentTags(array $value): bool {
        if (!is_array($value)) {
            throw new Exception("Attribute Error:Value::contentTags");
        }
        array_walk($value, function($value_v) {
            if (!is_string($value_v)) {
                throw new Exception("Attribute Error:Value::contentTags");
            }
        });
        return true;
    }

    /**
     * @throws Exception
     * @return array
     */
    public function getContentTags(): array {
        if (Value::validateContentTags($this->contentTags))  {
            return $this->contentTags;
        }
        throw new Exception('never get to getContentTags Value::contentTags');
    }

    /**
     * @return array
     */
    public static function sampleContentTags(): array {
        return  array(
            'Value::::32' /*32:*/
        ); /* 32:contentTags*/
    }

    /**
     * @param ?stdClass $value
     * @throws Exception
     * @return ?ContributionMultiplier
     */
    public static function fromContributionMultiplier(?stdClass $value): ?ContributionMultiplier {
        if (!is_null($value)) {
            return ContributionMultiplier::from($value); /*class*/
        } else {
            return  null;
        }
    }

    /**
     * @throws Exception
     * @return ?stdClass
     */
    public function toContributionMultiplier(): ?stdClass {
        if (Value::validateContributionMultiplier($this->contributionMultiplier))  {
            if (!is_null($this->contributionMultiplier)) {
                return $this->contributionMultiplier->to(); /*class*/
            } else {
                return  null;
            }
        }
        throw new Exception('never get to this Value::contributionMultiplier');
    }

    /**
     * @param ContributionMultiplier|null
     * @return bool
     * @throws Exception
     */
    public static function validateContributionMultiplier(?ContributionMultiplier $value): bool {
        if (!is_null($value)) {
            $value->validate();
        }
        return true;
    }

    /**
     * @throws Exception
     * @return ?ContributionMultiplier
     */
    public function getContributionMultiplier(): ?ContributionMultiplier {
        if (Value::validateContributionMultiplier($this->contributionMultiplier))  {
            return $this->contributionMultiplier;
        }
        throw new Exception('never get to getContributionMultiplier Value::contributionMultiplier');
    }

    /**
     * @return ?ContributionMultiplier
     */
    public static function sampleContributionMultiplier(): ?ContributionMultiplier {
        return ContributionMultiplier::sample(); /*33:contributionMultiplier*/
    }

    /**
     * @param stdClass $value
     * @throws Exception
     * @return ValueDescription
     */
    public static function fromDescription(stdClass $value): ValueDescription {
        return ValueDescription::from($value); /*class*/
    }

    /**
     * @throws Exception
     * @return stdClass
     */
    public function toDescription(): stdClass {
        if (Value::validateDescription($this->description))  {
            return $this->description->to(); /*class*/
        }
        throw new Exception('never get to this Value::description');
    }

    /**
     * @param ValueDescription
     * @return bool
     * @throws Exception
     */
    public static function validateDescription(ValueDescription $value): bool {
        $value->validate();
        return true;
    }

    /**
     * @throws Exception
     * @return ValueDescription
     */
    public function getDescription(): ValueDescription {
        if (Value::validateDescription($this->description))  {
            return $this->description;
        }
        throw new Exception('never get to getDescription Value::description');
    }

    /**
     * @return ValueDescription
     */
    public static function sampleDescription(): ValueDescription {
        return ValueDescription::sample(); /*34:description*/
    }

    /**
     * @param string $value
     * @throws Exception
     * @return string
     */
    public static function fromIconId(string $value): string {
        return $value; /*string*/
    }

    /**
     * @throws Exception
     * @return string
     */
    public function toIconId(): string {
        if (Value::validateIconId($this->iconId))  {
            return $this->iconId; /*string*/
        }
        throw new Exception('never get to this Value::iconId');
    }

    /**
     * @param string
     * @return bool
     * @throws Exception
     */
    public static function validateIconId(string $value): bool {
        if (!is_string($value)) {
            throw new Exception("Attribute Error:Value::iconId");
        }
        return true;
    }

    /**
     * @throws Exception
     * @return string
     */
    public function getIconId(): string {
        if (Value::validateIconId($this->iconId))  {
            return $this->iconId;
        }
        throw new Exception('never get to getIconId Value::iconId');
    }

    /**
     * @return string
     */
    public static function sampleIconId(): string {
        return 'Value::iconId::35'; /*35:iconId*/
    }

    /**
     * @param stdClass $value
     * @throws Exception
     * @return MaxContributionsPerParticipant
     */
    public static function fromMaxContributionsPerParticipant(stdClass $value): MaxContributionsPerParticipant {
        return MaxContributionsPerParticipant::from($value); /*class*/
    }

    /**
     * @throws Exception
     * @return stdClass
     */
    public function toMaxContributionsPerParticipant(): stdClass {
        if (Value::validateMaxContributionsPerParticipant($this->maxContributionsPerParticipant))  {
            return $this->maxContributionsPerParticipant->to(); /*class*/
        }
        throw new Exception('never get to this Value::maxContributionsPerParticipant');
    }

    /**
     * @param MaxContributionsPerParticipant
     * @return bool
     * @throws Exception
     */
    public static function validateMaxContributionsPerParticipant(MaxContributionsPerParticipant $value): bool {
        $value->validate();
        return true;
    }

    /**
     * @throws Exception
     * @return MaxContributionsPerParticipant
     */
    public function getMaxContributionsPerParticipant(): MaxContributionsPerParticipant {
        if (Value::validateMaxContributionsPerParticipant($this->maxContributionsPerParticipant))  {
            return $this->maxContributionsPerParticipant;
        }
        throw new Exception('never get to getMaxContributionsPerParticipant Value::maxContributionsPerParticipant');
    }

    /**
     * @return MaxContributionsPerParticipant
     */
    public static function sampleMaxContributionsPerParticipant(): MaxContributionsPerParticipant {
        return MaxContributionsPerParticipant::sample(); /*36:maxContributionsPerParticipant*/
    }

    /**
     * @param ?stdClass $value
     * @throws Exception
     * @return ?MaxProgressPerContribution
     */
    public static function fromMaxProgressPerContribution(?stdClass $value): ?MaxProgressPerContribution {
        if (!is_null($value)) {
            return MaxProgressPerContribution::from($value); /*class*/
        } else {
            return  null;
        }
    }

    /**
     * @throws Exception
     * @return ?stdClass
     */
    public function toMaxProgressPerContribution(): ?stdClass {
        if (Value::validateMaxProgressPerContribution($this->maxProgressPerContribution))  {
            if (!is_null($this->maxProgressPerContribution)) {
                return $this->maxProgressPerContribution->to(); /*class*/
            } else {
                return  null;
            }
        }
        throw new Exception('never get to this Value::maxProgressPerContribution');
    }

    /**
     * @param MaxProgressPerContribution|null
     * @return bool
     * @throws Exception
     */
    public static function validateMaxProgressPerContribution(?MaxProgressPerContribution $value): bool {
        if (!is_null($value)) {
            $value->validate();
        }
        return true;
    }

    /**
     * @throws Exception
     * @return ?MaxProgressPerContribution
     */
    public function getMaxProgressPerContribution(): ?MaxProgressPerContribution {
        if (Value::validateMaxProgressPerContribution($this->maxProgressPerContribution))  {
            return $this->maxProgressPerContribution;
        }
        throw new Exception('never get to getMaxProgressPerContribution Value::maxProgressPerContribution');
    }

    /**
     * @return ?MaxProgressPerContribution
     */
    public static function sampleMaxProgressPerContribution(): ?MaxProgressPerContribution {
        return MaxProgressPerContribution::sample(); /*37:maxProgressPerContribution*/
    }

    /**
     * @param array $value
     * @throws Exception
     * @return array
     */
    public static function fromParameters(array $value): array {
        return  array_map(function ($value) {
            return Parameter::from($value); /*class*/
        }, $value);
    }

    /**
     * @throws Exception
     * @return array
     */
    public function toParameters(): array {
        if (Value::validateParameters($this->parameters))  {
            return array_map(function ($value) {
                return $value->to(); /*class*/
            }, $this->parameters);
        }
        throw new Exception('never get to this Value::parameters');
    }

    /**
     * @param array
     * @return bool
     * @throws Exception
     */
    public static function validateParameters(array $value): bool {
        if (!is_array($value)) {
            throw new Exception("Attribute Error:Value::parameters");
        }
        array_walk($value, function($value_v) {
            $value_v->validate();
        });
        return true;
    }

    /**
     * @throws Exception
     * @return array
     */
    public function getParameters(): array {
        if (Value::validateParameters($this->parameters))  {
            return $this->parameters;
        }
        throw new Exception('never get to getParameters Value::parameters');
    }

    /**
     * @return array
     */
    public static function sampleParameters(): array {
        return  array(
            Parameter::sample() /*38:*/
        ); /* 38:parameters*/
    }

    /**
     * @param stdClass $value
     * @throws Exception
     * @return ProgressDescription
     */
    public static function fromProgressDescription(stdClass $value): ProgressDescription {
        return ProgressDescription::from($value); /*class*/
    }

    /**
     * @throws Exception
     * @return stdClass
     */
    public function toProgressDescription(): stdClass {
        if (Value::validateProgressDescription($this->progressDescription))  {
            return $this->progressDescription->to(); /*class*/
        }
        throw new Exception('never get to this Value::progressDescription');
    }

    /**
     * @param ProgressDescription
     * @return bool
     * @throws Exception
     */
    public static function validateProgressDescription(ProgressDescription $value): bool {
        $value->validate();
        return true;
    }

    /**
     * @throws Exception
     * @return ProgressDescription
     */
    public function getProgressDescription(): ProgressDescription {
        if (Value::validateProgressDescription($this->progressDescription))  {
            return $this->progressDescription;
        }
        throw new Exception('never get to getProgressDescription Value::progressDescription');
    }

    /**
     * @return ProgressDescription
     */
    public static function sampleProgressDescription(): ProgressDescription {
        return ProgressDescription::sample(); /*39:progressDescription*/
    }

    /**
     * @param stdClass $value
     * @throws Exception
     * @return RewardDescription
     */
    public static function fromRewardDescription(stdClass $value): RewardDescription {
        return RewardDescription::from($value); /*class*/
    }

    /**
     * @throws Exception
     * @return stdClass
     */
    public function toRewardDescription(): stdClass {
        if (Value::validateRewardDescription($this->rewardDescription))  {
            return $this->rewardDescription->to(); /*class*/
        }
        throw new Exception('never get to this Value::rewardDescription');
    }

    /**
     * @param RewardDescription
     * @return bool
     * @throws Exception
     */
    public static function validateRewardDescription(RewardDescription $value): bool {
        $value->validate();
        return true;
    }

    /**
     * @throws Exception
     * @return RewardDescription
     */
    public function getRewardDescription(): RewardDescription {
        if (Value::validateRewardDescription($this->rewardDescription))  {
            return $this->rewardDescription;
        }
        throw new Exception('never get to getRewardDescription Value::rewardDescription');
    }

    /**
     * @return RewardDescription
     */
    public static function sampleRewardDescription(): RewardDescription {
        return RewardDescription::sample(); /*40:rewardDescription*/
    }

    /**
     * @param stdClass $value
     * @throws Exception
     * @return TargetDescription
     */
    public static function fromTargetDescription(stdClass $value): TargetDescription {
        return TargetDescription::from($value); /*class*/
    }

    /**
     * @throws Exception
     * @return stdClass
     */
    public function toTargetDescription(): stdClass {
        if (Value::validateTargetDescription($this->targetDescription))  {
            return $this->targetDescription->to(); /*class*/
        }
        throw new Exception('never get to this Value::targetDescription');
    }

    /**
     * @param TargetDescription
     * @return bool
     * @throws Exception
     */
    public static function validateTargetDescription(TargetDescription $value): bool {
        $value->validate();
        return true;
    }

    /**
     * @throws Exception
     * @return TargetDescription
     */
    public function getTargetDescription(): TargetDescription {
        if (Value::validateTargetDescription($this->targetDescription))  {
            return $this->targetDescription;
        }
        throw new Exception('never get to getTargetDescription Value::targetDescription');
    }

    /**
     * @return TargetDescription
     */
    public static function sampleTargetDescription(): TargetDescription {
        return TargetDescription::sample(); /*41:targetDescription*/
    }

    /**
     * @param stdClass $value
     * @throws Exception
     * @return ValueTitle
     */
    public static function fromTitle(stdClass $value): ValueTitle {
        return ValueTitle::from($value); /*class*/
    }

    /**
     * @throws Exception
     * @return stdClass
     */
    public function toTitle(): stdClass {
        if (Value::validateTitle($this->title))  {
            return $this->title->to(); /*class*/
        }
        throw new Exception('never get to this Value::title');
    }

    /**
     * @param ValueTitle
     * @return bool
     * @throws Exception
     */
    public static function validateTitle(ValueTitle $value): bool {
        $value->validate();
        return true;
    }

    /**
     * @throws Exception
     * @return ValueTitle
     */
    public function getTitle(): ValueTitle {
        if (Value::validateTitle($this->title))  {
            return $this->title;
        }
        throw new Exception('never get to getTitle Value::title');
    }

    /**
     * @return ValueTitle
     */
    public static function sampleTitle(): ValueTitle {
        return ValueTitle::sample(); /*42:title*/
    }

    /**
     * @throws Exception
     * @return bool
     */
    public function validate(): bool {
        return Value::validateKey($this->key)
        || Value::validateContentTags($this->contentTags)
        || Value::validateContributionMultiplier($this->contributionMultiplier)
        || Value::validateDescription($this->description)
        || Value::validateIconId($this->iconId)
        || Value::validateMaxContributionsPerParticipant($this->maxContributionsPerParticipant)
        || Value::validateMaxProgressPerContribution($this->maxProgressPerContribution)
        || Value::validateParameters($this->parameters)
        || Value::validateProgressDescription($this->progressDescription)
        || Value::validateRewardDescription($this->rewardDescription)
        || Value::validateTargetDescription($this->targetDescription)
        || Value::validateTitle($this->title);
    }

    /**
     * @return stdClass
     * @throws Exception
     */
    public function to(): stdClass  {
        $out = new stdClass();
        $out->{'_key'} = $this->toKey();
        $out->{'contentTags'} = $this->toContentTags();
        $out->{'contributionMultiplier'} = $this->toContributionMultiplier();
        $out->{'description'} = $this->toDescription();
        $out->{'iconID'} = $this->toIconId();
        $out->{'maxContributionsPerParticipant'} = $this->toMaxContributionsPerParticipant();
        $out->{'maxProgressPerContribution'} = $this->toMaxProgressPerContribution();
        $out->{'parameters'} = $this->toParameters();
        $out->{'progressDescription'} = $this->toProgressDescription();
        $out->{'rewardDescription'} = $this->toRewardDescription();
        $out->{'targetDescription'} = $this->toTargetDescription();
        $out->{'title'} = $this->toTitle();
        return $out;
    }

    /**
     * @param stdClass $obj
     * @return Value
     * @throws Exception
     */
    public static function from(stdClass $obj): Value {
        return new Value(
         Value::fromKey($obj->{'_key'})
        ,Value::fromContentTags($obj->{'contentTags'})
        ,Value::fromContributionMultiplier($obj->{'contributionMultiplier'})
        ,Value::fromDescription($obj->{'description'})
        ,Value::fromIconId($obj->{'iconID'})
        ,Value::fromMaxContributionsPerParticipant($obj->{'maxContributionsPerParticipant'})
        ,Value::fromMaxProgressPerContribution($obj->{'maxProgressPerContribution'})
        ,Value::fromParameters($obj->{'parameters'})
        ,Value::fromProgressDescription($obj->{'progressDescription'})
        ,Value::fromRewardDescription($obj->{'rewardDescription'})
        ,Value::fromTargetDescription($obj->{'targetDescription'})
        ,Value::fromTitle($obj->{'title'})
        );
    }

    /**
     * @return Value
     */
    public static function sample(): Value {
        return new Value(
         Value::sampleKey()
        ,Value::sampleContentTags()
        ,Value::sampleContributionMultiplier()
        ,Value::sampleDescription()
        ,Value::sampleIconId()
        ,Value::sampleMaxContributionsPerParticipant()
        ,Value::sampleMaxProgressPerContribution()
        ,Value::sampleParameters()
        ,Value::sampleProgressDescription()
        ,Value::sampleRewardDescription()
        ,Value::sampleTargetDescription()
        ,Value::sampleTitle()
        );
    }
}

// This is an autogenerated file:ContributionMultiplier

class ContributionMultiplier {
    private int $defaultValue; // json:defaultValue Required
    private ContributionMultiplierDescription $description; // json:description Required
    private ContributionMultiplierIconId $iconId; // json:iconID Required
    private int $maxValue; // json:maxValue Required
    private float $minValue; // json:minValue Required
    private ContributionMultiplierTitle $title; // json:title Required
    private ContributionMultiplierUnsetDescription $unsetDescription; // json:unsetDescription Required

    /**
     * @param int $defaultValue
     * @param ContributionMultiplierDescription $description
     * @param ContributionMultiplierIconId $iconId
     * @param int $maxValue
     * @param float $minValue
     * @param ContributionMultiplierTitle $title
     * @param ContributionMultiplierUnsetDescription $unsetDescription
     */
    public function __construct(int $defaultValue, ContributionMultiplierDescription $description, ContributionMultiplierIconId $iconId, int $maxValue, float $minValue, ContributionMultiplierTitle $title, ContributionMultiplierUnsetDescription $unsetDescription) {
        $this->defaultValue = $defaultValue;
        $this->description = $description;
        $this->iconId = $iconId;
        $this->maxValue = $maxValue;
        $this->minValue = $minValue;
        $this->title = $title;
        $this->unsetDescription = $unsetDescription;
    }

    /**
     * @param int $value
     * @throws Exception
     * @return int
     */
    public static function fromDefaultValue(int $value): int {
        return $value; /*int*/
    }

    /**
     * @throws Exception
     * @return int
     */
    public function toDefaultValue(): int {
        if (ContributionMultiplier::validateDefaultValue($this->defaultValue))  {
            return $this->defaultValue; /*int*/
        }
        throw new Exception('never get to this ContributionMultiplier::defaultValue');
    }

    /**
     * @param int
     * @return bool
     * @throws Exception
     */
    public static function validateDefaultValue(int $value): bool {
        if (!is_integer($value)) {
            throw new Exception("Attribute Error:ContributionMultiplier::defaultValue");
        }
        return true;
    }

    /**
     * @throws Exception
     * @return int
     */
    public function getDefaultValue(): int {
        if (ContributionMultiplier::validateDefaultValue($this->defaultValue))  {
            return $this->defaultValue;
        }
        throw new Exception('never get to getDefaultValue ContributionMultiplier::defaultValue');
    }

    /**
     * @return int
     */
    public static function sampleDefaultValue(): int {
        return 31; /*31:defaultValue*/
    }

    /**
     * @param stdClass $value
     * @throws Exception
     * @return ContributionMultiplierDescription
     */
    public static function fromDescription(stdClass $value): ContributionMultiplierDescription {
        return ContributionMultiplierDescription::from($value); /*class*/
    }

    /**
     * @throws Exception
     * @return stdClass
     */
    public function toDescription(): stdClass {
        if (ContributionMultiplier::validateDescription($this->description))  {
            return $this->description->to(); /*class*/
        }
        throw new Exception('never get to this ContributionMultiplier::description');
    }

    /**
     * @param ContributionMultiplierDescription
     * @return bool
     * @throws Exception
     */
    public static function validateDescription(ContributionMultiplierDescription $value): bool {
        $value->validate();
        return true;
    }

    /**
     * @throws Exception
     * @return ContributionMultiplierDescription
     */
    public function getDescription(): ContributionMultiplierDescription {
        if (ContributionMultiplier::validateDescription($this->description))  {
            return $this->description;
        }
        throw new Exception('never get to getDescription ContributionMultiplier::description');
    }

    /**
     * @return ContributionMultiplierDescription
     */
    public static function sampleDescription(): ContributionMultiplierDescription {
        return ContributionMultiplierDescription::sample(); /*32:description*/
    }

    /**
     * @param string $value
     * @throws Exception
     * @return ContributionMultiplierIconId
     */
    public static function fromIconId(string $value): ContributionMultiplierIconId {
        return ContributionMultiplierIconId::from($value); /*enum*/
    }

    /**
     * @throws Exception
     * @return string
     */
    public function toIconId(): string {
        if (ContributionMultiplier::validateIconId($this->iconId))  {
            return ContributionMultiplierIconId::to($this->iconId); /*enum*/
        }
        throw new Exception('never get to this ContributionMultiplier::iconId');
    }

    /**
     * @param ContributionMultiplierIconId
     * @return bool
     * @throws Exception
     */
    public static function validateIconId(ContributionMultiplierIconId $value): bool {
        ContributionMultiplierIconId::to($value);
        return true;
    }

    /**
     * @throws Exception
     * @return ContributionMultiplierIconId
     */
    public function getIconId(): ContributionMultiplierIconId {
        if (ContributionMultiplier::validateIconId($this->iconId))  {
            return $this->iconId;
        }
        throw new Exception('never get to getIconId ContributionMultiplier::iconId');
    }

    /**
     * @return ContributionMultiplierIconId
     */
    public static function sampleIconId(): ContributionMultiplierIconId {
        return ContributionMultiplierIconId::sample(); /*enum*/
    }

    /**
     * @param int $value
     * @throws Exception
     * @return int
     */
    public static function fromMaxValue(int $value): int {
        return $value; /*int*/
    }

    /**
     * @throws Exception
     * @return int
     */
    public function toMaxValue(): int {
        if (ContributionMultiplier::validateMaxValue($this->maxValue))  {
            return $this->maxValue; /*int*/
        }
        throw new Exception('never get to this ContributionMultiplier::maxValue');
    }

    /**
     * @param int
     * @return bool
     * @throws Exception
     */
    public static function validateMaxValue(int $value): bool {
        if (!is_integer($value)) {
            throw new Exception("Attribute Error:ContributionMultiplier::maxValue");
        }
        return true;
    }

    /**
     * @throws Exception
     * @return int
     */
    public function getMaxValue(): int {
        if (ContributionMultiplier::validateMaxValue($this->maxValue))  {
            return $this->maxValue;
        }
        throw new Exception('never get to getMaxValue ContributionMultiplier::maxValue');
    }

    /**
     * @return int
     */
    public static function sampleMaxValue(): int {
        return 34; /*34:maxValue*/
    }

    /**
     * @param float $value
     * @throws Exception
     * @return float
     */
    public static function fromMinValue(float $value): float {
        return $value; /*float*/
    }

    /**
     * @throws Exception
     * @return float
     */
    public function toMinValue(): float {
        if (ContributionMultiplier::validateMinValue($this->minValue))  {
            return $this->minValue; /*float*/
        }
        throw new Exception('never get to this ContributionMultiplier::minValue');
    }

    /**
     * @param float
     * @return bool
     * @throws Exception
     */
    public static function validateMinValue(float $value): bool {
        if (!is_float($value) && !is_int($value)) {
            throw new Exception("Attribute Error:ContributionMultiplier::minValue");
        }
        return true;
    }

    /**
     * @throws Exception
     * @return float
     */
    public function getMinValue(): float {
        if (ContributionMultiplier::validateMinValue($this->minValue))  {
            return $this->minValue;
        }
        throw new Exception('never get to getMinValue ContributionMultiplier::minValue');
    }

    /**
     * @return float
     */
    public static function sampleMinValue(): float {
        return 35.035; /*35:minValue*/
    }

    /**
     * @param stdClass $value
     * @throws Exception
     * @return ContributionMultiplierTitle
     */
    public static function fromTitle(stdClass $value): ContributionMultiplierTitle {
        return ContributionMultiplierTitle::from($value); /*class*/
    }

    /**
     * @throws Exception
     * @return stdClass
     */
    public function toTitle(): stdClass {
        if (ContributionMultiplier::validateTitle($this->title))  {
            return $this->title->to(); /*class*/
        }
        throw new Exception('never get to this ContributionMultiplier::title');
    }

    /**
     * @param ContributionMultiplierTitle
     * @return bool
     * @throws Exception
     */
    public static function validateTitle(ContributionMultiplierTitle $value): bool {
        $value->validate();
        return true;
    }

    /**
     * @throws Exception
     * @return ContributionMultiplierTitle
     */
    public function getTitle(): ContributionMultiplierTitle {
        if (ContributionMultiplier::validateTitle($this->title))  {
            return $this->title;
        }
        throw new Exception('never get to getTitle ContributionMultiplier::title');
    }

    /**
     * @return ContributionMultiplierTitle
     */
    public static function sampleTitle(): ContributionMultiplierTitle {
        return ContributionMultiplierTitle::sample(); /*36:title*/
    }

    /**
     * @param stdClass $value
     * @throws Exception
     * @return ContributionMultiplierUnsetDescription
     */
    public static function fromUnsetDescription(stdClass $value): ContributionMultiplierUnsetDescription {
        return ContributionMultiplierUnsetDescription::from($value); /*class*/
    }

    /**
     * @throws Exception
     * @return stdClass
     */
    public function toUnsetDescription(): stdClass {
        if (ContributionMultiplier::validateUnsetDescription($this->unsetDescription))  {
            return $this->unsetDescription->to(); /*class*/
        }
        throw new Exception('never get to this ContributionMultiplier::unsetDescription');
    }

    /**
     * @param ContributionMultiplierUnsetDescription
     * @return bool
     * @throws Exception
     */
    public static function validateUnsetDescription(ContributionMultiplierUnsetDescription $value): bool {
        $value->validate();
        return true;
    }

    /**
     * @throws Exception
     * @return ContributionMultiplierUnsetDescription
     */
    public function getUnsetDescription(): ContributionMultiplierUnsetDescription {
        if (ContributionMultiplier::validateUnsetDescription($this->unsetDescription))  {
            return $this->unsetDescription;
        }
        throw new Exception('never get to getUnsetDescription ContributionMultiplier::unsetDescription');
    }

    /**
     * @return ContributionMultiplierUnsetDescription
     */
    public static function sampleUnsetDescription(): ContributionMultiplierUnsetDescription {
        return ContributionMultiplierUnsetDescription::sample(); /*37:unsetDescription*/
    }

    /**
     * @throws Exception
     * @return bool
     */
    public function validate(): bool {
        return ContributionMultiplier::validateDefaultValue($this->defaultValue)
        || ContributionMultiplier::validateDescription($this->description)
        || ContributionMultiplier::validateIconId($this->iconId)
        || ContributionMultiplier::validateMaxValue($this->maxValue)
        || ContributionMultiplier::validateMinValue($this->minValue)
        || ContributionMultiplier::validateTitle($this->title)
        || ContributionMultiplier::validateUnsetDescription($this->unsetDescription);
    }

    /**
     * @return stdClass
     * @throws Exception
     */
    public function to(): stdClass  {
        $out = new stdClass();
        $out->{'defaultValue'} = $this->toDefaultValue();
        $out->{'description'} = $this->toDescription();
        $out->{'iconID'} = $this->toIconId();
        $out->{'maxValue'} = $this->toMaxValue();
        $out->{'minValue'} = $this->toMinValue();
        $out->{'title'} = $this->toTitle();
        $out->{'unsetDescription'} = $this->toUnsetDescription();
        return $out;
    }

    /**
     * @param stdClass $obj
     * @return ContributionMultiplier
     * @throws Exception
     */
    public static function from(stdClass $obj): ContributionMultiplier {
        return new ContributionMultiplier(
         ContributionMultiplier::fromDefaultValue($obj->{'defaultValue'})
        ,ContributionMultiplier::fromDescription($obj->{'description'})
        ,ContributionMultiplier::fromIconId($obj->{'iconID'})
        ,ContributionMultiplier::fromMaxValue($obj->{'maxValue'})
        ,ContributionMultiplier::fromMinValue($obj->{'minValue'})
        ,ContributionMultiplier::fromTitle($obj->{'title'})
        ,ContributionMultiplier::fromUnsetDescription($obj->{'unsetDescription'})
        );
    }

    /**
     * @return ContributionMultiplier
     */
    public static function sample(): ContributionMultiplier {
        return new ContributionMultiplier(
         ContributionMultiplier::sampleDefaultValue()
        ,ContributionMultiplier::sampleDescription()
        ,ContributionMultiplier::sampleIconId()
        ,ContributionMultiplier::sampleMaxValue()
        ,ContributionMultiplier::sampleMinValue()
        ,ContributionMultiplier::sampleTitle()
        ,ContributionMultiplier::sampleUnsetDescription()
        );
    }
}

// This is an autogenerated file:ContributionMultiplierDescription

class ContributionMultiplierDescription {
    private string $de; // json:de Required
    private string $en; // json:en Required
    private string $es; // json:es Required
    private string $fr; // json:fr Required
    private string $ja; // json:ja Required
    private string $ko; // json:ko Required
    private string $ru; // json:ru Required
    private string $zh; // json:zh Required

    /**
     * @param string $de
     * @param string $en
     * @param string $es
     * @param string $fr
     * @param string $ja
     * @param string $ko
     * @param string $ru
     * @param string $zh
     */
    public function __construct(string $de, string $en, string $es, string $fr, string $ja, string $ko, string $ru, string $zh) {
        $this->de = $de;
        $this->en = $en;
        $this->es = $es;
        $this->fr = $fr;
        $this->ja = $ja;
        $this->ko = $ko;
        $this->ru = $ru;
        $this->zh = $zh;
    }

    /**
     * @param string $value
     * @throws Exception
     * @return string
     */
    public static function fromDe(string $value): string {
        return $value; /*string*/
    }

    /**
     * @throws Exception
     * @return string
     */
    public function toDe(): string {
        if (ContributionMultiplierDescription::validateDe($this->de))  {
            return $this->de; /*string*/
        }
        throw new Exception('never get to this ContributionMultiplierDescription::de');
    }

    /**
     * @param string
     * @return bool
     * @throws Exception
     */
    public static function validateDe(string $value): bool {
        if (!is_string($value)) {
            throw new Exception("Attribute Error:ContributionMultiplierDescription::de");
        }
        return true;
    }

    /**
     * @throws Exception
     * @return string
     */
    public function getDe(): string {
        if (ContributionMultiplierDescription::validateDe($this->de))  {
            return $this->de;
        }
        throw new Exception('never get to getDe ContributionMultiplierDescription::de');
    }

    /**
     * @return string
     */
    public static function sampleDe(): string {
        return 'ContributionMultiplierDescription::de::31'; /*31:de*/
    }

    /**
     * @param string $value
     * @throws Exception
     * @return string
     */
    public static function fromEn(string $value): string {
        return $value; /*string*/
    }

    /**
     * @throws Exception
     * @return string
     */
    public function toEn(): string {
        if (ContributionMultiplierDescription::validateEn($this->en))  {
            return $this->en; /*string*/
        }
        throw new Exception('never get to this ContributionMultiplierDescription::en');
    }

    /**
     * @param string
     * @return bool
     * @throws Exception
     */
    public static function validateEn(string $value): bool {
        if (!is_string($value)) {
            throw new Exception("Attribute Error:ContributionMultiplierDescription::en");
        }
        return true;
    }

    /**
     * @throws Exception
     * @return string
     */
    public function getEn(): string {
        if (ContributionMultiplierDescription::validateEn($this->en))  {
            return $this->en;
        }
        throw new Exception('never get to getEn ContributionMultiplierDescription::en');
    }

    /**
     * @return string
     */
    public static function sampleEn(): string {
        return 'ContributionMultiplierDescription::en::32'; /*32:en*/
    }

    /**
     * @param string $value
     * @throws Exception
     * @return string
     */
    public static function fromEs(string $value): string {
        return $value; /*string*/
    }

    /**
     * @throws Exception
     * @return string
     */
    public function toEs(): string {
        if (ContributionMultiplierDescription::validateEs($this->es))  {
            return $this->es; /*string*/
        }
        throw new Exception('never get to this ContributionMultiplierDescription::es');
    }

    /**
     * @param string
     * @return bool
     * @throws Exception
     */
    public static function validateEs(string $value): bool {
        if (!is_string($value)) {
            throw new Exception("Attribute Error:ContributionMultiplierDescription::es");
        }
        return true;
    }

    /**
     * @throws Exception
     * @return string
     */
    public function getEs(): string {
        if (ContributionMultiplierDescription::validateEs($this->es))  {
            return $this->es;
        }
        throw new Exception('never get to getEs ContributionMultiplierDescription::es');
    }

    /**
     * @return string
     */
    public static function sampleEs(): string {
        return 'ContributionMultiplierDescription::es::33'; /*33:es*/
    }

    /**
     * @param string $value
     * @throws Exception
     * @return string
     */
    public static function fromFr(string $value): string {
        return $value; /*string*/
    }

    /**
     * @throws Exception
     * @return string
     */
    public function toFr(): string {
        if (ContributionMultiplierDescription::validateFr($this->fr))  {
            return $this->fr; /*string*/
        }
        throw new Exception('never get to this ContributionMultiplierDescription::fr');
    }

    /**
     * @param string
     * @return bool
     * @throws Exception
     */
    public static function validateFr(string $value): bool {
        if (!is_string($value)) {
            throw new Exception("Attribute Error:ContributionMultiplierDescription::fr");
        }
        return true;
    }

    /**
     * @throws Exception
     * @return string
     */
    public function getFr(): string {
        if (ContributionMultiplierDescription::validateFr($this->fr))  {
            return $this->fr;
        }
        throw new Exception('never get to getFr ContributionMultiplierDescription::fr');
    }

    /**
     * @return string
     */
    public static function sampleFr(): string {
        return 'ContributionMultiplierDescription::fr::34'; /*34:fr*/
    }

    /**
     * @param string $value
     * @throws Exception
     * @return string
     */
    public static function fromJa(string $value): string {
        return $value; /*string*/
    }

    /**
     * @throws Exception
     * @return string
     */
    public function toJa(): string {
        if (ContributionMultiplierDescription::validateJa($this->ja))  {
            return $this->ja; /*string*/
        }
        throw new Exception('never get to this ContributionMultiplierDescription::ja');
    }

    /**
     * @param string
     * @return bool
     * @throws Exception
     */
    public static function validateJa(string $value): bool {
        if (!is_string($value)) {
            throw new Exception("Attribute Error:ContributionMultiplierDescription::ja");
        }
        return true;
    }

    /**
     * @throws Exception
     * @return string
     */
    public function getJa(): string {
        if (ContributionMultiplierDescription::validateJa($this->ja))  {
            return $this->ja;
        }
        throw new Exception('never get to getJa ContributionMultiplierDescription::ja');
    }

    /**
     * @return string
     */
    public static function sampleJa(): string {
        return 'ContributionMultiplierDescription::ja::35'; /*35:ja*/
    }

    /**
     * @param string $value
     * @throws Exception
     * @return string
     */
    public static function fromKo(string $value): string {
        return $value; /*string*/
    }

    /**
     * @throws Exception
     * @return string
     */
    public function toKo(): string {
        if (ContributionMultiplierDescription::validateKo($this->ko))  {
            return $this->ko; /*string*/
        }
        throw new Exception('never get to this ContributionMultiplierDescription::ko');
    }

    /**
     * @param string
     * @return bool
     * @throws Exception
     */
    public static function validateKo(string $value): bool {
        if (!is_string($value)) {
            throw new Exception("Attribute Error:ContributionMultiplierDescription::ko");
        }
        return true;
    }

    /**
     * @throws Exception
     * @return string
     */
    public function getKo(): string {
        if (ContributionMultiplierDescription::validateKo($this->ko))  {
            return $this->ko;
        }
        throw new Exception('never get to getKo ContributionMultiplierDescription::ko');
    }

    /**
     * @return string
     */
    public static function sampleKo(): string {
        return 'ContributionMultiplierDescription::ko::36'; /*36:ko*/
    }

    /**
     * @param string $value
     * @throws Exception
     * @return string
     */
    public static function fromRu(string $value): string {
        return $value; /*string*/
    }

    /**
     * @throws Exception
     * @return string
     */
    public function toRu(): string {
        if (ContributionMultiplierDescription::validateRu($this->ru))  {
            return $this->ru; /*string*/
        }
        throw new Exception('never get to this ContributionMultiplierDescription::ru');
    }

    /**
     * @param string
     * @return bool
     * @throws Exception
     */
    public static function validateRu(string $value): bool {
        if (!is_string($value)) {
            throw new Exception("Attribute Error:ContributionMultiplierDescription::ru");
        }
        return true;
    }

    /**
     * @throws Exception
     * @return string
     */
    public function getRu(): string {
        if (ContributionMultiplierDescription::validateRu($this->ru))  {
            return $this->ru;
        }
        throw new Exception('never get to getRu ContributionMultiplierDescription::ru');
    }

    /**
     * @return string
     */
    public static function sampleRu(): string {
        return 'ContributionMultiplierDescription::ru::37'; /*37:ru*/
    }

    /**
     * @param string $value
     * @throws Exception
     * @return string
     */
    public static function fromZh(string $value): string {
        return $value; /*string*/
    }

    /**
     * @throws Exception
     * @return string
     */
    public function toZh(): string {
        if (ContributionMultiplierDescription::validateZh($this->zh))  {
            return $this->zh; /*string*/
        }
        throw new Exception('never get to this ContributionMultiplierDescription::zh');
    }

    /**
     * @param string
     * @return bool
     * @throws Exception
     */
    public static function validateZh(string $value): bool {
        if (!is_string($value)) {
            throw new Exception("Attribute Error:ContributionMultiplierDescription::zh");
        }
        return true;
    }

    /**
     * @throws Exception
     * @return string
     */
    public function getZh(): string {
        if (ContributionMultiplierDescription::validateZh($this->zh))  {
            return $this->zh;
        }
        throw new Exception('never get to getZh ContributionMultiplierDescription::zh');
    }

    /**
     * @return string
     */
    public static function sampleZh(): string {
        return 'ContributionMultiplierDescription::zh::38'; /*38:zh*/
    }

    /**
     * @throws Exception
     * @return bool
     */
    public function validate(): bool {
        return ContributionMultiplierDescription::validateDe($this->de)
        || ContributionMultiplierDescription::validateEn($this->en)
        || ContributionMultiplierDescription::validateEs($this->es)
        || ContributionMultiplierDescription::validateFr($this->fr)
        || ContributionMultiplierDescription::validateJa($this->ja)
        || ContributionMultiplierDescription::validateKo($this->ko)
        || ContributionMultiplierDescription::validateRu($this->ru)
        || ContributionMultiplierDescription::validateZh($this->zh);
    }

    /**
     * @return stdClass
     * @throws Exception
     */
    public function to(): stdClass  {
        $out = new stdClass();
        $out->{'de'} = $this->toDe();
        $out->{'en'} = $this->toEn();
        $out->{'es'} = $this->toEs();
        $out->{'fr'} = $this->toFr();
        $out->{'ja'} = $this->toJa();
        $out->{'ko'} = $this->toKo();
        $out->{'ru'} = $this->toRu();
        $out->{'zh'} = $this->toZh();
        return $out;
    }

    /**
     * @param stdClass $obj
     * @return ContributionMultiplierDescription
     * @throws Exception
     */
    public static function from(stdClass $obj): ContributionMultiplierDescription {
        return new ContributionMultiplierDescription(
         ContributionMultiplierDescription::fromDe($obj->{'de'})
        ,ContributionMultiplierDescription::fromEn($obj->{'en'})
        ,ContributionMultiplierDescription::fromEs($obj->{'es'})
        ,ContributionMultiplierDescription::fromFr($obj->{'fr'})
        ,ContributionMultiplierDescription::fromJa($obj->{'ja'})
        ,ContributionMultiplierDescription::fromKo($obj->{'ko'})
        ,ContributionMultiplierDescription::fromRu($obj->{'ru'})
        ,ContributionMultiplierDescription::fromZh($obj->{'zh'})
        );
    }

    /**
     * @return ContributionMultiplierDescription
     */
    public static function sample(): ContributionMultiplierDescription {
        return new ContributionMultiplierDescription(
         ContributionMultiplierDescription::sampleDe()
        ,ContributionMultiplierDescription::sampleEn()
        ,ContributionMultiplierDescription::sampleEs()
        ,ContributionMultiplierDescription::sampleFr()
        ,ContributionMultiplierDescription::sampleJa()
        ,ContributionMultiplierDescription::sampleKo()
        ,ContributionMultiplierDescription::sampleRu()
        ,ContributionMultiplierDescription::sampleZh()
        );
    }
}

// This is an autogenerated file:ContributionMultiplierIconId

class ContributionMultiplierIconId {
    public static ContributionMultiplierIconId $ISK;
    public static function init() {
        ContributionMultiplierIconId::$ISK = new ContributionMultiplierIconId('isk');
    }
    private string $enum;
    public function __construct(string $enum) {
        $this->enum = $enum;
    }

    /**
     * @param ContributionMultiplierIconId
     * @return string
     * @throws Exception
     */
    public static function to(ContributionMultiplierIconId $obj): string {
        switch ($obj->enum) {
            case ContributionMultiplierIconId::$ISK->enum: return 'isk';
        }
        throw new Exception('the give value is not an enum-value.');
    }

    /**
     * @param mixed
     * @return ContributionMultiplierIconId
     * @throws Exception
     */
    public static function from($obj): ContributionMultiplierIconId {
        switch ($obj) {
            case 'isk': return ContributionMultiplierIconId::$ISK;
        }
        throw new Exception("Cannot deserialize ContributionMultiplierIconId");
    }

    /**
     * @return ContributionMultiplierIconId
     */
    public static function sample(): ContributionMultiplierIconId {
        return ContributionMultiplierIconId::$ISK;
    }
}
ContributionMultiplierIconId::init();

// This is an autogenerated file:ContributionMultiplierTitle

class ContributionMultiplierTitle {
    private string $de; // json:de Required
    private string $en; // json:en Required
    private string $es; // json:es Required
    private string $fr; // json:fr Required
    private string $ja; // json:ja Required
    private string $ko; // json:ko Required
    private string $ru; // json:ru Required
    private string $zh; // json:zh Required

    /**
     * @param string $de
     * @param string $en
     * @param string $es
     * @param string $fr
     * @param string $ja
     * @param string $ko
     * @param string $ru
     * @param string $zh
     */
    public function __construct(string $de, string $en, string $es, string $fr, string $ja, string $ko, string $ru, string $zh) {
        $this->de = $de;
        $this->en = $en;
        $this->es = $es;
        $this->fr = $fr;
        $this->ja = $ja;
        $this->ko = $ko;
        $this->ru = $ru;
        $this->zh = $zh;
    }

    /**
     * @param string $value
     * @throws Exception
     * @return string
     */
    public static function fromDe(string $value): string {
        return $value; /*string*/
    }

    /**
     * @throws Exception
     * @return string
     */
    public function toDe(): string {
        if (ContributionMultiplierTitle::validateDe($this->de))  {
            return $this->de; /*string*/
        }
        throw new Exception('never get to this ContributionMultiplierTitle::de');
    }

    /**
     * @param string
     * @return bool
     * @throws Exception
     */
    public static function validateDe(string $value): bool {
        if (!is_string($value)) {
            throw new Exception("Attribute Error:ContributionMultiplierTitle::de");
        }
        return true;
    }

    /**
     * @throws Exception
     * @return string
     */
    public function getDe(): string {
        if (ContributionMultiplierTitle::validateDe($this->de))  {
            return $this->de;
        }
        throw new Exception('never get to getDe ContributionMultiplierTitle::de');
    }

    /**
     * @return string
     */
    public static function sampleDe(): string {
        return 'ContributionMultiplierTitle::de::31'; /*31:de*/
    }

    /**
     * @param string $value
     * @throws Exception
     * @return string
     */
    public static function fromEn(string $value): string {
        return $value; /*string*/
    }

    /**
     * @throws Exception
     * @return string
     */
    public function toEn(): string {
        if (ContributionMultiplierTitle::validateEn($this->en))  {
            return $this->en; /*string*/
        }
        throw new Exception('never get to this ContributionMultiplierTitle::en');
    }

    /**
     * @param string
     * @return bool
     * @throws Exception
     */
    public static function validateEn(string $value): bool {
        if (!is_string($value)) {
            throw new Exception("Attribute Error:ContributionMultiplierTitle::en");
        }
        return true;
    }

    /**
     * @throws Exception
     * @return string
     */
    public function getEn(): string {
        if (ContributionMultiplierTitle::validateEn($this->en))  {
            return $this->en;
        }
        throw new Exception('never get to getEn ContributionMultiplierTitle::en');
    }

    /**
     * @return string
     */
    public static function sampleEn(): string {
        return 'ContributionMultiplierTitle::en::32'; /*32:en*/
    }

    /**
     * @param string $value
     * @throws Exception
     * @return string
     */
    public static function fromEs(string $value): string {
        return $value; /*string*/
    }

    /**
     * @throws Exception
     * @return string
     */
    public function toEs(): string {
        if (ContributionMultiplierTitle::validateEs($this->es))  {
            return $this->es; /*string*/
        }
        throw new Exception('never get to this ContributionMultiplierTitle::es');
    }

    /**
     * @param string
     * @return bool
     * @throws Exception
     */
    public static function validateEs(string $value): bool {
        if (!is_string($value)) {
            throw new Exception("Attribute Error:ContributionMultiplierTitle::es");
        }
        return true;
    }

    /**
     * @throws Exception
     * @return string
     */
    public function getEs(): string {
        if (ContributionMultiplierTitle::validateEs($this->es))  {
            return $this->es;
        }
        throw new Exception('never get to getEs ContributionMultiplierTitle::es');
    }

    /**
     * @return string
     */
    public static function sampleEs(): string {
        return 'ContributionMultiplierTitle::es::33'; /*33:es*/
    }

    /**
     * @param string $value
     * @throws Exception
     * @return string
     */
    public static function fromFr(string $value): string {
        return $value; /*string*/
    }

    /**
     * @throws Exception
     * @return string
     */
    public function toFr(): string {
        if (ContributionMultiplierTitle::validateFr($this->fr))  {
            return $this->fr; /*string*/
        }
        throw new Exception('never get to this ContributionMultiplierTitle::fr');
    }

    /**
     * @param string
     * @return bool
     * @throws Exception
     */
    public static function validateFr(string $value): bool {
        if (!is_string($value)) {
            throw new Exception("Attribute Error:ContributionMultiplierTitle::fr");
        }
        return true;
    }

    /**
     * @throws Exception
     * @return string
     */
    public function getFr(): string {
        if (ContributionMultiplierTitle::validateFr($this->fr))  {
            return $this->fr;
        }
        throw new Exception('never get to getFr ContributionMultiplierTitle::fr');
    }

    /**
     * @return string
     */
    public static function sampleFr(): string {
        return 'ContributionMultiplierTitle::fr::34'; /*34:fr*/
    }

    /**
     * @param string $value
     * @throws Exception
     * @return string
     */
    public static function fromJa(string $value): string {
        return $value; /*string*/
    }

    /**
     * @throws Exception
     * @return string
     */
    public function toJa(): string {
        if (ContributionMultiplierTitle::validateJa($this->ja))  {
            return $this->ja; /*string*/
        }
        throw new Exception('never get to this ContributionMultiplierTitle::ja');
    }

    /**
     * @param string
     * @return bool
     * @throws Exception
     */
    public static function validateJa(string $value): bool {
        if (!is_string($value)) {
            throw new Exception("Attribute Error:ContributionMultiplierTitle::ja");
        }
        return true;
    }

    /**
     * @throws Exception
     * @return string
     */
    public function getJa(): string {
        if (ContributionMultiplierTitle::validateJa($this->ja))  {
            return $this->ja;
        }
        throw new Exception('never get to getJa ContributionMultiplierTitle::ja');
    }

    /**
     * @return string
     */
    public static function sampleJa(): string {
        return 'ContributionMultiplierTitle::ja::35'; /*35:ja*/
    }

    /**
     * @param string $value
     * @throws Exception
     * @return string
     */
    public static function fromKo(string $value): string {
        return $value; /*string*/
    }

    /**
     * @throws Exception
     * @return string
     */
    public function toKo(): string {
        if (ContributionMultiplierTitle::validateKo($this->ko))  {
            return $this->ko; /*string*/
        }
        throw new Exception('never get to this ContributionMultiplierTitle::ko');
    }

    /**
     * @param string
     * @return bool
     * @throws Exception
     */
    public static function validateKo(string $value): bool {
        if (!is_string($value)) {
            throw new Exception("Attribute Error:ContributionMultiplierTitle::ko");
        }
        return true;
    }

    /**
     * @throws Exception
     * @return string
     */
    public function getKo(): string {
        if (ContributionMultiplierTitle::validateKo($this->ko))  {
            return $this->ko;
        }
        throw new Exception('never get to getKo ContributionMultiplierTitle::ko');
    }

    /**
     * @return string
     */
    public static function sampleKo(): string {
        return 'ContributionMultiplierTitle::ko::36'; /*36:ko*/
    }

    /**
     * @param string $value
     * @throws Exception
     * @return string
     */
    public static function fromRu(string $value): string {
        return $value; /*string*/
    }

    /**
     * @throws Exception
     * @return string
     */
    public function toRu(): string {
        if (ContributionMultiplierTitle::validateRu($this->ru))  {
            return $this->ru; /*string*/
        }
        throw new Exception('never get to this ContributionMultiplierTitle::ru');
    }

    /**
     * @param string
     * @return bool
     * @throws Exception
     */
    public static function validateRu(string $value): bool {
        if (!is_string($value)) {
            throw new Exception("Attribute Error:ContributionMultiplierTitle::ru");
        }
        return true;
    }

    /**
     * @throws Exception
     * @return string
     */
    public function getRu(): string {
        if (ContributionMultiplierTitle::validateRu($this->ru))  {
            return $this->ru;
        }
        throw new Exception('never get to getRu ContributionMultiplierTitle::ru');
    }

    /**
     * @return string
     */
    public static function sampleRu(): string {
        return 'ContributionMultiplierTitle::ru::37'; /*37:ru*/
    }

    /**
     * @param string $value
     * @throws Exception
     * @return string
     */
    public static function fromZh(string $value): string {
        return $value; /*string*/
    }

    /**
     * @throws Exception
     * @return string
     */
    public function toZh(): string {
        if (ContributionMultiplierTitle::validateZh($this->zh))  {
            return $this->zh; /*string*/
        }
        throw new Exception('never get to this ContributionMultiplierTitle::zh');
    }

    /**
     * @param string
     * @return bool
     * @throws Exception
     */
    public static function validateZh(string $value): bool {
        if (!is_string($value)) {
            throw new Exception("Attribute Error:ContributionMultiplierTitle::zh");
        }
        return true;
    }

    /**
     * @throws Exception
     * @return string
     */
    public function getZh(): string {
        if (ContributionMultiplierTitle::validateZh($this->zh))  {
            return $this->zh;
        }
        throw new Exception('never get to getZh ContributionMultiplierTitle::zh');
    }

    /**
     * @return string
     */
    public static function sampleZh(): string {
        return 'ContributionMultiplierTitle::zh::38'; /*38:zh*/
    }

    /**
     * @throws Exception
     * @return bool
     */
    public function validate(): bool {
        return ContributionMultiplierTitle::validateDe($this->de)
        || ContributionMultiplierTitle::validateEn($this->en)
        || ContributionMultiplierTitle::validateEs($this->es)
        || ContributionMultiplierTitle::validateFr($this->fr)
        || ContributionMultiplierTitle::validateJa($this->ja)
        || ContributionMultiplierTitle::validateKo($this->ko)
        || ContributionMultiplierTitle::validateRu($this->ru)
        || ContributionMultiplierTitle::validateZh($this->zh);
    }

    /**
     * @return stdClass
     * @throws Exception
     */
    public function to(): stdClass  {
        $out = new stdClass();
        $out->{'de'} = $this->toDe();
        $out->{'en'} = $this->toEn();
        $out->{'es'} = $this->toEs();
        $out->{'fr'} = $this->toFr();
        $out->{'ja'} = $this->toJa();
        $out->{'ko'} = $this->toKo();
        $out->{'ru'} = $this->toRu();
        $out->{'zh'} = $this->toZh();
        return $out;
    }

    /**
     * @param stdClass $obj
     * @return ContributionMultiplierTitle
     * @throws Exception
     */
    public static function from(stdClass $obj): ContributionMultiplierTitle {
        return new ContributionMultiplierTitle(
         ContributionMultiplierTitle::fromDe($obj->{'de'})
        ,ContributionMultiplierTitle::fromEn($obj->{'en'})
        ,ContributionMultiplierTitle::fromEs($obj->{'es'})
        ,ContributionMultiplierTitle::fromFr($obj->{'fr'})
        ,ContributionMultiplierTitle::fromJa($obj->{'ja'})
        ,ContributionMultiplierTitle::fromKo($obj->{'ko'})
        ,ContributionMultiplierTitle::fromRu($obj->{'ru'})
        ,ContributionMultiplierTitle::fromZh($obj->{'zh'})
        );
    }

    /**
     * @return ContributionMultiplierTitle
     */
    public static function sample(): ContributionMultiplierTitle {
        return new ContributionMultiplierTitle(
         ContributionMultiplierTitle::sampleDe()
        ,ContributionMultiplierTitle::sampleEn()
        ,ContributionMultiplierTitle::sampleEs()
        ,ContributionMultiplierTitle::sampleFr()
        ,ContributionMultiplierTitle::sampleJa()
        ,ContributionMultiplierTitle::sampleKo()
        ,ContributionMultiplierTitle::sampleRu()
        ,ContributionMultiplierTitle::sampleZh()
        );
    }
}

// This is an autogenerated file:ContributionMultiplierUnsetDescription

class ContributionMultiplierUnsetDescription {
    private string $de; // json:de Required
    private string $en; // json:en Required
    private string $es; // json:es Required
    private string $fr; // json:fr Required
    private string $ja; // json:ja Required
    private string $ko; // json:ko Required
    private string $ru; // json:ru Required
    private string $zh; // json:zh Required

    /**
     * @param string $de
     * @param string $en
     * @param string $es
     * @param string $fr
     * @param string $ja
     * @param string $ko
     * @param string $ru
     * @param string $zh
     */
    public function __construct(string $de, string $en, string $es, string $fr, string $ja, string $ko, string $ru, string $zh) {
        $this->de = $de;
        $this->en = $en;
        $this->es = $es;
        $this->fr = $fr;
        $this->ja = $ja;
        $this->ko = $ko;
        $this->ru = $ru;
        $this->zh = $zh;
    }

    /**
     * @param string $value
     * @throws Exception
     * @return string
     */
    public static function fromDe(string $value): string {
        return $value; /*string*/
    }

    /**
     * @throws Exception
     * @return string
     */
    public function toDe(): string {
        if (ContributionMultiplierUnsetDescription::validateDe($this->de))  {
            return $this->de; /*string*/
        }
        throw new Exception('never get to this ContributionMultiplierUnsetDescription::de');
    }

    /**
     * @param string
     * @return bool
     * @throws Exception
     */
    public static function validateDe(string $value): bool {
        if (!is_string($value)) {
            throw new Exception("Attribute Error:ContributionMultiplierUnsetDescription::de");
        }
        return true;
    }

    /**
     * @throws Exception
     * @return string
     */
    public function getDe(): string {
        if (ContributionMultiplierUnsetDescription::validateDe($this->de))  {
            return $this->de;
        }
        throw new Exception('never get to getDe ContributionMultiplierUnsetDescription::de');
    }

    /**
     * @return string
     */
    public static function sampleDe(): string {
        return 'ContributionMultiplierUnsetDescription::de::31'; /*31:de*/
    }

    /**
     * @param string $value
     * @throws Exception
     * @return string
     */
    public static function fromEn(string $value): string {
        return $value; /*string*/
    }

    /**
     * @throws Exception
     * @return string
     */
    public function toEn(): string {
        if (ContributionMultiplierUnsetDescription::validateEn($this->en))  {
            return $this->en; /*string*/
        }
        throw new Exception('never get to this ContributionMultiplierUnsetDescription::en');
    }

    /**
     * @param string
     * @return bool
     * @throws Exception
     */
    public static function validateEn(string $value): bool {
        if (!is_string($value)) {
            throw new Exception("Attribute Error:ContributionMultiplierUnsetDescription::en");
        }
        return true;
    }

    /**
     * @throws Exception
     * @return string
     */
    public function getEn(): string {
        if (ContributionMultiplierUnsetDescription::validateEn($this->en))  {
            return $this->en;
        }
        throw new Exception('never get to getEn ContributionMultiplierUnsetDescription::en');
    }

    /**
     * @return string
     */
    public static function sampleEn(): string {
        return 'ContributionMultiplierUnsetDescription::en::32'; /*32:en*/
    }

    /**
     * @param string $value
     * @throws Exception
     * @return string
     */
    public static function fromEs(string $value): string {
        return $value; /*string*/
    }

    /**
     * @throws Exception
     * @return string
     */
    public function toEs(): string {
        if (ContributionMultiplierUnsetDescription::validateEs($this->es))  {
            return $this->es; /*string*/
        }
        throw new Exception('never get to this ContributionMultiplierUnsetDescription::es');
    }

    /**
     * @param string
     * @return bool
     * @throws Exception
     */
    public static function validateEs(string $value): bool {
        if (!is_string($value)) {
            throw new Exception("Attribute Error:ContributionMultiplierUnsetDescription::es");
        }
        return true;
    }

    /**
     * @throws Exception
     * @return string
     */
    public function getEs(): string {
        if (ContributionMultiplierUnsetDescription::validateEs($this->es))  {
            return $this->es;
        }
        throw new Exception('never get to getEs ContributionMultiplierUnsetDescription::es');
    }

    /**
     * @return string
     */
    public static function sampleEs(): string {
        return 'ContributionMultiplierUnsetDescription::es::33'; /*33:es*/
    }

    /**
     * @param string $value
     * @throws Exception
     * @return string
     */
    public static function fromFr(string $value): string {
        return $value; /*string*/
    }

    /**
     * @throws Exception
     * @return string
     */
    public function toFr(): string {
        if (ContributionMultiplierUnsetDescription::validateFr($this->fr))  {
            return $this->fr; /*string*/
        }
        throw new Exception('never get to this ContributionMultiplierUnsetDescription::fr');
    }

    /**
     * @param string
     * @return bool
     * @throws Exception
     */
    public static function validateFr(string $value): bool {
        if (!is_string($value)) {
            throw new Exception("Attribute Error:ContributionMultiplierUnsetDescription::fr");
        }
        return true;
    }

    /**
     * @throws Exception
     * @return string
     */
    public function getFr(): string {
        if (ContributionMultiplierUnsetDescription::validateFr($this->fr))  {
            return $this->fr;
        }
        throw new Exception('never get to getFr ContributionMultiplierUnsetDescription::fr');
    }

    /**
     * @return string
     */
    public static function sampleFr(): string {
        return 'ContributionMultiplierUnsetDescription::fr::34'; /*34:fr*/
    }

    /**
     * @param string $value
     * @throws Exception
     * @return string
     */
    public static function fromJa(string $value): string {
        return $value; /*string*/
    }

    /**
     * @throws Exception
     * @return string
     */
    public function toJa(): string {
        if (ContributionMultiplierUnsetDescription::validateJa($this->ja))  {
            return $this->ja; /*string*/
        }
        throw new Exception('never get to this ContributionMultiplierUnsetDescription::ja');
    }

    /**
     * @param string
     * @return bool
     * @throws Exception
     */
    public static function validateJa(string $value): bool {
        if (!is_string($value)) {
            throw new Exception("Attribute Error:ContributionMultiplierUnsetDescription::ja");
        }
        return true;
    }

    /**
     * @throws Exception
     * @return string
     */
    public function getJa(): string {
        if (ContributionMultiplierUnsetDescription::validateJa($this->ja))  {
            return $this->ja;
        }
        throw new Exception('never get to getJa ContributionMultiplierUnsetDescription::ja');
    }

    /**
     * @return string
     */
    public static function sampleJa(): string {
        return 'ContributionMultiplierUnsetDescription::ja::35'; /*35:ja*/
    }

    /**
     * @param string $value
     * @throws Exception
     * @return string
     */
    public static function fromKo(string $value): string {
        return $value; /*string*/
    }

    /**
     * @throws Exception
     * @return string
     */
    public function toKo(): string {
        if (ContributionMultiplierUnsetDescription::validateKo($this->ko))  {
            return $this->ko; /*string*/
        }
        throw new Exception('never get to this ContributionMultiplierUnsetDescription::ko');
    }

    /**
     * @param string
     * @return bool
     * @throws Exception
     */
    public static function validateKo(string $value): bool {
        if (!is_string($value)) {
            throw new Exception("Attribute Error:ContributionMultiplierUnsetDescription::ko");
        }
        return true;
    }

    /**
     * @throws Exception
     * @return string
     */
    public function getKo(): string {
        if (ContributionMultiplierUnsetDescription::validateKo($this->ko))  {
            return $this->ko;
        }
        throw new Exception('never get to getKo ContributionMultiplierUnsetDescription::ko');
    }

    /**
     * @return string
     */
    public static function sampleKo(): string {
        return 'ContributionMultiplierUnsetDescription::ko::36'; /*36:ko*/
    }

    /**
     * @param string $value
     * @throws Exception
     * @return string
     */
    public static function fromRu(string $value): string {
        return $value; /*string*/
    }

    /**
     * @throws Exception
     * @return string
     */
    public function toRu(): string {
        if (ContributionMultiplierUnsetDescription::validateRu($this->ru))  {
            return $this->ru; /*string*/
        }
        throw new Exception('never get to this ContributionMultiplierUnsetDescription::ru');
    }

    /**
     * @param string
     * @return bool
     * @throws Exception
     */
    public static function validateRu(string $value): bool {
        if (!is_string($value)) {
            throw new Exception("Attribute Error:ContributionMultiplierUnsetDescription::ru");
        }
        return true;
    }

    /**
     * @throws Exception
     * @return string
     */
    public function getRu(): string {
        if (ContributionMultiplierUnsetDescription::validateRu($this->ru))  {
            return $this->ru;
        }
        throw new Exception('never get to getRu ContributionMultiplierUnsetDescription::ru');
    }

    /**
     * @return string
     */
    public static function sampleRu(): string {
        return 'ContributionMultiplierUnsetDescription::ru::37'; /*37:ru*/
    }

    /**
     * @param string $value
     * @throws Exception
     * @return string
     */
    public static function fromZh(string $value): string {
        return $value; /*string*/
    }

    /**
     * @throws Exception
     * @return string
     */
    public function toZh(): string {
        if (ContributionMultiplierUnsetDescription::validateZh($this->zh))  {
            return $this->zh; /*string*/
        }
        throw new Exception('never get to this ContributionMultiplierUnsetDescription::zh');
    }

    /**
     * @param string
     * @return bool
     * @throws Exception
     */
    public static function validateZh(string $value): bool {
        if (!is_string($value)) {
            throw new Exception("Attribute Error:ContributionMultiplierUnsetDescription::zh");
        }
        return true;
    }

    /**
     * @throws Exception
     * @return string
     */
    public function getZh(): string {
        if (ContributionMultiplierUnsetDescription::validateZh($this->zh))  {
            return $this->zh;
        }
        throw new Exception('never get to getZh ContributionMultiplierUnsetDescription::zh');
    }

    /**
     * @return string
     */
    public static function sampleZh(): string {
        return 'ContributionMultiplierUnsetDescription::zh::38'; /*38:zh*/
    }

    /**
     * @throws Exception
     * @return bool
     */
    public function validate(): bool {
        return ContributionMultiplierUnsetDescription::validateDe($this->de)
        || ContributionMultiplierUnsetDescription::validateEn($this->en)
        || ContributionMultiplierUnsetDescription::validateEs($this->es)
        || ContributionMultiplierUnsetDescription::validateFr($this->fr)
        || ContributionMultiplierUnsetDescription::validateJa($this->ja)
        || ContributionMultiplierUnsetDescription::validateKo($this->ko)
        || ContributionMultiplierUnsetDescription::validateRu($this->ru)
        || ContributionMultiplierUnsetDescription::validateZh($this->zh);
    }

    /**
     * @return stdClass
     * @throws Exception
     */
    public function to(): stdClass  {
        $out = new stdClass();
        $out->{'de'} = $this->toDe();
        $out->{'en'} = $this->toEn();
        $out->{'es'} = $this->toEs();
        $out->{'fr'} = $this->toFr();
        $out->{'ja'} = $this->toJa();
        $out->{'ko'} = $this->toKo();
        $out->{'ru'} = $this->toRu();
        $out->{'zh'} = $this->toZh();
        return $out;
    }

    /**
     * @param stdClass $obj
     * @return ContributionMultiplierUnsetDescription
     * @throws Exception
     */
    public static function from(stdClass $obj): ContributionMultiplierUnsetDescription {
        return new ContributionMultiplierUnsetDescription(
         ContributionMultiplierUnsetDescription::fromDe($obj->{'de'})
        ,ContributionMultiplierUnsetDescription::fromEn($obj->{'en'})
        ,ContributionMultiplierUnsetDescription::fromEs($obj->{'es'})
        ,ContributionMultiplierUnsetDescription::fromFr($obj->{'fr'})
        ,ContributionMultiplierUnsetDescription::fromJa($obj->{'ja'})
        ,ContributionMultiplierUnsetDescription::fromKo($obj->{'ko'})
        ,ContributionMultiplierUnsetDescription::fromRu($obj->{'ru'})
        ,ContributionMultiplierUnsetDescription::fromZh($obj->{'zh'})
        );
    }

    /**
     * @return ContributionMultiplierUnsetDescription
     */
    public static function sample(): ContributionMultiplierUnsetDescription {
        return new ContributionMultiplierUnsetDescription(
         ContributionMultiplierUnsetDescription::sampleDe()
        ,ContributionMultiplierUnsetDescription::sampleEn()
        ,ContributionMultiplierUnsetDescription::sampleEs()
        ,ContributionMultiplierUnsetDescription::sampleFr()
        ,ContributionMultiplierUnsetDescription::sampleJa()
        ,ContributionMultiplierUnsetDescription::sampleKo()
        ,ContributionMultiplierUnsetDescription::sampleRu()
        ,ContributionMultiplierUnsetDescription::sampleZh()
        );
    }
}

// This is an autogenerated file:ValueDescription

class ValueDescription {
    private string $de; // json:de Required
    private string $en; // json:en Required
    private string $es; // json:es Required
    private string $fr; // json:fr Required
    private string $ja; // json:ja Required
    private string $ko; // json:ko Required
    private string $ru; // json:ru Required
    private string $zh; // json:zh Required

    /**
     * @param string $de
     * @param string $en
     * @param string $es
     * @param string $fr
     * @param string $ja
     * @param string $ko
     * @param string $ru
     * @param string $zh
     */
    public function __construct(string $de, string $en, string $es, string $fr, string $ja, string $ko, string $ru, string $zh) {
        $this->de = $de;
        $this->en = $en;
        $this->es = $es;
        $this->fr = $fr;
        $this->ja = $ja;
        $this->ko = $ko;
        $this->ru = $ru;
        $this->zh = $zh;
    }

    /**
     * @param string $value
     * @throws Exception
     * @return string
     */
    public static function fromDe(string $value): string {
        return $value; /*string*/
    }

    /**
     * @throws Exception
     * @return string
     */
    public function toDe(): string {
        if (ValueDescription::validateDe($this->de))  {
            return $this->de; /*string*/
        }
        throw new Exception('never get to this ValueDescription::de');
    }

    /**
     * @param string
     * @return bool
     * @throws Exception
     */
    public static function validateDe(string $value): bool {
        if (!is_string($value)) {
            throw new Exception("Attribute Error:ValueDescription::de");
        }
        return true;
    }

    /**
     * @throws Exception
     * @return string
     */
    public function getDe(): string {
        if (ValueDescription::validateDe($this->de))  {
            return $this->de;
        }
        throw new Exception('never get to getDe ValueDescription::de');
    }

    /**
     * @return string
     */
    public static function sampleDe(): string {
        return 'ValueDescription::de::31'; /*31:de*/
    }

    /**
     * @param string $value
     * @throws Exception
     * @return string
     */
    public static function fromEn(string $value): string {
        return $value; /*string*/
    }

    /**
     * @throws Exception
     * @return string
     */
    public function toEn(): string {
        if (ValueDescription::validateEn($this->en))  {
            return $this->en; /*string*/
        }
        throw new Exception('never get to this ValueDescription::en');
    }

    /**
     * @param string
     * @return bool
     * @throws Exception
     */
    public static function validateEn(string $value): bool {
        if (!is_string($value)) {
            throw new Exception("Attribute Error:ValueDescription::en");
        }
        return true;
    }

    /**
     * @throws Exception
     * @return string
     */
    public function getEn(): string {
        if (ValueDescription::validateEn($this->en))  {
            return $this->en;
        }
        throw new Exception('never get to getEn ValueDescription::en');
    }

    /**
     * @return string
     */
    public static function sampleEn(): string {
        return 'ValueDescription::en::32'; /*32:en*/
    }

    /**
     * @param string $value
     * @throws Exception
     * @return string
     */
    public static function fromEs(string $value): string {
        return $value; /*string*/
    }

    /**
     * @throws Exception
     * @return string
     */
    public function toEs(): string {
        if (ValueDescription::validateEs($this->es))  {
            return $this->es; /*string*/
        }
        throw new Exception('never get to this ValueDescription::es');
    }

    /**
     * @param string
     * @return bool
     * @throws Exception
     */
    public static function validateEs(string $value): bool {
        if (!is_string($value)) {
            throw new Exception("Attribute Error:ValueDescription::es");
        }
        return true;
    }

    /**
     * @throws Exception
     * @return string
     */
    public function getEs(): string {
        if (ValueDescription::validateEs($this->es))  {
            return $this->es;
        }
        throw new Exception('never get to getEs ValueDescription::es');
    }

    /**
     * @return string
     */
    public static function sampleEs(): string {
        return 'ValueDescription::es::33'; /*33:es*/
    }

    /**
     * @param string $value
     * @throws Exception
     * @return string
     */
    public static function fromFr(string $value): string {
        return $value; /*string*/
    }

    /**
     * @throws Exception
     * @return string
     */
    public function toFr(): string {
        if (ValueDescription::validateFr($this->fr))  {
            return $this->fr; /*string*/
        }
        throw new Exception('never get to this ValueDescription::fr');
    }

    /**
     * @param string
     * @return bool
     * @throws Exception
     */
    public static function validateFr(string $value): bool {
        if (!is_string($value)) {
            throw new Exception("Attribute Error:ValueDescription::fr");
        }
        return true;
    }

    /**
     * @throws Exception
     * @return string
     */
    public function getFr(): string {
        if (ValueDescription::validateFr($this->fr))  {
            return $this->fr;
        }
        throw new Exception('never get to getFr ValueDescription::fr');
    }

    /**
     * @return string
     */
    public static function sampleFr(): string {
        return 'ValueDescription::fr::34'; /*34:fr*/
    }

    /**
     * @param string $value
     * @throws Exception
     * @return string
     */
    public static function fromJa(string $value): string {
        return $value; /*string*/
    }

    /**
     * @throws Exception
     * @return string
     */
    public function toJa(): string {
        if (ValueDescription::validateJa($this->ja))  {
            return $this->ja; /*string*/
        }
        throw new Exception('never get to this ValueDescription::ja');
    }

    /**
     * @param string
     * @return bool
     * @throws Exception
     */
    public static function validateJa(string $value): bool {
        if (!is_string($value)) {
            throw new Exception("Attribute Error:ValueDescription::ja");
        }
        return true;
    }

    /**
     * @throws Exception
     * @return string
     */
    public function getJa(): string {
        if (ValueDescription::validateJa($this->ja))  {
            return $this->ja;
        }
        throw new Exception('never get to getJa ValueDescription::ja');
    }

    /**
     * @return string
     */
    public static function sampleJa(): string {
        return 'ValueDescription::ja::35'; /*35:ja*/
    }

    /**
     * @param string $value
     * @throws Exception
     * @return string
     */
    public static function fromKo(string $value): string {
        return $value; /*string*/
    }

    /**
     * @throws Exception
     * @return string
     */
    public function toKo(): string {
        if (ValueDescription::validateKo($this->ko))  {
            return $this->ko; /*string*/
        }
        throw new Exception('never get to this ValueDescription::ko');
    }

    /**
     * @param string
     * @return bool
     * @throws Exception
     */
    public static function validateKo(string $value): bool {
        if (!is_string($value)) {
            throw new Exception("Attribute Error:ValueDescription::ko");
        }
        return true;
    }

    /**
     * @throws Exception
     * @return string
     */
    public function getKo(): string {
        if (ValueDescription::validateKo($this->ko))  {
            return $this->ko;
        }
        throw new Exception('never get to getKo ValueDescription::ko');
    }

    /**
     * @return string
     */
    public static function sampleKo(): string {
        return 'ValueDescription::ko::36'; /*36:ko*/
    }

    /**
     * @param string $value
     * @throws Exception
     * @return string
     */
    public static function fromRu(string $value): string {
        return $value; /*string*/
    }

    /**
     * @throws Exception
     * @return string
     */
    public function toRu(): string {
        if (ValueDescription::validateRu($this->ru))  {
            return $this->ru; /*string*/
        }
        throw new Exception('never get to this ValueDescription::ru');
    }

    /**
     * @param string
     * @return bool
     * @throws Exception
     */
    public static function validateRu(string $value): bool {
        if (!is_string($value)) {
            throw new Exception("Attribute Error:ValueDescription::ru");
        }
        return true;
    }

    /**
     * @throws Exception
     * @return string
     */
    public function getRu(): string {
        if (ValueDescription::validateRu($this->ru))  {
            return $this->ru;
        }
        throw new Exception('never get to getRu ValueDescription::ru');
    }

    /**
     * @return string
     */
    public static function sampleRu(): string {
        return 'ValueDescription::ru::37'; /*37:ru*/
    }

    /**
     * @param string $value
     * @throws Exception
     * @return string
     */
    public static function fromZh(string $value): string {
        return $value; /*string*/
    }

    /**
     * @throws Exception
     * @return string
     */
    public function toZh(): string {
        if (ValueDescription::validateZh($this->zh))  {
            return $this->zh; /*string*/
        }
        throw new Exception('never get to this ValueDescription::zh');
    }

    /**
     * @param string
     * @return bool
     * @throws Exception
     */
    public static function validateZh(string $value): bool {
        if (!is_string($value)) {
            throw new Exception("Attribute Error:ValueDescription::zh");
        }
        return true;
    }

    /**
     * @throws Exception
     * @return string
     */
    public function getZh(): string {
        if (ValueDescription::validateZh($this->zh))  {
            return $this->zh;
        }
        throw new Exception('never get to getZh ValueDescription::zh');
    }

    /**
     * @return string
     */
    public static function sampleZh(): string {
        return 'ValueDescription::zh::38'; /*38:zh*/
    }

    /**
     * @throws Exception
     * @return bool
     */
    public function validate(): bool {
        return ValueDescription::validateDe($this->de)
        || ValueDescription::validateEn($this->en)
        || ValueDescription::validateEs($this->es)
        || ValueDescription::validateFr($this->fr)
        || ValueDescription::validateJa($this->ja)
        || ValueDescription::validateKo($this->ko)
        || ValueDescription::validateRu($this->ru)
        || ValueDescription::validateZh($this->zh);
    }

    /**
     * @return stdClass
     * @throws Exception
     */
    public function to(): stdClass  {
        $out = new stdClass();
        $out->{'de'} = $this->toDe();
        $out->{'en'} = $this->toEn();
        $out->{'es'} = $this->toEs();
        $out->{'fr'} = $this->toFr();
        $out->{'ja'} = $this->toJa();
        $out->{'ko'} = $this->toKo();
        $out->{'ru'} = $this->toRu();
        $out->{'zh'} = $this->toZh();
        return $out;
    }

    /**
     * @param stdClass $obj
     * @return ValueDescription
     * @throws Exception
     */
    public static function from(stdClass $obj): ValueDescription {
        return new ValueDescription(
         ValueDescription::fromDe($obj->{'de'})
        ,ValueDescription::fromEn($obj->{'en'})
        ,ValueDescription::fromEs($obj->{'es'})
        ,ValueDescription::fromFr($obj->{'fr'})
        ,ValueDescription::fromJa($obj->{'ja'})
        ,ValueDescription::fromKo($obj->{'ko'})
        ,ValueDescription::fromRu($obj->{'ru'})
        ,ValueDescription::fromZh($obj->{'zh'})
        );
    }

    /**
     * @return ValueDescription
     */
    public static function sample(): ValueDescription {
        return new ValueDescription(
         ValueDescription::sampleDe()
        ,ValueDescription::sampleEn()
        ,ValueDescription::sampleEs()
        ,ValueDescription::sampleFr()
        ,ValueDescription::sampleJa()
        ,ValueDescription::sampleKo()
        ,ValueDescription::sampleRu()
        ,ValueDescription::sampleZh()
        );
    }
}

// This is an autogenerated file:Key

class Key {
    public static Key $BOOST_SHIELD;
    public static Key $CAPTURE_Fw_COMPLEX;
    public static Key $DAMAGE_SHIP;
    public static Key $DEFEND_Fw_COMPLEX;
    public static Key $DELIVER_ITEM;
    public static Key $KILL_CAPSULEER;
    public static Key $KILL_Npc;
    public static Key $MINE_ORE;
    public static Key $REPAIR_ARMOR;
    public static Key $SHIP_INSURANCE;
    public static function init() {
        Key::$BOOST_SHIELD = new Key('BoostShield');
        Key::$CAPTURE_Fw_COMPLEX = new Key('CaptureFWComplex');
        Key::$DAMAGE_SHIP = new Key('DamageShip');
        Key::$DEFEND_Fw_COMPLEX = new Key('DefendFWComplex');
        Key::$DELIVER_ITEM = new Key('DeliverItem');
        Key::$KILL_CAPSULEER = new Key('KillCapsuleer');
        Key::$KILL_Npc = new Key('KillNPC');
        Key::$MINE_ORE = new Key('MineOre');
        Key::$REPAIR_ARMOR = new Key('RepairArmor');
        Key::$SHIP_INSURANCE = new Key('ShipInsurance');
    }
    private string $enum;
    public function __construct(string $enum) {
        $this->enum = $enum;
    }

    /**
     * @param Key
     * @return string
     * @throws Exception
     */
    public static function to(Key $obj): string {
        switch ($obj->enum) {
            case Key::$BOOST_SHIELD->enum: return 'BoostShield';
            case Key::$CAPTURE_Fw_COMPLEX->enum: return 'CaptureFWComplex';
            case Key::$DAMAGE_SHIP->enum: return 'DamageShip';
            case Key::$DEFEND_Fw_COMPLEX->enum: return 'DefendFWComplex';
            case Key::$DELIVER_ITEM->enum: return 'DeliverItem';
            case Key::$KILL_CAPSULEER->enum: return 'KillCapsuleer';
            case Key::$KILL_Npc->enum: return 'KillNPC';
            case Key::$MINE_ORE->enum: return 'MineOre';
            case Key::$REPAIR_ARMOR->enum: return 'RepairArmor';
            case Key::$SHIP_INSURANCE->enum: return 'ShipInsurance';
        }
        throw new Exception('the give value is not an enum-value.');
    }

    /**
     * @param mixed
     * @return Key
     * @throws Exception
     */
    public static function from($obj): Key {
        switch ($obj) {
            case 'BoostShield': return Key::$BOOST_SHIELD;
            case 'CaptureFWComplex': return Key::$CAPTURE_Fw_COMPLEX;
            case 'DamageShip': return Key::$DAMAGE_SHIP;
            case 'DefendFWComplex': return Key::$DEFEND_Fw_COMPLEX;
            case 'DeliverItem': return Key::$DELIVER_ITEM;
            case 'KillCapsuleer': return Key::$KILL_CAPSULEER;
            case 'KillNPC': return Key::$KILL_Npc;
            case 'MineOre': return Key::$MINE_ORE;
            case 'RepairArmor': return Key::$REPAIR_ARMOR;
            case 'ShipInsurance': return Key::$SHIP_INSURANCE;
        }
        throw new Exception("Cannot deserialize Key");
    }

    /**
     * @return Key
     */
    public static function sample(): Key {
        return Key::$BOOST_SHIELD;
    }
}
Key::init();

// This is an autogenerated file:MaxContributionsPerParticipant

class MaxContributionsPerParticipant {
    private MaxContributionsPerParticipantDescription $description; // json:description Required
    private MaxContributionsPerParticipantIconId $iconId; // json:iconID Required
    private MaxContributionsPerParticipantTitle $title; // json:title Required
    private MaxContributionsPerParticipantUnsetDescription $unsetDescription; // json:unsetDescription Required

    /**
     * @param MaxContributionsPerParticipantDescription $description
     * @param MaxContributionsPerParticipantIconId $iconId
     * @param MaxContributionsPerParticipantTitle $title
     * @param MaxContributionsPerParticipantUnsetDescription $unsetDescription
     */
    public function __construct(MaxContributionsPerParticipantDescription $description, MaxContributionsPerParticipantIconId $iconId, MaxContributionsPerParticipantTitle $title, MaxContributionsPerParticipantUnsetDescription $unsetDescription) {
        $this->description = $description;
        $this->iconId = $iconId;
        $this->title = $title;
        $this->unsetDescription = $unsetDescription;
    }

    /**
     * @param stdClass $value
     * @throws Exception
     * @return MaxContributionsPerParticipantDescription
     */
    public static function fromDescription(stdClass $value): MaxContributionsPerParticipantDescription {
        return MaxContributionsPerParticipantDescription::from($value); /*class*/
    }

    /**
     * @throws Exception
     * @return stdClass
     */
    public function toDescription(): stdClass {
        if (MaxContributionsPerParticipant::validateDescription($this->description))  {
            return $this->description->to(); /*class*/
        }
        throw new Exception('never get to this MaxContributionsPerParticipant::description');
    }

    /**
     * @param MaxContributionsPerParticipantDescription
     * @return bool
     * @throws Exception
     */
    public static function validateDescription(MaxContributionsPerParticipantDescription $value): bool {
        $value->validate();
        return true;
    }

    /**
     * @throws Exception
     * @return MaxContributionsPerParticipantDescription
     */
    public function getDescription(): MaxContributionsPerParticipantDescription {
        if (MaxContributionsPerParticipant::validateDescription($this->description))  {
            return $this->description;
        }
        throw new Exception('never get to getDescription MaxContributionsPerParticipant::description');
    }

    /**
     * @return MaxContributionsPerParticipantDescription
     */
    public static function sampleDescription(): MaxContributionsPerParticipantDescription {
        return MaxContributionsPerParticipantDescription::sample(); /*31:description*/
    }

    /**
     * @param string $value
     * @throws Exception
     * @return MaxContributionsPerParticipantIconId
     */
    public static function fromIconId(string $value): MaxContributionsPerParticipantIconId {
        return MaxContributionsPerParticipantIconId::from($value); /*enum*/
    }

    /**
     * @throws Exception
     * @return string
     */
    public function toIconId(): string {
        if (MaxContributionsPerParticipant::validateIconId($this->iconId))  {
            return MaxContributionsPerParticipantIconId::to($this->iconId); /*enum*/
        }
        throw new Exception('never get to this MaxContributionsPerParticipant::iconId');
    }

    /**
     * @param MaxContributionsPerParticipantIconId
     * @return bool
     * @throws Exception
     */
    public static function validateIconId(MaxContributionsPerParticipantIconId $value): bool {
        MaxContributionsPerParticipantIconId::to($value);
        return true;
    }

    /**
     * @throws Exception
     * @return MaxContributionsPerParticipantIconId
     */
    public function getIconId(): MaxContributionsPerParticipantIconId {
        if (MaxContributionsPerParticipant::validateIconId($this->iconId))  {
            return $this->iconId;
        }
        throw new Exception('never get to getIconId MaxContributionsPerParticipant::iconId');
    }

    /**
     * @return MaxContributionsPerParticipantIconId
     */
    public static function sampleIconId(): MaxContributionsPerParticipantIconId {
        return MaxContributionsPerParticipantIconId::sample(); /*enum*/
    }

    /**
     * @param stdClass $value
     * @throws Exception
     * @return MaxContributionsPerParticipantTitle
     */
    public static function fromTitle(stdClass $value): MaxContributionsPerParticipantTitle {
        return MaxContributionsPerParticipantTitle::from($value); /*class*/
    }

    /**
     * @throws Exception
     * @return stdClass
     */
    public function toTitle(): stdClass {
        if (MaxContributionsPerParticipant::validateTitle($this->title))  {
            return $this->title->to(); /*class*/
        }
        throw new Exception('never get to this MaxContributionsPerParticipant::title');
    }

    /**
     * @param MaxContributionsPerParticipantTitle
     * @return bool
     * @throws Exception
     */
    public static function validateTitle(MaxContributionsPerParticipantTitle $value): bool {
        $value->validate();
        return true;
    }

    /**
     * @throws Exception
     * @return MaxContributionsPerParticipantTitle
     */
    public function getTitle(): MaxContributionsPerParticipantTitle {
        if (MaxContributionsPerParticipant::validateTitle($this->title))  {
            return $this->title;
        }
        throw new Exception('never get to getTitle MaxContributionsPerParticipant::title');
    }

    /**
     * @return MaxContributionsPerParticipantTitle
     */
    public static function sampleTitle(): MaxContributionsPerParticipantTitle {
        return MaxContributionsPerParticipantTitle::sample(); /*33:title*/
    }

    /**
     * @param stdClass $value
     * @throws Exception
     * @return MaxContributionsPerParticipantUnsetDescription
     */
    public static function fromUnsetDescription(stdClass $value): MaxContributionsPerParticipantUnsetDescription {
        return MaxContributionsPerParticipantUnsetDescription::from($value); /*class*/
    }

    /**
     * @throws Exception
     * @return stdClass
     */
    public function toUnsetDescription(): stdClass {
        if (MaxContributionsPerParticipant::validateUnsetDescription($this->unsetDescription))  {
            return $this->unsetDescription->to(); /*class*/
        }
        throw new Exception('never get to this MaxContributionsPerParticipant::unsetDescription');
    }

    /**
     * @param MaxContributionsPerParticipantUnsetDescription
     * @return bool
     * @throws Exception
     */
    public static function validateUnsetDescription(MaxContributionsPerParticipantUnsetDescription $value): bool {
        $value->validate();
        return true;
    }

    /**
     * @throws Exception
     * @return MaxContributionsPerParticipantUnsetDescription
     */
    public function getUnsetDescription(): MaxContributionsPerParticipantUnsetDescription {
        if (MaxContributionsPerParticipant::validateUnsetDescription($this->unsetDescription))  {
            return $this->unsetDescription;
        }
        throw new Exception('never get to getUnsetDescription MaxContributionsPerParticipant::unsetDescription');
    }

    /**
     * @return MaxContributionsPerParticipantUnsetDescription
     */
    public static function sampleUnsetDescription(): MaxContributionsPerParticipantUnsetDescription {
        return MaxContributionsPerParticipantUnsetDescription::sample(); /*34:unsetDescription*/
    }

    /**
     * @throws Exception
     * @return bool
     */
    public function validate(): bool {
        return MaxContributionsPerParticipant::validateDescription($this->description)
        || MaxContributionsPerParticipant::validateIconId($this->iconId)
        || MaxContributionsPerParticipant::validateTitle($this->title)
        || MaxContributionsPerParticipant::validateUnsetDescription($this->unsetDescription);
    }

    /**
     * @return stdClass
     * @throws Exception
     */
    public function to(): stdClass  {
        $out = new stdClass();
        $out->{'description'} = $this->toDescription();
        $out->{'iconID'} = $this->toIconId();
        $out->{'title'} = $this->toTitle();
        $out->{'unsetDescription'} = $this->toUnsetDescription();
        return $out;
    }

    /**
     * @param stdClass $obj
     * @return MaxContributionsPerParticipant
     * @throws Exception
     */
    public static function from(stdClass $obj): MaxContributionsPerParticipant {
        return new MaxContributionsPerParticipant(
         MaxContributionsPerParticipant::fromDescription($obj->{'description'})
        ,MaxContributionsPerParticipant::fromIconId($obj->{'iconID'})
        ,MaxContributionsPerParticipant::fromTitle($obj->{'title'})
        ,MaxContributionsPerParticipant::fromUnsetDescription($obj->{'unsetDescription'})
        );
    }

    /**
     * @return MaxContributionsPerParticipant
     */
    public static function sample(): MaxContributionsPerParticipant {
        return new MaxContributionsPerParticipant(
         MaxContributionsPerParticipant::sampleDescription()
        ,MaxContributionsPerParticipant::sampleIconId()
        ,MaxContributionsPerParticipant::sampleTitle()
        ,MaxContributionsPerParticipant::sampleUnsetDescription()
        );
    }
}

// This is an autogenerated file:MaxContributionsPerParticipantDescription

class MaxContributionsPerParticipantDescription {
    private string $de; // json:de Required
    private string $en; // json:en Required
    private string $es; // json:es Required
    private string $fr; // json:fr Required
    private string $ja; // json:ja Required
    private string $ko; // json:ko Required
    private string $ru; // json:ru Required
    private string $zh; // json:zh Required

    /**
     * @param string $de
     * @param string $en
     * @param string $es
     * @param string $fr
     * @param string $ja
     * @param string $ko
     * @param string $ru
     * @param string $zh
     */
    public function __construct(string $de, string $en, string $es, string $fr, string $ja, string $ko, string $ru, string $zh) {
        $this->de = $de;
        $this->en = $en;
        $this->es = $es;
        $this->fr = $fr;
        $this->ja = $ja;
        $this->ko = $ko;
        $this->ru = $ru;
        $this->zh = $zh;
    }

    /**
     * @param string $value
     * @throws Exception
     * @return string
     */
    public static function fromDe(string $value): string {
        return $value; /*string*/
    }

    /**
     * @throws Exception
     * @return string
     */
    public function toDe(): string {
        if (MaxContributionsPerParticipantDescription::validateDe($this->de))  {
            return $this->de; /*string*/
        }
        throw new Exception('never get to this MaxContributionsPerParticipantDescription::de');
    }

    /**
     * @param string
     * @return bool
     * @throws Exception
     */
    public static function validateDe(string $value): bool {
        if (!is_string($value)) {
            throw new Exception("Attribute Error:MaxContributionsPerParticipantDescription::de");
        }
        return true;
    }

    /**
     * @throws Exception
     * @return string
     */
    public function getDe(): string {
        if (MaxContributionsPerParticipantDescription::validateDe($this->de))  {
            return $this->de;
        }
        throw new Exception('never get to getDe MaxContributionsPerParticipantDescription::de');
    }

    /**
     * @return string
     */
    public static function sampleDe(): string {
        return 'MaxContributionsPerParticipantDescription::de::31'; /*31:de*/
    }

    /**
     * @param string $value
     * @throws Exception
     * @return string
     */
    public static function fromEn(string $value): string {
        return $value; /*string*/
    }

    /**
     * @throws Exception
     * @return string
     */
    public function toEn(): string {
        if (MaxContributionsPerParticipantDescription::validateEn($this->en))  {
            return $this->en; /*string*/
        }
        throw new Exception('never get to this MaxContributionsPerParticipantDescription::en');
    }

    /**
     * @param string
     * @return bool
     * @throws Exception
     */
    public static function validateEn(string $value): bool {
        if (!is_string($value)) {
            throw new Exception("Attribute Error:MaxContributionsPerParticipantDescription::en");
        }
        return true;
    }

    /**
     * @throws Exception
     * @return string
     */
    public function getEn(): string {
        if (MaxContributionsPerParticipantDescription::validateEn($this->en))  {
            return $this->en;
        }
        throw new Exception('never get to getEn MaxContributionsPerParticipantDescription::en');
    }

    /**
     * @return string
     */
    public static function sampleEn(): string {
        return 'MaxContributionsPerParticipantDescription::en::32'; /*32:en*/
    }

    /**
     * @param string $value
     * @throws Exception
     * @return string
     */
    public static function fromEs(string $value): string {
        return $value; /*string*/
    }

    /**
     * @throws Exception
     * @return string
     */
    public function toEs(): string {
        if (MaxContributionsPerParticipantDescription::validateEs($this->es))  {
            return $this->es; /*string*/
        }
        throw new Exception('never get to this MaxContributionsPerParticipantDescription::es');
    }

    /**
     * @param string
     * @return bool
     * @throws Exception
     */
    public static function validateEs(string $value): bool {
        if (!is_string($value)) {
            throw new Exception("Attribute Error:MaxContributionsPerParticipantDescription::es");
        }
        return true;
    }

    /**
     * @throws Exception
     * @return string
     */
    public function getEs(): string {
        if (MaxContributionsPerParticipantDescription::validateEs($this->es))  {
            return $this->es;
        }
        throw new Exception('never get to getEs MaxContributionsPerParticipantDescription::es');
    }

    /**
     * @return string
     */
    public static function sampleEs(): string {
        return 'MaxContributionsPerParticipantDescription::es::33'; /*33:es*/
    }

    /**
     * @param string $value
     * @throws Exception
     * @return string
     */
    public static function fromFr(string $value): string {
        return $value; /*string*/
    }

    /**
     * @throws Exception
     * @return string
     */
    public function toFr(): string {
        if (MaxContributionsPerParticipantDescription::validateFr($this->fr))  {
            return $this->fr; /*string*/
        }
        throw new Exception('never get to this MaxContributionsPerParticipantDescription::fr');
    }

    /**
     * @param string
     * @return bool
     * @throws Exception
     */
    public static function validateFr(string $value): bool {
        if (!is_string($value)) {
            throw new Exception("Attribute Error:MaxContributionsPerParticipantDescription::fr");
        }
        return true;
    }

    /**
     * @throws Exception
     * @return string
     */
    public function getFr(): string {
        if (MaxContributionsPerParticipantDescription::validateFr($this->fr))  {
            return $this->fr;
        }
        throw new Exception('never get to getFr MaxContributionsPerParticipantDescription::fr');
    }

    /**
     * @return string
     */
    public static function sampleFr(): string {
        return 'MaxContributionsPerParticipantDescription::fr::34'; /*34:fr*/
    }

    /**
     * @param string $value
     * @throws Exception
     * @return string
     */
    public static function fromJa(string $value): string {
        return $value; /*string*/
    }

    /**
     * @throws Exception
     * @return string
     */
    public function toJa(): string {
        if (MaxContributionsPerParticipantDescription::validateJa($this->ja))  {
            return $this->ja; /*string*/
        }
        throw new Exception('never get to this MaxContributionsPerParticipantDescription::ja');
    }

    /**
     * @param string
     * @return bool
     * @throws Exception
     */
    public static function validateJa(string $value): bool {
        if (!is_string($value)) {
            throw new Exception("Attribute Error:MaxContributionsPerParticipantDescription::ja");
        }
        return true;
    }

    /**
     * @throws Exception
     * @return string
     */
    public function getJa(): string {
        if (MaxContributionsPerParticipantDescription::validateJa($this->ja))  {
            return $this->ja;
        }
        throw new Exception('never get to getJa MaxContributionsPerParticipantDescription::ja');
    }

    /**
     * @return string
     */
    public static function sampleJa(): string {
        return 'MaxContributionsPerParticipantDescription::ja::35'; /*35:ja*/
    }

    /**
     * @param string $value
     * @throws Exception
     * @return string
     */
    public static function fromKo(string $value): string {
        return $value; /*string*/
    }

    /**
     * @throws Exception
     * @return string
     */
    public function toKo(): string {
        if (MaxContributionsPerParticipantDescription::validateKo($this->ko))  {
            return $this->ko; /*string*/
        }
        throw new Exception('never get to this MaxContributionsPerParticipantDescription::ko');
    }

    /**
     * @param string
     * @return bool
     * @throws Exception
     */
    public static function validateKo(string $value): bool {
        if (!is_string($value)) {
            throw new Exception("Attribute Error:MaxContributionsPerParticipantDescription::ko");
        }
        return true;
    }

    /**
     * @throws Exception
     * @return string
     */
    public function getKo(): string {
        if (MaxContributionsPerParticipantDescription::validateKo($this->ko))  {
            return $this->ko;
        }
        throw new Exception('never get to getKo MaxContributionsPerParticipantDescription::ko');
    }

    /**
     * @return string
     */
    public static function sampleKo(): string {
        return 'MaxContributionsPerParticipantDescription::ko::36'; /*36:ko*/
    }

    /**
     * @param string $value
     * @throws Exception
     * @return string
     */
    public static function fromRu(string $value): string {
        return $value; /*string*/
    }

    /**
     * @throws Exception
     * @return string
     */
    public function toRu(): string {
        if (MaxContributionsPerParticipantDescription::validateRu($this->ru))  {
            return $this->ru; /*string*/
        }
        throw new Exception('never get to this MaxContributionsPerParticipantDescription::ru');
    }

    /**
     * @param string
     * @return bool
     * @throws Exception
     */
    public static function validateRu(string $value): bool {
        if (!is_string($value)) {
            throw new Exception("Attribute Error:MaxContributionsPerParticipantDescription::ru");
        }
        return true;
    }

    /**
     * @throws Exception
     * @return string
     */
    public function getRu(): string {
        if (MaxContributionsPerParticipantDescription::validateRu($this->ru))  {
            return $this->ru;
        }
        throw new Exception('never get to getRu MaxContributionsPerParticipantDescription::ru');
    }

    /**
     * @return string
     */
    public static function sampleRu(): string {
        return 'MaxContributionsPerParticipantDescription::ru::37'; /*37:ru*/
    }

    /**
     * @param string $value
     * @throws Exception
     * @return string
     */
    public static function fromZh(string $value): string {
        return $value; /*string*/
    }

    /**
     * @throws Exception
     * @return string
     */
    public function toZh(): string {
        if (MaxContributionsPerParticipantDescription::validateZh($this->zh))  {
            return $this->zh; /*string*/
        }
        throw new Exception('never get to this MaxContributionsPerParticipantDescription::zh');
    }

    /**
     * @param string
     * @return bool
     * @throws Exception
     */
    public static function validateZh(string $value): bool {
        if (!is_string($value)) {
            throw new Exception("Attribute Error:MaxContributionsPerParticipantDescription::zh");
        }
        return true;
    }

    /**
     * @throws Exception
     * @return string
     */
    public function getZh(): string {
        if (MaxContributionsPerParticipantDescription::validateZh($this->zh))  {
            return $this->zh;
        }
        throw new Exception('never get to getZh MaxContributionsPerParticipantDescription::zh');
    }

    /**
     * @return string
     */
    public static function sampleZh(): string {
        return 'MaxContributionsPerParticipantDescription::zh::38'; /*38:zh*/
    }

    /**
     * @throws Exception
     * @return bool
     */
    public function validate(): bool {
        return MaxContributionsPerParticipantDescription::validateDe($this->de)
        || MaxContributionsPerParticipantDescription::validateEn($this->en)
        || MaxContributionsPerParticipantDescription::validateEs($this->es)
        || MaxContributionsPerParticipantDescription::validateFr($this->fr)
        || MaxContributionsPerParticipantDescription::validateJa($this->ja)
        || MaxContributionsPerParticipantDescription::validateKo($this->ko)
        || MaxContributionsPerParticipantDescription::validateRu($this->ru)
        || MaxContributionsPerParticipantDescription::validateZh($this->zh);
    }

    /**
     * @return stdClass
     * @throws Exception
     */
    public function to(): stdClass  {
        $out = new stdClass();
        $out->{'de'} = $this->toDe();
        $out->{'en'} = $this->toEn();
        $out->{'es'} = $this->toEs();
        $out->{'fr'} = $this->toFr();
        $out->{'ja'} = $this->toJa();
        $out->{'ko'} = $this->toKo();
        $out->{'ru'} = $this->toRu();
        $out->{'zh'} = $this->toZh();
        return $out;
    }

    /**
     * @param stdClass $obj
     * @return MaxContributionsPerParticipantDescription
     * @throws Exception
     */
    public static function from(stdClass $obj): MaxContributionsPerParticipantDescription {
        return new MaxContributionsPerParticipantDescription(
         MaxContributionsPerParticipantDescription::fromDe($obj->{'de'})
        ,MaxContributionsPerParticipantDescription::fromEn($obj->{'en'})
        ,MaxContributionsPerParticipantDescription::fromEs($obj->{'es'})
        ,MaxContributionsPerParticipantDescription::fromFr($obj->{'fr'})
        ,MaxContributionsPerParticipantDescription::fromJa($obj->{'ja'})
        ,MaxContributionsPerParticipantDescription::fromKo($obj->{'ko'})
        ,MaxContributionsPerParticipantDescription::fromRu($obj->{'ru'})
        ,MaxContributionsPerParticipantDescription::fromZh($obj->{'zh'})
        );
    }

    /**
     * @return MaxContributionsPerParticipantDescription
     */
    public static function sample(): MaxContributionsPerParticipantDescription {
        return new MaxContributionsPerParticipantDescription(
         MaxContributionsPerParticipantDescription::sampleDe()
        ,MaxContributionsPerParticipantDescription::sampleEn()
        ,MaxContributionsPerParticipantDescription::sampleEs()
        ,MaxContributionsPerParticipantDescription::sampleFr()
        ,MaxContributionsPerParticipantDescription::sampleJa()
        ,MaxContributionsPerParticipantDescription::sampleKo()
        ,MaxContributionsPerParticipantDescription::sampleRu()
        ,MaxContributionsPerParticipantDescription::sampleZh()
        );
    }
}

// This is an autogenerated file:MaxContributionsPerParticipantIconId

class MaxContributionsPerParticipantIconId {
    public static MaxContributionsPerParticipantIconId $ISK;
    public static MaxContributionsPerParticipantIconId $PERSONAL;
    public static function init() {
        MaxContributionsPerParticipantIconId::$ISK = new MaxContributionsPerParticipantIconId('isk');
        MaxContributionsPerParticipantIconId::$PERSONAL = new MaxContributionsPerParticipantIconId('personal');
    }
    private string $enum;
    public function __construct(string $enum) {
        $this->enum = $enum;
    }

    /**
     * @param MaxContributionsPerParticipantIconId
     * @return string
     * @throws Exception
     */
    public static function to(MaxContributionsPerParticipantIconId $obj): string {
        switch ($obj->enum) {
            case MaxContributionsPerParticipantIconId::$ISK->enum: return 'isk';
            case MaxContributionsPerParticipantIconId::$PERSONAL->enum: return 'personal';
        }
        throw new Exception('the give value is not an enum-value.');
    }

    /**
     * @param mixed
     * @return MaxContributionsPerParticipantIconId
     * @throws Exception
     */
    public static function from($obj): MaxContributionsPerParticipantIconId {
        switch ($obj) {
            case 'isk': return MaxContributionsPerParticipantIconId::$ISK;
            case 'personal': return MaxContributionsPerParticipantIconId::$PERSONAL;
        }
        throw new Exception("Cannot deserialize MaxContributionsPerParticipantIconId");
    }

    /**
     * @return MaxContributionsPerParticipantIconId
     */
    public static function sample(): MaxContributionsPerParticipantIconId {
        return MaxContributionsPerParticipantIconId::$ISK;
    }
}
MaxContributionsPerParticipantIconId::init();

// This is an autogenerated file:MaxContributionsPerParticipantTitle

class MaxContributionsPerParticipantTitle {
    private string $de; // json:de Required
    private string $en; // json:en Required
    private string $es; // json:es Required
    private string $fr; // json:fr Required
    private string $ja; // json:ja Required
    private string $ko; // json:ko Required
    private string $ru; // json:ru Required
    private string $zh; // json:zh Required

    /**
     * @param string $de
     * @param string $en
     * @param string $es
     * @param string $fr
     * @param string $ja
     * @param string $ko
     * @param string $ru
     * @param string $zh
     */
    public function __construct(string $de, string $en, string $es, string $fr, string $ja, string $ko, string $ru, string $zh) {
        $this->de = $de;
        $this->en = $en;
        $this->es = $es;
        $this->fr = $fr;
        $this->ja = $ja;
        $this->ko = $ko;
        $this->ru = $ru;
        $this->zh = $zh;
    }

    /**
     * @param string $value
     * @throws Exception
     * @return string
     */
    public static function fromDe(string $value): string {
        return $value; /*string*/
    }

    /**
     * @throws Exception
     * @return string
     */
    public function toDe(): string {
        if (MaxContributionsPerParticipantTitle::validateDe($this->de))  {
            return $this->de; /*string*/
        }
        throw new Exception('never get to this MaxContributionsPerParticipantTitle::de');
    }

    /**
     * @param string
     * @return bool
     * @throws Exception
     */
    public static function validateDe(string $value): bool {
        if (!is_string($value)) {
            throw new Exception("Attribute Error:MaxContributionsPerParticipantTitle::de");
        }
        return true;
    }

    /**
     * @throws Exception
     * @return string
     */
    public function getDe(): string {
        if (MaxContributionsPerParticipantTitle::validateDe($this->de))  {
            return $this->de;
        }
        throw new Exception('never get to getDe MaxContributionsPerParticipantTitle::de');
    }

    /**
     * @return string
     */
    public static function sampleDe(): string {
        return 'MaxContributionsPerParticipantTitle::de::31'; /*31:de*/
    }

    /**
     * @param string $value
     * @throws Exception
     * @return string
     */
    public static function fromEn(string $value): string {
        return $value; /*string*/
    }

    /**
     * @throws Exception
     * @return string
     */
    public function toEn(): string {
        if (MaxContributionsPerParticipantTitle::validateEn($this->en))  {
            return $this->en; /*string*/
        }
        throw new Exception('never get to this MaxContributionsPerParticipantTitle::en');
    }

    /**
     * @param string
     * @return bool
     * @throws Exception
     */
    public static function validateEn(string $value): bool {
        if (!is_string($value)) {
            throw new Exception("Attribute Error:MaxContributionsPerParticipantTitle::en");
        }
        return true;
    }

    /**
     * @throws Exception
     * @return string
     */
    public function getEn(): string {
        if (MaxContributionsPerParticipantTitle::validateEn($this->en))  {
            return $this->en;
        }
        throw new Exception('never get to getEn MaxContributionsPerParticipantTitle::en');
    }

    /**
     * @return string
     */
    public static function sampleEn(): string {
        return 'MaxContributionsPerParticipantTitle::en::32'; /*32:en*/
    }

    /**
     * @param string $value
     * @throws Exception
     * @return string
     */
    public static function fromEs(string $value): string {
        return $value; /*string*/
    }

    /**
     * @throws Exception
     * @return string
     */
    public function toEs(): string {
        if (MaxContributionsPerParticipantTitle::validateEs($this->es))  {
            return $this->es; /*string*/
        }
        throw new Exception('never get to this MaxContributionsPerParticipantTitle::es');
    }

    /**
     * @param string
     * @return bool
     * @throws Exception
     */
    public static function validateEs(string $value): bool {
        if (!is_string($value)) {
            throw new Exception("Attribute Error:MaxContributionsPerParticipantTitle::es");
        }
        return true;
    }

    /**
     * @throws Exception
     * @return string
     */
    public function getEs(): string {
        if (MaxContributionsPerParticipantTitle::validateEs($this->es))  {
            return $this->es;
        }
        throw new Exception('never get to getEs MaxContributionsPerParticipantTitle::es');
    }

    /**
     * @return string
     */
    public static function sampleEs(): string {
        return 'MaxContributionsPerParticipantTitle::es::33'; /*33:es*/
    }

    /**
     * @param string $value
     * @throws Exception
     * @return string
     */
    public static function fromFr(string $value): string {
        return $value; /*string*/
    }

    /**
     * @throws Exception
     * @return string
     */
    public function toFr(): string {
        if (MaxContributionsPerParticipantTitle::validateFr($this->fr))  {
            return $this->fr; /*string*/
        }
        throw new Exception('never get to this MaxContributionsPerParticipantTitle::fr');
    }

    /**
     * @param string
     * @return bool
     * @throws Exception
     */
    public static function validateFr(string $value): bool {
        if (!is_string($value)) {
            throw new Exception("Attribute Error:MaxContributionsPerParticipantTitle::fr");
        }
        return true;
    }

    /**
     * @throws Exception
     * @return string
     */
    public function getFr(): string {
        if (MaxContributionsPerParticipantTitle::validateFr($this->fr))  {
            return $this->fr;
        }
        throw new Exception('never get to getFr MaxContributionsPerParticipantTitle::fr');
    }

    /**
     * @return string
     */
    public static function sampleFr(): string {
        return 'MaxContributionsPerParticipantTitle::fr::34'; /*34:fr*/
    }

    /**
     * @param string $value
     * @throws Exception
     * @return string
     */
    public static function fromJa(string $value): string {
        return $value; /*string*/
    }

    /**
     * @throws Exception
     * @return string
     */
    public function toJa(): string {
        if (MaxContributionsPerParticipantTitle::validateJa($this->ja))  {
            return $this->ja; /*string*/
        }
        throw new Exception('never get to this MaxContributionsPerParticipantTitle::ja');
    }

    /**
     * @param string
     * @return bool
     * @throws Exception
     */
    public static function validateJa(string $value): bool {
        if (!is_string($value)) {
            throw new Exception("Attribute Error:MaxContributionsPerParticipantTitle::ja");
        }
        return true;
    }

    /**
     * @throws Exception
     * @return string
     */
    public function getJa(): string {
        if (MaxContributionsPerParticipantTitle::validateJa($this->ja))  {
            return $this->ja;
        }
        throw new Exception('never get to getJa MaxContributionsPerParticipantTitle::ja');
    }

    /**
     * @return string
     */
    public static function sampleJa(): string {
        return 'MaxContributionsPerParticipantTitle::ja::35'; /*35:ja*/
    }

    /**
     * @param string $value
     * @throws Exception
     * @return string
     */
    public static function fromKo(string $value): string {
        return $value; /*string*/
    }

    /**
     * @throws Exception
     * @return string
     */
    public function toKo(): string {
        if (MaxContributionsPerParticipantTitle::validateKo($this->ko))  {
            return $this->ko; /*string*/
        }
        throw new Exception('never get to this MaxContributionsPerParticipantTitle::ko');
    }

    /**
     * @param string
     * @return bool
     * @throws Exception
     */
    public static function validateKo(string $value): bool {
        if (!is_string($value)) {
            throw new Exception("Attribute Error:MaxContributionsPerParticipantTitle::ko");
        }
        return true;
    }

    /**
     * @throws Exception
     * @return string
     */
    public function getKo(): string {
        if (MaxContributionsPerParticipantTitle::validateKo($this->ko))  {
            return $this->ko;
        }
        throw new Exception('never get to getKo MaxContributionsPerParticipantTitle::ko');
    }

    /**
     * @return string
     */
    public static function sampleKo(): string {
        return 'MaxContributionsPerParticipantTitle::ko::36'; /*36:ko*/
    }

    /**
     * @param string $value
     * @throws Exception
     * @return string
     */
    public static function fromRu(string $value): string {
        return $value; /*string*/
    }

    /**
     * @throws Exception
     * @return string
     */
    public function toRu(): string {
        if (MaxContributionsPerParticipantTitle::validateRu($this->ru))  {
            return $this->ru; /*string*/
        }
        throw new Exception('never get to this MaxContributionsPerParticipantTitle::ru');
    }

    /**
     * @param string
     * @return bool
     * @throws Exception
     */
    public static function validateRu(string $value): bool {
        if (!is_string($value)) {
            throw new Exception("Attribute Error:MaxContributionsPerParticipantTitle::ru");
        }
        return true;
    }

    /**
     * @throws Exception
     * @return string
     */
    public function getRu(): string {
        if (MaxContributionsPerParticipantTitle::validateRu($this->ru))  {
            return $this->ru;
        }
        throw new Exception('never get to getRu MaxContributionsPerParticipantTitle::ru');
    }

    /**
     * @return string
     */
    public static function sampleRu(): string {
        return 'MaxContributionsPerParticipantTitle::ru::37'; /*37:ru*/
    }

    /**
     * @param string $value
     * @throws Exception
     * @return string
     */
    public static function fromZh(string $value): string {
        return $value; /*string*/
    }

    /**
     * @throws Exception
     * @return string
     */
    public function toZh(): string {
        if (MaxContributionsPerParticipantTitle::validateZh($this->zh))  {
            return $this->zh; /*string*/
        }
        throw new Exception('never get to this MaxContributionsPerParticipantTitle::zh');
    }

    /**
     * @param string
     * @return bool
     * @throws Exception
     */
    public static function validateZh(string $value): bool {
        if (!is_string($value)) {
            throw new Exception("Attribute Error:MaxContributionsPerParticipantTitle::zh");
        }
        return true;
    }

    /**
     * @throws Exception
     * @return string
     */
    public function getZh(): string {
        if (MaxContributionsPerParticipantTitle::validateZh($this->zh))  {
            return $this->zh;
        }
        throw new Exception('never get to getZh MaxContributionsPerParticipantTitle::zh');
    }

    /**
     * @return string
     */
    public static function sampleZh(): string {
        return 'MaxContributionsPerParticipantTitle::zh::38'; /*38:zh*/
    }

    /**
     * @throws Exception
     * @return bool
     */
    public function validate(): bool {
        return MaxContributionsPerParticipantTitle::validateDe($this->de)
        || MaxContributionsPerParticipantTitle::validateEn($this->en)
        || MaxContributionsPerParticipantTitle::validateEs($this->es)
        || MaxContributionsPerParticipantTitle::validateFr($this->fr)
        || MaxContributionsPerParticipantTitle::validateJa($this->ja)
        || MaxContributionsPerParticipantTitle::validateKo($this->ko)
        || MaxContributionsPerParticipantTitle::validateRu($this->ru)
        || MaxContributionsPerParticipantTitle::validateZh($this->zh);
    }

    /**
     * @return stdClass
     * @throws Exception
     */
    public function to(): stdClass  {
        $out = new stdClass();
        $out->{'de'} = $this->toDe();
        $out->{'en'} = $this->toEn();
        $out->{'es'} = $this->toEs();
        $out->{'fr'} = $this->toFr();
        $out->{'ja'} = $this->toJa();
        $out->{'ko'} = $this->toKo();
        $out->{'ru'} = $this->toRu();
        $out->{'zh'} = $this->toZh();
        return $out;
    }

    /**
     * @param stdClass $obj
     * @return MaxContributionsPerParticipantTitle
     * @throws Exception
     */
    public static function from(stdClass $obj): MaxContributionsPerParticipantTitle {
        return new MaxContributionsPerParticipantTitle(
         MaxContributionsPerParticipantTitle::fromDe($obj->{'de'})
        ,MaxContributionsPerParticipantTitle::fromEn($obj->{'en'})
        ,MaxContributionsPerParticipantTitle::fromEs($obj->{'es'})
        ,MaxContributionsPerParticipantTitle::fromFr($obj->{'fr'})
        ,MaxContributionsPerParticipantTitle::fromJa($obj->{'ja'})
        ,MaxContributionsPerParticipantTitle::fromKo($obj->{'ko'})
        ,MaxContributionsPerParticipantTitle::fromRu($obj->{'ru'})
        ,MaxContributionsPerParticipantTitle::fromZh($obj->{'zh'})
        );
    }

    /**
     * @return MaxContributionsPerParticipantTitle
     */
    public static function sample(): MaxContributionsPerParticipantTitle {
        return new MaxContributionsPerParticipantTitle(
         MaxContributionsPerParticipantTitle::sampleDe()
        ,MaxContributionsPerParticipantTitle::sampleEn()
        ,MaxContributionsPerParticipantTitle::sampleEs()
        ,MaxContributionsPerParticipantTitle::sampleFr()
        ,MaxContributionsPerParticipantTitle::sampleJa()
        ,MaxContributionsPerParticipantTitle::sampleKo()
        ,MaxContributionsPerParticipantTitle::sampleRu()
        ,MaxContributionsPerParticipantTitle::sampleZh()
        );
    }
}

// This is an autogenerated file:MaxContributionsPerParticipantUnsetDescription

class MaxContributionsPerParticipantUnsetDescription {
    private string $de; // json:de Required
    private string $en; // json:en Required
    private string $es; // json:es Required
    private string $fr; // json:fr Required
    private string $ja; // json:ja Required
    private string $ko; // json:ko Required
    private string $ru; // json:ru Required
    private string $zh; // json:zh Required

    /**
     * @param string $de
     * @param string $en
     * @param string $es
     * @param string $fr
     * @param string $ja
     * @param string $ko
     * @param string $ru
     * @param string $zh
     */
    public function __construct(string $de, string $en, string $es, string $fr, string $ja, string $ko, string $ru, string $zh) {
        $this->de = $de;
        $this->en = $en;
        $this->es = $es;
        $this->fr = $fr;
        $this->ja = $ja;
        $this->ko = $ko;
        $this->ru = $ru;
        $this->zh = $zh;
    }

    /**
     * @param string $value
     * @throws Exception
     * @return string
     */
    public static function fromDe(string $value): string {
        return $value; /*string*/
    }

    /**
     * @throws Exception
     * @return string
     */
    public function toDe(): string {
        if (MaxContributionsPerParticipantUnsetDescription::validateDe($this->de))  {
            return $this->de; /*string*/
        }
        throw new Exception('never get to this MaxContributionsPerParticipantUnsetDescription::de');
    }

    /**
     * @param string
     * @return bool
     * @throws Exception
     */
    public static function validateDe(string $value): bool {
        if (!is_string($value)) {
            throw new Exception("Attribute Error:MaxContributionsPerParticipantUnsetDescription::de");
        }
        return true;
    }

    /**
     * @throws Exception
     * @return string
     */
    public function getDe(): string {
        if (MaxContributionsPerParticipantUnsetDescription::validateDe($this->de))  {
            return $this->de;
        }
        throw new Exception('never get to getDe MaxContributionsPerParticipantUnsetDescription::de');
    }

    /**
     * @return string
     */
    public static function sampleDe(): string {
        return 'MaxContributionsPerParticipantUnsetDescription::de::31'; /*31:de*/
    }

    /**
     * @param string $value
     * @throws Exception
     * @return string
     */
    public static function fromEn(string $value): string {
        return $value; /*string*/
    }

    /**
     * @throws Exception
     * @return string
     */
    public function toEn(): string {
        if (MaxContributionsPerParticipantUnsetDescription::validateEn($this->en))  {
            return $this->en; /*string*/
        }
        throw new Exception('never get to this MaxContributionsPerParticipantUnsetDescription::en');
    }

    /**
     * @param string
     * @return bool
     * @throws Exception
     */
    public static function validateEn(string $value): bool {
        if (!is_string($value)) {
            throw new Exception("Attribute Error:MaxContributionsPerParticipantUnsetDescription::en");
        }
        return true;
    }

    /**
     * @throws Exception
     * @return string
     */
    public function getEn(): string {
        if (MaxContributionsPerParticipantUnsetDescription::validateEn($this->en))  {
            return $this->en;
        }
        throw new Exception('never get to getEn MaxContributionsPerParticipantUnsetDescription::en');
    }

    /**
     * @return string
     */
    public static function sampleEn(): string {
        return 'MaxContributionsPerParticipantUnsetDescription::en::32'; /*32:en*/
    }

    /**
     * @param string $value
     * @throws Exception
     * @return string
     */
    public static function fromEs(string $value): string {
        return $value; /*string*/
    }

    /**
     * @throws Exception
     * @return string
     */
    public function toEs(): string {
        if (MaxContributionsPerParticipantUnsetDescription::validateEs($this->es))  {
            return $this->es; /*string*/
        }
        throw new Exception('never get to this MaxContributionsPerParticipantUnsetDescription::es');
    }

    /**
     * @param string
     * @return bool
     * @throws Exception
     */
    public static function validateEs(string $value): bool {
        if (!is_string($value)) {
            throw new Exception("Attribute Error:MaxContributionsPerParticipantUnsetDescription::es");
        }
        return true;
    }

    /**
     * @throws Exception
     * @return string
     */
    public function getEs(): string {
        if (MaxContributionsPerParticipantUnsetDescription::validateEs($this->es))  {
            return $this->es;
        }
        throw new Exception('never get to getEs MaxContributionsPerParticipantUnsetDescription::es');
    }

    /**
     * @return string
     */
    public static function sampleEs(): string {
        return 'MaxContributionsPerParticipantUnsetDescription::es::33'; /*33:es*/
    }

    /**
     * @param string $value
     * @throws Exception
     * @return string
     */
    public static function fromFr(string $value): string {
        return $value; /*string*/
    }

    /**
     * @throws Exception
     * @return string
     */
    public function toFr(): string {
        if (MaxContributionsPerParticipantUnsetDescription::validateFr($this->fr))  {
            return $this->fr; /*string*/
        }
        throw new Exception('never get to this MaxContributionsPerParticipantUnsetDescription::fr');
    }

    /**
     * @param string
     * @return bool
     * @throws Exception
     */
    public static function validateFr(string $value): bool {
        if (!is_string($value)) {
            throw new Exception("Attribute Error:MaxContributionsPerParticipantUnsetDescription::fr");
        }
        return true;
    }

    /**
     * @throws Exception
     * @return string
     */
    public function getFr(): string {
        if (MaxContributionsPerParticipantUnsetDescription::validateFr($this->fr))  {
            return $this->fr;
        }
        throw new Exception('never get to getFr MaxContributionsPerParticipantUnsetDescription::fr');
    }

    /**
     * @return string
     */
    public static function sampleFr(): string {
        return 'MaxContributionsPerParticipantUnsetDescription::fr::34'; /*34:fr*/
    }

    /**
     * @param string $value
     * @throws Exception
     * @return string
     */
    public static function fromJa(string $value): string {
        return $value; /*string*/
    }

    /**
     * @throws Exception
     * @return string
     */
    public function toJa(): string {
        if (MaxContributionsPerParticipantUnsetDescription::validateJa($this->ja))  {
            return $this->ja; /*string*/
        }
        throw new Exception('never get to this MaxContributionsPerParticipantUnsetDescription::ja');
    }

    /**
     * @param string
     * @return bool
     * @throws Exception
     */
    public static function validateJa(string $value): bool {
        if (!is_string($value)) {
            throw new Exception("Attribute Error:MaxContributionsPerParticipantUnsetDescription::ja");
        }
        return true;
    }

    /**
     * @throws Exception
     * @return string
     */
    public function getJa(): string {
        if (MaxContributionsPerParticipantUnsetDescription::validateJa($this->ja))  {
            return $this->ja;
        }
        throw new Exception('never get to getJa MaxContributionsPerParticipantUnsetDescription::ja');
    }

    /**
     * @return string
     */
    public static function sampleJa(): string {
        return 'MaxContributionsPerParticipantUnsetDescription::ja::35'; /*35:ja*/
    }

    /**
     * @param string $value
     * @throws Exception
     * @return string
     */
    public static function fromKo(string $value): string {
        return $value; /*string*/
    }

    /**
     * @throws Exception
     * @return string
     */
    public function toKo(): string {
        if (MaxContributionsPerParticipantUnsetDescription::validateKo($this->ko))  {
            return $this->ko; /*string*/
        }
        throw new Exception('never get to this MaxContributionsPerParticipantUnsetDescription::ko');
    }

    /**
     * @param string
     * @return bool
     * @throws Exception
     */
    public static function validateKo(string $value): bool {
        if (!is_string($value)) {
            throw new Exception("Attribute Error:MaxContributionsPerParticipantUnsetDescription::ko");
        }
        return true;
    }

    /**
     * @throws Exception
     * @return string
     */
    public function getKo(): string {
        if (MaxContributionsPerParticipantUnsetDescription::validateKo($this->ko))  {
            return $this->ko;
        }
        throw new Exception('never get to getKo MaxContributionsPerParticipantUnsetDescription::ko');
    }

    /**
     * @return string
     */
    public static function sampleKo(): string {
        return 'MaxContributionsPerParticipantUnsetDescription::ko::36'; /*36:ko*/
    }

    /**
     * @param string $value
     * @throws Exception
     * @return string
     */
    public static function fromRu(string $value): string {
        return $value; /*string*/
    }

    /**
     * @throws Exception
     * @return string
     */
    public function toRu(): string {
        if (MaxContributionsPerParticipantUnsetDescription::validateRu($this->ru))  {
            return $this->ru; /*string*/
        }
        throw new Exception('never get to this MaxContributionsPerParticipantUnsetDescription::ru');
    }

    /**
     * @param string
     * @return bool
     * @throws Exception
     */
    public static function validateRu(string $value): bool {
        if (!is_string($value)) {
            throw new Exception("Attribute Error:MaxContributionsPerParticipantUnsetDescription::ru");
        }
        return true;
    }

    /**
     * @throws Exception
     * @return string
     */
    public function getRu(): string {
        if (MaxContributionsPerParticipantUnsetDescription::validateRu($this->ru))  {
            return $this->ru;
        }
        throw new Exception('never get to getRu MaxContributionsPerParticipantUnsetDescription::ru');
    }

    /**
     * @return string
     */
    public static function sampleRu(): string {
        return 'MaxContributionsPerParticipantUnsetDescription::ru::37'; /*37:ru*/
    }

    /**
     * @param string $value
     * @throws Exception
     * @return string
     */
    public static function fromZh(string $value): string {
        return $value; /*string*/
    }

    /**
     * @throws Exception
     * @return string
     */
    public function toZh(): string {
        if (MaxContributionsPerParticipantUnsetDescription::validateZh($this->zh))  {
            return $this->zh; /*string*/
        }
        throw new Exception('never get to this MaxContributionsPerParticipantUnsetDescription::zh');
    }

    /**
     * @param string
     * @return bool
     * @throws Exception
     */
    public static function validateZh(string $value): bool {
        if (!is_string($value)) {
            throw new Exception("Attribute Error:MaxContributionsPerParticipantUnsetDescription::zh");
        }
        return true;
    }

    /**
     * @throws Exception
     * @return string
     */
    public function getZh(): string {
        if (MaxContributionsPerParticipantUnsetDescription::validateZh($this->zh))  {
            return $this->zh;
        }
        throw new Exception('never get to getZh MaxContributionsPerParticipantUnsetDescription::zh');
    }

    /**
     * @return string
     */
    public static function sampleZh(): string {
        return 'MaxContributionsPerParticipantUnsetDescription::zh::38'; /*38:zh*/
    }

    /**
     * @throws Exception
     * @return bool
     */
    public function validate(): bool {
        return MaxContributionsPerParticipantUnsetDescription::validateDe($this->de)
        || MaxContributionsPerParticipantUnsetDescription::validateEn($this->en)
        || MaxContributionsPerParticipantUnsetDescription::validateEs($this->es)
        || MaxContributionsPerParticipantUnsetDescription::validateFr($this->fr)
        || MaxContributionsPerParticipantUnsetDescription::validateJa($this->ja)
        || MaxContributionsPerParticipantUnsetDescription::validateKo($this->ko)
        || MaxContributionsPerParticipantUnsetDescription::validateRu($this->ru)
        || MaxContributionsPerParticipantUnsetDescription::validateZh($this->zh);
    }

    /**
     * @return stdClass
     * @throws Exception
     */
    public function to(): stdClass  {
        $out = new stdClass();
        $out->{'de'} = $this->toDe();
        $out->{'en'} = $this->toEn();
        $out->{'es'} = $this->toEs();
        $out->{'fr'} = $this->toFr();
        $out->{'ja'} = $this->toJa();
        $out->{'ko'} = $this->toKo();
        $out->{'ru'} = $this->toRu();
        $out->{'zh'} = $this->toZh();
        return $out;
    }

    /**
     * @param stdClass $obj
     * @return MaxContributionsPerParticipantUnsetDescription
     * @throws Exception
     */
    public static function from(stdClass $obj): MaxContributionsPerParticipantUnsetDescription {
        return new MaxContributionsPerParticipantUnsetDescription(
         MaxContributionsPerParticipantUnsetDescription::fromDe($obj->{'de'})
        ,MaxContributionsPerParticipantUnsetDescription::fromEn($obj->{'en'})
        ,MaxContributionsPerParticipantUnsetDescription::fromEs($obj->{'es'})
        ,MaxContributionsPerParticipantUnsetDescription::fromFr($obj->{'fr'})
        ,MaxContributionsPerParticipantUnsetDescription::fromJa($obj->{'ja'})
        ,MaxContributionsPerParticipantUnsetDescription::fromKo($obj->{'ko'})
        ,MaxContributionsPerParticipantUnsetDescription::fromRu($obj->{'ru'})
        ,MaxContributionsPerParticipantUnsetDescription::fromZh($obj->{'zh'})
        );
    }

    /**
     * @return MaxContributionsPerParticipantUnsetDescription
     */
    public static function sample(): MaxContributionsPerParticipantUnsetDescription {
        return new MaxContributionsPerParticipantUnsetDescription(
         MaxContributionsPerParticipantUnsetDescription::sampleDe()
        ,MaxContributionsPerParticipantUnsetDescription::sampleEn()
        ,MaxContributionsPerParticipantUnsetDescription::sampleEs()
        ,MaxContributionsPerParticipantUnsetDescription::sampleFr()
        ,MaxContributionsPerParticipantUnsetDescription::sampleJa()
        ,MaxContributionsPerParticipantUnsetDescription::sampleKo()
        ,MaxContributionsPerParticipantUnsetDescription::sampleRu()
        ,MaxContributionsPerParticipantUnsetDescription::sampleZh()
        );
    }
}

// This is an autogenerated file:MaxProgressPerContribution

class MaxProgressPerContribution {
    private MaxProgressPerContributionDescription $description; // json:description Required
    private ContributionMultiplierIconId $iconId; // json:iconID Required
    private MaxProgressPerContributionTitle $title; // json:title Required
    private MaxProgressPerContributionUnsetDescription $unsetDescription; // json:unsetDescription Required

    /**
     * @param MaxProgressPerContributionDescription $description
     * @param ContributionMultiplierIconId $iconId
     * @param MaxProgressPerContributionTitle $title
     * @param MaxProgressPerContributionUnsetDescription $unsetDescription
     */
    public function __construct(MaxProgressPerContributionDescription $description, ContributionMultiplierIconId $iconId, MaxProgressPerContributionTitle $title, MaxProgressPerContributionUnsetDescription $unsetDescription) {
        $this->description = $description;
        $this->iconId = $iconId;
        $this->title = $title;
        $this->unsetDescription = $unsetDescription;
    }

    /**
     * @param stdClass $value
     * @throws Exception
     * @return MaxProgressPerContributionDescription
     */
    public static function fromDescription(stdClass $value): MaxProgressPerContributionDescription {
        return MaxProgressPerContributionDescription::from($value); /*class*/
    }

    /**
     * @throws Exception
     * @return stdClass
     */
    public function toDescription(): stdClass {
        if (MaxProgressPerContribution::validateDescription($this->description))  {
            return $this->description->to(); /*class*/
        }
        throw new Exception('never get to this MaxProgressPerContribution::description');
    }

    /**
     * @param MaxProgressPerContributionDescription
     * @return bool
     * @throws Exception
     */
    public static function validateDescription(MaxProgressPerContributionDescription $value): bool {
        $value->validate();
        return true;
    }

    /**
     * @throws Exception
     * @return MaxProgressPerContributionDescription
     */
    public function getDescription(): MaxProgressPerContributionDescription {
        if (MaxProgressPerContribution::validateDescription($this->description))  {
            return $this->description;
        }
        throw new Exception('never get to getDescription MaxProgressPerContribution::description');
    }

    /**
     * @return MaxProgressPerContributionDescription
     */
    public static function sampleDescription(): MaxProgressPerContributionDescription {
        return MaxProgressPerContributionDescription::sample(); /*31:description*/
    }

    /**
     * @param string $value
     * @throws Exception
     * @return ContributionMultiplierIconId
     */
    public static function fromIconId(string $value): ContributionMultiplierIconId {
        return ContributionMultiplierIconId::from($value); /*enum*/
    }

    /**
     * @throws Exception
     * @return string
     */
    public function toIconId(): string {
        if (MaxProgressPerContribution::validateIconId($this->iconId))  {
            return ContributionMultiplierIconId::to($this->iconId); /*enum*/
        }
        throw new Exception('never get to this MaxProgressPerContribution::iconId');
    }

    /**
     * @param ContributionMultiplierIconId
     * @return bool
     * @throws Exception
     */
    public static function validateIconId(ContributionMultiplierIconId $value): bool {
        ContributionMultiplierIconId::to($value);
        return true;
    }

    /**
     * @throws Exception
     * @return ContributionMultiplierIconId
     */
    public function getIconId(): ContributionMultiplierIconId {
        if (MaxProgressPerContribution::validateIconId($this->iconId))  {
            return $this->iconId;
        }
        throw new Exception('never get to getIconId MaxProgressPerContribution::iconId');
    }

    /**
     * @return ContributionMultiplierIconId
     */
    public static function sampleIconId(): ContributionMultiplierIconId {
        return ContributionMultiplierIconId::sample(); /*enum*/
    }

    /**
     * @param stdClass $value
     * @throws Exception
     * @return MaxProgressPerContributionTitle
     */
    public static function fromTitle(stdClass $value): MaxProgressPerContributionTitle {
        return MaxProgressPerContributionTitle::from($value); /*class*/
    }

    /**
     * @throws Exception
     * @return stdClass
     */
    public function toTitle(): stdClass {
        if (MaxProgressPerContribution::validateTitle($this->title))  {
            return $this->title->to(); /*class*/
        }
        throw new Exception('never get to this MaxProgressPerContribution::title');
    }

    /**
     * @param MaxProgressPerContributionTitle
     * @return bool
     * @throws Exception
     */
    public static function validateTitle(MaxProgressPerContributionTitle $value): bool {
        $value->validate();
        return true;
    }

    /**
     * @throws Exception
     * @return MaxProgressPerContributionTitle
     */
    public function getTitle(): MaxProgressPerContributionTitle {
        if (MaxProgressPerContribution::validateTitle($this->title))  {
            return $this->title;
        }
        throw new Exception('never get to getTitle MaxProgressPerContribution::title');
    }

    /**
     * @return MaxProgressPerContributionTitle
     */
    public static function sampleTitle(): MaxProgressPerContributionTitle {
        return MaxProgressPerContributionTitle::sample(); /*33:title*/
    }

    /**
     * @param stdClass $value
     * @throws Exception
     * @return MaxProgressPerContributionUnsetDescription
     */
    public static function fromUnsetDescription(stdClass $value): MaxProgressPerContributionUnsetDescription {
        return MaxProgressPerContributionUnsetDescription::from($value); /*class*/
    }

    /**
     * @throws Exception
     * @return stdClass
     */
    public function toUnsetDescription(): stdClass {
        if (MaxProgressPerContribution::validateUnsetDescription($this->unsetDescription))  {
            return $this->unsetDescription->to(); /*class*/
        }
        throw new Exception('never get to this MaxProgressPerContribution::unsetDescription');
    }

    /**
     * @param MaxProgressPerContributionUnsetDescription
     * @return bool
     * @throws Exception
     */
    public static function validateUnsetDescription(MaxProgressPerContributionUnsetDescription $value): bool {
        $value->validate();
        return true;
    }

    /**
     * @throws Exception
     * @return MaxProgressPerContributionUnsetDescription
     */
    public function getUnsetDescription(): MaxProgressPerContributionUnsetDescription {
        if (MaxProgressPerContribution::validateUnsetDescription($this->unsetDescription))  {
            return $this->unsetDescription;
        }
        throw new Exception('never get to getUnsetDescription MaxProgressPerContribution::unsetDescription');
    }

    /**
     * @return MaxProgressPerContributionUnsetDescription
     */
    public static function sampleUnsetDescription(): MaxProgressPerContributionUnsetDescription {
        return MaxProgressPerContributionUnsetDescription::sample(); /*34:unsetDescription*/
    }

    /**
     * @throws Exception
     * @return bool
     */
    public function validate(): bool {
        return MaxProgressPerContribution::validateDescription($this->description)
        || MaxProgressPerContribution::validateIconId($this->iconId)
        || MaxProgressPerContribution::validateTitle($this->title)
        || MaxProgressPerContribution::validateUnsetDescription($this->unsetDescription);
    }

    /**
     * @return stdClass
     * @throws Exception
     */
    public function to(): stdClass  {
        $out = new stdClass();
        $out->{'description'} = $this->toDescription();
        $out->{'iconID'} = $this->toIconId();
        $out->{'title'} = $this->toTitle();
        $out->{'unsetDescription'} = $this->toUnsetDescription();
        return $out;
    }

    /**
     * @param stdClass $obj
     * @return MaxProgressPerContribution
     * @throws Exception
     */
    public static function from(stdClass $obj): MaxProgressPerContribution {
        return new MaxProgressPerContribution(
         MaxProgressPerContribution::fromDescription($obj->{'description'})
        ,MaxProgressPerContribution::fromIconId($obj->{'iconID'})
        ,MaxProgressPerContribution::fromTitle($obj->{'title'})
        ,MaxProgressPerContribution::fromUnsetDescription($obj->{'unsetDescription'})
        );
    }

    /**
     * @return MaxProgressPerContribution
     */
    public static function sample(): MaxProgressPerContribution {
        return new MaxProgressPerContribution(
         MaxProgressPerContribution::sampleDescription()
        ,MaxProgressPerContribution::sampleIconId()
        ,MaxProgressPerContribution::sampleTitle()
        ,MaxProgressPerContribution::sampleUnsetDescription()
        );
    }
}

// This is an autogenerated file:MaxProgressPerContributionDescription

class MaxProgressPerContributionDescription {
    private string $de; // json:de Required
    private string $en; // json:en Required
    private string $es; // json:es Required
    private string $fr; // json:fr Required
    private string $ja; // json:ja Required
    private string $ko; // json:ko Required
    private string $ru; // json:ru Required
    private string $zh; // json:zh Required

    /**
     * @param string $de
     * @param string $en
     * @param string $es
     * @param string $fr
     * @param string $ja
     * @param string $ko
     * @param string $ru
     * @param string $zh
     */
    public function __construct(string $de, string $en, string $es, string $fr, string $ja, string $ko, string $ru, string $zh) {
        $this->de = $de;
        $this->en = $en;
        $this->es = $es;
        $this->fr = $fr;
        $this->ja = $ja;
        $this->ko = $ko;
        $this->ru = $ru;
        $this->zh = $zh;
    }

    /**
     * @param string $value
     * @throws Exception
     * @return string
     */
    public static function fromDe(string $value): string {
        return $value; /*string*/
    }

    /**
     * @throws Exception
     * @return string
     */
    public function toDe(): string {
        if (MaxProgressPerContributionDescription::validateDe($this->de))  {
            return $this->de; /*string*/
        }
        throw new Exception('never get to this MaxProgressPerContributionDescription::de');
    }

    /**
     * @param string
     * @return bool
     * @throws Exception
     */
    public static function validateDe(string $value): bool {
        if (!is_string($value)) {
            throw new Exception("Attribute Error:MaxProgressPerContributionDescription::de");
        }
        return true;
    }

    /**
     * @throws Exception
     * @return string
     */
    public function getDe(): string {
        if (MaxProgressPerContributionDescription::validateDe($this->de))  {
            return $this->de;
        }
        throw new Exception('never get to getDe MaxProgressPerContributionDescription::de');
    }

    /**
     * @return string
     */
    public static function sampleDe(): string {
        return 'MaxProgressPerContributionDescription::de::31'; /*31:de*/
    }

    /**
     * @param string $value
     * @throws Exception
     * @return string
     */
    public static function fromEn(string $value): string {
        return $value; /*string*/
    }

    /**
     * @throws Exception
     * @return string
     */
    public function toEn(): string {
        if (MaxProgressPerContributionDescription::validateEn($this->en))  {
            return $this->en; /*string*/
        }
        throw new Exception('never get to this MaxProgressPerContributionDescription::en');
    }

    /**
     * @param string
     * @return bool
     * @throws Exception
     */
    public static function validateEn(string $value): bool {
        if (!is_string($value)) {
            throw new Exception("Attribute Error:MaxProgressPerContributionDescription::en");
        }
        return true;
    }

    /**
     * @throws Exception
     * @return string
     */
    public function getEn(): string {
        if (MaxProgressPerContributionDescription::validateEn($this->en))  {
            return $this->en;
        }
        throw new Exception('never get to getEn MaxProgressPerContributionDescription::en');
    }

    /**
     * @return string
     */
    public static function sampleEn(): string {
        return 'MaxProgressPerContributionDescription::en::32'; /*32:en*/
    }

    /**
     * @param string $value
     * @throws Exception
     * @return string
     */
    public static function fromEs(string $value): string {
        return $value; /*string*/
    }

    /**
     * @throws Exception
     * @return string
     */
    public function toEs(): string {
        if (MaxProgressPerContributionDescription::validateEs($this->es))  {
            return $this->es; /*string*/
        }
        throw new Exception('never get to this MaxProgressPerContributionDescription::es');
    }

    /**
     * @param string
     * @return bool
     * @throws Exception
     */
    public static function validateEs(string $value): bool {
        if (!is_string($value)) {
            throw new Exception("Attribute Error:MaxProgressPerContributionDescription::es");
        }
        return true;
    }

    /**
     * @throws Exception
     * @return string
     */
    public function getEs(): string {
        if (MaxProgressPerContributionDescription::validateEs($this->es))  {
            return $this->es;
        }
        throw new Exception('never get to getEs MaxProgressPerContributionDescription::es');
    }

    /**
     * @return string
     */
    public static function sampleEs(): string {
        return 'MaxProgressPerContributionDescription::es::33'; /*33:es*/
    }

    /**
     * @param string $value
     * @throws Exception
     * @return string
     */
    public static function fromFr(string $value): string {
        return $value; /*string*/
    }

    /**
     * @throws Exception
     * @return string
     */
    public function toFr(): string {
        if (MaxProgressPerContributionDescription::validateFr($this->fr))  {
            return $this->fr; /*string*/
        }
        throw new Exception('never get to this MaxProgressPerContributionDescription::fr');
    }

    /**
     * @param string
     * @return bool
     * @throws Exception
     */
    public static function validateFr(string $value): bool {
        if (!is_string($value)) {
            throw new Exception("Attribute Error:MaxProgressPerContributionDescription::fr");
        }
        return true;
    }

    /**
     * @throws Exception
     * @return string
     */
    public function getFr(): string {
        if (MaxProgressPerContributionDescription::validateFr($this->fr))  {
            return $this->fr;
        }
        throw new Exception('never get to getFr MaxProgressPerContributionDescription::fr');
    }

    /**
     * @return string
     */
    public static function sampleFr(): string {
        return 'MaxProgressPerContributionDescription::fr::34'; /*34:fr*/
    }

    /**
     * @param string $value
     * @throws Exception
     * @return string
     */
    public static function fromJa(string $value): string {
        return $value; /*string*/
    }

    /**
     * @throws Exception
     * @return string
     */
    public function toJa(): string {
        if (MaxProgressPerContributionDescription::validateJa($this->ja))  {
            return $this->ja; /*string*/
        }
        throw new Exception('never get to this MaxProgressPerContributionDescription::ja');
    }

    /**
     * @param string
     * @return bool
     * @throws Exception
     */
    public static function validateJa(string $value): bool {
        if (!is_string($value)) {
            throw new Exception("Attribute Error:MaxProgressPerContributionDescription::ja");
        }
        return true;
    }

    /**
     * @throws Exception
     * @return string
     */
    public function getJa(): string {
        if (MaxProgressPerContributionDescription::validateJa($this->ja))  {
            return $this->ja;
        }
        throw new Exception('never get to getJa MaxProgressPerContributionDescription::ja');
    }

    /**
     * @return string
     */
    public static function sampleJa(): string {
        return 'MaxProgressPerContributionDescription::ja::35'; /*35:ja*/
    }

    /**
     * @param string $value
     * @throws Exception
     * @return string
     */
    public static function fromKo(string $value): string {
        return $value; /*string*/
    }

    /**
     * @throws Exception
     * @return string
     */
    public function toKo(): string {
        if (MaxProgressPerContributionDescription::validateKo($this->ko))  {
            return $this->ko; /*string*/
        }
        throw new Exception('never get to this MaxProgressPerContributionDescription::ko');
    }

    /**
     * @param string
     * @return bool
     * @throws Exception
     */
    public static function validateKo(string $value): bool {
        if (!is_string($value)) {
            throw new Exception("Attribute Error:MaxProgressPerContributionDescription::ko");
        }
        return true;
    }

    /**
     * @throws Exception
     * @return string
     */
    public function getKo(): string {
        if (MaxProgressPerContributionDescription::validateKo($this->ko))  {
            return $this->ko;
        }
        throw new Exception('never get to getKo MaxProgressPerContributionDescription::ko');
    }

    /**
     * @return string
     */
    public static function sampleKo(): string {
        return 'MaxProgressPerContributionDescription::ko::36'; /*36:ko*/
    }

    /**
     * @param string $value
     * @throws Exception
     * @return string
     */
    public static function fromRu(string $value): string {
        return $value; /*string*/
    }

    /**
     * @throws Exception
     * @return string
     */
    public function toRu(): string {
        if (MaxProgressPerContributionDescription::validateRu($this->ru))  {
            return $this->ru; /*string*/
        }
        throw new Exception('never get to this MaxProgressPerContributionDescription::ru');
    }

    /**
     * @param string
     * @return bool
     * @throws Exception
     */
    public static function validateRu(string $value): bool {
        if (!is_string($value)) {
            throw new Exception("Attribute Error:MaxProgressPerContributionDescription::ru");
        }
        return true;
    }

    /**
     * @throws Exception
     * @return string
     */
    public function getRu(): string {
        if (MaxProgressPerContributionDescription::validateRu($this->ru))  {
            return $this->ru;
        }
        throw new Exception('never get to getRu MaxProgressPerContributionDescription::ru');
    }

    /**
     * @return string
     */
    public static function sampleRu(): string {
        return 'MaxProgressPerContributionDescription::ru::37'; /*37:ru*/
    }

    /**
     * @param string $value
     * @throws Exception
     * @return string
     */
    public static function fromZh(string $value): string {
        return $value; /*string*/
    }

    /**
     * @throws Exception
     * @return string
     */
    public function toZh(): string {
        if (MaxProgressPerContributionDescription::validateZh($this->zh))  {
            return $this->zh; /*string*/
        }
        throw new Exception('never get to this MaxProgressPerContributionDescription::zh');
    }

    /**
     * @param string
     * @return bool
     * @throws Exception
     */
    public static function validateZh(string $value): bool {
        if (!is_string($value)) {
            throw new Exception("Attribute Error:MaxProgressPerContributionDescription::zh");
        }
        return true;
    }

    /**
     * @throws Exception
     * @return string
     */
    public function getZh(): string {
        if (MaxProgressPerContributionDescription::validateZh($this->zh))  {
            return $this->zh;
        }
        throw new Exception('never get to getZh MaxProgressPerContributionDescription::zh');
    }

    /**
     * @return string
     */
    public static function sampleZh(): string {
        return 'MaxProgressPerContributionDescription::zh::38'; /*38:zh*/
    }

    /**
     * @throws Exception
     * @return bool
     */
    public function validate(): bool {
        return MaxProgressPerContributionDescription::validateDe($this->de)
        || MaxProgressPerContributionDescription::validateEn($this->en)
        || MaxProgressPerContributionDescription::validateEs($this->es)
        || MaxProgressPerContributionDescription::validateFr($this->fr)
        || MaxProgressPerContributionDescription::validateJa($this->ja)
        || MaxProgressPerContributionDescription::validateKo($this->ko)
        || MaxProgressPerContributionDescription::validateRu($this->ru)
        || MaxProgressPerContributionDescription::validateZh($this->zh);
    }

    /**
     * @return stdClass
     * @throws Exception
     */
    public function to(): stdClass  {
        $out = new stdClass();
        $out->{'de'} = $this->toDe();
        $out->{'en'} = $this->toEn();
        $out->{'es'} = $this->toEs();
        $out->{'fr'} = $this->toFr();
        $out->{'ja'} = $this->toJa();
        $out->{'ko'} = $this->toKo();
        $out->{'ru'} = $this->toRu();
        $out->{'zh'} = $this->toZh();
        return $out;
    }

    /**
     * @param stdClass $obj
     * @return MaxProgressPerContributionDescription
     * @throws Exception
     */
    public static function from(stdClass $obj): MaxProgressPerContributionDescription {
        return new MaxProgressPerContributionDescription(
         MaxProgressPerContributionDescription::fromDe($obj->{'de'})
        ,MaxProgressPerContributionDescription::fromEn($obj->{'en'})
        ,MaxProgressPerContributionDescription::fromEs($obj->{'es'})
        ,MaxProgressPerContributionDescription::fromFr($obj->{'fr'})
        ,MaxProgressPerContributionDescription::fromJa($obj->{'ja'})
        ,MaxProgressPerContributionDescription::fromKo($obj->{'ko'})
        ,MaxProgressPerContributionDescription::fromRu($obj->{'ru'})
        ,MaxProgressPerContributionDescription::fromZh($obj->{'zh'})
        );
    }

    /**
     * @return MaxProgressPerContributionDescription
     */
    public static function sample(): MaxProgressPerContributionDescription {
        return new MaxProgressPerContributionDescription(
         MaxProgressPerContributionDescription::sampleDe()
        ,MaxProgressPerContributionDescription::sampleEn()
        ,MaxProgressPerContributionDescription::sampleEs()
        ,MaxProgressPerContributionDescription::sampleFr()
        ,MaxProgressPerContributionDescription::sampleJa()
        ,MaxProgressPerContributionDescription::sampleKo()
        ,MaxProgressPerContributionDescription::sampleRu()
        ,MaxProgressPerContributionDescription::sampleZh()
        );
    }
}

// This is an autogenerated file:MaxProgressPerContributionTitle

class MaxProgressPerContributionTitle {
    private string $de; // json:de Required
    private string $en; // json:en Required
    private string $es; // json:es Required
    private string $fr; // json:fr Required
    private string $ja; // json:ja Required
    private string $ko; // json:ko Required
    private string $ru; // json:ru Required
    private string $zh; // json:zh Required

    /**
     * @param string $de
     * @param string $en
     * @param string $es
     * @param string $fr
     * @param string $ja
     * @param string $ko
     * @param string $ru
     * @param string $zh
     */
    public function __construct(string $de, string $en, string $es, string $fr, string $ja, string $ko, string $ru, string $zh) {
        $this->de = $de;
        $this->en = $en;
        $this->es = $es;
        $this->fr = $fr;
        $this->ja = $ja;
        $this->ko = $ko;
        $this->ru = $ru;
        $this->zh = $zh;
    }

    /**
     * @param string $value
     * @throws Exception
     * @return string
     */
    public static function fromDe(string $value): string {
        return $value; /*string*/
    }

    /**
     * @throws Exception
     * @return string
     */
    public function toDe(): string {
        if (MaxProgressPerContributionTitle::validateDe($this->de))  {
            return $this->de; /*string*/
        }
        throw new Exception('never get to this MaxProgressPerContributionTitle::de');
    }

    /**
     * @param string
     * @return bool
     * @throws Exception
     */
    public static function validateDe(string $value): bool {
        if (!is_string($value)) {
            throw new Exception("Attribute Error:MaxProgressPerContributionTitle::de");
        }
        return true;
    }

    /**
     * @throws Exception
     * @return string
     */
    public function getDe(): string {
        if (MaxProgressPerContributionTitle::validateDe($this->de))  {
            return $this->de;
        }
        throw new Exception('never get to getDe MaxProgressPerContributionTitle::de');
    }

    /**
     * @return string
     */
    public static function sampleDe(): string {
        return 'MaxProgressPerContributionTitle::de::31'; /*31:de*/
    }

    /**
     * @param string $value
     * @throws Exception
     * @return string
     */
    public static function fromEn(string $value): string {
        return $value; /*string*/
    }

    /**
     * @throws Exception
     * @return string
     */
    public function toEn(): string {
        if (MaxProgressPerContributionTitle::validateEn($this->en))  {
            return $this->en; /*string*/
        }
        throw new Exception('never get to this MaxProgressPerContributionTitle::en');
    }

    /**
     * @param string
     * @return bool
     * @throws Exception
     */
    public static function validateEn(string $value): bool {
        if (!is_string($value)) {
            throw new Exception("Attribute Error:MaxProgressPerContributionTitle::en");
        }
        return true;
    }

    /**
     * @throws Exception
     * @return string
     */
    public function getEn(): string {
        if (MaxProgressPerContributionTitle::validateEn($this->en))  {
            return $this->en;
        }
        throw new Exception('never get to getEn MaxProgressPerContributionTitle::en');
    }

    /**
     * @return string
     */
    public static function sampleEn(): string {
        return 'MaxProgressPerContributionTitle::en::32'; /*32:en*/
    }

    /**
     * @param string $value
     * @throws Exception
     * @return string
     */
    public static function fromEs(string $value): string {
        return $value; /*string*/
    }

    /**
     * @throws Exception
     * @return string
     */
    public function toEs(): string {
        if (MaxProgressPerContributionTitle::validateEs($this->es))  {
            return $this->es; /*string*/
        }
        throw new Exception('never get to this MaxProgressPerContributionTitle::es');
    }

    /**
     * @param string
     * @return bool
     * @throws Exception
     */
    public static function validateEs(string $value): bool {
        if (!is_string($value)) {
            throw new Exception("Attribute Error:MaxProgressPerContributionTitle::es");
        }
        return true;
    }

    /**
     * @throws Exception
     * @return string
     */
    public function getEs(): string {
        if (MaxProgressPerContributionTitle::validateEs($this->es))  {
            return $this->es;
        }
        throw new Exception('never get to getEs MaxProgressPerContributionTitle::es');
    }

    /**
     * @return string
     */
    public static function sampleEs(): string {
        return 'MaxProgressPerContributionTitle::es::33'; /*33:es*/
    }

    /**
     * @param string $value
     * @throws Exception
     * @return string
     */
    public static function fromFr(string $value): string {
        return $value; /*string*/
    }

    /**
     * @throws Exception
     * @return string
     */
    public function toFr(): string {
        if (MaxProgressPerContributionTitle::validateFr($this->fr))  {
            return $this->fr; /*string*/
        }
        throw new Exception('never get to this MaxProgressPerContributionTitle::fr');
    }

    /**
     * @param string
     * @return bool
     * @throws Exception
     */
    public static function validateFr(string $value): bool {
        if (!is_string($value)) {
            throw new Exception("Attribute Error:MaxProgressPerContributionTitle::fr");
        }
        return true;
    }

    /**
     * @throws Exception
     * @return string
     */
    public function getFr(): string {
        if (MaxProgressPerContributionTitle::validateFr($this->fr))  {
            return $this->fr;
        }
        throw new Exception('never get to getFr MaxProgressPerContributionTitle::fr');
    }

    /**
     * @return string
     */
    public static function sampleFr(): string {
        return 'MaxProgressPerContributionTitle::fr::34'; /*34:fr*/
    }

    /**
     * @param string $value
     * @throws Exception
     * @return string
     */
    public static function fromJa(string $value): string {
        return $value; /*string*/
    }

    /**
     * @throws Exception
     * @return string
     */
    public function toJa(): string {
        if (MaxProgressPerContributionTitle::validateJa($this->ja))  {
            return $this->ja; /*string*/
        }
        throw new Exception('never get to this MaxProgressPerContributionTitle::ja');
    }

    /**
     * @param string
     * @return bool
     * @throws Exception
     */
    public static function validateJa(string $value): bool {
        if (!is_string($value)) {
            throw new Exception("Attribute Error:MaxProgressPerContributionTitle::ja");
        }
        return true;
    }

    /**
     * @throws Exception
     * @return string
     */
    public function getJa(): string {
        if (MaxProgressPerContributionTitle::validateJa($this->ja))  {
            return $this->ja;
        }
        throw new Exception('never get to getJa MaxProgressPerContributionTitle::ja');
    }

    /**
     * @return string
     */
    public static function sampleJa(): string {
        return 'MaxProgressPerContributionTitle::ja::35'; /*35:ja*/
    }

    /**
     * @param string $value
     * @throws Exception
     * @return string
     */
    public static function fromKo(string $value): string {
        return $value; /*string*/
    }

    /**
     * @throws Exception
     * @return string
     */
    public function toKo(): string {
        if (MaxProgressPerContributionTitle::validateKo($this->ko))  {
            return $this->ko; /*string*/
        }
        throw new Exception('never get to this MaxProgressPerContributionTitle::ko');
    }

    /**
     * @param string
     * @return bool
     * @throws Exception
     */
    public static function validateKo(string $value): bool {
        if (!is_string($value)) {
            throw new Exception("Attribute Error:MaxProgressPerContributionTitle::ko");
        }
        return true;
    }

    /**
     * @throws Exception
     * @return string
     */
    public function getKo(): string {
        if (MaxProgressPerContributionTitle::validateKo($this->ko))  {
            return $this->ko;
        }
        throw new Exception('never get to getKo MaxProgressPerContributionTitle::ko');
    }

    /**
     * @return string
     */
    public static function sampleKo(): string {
        return 'MaxProgressPerContributionTitle::ko::36'; /*36:ko*/
    }

    /**
     * @param string $value
     * @throws Exception
     * @return string
     */
    public static function fromRu(string $value): string {
        return $value; /*string*/
    }

    /**
     * @throws Exception
     * @return string
     */
    public function toRu(): string {
        if (MaxProgressPerContributionTitle::validateRu($this->ru))  {
            return $this->ru; /*string*/
        }
        throw new Exception('never get to this MaxProgressPerContributionTitle::ru');
    }

    /**
     * @param string
     * @return bool
     * @throws Exception
     */
    public static function validateRu(string $value): bool {
        if (!is_string($value)) {
            throw new Exception("Attribute Error:MaxProgressPerContributionTitle::ru");
        }
        return true;
    }

    /**
     * @throws Exception
     * @return string
     */
    public function getRu(): string {
        if (MaxProgressPerContributionTitle::validateRu($this->ru))  {
            return $this->ru;
        }
        throw new Exception('never get to getRu MaxProgressPerContributionTitle::ru');
    }

    /**
     * @return string
     */
    public static function sampleRu(): string {
        return 'MaxProgressPerContributionTitle::ru::37'; /*37:ru*/
    }

    /**
     * @param string $value
     * @throws Exception
     * @return string
     */
    public static function fromZh(string $value): string {
        return $value; /*string*/
    }

    /**
     * @throws Exception
     * @return string
     */
    public function toZh(): string {
        if (MaxProgressPerContributionTitle::validateZh($this->zh))  {
            return $this->zh; /*string*/
        }
        throw new Exception('never get to this MaxProgressPerContributionTitle::zh');
    }

    /**
     * @param string
     * @return bool
     * @throws Exception
     */
    public static function validateZh(string $value): bool {
        if (!is_string($value)) {
            throw new Exception("Attribute Error:MaxProgressPerContributionTitle::zh");
        }
        return true;
    }

    /**
     * @throws Exception
     * @return string
     */
    public function getZh(): string {
        if (MaxProgressPerContributionTitle::validateZh($this->zh))  {
            return $this->zh;
        }
        throw new Exception('never get to getZh MaxProgressPerContributionTitle::zh');
    }

    /**
     * @return string
     */
    public static function sampleZh(): string {
        return 'MaxProgressPerContributionTitle::zh::38'; /*38:zh*/
    }

    /**
     * @throws Exception
     * @return bool
     */
    public function validate(): bool {
        return MaxProgressPerContributionTitle::validateDe($this->de)
        || MaxProgressPerContributionTitle::validateEn($this->en)
        || MaxProgressPerContributionTitle::validateEs($this->es)
        || MaxProgressPerContributionTitle::validateFr($this->fr)
        || MaxProgressPerContributionTitle::validateJa($this->ja)
        || MaxProgressPerContributionTitle::validateKo($this->ko)
        || MaxProgressPerContributionTitle::validateRu($this->ru)
        || MaxProgressPerContributionTitle::validateZh($this->zh);
    }

    /**
     * @return stdClass
     * @throws Exception
     */
    public function to(): stdClass  {
        $out = new stdClass();
        $out->{'de'} = $this->toDe();
        $out->{'en'} = $this->toEn();
        $out->{'es'} = $this->toEs();
        $out->{'fr'} = $this->toFr();
        $out->{'ja'} = $this->toJa();
        $out->{'ko'} = $this->toKo();
        $out->{'ru'} = $this->toRu();
        $out->{'zh'} = $this->toZh();
        return $out;
    }

    /**
     * @param stdClass $obj
     * @return MaxProgressPerContributionTitle
     * @throws Exception
     */
    public static function from(stdClass $obj): MaxProgressPerContributionTitle {
        return new MaxProgressPerContributionTitle(
         MaxProgressPerContributionTitle::fromDe($obj->{'de'})
        ,MaxProgressPerContributionTitle::fromEn($obj->{'en'})
        ,MaxProgressPerContributionTitle::fromEs($obj->{'es'})
        ,MaxProgressPerContributionTitle::fromFr($obj->{'fr'})
        ,MaxProgressPerContributionTitle::fromJa($obj->{'ja'})
        ,MaxProgressPerContributionTitle::fromKo($obj->{'ko'})
        ,MaxProgressPerContributionTitle::fromRu($obj->{'ru'})
        ,MaxProgressPerContributionTitle::fromZh($obj->{'zh'})
        );
    }

    /**
     * @return MaxProgressPerContributionTitle
     */
    public static function sample(): MaxProgressPerContributionTitle {
        return new MaxProgressPerContributionTitle(
         MaxProgressPerContributionTitle::sampleDe()
        ,MaxProgressPerContributionTitle::sampleEn()
        ,MaxProgressPerContributionTitle::sampleEs()
        ,MaxProgressPerContributionTitle::sampleFr()
        ,MaxProgressPerContributionTitle::sampleJa()
        ,MaxProgressPerContributionTitle::sampleKo()
        ,MaxProgressPerContributionTitle::sampleRu()
        ,MaxProgressPerContributionTitle::sampleZh()
        );
    }
}

// This is an autogenerated file:MaxProgressPerContributionUnsetDescription

class MaxProgressPerContributionUnsetDescription {
    private string $de; // json:de Required
    private string $en; // json:en Required
    private string $es; // json:es Required
    private string $fr; // json:fr Required
    private string $ja; // json:ja Required
    private string $ko; // json:ko Required
    private string $ru; // json:ru Required
    private string $zh; // json:zh Required

    /**
     * @param string $de
     * @param string $en
     * @param string $es
     * @param string $fr
     * @param string $ja
     * @param string $ko
     * @param string $ru
     * @param string $zh
     */
    public function __construct(string $de, string $en, string $es, string $fr, string $ja, string $ko, string $ru, string $zh) {
        $this->de = $de;
        $this->en = $en;
        $this->es = $es;
        $this->fr = $fr;
        $this->ja = $ja;
        $this->ko = $ko;
        $this->ru = $ru;
        $this->zh = $zh;
    }

    /**
     * @param string $value
     * @throws Exception
     * @return string
     */
    public static function fromDe(string $value): string {
        return $value; /*string*/
    }

    /**
     * @throws Exception
     * @return string
     */
    public function toDe(): string {
        if (MaxProgressPerContributionUnsetDescription::validateDe($this->de))  {
            return $this->de; /*string*/
        }
        throw new Exception('never get to this MaxProgressPerContributionUnsetDescription::de');
    }

    /**
     * @param string
     * @return bool
     * @throws Exception
     */
    public static function validateDe(string $value): bool {
        if (!is_string($value)) {
            throw new Exception("Attribute Error:MaxProgressPerContributionUnsetDescription::de");
        }
        return true;
    }

    /**
     * @throws Exception
     * @return string
     */
    public function getDe(): string {
        if (MaxProgressPerContributionUnsetDescription::validateDe($this->de))  {
            return $this->de;
        }
        throw new Exception('never get to getDe MaxProgressPerContributionUnsetDescription::de');
    }

    /**
     * @return string
     */
    public static function sampleDe(): string {
        return 'MaxProgressPerContributionUnsetDescription::de::31'; /*31:de*/
    }

    /**
     * @param string $value
     * @throws Exception
     * @return string
     */
    public static function fromEn(string $value): string {
        return $value; /*string*/
    }

    /**
     * @throws Exception
     * @return string
     */
    public function toEn(): string {
        if (MaxProgressPerContributionUnsetDescription::validateEn($this->en))  {
            return $this->en; /*string*/
        }
        throw new Exception('never get to this MaxProgressPerContributionUnsetDescription::en');
    }

    /**
     * @param string
     * @return bool
     * @throws Exception
     */
    public static function validateEn(string $value): bool {
        if (!is_string($value)) {
            throw new Exception("Attribute Error:MaxProgressPerContributionUnsetDescription::en");
        }
        return true;
    }

    /**
     * @throws Exception
     * @return string
     */
    public function getEn(): string {
        if (MaxProgressPerContributionUnsetDescription::validateEn($this->en))  {
            return $this->en;
        }
        throw new Exception('never get to getEn MaxProgressPerContributionUnsetDescription::en');
    }

    /**
     * @return string
     */
    public static function sampleEn(): string {
        return 'MaxProgressPerContributionUnsetDescription::en::32'; /*32:en*/
    }

    /**
     * @param string $value
     * @throws Exception
     * @return string
     */
    public static function fromEs(string $value): string {
        return $value; /*string*/
    }

    /**
     * @throws Exception
     * @return string
     */
    public function toEs(): string {
        if (MaxProgressPerContributionUnsetDescription::validateEs($this->es))  {
            return $this->es; /*string*/
        }
        throw new Exception('never get to this MaxProgressPerContributionUnsetDescription::es');
    }

    /**
     * @param string
     * @return bool
     * @throws Exception
     */
    public static function validateEs(string $value): bool {
        if (!is_string($value)) {
            throw new Exception("Attribute Error:MaxProgressPerContributionUnsetDescription::es");
        }
        return true;
    }

    /**
     * @throws Exception
     * @return string
     */
    public function getEs(): string {
        if (MaxProgressPerContributionUnsetDescription::validateEs($this->es))  {
            return $this->es;
        }
        throw new Exception('never get to getEs MaxProgressPerContributionUnsetDescription::es');
    }

    /**
     * @return string
     */
    public static function sampleEs(): string {
        return 'MaxProgressPerContributionUnsetDescription::es::33'; /*33:es*/
    }

    /**
     * @param string $value
     * @throws Exception
     * @return string
     */
    public static function fromFr(string $value): string {
        return $value; /*string*/
    }

    /**
     * @throws Exception
     * @return string
     */
    public function toFr(): string {
        if (MaxProgressPerContributionUnsetDescription::validateFr($this->fr))  {
            return $this->fr; /*string*/
        }
        throw new Exception('never get to this MaxProgressPerContributionUnsetDescription::fr');
    }

    /**
     * @param string
     * @return bool
     * @throws Exception
     */
    public static function validateFr(string $value): bool {
        if (!is_string($value)) {
            throw new Exception("Attribute Error:MaxProgressPerContributionUnsetDescription::fr");
        }
        return true;
    }

    /**
     * @throws Exception
     * @return string
     */
    public function getFr(): string {
        if (MaxProgressPerContributionUnsetDescription::validateFr($this->fr))  {
            return $this->fr;
        }
        throw new Exception('never get to getFr MaxProgressPerContributionUnsetDescription::fr');
    }

    /**
     * @return string
     */
    public static function sampleFr(): string {
        return 'MaxProgressPerContributionUnsetDescription::fr::34'; /*34:fr*/
    }

    /**
     * @param string $value
     * @throws Exception
     * @return string
     */
    public static function fromJa(string $value): string {
        return $value; /*string*/
    }

    /**
     * @throws Exception
     * @return string
     */
    public function toJa(): string {
        if (MaxProgressPerContributionUnsetDescription::validateJa($this->ja))  {
            return $this->ja; /*string*/
        }
        throw new Exception('never get to this MaxProgressPerContributionUnsetDescription::ja');
    }

    /**
     * @param string
     * @return bool
     * @throws Exception
     */
    public static function validateJa(string $value): bool {
        if (!is_string($value)) {
            throw new Exception("Attribute Error:MaxProgressPerContributionUnsetDescription::ja");
        }
        return true;
    }

    /**
     * @throws Exception
     * @return string
     */
    public function getJa(): string {
        if (MaxProgressPerContributionUnsetDescription::validateJa($this->ja))  {
            return $this->ja;
        }
        throw new Exception('never get to getJa MaxProgressPerContributionUnsetDescription::ja');
    }

    /**
     * @return string
     */
    public static function sampleJa(): string {
        return 'MaxProgressPerContributionUnsetDescription::ja::35'; /*35:ja*/
    }

    /**
     * @param string $value
     * @throws Exception
     * @return string
     */
    public static function fromKo(string $value): string {
        return $value; /*string*/
    }

    /**
     * @throws Exception
     * @return string
     */
    public function toKo(): string {
        if (MaxProgressPerContributionUnsetDescription::validateKo($this->ko))  {
            return $this->ko; /*string*/
        }
        throw new Exception('never get to this MaxProgressPerContributionUnsetDescription::ko');
    }

    /**
     * @param string
     * @return bool
     * @throws Exception
     */
    public static function validateKo(string $value): bool {
        if (!is_string($value)) {
            throw new Exception("Attribute Error:MaxProgressPerContributionUnsetDescription::ko");
        }
        return true;
    }

    /**
     * @throws Exception
     * @return string
     */
    public function getKo(): string {
        if (MaxProgressPerContributionUnsetDescription::validateKo($this->ko))  {
            return $this->ko;
        }
        throw new Exception('never get to getKo MaxProgressPerContributionUnsetDescription::ko');
    }

    /**
     * @return string
     */
    public static function sampleKo(): string {
        return 'MaxProgressPerContributionUnsetDescription::ko::36'; /*36:ko*/
    }

    /**
     * @param string $value
     * @throws Exception
     * @return string
     */
    public static function fromRu(string $value): string {
        return $value; /*string*/
    }

    /**
     * @throws Exception
     * @return string
     */
    public function toRu(): string {
        if (MaxProgressPerContributionUnsetDescription::validateRu($this->ru))  {
            return $this->ru; /*string*/
        }
        throw new Exception('never get to this MaxProgressPerContributionUnsetDescription::ru');
    }

    /**
     * @param string
     * @return bool
     * @throws Exception
     */
    public static function validateRu(string $value): bool {
        if (!is_string($value)) {
            throw new Exception("Attribute Error:MaxProgressPerContributionUnsetDescription::ru");
        }
        return true;
    }

    /**
     * @throws Exception
     * @return string
     */
    public function getRu(): string {
        if (MaxProgressPerContributionUnsetDescription::validateRu($this->ru))  {
            return $this->ru;
        }
        throw new Exception('never get to getRu MaxProgressPerContributionUnsetDescription::ru');
    }

    /**
     * @return string
     */
    public static function sampleRu(): string {
        return 'MaxProgressPerContributionUnsetDescription::ru::37'; /*37:ru*/
    }

    /**
     * @param string $value
     * @throws Exception
     * @return string
     */
    public static function fromZh(string $value): string {
        return $value; /*string*/
    }

    /**
     * @throws Exception
     * @return string
     */
    public function toZh(): string {
        if (MaxProgressPerContributionUnsetDescription::validateZh($this->zh))  {
            return $this->zh; /*string*/
        }
        throw new Exception('never get to this MaxProgressPerContributionUnsetDescription::zh');
    }

    /**
     * @param string
     * @return bool
     * @throws Exception
     */
    public static function validateZh(string $value): bool {
        if (!is_string($value)) {
            throw new Exception("Attribute Error:MaxProgressPerContributionUnsetDescription::zh");
        }
        return true;
    }

    /**
     * @throws Exception
     * @return string
     */
    public function getZh(): string {
        if (MaxProgressPerContributionUnsetDescription::validateZh($this->zh))  {
            return $this->zh;
        }
        throw new Exception('never get to getZh MaxProgressPerContributionUnsetDescription::zh');
    }

    /**
     * @return string
     */
    public static function sampleZh(): string {
        return 'MaxProgressPerContributionUnsetDescription::zh::38'; /*38:zh*/
    }

    /**
     * @throws Exception
     * @return bool
     */
    public function validate(): bool {
        return MaxProgressPerContributionUnsetDescription::validateDe($this->de)
        || MaxProgressPerContributionUnsetDescription::validateEn($this->en)
        || MaxProgressPerContributionUnsetDescription::validateEs($this->es)
        || MaxProgressPerContributionUnsetDescription::validateFr($this->fr)
        || MaxProgressPerContributionUnsetDescription::validateJa($this->ja)
        || MaxProgressPerContributionUnsetDescription::validateKo($this->ko)
        || MaxProgressPerContributionUnsetDescription::validateRu($this->ru)
        || MaxProgressPerContributionUnsetDescription::validateZh($this->zh);
    }

    /**
     * @return stdClass
     * @throws Exception
     */
    public function to(): stdClass  {
        $out = new stdClass();
        $out->{'de'} = $this->toDe();
        $out->{'en'} = $this->toEn();
        $out->{'es'} = $this->toEs();
        $out->{'fr'} = $this->toFr();
        $out->{'ja'} = $this->toJa();
        $out->{'ko'} = $this->toKo();
        $out->{'ru'} = $this->toRu();
        $out->{'zh'} = $this->toZh();
        return $out;
    }

    /**
     * @param stdClass $obj
     * @return MaxProgressPerContributionUnsetDescription
     * @throws Exception
     */
    public static function from(stdClass $obj): MaxProgressPerContributionUnsetDescription {
        return new MaxProgressPerContributionUnsetDescription(
         MaxProgressPerContributionUnsetDescription::fromDe($obj->{'de'})
        ,MaxProgressPerContributionUnsetDescription::fromEn($obj->{'en'})
        ,MaxProgressPerContributionUnsetDescription::fromEs($obj->{'es'})
        ,MaxProgressPerContributionUnsetDescription::fromFr($obj->{'fr'})
        ,MaxProgressPerContributionUnsetDescription::fromJa($obj->{'ja'})
        ,MaxProgressPerContributionUnsetDescription::fromKo($obj->{'ko'})
        ,MaxProgressPerContributionUnsetDescription::fromRu($obj->{'ru'})
        ,MaxProgressPerContributionUnsetDescription::fromZh($obj->{'zh'})
        );
    }

    /**
     * @return MaxProgressPerContributionUnsetDescription
     */
    public static function sample(): MaxProgressPerContributionUnsetDescription {
        return new MaxProgressPerContributionUnsetDescription(
         MaxProgressPerContributionUnsetDescription::sampleDe()
        ,MaxProgressPerContributionUnsetDescription::sampleEn()
        ,MaxProgressPerContributionUnsetDescription::sampleEs()
        ,MaxProgressPerContributionUnsetDescription::sampleFr()
        ,MaxProgressPerContributionUnsetDescription::sampleJa()
        ,MaxProgressPerContributionUnsetDescription::sampleKo()
        ,MaxProgressPerContributionUnsetDescription::sampleRu()
        ,MaxProgressPerContributionUnsetDescription::sampleZh()
        );
    }
}

// This is an autogenerated file:Parameter

class Parameter {
    private string $key; // json:_key Required
    private ?Boolean $boolean; // json:boolean Optional
    private ?ItemDelivery $itemDelivery; // json:itemDelivery Optional
    private ?Matcher $matcher; // json:matcher Optional

    /**
     * @param string $key
     * @param Boolean|null $boolean
     * @param ItemDelivery|null $itemDelivery
     * @param Matcher|null $matcher
     */
    public function __construct(string $key, ?Boolean $boolean, ?ItemDelivery $itemDelivery, ?Matcher $matcher) {
        $this->key = $key;
        $this->boolean = $boolean;
        $this->itemDelivery = $itemDelivery;
        $this->matcher = $matcher;
    }

    /**
     * @param string $value
     * @throws Exception
     * @return string
     */
    public static function fromKey(string $value): string {
        return $value; /*string*/
    }

    /**
     * @throws Exception
     * @return string
     */
    public function toKey(): string {
        if (Parameter::validateKey($this->key))  {
            return $this->key; /*string*/
        }
        throw new Exception('never get to this Parameter::key');
    }

    /**
     * @param string
     * @return bool
     * @throws Exception
     */
    public static function validateKey(string $value): bool {
        if (!is_string($value)) {
            throw new Exception("Attribute Error:Parameter::key");
        }
        return true;
    }

    /**
     * @throws Exception
     * @return string
     */
    public function getKey(): string {
        if (Parameter::validateKey($this->key))  {
            return $this->key;
        }
        throw new Exception('never get to getKey Parameter::key');
    }

    /**
     * @return string
     */
    public static function sampleKey(): string {
        return 'Parameter::key::31'; /*31:key*/
    }

    /**
     * @param ?stdClass $value
     * @throws Exception
     * @return ?Boolean
     */
    public static function fromBoolean(?stdClass $value): ?Boolean {
        if (!is_null($value)) {
            return Boolean::from($value); /*class*/
        } else {
            return  null;
        }
    }

    /**
     * @throws Exception
     * @return ?stdClass
     */
    public function toBoolean(): ?stdClass {
        if (Parameter::validateBoolean($this->boolean))  {
            if (!is_null($this->boolean)) {
                return $this->boolean->to(); /*class*/
            } else {
                return  null;
            }
        }
        throw new Exception('never get to this Parameter::boolean');
    }

    /**
     * @param Boolean|null
     * @return bool
     * @throws Exception
     */
    public static function validateBoolean(?Boolean $value): bool {
        if (!is_null($value)) {
            $value->validate();
        }
        return true;
    }

    /**
     * @throws Exception
     * @return ?Boolean
     */
    public function getBoolean(): ?Boolean {
        if (Parameter::validateBoolean($this->boolean))  {
            return $this->boolean;
        }
        throw new Exception('never get to getBoolean Parameter::boolean');
    }

    /**
     * @return ?Boolean
     */
    public static function sampleBoolean(): ?Boolean {
        return Boolean::sample(); /*32:boolean*/
    }

    /**
     * @param ?stdClass $value
     * @throws Exception
     * @return ?ItemDelivery
     */
    public static function fromItemDelivery(?stdClass $value): ?ItemDelivery {
        if (!is_null($value)) {
            return ItemDelivery::from($value); /*class*/
        } else {
            return  null;
        }
    }

    /**
     * @throws Exception
     * @return ?stdClass
     */
    public function toItemDelivery(): ?stdClass {
        if (Parameter::validateItemDelivery($this->itemDelivery))  {
            if (!is_null($this->itemDelivery)) {
                return $this->itemDelivery->to(); /*class*/
            } else {
                return  null;
            }
        }
        throw new Exception('never get to this Parameter::itemDelivery');
    }

    /**
     * @param ItemDelivery|null
     * @return bool
     * @throws Exception
     */
    public static function validateItemDelivery(?ItemDelivery $value): bool {
        if (!is_null($value)) {
            $value->validate();
        }
        return true;
    }

    /**
     * @throws Exception
     * @return ?ItemDelivery
     */
    public function getItemDelivery(): ?ItemDelivery {
        if (Parameter::validateItemDelivery($this->itemDelivery))  {
            return $this->itemDelivery;
        }
        throw new Exception('never get to getItemDelivery Parameter::itemDelivery');
    }

    /**
     * @return ?ItemDelivery
     */
    public static function sampleItemDelivery(): ?ItemDelivery {
        return ItemDelivery::sample(); /*33:itemDelivery*/
    }

    /**
     * @param ?stdClass $value
     * @throws Exception
     * @return ?Matcher
     */
    public static function fromMatcher(?stdClass $value): ?Matcher {
        if (!is_null($value)) {
            return Matcher::from($value); /*class*/
        } else {
            return  null;
        }
    }

    /**
     * @throws Exception
     * @return ?stdClass
     */
    public function toMatcher(): ?stdClass {
        if (Parameter::validateMatcher($this->matcher))  {
            if (!is_null($this->matcher)) {
                return $this->matcher->to(); /*class*/
            } else {
                return  null;
            }
        }
        throw new Exception('never get to this Parameter::matcher');
    }

    /**
     * @param Matcher|null
     * @return bool
     * @throws Exception
     */
    public static function validateMatcher(?Matcher $value): bool {
        if (!is_null($value)) {
            $value->validate();
        }
        return true;
    }

    /**
     * @throws Exception
     * @return ?Matcher
     */
    public function getMatcher(): ?Matcher {
        if (Parameter::validateMatcher($this->matcher))  {
            return $this->matcher;
        }
        throw new Exception('never get to getMatcher Parameter::matcher');
    }

    /**
     * @return ?Matcher
     */
    public static function sampleMatcher(): ?Matcher {
        return Matcher::sample(); /*34:matcher*/
    }

    /**
     * @throws Exception
     * @return bool
     */
    public function validate(): bool {
        return Parameter::validateKey($this->key)
        || Parameter::validateBoolean($this->boolean)
        || Parameter::validateItemDelivery($this->itemDelivery)
        || Parameter::validateMatcher($this->matcher);
    }

    /**
     * @return stdClass
     * @throws Exception
     */
    public function to(): stdClass  {
        $out = new stdClass();
        $out->{'_key'} = $this->toKey();
        $out->{'boolean'} = $this->toBoolean();
        $out->{'itemDelivery'} = $this->toItemDelivery();
        $out->{'matcher'} = $this->toMatcher();
        return $out;
    }

    /**
     * @param stdClass $obj
     * @return Parameter
     * @throws Exception
     */
    public static function from(stdClass $obj): Parameter {
        return new Parameter(
         Parameter::fromKey($obj->{'_key'})
        ,Parameter::fromBoolean($obj->{'boolean'})
        ,Parameter::fromItemDelivery($obj->{'itemDelivery'})
        ,Parameter::fromMatcher($obj->{'matcher'})
        );
    }

    /**
     * @return Parameter
     */
    public static function sample(): Parameter {
        return new Parameter(
         Parameter::sampleKey()
        ,Parameter::sampleBoolean()
        ,Parameter::sampleItemDelivery()
        ,Parameter::sampleMatcher()
        );
    }
}

// This is an autogenerated file:Boolean

class Boolean {
    private ChoiceLabel $choiceLabel; // json:choiceLabel Required
    private bool $default; // json:default Required
    private BooleanDescription $description; // json:description Required
    private BooleanIconId $iconId; // json:iconID Required
    private OptionFalse $optionFalse; // json:optionFalse Required
    private OptionTrue $optionTrue; // json:optionTrue Required
    private BooleanTitle $title; // json:title Required

    /**
     * @param ChoiceLabel $choiceLabel
     * @param bool $default
     * @param BooleanDescription $description
     * @param BooleanIconId $iconId
     * @param OptionFalse $optionFalse
     * @param OptionTrue $optionTrue
     * @param BooleanTitle $title
     */
    public function __construct(ChoiceLabel $choiceLabel, bool $default, BooleanDescription $description, BooleanIconId $iconId, OptionFalse $optionFalse, OptionTrue $optionTrue, BooleanTitle $title) {
        $this->choiceLabel = $choiceLabel;
        $this->default = $default;
        $this->description = $description;
        $this->iconId = $iconId;
        $this->optionFalse = $optionFalse;
        $this->optionTrue = $optionTrue;
        $this->title = $title;
    }

    /**
     * @param stdClass $value
     * @throws Exception
     * @return ChoiceLabel
     */
    public static function fromChoiceLabel(stdClass $value): ChoiceLabel {
        return ChoiceLabel::from($value); /*class*/
    }

    /**
     * @throws Exception
     * @return stdClass
     */
    public function toChoiceLabel(): stdClass {
        if (Boolean::validateChoiceLabel($this->choiceLabel))  {
            return $this->choiceLabel->to(); /*class*/
        }
        throw new Exception('never get to this Boolean::choiceLabel');
    }

    /**
     * @param ChoiceLabel
     * @return bool
     * @throws Exception
     */
    public static function validateChoiceLabel(ChoiceLabel $value): bool {
        $value->validate();
        return true;
    }

    /**
     * @throws Exception
     * @return ChoiceLabel
     */
    public function getChoiceLabel(): ChoiceLabel {
        if (Boolean::validateChoiceLabel($this->choiceLabel))  {
            return $this->choiceLabel;
        }
        throw new Exception('never get to getChoiceLabel Boolean::choiceLabel');
    }

    /**
     * @return ChoiceLabel
     */
    public static function sampleChoiceLabel(): ChoiceLabel {
        return ChoiceLabel::sample(); /*31:choiceLabel*/
    }

    /**
     * @param bool $value
     * @throws Exception
     * @return bool
     */
    public static function fromDefault(bool $value): bool {
        return $value; /*bool*/
    }

    /**
     * @throws Exception
     * @return bool
     */
    public function toDefault(): bool {
        if (Boolean::validateDefault($this->default))  {
            return $this->default; /*bool*/
        }
        throw new Exception('never get to this Boolean::default');
    }

    /**
     * @param bool
     * @return bool
     * @throws Exception
     */
    public static function validateDefault(bool $value): bool {
        if (!is_bool($value)) {
            throw new Exception("Attribute Error:Boolean::default");
        }
        return true;
    }

    /**
     * @throws Exception
     * @return bool
     */
    public function getDefault(): bool {
        if (Boolean::validateDefault($this->default))  {
            return $this->default;
        }
        throw new Exception('never get to getDefault Boolean::default');
    }

    /**
     * @return bool
     */
    public static function sampleDefault(): bool {
        return true; /*32:default*/
    }

    /**
     * @param stdClass $value
     * @throws Exception
     * @return BooleanDescription
     */
    public static function fromDescription(stdClass $value): BooleanDescription {
        return BooleanDescription::from($value); /*class*/
    }

    /**
     * @throws Exception
     * @return stdClass
     */
    public function toDescription(): stdClass {
        if (Boolean::validateDescription($this->description))  {
            return $this->description->to(); /*class*/
        }
        throw new Exception('never get to this Boolean::description');
    }

    /**
     * @param BooleanDescription
     * @return bool
     * @throws Exception
     */
    public static function validateDescription(BooleanDescription $value): bool {
        $value->validate();
        return true;
    }

    /**
     * @throws Exception
     * @return BooleanDescription
     */
    public function getDescription(): BooleanDescription {
        if (Boolean::validateDescription($this->description))  {
            return $this->description;
        }
        throw new Exception('never get to getDescription Boolean::description');
    }

    /**
     * @return BooleanDescription
     */
    public static function sampleDescription(): BooleanDescription {
        return BooleanDescription::sample(); /*33:description*/
    }

    /**
     * @param string $value
     * @throws Exception
     * @return BooleanIconId
     */
    public static function fromIconId(string $value): BooleanIconId {
        return BooleanIconId::from($value); /*enum*/
    }

    /**
     * @throws Exception
     * @return string
     */
    public function toIconId(): string {
        if (Boolean::validateIconId($this->iconId))  {
            return BooleanIconId::to($this->iconId); /*enum*/
        }
        throw new Exception('never get to this Boolean::iconId');
    }

    /**
     * @param BooleanIconId
     * @return bool
     * @throws Exception
     */
    public static function validateIconId(BooleanIconId $value): bool {
        BooleanIconId::to($value);
        return true;
    }

    /**
     * @throws Exception
     * @return BooleanIconId
     */
    public function getIconId(): BooleanIconId {
        if (Boolean::validateIconId($this->iconId))  {
            return $this->iconId;
        }
        throw new Exception('never get to getIconId Boolean::iconId');
    }

    /**
     * @return BooleanIconId
     */
    public static function sampleIconId(): BooleanIconId {
        return BooleanIconId::sample(); /*enum*/
    }

    /**
     * @param stdClass $value
     * @throws Exception
     * @return OptionFalse
     */
    public static function fromOptionFalse(stdClass $value): OptionFalse {
        return OptionFalse::from($value); /*class*/
    }

    /**
     * @throws Exception
     * @return stdClass
     */
    public function toOptionFalse(): stdClass {
        if (Boolean::validateOptionFalse($this->optionFalse))  {
            return $this->optionFalse->to(); /*class*/
        }
        throw new Exception('never get to this Boolean::optionFalse');
    }

    /**
     * @param OptionFalse
     * @return bool
     * @throws Exception
     */
    public static function validateOptionFalse(OptionFalse $value): bool {
        $value->validate();
        return true;
    }

    /**
     * @throws Exception
     * @return OptionFalse
     */
    public function getOptionFalse(): OptionFalse {
        if (Boolean::validateOptionFalse($this->optionFalse))  {
            return $this->optionFalse;
        }
        throw new Exception('never get to getOptionFalse Boolean::optionFalse');
    }

    /**
     * @return OptionFalse
     */
    public static function sampleOptionFalse(): OptionFalse {
        return OptionFalse::sample(); /*35:optionFalse*/
    }

    /**
     * @param stdClass $value
     * @throws Exception
     * @return OptionTrue
     */
    public static function fromOptionTrue(stdClass $value): OptionTrue {
        return OptionTrue::from($value); /*class*/
    }

    /**
     * @throws Exception
     * @return stdClass
     */
    public function toOptionTrue(): stdClass {
        if (Boolean::validateOptionTrue($this->optionTrue))  {
            return $this->optionTrue->to(); /*class*/
        }
        throw new Exception('never get to this Boolean::optionTrue');
    }

    /**
     * @param OptionTrue
     * @return bool
     * @throws Exception
     */
    public static function validateOptionTrue(OptionTrue $value): bool {
        $value->validate();
        return true;
    }

    /**
     * @throws Exception
     * @return OptionTrue
     */
    public function getOptionTrue(): OptionTrue {
        if (Boolean::validateOptionTrue($this->optionTrue))  {
            return $this->optionTrue;
        }
        throw new Exception('never get to getOptionTrue Boolean::optionTrue');
    }

    /**
     * @return OptionTrue
     */
    public static function sampleOptionTrue(): OptionTrue {
        return OptionTrue::sample(); /*36:optionTrue*/
    }

    /**
     * @param stdClass $value
     * @throws Exception
     * @return BooleanTitle
     */
    public static function fromTitle(stdClass $value): BooleanTitle {
        return BooleanTitle::from($value); /*class*/
    }

    /**
     * @throws Exception
     * @return stdClass
     */
    public function toTitle(): stdClass {
        if (Boolean::validateTitle($this->title))  {
            return $this->title->to(); /*class*/
        }
        throw new Exception('never get to this Boolean::title');
    }

    /**
     * @param BooleanTitle
     * @return bool
     * @throws Exception
     */
    public static function validateTitle(BooleanTitle $value): bool {
        $value->validate();
        return true;
    }

    /**
     * @throws Exception
     * @return BooleanTitle
     */
    public function getTitle(): BooleanTitle {
        if (Boolean::validateTitle($this->title))  {
            return $this->title;
        }
        throw new Exception('never get to getTitle Boolean::title');
    }

    /**
     * @return BooleanTitle
     */
    public static function sampleTitle(): BooleanTitle {
        return BooleanTitle::sample(); /*37:title*/
    }

    /**
     * @throws Exception
     * @return bool
     */
    public function validate(): bool {
        return Boolean::validateChoiceLabel($this->choiceLabel)
        || Boolean::validateDefault($this->default)
        || Boolean::validateDescription($this->description)
        || Boolean::validateIconId($this->iconId)
        || Boolean::validateOptionFalse($this->optionFalse)
        || Boolean::validateOptionTrue($this->optionTrue)
        || Boolean::validateTitle($this->title);
    }

    /**
     * @return stdClass
     * @throws Exception
     */
    public function to(): stdClass  {
        $out = new stdClass();
        $out->{'choiceLabel'} = $this->toChoiceLabel();
        $out->{'default'} = $this->toDefault();
        $out->{'description'} = $this->toDescription();
        $out->{'iconID'} = $this->toIconId();
        $out->{'optionFalse'} = $this->toOptionFalse();
        $out->{'optionTrue'} = $this->toOptionTrue();
        $out->{'title'} = $this->toTitle();
        return $out;
    }

    /**
     * @param stdClass $obj
     * @return Boolean
     * @throws Exception
     */
    public static function from(stdClass $obj): Boolean {
        return new Boolean(
         Boolean::fromChoiceLabel($obj->{'choiceLabel'})
        ,Boolean::fromDefault($obj->{'default'})
        ,Boolean::fromDescription($obj->{'description'})
        ,Boolean::fromIconId($obj->{'iconID'})
        ,Boolean::fromOptionFalse($obj->{'optionFalse'})
        ,Boolean::fromOptionTrue($obj->{'optionTrue'})
        ,Boolean::fromTitle($obj->{'title'})
        );
    }

    /**
     * @return Boolean
     */
    public static function sample(): Boolean {
        return new Boolean(
         Boolean::sampleChoiceLabel()
        ,Boolean::sampleDefault()
        ,Boolean::sampleDescription()
        ,Boolean::sampleIconId()
        ,Boolean::sampleOptionFalse()
        ,Boolean::sampleOptionTrue()
        ,Boolean::sampleTitle()
        );
    }
}

// This is an autogenerated file:ChoiceLabel

class ChoiceLabel {
    private string $de; // json:de Required
    private string $en; // json:en Required
    private string $es; // json:es Required
    private string $fr; // json:fr Required
    private string $ja; // json:ja Required
    private string $ko; // json:ko Required
    private string $ru; // json:ru Required
    private string $zh; // json:zh Required

    /**
     * @param string $de
     * @param string $en
     * @param string $es
     * @param string $fr
     * @param string $ja
     * @param string $ko
     * @param string $ru
     * @param string $zh
     */
    public function __construct(string $de, string $en, string $es, string $fr, string $ja, string $ko, string $ru, string $zh) {
        $this->de = $de;
        $this->en = $en;
        $this->es = $es;
        $this->fr = $fr;
        $this->ja = $ja;
        $this->ko = $ko;
        $this->ru = $ru;
        $this->zh = $zh;
    }

    /**
     * @param string $value
     * @throws Exception
     * @return string
     */
    public static function fromDe(string $value): string {
        return $value; /*string*/
    }

    /**
     * @throws Exception
     * @return string
     */
    public function toDe(): string {
        if (ChoiceLabel::validateDe($this->de))  {
            return $this->de; /*string*/
        }
        throw new Exception('never get to this ChoiceLabel::de');
    }

    /**
     * @param string
     * @return bool
     * @throws Exception
     */
    public static function validateDe(string $value): bool {
        if (!is_string($value)) {
            throw new Exception("Attribute Error:ChoiceLabel::de");
        }
        return true;
    }

    /**
     * @throws Exception
     * @return string
     */
    public function getDe(): string {
        if (ChoiceLabel::validateDe($this->de))  {
            return $this->de;
        }
        throw new Exception('never get to getDe ChoiceLabel::de');
    }

    /**
     * @return string
     */
    public static function sampleDe(): string {
        return 'ChoiceLabel::de::31'; /*31:de*/
    }

    /**
     * @param string $value
     * @throws Exception
     * @return string
     */
    public static function fromEn(string $value): string {
        return $value; /*string*/
    }

    /**
     * @throws Exception
     * @return string
     */
    public function toEn(): string {
        if (ChoiceLabel::validateEn($this->en))  {
            return $this->en; /*string*/
        }
        throw new Exception('never get to this ChoiceLabel::en');
    }

    /**
     * @param string
     * @return bool
     * @throws Exception
     */
    public static function validateEn(string $value): bool {
        if (!is_string($value)) {
            throw new Exception("Attribute Error:ChoiceLabel::en");
        }
        return true;
    }

    /**
     * @throws Exception
     * @return string
     */
    public function getEn(): string {
        if (ChoiceLabel::validateEn($this->en))  {
            return $this->en;
        }
        throw new Exception('never get to getEn ChoiceLabel::en');
    }

    /**
     * @return string
     */
    public static function sampleEn(): string {
        return 'ChoiceLabel::en::32'; /*32:en*/
    }

    /**
     * @param string $value
     * @throws Exception
     * @return string
     */
    public static function fromEs(string $value): string {
        return $value; /*string*/
    }

    /**
     * @throws Exception
     * @return string
     */
    public function toEs(): string {
        if (ChoiceLabel::validateEs($this->es))  {
            return $this->es; /*string*/
        }
        throw new Exception('never get to this ChoiceLabel::es');
    }

    /**
     * @param string
     * @return bool
     * @throws Exception
     */
    public static function validateEs(string $value): bool {
        if (!is_string($value)) {
            throw new Exception("Attribute Error:ChoiceLabel::es");
        }
        return true;
    }

    /**
     * @throws Exception
     * @return string
     */
    public function getEs(): string {
        if (ChoiceLabel::validateEs($this->es))  {
            return $this->es;
        }
        throw new Exception('never get to getEs ChoiceLabel::es');
    }

    /**
     * @return string
     */
    public static function sampleEs(): string {
        return 'ChoiceLabel::es::33'; /*33:es*/
    }

    /**
     * @param string $value
     * @throws Exception
     * @return string
     */
    public static function fromFr(string $value): string {
        return $value; /*string*/
    }

    /**
     * @throws Exception
     * @return string
     */
    public function toFr(): string {
        if (ChoiceLabel::validateFr($this->fr))  {
            return $this->fr; /*string*/
        }
        throw new Exception('never get to this ChoiceLabel::fr');
    }

    /**
     * @param string
     * @return bool
     * @throws Exception
     */
    public static function validateFr(string $value): bool {
        if (!is_string($value)) {
            throw new Exception("Attribute Error:ChoiceLabel::fr");
        }
        return true;
    }

    /**
     * @throws Exception
     * @return string
     */
    public function getFr(): string {
        if (ChoiceLabel::validateFr($this->fr))  {
            return $this->fr;
        }
        throw new Exception('never get to getFr ChoiceLabel::fr');
    }

    /**
     * @return string
     */
    public static function sampleFr(): string {
        return 'ChoiceLabel::fr::34'; /*34:fr*/
    }

    /**
     * @param string $value
     * @throws Exception
     * @return string
     */
    public static function fromJa(string $value): string {
        return $value; /*string*/
    }

    /**
     * @throws Exception
     * @return string
     */
    public function toJa(): string {
        if (ChoiceLabel::validateJa($this->ja))  {
            return $this->ja; /*string*/
        }
        throw new Exception('never get to this ChoiceLabel::ja');
    }

    /**
     * @param string
     * @return bool
     * @throws Exception
     */
    public static function validateJa(string $value): bool {
        if (!is_string($value)) {
            throw new Exception("Attribute Error:ChoiceLabel::ja");
        }
        return true;
    }

    /**
     * @throws Exception
     * @return string
     */
    public function getJa(): string {
        if (ChoiceLabel::validateJa($this->ja))  {
            return $this->ja;
        }
        throw new Exception('never get to getJa ChoiceLabel::ja');
    }

    /**
     * @return string
     */
    public static function sampleJa(): string {
        return 'ChoiceLabel::ja::35'; /*35:ja*/
    }

    /**
     * @param string $value
     * @throws Exception
     * @return string
     */
    public static function fromKo(string $value): string {
        return $value; /*string*/
    }

    /**
     * @throws Exception
     * @return string
     */
    public function toKo(): string {
        if (ChoiceLabel::validateKo($this->ko))  {
            return $this->ko; /*string*/
        }
        throw new Exception('never get to this ChoiceLabel::ko');
    }

    /**
     * @param string
     * @return bool
     * @throws Exception
     */
    public static function validateKo(string $value): bool {
        if (!is_string($value)) {
            throw new Exception("Attribute Error:ChoiceLabel::ko");
        }
        return true;
    }

    /**
     * @throws Exception
     * @return string
     */
    public function getKo(): string {
        if (ChoiceLabel::validateKo($this->ko))  {
            return $this->ko;
        }
        throw new Exception('never get to getKo ChoiceLabel::ko');
    }

    /**
     * @return string
     */
    public static function sampleKo(): string {
        return 'ChoiceLabel::ko::36'; /*36:ko*/
    }

    /**
     * @param string $value
     * @throws Exception
     * @return string
     */
    public static function fromRu(string $value): string {
        return $value; /*string*/
    }

    /**
     * @throws Exception
     * @return string
     */
    public function toRu(): string {
        if (ChoiceLabel::validateRu($this->ru))  {
            return $this->ru; /*string*/
        }
        throw new Exception('never get to this ChoiceLabel::ru');
    }

    /**
     * @param string
     * @return bool
     * @throws Exception
     */
    public static function validateRu(string $value): bool {
        if (!is_string($value)) {
            throw new Exception("Attribute Error:ChoiceLabel::ru");
        }
        return true;
    }

    /**
     * @throws Exception
     * @return string
     */
    public function getRu(): string {
        if (ChoiceLabel::validateRu($this->ru))  {
            return $this->ru;
        }
        throw new Exception('never get to getRu ChoiceLabel::ru');
    }

    /**
     * @return string
     */
    public static function sampleRu(): string {
        return 'ChoiceLabel::ru::37'; /*37:ru*/
    }

    /**
     * @param string $value
     * @throws Exception
     * @return string
     */
    public static function fromZh(string $value): string {
        return $value; /*string*/
    }

    /**
     * @throws Exception
     * @return string
     */
    public function toZh(): string {
        if (ChoiceLabel::validateZh($this->zh))  {
            return $this->zh; /*string*/
        }
        throw new Exception('never get to this ChoiceLabel::zh');
    }

    /**
     * @param string
     * @return bool
     * @throws Exception
     */
    public static function validateZh(string $value): bool {
        if (!is_string($value)) {
            throw new Exception("Attribute Error:ChoiceLabel::zh");
        }
        return true;
    }

    /**
     * @throws Exception
     * @return string
     */
    public function getZh(): string {
        if (ChoiceLabel::validateZh($this->zh))  {
            return $this->zh;
        }
        throw new Exception('never get to getZh ChoiceLabel::zh');
    }

    /**
     * @return string
     */
    public static function sampleZh(): string {
        return 'ChoiceLabel::zh::38'; /*38:zh*/
    }

    /**
     * @throws Exception
     * @return bool
     */
    public function validate(): bool {
        return ChoiceLabel::validateDe($this->de)
        || ChoiceLabel::validateEn($this->en)
        || ChoiceLabel::validateEs($this->es)
        || ChoiceLabel::validateFr($this->fr)
        || ChoiceLabel::validateJa($this->ja)
        || ChoiceLabel::validateKo($this->ko)
        || ChoiceLabel::validateRu($this->ru)
        || ChoiceLabel::validateZh($this->zh);
    }

    /**
     * @return stdClass
     * @throws Exception
     */
    public function to(): stdClass  {
        $out = new stdClass();
        $out->{'de'} = $this->toDe();
        $out->{'en'} = $this->toEn();
        $out->{'es'} = $this->toEs();
        $out->{'fr'} = $this->toFr();
        $out->{'ja'} = $this->toJa();
        $out->{'ko'} = $this->toKo();
        $out->{'ru'} = $this->toRu();
        $out->{'zh'} = $this->toZh();
        return $out;
    }

    /**
     * @param stdClass $obj
     * @return ChoiceLabel
     * @throws Exception
     */
    public static function from(stdClass $obj): ChoiceLabel {
        return new ChoiceLabel(
         ChoiceLabel::fromDe($obj->{'de'})
        ,ChoiceLabel::fromEn($obj->{'en'})
        ,ChoiceLabel::fromEs($obj->{'es'})
        ,ChoiceLabel::fromFr($obj->{'fr'})
        ,ChoiceLabel::fromJa($obj->{'ja'})
        ,ChoiceLabel::fromKo($obj->{'ko'})
        ,ChoiceLabel::fromRu($obj->{'ru'})
        ,ChoiceLabel::fromZh($obj->{'zh'})
        );
    }

    /**
     * @return ChoiceLabel
     */
    public static function sample(): ChoiceLabel {
        return new ChoiceLabel(
         ChoiceLabel::sampleDe()
        ,ChoiceLabel::sampleEn()
        ,ChoiceLabel::sampleEs()
        ,ChoiceLabel::sampleFr()
        ,ChoiceLabel::sampleJa()
        ,ChoiceLabel::sampleKo()
        ,ChoiceLabel::sampleRu()
        ,ChoiceLabel::sampleZh()
        );
    }
}

// This is an autogenerated file:BooleanDescription

class BooleanDescription {
    private string $de; // json:de Required
    private string $en; // json:en Required
    private string $es; // json:es Required
    private string $fr; // json:fr Required
    private string $ja; // json:ja Required
    private string $ko; // json:ko Required
    private string $ru; // json:ru Required
    private string $zh; // json:zh Required

    /**
     * @param string $de
     * @param string $en
     * @param string $es
     * @param string $fr
     * @param string $ja
     * @param string $ko
     * @param string $ru
     * @param string $zh
     */
    public function __construct(string $de, string $en, string $es, string $fr, string $ja, string $ko, string $ru, string $zh) {
        $this->de = $de;
        $this->en = $en;
        $this->es = $es;
        $this->fr = $fr;
        $this->ja = $ja;
        $this->ko = $ko;
        $this->ru = $ru;
        $this->zh = $zh;
    }

    /**
     * @param string $value
     * @throws Exception
     * @return string
     */
    public static function fromDe(string $value): string {
        return $value; /*string*/
    }

    /**
     * @throws Exception
     * @return string
     */
    public function toDe(): string {
        if (BooleanDescription::validateDe($this->de))  {
            return $this->de; /*string*/
        }
        throw new Exception('never get to this BooleanDescription::de');
    }

    /**
     * @param string
     * @return bool
     * @throws Exception
     */
    public static function validateDe(string $value): bool {
        if (!is_string($value)) {
            throw new Exception("Attribute Error:BooleanDescription::de");
        }
        return true;
    }

    /**
     * @throws Exception
     * @return string
     */
    public function getDe(): string {
        if (BooleanDescription::validateDe($this->de))  {
            return $this->de;
        }
        throw new Exception('never get to getDe BooleanDescription::de');
    }

    /**
     * @return string
     */
    public static function sampleDe(): string {
        return 'BooleanDescription::de::31'; /*31:de*/
    }

    /**
     * @param string $value
     * @throws Exception
     * @return string
     */
    public static function fromEn(string $value): string {
        return $value; /*string*/
    }

    /**
     * @throws Exception
     * @return string
     */
    public function toEn(): string {
        if (BooleanDescription::validateEn($this->en))  {
            return $this->en; /*string*/
        }
        throw new Exception('never get to this BooleanDescription::en');
    }

    /**
     * @param string
     * @return bool
     * @throws Exception
     */
    public static function validateEn(string $value): bool {
        if (!is_string($value)) {
            throw new Exception("Attribute Error:BooleanDescription::en");
        }
        return true;
    }

    /**
     * @throws Exception
     * @return string
     */
    public function getEn(): string {
        if (BooleanDescription::validateEn($this->en))  {
            return $this->en;
        }
        throw new Exception('never get to getEn BooleanDescription::en');
    }

    /**
     * @return string
     */
    public static function sampleEn(): string {
        return 'BooleanDescription::en::32'; /*32:en*/
    }

    /**
     * @param string $value
     * @throws Exception
     * @return string
     */
    public static function fromEs(string $value): string {
        return $value; /*string*/
    }

    /**
     * @throws Exception
     * @return string
     */
    public function toEs(): string {
        if (BooleanDescription::validateEs($this->es))  {
            return $this->es; /*string*/
        }
        throw new Exception('never get to this BooleanDescription::es');
    }

    /**
     * @param string
     * @return bool
     * @throws Exception
     */
    public static function validateEs(string $value): bool {
        if (!is_string($value)) {
            throw new Exception("Attribute Error:BooleanDescription::es");
        }
        return true;
    }

    /**
     * @throws Exception
     * @return string
     */
    public function getEs(): string {
        if (BooleanDescription::validateEs($this->es))  {
            return $this->es;
        }
        throw new Exception('never get to getEs BooleanDescription::es');
    }

    /**
     * @return string
     */
    public static function sampleEs(): string {
        return 'BooleanDescription::es::33'; /*33:es*/
    }

    /**
     * @param string $value
     * @throws Exception
     * @return string
     */
    public static function fromFr(string $value): string {
        return $value; /*string*/
    }

    /**
     * @throws Exception
     * @return string
     */
    public function toFr(): string {
        if (BooleanDescription::validateFr($this->fr))  {
            return $this->fr; /*string*/
        }
        throw new Exception('never get to this BooleanDescription::fr');
    }

    /**
     * @param string
     * @return bool
     * @throws Exception
     */
    public static function validateFr(string $value): bool {
        if (!is_string($value)) {
            throw new Exception("Attribute Error:BooleanDescription::fr");
        }
        return true;
    }

    /**
     * @throws Exception
     * @return string
     */
    public function getFr(): string {
        if (BooleanDescription::validateFr($this->fr))  {
            return $this->fr;
        }
        throw new Exception('never get to getFr BooleanDescription::fr');
    }

    /**
     * @return string
     */
    public static function sampleFr(): string {
        return 'BooleanDescription::fr::34'; /*34:fr*/
    }

    /**
     * @param string $value
     * @throws Exception
     * @return string
     */
    public static function fromJa(string $value): string {
        return $value; /*string*/
    }

    /**
     * @throws Exception
     * @return string
     */
    public function toJa(): string {
        if (BooleanDescription::validateJa($this->ja))  {
            return $this->ja; /*string*/
        }
        throw new Exception('never get to this BooleanDescription::ja');
    }

    /**
     * @param string
     * @return bool
     * @throws Exception
     */
    public static function validateJa(string $value): bool {
        if (!is_string($value)) {
            throw new Exception("Attribute Error:BooleanDescription::ja");
        }
        return true;
    }

    /**
     * @throws Exception
     * @return string
     */
    public function getJa(): string {
        if (BooleanDescription::validateJa($this->ja))  {
            return $this->ja;
        }
        throw new Exception('never get to getJa BooleanDescription::ja');
    }

    /**
     * @return string
     */
    public static function sampleJa(): string {
        return 'BooleanDescription::ja::35'; /*35:ja*/
    }

    /**
     * @param string $value
     * @throws Exception
     * @return string
     */
    public static function fromKo(string $value): string {
        return $value; /*string*/
    }

    /**
     * @throws Exception
     * @return string
     */
    public function toKo(): string {
        if (BooleanDescription::validateKo($this->ko))  {
            return $this->ko; /*string*/
        }
        throw new Exception('never get to this BooleanDescription::ko');
    }

    /**
     * @param string
     * @return bool
     * @throws Exception
     */
    public static function validateKo(string $value): bool {
        if (!is_string($value)) {
            throw new Exception("Attribute Error:BooleanDescription::ko");
        }
        return true;
    }

    /**
     * @throws Exception
     * @return string
     */
    public function getKo(): string {
        if (BooleanDescription::validateKo($this->ko))  {
            return $this->ko;
        }
        throw new Exception('never get to getKo BooleanDescription::ko');
    }

    /**
     * @return string
     */
    public static function sampleKo(): string {
        return 'BooleanDescription::ko::36'; /*36:ko*/
    }

    /**
     * @param string $value
     * @throws Exception
     * @return string
     */
    public static function fromRu(string $value): string {
        return $value; /*string*/
    }

    /**
     * @throws Exception
     * @return string
     */
    public function toRu(): string {
        if (BooleanDescription::validateRu($this->ru))  {
            return $this->ru; /*string*/
        }
        throw new Exception('never get to this BooleanDescription::ru');
    }

    /**
     * @param string
     * @return bool
     * @throws Exception
     */
    public static function validateRu(string $value): bool {
        if (!is_string($value)) {
            throw new Exception("Attribute Error:BooleanDescription::ru");
        }
        return true;
    }

    /**
     * @throws Exception
     * @return string
     */
    public function getRu(): string {
        if (BooleanDescription::validateRu($this->ru))  {
            return $this->ru;
        }
        throw new Exception('never get to getRu BooleanDescription::ru');
    }

    /**
     * @return string
     */
    public static function sampleRu(): string {
        return 'BooleanDescription::ru::37'; /*37:ru*/
    }

    /**
     * @param string $value
     * @throws Exception
     * @return string
     */
    public static function fromZh(string $value): string {
        return $value; /*string*/
    }

    /**
     * @throws Exception
     * @return string
     */
    public function toZh(): string {
        if (BooleanDescription::validateZh($this->zh))  {
            return $this->zh; /*string*/
        }
        throw new Exception('never get to this BooleanDescription::zh');
    }

    /**
     * @param string
     * @return bool
     * @throws Exception
     */
    public static function validateZh(string $value): bool {
        if (!is_string($value)) {
            throw new Exception("Attribute Error:BooleanDescription::zh");
        }
        return true;
    }

    /**
     * @throws Exception
     * @return string
     */
    public function getZh(): string {
        if (BooleanDescription::validateZh($this->zh))  {
            return $this->zh;
        }
        throw new Exception('never get to getZh BooleanDescription::zh');
    }

    /**
     * @return string
     */
    public static function sampleZh(): string {
        return 'BooleanDescription::zh::38'; /*38:zh*/
    }

    /**
     * @throws Exception
     * @return bool
     */
    public function validate(): bool {
        return BooleanDescription::validateDe($this->de)
        || BooleanDescription::validateEn($this->en)
        || BooleanDescription::validateEs($this->es)
        || BooleanDescription::validateFr($this->fr)
        || BooleanDescription::validateJa($this->ja)
        || BooleanDescription::validateKo($this->ko)
        || BooleanDescription::validateRu($this->ru)
        || BooleanDescription::validateZh($this->zh);
    }

    /**
     * @return stdClass
     * @throws Exception
     */
    public function to(): stdClass  {
        $out = new stdClass();
        $out->{'de'} = $this->toDe();
        $out->{'en'} = $this->toEn();
        $out->{'es'} = $this->toEs();
        $out->{'fr'} = $this->toFr();
        $out->{'ja'} = $this->toJa();
        $out->{'ko'} = $this->toKo();
        $out->{'ru'} = $this->toRu();
        $out->{'zh'} = $this->toZh();
        return $out;
    }

    /**
     * @param stdClass $obj
     * @return BooleanDescription
     * @throws Exception
     */
    public static function from(stdClass $obj): BooleanDescription {
        return new BooleanDescription(
         BooleanDescription::fromDe($obj->{'de'})
        ,BooleanDescription::fromEn($obj->{'en'})
        ,BooleanDescription::fromEs($obj->{'es'})
        ,BooleanDescription::fromFr($obj->{'fr'})
        ,BooleanDescription::fromJa($obj->{'ja'})
        ,BooleanDescription::fromKo($obj->{'ko'})
        ,BooleanDescription::fromRu($obj->{'ru'})
        ,BooleanDescription::fromZh($obj->{'zh'})
        );
    }

    /**
     * @return BooleanDescription
     */
    public static function sample(): BooleanDescription {
        return new BooleanDescription(
         BooleanDescription::sampleDe()
        ,BooleanDescription::sampleEn()
        ,BooleanDescription::sampleEs()
        ,BooleanDescription::sampleFr()
        ,BooleanDescription::sampleJa()
        ,BooleanDescription::sampleKo()
        ,BooleanDescription::sampleRu()
        ,BooleanDescription::sampleZh()
        );
    }
}

// This is an autogenerated file:BooleanIconId

class BooleanIconId {
    public static BooleanIconId $PERSON;
    public static function init() {
        BooleanIconId::$PERSON = new BooleanIconId('person');
    }
    private string $enum;
    public function __construct(string $enum) {
        $this->enum = $enum;
    }

    /**
     * @param BooleanIconId
     * @return string
     * @throws Exception
     */
    public static function to(BooleanIconId $obj): string {
        switch ($obj->enum) {
            case BooleanIconId::$PERSON->enum: return 'person';
        }
        throw new Exception('the give value is not an enum-value.');
    }

    /**
     * @param mixed
     * @return BooleanIconId
     * @throws Exception
     */
    public static function from($obj): BooleanIconId {
        switch ($obj) {
            case 'person': return BooleanIconId::$PERSON;
        }
        throw new Exception("Cannot deserialize BooleanIconId");
    }

    /**
     * @return BooleanIconId
     */
    public static function sample(): BooleanIconId {
        return BooleanIconId::$PERSON;
    }
}
BooleanIconId::init();

// This is an autogenerated file:OptionFalse

class OptionFalse {
    private OptionFalseDescription $description; // json:description Required
    private OptionFalseTitle $title; // json:title Required

    /**
     * @param OptionFalseDescription $description
     * @param OptionFalseTitle $title
     */
    public function __construct(OptionFalseDescription $description, OptionFalseTitle $title) {
        $this->description = $description;
        $this->title = $title;
    }

    /**
     * @param stdClass $value
     * @throws Exception
     * @return OptionFalseDescription
     */
    public static function fromDescription(stdClass $value): OptionFalseDescription {
        return OptionFalseDescription::from($value); /*class*/
    }

    /**
     * @throws Exception
     * @return stdClass
     */
    public function toDescription(): stdClass {
        if (OptionFalse::validateDescription($this->description))  {
            return $this->description->to(); /*class*/
        }
        throw new Exception('never get to this OptionFalse::description');
    }

    /**
     * @param OptionFalseDescription
     * @return bool
     * @throws Exception
     */
    public static function validateDescription(OptionFalseDescription $value): bool {
        $value->validate();
        return true;
    }

    /**
     * @throws Exception
     * @return OptionFalseDescription
     */
    public function getDescription(): OptionFalseDescription {
        if (OptionFalse::validateDescription($this->description))  {
            return $this->description;
        }
        throw new Exception('never get to getDescription OptionFalse::description');
    }

    /**
     * @return OptionFalseDescription
     */
    public static function sampleDescription(): OptionFalseDescription {
        return OptionFalseDescription::sample(); /*31:description*/
    }

    /**
     * @param stdClass $value
     * @throws Exception
     * @return OptionFalseTitle
     */
    public static function fromTitle(stdClass $value): OptionFalseTitle {
        return OptionFalseTitle::from($value); /*class*/
    }

    /**
     * @throws Exception
     * @return stdClass
     */
    public function toTitle(): stdClass {
        if (OptionFalse::validateTitle($this->title))  {
            return $this->title->to(); /*class*/
        }
        throw new Exception('never get to this OptionFalse::title');
    }

    /**
     * @param OptionFalseTitle
     * @return bool
     * @throws Exception
     */
    public static function validateTitle(OptionFalseTitle $value): bool {
        $value->validate();
        return true;
    }

    /**
     * @throws Exception
     * @return OptionFalseTitle
     */
    public function getTitle(): OptionFalseTitle {
        if (OptionFalse::validateTitle($this->title))  {
            return $this->title;
        }
        throw new Exception('never get to getTitle OptionFalse::title');
    }

    /**
     * @return OptionFalseTitle
     */
    public static function sampleTitle(): OptionFalseTitle {
        return OptionFalseTitle::sample(); /*32:title*/
    }

    /**
     * @throws Exception
     * @return bool
     */
    public function validate(): bool {
        return OptionFalse::validateDescription($this->description)
        || OptionFalse::validateTitle($this->title);
    }

    /**
     * @return stdClass
     * @throws Exception
     */
    public function to(): stdClass  {
        $out = new stdClass();
        $out->{'description'} = $this->toDescription();
        $out->{'title'} = $this->toTitle();
        return $out;
    }

    /**
     * @param stdClass $obj
     * @return OptionFalse
     * @throws Exception
     */
    public static function from(stdClass $obj): OptionFalse {
        return new OptionFalse(
         OptionFalse::fromDescription($obj->{'description'})
        ,OptionFalse::fromTitle($obj->{'title'})
        );
    }

    /**
     * @return OptionFalse
     */
    public static function sample(): OptionFalse {
        return new OptionFalse(
         OptionFalse::sampleDescription()
        ,OptionFalse::sampleTitle()
        );
    }
}

// This is an autogenerated file:OptionFalseDescription

class OptionFalseDescription {
    private string $de; // json:de Required
    private string $en; // json:en Required
    private string $es; // json:es Required
    private string $fr; // json:fr Required
    private string $ja; // json:ja Required
    private string $ko; // json:ko Required
    private string $ru; // json:ru Required
    private string $zh; // json:zh Required

    /**
     * @param string $de
     * @param string $en
     * @param string $es
     * @param string $fr
     * @param string $ja
     * @param string $ko
     * @param string $ru
     * @param string $zh
     */
    public function __construct(string $de, string $en, string $es, string $fr, string $ja, string $ko, string $ru, string $zh) {
        $this->de = $de;
        $this->en = $en;
        $this->es = $es;
        $this->fr = $fr;
        $this->ja = $ja;
        $this->ko = $ko;
        $this->ru = $ru;
        $this->zh = $zh;
    }

    /**
     * @param string $value
     * @throws Exception
     * @return string
     */
    public static function fromDe(string $value): string {
        return $value; /*string*/
    }

    /**
     * @throws Exception
     * @return string
     */
    public function toDe(): string {
        if (OptionFalseDescription::validateDe($this->de))  {
            return $this->de; /*string*/
        }
        throw new Exception('never get to this OptionFalseDescription::de');
    }

    /**
     * @param string
     * @return bool
     * @throws Exception
     */
    public static function validateDe(string $value): bool {
        if (!is_string($value)) {
            throw new Exception("Attribute Error:OptionFalseDescription::de");
        }
        return true;
    }

    /**
     * @throws Exception
     * @return string
     */
    public function getDe(): string {
        if (OptionFalseDescription::validateDe($this->de))  {
            return $this->de;
        }
        throw new Exception('never get to getDe OptionFalseDescription::de');
    }

    /**
     * @return string
     */
    public static function sampleDe(): string {
        return 'OptionFalseDescription::de::31'; /*31:de*/
    }

    /**
     * @param string $value
     * @throws Exception
     * @return string
     */
    public static function fromEn(string $value): string {
        return $value; /*string*/
    }

    /**
     * @throws Exception
     * @return string
     */
    public function toEn(): string {
        if (OptionFalseDescription::validateEn($this->en))  {
            return $this->en; /*string*/
        }
        throw new Exception('never get to this OptionFalseDescription::en');
    }

    /**
     * @param string
     * @return bool
     * @throws Exception
     */
    public static function validateEn(string $value): bool {
        if (!is_string($value)) {
            throw new Exception("Attribute Error:OptionFalseDescription::en");
        }
        return true;
    }

    /**
     * @throws Exception
     * @return string
     */
    public function getEn(): string {
        if (OptionFalseDescription::validateEn($this->en))  {
            return $this->en;
        }
        throw new Exception('never get to getEn OptionFalseDescription::en');
    }

    /**
     * @return string
     */
    public static function sampleEn(): string {
        return 'OptionFalseDescription::en::32'; /*32:en*/
    }

    /**
     * @param string $value
     * @throws Exception
     * @return string
     */
    public static function fromEs(string $value): string {
        return $value; /*string*/
    }

    /**
     * @throws Exception
     * @return string
     */
    public function toEs(): string {
        if (OptionFalseDescription::validateEs($this->es))  {
            return $this->es; /*string*/
        }
        throw new Exception('never get to this OptionFalseDescription::es');
    }

    /**
     * @param string
     * @return bool
     * @throws Exception
     */
    public static function validateEs(string $value): bool {
        if (!is_string($value)) {
            throw new Exception("Attribute Error:OptionFalseDescription::es");
        }
        return true;
    }

    /**
     * @throws Exception
     * @return string
     */
    public function getEs(): string {
        if (OptionFalseDescription::validateEs($this->es))  {
            return $this->es;
        }
        throw new Exception('never get to getEs OptionFalseDescription::es');
    }

    /**
     * @return string
     */
    public static function sampleEs(): string {
        return 'OptionFalseDescription::es::33'; /*33:es*/
    }

    /**
     * @param string $value
     * @throws Exception
     * @return string
     */
    public static function fromFr(string $value): string {
        return $value; /*string*/
    }

    /**
     * @throws Exception
     * @return string
     */
    public function toFr(): string {
        if (OptionFalseDescription::validateFr($this->fr))  {
            return $this->fr; /*string*/
        }
        throw new Exception('never get to this OptionFalseDescription::fr');
    }

    /**
     * @param string
     * @return bool
     * @throws Exception
     */
    public static function validateFr(string $value): bool {
        if (!is_string($value)) {
            throw new Exception("Attribute Error:OptionFalseDescription::fr");
        }
        return true;
    }

    /**
     * @throws Exception
     * @return string
     */
    public function getFr(): string {
        if (OptionFalseDescription::validateFr($this->fr))  {
            return $this->fr;
        }
        throw new Exception('never get to getFr OptionFalseDescription::fr');
    }

    /**
     * @return string
     */
    public static function sampleFr(): string {
        return 'OptionFalseDescription::fr::34'; /*34:fr*/
    }

    /**
     * @param string $value
     * @throws Exception
     * @return string
     */
    public static function fromJa(string $value): string {
        return $value; /*string*/
    }

    /**
     * @throws Exception
     * @return string
     */
    public function toJa(): string {
        if (OptionFalseDescription::validateJa($this->ja))  {
            return $this->ja; /*string*/
        }
        throw new Exception('never get to this OptionFalseDescription::ja');
    }

    /**
     * @param string
     * @return bool
     * @throws Exception
     */
    public static function validateJa(string $value): bool {
        if (!is_string($value)) {
            throw new Exception("Attribute Error:OptionFalseDescription::ja");
        }
        return true;
    }

    /**
     * @throws Exception
     * @return string
     */
    public function getJa(): string {
        if (OptionFalseDescription::validateJa($this->ja))  {
            return $this->ja;
        }
        throw new Exception('never get to getJa OptionFalseDescription::ja');
    }

    /**
     * @return string
     */
    public static function sampleJa(): string {
        return 'OptionFalseDescription::ja::35'; /*35:ja*/
    }

    /**
     * @param string $value
     * @throws Exception
     * @return string
     */
    public static function fromKo(string $value): string {
        return $value; /*string*/
    }

    /**
     * @throws Exception
     * @return string
     */
    public function toKo(): string {
        if (OptionFalseDescription::validateKo($this->ko))  {
            return $this->ko; /*string*/
        }
        throw new Exception('never get to this OptionFalseDescription::ko');
    }

    /**
     * @param string
     * @return bool
     * @throws Exception
     */
    public static function validateKo(string $value): bool {
        if (!is_string($value)) {
            throw new Exception("Attribute Error:OptionFalseDescription::ko");
        }
        return true;
    }

    /**
     * @throws Exception
     * @return string
     */
    public function getKo(): string {
        if (OptionFalseDescription::validateKo($this->ko))  {
            return $this->ko;
        }
        throw new Exception('never get to getKo OptionFalseDescription::ko');
    }

    /**
     * @return string
     */
    public static function sampleKo(): string {
        return 'OptionFalseDescription::ko::36'; /*36:ko*/
    }

    /**
     * @param string $value
     * @throws Exception
     * @return string
     */
    public static function fromRu(string $value): string {
        return $value; /*string*/
    }

    /**
     * @throws Exception
     * @return string
     */
    public function toRu(): string {
        if (OptionFalseDescription::validateRu($this->ru))  {
            return $this->ru; /*string*/
        }
        throw new Exception('never get to this OptionFalseDescription::ru');
    }

    /**
     * @param string
     * @return bool
     * @throws Exception
     */
    public static function validateRu(string $value): bool {
        if (!is_string($value)) {
            throw new Exception("Attribute Error:OptionFalseDescription::ru");
        }
        return true;
    }

    /**
     * @throws Exception
     * @return string
     */
    public function getRu(): string {
        if (OptionFalseDescription::validateRu($this->ru))  {
            return $this->ru;
        }
        throw new Exception('never get to getRu OptionFalseDescription::ru');
    }

    /**
     * @return string
     */
    public static function sampleRu(): string {
        return 'OptionFalseDescription::ru::37'; /*37:ru*/
    }

    /**
     * @param string $value
     * @throws Exception
     * @return string
     */
    public static function fromZh(string $value): string {
        return $value; /*string*/
    }

    /**
     * @throws Exception
     * @return string
     */
    public function toZh(): string {
        if (OptionFalseDescription::validateZh($this->zh))  {
            return $this->zh; /*string*/
        }
        throw new Exception('never get to this OptionFalseDescription::zh');
    }

    /**
     * @param string
     * @return bool
     * @throws Exception
     */
    public static function validateZh(string $value): bool {
        if (!is_string($value)) {
            throw new Exception("Attribute Error:OptionFalseDescription::zh");
        }
        return true;
    }

    /**
     * @throws Exception
     * @return string
     */
    public function getZh(): string {
        if (OptionFalseDescription::validateZh($this->zh))  {
            return $this->zh;
        }
        throw new Exception('never get to getZh OptionFalseDescription::zh');
    }

    /**
     * @return string
     */
    public static function sampleZh(): string {
        return 'OptionFalseDescription::zh::38'; /*38:zh*/
    }

    /**
     * @throws Exception
     * @return bool
     */
    public function validate(): bool {
        return OptionFalseDescription::validateDe($this->de)
        || OptionFalseDescription::validateEn($this->en)
        || OptionFalseDescription::validateEs($this->es)
        || OptionFalseDescription::validateFr($this->fr)
        || OptionFalseDescription::validateJa($this->ja)
        || OptionFalseDescription::validateKo($this->ko)
        || OptionFalseDescription::validateRu($this->ru)
        || OptionFalseDescription::validateZh($this->zh);
    }

    /**
     * @return stdClass
     * @throws Exception
     */
    public function to(): stdClass  {
        $out = new stdClass();
        $out->{'de'} = $this->toDe();
        $out->{'en'} = $this->toEn();
        $out->{'es'} = $this->toEs();
        $out->{'fr'} = $this->toFr();
        $out->{'ja'} = $this->toJa();
        $out->{'ko'} = $this->toKo();
        $out->{'ru'} = $this->toRu();
        $out->{'zh'} = $this->toZh();
        return $out;
    }

    /**
     * @param stdClass $obj
     * @return OptionFalseDescription
     * @throws Exception
     */
    public static function from(stdClass $obj): OptionFalseDescription {
        return new OptionFalseDescription(
         OptionFalseDescription::fromDe($obj->{'de'})
        ,OptionFalseDescription::fromEn($obj->{'en'})
        ,OptionFalseDescription::fromEs($obj->{'es'})
        ,OptionFalseDescription::fromFr($obj->{'fr'})
        ,OptionFalseDescription::fromJa($obj->{'ja'})
        ,OptionFalseDescription::fromKo($obj->{'ko'})
        ,OptionFalseDescription::fromRu($obj->{'ru'})
        ,OptionFalseDescription::fromZh($obj->{'zh'})
        );
    }

    /**
     * @return OptionFalseDescription
     */
    public static function sample(): OptionFalseDescription {
        return new OptionFalseDescription(
         OptionFalseDescription::sampleDe()
        ,OptionFalseDescription::sampleEn()
        ,OptionFalseDescription::sampleEs()
        ,OptionFalseDescription::sampleFr()
        ,OptionFalseDescription::sampleJa()
        ,OptionFalseDescription::sampleKo()
        ,OptionFalseDescription::sampleRu()
        ,OptionFalseDescription::sampleZh()
        );
    }
}

// This is an autogenerated file:OptionFalseTitle

class OptionFalseTitle {
    private string $de; // json:de Required
    private string $en; // json:en Required
    private string $es; // json:es Required
    private string $fr; // json:fr Required
    private string $ja; // json:ja Required
    private string $ko; // json:ko Required
    private string $ru; // json:ru Required
    private string $zh; // json:zh Required

    /**
     * @param string $de
     * @param string $en
     * @param string $es
     * @param string $fr
     * @param string $ja
     * @param string $ko
     * @param string $ru
     * @param string $zh
     */
    public function __construct(string $de, string $en, string $es, string $fr, string $ja, string $ko, string $ru, string $zh) {
        $this->de = $de;
        $this->en = $en;
        $this->es = $es;
        $this->fr = $fr;
        $this->ja = $ja;
        $this->ko = $ko;
        $this->ru = $ru;
        $this->zh = $zh;
    }

    /**
     * @param string $value
     * @throws Exception
     * @return string
     */
    public static function fromDe(string $value): string {
        return $value; /*string*/
    }

    /**
     * @throws Exception
     * @return string
     */
    public function toDe(): string {
        if (OptionFalseTitle::validateDe($this->de))  {
            return $this->de; /*string*/
        }
        throw new Exception('never get to this OptionFalseTitle::de');
    }

    /**
     * @param string
     * @return bool
     * @throws Exception
     */
    public static function validateDe(string $value): bool {
        if (!is_string($value)) {
            throw new Exception("Attribute Error:OptionFalseTitle::de");
        }
        return true;
    }

    /**
     * @throws Exception
     * @return string
     */
    public function getDe(): string {
        if (OptionFalseTitle::validateDe($this->de))  {
            return $this->de;
        }
        throw new Exception('never get to getDe OptionFalseTitle::de');
    }

    /**
     * @return string
     */
    public static function sampleDe(): string {
        return 'OptionFalseTitle::de::31'; /*31:de*/
    }

    /**
     * @param string $value
     * @throws Exception
     * @return string
     */
    public static function fromEn(string $value): string {
        return $value; /*string*/
    }

    /**
     * @throws Exception
     * @return string
     */
    public function toEn(): string {
        if (OptionFalseTitle::validateEn($this->en))  {
            return $this->en; /*string*/
        }
        throw new Exception('never get to this OptionFalseTitle::en');
    }

    /**
     * @param string
     * @return bool
     * @throws Exception
     */
    public static function validateEn(string $value): bool {
        if (!is_string($value)) {
            throw new Exception("Attribute Error:OptionFalseTitle::en");
        }
        return true;
    }

    /**
     * @throws Exception
     * @return string
     */
    public function getEn(): string {
        if (OptionFalseTitle::validateEn($this->en))  {
            return $this->en;
        }
        throw new Exception('never get to getEn OptionFalseTitle::en');
    }

    /**
     * @return string
     */
    public static function sampleEn(): string {
        return 'OptionFalseTitle::en::32'; /*32:en*/
    }

    /**
     * @param string $value
     * @throws Exception
     * @return string
     */
    public static function fromEs(string $value): string {
        return $value; /*string*/
    }

    /**
     * @throws Exception
     * @return string
     */
    public function toEs(): string {
        if (OptionFalseTitle::validateEs($this->es))  {
            return $this->es; /*string*/
        }
        throw new Exception('never get to this OptionFalseTitle::es');
    }

    /**
     * @param string
     * @return bool
     * @throws Exception
     */
    public static function validateEs(string $value): bool {
        if (!is_string($value)) {
            throw new Exception("Attribute Error:OptionFalseTitle::es");
        }
        return true;
    }

    /**
     * @throws Exception
     * @return string
     */
    public function getEs(): string {
        if (OptionFalseTitle::validateEs($this->es))  {
            return $this->es;
        }
        throw new Exception('never get to getEs OptionFalseTitle::es');
    }

    /**
     * @return string
     */
    public static function sampleEs(): string {
        return 'OptionFalseTitle::es::33'; /*33:es*/
    }

    /**
     * @param string $value
     * @throws Exception
     * @return string
     */
    public static function fromFr(string $value): string {
        return $value; /*string*/
    }

    /**
     * @throws Exception
     * @return string
     */
    public function toFr(): string {
        if (OptionFalseTitle::validateFr($this->fr))  {
            return $this->fr; /*string*/
        }
        throw new Exception('never get to this OptionFalseTitle::fr');
    }

    /**
     * @param string
     * @return bool
     * @throws Exception
     */
    public static function validateFr(string $value): bool {
        if (!is_string($value)) {
            throw new Exception("Attribute Error:OptionFalseTitle::fr");
        }
        return true;
    }

    /**
     * @throws Exception
     * @return string
     */
    public function getFr(): string {
        if (OptionFalseTitle::validateFr($this->fr))  {
            return $this->fr;
        }
        throw new Exception('never get to getFr OptionFalseTitle::fr');
    }

    /**
     * @return string
     */
    public static function sampleFr(): string {
        return 'OptionFalseTitle::fr::34'; /*34:fr*/
    }

    /**
     * @param string $value
     * @throws Exception
     * @return string
     */
    public static function fromJa(string $value): string {
        return $value; /*string*/
    }

    /**
     * @throws Exception
     * @return string
     */
    public function toJa(): string {
        if (OptionFalseTitle::validateJa($this->ja))  {
            return $this->ja; /*string*/
        }
        throw new Exception('never get to this OptionFalseTitle::ja');
    }

    /**
     * @param string
     * @return bool
     * @throws Exception
     */
    public static function validateJa(string $value): bool {
        if (!is_string($value)) {
            throw new Exception("Attribute Error:OptionFalseTitle::ja");
        }
        return true;
    }

    /**
     * @throws Exception
     * @return string
     */
    public function getJa(): string {
        if (OptionFalseTitle::validateJa($this->ja))  {
            return $this->ja;
        }
        throw new Exception('never get to getJa OptionFalseTitle::ja');
    }

    /**
     * @return string
     */
    public static function sampleJa(): string {
        return 'OptionFalseTitle::ja::35'; /*35:ja*/
    }

    /**
     * @param string $value
     * @throws Exception
     * @return string
     */
    public static function fromKo(string $value): string {
        return $value; /*string*/
    }

    /**
     * @throws Exception
     * @return string
     */
    public function toKo(): string {
        if (OptionFalseTitle::validateKo($this->ko))  {
            return $this->ko; /*string*/
        }
        throw new Exception('never get to this OptionFalseTitle::ko');
    }

    /**
     * @param string
     * @return bool
     * @throws Exception
     */
    public static function validateKo(string $value): bool {
        if (!is_string($value)) {
            throw new Exception("Attribute Error:OptionFalseTitle::ko");
        }
        return true;
    }

    /**
     * @throws Exception
     * @return string
     */
    public function getKo(): string {
        if (OptionFalseTitle::validateKo($this->ko))  {
            return $this->ko;
        }
        throw new Exception('never get to getKo OptionFalseTitle::ko');
    }

    /**
     * @return string
     */
    public static function sampleKo(): string {
        return 'OptionFalseTitle::ko::36'; /*36:ko*/
    }

    /**
     * @param string $value
     * @throws Exception
     * @return string
     */
    public static function fromRu(string $value): string {
        return $value; /*string*/
    }

    /**
     * @throws Exception
     * @return string
     */
    public function toRu(): string {
        if (OptionFalseTitle::validateRu($this->ru))  {
            return $this->ru; /*string*/
        }
        throw new Exception('never get to this OptionFalseTitle::ru');
    }

    /**
     * @param string
     * @return bool
     * @throws Exception
     */
    public static function validateRu(string $value): bool {
        if (!is_string($value)) {
            throw new Exception("Attribute Error:OptionFalseTitle::ru");
        }
        return true;
    }

    /**
     * @throws Exception
     * @return string
     */
    public function getRu(): string {
        if (OptionFalseTitle::validateRu($this->ru))  {
            return $this->ru;
        }
        throw new Exception('never get to getRu OptionFalseTitle::ru');
    }

    /**
     * @return string
     */
    public static function sampleRu(): string {
        return 'OptionFalseTitle::ru::37'; /*37:ru*/
    }

    /**
     * @param string $value
     * @throws Exception
     * @return string
     */
    public static function fromZh(string $value): string {
        return $value; /*string*/
    }

    /**
     * @throws Exception
     * @return string
     */
    public function toZh(): string {
        if (OptionFalseTitle::validateZh($this->zh))  {
            return $this->zh; /*string*/
        }
        throw new Exception('never get to this OptionFalseTitle::zh');
    }

    /**
     * @param string
     * @return bool
     * @throws Exception
     */
    public static function validateZh(string $value): bool {
        if (!is_string($value)) {
            throw new Exception("Attribute Error:OptionFalseTitle::zh");
        }
        return true;
    }

    /**
     * @throws Exception
     * @return string
     */
    public function getZh(): string {
        if (OptionFalseTitle::validateZh($this->zh))  {
            return $this->zh;
        }
        throw new Exception('never get to getZh OptionFalseTitle::zh');
    }

    /**
     * @return string
     */
    public static function sampleZh(): string {
        return 'OptionFalseTitle::zh::38'; /*38:zh*/
    }

    /**
     * @throws Exception
     * @return bool
     */
    public function validate(): bool {
        return OptionFalseTitle::validateDe($this->de)
        || OptionFalseTitle::validateEn($this->en)
        || OptionFalseTitle::validateEs($this->es)
        || OptionFalseTitle::validateFr($this->fr)
        || OptionFalseTitle::validateJa($this->ja)
        || OptionFalseTitle::validateKo($this->ko)
        || OptionFalseTitle::validateRu($this->ru)
        || OptionFalseTitle::validateZh($this->zh);
    }

    /**
     * @return stdClass
     * @throws Exception
     */
    public function to(): stdClass  {
        $out = new stdClass();
        $out->{'de'} = $this->toDe();
        $out->{'en'} = $this->toEn();
        $out->{'es'} = $this->toEs();
        $out->{'fr'} = $this->toFr();
        $out->{'ja'} = $this->toJa();
        $out->{'ko'} = $this->toKo();
        $out->{'ru'} = $this->toRu();
        $out->{'zh'} = $this->toZh();
        return $out;
    }

    /**
     * @param stdClass $obj
     * @return OptionFalseTitle
     * @throws Exception
     */
    public static function from(stdClass $obj): OptionFalseTitle {
        return new OptionFalseTitle(
         OptionFalseTitle::fromDe($obj->{'de'})
        ,OptionFalseTitle::fromEn($obj->{'en'})
        ,OptionFalseTitle::fromEs($obj->{'es'})
        ,OptionFalseTitle::fromFr($obj->{'fr'})
        ,OptionFalseTitle::fromJa($obj->{'ja'})
        ,OptionFalseTitle::fromKo($obj->{'ko'})
        ,OptionFalseTitle::fromRu($obj->{'ru'})
        ,OptionFalseTitle::fromZh($obj->{'zh'})
        );
    }

    /**
     * @return OptionFalseTitle
     */
    public static function sample(): OptionFalseTitle {
        return new OptionFalseTitle(
         OptionFalseTitle::sampleDe()
        ,OptionFalseTitle::sampleEn()
        ,OptionFalseTitle::sampleEs()
        ,OptionFalseTitle::sampleFr()
        ,OptionFalseTitle::sampleJa()
        ,OptionFalseTitle::sampleKo()
        ,OptionFalseTitle::sampleRu()
        ,OptionFalseTitle::sampleZh()
        );
    }
}

// This is an autogenerated file:OptionTrue

class OptionTrue {
    private OptionTrueDescription $description; // json:description Required
    private OptionTrueTitle $title; // json:title Required

    /**
     * @param OptionTrueDescription $description
     * @param OptionTrueTitle $title
     */
    public function __construct(OptionTrueDescription $description, OptionTrueTitle $title) {
        $this->description = $description;
        $this->title = $title;
    }

    /**
     * @param stdClass $value
     * @throws Exception
     * @return OptionTrueDescription
     */
    public static function fromDescription(stdClass $value): OptionTrueDescription {
        return OptionTrueDescription::from($value); /*class*/
    }

    /**
     * @throws Exception
     * @return stdClass
     */
    public function toDescription(): stdClass {
        if (OptionTrue::validateDescription($this->description))  {
            return $this->description->to(); /*class*/
        }
        throw new Exception('never get to this OptionTrue::description');
    }

    /**
     * @param OptionTrueDescription
     * @return bool
     * @throws Exception
     */
    public static function validateDescription(OptionTrueDescription $value): bool {
        $value->validate();
        return true;
    }

    /**
     * @throws Exception
     * @return OptionTrueDescription
     */
    public function getDescription(): OptionTrueDescription {
        if (OptionTrue::validateDescription($this->description))  {
            return $this->description;
        }
        throw new Exception('never get to getDescription OptionTrue::description');
    }

    /**
     * @return OptionTrueDescription
     */
    public static function sampleDescription(): OptionTrueDescription {
        return OptionTrueDescription::sample(); /*31:description*/
    }

    /**
     * @param stdClass $value
     * @throws Exception
     * @return OptionTrueTitle
     */
    public static function fromTitle(stdClass $value): OptionTrueTitle {
        return OptionTrueTitle::from($value); /*class*/
    }

    /**
     * @throws Exception
     * @return stdClass
     */
    public function toTitle(): stdClass {
        if (OptionTrue::validateTitle($this->title))  {
            return $this->title->to(); /*class*/
        }
        throw new Exception('never get to this OptionTrue::title');
    }

    /**
     * @param OptionTrueTitle
     * @return bool
     * @throws Exception
     */
    public static function validateTitle(OptionTrueTitle $value): bool {
        $value->validate();
        return true;
    }

    /**
     * @throws Exception
     * @return OptionTrueTitle
     */
    public function getTitle(): OptionTrueTitle {
        if (OptionTrue::validateTitle($this->title))  {
            return $this->title;
        }
        throw new Exception('never get to getTitle OptionTrue::title');
    }

    /**
     * @return OptionTrueTitle
     */
    public static function sampleTitle(): OptionTrueTitle {
        return OptionTrueTitle::sample(); /*32:title*/
    }

    /**
     * @throws Exception
     * @return bool
     */
    public function validate(): bool {
        return OptionTrue::validateDescription($this->description)
        || OptionTrue::validateTitle($this->title);
    }

    /**
     * @return stdClass
     * @throws Exception
     */
    public function to(): stdClass  {
        $out = new stdClass();
        $out->{'description'} = $this->toDescription();
        $out->{'title'} = $this->toTitle();
        return $out;
    }

    /**
     * @param stdClass $obj
     * @return OptionTrue
     * @throws Exception
     */
    public static function from(stdClass $obj): OptionTrue {
        return new OptionTrue(
         OptionTrue::fromDescription($obj->{'description'})
        ,OptionTrue::fromTitle($obj->{'title'})
        );
    }

    /**
     * @return OptionTrue
     */
    public static function sample(): OptionTrue {
        return new OptionTrue(
         OptionTrue::sampleDescription()
        ,OptionTrue::sampleTitle()
        );
    }
}

// This is an autogenerated file:OptionTrueDescription

class OptionTrueDescription {
    private string $de; // json:de Required
    private string $en; // json:en Required
    private string $es; // json:es Required
    private string $fr; // json:fr Required
    private string $ja; // json:ja Required
    private string $ko; // json:ko Required
    private string $ru; // json:ru Required
    private string $zh; // json:zh Required

    /**
     * @param string $de
     * @param string $en
     * @param string $es
     * @param string $fr
     * @param string $ja
     * @param string $ko
     * @param string $ru
     * @param string $zh
     */
    public function __construct(string $de, string $en, string $es, string $fr, string $ja, string $ko, string $ru, string $zh) {
        $this->de = $de;
        $this->en = $en;
        $this->es = $es;
        $this->fr = $fr;
        $this->ja = $ja;
        $this->ko = $ko;
        $this->ru = $ru;
        $this->zh = $zh;
    }

    /**
     * @param string $value
     * @throws Exception
     * @return string
     */
    public static function fromDe(string $value): string {
        return $value; /*string*/
    }

    /**
     * @throws Exception
     * @return string
     */
    public function toDe(): string {
        if (OptionTrueDescription::validateDe($this->de))  {
            return $this->de; /*string*/
        }
        throw new Exception('never get to this OptionTrueDescription::de');
    }

    /**
     * @param string
     * @return bool
     * @throws Exception
     */
    public static function validateDe(string $value): bool {
        if (!is_string($value)) {
            throw new Exception("Attribute Error:OptionTrueDescription::de");
        }
        return true;
    }

    /**
     * @throws Exception
     * @return string
     */
    public function getDe(): string {
        if (OptionTrueDescription::validateDe($this->de))  {
            return $this->de;
        }
        throw new Exception('never get to getDe OptionTrueDescription::de');
    }

    /**
     * @return string
     */
    public static function sampleDe(): string {
        return 'OptionTrueDescription::de::31'; /*31:de*/
    }

    /**
     * @param string $value
     * @throws Exception
     * @return string
     */
    public static function fromEn(string $value): string {
        return $value; /*string*/
    }

    /**
     * @throws Exception
     * @return string
     */
    public function toEn(): string {
        if (OptionTrueDescription::validateEn($this->en))  {
            return $this->en; /*string*/
        }
        throw new Exception('never get to this OptionTrueDescription::en');
    }

    /**
     * @param string
     * @return bool
     * @throws Exception
     */
    public static function validateEn(string $value): bool {
        if (!is_string($value)) {
            throw new Exception("Attribute Error:OptionTrueDescription::en");
        }
        return true;
    }

    /**
     * @throws Exception
     * @return string
     */
    public function getEn(): string {
        if (OptionTrueDescription::validateEn($this->en))  {
            return $this->en;
        }
        throw new Exception('never get to getEn OptionTrueDescription::en');
    }

    /**
     * @return string
     */
    public static function sampleEn(): string {
        return 'OptionTrueDescription::en::32'; /*32:en*/
    }

    /**
     * @param string $value
     * @throws Exception
     * @return string
     */
    public static function fromEs(string $value): string {
        return $value; /*string*/
    }

    /**
     * @throws Exception
     * @return string
     */
    public function toEs(): string {
        if (OptionTrueDescription::validateEs($this->es))  {
            return $this->es; /*string*/
        }
        throw new Exception('never get to this OptionTrueDescription::es');
    }

    /**
     * @param string
     * @return bool
     * @throws Exception
     */
    public static function validateEs(string $value): bool {
        if (!is_string($value)) {
            throw new Exception("Attribute Error:OptionTrueDescription::es");
        }
        return true;
    }

    /**
     * @throws Exception
     * @return string
     */
    public function getEs(): string {
        if (OptionTrueDescription::validateEs($this->es))  {
            return $this->es;
        }
        throw new Exception('never get to getEs OptionTrueDescription::es');
    }

    /**
     * @return string
     */
    public static function sampleEs(): string {
        return 'OptionTrueDescription::es::33'; /*33:es*/
    }

    /**
     * @param string $value
     * @throws Exception
     * @return string
     */
    public static function fromFr(string $value): string {
        return $value; /*string*/
    }

    /**
     * @throws Exception
     * @return string
     */
    public function toFr(): string {
        if (OptionTrueDescription::validateFr($this->fr))  {
            return $this->fr; /*string*/
        }
        throw new Exception('never get to this OptionTrueDescription::fr');
    }

    /**
     * @param string
     * @return bool
     * @throws Exception
     */
    public static function validateFr(string $value): bool {
        if (!is_string($value)) {
            throw new Exception("Attribute Error:OptionTrueDescription::fr");
        }
        return true;
    }

    /**
     * @throws Exception
     * @return string
     */
    public function getFr(): string {
        if (OptionTrueDescription::validateFr($this->fr))  {
            return $this->fr;
        }
        throw new Exception('never get to getFr OptionTrueDescription::fr');
    }

    /**
     * @return string
     */
    public static function sampleFr(): string {
        return 'OptionTrueDescription::fr::34'; /*34:fr*/
    }

    /**
     * @param string $value
     * @throws Exception
     * @return string
     */
    public static function fromJa(string $value): string {
        return $value; /*string*/
    }

    /**
     * @throws Exception
     * @return string
     */
    public function toJa(): string {
        if (OptionTrueDescription::validateJa($this->ja))  {
            return $this->ja; /*string*/
        }
        throw new Exception('never get to this OptionTrueDescription::ja');
    }

    /**
     * @param string
     * @return bool
     * @throws Exception
     */
    public static function validateJa(string $value): bool {
        if (!is_string($value)) {
            throw new Exception("Attribute Error:OptionTrueDescription::ja");
        }
        return true;
    }

    /**
     * @throws Exception
     * @return string
     */
    public function getJa(): string {
        if (OptionTrueDescription::validateJa($this->ja))  {
            return $this->ja;
        }
        throw new Exception('never get to getJa OptionTrueDescription::ja');
    }

    /**
     * @return string
     */
    public static function sampleJa(): string {
        return 'OptionTrueDescription::ja::35'; /*35:ja*/
    }

    /**
     * @param string $value
     * @throws Exception
     * @return string
     */
    public static function fromKo(string $value): string {
        return $value; /*string*/
    }

    /**
     * @throws Exception
     * @return string
     */
    public function toKo(): string {
        if (OptionTrueDescription::validateKo($this->ko))  {
            return $this->ko; /*string*/
        }
        throw new Exception('never get to this OptionTrueDescription::ko');
    }

    /**
     * @param string
     * @return bool
     * @throws Exception
     */
    public static function validateKo(string $value): bool {
        if (!is_string($value)) {
            throw new Exception("Attribute Error:OptionTrueDescription::ko");
        }
        return true;
    }

    /**
     * @throws Exception
     * @return string
     */
    public function getKo(): string {
        if (OptionTrueDescription::validateKo($this->ko))  {
            return $this->ko;
        }
        throw new Exception('never get to getKo OptionTrueDescription::ko');
    }

    /**
     * @return string
     */
    public static function sampleKo(): string {
        return 'OptionTrueDescription::ko::36'; /*36:ko*/
    }

    /**
     * @param string $value
     * @throws Exception
     * @return string
     */
    public static function fromRu(string $value): string {
        return $value; /*string*/
    }

    /**
     * @throws Exception
     * @return string
     */
    public function toRu(): string {
        if (OptionTrueDescription::validateRu($this->ru))  {
            return $this->ru; /*string*/
        }
        throw new Exception('never get to this OptionTrueDescription::ru');
    }

    /**
     * @param string
     * @return bool
     * @throws Exception
     */
    public static function validateRu(string $value): bool {
        if (!is_string($value)) {
            throw new Exception("Attribute Error:OptionTrueDescription::ru");
        }
        return true;
    }

    /**
     * @throws Exception
     * @return string
     */
    public function getRu(): string {
        if (OptionTrueDescription::validateRu($this->ru))  {
            return $this->ru;
        }
        throw new Exception('never get to getRu OptionTrueDescription::ru');
    }

    /**
     * @return string
     */
    public static function sampleRu(): string {
        return 'OptionTrueDescription::ru::37'; /*37:ru*/
    }

    /**
     * @param string $value
     * @throws Exception
     * @return string
     */
    public static function fromZh(string $value): string {
        return $value; /*string*/
    }

    /**
     * @throws Exception
     * @return string
     */
    public function toZh(): string {
        if (OptionTrueDescription::validateZh($this->zh))  {
            return $this->zh; /*string*/
        }
        throw new Exception('never get to this OptionTrueDescription::zh');
    }

    /**
     * @param string
     * @return bool
     * @throws Exception
     */
    public static function validateZh(string $value): bool {
        if (!is_string($value)) {
            throw new Exception("Attribute Error:OptionTrueDescription::zh");
        }
        return true;
    }

    /**
     * @throws Exception
     * @return string
     */
    public function getZh(): string {
        if (OptionTrueDescription::validateZh($this->zh))  {
            return $this->zh;
        }
        throw new Exception('never get to getZh OptionTrueDescription::zh');
    }

    /**
     * @return string
     */
    public static function sampleZh(): string {
        return 'OptionTrueDescription::zh::38'; /*38:zh*/
    }

    /**
     * @throws Exception
     * @return bool
     */
    public function validate(): bool {
        return OptionTrueDescription::validateDe($this->de)
        || OptionTrueDescription::validateEn($this->en)
        || OptionTrueDescription::validateEs($this->es)
        || OptionTrueDescription::validateFr($this->fr)
        || OptionTrueDescription::validateJa($this->ja)
        || OptionTrueDescription::validateKo($this->ko)
        || OptionTrueDescription::validateRu($this->ru)
        || OptionTrueDescription::validateZh($this->zh);
    }

    /**
     * @return stdClass
     * @throws Exception
     */
    public function to(): stdClass  {
        $out = new stdClass();
        $out->{'de'} = $this->toDe();
        $out->{'en'} = $this->toEn();
        $out->{'es'} = $this->toEs();
        $out->{'fr'} = $this->toFr();
        $out->{'ja'} = $this->toJa();
        $out->{'ko'} = $this->toKo();
        $out->{'ru'} = $this->toRu();
        $out->{'zh'} = $this->toZh();
        return $out;
    }

    /**
     * @param stdClass $obj
     * @return OptionTrueDescription
     * @throws Exception
     */
    public static function from(stdClass $obj): OptionTrueDescription {
        return new OptionTrueDescription(
         OptionTrueDescription::fromDe($obj->{'de'})
        ,OptionTrueDescription::fromEn($obj->{'en'})
        ,OptionTrueDescription::fromEs($obj->{'es'})
        ,OptionTrueDescription::fromFr($obj->{'fr'})
        ,OptionTrueDescription::fromJa($obj->{'ja'})
        ,OptionTrueDescription::fromKo($obj->{'ko'})
        ,OptionTrueDescription::fromRu($obj->{'ru'})
        ,OptionTrueDescription::fromZh($obj->{'zh'})
        );
    }

    /**
     * @return OptionTrueDescription
     */
    public static function sample(): OptionTrueDescription {
        return new OptionTrueDescription(
         OptionTrueDescription::sampleDe()
        ,OptionTrueDescription::sampleEn()
        ,OptionTrueDescription::sampleEs()
        ,OptionTrueDescription::sampleFr()
        ,OptionTrueDescription::sampleJa()
        ,OptionTrueDescription::sampleKo()
        ,OptionTrueDescription::sampleRu()
        ,OptionTrueDescription::sampleZh()
        );
    }
}

// This is an autogenerated file:OptionTrueTitle

class OptionTrueTitle {
    private string $de; // json:de Required
    private string $en; // json:en Required
    private string $es; // json:es Required
    private string $fr; // json:fr Required
    private string $ja; // json:ja Required
    private string $ko; // json:ko Required
    private string $ru; // json:ru Required
    private string $zh; // json:zh Required

    /**
     * @param string $de
     * @param string $en
     * @param string $es
     * @param string $fr
     * @param string $ja
     * @param string $ko
     * @param string $ru
     * @param string $zh
     */
    public function __construct(string $de, string $en, string $es, string $fr, string $ja, string $ko, string $ru, string $zh) {
        $this->de = $de;
        $this->en = $en;
        $this->es = $es;
        $this->fr = $fr;
        $this->ja = $ja;
        $this->ko = $ko;
        $this->ru = $ru;
        $this->zh = $zh;
    }

    /**
     * @param string $value
     * @throws Exception
     * @return string
     */
    public static function fromDe(string $value): string {
        return $value; /*string*/
    }

    /**
     * @throws Exception
     * @return string
     */
    public function toDe(): string {
        if (OptionTrueTitle::validateDe($this->de))  {
            return $this->de; /*string*/
        }
        throw new Exception('never get to this OptionTrueTitle::de');
    }

    /**
     * @param string
     * @return bool
     * @throws Exception
     */
    public static function validateDe(string $value): bool {
        if (!is_string($value)) {
            throw new Exception("Attribute Error:OptionTrueTitle::de");
        }
        return true;
    }

    /**
     * @throws Exception
     * @return string
     */
    public function getDe(): string {
        if (OptionTrueTitle::validateDe($this->de))  {
            return $this->de;
        }
        throw new Exception('never get to getDe OptionTrueTitle::de');
    }

    /**
     * @return string
     */
    public static function sampleDe(): string {
        return 'OptionTrueTitle::de::31'; /*31:de*/
    }

    /**
     * @param string $value
     * @throws Exception
     * @return string
     */
    public static function fromEn(string $value): string {
        return $value; /*string*/
    }

    /**
     * @throws Exception
     * @return string
     */
    public function toEn(): string {
        if (OptionTrueTitle::validateEn($this->en))  {
            return $this->en; /*string*/
        }
        throw new Exception('never get to this OptionTrueTitle::en');
    }

    /**
     * @param string
     * @return bool
     * @throws Exception
     */
    public static function validateEn(string $value): bool {
        if (!is_string($value)) {
            throw new Exception("Attribute Error:OptionTrueTitle::en");
        }
        return true;
    }

    /**
     * @throws Exception
     * @return string
     */
    public function getEn(): string {
        if (OptionTrueTitle::validateEn($this->en))  {
            return $this->en;
        }
        throw new Exception('never get to getEn OptionTrueTitle::en');
    }

    /**
     * @return string
     */
    public static function sampleEn(): string {
        return 'OptionTrueTitle::en::32'; /*32:en*/
    }

    /**
     * @param string $value
     * @throws Exception
     * @return string
     */
    public static function fromEs(string $value): string {
        return $value; /*string*/
    }

    /**
     * @throws Exception
     * @return string
     */
    public function toEs(): string {
        if (OptionTrueTitle::validateEs($this->es))  {
            return $this->es; /*string*/
        }
        throw new Exception('never get to this OptionTrueTitle::es');
    }

    /**
     * @param string
     * @return bool
     * @throws Exception
     */
    public static function validateEs(string $value): bool {
        if (!is_string($value)) {
            throw new Exception("Attribute Error:OptionTrueTitle::es");
        }
        return true;
    }

    /**
     * @throws Exception
     * @return string
     */
    public function getEs(): string {
        if (OptionTrueTitle::validateEs($this->es))  {
            return $this->es;
        }
        throw new Exception('never get to getEs OptionTrueTitle::es');
    }

    /**
     * @return string
     */
    public static function sampleEs(): string {
        return 'OptionTrueTitle::es::33'; /*33:es*/
    }

    /**
     * @param string $value
     * @throws Exception
     * @return string
     */
    public static function fromFr(string $value): string {
        return $value; /*string*/
    }

    /**
     * @throws Exception
     * @return string
     */
    public function toFr(): string {
        if (OptionTrueTitle::validateFr($this->fr))  {
            return $this->fr; /*string*/
        }
        throw new Exception('never get to this OptionTrueTitle::fr');
    }

    /**
     * @param string
     * @return bool
     * @throws Exception
     */
    public static function validateFr(string $value): bool {
        if (!is_string($value)) {
            throw new Exception("Attribute Error:OptionTrueTitle::fr");
        }
        return true;
    }

    /**
     * @throws Exception
     * @return string
     */
    public function getFr(): string {
        if (OptionTrueTitle::validateFr($this->fr))  {
            return $this->fr;
        }
        throw new Exception('never get to getFr OptionTrueTitle::fr');
    }

    /**
     * @return string
     */
    public static function sampleFr(): string {
        return 'OptionTrueTitle::fr::34'; /*34:fr*/
    }

    /**
     * @param string $value
     * @throws Exception
     * @return string
     */
    public static function fromJa(string $value): string {
        return $value; /*string*/
    }

    /**
     * @throws Exception
     * @return string
     */
    public function toJa(): string {
        if (OptionTrueTitle::validateJa($this->ja))  {
            return $this->ja; /*string*/
        }
        throw new Exception('never get to this OptionTrueTitle::ja');
    }

    /**
     * @param string
     * @return bool
     * @throws Exception
     */
    public static function validateJa(string $value): bool {
        if (!is_string($value)) {
            throw new Exception("Attribute Error:OptionTrueTitle::ja");
        }
        return true;
    }

    /**
     * @throws Exception
     * @return string
     */
    public function getJa(): string {
        if (OptionTrueTitle::validateJa($this->ja))  {
            return $this->ja;
        }
        throw new Exception('never get to getJa OptionTrueTitle::ja');
    }

    /**
     * @return string
     */
    public static function sampleJa(): string {
        return 'OptionTrueTitle::ja::35'; /*35:ja*/
    }

    /**
     * @param string $value
     * @throws Exception
     * @return string
     */
    public static function fromKo(string $value): string {
        return $value; /*string*/
    }

    /**
     * @throws Exception
     * @return string
     */
    public function toKo(): string {
        if (OptionTrueTitle::validateKo($this->ko))  {
            return $this->ko; /*string*/
        }
        throw new Exception('never get to this OptionTrueTitle::ko');
    }

    /**
     * @param string
     * @return bool
     * @throws Exception
     */
    public static function validateKo(string $value): bool {
        if (!is_string($value)) {
            throw new Exception("Attribute Error:OptionTrueTitle::ko");
        }
        return true;
    }

    /**
     * @throws Exception
     * @return string
     */
    public function getKo(): string {
        if (OptionTrueTitle::validateKo($this->ko))  {
            return $this->ko;
        }
        throw new Exception('never get to getKo OptionTrueTitle::ko');
    }

    /**
     * @return string
     */
    public static function sampleKo(): string {
        return 'OptionTrueTitle::ko::36'; /*36:ko*/
    }

    /**
     * @param string $value
     * @throws Exception
     * @return string
     */
    public static function fromRu(string $value): string {
        return $value; /*string*/
    }

    /**
     * @throws Exception
     * @return string
     */
    public function toRu(): string {
        if (OptionTrueTitle::validateRu($this->ru))  {
            return $this->ru; /*string*/
        }
        throw new Exception('never get to this OptionTrueTitle::ru');
    }

    /**
     * @param string
     * @return bool
     * @throws Exception
     */
    public static function validateRu(string $value): bool {
        if (!is_string($value)) {
            throw new Exception("Attribute Error:OptionTrueTitle::ru");
        }
        return true;
    }

    /**
     * @throws Exception
     * @return string
     */
    public function getRu(): string {
        if (OptionTrueTitle::validateRu($this->ru))  {
            return $this->ru;
        }
        throw new Exception('never get to getRu OptionTrueTitle::ru');
    }

    /**
     * @return string
     */
    public static function sampleRu(): string {
        return 'OptionTrueTitle::ru::37'; /*37:ru*/
    }

    /**
     * @param string $value
     * @throws Exception
     * @return string
     */
    public static function fromZh(string $value): string {
        return $value; /*string*/
    }

    /**
     * @throws Exception
     * @return string
     */
    public function toZh(): string {
        if (OptionTrueTitle::validateZh($this->zh))  {
            return $this->zh; /*string*/
        }
        throw new Exception('never get to this OptionTrueTitle::zh');
    }

    /**
     * @param string
     * @return bool
     * @throws Exception
     */
    public static function validateZh(string $value): bool {
        if (!is_string($value)) {
            throw new Exception("Attribute Error:OptionTrueTitle::zh");
        }
        return true;
    }

    /**
     * @throws Exception
     * @return string
     */
    public function getZh(): string {
        if (OptionTrueTitle::validateZh($this->zh))  {
            return $this->zh;
        }
        throw new Exception('never get to getZh OptionTrueTitle::zh');
    }

    /**
     * @return string
     */
    public static function sampleZh(): string {
        return 'OptionTrueTitle::zh::38'; /*38:zh*/
    }

    /**
     * @throws Exception
     * @return bool
     */
    public function validate(): bool {
        return OptionTrueTitle::validateDe($this->de)
        || OptionTrueTitle::validateEn($this->en)
        || OptionTrueTitle::validateEs($this->es)
        || OptionTrueTitle::validateFr($this->fr)
        || OptionTrueTitle::validateJa($this->ja)
        || OptionTrueTitle::validateKo($this->ko)
        || OptionTrueTitle::validateRu($this->ru)
        || OptionTrueTitle::validateZh($this->zh);
    }

    /**
     * @return stdClass
     * @throws Exception
     */
    public function to(): stdClass  {
        $out = new stdClass();
        $out->{'de'} = $this->toDe();
        $out->{'en'} = $this->toEn();
        $out->{'es'} = $this->toEs();
        $out->{'fr'} = $this->toFr();
        $out->{'ja'} = $this->toJa();
        $out->{'ko'} = $this->toKo();
        $out->{'ru'} = $this->toRu();
        $out->{'zh'} = $this->toZh();
        return $out;
    }

    /**
     * @param stdClass $obj
     * @return OptionTrueTitle
     * @throws Exception
     */
    public static function from(stdClass $obj): OptionTrueTitle {
        return new OptionTrueTitle(
         OptionTrueTitle::fromDe($obj->{'de'})
        ,OptionTrueTitle::fromEn($obj->{'en'})
        ,OptionTrueTitle::fromEs($obj->{'es'})
        ,OptionTrueTitle::fromFr($obj->{'fr'})
        ,OptionTrueTitle::fromJa($obj->{'ja'})
        ,OptionTrueTitle::fromKo($obj->{'ko'})
        ,OptionTrueTitle::fromRu($obj->{'ru'})
        ,OptionTrueTitle::fromZh($obj->{'zh'})
        );
    }

    /**
     * @return OptionTrueTitle
     */
    public static function sample(): OptionTrueTitle {
        return new OptionTrueTitle(
         OptionTrueTitle::sampleDe()
        ,OptionTrueTitle::sampleEn()
        ,OptionTrueTitle::sampleEs()
        ,OptionTrueTitle::sampleFr()
        ,OptionTrueTitle::sampleJa()
        ,OptionTrueTitle::sampleKo()
        ,OptionTrueTitle::sampleRu()
        ,OptionTrueTitle::sampleZh()
        );
    }
}

// This is an autogenerated file:BooleanTitle

class BooleanTitle {
    private string $de; // json:de Required
    private string $en; // json:en Required
    private string $es; // json:es Required
    private string $fr; // json:fr Required
    private string $ja; // json:ja Required
    private string $ko; // json:ko Required
    private string $ru; // json:ru Required
    private string $zh; // json:zh Required

    /**
     * @param string $de
     * @param string $en
     * @param string $es
     * @param string $fr
     * @param string $ja
     * @param string $ko
     * @param string $ru
     * @param string $zh
     */
    public function __construct(string $de, string $en, string $es, string $fr, string $ja, string $ko, string $ru, string $zh) {
        $this->de = $de;
        $this->en = $en;
        $this->es = $es;
        $this->fr = $fr;
        $this->ja = $ja;
        $this->ko = $ko;
        $this->ru = $ru;
        $this->zh = $zh;
    }

    /**
     * @param string $value
     * @throws Exception
     * @return string
     */
    public static function fromDe(string $value): string {
        return $value; /*string*/
    }

    /**
     * @throws Exception
     * @return string
     */
    public function toDe(): string {
        if (BooleanTitle::validateDe($this->de))  {
            return $this->de; /*string*/
        }
        throw new Exception('never get to this BooleanTitle::de');
    }

    /**
     * @param string
     * @return bool
     * @throws Exception
     */
    public static function validateDe(string $value): bool {
        if (!is_string($value)) {
            throw new Exception("Attribute Error:BooleanTitle::de");
        }
        return true;
    }

    /**
     * @throws Exception
     * @return string
     */
    public function getDe(): string {
        if (BooleanTitle::validateDe($this->de))  {
            return $this->de;
        }
        throw new Exception('never get to getDe BooleanTitle::de');
    }

    /**
     * @return string
     */
    public static function sampleDe(): string {
        return 'BooleanTitle::de::31'; /*31:de*/
    }

    /**
     * @param string $value
     * @throws Exception
     * @return string
     */
    public static function fromEn(string $value): string {
        return $value; /*string*/
    }

    /**
     * @throws Exception
     * @return string
     */
    public function toEn(): string {
        if (BooleanTitle::validateEn($this->en))  {
            return $this->en; /*string*/
        }
        throw new Exception('never get to this BooleanTitle::en');
    }

    /**
     * @param string
     * @return bool
     * @throws Exception
     */
    public static function validateEn(string $value): bool {
        if (!is_string($value)) {
            throw new Exception("Attribute Error:BooleanTitle::en");
        }
        return true;
    }

    /**
     * @throws Exception
     * @return string
     */
    public function getEn(): string {
        if (BooleanTitle::validateEn($this->en))  {
            return $this->en;
        }
        throw new Exception('never get to getEn BooleanTitle::en');
    }

    /**
     * @return string
     */
    public static function sampleEn(): string {
        return 'BooleanTitle::en::32'; /*32:en*/
    }

    /**
     * @param string $value
     * @throws Exception
     * @return string
     */
    public static function fromEs(string $value): string {
        return $value; /*string*/
    }

    /**
     * @throws Exception
     * @return string
     */
    public function toEs(): string {
        if (BooleanTitle::validateEs($this->es))  {
            return $this->es; /*string*/
        }
        throw new Exception('never get to this BooleanTitle::es');
    }

    /**
     * @param string
     * @return bool
     * @throws Exception
     */
    public static function validateEs(string $value): bool {
        if (!is_string($value)) {
            throw new Exception("Attribute Error:BooleanTitle::es");
        }
        return true;
    }

    /**
     * @throws Exception
     * @return string
     */
    public function getEs(): string {
        if (BooleanTitle::validateEs($this->es))  {
            return $this->es;
        }
        throw new Exception('never get to getEs BooleanTitle::es');
    }

    /**
     * @return string
     */
    public static function sampleEs(): string {
        return 'BooleanTitle::es::33'; /*33:es*/
    }

    /**
     * @param string $value
     * @throws Exception
     * @return string
     */
    public static function fromFr(string $value): string {
        return $value; /*string*/
    }

    /**
     * @throws Exception
     * @return string
     */
    public function toFr(): string {
        if (BooleanTitle::validateFr($this->fr))  {
            return $this->fr; /*string*/
        }
        throw new Exception('never get to this BooleanTitle::fr');
    }

    /**
     * @param string
     * @return bool
     * @throws Exception
     */
    public static function validateFr(string $value): bool {
        if (!is_string($value)) {
            throw new Exception("Attribute Error:BooleanTitle::fr");
        }
        return true;
    }

    /**
     * @throws Exception
     * @return string
     */
    public function getFr(): string {
        if (BooleanTitle::validateFr($this->fr))  {
            return $this->fr;
        }
        throw new Exception('never get to getFr BooleanTitle::fr');
    }

    /**
     * @return string
     */
    public static function sampleFr(): string {
        return 'BooleanTitle::fr::34'; /*34:fr*/
    }

    /**
     * @param string $value
     * @throws Exception
     * @return string
     */
    public static function fromJa(string $value): string {
        return $value; /*string*/
    }

    /**
     * @throws Exception
     * @return string
     */
    public function toJa(): string {
        if (BooleanTitle::validateJa($this->ja))  {
            return $this->ja; /*string*/
        }
        throw new Exception('never get to this BooleanTitle::ja');
    }

    /**
     * @param string
     * @return bool
     * @throws Exception
     */
    public static function validateJa(string $value): bool {
        if (!is_string($value)) {
            throw new Exception("Attribute Error:BooleanTitle::ja");
        }
        return true;
    }

    /**
     * @throws Exception
     * @return string
     */
    public function getJa(): string {
        if (BooleanTitle::validateJa($this->ja))  {
            return $this->ja;
        }
        throw new Exception('never get to getJa BooleanTitle::ja');
    }

    /**
     * @return string
     */
    public static function sampleJa(): string {
        return 'BooleanTitle::ja::35'; /*35:ja*/
    }

    /**
     * @param string $value
     * @throws Exception
     * @return string
     */
    public static function fromKo(string $value): string {
        return $value; /*string*/
    }

    /**
     * @throws Exception
     * @return string
     */
    public function toKo(): string {
        if (BooleanTitle::validateKo($this->ko))  {
            return $this->ko; /*string*/
        }
        throw new Exception('never get to this BooleanTitle::ko');
    }

    /**
     * @param string
     * @return bool
     * @throws Exception
     */
    public static function validateKo(string $value): bool {
        if (!is_string($value)) {
            throw new Exception("Attribute Error:BooleanTitle::ko");
        }
        return true;
    }

    /**
     * @throws Exception
     * @return string
     */
    public function getKo(): string {
        if (BooleanTitle::validateKo($this->ko))  {
            return $this->ko;
        }
        throw new Exception('never get to getKo BooleanTitle::ko');
    }

    /**
     * @return string
     */
    public static function sampleKo(): string {
        return 'BooleanTitle::ko::36'; /*36:ko*/
    }

    /**
     * @param string $value
     * @throws Exception
     * @return string
     */
    public static function fromRu(string $value): string {
        return $value; /*string*/
    }

    /**
     * @throws Exception
     * @return string
     */
    public function toRu(): string {
        if (BooleanTitle::validateRu($this->ru))  {
            return $this->ru; /*string*/
        }
        throw new Exception('never get to this BooleanTitle::ru');
    }

    /**
     * @param string
     * @return bool
     * @throws Exception
     */
    public static function validateRu(string $value): bool {
        if (!is_string($value)) {
            throw new Exception("Attribute Error:BooleanTitle::ru");
        }
        return true;
    }

    /**
     * @throws Exception
     * @return string
     */
    public function getRu(): string {
        if (BooleanTitle::validateRu($this->ru))  {
            return $this->ru;
        }
        throw new Exception('never get to getRu BooleanTitle::ru');
    }

    /**
     * @return string
     */
    public static function sampleRu(): string {
        return 'BooleanTitle::ru::37'; /*37:ru*/
    }

    /**
     * @param string $value
     * @throws Exception
     * @return string
     */
    public static function fromZh(string $value): string {
        return $value; /*string*/
    }

    /**
     * @throws Exception
     * @return string
     */
    public function toZh(): string {
        if (BooleanTitle::validateZh($this->zh))  {
            return $this->zh; /*string*/
        }
        throw new Exception('never get to this BooleanTitle::zh');
    }

    /**
     * @param string
     * @return bool
     * @throws Exception
     */
    public static function validateZh(string $value): bool {
        if (!is_string($value)) {
            throw new Exception("Attribute Error:BooleanTitle::zh");
        }
        return true;
    }

    /**
     * @throws Exception
     * @return string
     */
    public function getZh(): string {
        if (BooleanTitle::validateZh($this->zh))  {
            return $this->zh;
        }
        throw new Exception('never get to getZh BooleanTitle::zh');
    }

    /**
     * @return string
     */
    public static function sampleZh(): string {
        return 'BooleanTitle::zh::38'; /*38:zh*/
    }

    /**
     * @throws Exception
     * @return bool
     */
    public function validate(): bool {
        return BooleanTitle::validateDe($this->de)
        || BooleanTitle::validateEn($this->en)
        || BooleanTitle::validateEs($this->es)
        || BooleanTitle::validateFr($this->fr)
        || BooleanTitle::validateJa($this->ja)
        || BooleanTitle::validateKo($this->ko)
        || BooleanTitle::validateRu($this->ru)
        || BooleanTitle::validateZh($this->zh);
    }

    /**
     * @return stdClass
     * @throws Exception
     */
    public function to(): stdClass  {
        $out = new stdClass();
        $out->{'de'} = $this->toDe();
        $out->{'en'} = $this->toEn();
        $out->{'es'} = $this->toEs();
        $out->{'fr'} = $this->toFr();
        $out->{'ja'} = $this->toJa();
        $out->{'ko'} = $this->toKo();
        $out->{'ru'} = $this->toRu();
        $out->{'zh'} = $this->toZh();
        return $out;
    }

    /**
     * @param stdClass $obj
     * @return BooleanTitle
     * @throws Exception
     */
    public static function from(stdClass $obj): BooleanTitle {
        return new BooleanTitle(
         BooleanTitle::fromDe($obj->{'de'})
        ,BooleanTitle::fromEn($obj->{'en'})
        ,BooleanTitle::fromEs($obj->{'es'})
        ,BooleanTitle::fromFr($obj->{'fr'})
        ,BooleanTitle::fromJa($obj->{'ja'})
        ,BooleanTitle::fromKo($obj->{'ko'})
        ,BooleanTitle::fromRu($obj->{'ru'})
        ,BooleanTitle::fromZh($obj->{'zh'})
        );
    }

    /**
     * @return BooleanTitle
     */
    public static function sample(): BooleanTitle {
        return new BooleanTitle(
         BooleanTitle::sampleDe()
        ,BooleanTitle::sampleEn()
        ,BooleanTitle::sampleEs()
        ,BooleanTitle::sampleFr()
        ,BooleanTitle::sampleJa()
        ,BooleanTitle::sampleKo()
        ,BooleanTitle::sampleRu()
        ,BooleanTitle::sampleZh()
        );
    }
}

// This is an autogenerated file:ItemDelivery

class ItemDelivery {
    private DeliveryLocation $deliveryLocation; // json:deliveryLocation Required
    private ItemDeliveryDescription $description; // json:description Required
    private ItemDeliveryIconId $iconId; // json:iconID Required
    private InventoryType $inventoryType; // json:inventoryType Required
    private ItemDeliveryTitle $title; // json:title Required

    /**
     * @param DeliveryLocation $deliveryLocation
     * @param ItemDeliveryDescription $description
     * @param ItemDeliveryIconId $iconId
     * @param InventoryType $inventoryType
     * @param ItemDeliveryTitle $title
     */
    public function __construct(DeliveryLocation $deliveryLocation, ItemDeliveryDescription $description, ItemDeliveryIconId $iconId, InventoryType $inventoryType, ItemDeliveryTitle $title) {
        $this->deliveryLocation = $deliveryLocation;
        $this->description = $description;
        $this->iconId = $iconId;
        $this->inventoryType = $inventoryType;
        $this->title = $title;
    }

    /**
     * @param stdClass $value
     * @throws Exception
     * @return DeliveryLocation
     */
    public static function fromDeliveryLocation(stdClass $value): DeliveryLocation {
        return DeliveryLocation::from($value); /*class*/
    }

    /**
     * @throws Exception
     * @return stdClass
     */
    public function toDeliveryLocation(): stdClass {
        if (ItemDelivery::validateDeliveryLocation($this->deliveryLocation))  {
            return $this->deliveryLocation->to(); /*class*/
        }
        throw new Exception('never get to this ItemDelivery::deliveryLocation');
    }

    /**
     * @param DeliveryLocation
     * @return bool
     * @throws Exception
     */
    public static function validateDeliveryLocation(DeliveryLocation $value): bool {
        $value->validate();
        return true;
    }

    /**
     * @throws Exception
     * @return DeliveryLocation
     */
    public function getDeliveryLocation(): DeliveryLocation {
        if (ItemDelivery::validateDeliveryLocation($this->deliveryLocation))  {
            return $this->deliveryLocation;
        }
        throw new Exception('never get to getDeliveryLocation ItemDelivery::deliveryLocation');
    }

    /**
     * @return DeliveryLocation
     */
    public static function sampleDeliveryLocation(): DeliveryLocation {
        return DeliveryLocation::sample(); /*31:deliveryLocation*/
    }

    /**
     * @param stdClass $value
     * @throws Exception
     * @return ItemDeliveryDescription
     */
    public static function fromDescription(stdClass $value): ItemDeliveryDescription {
        return ItemDeliveryDescription::from($value); /*class*/
    }

    /**
     * @throws Exception
     * @return stdClass
     */
    public function toDescription(): stdClass {
        if (ItemDelivery::validateDescription($this->description))  {
            return $this->description->to(); /*class*/
        }
        throw new Exception('never get to this ItemDelivery::description');
    }

    /**
     * @param ItemDeliveryDescription
     * @return bool
     * @throws Exception
     */
    public static function validateDescription(ItemDeliveryDescription $value): bool {
        $value->validate();
        return true;
    }

    /**
     * @throws Exception
     * @return ItemDeliveryDescription
     */
    public function getDescription(): ItemDeliveryDescription {
        if (ItemDelivery::validateDescription($this->description))  {
            return $this->description;
        }
        throw new Exception('never get to getDescription ItemDelivery::description');
    }

    /**
     * @return ItemDeliveryDescription
     */
    public static function sampleDescription(): ItemDeliveryDescription {
        return ItemDeliveryDescription::sample(); /*32:description*/
    }

    /**
     * @param string $value
     * @throws Exception
     * @return ItemDeliveryIconId
     */
    public static function fromIconId(string $value): ItemDeliveryIconId {
        return ItemDeliveryIconId::from($value); /*enum*/
    }

    /**
     * @throws Exception
     * @return string
     */
    public function toIconId(): string {
        if (ItemDelivery::validateIconId($this->iconId))  {
            return ItemDeliveryIconId::to($this->iconId); /*enum*/
        }
        throw new Exception('never get to this ItemDelivery::iconId');
    }

    /**
     * @param ItemDeliveryIconId
     * @return bool
     * @throws Exception
     */
    public static function validateIconId(ItemDeliveryIconId $value): bool {
        ItemDeliveryIconId::to($value);
        return true;
    }

    /**
     * @throws Exception
     * @return ItemDeliveryIconId
     */
    public function getIconId(): ItemDeliveryIconId {
        if (ItemDelivery::validateIconId($this->iconId))  {
            return $this->iconId;
        }
        throw new Exception('never get to getIconId ItemDelivery::iconId');
    }

    /**
     * @return ItemDeliveryIconId
     */
    public static function sampleIconId(): ItemDeliveryIconId {
        return ItemDeliveryIconId::sample(); /*enum*/
    }

    /**
     * @param stdClass $value
     * @throws Exception
     * @return InventoryType
     */
    public static function fromInventoryType(stdClass $value): InventoryType {
        return InventoryType::from($value); /*class*/
    }

    /**
     * @throws Exception
     * @return stdClass
     */
    public function toInventoryType(): stdClass {
        if (ItemDelivery::validateInventoryType($this->inventoryType))  {
            return $this->inventoryType->to(); /*class*/
        }
        throw new Exception('never get to this ItemDelivery::inventoryType');
    }

    /**
     * @param InventoryType
     * @return bool
     * @throws Exception
     */
    public static function validateInventoryType(InventoryType $value): bool {
        $value->validate();
        return true;
    }

    /**
     * @throws Exception
     * @return InventoryType
     */
    public function getInventoryType(): InventoryType {
        if (ItemDelivery::validateInventoryType($this->inventoryType))  {
            return $this->inventoryType;
        }
        throw new Exception('never get to getInventoryType ItemDelivery::inventoryType');
    }

    /**
     * @return InventoryType
     */
    public static function sampleInventoryType(): InventoryType {
        return InventoryType::sample(); /*34:inventoryType*/
    }

    /**
     * @param stdClass $value
     * @throws Exception
     * @return ItemDeliveryTitle
     */
    public static function fromTitle(stdClass $value): ItemDeliveryTitle {
        return ItemDeliveryTitle::from($value); /*class*/
    }

    /**
     * @throws Exception
     * @return stdClass
     */
    public function toTitle(): stdClass {
        if (ItemDelivery::validateTitle($this->title))  {
            return $this->title->to(); /*class*/
        }
        throw new Exception('never get to this ItemDelivery::title');
    }

    /**
     * @param ItemDeliveryTitle
     * @return bool
     * @throws Exception
     */
    public static function validateTitle(ItemDeliveryTitle $value): bool {
        $value->validate();
        return true;
    }

    /**
     * @throws Exception
     * @return ItemDeliveryTitle
     */
    public function getTitle(): ItemDeliveryTitle {
        if (ItemDelivery::validateTitle($this->title))  {
            return $this->title;
        }
        throw new Exception('never get to getTitle ItemDelivery::title');
    }

    /**
     * @return ItemDeliveryTitle
     */
    public static function sampleTitle(): ItemDeliveryTitle {
        return ItemDeliveryTitle::sample(); /*35:title*/
    }

    /**
     * @throws Exception
     * @return bool
     */
    public function validate(): bool {
        return ItemDelivery::validateDeliveryLocation($this->deliveryLocation)
        || ItemDelivery::validateDescription($this->description)
        || ItemDelivery::validateIconId($this->iconId)
        || ItemDelivery::validateInventoryType($this->inventoryType)
        || ItemDelivery::validateTitle($this->title);
    }

    /**
     * @return stdClass
     * @throws Exception
     */
    public function to(): stdClass  {
        $out = new stdClass();
        $out->{'deliveryLocation'} = $this->toDeliveryLocation();
        $out->{'description'} = $this->toDescription();
        $out->{'iconID'} = $this->toIconId();
        $out->{'inventoryType'} = $this->toInventoryType();
        $out->{'title'} = $this->toTitle();
        return $out;
    }

    /**
     * @param stdClass $obj
     * @return ItemDelivery
     * @throws Exception
     */
    public static function from(stdClass $obj): ItemDelivery {
        return new ItemDelivery(
         ItemDelivery::fromDeliveryLocation($obj->{'deliveryLocation'})
        ,ItemDelivery::fromDescription($obj->{'description'})
        ,ItemDelivery::fromIconId($obj->{'iconID'})
        ,ItemDelivery::fromInventoryType($obj->{'inventoryType'})
        ,ItemDelivery::fromTitle($obj->{'title'})
        );
    }

    /**
     * @return ItemDelivery
     */
    public static function sample(): ItemDelivery {
        return new ItemDelivery(
         ItemDelivery::sampleDeliveryLocation()
        ,ItemDelivery::sampleDescription()
        ,ItemDelivery::sampleIconId()
        ,ItemDelivery::sampleInventoryType()
        ,ItemDelivery::sampleTitle()
        );
    }
}

// This is an autogenerated file:DeliveryLocation

class DeliveryLocation {
    private array $acceptedValueTypes; // json:acceptedValueTypes Required
    private DeliveryLocationDescription $description; // json:description Required
    private DeliveryLocationIconId $iconId; // json:iconID Required
    private int $maxEntries; // json:maxEntries Required
    private DeliveryLocationTitle $title; // json:title Required
    private DeliveryLocationUnsetDescription $unsetDescription; // json:unsetDescription Required

    /**
     * @param array $acceptedValueTypes
     * @param DeliveryLocationDescription $description
     * @param DeliveryLocationIconId $iconId
     * @param int $maxEntries
     * @param DeliveryLocationTitle $title
     * @param DeliveryLocationUnsetDescription $unsetDescription
     */
    public function __construct(array $acceptedValueTypes, DeliveryLocationDescription $description, DeliveryLocationIconId $iconId, int $maxEntries, DeliveryLocationTitle $title, DeliveryLocationUnsetDescription $unsetDescription) {
        $this->acceptedValueTypes = $acceptedValueTypes;
        $this->description = $description;
        $this->iconId = $iconId;
        $this->maxEntries = $maxEntries;
        $this->title = $title;
        $this->unsetDescription = $unsetDescription;
    }

    /**
     * @param array $value
     * @throws Exception
     * @return array
     */
    public static function fromAcceptedValueTypes(array $value): array {
        return  array_map(function ($value) {
            return AcceptedValueType::from($value); /*enum*/
        }, $value);
    }

    /**
     * @throws Exception
     * @return array
     */
    public function toAcceptedValueTypes(): array {
        if (DeliveryLocation::validateAcceptedValueTypes($this->acceptedValueTypes))  {
            return array_map(function ($value) {
                return AcceptedValueType::to($value); /*enum*/
            }, $this->acceptedValueTypes);
        }
        throw new Exception('never get to this DeliveryLocation::acceptedValueTypes');
    }

    /**
     * @param array
     * @return bool
     * @throws Exception
     */
    public static function validateAcceptedValueTypes(array $value): bool {
        if (!is_array($value)) {
            throw new Exception("Attribute Error:DeliveryLocation::acceptedValueTypes");
        }
        array_walk($value, function($value_v) {
            AcceptedValueType::to($value_v);
        });
        return true;
    }

    /**
     * @throws Exception
     * @return array
     */
    public function getAcceptedValueTypes(): array {
        if (DeliveryLocation::validateAcceptedValueTypes($this->acceptedValueTypes))  {
            return $this->acceptedValueTypes;
        }
        throw new Exception('never get to getAcceptedValueTypes DeliveryLocation::acceptedValueTypes');
    }

    /**
     * @return array
     */
    public static function sampleAcceptedValueTypes(): array {
        return  array(
            AcceptedValueType::sample() /*enum*/
        ); /* 31:acceptedValueTypes*/
    }

    /**
     * @param stdClass $value
     * @throws Exception
     * @return DeliveryLocationDescription
     */
    public static function fromDescription(stdClass $value): DeliveryLocationDescription {
        return DeliveryLocationDescription::from($value); /*class*/
    }

    /**
     * @throws Exception
     * @return stdClass
     */
    public function toDescription(): stdClass {
        if (DeliveryLocation::validateDescription($this->description))  {
            return $this->description->to(); /*class*/
        }
        throw new Exception('never get to this DeliveryLocation::description');
    }

    /**
     * @param DeliveryLocationDescription
     * @return bool
     * @throws Exception
     */
    public static function validateDescription(DeliveryLocationDescription $value): bool {
        $value->validate();
        return true;
    }

    /**
     * @throws Exception
     * @return DeliveryLocationDescription
     */
    public function getDescription(): DeliveryLocationDescription {
        if (DeliveryLocation::validateDescription($this->description))  {
            return $this->description;
        }
        throw new Exception('never get to getDescription DeliveryLocation::description');
    }

    /**
     * @return DeliveryLocationDescription
     */
    public static function sampleDescription(): DeliveryLocationDescription {
        return DeliveryLocationDescription::sample(); /*32:description*/
    }

    /**
     * @param string $value
     * @throws Exception
     * @return DeliveryLocationIconId
     */
    public static function fromIconId(string $value): DeliveryLocationIconId {
        return DeliveryLocationIconId::from($value); /*enum*/
    }

    /**
     * @throws Exception
     * @return string
     */
    public function toIconId(): string {
        if (DeliveryLocation::validateIconId($this->iconId))  {
            return DeliveryLocationIconId::to($this->iconId); /*enum*/
        }
        throw new Exception('never get to this DeliveryLocation::iconId');
    }

    /**
     * @param DeliveryLocationIconId
     * @return bool
     * @throws Exception
     */
    public static function validateIconId(DeliveryLocationIconId $value): bool {
        DeliveryLocationIconId::to($value);
        return true;
    }

    /**
     * @throws Exception
     * @return DeliveryLocationIconId
     */
    public function getIconId(): DeliveryLocationIconId {
        if (DeliveryLocation::validateIconId($this->iconId))  {
            return $this->iconId;
        }
        throw new Exception('never get to getIconId DeliveryLocation::iconId');
    }

    /**
     * @return DeliveryLocationIconId
     */
    public static function sampleIconId(): DeliveryLocationIconId {
        return DeliveryLocationIconId::sample(); /*enum*/
    }

    /**
     * @param int $value
     * @throws Exception
     * @return int
     */
    public static function fromMaxEntries(int $value): int {
        return $value; /*int*/
    }

    /**
     * @throws Exception
     * @return int
     */
    public function toMaxEntries(): int {
        if (DeliveryLocation::validateMaxEntries($this->maxEntries))  {
            return $this->maxEntries; /*int*/
        }
        throw new Exception('never get to this DeliveryLocation::maxEntries');
    }

    /**
     * @param int
     * @return bool
     * @throws Exception
     */
    public static function validateMaxEntries(int $value): bool {
        if (!is_integer($value)) {
            throw new Exception("Attribute Error:DeliveryLocation::maxEntries");
        }
        return true;
    }

    /**
     * @throws Exception
     * @return int
     */
    public function getMaxEntries(): int {
        if (DeliveryLocation::validateMaxEntries($this->maxEntries))  {
            return $this->maxEntries;
        }
        throw new Exception('never get to getMaxEntries DeliveryLocation::maxEntries');
    }

    /**
     * @return int
     */
    public static function sampleMaxEntries(): int {
        return 34; /*34:maxEntries*/
    }

    /**
     * @param stdClass $value
     * @throws Exception
     * @return DeliveryLocationTitle
     */
    public static function fromTitle(stdClass $value): DeliveryLocationTitle {
        return DeliveryLocationTitle::from($value); /*class*/
    }

    /**
     * @throws Exception
     * @return stdClass
     */
    public function toTitle(): stdClass {
        if (DeliveryLocation::validateTitle($this->title))  {
            return $this->title->to(); /*class*/
        }
        throw new Exception('never get to this DeliveryLocation::title');
    }

    /**
     * @param DeliveryLocationTitle
     * @return bool
     * @throws Exception
     */
    public static function validateTitle(DeliveryLocationTitle $value): bool {
        $value->validate();
        return true;
    }

    /**
     * @throws Exception
     * @return DeliveryLocationTitle
     */
    public function getTitle(): DeliveryLocationTitle {
        if (DeliveryLocation::validateTitle($this->title))  {
            return $this->title;
        }
        throw new Exception('never get to getTitle DeliveryLocation::title');
    }

    /**
     * @return DeliveryLocationTitle
     */
    public static function sampleTitle(): DeliveryLocationTitle {
        return DeliveryLocationTitle::sample(); /*35:title*/
    }

    /**
     * @param stdClass $value
     * @throws Exception
     * @return DeliveryLocationUnsetDescription
     */
    public static function fromUnsetDescription(stdClass $value): DeliveryLocationUnsetDescription {
        return DeliveryLocationUnsetDescription::from($value); /*class*/
    }

    /**
     * @throws Exception
     * @return stdClass
     */
    public function toUnsetDescription(): stdClass {
        if (DeliveryLocation::validateUnsetDescription($this->unsetDescription))  {
            return $this->unsetDescription->to(); /*class*/
        }
        throw new Exception('never get to this DeliveryLocation::unsetDescription');
    }

    /**
     * @param DeliveryLocationUnsetDescription
     * @return bool
     * @throws Exception
     */
    public static function validateUnsetDescription(DeliveryLocationUnsetDescription $value): bool {
        $value->validate();
        return true;
    }

    /**
     * @throws Exception
     * @return DeliveryLocationUnsetDescription
     */
    public function getUnsetDescription(): DeliveryLocationUnsetDescription {
        if (DeliveryLocation::validateUnsetDescription($this->unsetDescription))  {
            return $this->unsetDescription;
        }
        throw new Exception('never get to getUnsetDescription DeliveryLocation::unsetDescription');
    }

    /**
     * @return DeliveryLocationUnsetDescription
     */
    public static function sampleUnsetDescription(): DeliveryLocationUnsetDescription {
        return DeliveryLocationUnsetDescription::sample(); /*36:unsetDescription*/
    }

    /**
     * @throws Exception
     * @return bool
     */
    public function validate(): bool {
        return DeliveryLocation::validateAcceptedValueTypes($this->acceptedValueTypes)
        || DeliveryLocation::validateDescription($this->description)
        || DeliveryLocation::validateIconId($this->iconId)
        || DeliveryLocation::validateMaxEntries($this->maxEntries)
        || DeliveryLocation::validateTitle($this->title)
        || DeliveryLocation::validateUnsetDescription($this->unsetDescription);
    }

    /**
     * @return stdClass
     * @throws Exception
     */
    public function to(): stdClass  {
        $out = new stdClass();
        $out->{'acceptedValueTypes'} = $this->toAcceptedValueTypes();
        $out->{'description'} = $this->toDescription();
        $out->{'iconID'} = $this->toIconId();
        $out->{'maxEntries'} = $this->toMaxEntries();
        $out->{'title'} = $this->toTitle();
        $out->{'unsetDescription'} = $this->toUnsetDescription();
        return $out;
    }

    /**
     * @param stdClass $obj
     * @return DeliveryLocation
     * @throws Exception
     */
    public static function from(stdClass $obj): DeliveryLocation {
        return new DeliveryLocation(
         DeliveryLocation::fromAcceptedValueTypes($obj->{'acceptedValueTypes'})
        ,DeliveryLocation::fromDescription($obj->{'description'})
        ,DeliveryLocation::fromIconId($obj->{'iconID'})
        ,DeliveryLocation::fromMaxEntries($obj->{'maxEntries'})
        ,DeliveryLocation::fromTitle($obj->{'title'})
        ,DeliveryLocation::fromUnsetDescription($obj->{'unsetDescription'})
        );
    }

    /**
     * @return DeliveryLocation
     */
    public static function sample(): DeliveryLocation {
        return new DeliveryLocation(
         DeliveryLocation::sampleAcceptedValueTypes()
        ,DeliveryLocation::sampleDescription()
        ,DeliveryLocation::sampleIconId()
        ,DeliveryLocation::sampleMaxEntries()
        ,DeliveryLocation::sampleTitle()
        ,DeliveryLocation::sampleUnsetDescription()
        );
    }
}

// This is an autogenerated file:AcceptedValueType

class AcceptedValueType {
    public static AcceptedValueType $STATION;
    public static AcceptedValueType $STRUCTURE;
    public static function init() {
        AcceptedValueType::$STATION = new AcceptedValueType('station');
        AcceptedValueType::$STRUCTURE = new AcceptedValueType('structure');
    }
    private string $enum;
    public function __construct(string $enum) {
        $this->enum = $enum;
    }

    /**
     * @param AcceptedValueType
     * @return string
     * @throws Exception
     */
    public static function to(AcceptedValueType $obj): string {
        switch ($obj->enum) {
            case AcceptedValueType::$STATION->enum: return 'station';
            case AcceptedValueType::$STRUCTURE->enum: return 'structure';
        }
        throw new Exception('the give value is not an enum-value.');
    }

    /**
     * @param mixed
     * @return AcceptedValueType
     * @throws Exception
     */
    public static function from($obj): AcceptedValueType {
        switch ($obj) {
            case 'station': return AcceptedValueType::$STATION;
            case 'structure': return AcceptedValueType::$STRUCTURE;
        }
        throw new Exception("Cannot deserialize AcceptedValueType");
    }

    /**
     * @return AcceptedValueType
     */
    public static function sample(): AcceptedValueType {
        return AcceptedValueType::$STATION;
    }
}
AcceptedValueType::init();

// This is an autogenerated file:DeliveryLocationDescription

class DeliveryLocationDescription {
    private string $de; // json:de Required
    private string $en; // json:en Required
    private string $es; // json:es Required
    private string $fr; // json:fr Required
    private string $ja; // json:ja Required
    private string $ko; // json:ko Required
    private string $ru; // json:ru Required
    private string $zh; // json:zh Required

    /**
     * @param string $de
     * @param string $en
     * @param string $es
     * @param string $fr
     * @param string $ja
     * @param string $ko
     * @param string $ru
     * @param string $zh
     */
    public function __construct(string $de, string $en, string $es, string $fr, string $ja, string $ko, string $ru, string $zh) {
        $this->de = $de;
        $this->en = $en;
        $this->es = $es;
        $this->fr = $fr;
        $this->ja = $ja;
        $this->ko = $ko;
        $this->ru = $ru;
        $this->zh = $zh;
    }

    /**
     * @param string $value
     * @throws Exception
     * @return string
     */
    public static function fromDe(string $value): string {
        return $value; /*string*/
    }

    /**
     * @throws Exception
     * @return string
     */
    public function toDe(): string {
        if (DeliveryLocationDescription::validateDe($this->de))  {
            return $this->de; /*string*/
        }
        throw new Exception('never get to this DeliveryLocationDescription::de');
    }

    /**
     * @param string
     * @return bool
     * @throws Exception
     */
    public static function validateDe(string $value): bool {
        if (!is_string($value)) {
            throw new Exception("Attribute Error:DeliveryLocationDescription::de");
        }
        return true;
    }

    /**
     * @throws Exception
     * @return string
     */
    public function getDe(): string {
        if (DeliveryLocationDescription::validateDe($this->de))  {
            return $this->de;
        }
        throw new Exception('never get to getDe DeliveryLocationDescription::de');
    }

    /**
     * @return string
     */
    public static function sampleDe(): string {
        return 'DeliveryLocationDescription::de::31'; /*31:de*/
    }

    /**
     * @param string $value
     * @throws Exception
     * @return string
     */
    public static function fromEn(string $value): string {
        return $value; /*string*/
    }

    /**
     * @throws Exception
     * @return string
     */
    public function toEn(): string {
        if (DeliveryLocationDescription::validateEn($this->en))  {
            return $this->en; /*string*/
        }
        throw new Exception('never get to this DeliveryLocationDescription::en');
    }

    /**
     * @param string
     * @return bool
     * @throws Exception
     */
    public static function validateEn(string $value): bool {
        if (!is_string($value)) {
            throw new Exception("Attribute Error:DeliveryLocationDescription::en");
        }
        return true;
    }

    /**
     * @throws Exception
     * @return string
     */
    public function getEn(): string {
        if (DeliveryLocationDescription::validateEn($this->en))  {
            return $this->en;
        }
        throw new Exception('never get to getEn DeliveryLocationDescription::en');
    }

    /**
     * @return string
     */
    public static function sampleEn(): string {
        return 'DeliveryLocationDescription::en::32'; /*32:en*/
    }

    /**
     * @param string $value
     * @throws Exception
     * @return string
     */
    public static function fromEs(string $value): string {
        return $value; /*string*/
    }

    /**
     * @throws Exception
     * @return string
     */
    public function toEs(): string {
        if (DeliveryLocationDescription::validateEs($this->es))  {
            return $this->es; /*string*/
        }
        throw new Exception('never get to this DeliveryLocationDescription::es');
    }

    /**
     * @param string
     * @return bool
     * @throws Exception
     */
    public static function validateEs(string $value): bool {
        if (!is_string($value)) {
            throw new Exception("Attribute Error:DeliveryLocationDescription::es");
        }
        return true;
    }

    /**
     * @throws Exception
     * @return string
     */
    public function getEs(): string {
        if (DeliveryLocationDescription::validateEs($this->es))  {
            return $this->es;
        }
        throw new Exception('never get to getEs DeliveryLocationDescription::es');
    }

    /**
     * @return string
     */
    public static function sampleEs(): string {
        return 'DeliveryLocationDescription::es::33'; /*33:es*/
    }

    /**
     * @param string $value
     * @throws Exception
     * @return string
     */
    public static function fromFr(string $value): string {
        return $value; /*string*/
    }

    /**
     * @throws Exception
     * @return string
     */
    public function toFr(): string {
        if (DeliveryLocationDescription::validateFr($this->fr))  {
            return $this->fr; /*string*/
        }
        throw new Exception('never get to this DeliveryLocationDescription::fr');
    }

    /**
     * @param string
     * @return bool
     * @throws Exception
     */
    public static function validateFr(string $value): bool {
        if (!is_string($value)) {
            throw new Exception("Attribute Error:DeliveryLocationDescription::fr");
        }
        return true;
    }

    /**
     * @throws Exception
     * @return string
     */
    public function getFr(): string {
        if (DeliveryLocationDescription::validateFr($this->fr))  {
            return $this->fr;
        }
        throw new Exception('never get to getFr DeliveryLocationDescription::fr');
    }

    /**
     * @return string
     */
    public static function sampleFr(): string {
        return 'DeliveryLocationDescription::fr::34'; /*34:fr*/
    }

    /**
     * @param string $value
     * @throws Exception
     * @return string
     */
    public static function fromJa(string $value): string {
        return $value; /*string*/
    }

    /**
     * @throws Exception
     * @return string
     */
    public function toJa(): string {
        if (DeliveryLocationDescription::validateJa($this->ja))  {
            return $this->ja; /*string*/
        }
        throw new Exception('never get to this DeliveryLocationDescription::ja');
    }

    /**
     * @param string
     * @return bool
     * @throws Exception
     */
    public static function validateJa(string $value): bool {
        if (!is_string($value)) {
            throw new Exception("Attribute Error:DeliveryLocationDescription::ja");
        }
        return true;
    }

    /**
     * @throws Exception
     * @return string
     */
    public function getJa(): string {
        if (DeliveryLocationDescription::validateJa($this->ja))  {
            return $this->ja;
        }
        throw new Exception('never get to getJa DeliveryLocationDescription::ja');
    }

    /**
     * @return string
     */
    public static function sampleJa(): string {
        return 'DeliveryLocationDescription::ja::35'; /*35:ja*/
    }

    /**
     * @param string $value
     * @throws Exception
     * @return string
     */
    public static function fromKo(string $value): string {
        return $value; /*string*/
    }

    /**
     * @throws Exception
     * @return string
     */
    public function toKo(): string {
        if (DeliveryLocationDescription::validateKo($this->ko))  {
            return $this->ko; /*string*/
        }
        throw new Exception('never get to this DeliveryLocationDescription::ko');
    }

    /**
     * @param string
     * @return bool
     * @throws Exception
     */
    public static function validateKo(string $value): bool {
        if (!is_string($value)) {
            throw new Exception("Attribute Error:DeliveryLocationDescription::ko");
        }
        return true;
    }

    /**
     * @throws Exception
     * @return string
     */
    public function getKo(): string {
        if (DeliveryLocationDescription::validateKo($this->ko))  {
            return $this->ko;
        }
        throw new Exception('never get to getKo DeliveryLocationDescription::ko');
    }

    /**
     * @return string
     */
    public static function sampleKo(): string {
        return 'DeliveryLocationDescription::ko::36'; /*36:ko*/
    }

    /**
     * @param string $value
     * @throws Exception
     * @return string
     */
    public static function fromRu(string $value): string {
        return $value; /*string*/
    }

    /**
     * @throws Exception
     * @return string
     */
    public function toRu(): string {
        if (DeliveryLocationDescription::validateRu($this->ru))  {
            return $this->ru; /*string*/
        }
        throw new Exception('never get to this DeliveryLocationDescription::ru');
    }

    /**
     * @param string
     * @return bool
     * @throws Exception
     */
    public static function validateRu(string $value): bool {
        if (!is_string($value)) {
            throw new Exception("Attribute Error:DeliveryLocationDescription::ru");
        }
        return true;
    }

    /**
     * @throws Exception
     * @return string
     */
    public function getRu(): string {
        if (DeliveryLocationDescription::validateRu($this->ru))  {
            return $this->ru;
        }
        throw new Exception('never get to getRu DeliveryLocationDescription::ru');
    }

    /**
     * @return string
     */
    public static function sampleRu(): string {
        return 'DeliveryLocationDescription::ru::37'; /*37:ru*/
    }

    /**
     * @param string $value
     * @throws Exception
     * @return string
     */
    public static function fromZh(string $value): string {
        return $value; /*string*/
    }

    /**
     * @throws Exception
     * @return string
     */
    public function toZh(): string {
        if (DeliveryLocationDescription::validateZh($this->zh))  {
            return $this->zh; /*string*/
        }
        throw new Exception('never get to this DeliveryLocationDescription::zh');
    }

    /**
     * @param string
     * @return bool
     * @throws Exception
     */
    public static function validateZh(string $value): bool {
        if (!is_string($value)) {
            throw new Exception("Attribute Error:DeliveryLocationDescription::zh");
        }
        return true;
    }

    /**
     * @throws Exception
     * @return string
     */
    public function getZh(): string {
        if (DeliveryLocationDescription::validateZh($this->zh))  {
            return $this->zh;
        }
        throw new Exception('never get to getZh DeliveryLocationDescription::zh');
    }

    /**
     * @return string
     */
    public static function sampleZh(): string {
        return 'DeliveryLocationDescription::zh::38'; /*38:zh*/
    }

    /**
     * @throws Exception
     * @return bool
     */
    public function validate(): bool {
        return DeliveryLocationDescription::validateDe($this->de)
        || DeliveryLocationDescription::validateEn($this->en)
        || DeliveryLocationDescription::validateEs($this->es)
        || DeliveryLocationDescription::validateFr($this->fr)
        || DeliveryLocationDescription::validateJa($this->ja)
        || DeliveryLocationDescription::validateKo($this->ko)
        || DeliveryLocationDescription::validateRu($this->ru)
        || DeliveryLocationDescription::validateZh($this->zh);
    }

    /**
     * @return stdClass
     * @throws Exception
     */
    public function to(): stdClass  {
        $out = new stdClass();
        $out->{'de'} = $this->toDe();
        $out->{'en'} = $this->toEn();
        $out->{'es'} = $this->toEs();
        $out->{'fr'} = $this->toFr();
        $out->{'ja'} = $this->toJa();
        $out->{'ko'} = $this->toKo();
        $out->{'ru'} = $this->toRu();
        $out->{'zh'} = $this->toZh();
        return $out;
    }

    /**
     * @param stdClass $obj
     * @return DeliveryLocationDescription
     * @throws Exception
     */
    public static function from(stdClass $obj): DeliveryLocationDescription {
        return new DeliveryLocationDescription(
         DeliveryLocationDescription::fromDe($obj->{'de'})
        ,DeliveryLocationDescription::fromEn($obj->{'en'})
        ,DeliveryLocationDescription::fromEs($obj->{'es'})
        ,DeliveryLocationDescription::fromFr($obj->{'fr'})
        ,DeliveryLocationDescription::fromJa($obj->{'ja'})
        ,DeliveryLocationDescription::fromKo($obj->{'ko'})
        ,DeliveryLocationDescription::fromRu($obj->{'ru'})
        ,DeliveryLocationDescription::fromZh($obj->{'zh'})
        );
    }

    /**
     * @return DeliveryLocationDescription
     */
    public static function sample(): DeliveryLocationDescription {
        return new DeliveryLocationDescription(
         DeliveryLocationDescription::sampleDe()
        ,DeliveryLocationDescription::sampleEn()
        ,DeliveryLocationDescription::sampleEs()
        ,DeliveryLocationDescription::sampleFr()
        ,DeliveryLocationDescription::sampleJa()
        ,DeliveryLocationDescription::sampleKo()
        ,DeliveryLocationDescription::sampleRu()
        ,DeliveryLocationDescription::sampleZh()
        );
    }
}

// This is an autogenerated file:DeliveryLocationIconId

class DeliveryLocationIconId {
    public static DeliveryLocationIconId $LOCATION;
    public static function init() {
        DeliveryLocationIconId::$LOCATION = new DeliveryLocationIconId('location');
    }
    private string $enum;
    public function __construct(string $enum) {
        $this->enum = $enum;
    }

    /**
     * @param DeliveryLocationIconId
     * @return string
     * @throws Exception
     */
    public static function to(DeliveryLocationIconId $obj): string {
        switch ($obj->enum) {
            case DeliveryLocationIconId::$LOCATION->enum: return 'location';
        }
        throw new Exception('the give value is not an enum-value.');
    }

    /**
     * @param mixed
     * @return DeliveryLocationIconId
     * @throws Exception
     */
    public static function from($obj): DeliveryLocationIconId {
        switch ($obj) {
            case 'location': return DeliveryLocationIconId::$LOCATION;
        }
        throw new Exception("Cannot deserialize DeliveryLocationIconId");
    }

    /**
     * @return DeliveryLocationIconId
     */
    public static function sample(): DeliveryLocationIconId {
        return DeliveryLocationIconId::$LOCATION;
    }
}
DeliveryLocationIconId::init();

// This is an autogenerated file:DeliveryLocationTitle

class DeliveryLocationTitle {
    private string $de; // json:de Required
    private string $en; // json:en Required
    private string $es; // json:es Required
    private string $fr; // json:fr Required
    private string $ja; // json:ja Required
    private string $ko; // json:ko Required
    private string $ru; // json:ru Required
    private string $zh; // json:zh Required

    /**
     * @param string $de
     * @param string $en
     * @param string $es
     * @param string $fr
     * @param string $ja
     * @param string $ko
     * @param string $ru
     * @param string $zh
     */
    public function __construct(string $de, string $en, string $es, string $fr, string $ja, string $ko, string $ru, string $zh) {
        $this->de = $de;
        $this->en = $en;
        $this->es = $es;
        $this->fr = $fr;
        $this->ja = $ja;
        $this->ko = $ko;
        $this->ru = $ru;
        $this->zh = $zh;
    }

    /**
     * @param string $value
     * @throws Exception
     * @return string
     */
    public static function fromDe(string $value): string {
        return $value; /*string*/
    }

    /**
     * @throws Exception
     * @return string
     */
    public function toDe(): string {
        if (DeliveryLocationTitle::validateDe($this->de))  {
            return $this->de; /*string*/
        }
        throw new Exception('never get to this DeliveryLocationTitle::de');
    }

    /**
     * @param string
     * @return bool
     * @throws Exception
     */
    public static function validateDe(string $value): bool {
        if (!is_string($value)) {
            throw new Exception("Attribute Error:DeliveryLocationTitle::de");
        }
        return true;
    }

    /**
     * @throws Exception
     * @return string
     */
    public function getDe(): string {
        if (DeliveryLocationTitle::validateDe($this->de))  {
            return $this->de;
        }
        throw new Exception('never get to getDe DeliveryLocationTitle::de');
    }

    /**
     * @return string
     */
    public static function sampleDe(): string {
        return 'DeliveryLocationTitle::de::31'; /*31:de*/
    }

    /**
     * @param string $value
     * @throws Exception
     * @return string
     */
    public static function fromEn(string $value): string {
        return $value; /*string*/
    }

    /**
     * @throws Exception
     * @return string
     */
    public function toEn(): string {
        if (DeliveryLocationTitle::validateEn($this->en))  {
            return $this->en; /*string*/
        }
        throw new Exception('never get to this DeliveryLocationTitle::en');
    }

    /**
     * @param string
     * @return bool
     * @throws Exception
     */
    public static function validateEn(string $value): bool {
        if (!is_string($value)) {
            throw new Exception("Attribute Error:DeliveryLocationTitle::en");
        }
        return true;
    }

    /**
     * @throws Exception
     * @return string
     */
    public function getEn(): string {
        if (DeliveryLocationTitle::validateEn($this->en))  {
            return $this->en;
        }
        throw new Exception('never get to getEn DeliveryLocationTitle::en');
    }

    /**
     * @return string
     */
    public static function sampleEn(): string {
        return 'DeliveryLocationTitle::en::32'; /*32:en*/
    }

    /**
     * @param string $value
     * @throws Exception
     * @return string
     */
    public static function fromEs(string $value): string {
        return $value; /*string*/
    }

    /**
     * @throws Exception
     * @return string
     */
    public function toEs(): string {
        if (DeliveryLocationTitle::validateEs($this->es))  {
            return $this->es; /*string*/
        }
        throw new Exception('never get to this DeliveryLocationTitle::es');
    }

    /**
     * @param string
     * @return bool
     * @throws Exception
     */
    public static function validateEs(string $value): bool {
        if (!is_string($value)) {
            throw new Exception("Attribute Error:DeliveryLocationTitle::es");
        }
        return true;
    }

    /**
     * @throws Exception
     * @return string
     */
    public function getEs(): string {
        if (DeliveryLocationTitle::validateEs($this->es))  {
            return $this->es;
        }
        throw new Exception('never get to getEs DeliveryLocationTitle::es');
    }

    /**
     * @return string
     */
    public static function sampleEs(): string {
        return 'DeliveryLocationTitle::es::33'; /*33:es*/
    }

    /**
     * @param string $value
     * @throws Exception
     * @return string
     */
    public static function fromFr(string $value): string {
        return $value; /*string*/
    }

    /**
     * @throws Exception
     * @return string
     */
    public function toFr(): string {
        if (DeliveryLocationTitle::validateFr($this->fr))  {
            return $this->fr; /*string*/
        }
        throw new Exception('never get to this DeliveryLocationTitle::fr');
    }

    /**
     * @param string
     * @return bool
     * @throws Exception
     */
    public static function validateFr(string $value): bool {
        if (!is_string($value)) {
            throw new Exception("Attribute Error:DeliveryLocationTitle::fr");
        }
        return true;
    }

    /**
     * @throws Exception
     * @return string
     */
    public function getFr(): string {
        if (DeliveryLocationTitle::validateFr($this->fr))  {
            return $this->fr;
        }
        throw new Exception('never get to getFr DeliveryLocationTitle::fr');
    }

    /**
     * @return string
     */
    public static function sampleFr(): string {
        return 'DeliveryLocationTitle::fr::34'; /*34:fr*/
    }

    /**
     * @param string $value
     * @throws Exception
     * @return string
     */
    public static function fromJa(string $value): string {
        return $value; /*string*/
    }

    /**
     * @throws Exception
     * @return string
     */
    public function toJa(): string {
        if (DeliveryLocationTitle::validateJa($this->ja))  {
            return $this->ja; /*string*/
        }
        throw new Exception('never get to this DeliveryLocationTitle::ja');
    }

    /**
     * @param string
     * @return bool
     * @throws Exception
     */
    public static function validateJa(string $value): bool {
        if (!is_string($value)) {
            throw new Exception("Attribute Error:DeliveryLocationTitle::ja");
        }
        return true;
    }

    /**
     * @throws Exception
     * @return string
     */
    public function getJa(): string {
        if (DeliveryLocationTitle::validateJa($this->ja))  {
            return $this->ja;
        }
        throw new Exception('never get to getJa DeliveryLocationTitle::ja');
    }

    /**
     * @return string
     */
    public static function sampleJa(): string {
        return 'DeliveryLocationTitle::ja::35'; /*35:ja*/
    }

    /**
     * @param string $value
     * @throws Exception
     * @return string
     */
    public static function fromKo(string $value): string {
        return $value; /*string*/
    }

    /**
     * @throws Exception
     * @return string
     */
    public function toKo(): string {
        if (DeliveryLocationTitle::validateKo($this->ko))  {
            return $this->ko; /*string*/
        }
        throw new Exception('never get to this DeliveryLocationTitle::ko');
    }

    /**
     * @param string
     * @return bool
     * @throws Exception
     */
    public static function validateKo(string $value): bool {
        if (!is_string($value)) {
            throw new Exception("Attribute Error:DeliveryLocationTitle::ko");
        }
        return true;
    }

    /**
     * @throws Exception
     * @return string
     */
    public function getKo(): string {
        if (DeliveryLocationTitle::validateKo($this->ko))  {
            return $this->ko;
        }
        throw new Exception('never get to getKo DeliveryLocationTitle::ko');
    }

    /**
     * @return string
     */
    public static function sampleKo(): string {
        return 'DeliveryLocationTitle::ko::36'; /*36:ko*/
    }

    /**
     * @param string $value
     * @throws Exception
     * @return string
     */
    public static function fromRu(string $value): string {
        return $value; /*string*/
    }

    /**
     * @throws Exception
     * @return string
     */
    public function toRu(): string {
        if (DeliveryLocationTitle::validateRu($this->ru))  {
            return $this->ru; /*string*/
        }
        throw new Exception('never get to this DeliveryLocationTitle::ru');
    }

    /**
     * @param string
     * @return bool
     * @throws Exception
     */
    public static function validateRu(string $value): bool {
        if (!is_string($value)) {
            throw new Exception("Attribute Error:DeliveryLocationTitle::ru");
        }
        return true;
    }

    /**
     * @throws Exception
     * @return string
     */
    public function getRu(): string {
        if (DeliveryLocationTitle::validateRu($this->ru))  {
            return $this->ru;
        }
        throw new Exception('never get to getRu DeliveryLocationTitle::ru');
    }

    /**
     * @return string
     */
    public static function sampleRu(): string {
        return 'DeliveryLocationTitle::ru::37'; /*37:ru*/
    }

    /**
     * @param string $value
     * @throws Exception
     * @return string
     */
    public static function fromZh(string $value): string {
        return $value; /*string*/
    }

    /**
     * @throws Exception
     * @return string
     */
    public function toZh(): string {
        if (DeliveryLocationTitle::validateZh($this->zh))  {
            return $this->zh; /*string*/
        }
        throw new Exception('never get to this DeliveryLocationTitle::zh');
    }

    /**
     * @param string
     * @return bool
     * @throws Exception
     */
    public static function validateZh(string $value): bool {
        if (!is_string($value)) {
            throw new Exception("Attribute Error:DeliveryLocationTitle::zh");
        }
        return true;
    }

    /**
     * @throws Exception
     * @return string
     */
    public function getZh(): string {
        if (DeliveryLocationTitle::validateZh($this->zh))  {
            return $this->zh;
        }
        throw new Exception('never get to getZh DeliveryLocationTitle::zh');
    }

    /**
     * @return string
     */
    public static function sampleZh(): string {
        return 'DeliveryLocationTitle::zh::38'; /*38:zh*/
    }

    /**
     * @throws Exception
     * @return bool
     */
    public function validate(): bool {
        return DeliveryLocationTitle::validateDe($this->de)
        || DeliveryLocationTitle::validateEn($this->en)
        || DeliveryLocationTitle::validateEs($this->es)
        || DeliveryLocationTitle::validateFr($this->fr)
        || DeliveryLocationTitle::validateJa($this->ja)
        || DeliveryLocationTitle::validateKo($this->ko)
        || DeliveryLocationTitle::validateRu($this->ru)
        || DeliveryLocationTitle::validateZh($this->zh);
    }

    /**
     * @return stdClass
     * @throws Exception
     */
    public function to(): stdClass  {
        $out = new stdClass();
        $out->{'de'} = $this->toDe();
        $out->{'en'} = $this->toEn();
        $out->{'es'} = $this->toEs();
        $out->{'fr'} = $this->toFr();
        $out->{'ja'} = $this->toJa();
        $out->{'ko'} = $this->toKo();
        $out->{'ru'} = $this->toRu();
        $out->{'zh'} = $this->toZh();
        return $out;
    }

    /**
     * @param stdClass $obj
     * @return DeliveryLocationTitle
     * @throws Exception
     */
    public static function from(stdClass $obj): DeliveryLocationTitle {
        return new DeliveryLocationTitle(
         DeliveryLocationTitle::fromDe($obj->{'de'})
        ,DeliveryLocationTitle::fromEn($obj->{'en'})
        ,DeliveryLocationTitle::fromEs($obj->{'es'})
        ,DeliveryLocationTitle::fromFr($obj->{'fr'})
        ,DeliveryLocationTitle::fromJa($obj->{'ja'})
        ,DeliveryLocationTitle::fromKo($obj->{'ko'})
        ,DeliveryLocationTitle::fromRu($obj->{'ru'})
        ,DeliveryLocationTitle::fromZh($obj->{'zh'})
        );
    }

    /**
     * @return DeliveryLocationTitle
     */
    public static function sample(): DeliveryLocationTitle {
        return new DeliveryLocationTitle(
         DeliveryLocationTitle::sampleDe()
        ,DeliveryLocationTitle::sampleEn()
        ,DeliveryLocationTitle::sampleEs()
        ,DeliveryLocationTitle::sampleFr()
        ,DeliveryLocationTitle::sampleJa()
        ,DeliveryLocationTitle::sampleKo()
        ,DeliveryLocationTitle::sampleRu()
        ,DeliveryLocationTitle::sampleZh()
        );
    }
}

// This is an autogenerated file:DeliveryLocationUnsetDescription

class DeliveryLocationUnsetDescription {
    private string $de; // json:de Required
    private string $en; // json:en Required
    private string $es; // json:es Required
    private string $fr; // json:fr Required
    private string $ja; // json:ja Required
    private string $ko; // json:ko Required
    private string $ru; // json:ru Required
    private string $zh; // json:zh Required

    /**
     * @param string $de
     * @param string $en
     * @param string $es
     * @param string $fr
     * @param string $ja
     * @param string $ko
     * @param string $ru
     * @param string $zh
     */
    public function __construct(string $de, string $en, string $es, string $fr, string $ja, string $ko, string $ru, string $zh) {
        $this->de = $de;
        $this->en = $en;
        $this->es = $es;
        $this->fr = $fr;
        $this->ja = $ja;
        $this->ko = $ko;
        $this->ru = $ru;
        $this->zh = $zh;
    }

    /**
     * @param string $value
     * @throws Exception
     * @return string
     */
    public static function fromDe(string $value): string {
        return $value; /*string*/
    }

    /**
     * @throws Exception
     * @return string
     */
    public function toDe(): string {
        if (DeliveryLocationUnsetDescription::validateDe($this->de))  {
            return $this->de; /*string*/
        }
        throw new Exception('never get to this DeliveryLocationUnsetDescription::de');
    }

    /**
     * @param string
     * @return bool
     * @throws Exception
     */
    public static function validateDe(string $value): bool {
        if (!is_string($value)) {
            throw new Exception("Attribute Error:DeliveryLocationUnsetDescription::de");
        }
        return true;
    }

    /**
     * @throws Exception
     * @return string
     */
    public function getDe(): string {
        if (DeliveryLocationUnsetDescription::validateDe($this->de))  {
            return $this->de;
        }
        throw new Exception('never get to getDe DeliveryLocationUnsetDescription::de');
    }

    /**
     * @return string
     */
    public static function sampleDe(): string {
        return 'DeliveryLocationUnsetDescription::de::31'; /*31:de*/
    }

    /**
     * @param string $value
     * @throws Exception
     * @return string
     */
    public static function fromEn(string $value): string {
        return $value; /*string*/
    }

    /**
     * @throws Exception
     * @return string
     */
    public function toEn(): string {
        if (DeliveryLocationUnsetDescription::validateEn($this->en))  {
            return $this->en; /*string*/
        }
        throw new Exception('never get to this DeliveryLocationUnsetDescription::en');
    }

    /**
     * @param string
     * @return bool
     * @throws Exception
     */
    public static function validateEn(string $value): bool {
        if (!is_string($value)) {
            throw new Exception("Attribute Error:DeliveryLocationUnsetDescription::en");
        }
        return true;
    }

    /**
     * @throws Exception
     * @return string
     */
    public function getEn(): string {
        if (DeliveryLocationUnsetDescription::validateEn($this->en))  {
            return $this->en;
        }
        throw new Exception('never get to getEn DeliveryLocationUnsetDescription::en');
    }

    /**
     * @return string
     */
    public static function sampleEn(): string {
        return 'DeliveryLocationUnsetDescription::en::32'; /*32:en*/
    }

    /**
     * @param string $value
     * @throws Exception
     * @return string
     */
    public static function fromEs(string $value): string {
        return $value; /*string*/
    }

    /**
     * @throws Exception
     * @return string
     */
    public function toEs(): string {
        if (DeliveryLocationUnsetDescription::validateEs($this->es))  {
            return $this->es; /*string*/
        }
        throw new Exception('never get to this DeliveryLocationUnsetDescription::es');
    }

    /**
     * @param string
     * @return bool
     * @throws Exception
     */
    public static function validateEs(string $value): bool {
        if (!is_string($value)) {
            throw new Exception("Attribute Error:DeliveryLocationUnsetDescription::es");
        }
        return true;
    }

    /**
     * @throws Exception
     * @return string
     */
    public function getEs(): string {
        if (DeliveryLocationUnsetDescription::validateEs($this->es))  {
            return $this->es;
        }
        throw new Exception('never get to getEs DeliveryLocationUnsetDescription::es');
    }

    /**
     * @return string
     */
    public static function sampleEs(): string {
        return 'DeliveryLocationUnsetDescription::es::33'; /*33:es*/
    }

    /**
     * @param string $value
     * @throws Exception
     * @return string
     */
    public static function fromFr(string $value): string {
        return $value; /*string*/
    }

    /**
     * @throws Exception
     * @return string
     */
    public function toFr(): string {
        if (DeliveryLocationUnsetDescription::validateFr($this->fr))  {
            return $this->fr; /*string*/
        }
        throw new Exception('never get to this DeliveryLocationUnsetDescription::fr');
    }

    /**
     * @param string
     * @return bool
     * @throws Exception
     */
    public static function validateFr(string $value): bool {
        if (!is_string($value)) {
            throw new Exception("Attribute Error:DeliveryLocationUnsetDescription::fr");
        }
        return true;
    }

    /**
     * @throws Exception
     * @return string
     */
    public function getFr(): string {
        if (DeliveryLocationUnsetDescription::validateFr($this->fr))  {
            return $this->fr;
        }
        throw new Exception('never get to getFr DeliveryLocationUnsetDescription::fr');
    }

    /**
     * @return string
     */
    public static function sampleFr(): string {
        return 'DeliveryLocationUnsetDescription::fr::34'; /*34:fr*/
    }

    /**
     * @param string $value
     * @throws Exception
     * @return string
     */
    public static function fromJa(string $value): string {
        return $value; /*string*/
    }

    /**
     * @throws Exception
     * @return string
     */
    public function toJa(): string {
        if (DeliveryLocationUnsetDescription::validateJa($this->ja))  {
            return $this->ja; /*string*/
        }
        throw new Exception('never get to this DeliveryLocationUnsetDescription::ja');
    }

    /**
     * @param string
     * @return bool
     * @throws Exception
     */
    public static function validateJa(string $value): bool {
        if (!is_string($value)) {
            throw new Exception("Attribute Error:DeliveryLocationUnsetDescription::ja");
        }
        return true;
    }

    /**
     * @throws Exception
     * @return string
     */
    public function getJa(): string {
        if (DeliveryLocationUnsetDescription::validateJa($this->ja))  {
            return $this->ja;
        }
        throw new Exception('never get to getJa DeliveryLocationUnsetDescription::ja');
    }

    /**
     * @return string
     */
    public static function sampleJa(): string {
        return 'DeliveryLocationUnsetDescription::ja::35'; /*35:ja*/
    }

    /**
     * @param string $value
     * @throws Exception
     * @return string
     */
    public static function fromKo(string $value): string {
        return $value; /*string*/
    }

    /**
     * @throws Exception
     * @return string
     */
    public function toKo(): string {
        if (DeliveryLocationUnsetDescription::validateKo($this->ko))  {
            return $this->ko; /*string*/
        }
        throw new Exception('never get to this DeliveryLocationUnsetDescription::ko');
    }

    /**
     * @param string
     * @return bool
     * @throws Exception
     */
    public static function validateKo(string $value): bool {
        if (!is_string($value)) {
            throw new Exception("Attribute Error:DeliveryLocationUnsetDescription::ko");
        }
        return true;
    }

    /**
     * @throws Exception
     * @return string
     */
    public function getKo(): string {
        if (DeliveryLocationUnsetDescription::validateKo($this->ko))  {
            return $this->ko;
        }
        throw new Exception('never get to getKo DeliveryLocationUnsetDescription::ko');
    }

    /**
     * @return string
     */
    public static function sampleKo(): string {
        return 'DeliveryLocationUnsetDescription::ko::36'; /*36:ko*/
    }

    /**
     * @param string $value
     * @throws Exception
     * @return string
     */
    public static function fromRu(string $value): string {
        return $value; /*string*/
    }

    /**
     * @throws Exception
     * @return string
     */
    public function toRu(): string {
        if (DeliveryLocationUnsetDescription::validateRu($this->ru))  {
            return $this->ru; /*string*/
        }
        throw new Exception('never get to this DeliveryLocationUnsetDescription::ru');
    }

    /**
     * @param string
     * @return bool
     * @throws Exception
     */
    public static function validateRu(string $value): bool {
        if (!is_string($value)) {
            throw new Exception("Attribute Error:DeliveryLocationUnsetDescription::ru");
        }
        return true;
    }

    /**
     * @throws Exception
     * @return string
     */
    public function getRu(): string {
        if (DeliveryLocationUnsetDescription::validateRu($this->ru))  {
            return $this->ru;
        }
        throw new Exception('never get to getRu DeliveryLocationUnsetDescription::ru');
    }

    /**
     * @return string
     */
    public static function sampleRu(): string {
        return 'DeliveryLocationUnsetDescription::ru::37'; /*37:ru*/
    }

    /**
     * @param string $value
     * @throws Exception
     * @return string
     */
    public static function fromZh(string $value): string {
        return $value; /*string*/
    }

    /**
     * @throws Exception
     * @return string
     */
    public function toZh(): string {
        if (DeliveryLocationUnsetDescription::validateZh($this->zh))  {
            return $this->zh; /*string*/
        }
        throw new Exception('never get to this DeliveryLocationUnsetDescription::zh');
    }

    /**
     * @param string
     * @return bool
     * @throws Exception
     */
    public static function validateZh(string $value): bool {
        if (!is_string($value)) {
            throw new Exception("Attribute Error:DeliveryLocationUnsetDescription::zh");
        }
        return true;
    }

    /**
     * @throws Exception
     * @return string
     */
    public function getZh(): string {
        if (DeliveryLocationUnsetDescription::validateZh($this->zh))  {
            return $this->zh;
        }
        throw new Exception('never get to getZh DeliveryLocationUnsetDescription::zh');
    }

    /**
     * @return string
     */
    public static function sampleZh(): string {
        return 'DeliveryLocationUnsetDescription::zh::38'; /*38:zh*/
    }

    /**
     * @throws Exception
     * @return bool
     */
    public function validate(): bool {
        return DeliveryLocationUnsetDescription::validateDe($this->de)
        || DeliveryLocationUnsetDescription::validateEn($this->en)
        || DeliveryLocationUnsetDescription::validateEs($this->es)
        || DeliveryLocationUnsetDescription::validateFr($this->fr)
        || DeliveryLocationUnsetDescription::validateJa($this->ja)
        || DeliveryLocationUnsetDescription::validateKo($this->ko)
        || DeliveryLocationUnsetDescription::validateRu($this->ru)
        || DeliveryLocationUnsetDescription::validateZh($this->zh);
    }

    /**
     * @return stdClass
     * @throws Exception
     */
    public function to(): stdClass  {
        $out = new stdClass();
        $out->{'de'} = $this->toDe();
        $out->{'en'} = $this->toEn();
        $out->{'es'} = $this->toEs();
        $out->{'fr'} = $this->toFr();
        $out->{'ja'} = $this->toJa();
        $out->{'ko'} = $this->toKo();
        $out->{'ru'} = $this->toRu();
        $out->{'zh'} = $this->toZh();
        return $out;
    }

    /**
     * @param stdClass $obj
     * @return DeliveryLocationUnsetDescription
     * @throws Exception
     */
    public static function from(stdClass $obj): DeliveryLocationUnsetDescription {
        return new DeliveryLocationUnsetDescription(
         DeliveryLocationUnsetDescription::fromDe($obj->{'de'})
        ,DeliveryLocationUnsetDescription::fromEn($obj->{'en'})
        ,DeliveryLocationUnsetDescription::fromEs($obj->{'es'})
        ,DeliveryLocationUnsetDescription::fromFr($obj->{'fr'})
        ,DeliveryLocationUnsetDescription::fromJa($obj->{'ja'})
        ,DeliveryLocationUnsetDescription::fromKo($obj->{'ko'})
        ,DeliveryLocationUnsetDescription::fromRu($obj->{'ru'})
        ,DeliveryLocationUnsetDescription::fromZh($obj->{'zh'})
        );
    }

    /**
     * @return DeliveryLocationUnsetDescription
     */
    public static function sample(): DeliveryLocationUnsetDescription {
        return new DeliveryLocationUnsetDescription(
         DeliveryLocationUnsetDescription::sampleDe()
        ,DeliveryLocationUnsetDescription::sampleEn()
        ,DeliveryLocationUnsetDescription::sampleEs()
        ,DeliveryLocationUnsetDescription::sampleFr()
        ,DeliveryLocationUnsetDescription::sampleJa()
        ,DeliveryLocationUnsetDescription::sampleKo()
        ,DeliveryLocationUnsetDescription::sampleRu()
        ,DeliveryLocationUnsetDescription::sampleZh()
        );
    }
}

// This is an autogenerated file:ItemDeliveryDescription

class ItemDeliveryDescription {
    private string $de; // json:de Required
    private string $en; // json:en Required
    private string $es; // json:es Required
    private string $fr; // json:fr Required
    private string $ja; // json:ja Required
    private string $ko; // json:ko Required
    private string $ru; // json:ru Required
    private string $zh; // json:zh Required

    /**
     * @param string $de
     * @param string $en
     * @param string $es
     * @param string $fr
     * @param string $ja
     * @param string $ko
     * @param string $ru
     * @param string $zh
     */
    public function __construct(string $de, string $en, string $es, string $fr, string $ja, string $ko, string $ru, string $zh) {
        $this->de = $de;
        $this->en = $en;
        $this->es = $es;
        $this->fr = $fr;
        $this->ja = $ja;
        $this->ko = $ko;
        $this->ru = $ru;
        $this->zh = $zh;
    }

    /**
     * @param string $value
     * @throws Exception
     * @return string
     */
    public static function fromDe(string $value): string {
        return $value; /*string*/
    }

    /**
     * @throws Exception
     * @return string
     */
    public function toDe(): string {
        if (ItemDeliveryDescription::validateDe($this->de))  {
            return $this->de; /*string*/
        }
        throw new Exception('never get to this ItemDeliveryDescription::de');
    }

    /**
     * @param string
     * @return bool
     * @throws Exception
     */
    public static function validateDe(string $value): bool {
        if (!is_string($value)) {
            throw new Exception("Attribute Error:ItemDeliveryDescription::de");
        }
        return true;
    }

    /**
     * @throws Exception
     * @return string
     */
    public function getDe(): string {
        if (ItemDeliveryDescription::validateDe($this->de))  {
            return $this->de;
        }
        throw new Exception('never get to getDe ItemDeliveryDescription::de');
    }

    /**
     * @return string
     */
    public static function sampleDe(): string {
        return 'ItemDeliveryDescription::de::31'; /*31:de*/
    }

    /**
     * @param string $value
     * @throws Exception
     * @return string
     */
    public static function fromEn(string $value): string {
        return $value; /*string*/
    }

    /**
     * @throws Exception
     * @return string
     */
    public function toEn(): string {
        if (ItemDeliveryDescription::validateEn($this->en))  {
            return $this->en; /*string*/
        }
        throw new Exception('never get to this ItemDeliveryDescription::en');
    }

    /**
     * @param string
     * @return bool
     * @throws Exception
     */
    public static function validateEn(string $value): bool {
        if (!is_string($value)) {
            throw new Exception("Attribute Error:ItemDeliveryDescription::en");
        }
        return true;
    }

    /**
     * @throws Exception
     * @return string
     */
    public function getEn(): string {
        if (ItemDeliveryDescription::validateEn($this->en))  {
            return $this->en;
        }
        throw new Exception('never get to getEn ItemDeliveryDescription::en');
    }

    /**
     * @return string
     */
    public static function sampleEn(): string {
        return 'ItemDeliveryDescription::en::32'; /*32:en*/
    }

    /**
     * @param string $value
     * @throws Exception
     * @return string
     */
    public static function fromEs(string $value): string {
        return $value; /*string*/
    }

    /**
     * @throws Exception
     * @return string
     */
    public function toEs(): string {
        if (ItemDeliveryDescription::validateEs($this->es))  {
            return $this->es; /*string*/
        }
        throw new Exception('never get to this ItemDeliveryDescription::es');
    }

    /**
     * @param string
     * @return bool
     * @throws Exception
     */
    public static function validateEs(string $value): bool {
        if (!is_string($value)) {
            throw new Exception("Attribute Error:ItemDeliveryDescription::es");
        }
        return true;
    }

    /**
     * @throws Exception
     * @return string
     */
    public function getEs(): string {
        if (ItemDeliveryDescription::validateEs($this->es))  {
            return $this->es;
        }
        throw new Exception('never get to getEs ItemDeliveryDescription::es');
    }

    /**
     * @return string
     */
    public static function sampleEs(): string {
        return 'ItemDeliveryDescription::es::33'; /*33:es*/
    }

    /**
     * @param string $value
     * @throws Exception
     * @return string
     */
    public static function fromFr(string $value): string {
        return $value; /*string*/
    }

    /**
     * @throws Exception
     * @return string
     */
    public function toFr(): string {
        if (ItemDeliveryDescription::validateFr($this->fr))  {
            return $this->fr; /*string*/
        }
        throw new Exception('never get to this ItemDeliveryDescription::fr');
    }

    /**
     * @param string
     * @return bool
     * @throws Exception
     */
    public static function validateFr(string $value): bool {
        if (!is_string($value)) {
            throw new Exception("Attribute Error:ItemDeliveryDescription::fr");
        }
        return true;
    }

    /**
     * @throws Exception
     * @return string
     */
    public function getFr(): string {
        if (ItemDeliveryDescription::validateFr($this->fr))  {
            return $this->fr;
        }
        throw new Exception('never get to getFr ItemDeliveryDescription::fr');
    }

    /**
     * @return string
     */
    public static function sampleFr(): string {
        return 'ItemDeliveryDescription::fr::34'; /*34:fr*/
    }

    /**
     * @param string $value
     * @throws Exception
     * @return string
     */
    public static function fromJa(string $value): string {
        return $value; /*string*/
    }

    /**
     * @throws Exception
     * @return string
     */
    public function toJa(): string {
        if (ItemDeliveryDescription::validateJa($this->ja))  {
            return $this->ja; /*string*/
        }
        throw new Exception('never get to this ItemDeliveryDescription::ja');
    }

    /**
     * @param string
     * @return bool
     * @throws Exception
     */
    public static function validateJa(string $value): bool {
        if (!is_string($value)) {
            throw new Exception("Attribute Error:ItemDeliveryDescription::ja");
        }
        return true;
    }

    /**
     * @throws Exception
     * @return string
     */
    public function getJa(): string {
        if (ItemDeliveryDescription::validateJa($this->ja))  {
            return $this->ja;
        }
        throw new Exception('never get to getJa ItemDeliveryDescription::ja');
    }

    /**
     * @return string
     */
    public static function sampleJa(): string {
        return 'ItemDeliveryDescription::ja::35'; /*35:ja*/
    }

    /**
     * @param string $value
     * @throws Exception
     * @return string
     */
    public static function fromKo(string $value): string {
        return $value; /*string*/
    }

    /**
     * @throws Exception
     * @return string
     */
    public function toKo(): string {
        if (ItemDeliveryDescription::validateKo($this->ko))  {
            return $this->ko; /*string*/
        }
        throw new Exception('never get to this ItemDeliveryDescription::ko');
    }

    /**
     * @param string
     * @return bool
     * @throws Exception
     */
    public static function validateKo(string $value): bool {
        if (!is_string($value)) {
            throw new Exception("Attribute Error:ItemDeliveryDescription::ko");
        }
        return true;
    }

    /**
     * @throws Exception
     * @return string
     */
    public function getKo(): string {
        if (ItemDeliveryDescription::validateKo($this->ko))  {
            return $this->ko;
        }
        throw new Exception('never get to getKo ItemDeliveryDescription::ko');
    }

    /**
     * @return string
     */
    public static function sampleKo(): string {
        return 'ItemDeliveryDescription::ko::36'; /*36:ko*/
    }

    /**
     * @param string $value
     * @throws Exception
     * @return string
     */
    public static function fromRu(string $value): string {
        return $value; /*string*/
    }

    /**
     * @throws Exception
     * @return string
     */
    public function toRu(): string {
        if (ItemDeliveryDescription::validateRu($this->ru))  {
            return $this->ru; /*string*/
        }
        throw new Exception('never get to this ItemDeliveryDescription::ru');
    }

    /**
     * @param string
     * @return bool
     * @throws Exception
     */
    public static function validateRu(string $value): bool {
        if (!is_string($value)) {
            throw new Exception("Attribute Error:ItemDeliveryDescription::ru");
        }
        return true;
    }

    /**
     * @throws Exception
     * @return string
     */
    public function getRu(): string {
        if (ItemDeliveryDescription::validateRu($this->ru))  {
            return $this->ru;
        }
        throw new Exception('never get to getRu ItemDeliveryDescription::ru');
    }

    /**
     * @return string
     */
    public static function sampleRu(): string {
        return 'ItemDeliveryDescription::ru::37'; /*37:ru*/
    }

    /**
     * @param string $value
     * @throws Exception
     * @return string
     */
    public static function fromZh(string $value): string {
        return $value; /*string*/
    }

    /**
     * @throws Exception
     * @return string
     */
    public function toZh(): string {
        if (ItemDeliveryDescription::validateZh($this->zh))  {
            return $this->zh; /*string*/
        }
        throw new Exception('never get to this ItemDeliveryDescription::zh');
    }

    /**
     * @param string
     * @return bool
     * @throws Exception
     */
    public static function validateZh(string $value): bool {
        if (!is_string($value)) {
            throw new Exception("Attribute Error:ItemDeliveryDescription::zh");
        }
        return true;
    }

    /**
     * @throws Exception
     * @return string
     */
    public function getZh(): string {
        if (ItemDeliveryDescription::validateZh($this->zh))  {
            return $this->zh;
        }
        throw new Exception('never get to getZh ItemDeliveryDescription::zh');
    }

    /**
     * @return string
     */
    public static function sampleZh(): string {
        return 'ItemDeliveryDescription::zh::38'; /*38:zh*/
    }

    /**
     * @throws Exception
     * @return bool
     */
    public function validate(): bool {
        return ItemDeliveryDescription::validateDe($this->de)
        || ItemDeliveryDescription::validateEn($this->en)
        || ItemDeliveryDescription::validateEs($this->es)
        || ItemDeliveryDescription::validateFr($this->fr)
        || ItemDeliveryDescription::validateJa($this->ja)
        || ItemDeliveryDescription::validateKo($this->ko)
        || ItemDeliveryDescription::validateRu($this->ru)
        || ItemDeliveryDescription::validateZh($this->zh);
    }

    /**
     * @return stdClass
     * @throws Exception
     */
    public function to(): stdClass  {
        $out = new stdClass();
        $out->{'de'} = $this->toDe();
        $out->{'en'} = $this->toEn();
        $out->{'es'} = $this->toEs();
        $out->{'fr'} = $this->toFr();
        $out->{'ja'} = $this->toJa();
        $out->{'ko'} = $this->toKo();
        $out->{'ru'} = $this->toRu();
        $out->{'zh'} = $this->toZh();
        return $out;
    }

    /**
     * @param stdClass $obj
     * @return ItemDeliveryDescription
     * @throws Exception
     */
    public static function from(stdClass $obj): ItemDeliveryDescription {
        return new ItemDeliveryDescription(
         ItemDeliveryDescription::fromDe($obj->{'de'})
        ,ItemDeliveryDescription::fromEn($obj->{'en'})
        ,ItemDeliveryDescription::fromEs($obj->{'es'})
        ,ItemDeliveryDescription::fromFr($obj->{'fr'})
        ,ItemDeliveryDescription::fromJa($obj->{'ja'})
        ,ItemDeliveryDescription::fromKo($obj->{'ko'})
        ,ItemDeliveryDescription::fromRu($obj->{'ru'})
        ,ItemDeliveryDescription::fromZh($obj->{'zh'})
        );
    }

    /**
     * @return ItemDeliveryDescription
     */
    public static function sample(): ItemDeliveryDescription {
        return new ItemDeliveryDescription(
         ItemDeliveryDescription::sampleDe()
        ,ItemDeliveryDescription::sampleEn()
        ,ItemDeliveryDescription::sampleEs()
        ,ItemDeliveryDescription::sampleFr()
        ,ItemDeliveryDescription::sampleJa()
        ,ItemDeliveryDescription::sampleKo()
        ,ItemDeliveryDescription::sampleRu()
        ,ItemDeliveryDescription::sampleZh()
        );
    }
}

// This is an autogenerated file:ItemDeliveryIconId

class ItemDeliveryIconId {
    public static ItemDeliveryIconId $INVENTORY;
    public static function init() {
        ItemDeliveryIconId::$INVENTORY = new ItemDeliveryIconId('inventory');
    }
    private string $enum;
    public function __construct(string $enum) {
        $this->enum = $enum;
    }

    /**
     * @param ItemDeliveryIconId
     * @return string
     * @throws Exception
     */
    public static function to(ItemDeliveryIconId $obj): string {
        switch ($obj->enum) {
            case ItemDeliveryIconId::$INVENTORY->enum: return 'inventory';
        }
        throw new Exception('the give value is not an enum-value.');
    }

    /**
     * @param mixed
     * @return ItemDeliveryIconId
     * @throws Exception
     */
    public static function from($obj): ItemDeliveryIconId {
        switch ($obj) {
            case 'inventory': return ItemDeliveryIconId::$INVENTORY;
        }
        throw new Exception("Cannot deserialize ItemDeliveryIconId");
    }

    /**
     * @return ItemDeliveryIconId
     */
    public static function sample(): ItemDeliveryIconId {
        return ItemDeliveryIconId::$INVENTORY;
    }
}
ItemDeliveryIconId::init();

// This is an autogenerated file:InventoryType

class InventoryType {
    private array $acceptedValueTypes; // json:acceptedValueTypes Required
    private InventoryTypeDescription $description; // json:description Required
    private ItemDeliveryIconId $iconId; // json:iconID Required
    private InventoryTypeTitle $title; // json:title Required
    private InventoryTypeUnsetDescription $unsetDescription; // json:unsetDescription Required

    /**
     * @param array $acceptedValueTypes
     * @param InventoryTypeDescription $description
     * @param ItemDeliveryIconId $iconId
     * @param InventoryTypeTitle $title
     * @param InventoryTypeUnsetDescription $unsetDescription
     */
    public function __construct(array $acceptedValueTypes, InventoryTypeDescription $description, ItemDeliveryIconId $iconId, InventoryTypeTitle $title, InventoryTypeUnsetDescription $unsetDescription) {
        $this->acceptedValueTypes = $acceptedValueTypes;
        $this->description = $description;
        $this->iconId = $iconId;
        $this->title = $title;
        $this->unsetDescription = $unsetDescription;
    }

    /**
     * @param array $value
     * @throws Exception
     * @return array
     */
    public static function fromAcceptedValueTypes(array $value): array {
        return  array_map(function ($value) {
            return $value; /*string*/
        }, $value);
    }

    /**
     * @throws Exception
     * @return array
     */
    public function toAcceptedValueTypes(): array {
        if (InventoryType::validateAcceptedValueTypes($this->acceptedValueTypes))  {
            return array_map(function ($value) {
                return $value; /*string*/
            }, $this->acceptedValueTypes);
        }
        throw new Exception('never get to this InventoryType::acceptedValueTypes');
    }

    /**
     * @param array
     * @return bool
     * @throws Exception
     */
    public static function validateAcceptedValueTypes(array $value): bool {
        if (!is_array($value)) {
            throw new Exception("Attribute Error:InventoryType::acceptedValueTypes");
        }
        array_walk($value, function($value_v) {
            if (!is_string($value_v)) {
                throw new Exception("Attribute Error:InventoryType::acceptedValueTypes");
            }
        });
        return true;
    }

    /**
     * @throws Exception
     * @return array
     */
    public function getAcceptedValueTypes(): array {
        if (InventoryType::validateAcceptedValueTypes($this->acceptedValueTypes))  {
            return $this->acceptedValueTypes;
        }
        throw new Exception('never get to getAcceptedValueTypes InventoryType::acceptedValueTypes');
    }

    /**
     * @return array
     */
    public static function sampleAcceptedValueTypes(): array {
        return  array(
            'InventoryType::::31' /*31:*/
        ); /* 31:acceptedValueTypes*/
    }

    /**
     * @param stdClass $value
     * @throws Exception
     * @return InventoryTypeDescription
     */
    public static function fromDescription(stdClass $value): InventoryTypeDescription {
        return InventoryTypeDescription::from($value); /*class*/
    }

    /**
     * @throws Exception
     * @return stdClass
     */
    public function toDescription(): stdClass {
        if (InventoryType::validateDescription($this->description))  {
            return $this->description->to(); /*class*/
        }
        throw new Exception('never get to this InventoryType::description');
    }

    /**
     * @param InventoryTypeDescription
     * @return bool
     * @throws Exception
     */
    public static function validateDescription(InventoryTypeDescription $value): bool {
        $value->validate();
        return true;
    }

    /**
     * @throws Exception
     * @return InventoryTypeDescription
     */
    public function getDescription(): InventoryTypeDescription {
        if (InventoryType::validateDescription($this->description))  {
            return $this->description;
        }
        throw new Exception('never get to getDescription InventoryType::description');
    }

    /**
     * @return InventoryTypeDescription
     */
    public static function sampleDescription(): InventoryTypeDescription {
        return InventoryTypeDescription::sample(); /*32:description*/
    }

    /**
     * @param string $value
     * @throws Exception
     * @return ItemDeliveryIconId
     */
    public static function fromIconId(string $value): ItemDeliveryIconId {
        return ItemDeliveryIconId::from($value); /*enum*/
    }

    /**
     * @throws Exception
     * @return string
     */
    public function toIconId(): string {
        if (InventoryType::validateIconId($this->iconId))  {
            return ItemDeliveryIconId::to($this->iconId); /*enum*/
        }
        throw new Exception('never get to this InventoryType::iconId');
    }

    /**
     * @param ItemDeliveryIconId
     * @return bool
     * @throws Exception
     */
    public static function validateIconId(ItemDeliveryIconId $value): bool {
        ItemDeliveryIconId::to($value);
        return true;
    }

    /**
     * @throws Exception
     * @return ItemDeliveryIconId
     */
    public function getIconId(): ItemDeliveryIconId {
        if (InventoryType::validateIconId($this->iconId))  {
            return $this->iconId;
        }
        throw new Exception('never get to getIconId InventoryType::iconId');
    }

    /**
     * @return ItemDeliveryIconId
     */
    public static function sampleIconId(): ItemDeliveryIconId {
        return ItemDeliveryIconId::sample(); /*enum*/
    }

    /**
     * @param stdClass $value
     * @throws Exception
     * @return InventoryTypeTitle
     */
    public static function fromTitle(stdClass $value): InventoryTypeTitle {
        return InventoryTypeTitle::from($value); /*class*/
    }

    /**
     * @throws Exception
     * @return stdClass
     */
    public function toTitle(): stdClass {
        if (InventoryType::validateTitle($this->title))  {
            return $this->title->to(); /*class*/
        }
        throw new Exception('never get to this InventoryType::title');
    }

    /**
     * @param InventoryTypeTitle
     * @return bool
     * @throws Exception
     */
    public static function validateTitle(InventoryTypeTitle $value): bool {
        $value->validate();
        return true;
    }

    /**
     * @throws Exception
     * @return InventoryTypeTitle
     */
    public function getTitle(): InventoryTypeTitle {
        if (InventoryType::validateTitle($this->title))  {
            return $this->title;
        }
        throw new Exception('never get to getTitle InventoryType::title');
    }

    /**
     * @return InventoryTypeTitle
     */
    public static function sampleTitle(): InventoryTypeTitle {
        return InventoryTypeTitle::sample(); /*34:title*/
    }

    /**
     * @param stdClass $value
     * @throws Exception
     * @return InventoryTypeUnsetDescription
     */
    public static function fromUnsetDescription(stdClass $value): InventoryTypeUnsetDescription {
        return InventoryTypeUnsetDescription::from($value); /*class*/
    }

    /**
     * @throws Exception
     * @return stdClass
     */
    public function toUnsetDescription(): stdClass {
        if (InventoryType::validateUnsetDescription($this->unsetDescription))  {
            return $this->unsetDescription->to(); /*class*/
        }
        throw new Exception('never get to this InventoryType::unsetDescription');
    }

    /**
     * @param InventoryTypeUnsetDescription
     * @return bool
     * @throws Exception
     */
    public static function validateUnsetDescription(InventoryTypeUnsetDescription $value): bool {
        $value->validate();
        return true;
    }

    /**
     * @throws Exception
     * @return InventoryTypeUnsetDescription
     */
    public function getUnsetDescription(): InventoryTypeUnsetDescription {
        if (InventoryType::validateUnsetDescription($this->unsetDescription))  {
            return $this->unsetDescription;
        }
        throw new Exception('never get to getUnsetDescription InventoryType::unsetDescription');
    }

    /**
     * @return InventoryTypeUnsetDescription
     */
    public static function sampleUnsetDescription(): InventoryTypeUnsetDescription {
        return InventoryTypeUnsetDescription::sample(); /*35:unsetDescription*/
    }

    /**
     * @throws Exception
     * @return bool
     */
    public function validate(): bool {
        return InventoryType::validateAcceptedValueTypes($this->acceptedValueTypes)
        || InventoryType::validateDescription($this->description)
        || InventoryType::validateIconId($this->iconId)
        || InventoryType::validateTitle($this->title)
        || InventoryType::validateUnsetDescription($this->unsetDescription);
    }

    /**
     * @return stdClass
     * @throws Exception
     */
    public function to(): stdClass  {
        $out = new stdClass();
        $out->{'acceptedValueTypes'} = $this->toAcceptedValueTypes();
        $out->{'description'} = $this->toDescription();
        $out->{'iconID'} = $this->toIconId();
        $out->{'title'} = $this->toTitle();
        $out->{'unsetDescription'} = $this->toUnsetDescription();
        return $out;
    }

    /**
     * @param stdClass $obj
     * @return InventoryType
     * @throws Exception
     */
    public static function from(stdClass $obj): InventoryType {
        return new InventoryType(
         InventoryType::fromAcceptedValueTypes($obj->{'acceptedValueTypes'})
        ,InventoryType::fromDescription($obj->{'description'})
        ,InventoryType::fromIconId($obj->{'iconID'})
        ,InventoryType::fromTitle($obj->{'title'})
        ,InventoryType::fromUnsetDescription($obj->{'unsetDescription'})
        );
    }

    /**
     * @return InventoryType
     */
    public static function sample(): InventoryType {
        return new InventoryType(
         InventoryType::sampleAcceptedValueTypes()
        ,InventoryType::sampleDescription()
        ,InventoryType::sampleIconId()
        ,InventoryType::sampleTitle()
        ,InventoryType::sampleUnsetDescription()
        );
    }
}

// This is an autogenerated file:InventoryTypeDescription

class InventoryTypeDescription {
    private string $de; // json:de Required
    private string $en; // json:en Required
    private string $es; // json:es Required
    private string $fr; // json:fr Required
    private string $ja; // json:ja Required
    private string $ko; // json:ko Required
    private string $ru; // json:ru Required
    private string $zh; // json:zh Required

    /**
     * @param string $de
     * @param string $en
     * @param string $es
     * @param string $fr
     * @param string $ja
     * @param string $ko
     * @param string $ru
     * @param string $zh
     */
    public function __construct(string $de, string $en, string $es, string $fr, string $ja, string $ko, string $ru, string $zh) {
        $this->de = $de;
        $this->en = $en;
        $this->es = $es;
        $this->fr = $fr;
        $this->ja = $ja;
        $this->ko = $ko;
        $this->ru = $ru;
        $this->zh = $zh;
    }

    /**
     * @param string $value
     * @throws Exception
     * @return string
     */
    public static function fromDe(string $value): string {
        return $value; /*string*/
    }

    /**
     * @throws Exception
     * @return string
     */
    public function toDe(): string {
        if (InventoryTypeDescription::validateDe($this->de))  {
            return $this->de; /*string*/
        }
        throw new Exception('never get to this InventoryTypeDescription::de');
    }

    /**
     * @param string
     * @return bool
     * @throws Exception
     */
    public static function validateDe(string $value): bool {
        if (!is_string($value)) {
            throw new Exception("Attribute Error:InventoryTypeDescription::de");
        }
        return true;
    }

    /**
     * @throws Exception
     * @return string
     */
    public function getDe(): string {
        if (InventoryTypeDescription::validateDe($this->de))  {
            return $this->de;
        }
        throw new Exception('never get to getDe InventoryTypeDescription::de');
    }

    /**
     * @return string
     */
    public static function sampleDe(): string {
        return 'InventoryTypeDescription::de::31'; /*31:de*/
    }

    /**
     * @param string $value
     * @throws Exception
     * @return string
     */
    public static function fromEn(string $value): string {
        return $value; /*string*/
    }

    /**
     * @throws Exception
     * @return string
     */
    public function toEn(): string {
        if (InventoryTypeDescription::validateEn($this->en))  {
            return $this->en; /*string*/
        }
        throw new Exception('never get to this InventoryTypeDescription::en');
    }

    /**
     * @param string
     * @return bool
     * @throws Exception
     */
    public static function validateEn(string $value): bool {
        if (!is_string($value)) {
            throw new Exception("Attribute Error:InventoryTypeDescription::en");
        }
        return true;
    }

    /**
     * @throws Exception
     * @return string
     */
    public function getEn(): string {
        if (InventoryTypeDescription::validateEn($this->en))  {
            return $this->en;
        }
        throw new Exception('never get to getEn InventoryTypeDescription::en');
    }

    /**
     * @return string
     */
    public static function sampleEn(): string {
        return 'InventoryTypeDescription::en::32'; /*32:en*/
    }

    /**
     * @param string $value
     * @throws Exception
     * @return string
     */
    public static function fromEs(string $value): string {
        return $value; /*string*/
    }

    /**
     * @throws Exception
     * @return string
     */
    public function toEs(): string {
        if (InventoryTypeDescription::validateEs($this->es))  {
            return $this->es; /*string*/
        }
        throw new Exception('never get to this InventoryTypeDescription::es');
    }

    /**
     * @param string
     * @return bool
     * @throws Exception
     */
    public static function validateEs(string $value): bool {
        if (!is_string($value)) {
            throw new Exception("Attribute Error:InventoryTypeDescription::es");
        }
        return true;
    }

    /**
     * @throws Exception
     * @return string
     */
    public function getEs(): string {
        if (InventoryTypeDescription::validateEs($this->es))  {
            return $this->es;
        }
        throw new Exception('never get to getEs InventoryTypeDescription::es');
    }

    /**
     * @return string
     */
    public static function sampleEs(): string {
        return 'InventoryTypeDescription::es::33'; /*33:es*/
    }

    /**
     * @param string $value
     * @throws Exception
     * @return string
     */
    public static function fromFr(string $value): string {
        return $value; /*string*/
    }

    /**
     * @throws Exception
     * @return string
     */
    public function toFr(): string {
        if (InventoryTypeDescription::validateFr($this->fr))  {
            return $this->fr; /*string*/
        }
        throw new Exception('never get to this InventoryTypeDescription::fr');
    }

    /**
     * @param string
     * @return bool
     * @throws Exception
     */
    public static function validateFr(string $value): bool {
        if (!is_string($value)) {
            throw new Exception("Attribute Error:InventoryTypeDescription::fr");
        }
        return true;
    }

    /**
     * @throws Exception
     * @return string
     */
    public function getFr(): string {
        if (InventoryTypeDescription::validateFr($this->fr))  {
            return $this->fr;
        }
        throw new Exception('never get to getFr InventoryTypeDescription::fr');
    }

    /**
     * @return string
     */
    public static function sampleFr(): string {
        return 'InventoryTypeDescription::fr::34'; /*34:fr*/
    }

    /**
     * @param string $value
     * @throws Exception
     * @return string
     */
    public static function fromJa(string $value): string {
        return $value; /*string*/
    }

    /**
     * @throws Exception
     * @return string
     */
    public function toJa(): string {
        if (InventoryTypeDescription::validateJa($this->ja))  {
            return $this->ja; /*string*/
        }
        throw new Exception('never get to this InventoryTypeDescription::ja');
    }

    /**
     * @param string
     * @return bool
     * @throws Exception
     */
    public static function validateJa(string $value): bool {
        if (!is_string($value)) {
            throw new Exception("Attribute Error:InventoryTypeDescription::ja");
        }
        return true;
    }

    /**
     * @throws Exception
     * @return string
     */
    public function getJa(): string {
        if (InventoryTypeDescription::validateJa($this->ja))  {
            return $this->ja;
        }
        throw new Exception('never get to getJa InventoryTypeDescription::ja');
    }

    /**
     * @return string
     */
    public static function sampleJa(): string {
        return 'InventoryTypeDescription::ja::35'; /*35:ja*/
    }

    /**
     * @param string $value
     * @throws Exception
     * @return string
     */
    public static function fromKo(string $value): string {
        return $value; /*string*/
    }

    /**
     * @throws Exception
     * @return string
     */
    public function toKo(): string {
        if (InventoryTypeDescription::validateKo($this->ko))  {
            return $this->ko; /*string*/
        }
        throw new Exception('never get to this InventoryTypeDescription::ko');
    }

    /**
     * @param string
     * @return bool
     * @throws Exception
     */
    public static function validateKo(string $value): bool {
        if (!is_string($value)) {
            throw new Exception("Attribute Error:InventoryTypeDescription::ko");
        }
        return true;
    }

    /**
     * @throws Exception
     * @return string
     */
    public function getKo(): string {
        if (InventoryTypeDescription::validateKo($this->ko))  {
            return $this->ko;
        }
        throw new Exception('never get to getKo InventoryTypeDescription::ko');
    }

    /**
     * @return string
     */
    public static function sampleKo(): string {
        return 'InventoryTypeDescription::ko::36'; /*36:ko*/
    }

    /**
     * @param string $value
     * @throws Exception
     * @return string
     */
    public static function fromRu(string $value): string {
        return $value; /*string*/
    }

    /**
     * @throws Exception
     * @return string
     */
    public function toRu(): string {
        if (InventoryTypeDescription::validateRu($this->ru))  {
            return $this->ru; /*string*/
        }
        throw new Exception('never get to this InventoryTypeDescription::ru');
    }

    /**
     * @param string
     * @return bool
     * @throws Exception
     */
    public static function validateRu(string $value): bool {
        if (!is_string($value)) {
            throw new Exception("Attribute Error:InventoryTypeDescription::ru");
        }
        return true;
    }

    /**
     * @throws Exception
     * @return string
     */
    public function getRu(): string {
        if (InventoryTypeDescription::validateRu($this->ru))  {
            return $this->ru;
        }
        throw new Exception('never get to getRu InventoryTypeDescription::ru');
    }

    /**
     * @return string
     */
    public static function sampleRu(): string {
        return 'InventoryTypeDescription::ru::37'; /*37:ru*/
    }

    /**
     * @param string $value
     * @throws Exception
     * @return string
     */
    public static function fromZh(string $value): string {
        return $value; /*string*/
    }

    /**
     * @throws Exception
     * @return string
     */
    public function toZh(): string {
        if (InventoryTypeDescription::validateZh($this->zh))  {
            return $this->zh; /*string*/
        }
        throw new Exception('never get to this InventoryTypeDescription::zh');
    }

    /**
     * @param string
     * @return bool
     * @throws Exception
     */
    public static function validateZh(string $value): bool {
        if (!is_string($value)) {
            throw new Exception("Attribute Error:InventoryTypeDescription::zh");
        }
        return true;
    }

    /**
     * @throws Exception
     * @return string
     */
    public function getZh(): string {
        if (InventoryTypeDescription::validateZh($this->zh))  {
            return $this->zh;
        }
        throw new Exception('never get to getZh InventoryTypeDescription::zh');
    }

    /**
     * @return string
     */
    public static function sampleZh(): string {
        return 'InventoryTypeDescription::zh::38'; /*38:zh*/
    }

    /**
     * @throws Exception
     * @return bool
     */
    public function validate(): bool {
        return InventoryTypeDescription::validateDe($this->de)
        || InventoryTypeDescription::validateEn($this->en)
        || InventoryTypeDescription::validateEs($this->es)
        || InventoryTypeDescription::validateFr($this->fr)
        || InventoryTypeDescription::validateJa($this->ja)
        || InventoryTypeDescription::validateKo($this->ko)
        || InventoryTypeDescription::validateRu($this->ru)
        || InventoryTypeDescription::validateZh($this->zh);
    }

    /**
     * @return stdClass
     * @throws Exception
     */
    public function to(): stdClass  {
        $out = new stdClass();
        $out->{'de'} = $this->toDe();
        $out->{'en'} = $this->toEn();
        $out->{'es'} = $this->toEs();
        $out->{'fr'} = $this->toFr();
        $out->{'ja'} = $this->toJa();
        $out->{'ko'} = $this->toKo();
        $out->{'ru'} = $this->toRu();
        $out->{'zh'} = $this->toZh();
        return $out;
    }

    /**
     * @param stdClass $obj
     * @return InventoryTypeDescription
     * @throws Exception
     */
    public static function from(stdClass $obj): InventoryTypeDescription {
        return new InventoryTypeDescription(
         InventoryTypeDescription::fromDe($obj->{'de'})
        ,InventoryTypeDescription::fromEn($obj->{'en'})
        ,InventoryTypeDescription::fromEs($obj->{'es'})
        ,InventoryTypeDescription::fromFr($obj->{'fr'})
        ,InventoryTypeDescription::fromJa($obj->{'ja'})
        ,InventoryTypeDescription::fromKo($obj->{'ko'})
        ,InventoryTypeDescription::fromRu($obj->{'ru'})
        ,InventoryTypeDescription::fromZh($obj->{'zh'})
        );
    }

    /**
     * @return InventoryTypeDescription
     */
    public static function sample(): InventoryTypeDescription {
        return new InventoryTypeDescription(
         InventoryTypeDescription::sampleDe()
        ,InventoryTypeDescription::sampleEn()
        ,InventoryTypeDescription::sampleEs()
        ,InventoryTypeDescription::sampleFr()
        ,InventoryTypeDescription::sampleJa()
        ,InventoryTypeDescription::sampleKo()
        ,InventoryTypeDescription::sampleRu()
        ,InventoryTypeDescription::sampleZh()
        );
    }
}

// This is an autogenerated file:InventoryTypeTitle

class InventoryTypeTitle {
    private string $de; // json:de Required
    private string $en; // json:en Required
    private string $es; // json:es Required
    private string $fr; // json:fr Required
    private string $ja; // json:ja Required
    private string $ko; // json:ko Required
    private string $ru; // json:ru Required
    private string $zh; // json:zh Required

    /**
     * @param string $de
     * @param string $en
     * @param string $es
     * @param string $fr
     * @param string $ja
     * @param string $ko
     * @param string $ru
     * @param string $zh
     */
    public function __construct(string $de, string $en, string $es, string $fr, string $ja, string $ko, string $ru, string $zh) {
        $this->de = $de;
        $this->en = $en;
        $this->es = $es;
        $this->fr = $fr;
        $this->ja = $ja;
        $this->ko = $ko;
        $this->ru = $ru;
        $this->zh = $zh;
    }

    /**
     * @param string $value
     * @throws Exception
     * @return string
     */
    public static function fromDe(string $value): string {
        return $value; /*string*/
    }

    /**
     * @throws Exception
     * @return string
     */
    public function toDe(): string {
        if (InventoryTypeTitle::validateDe($this->de))  {
            return $this->de; /*string*/
        }
        throw new Exception('never get to this InventoryTypeTitle::de');
    }

    /**
     * @param string
     * @return bool
     * @throws Exception
     */
    public static function validateDe(string $value): bool {
        if (!is_string($value)) {
            throw new Exception("Attribute Error:InventoryTypeTitle::de");
        }
        return true;
    }

    /**
     * @throws Exception
     * @return string
     */
    public function getDe(): string {
        if (InventoryTypeTitle::validateDe($this->de))  {
            return $this->de;
        }
        throw new Exception('never get to getDe InventoryTypeTitle::de');
    }

    /**
     * @return string
     */
    public static function sampleDe(): string {
        return 'InventoryTypeTitle::de::31'; /*31:de*/
    }

    /**
     * @param string $value
     * @throws Exception
     * @return string
     */
    public static function fromEn(string $value): string {
        return $value; /*string*/
    }

    /**
     * @throws Exception
     * @return string
     */
    public function toEn(): string {
        if (InventoryTypeTitle::validateEn($this->en))  {
            return $this->en; /*string*/
        }
        throw new Exception('never get to this InventoryTypeTitle::en');
    }

    /**
     * @param string
     * @return bool
     * @throws Exception
     */
    public static function validateEn(string $value): bool {
        if (!is_string($value)) {
            throw new Exception("Attribute Error:InventoryTypeTitle::en");
        }
        return true;
    }

    /**
     * @throws Exception
     * @return string
     */
    public function getEn(): string {
        if (InventoryTypeTitle::validateEn($this->en))  {
            return $this->en;
        }
        throw new Exception('never get to getEn InventoryTypeTitle::en');
    }

    /**
     * @return string
     */
    public static function sampleEn(): string {
        return 'InventoryTypeTitle::en::32'; /*32:en*/
    }

    /**
     * @param string $value
     * @throws Exception
     * @return string
     */
    public static function fromEs(string $value): string {
        return $value; /*string*/
    }

    /**
     * @throws Exception
     * @return string
     */
    public function toEs(): string {
        if (InventoryTypeTitle::validateEs($this->es))  {
            return $this->es; /*string*/
        }
        throw new Exception('never get to this InventoryTypeTitle::es');
    }

    /**
     * @param string
     * @return bool
     * @throws Exception
     */
    public static function validateEs(string $value): bool {
        if (!is_string($value)) {
            throw new Exception("Attribute Error:InventoryTypeTitle::es");
        }
        return true;
    }

    /**
     * @throws Exception
     * @return string
     */
    public function getEs(): string {
        if (InventoryTypeTitle::validateEs($this->es))  {
            return $this->es;
        }
        throw new Exception('never get to getEs InventoryTypeTitle::es');
    }

    /**
     * @return string
     */
    public static function sampleEs(): string {
        return 'InventoryTypeTitle::es::33'; /*33:es*/
    }

    /**
     * @param string $value
     * @throws Exception
     * @return string
     */
    public static function fromFr(string $value): string {
        return $value; /*string*/
    }

    /**
     * @throws Exception
     * @return string
     */
    public function toFr(): string {
        if (InventoryTypeTitle::validateFr($this->fr))  {
            return $this->fr; /*string*/
        }
        throw new Exception('never get to this InventoryTypeTitle::fr');
    }

    /**
     * @param string
     * @return bool
     * @throws Exception
     */
    public static function validateFr(string $value): bool {
        if (!is_string($value)) {
            throw new Exception("Attribute Error:InventoryTypeTitle::fr");
        }
        return true;
    }

    /**
     * @throws Exception
     * @return string
     */
    public function getFr(): string {
        if (InventoryTypeTitle::validateFr($this->fr))  {
            return $this->fr;
        }
        throw new Exception('never get to getFr InventoryTypeTitle::fr');
    }

    /**
     * @return string
     */
    public static function sampleFr(): string {
        return 'InventoryTypeTitle::fr::34'; /*34:fr*/
    }

    /**
     * @param string $value
     * @throws Exception
     * @return string
     */
    public static function fromJa(string $value): string {
        return $value; /*string*/
    }

    /**
     * @throws Exception
     * @return string
     */
    public function toJa(): string {
        if (InventoryTypeTitle::validateJa($this->ja))  {
            return $this->ja; /*string*/
        }
        throw new Exception('never get to this InventoryTypeTitle::ja');
    }

    /**
     * @param string
     * @return bool
     * @throws Exception
     */
    public static function validateJa(string $value): bool {
        if (!is_string($value)) {
            throw new Exception("Attribute Error:InventoryTypeTitle::ja");
        }
        return true;
    }

    /**
     * @throws Exception
     * @return string
     */
    public function getJa(): string {
        if (InventoryTypeTitle::validateJa($this->ja))  {
            return $this->ja;
        }
        throw new Exception('never get to getJa InventoryTypeTitle::ja');
    }

    /**
     * @return string
     */
    public static function sampleJa(): string {
        return 'InventoryTypeTitle::ja::35'; /*35:ja*/
    }

    /**
     * @param string $value
     * @throws Exception
     * @return string
     */
    public static function fromKo(string $value): string {
        return $value; /*string*/
    }

    /**
     * @throws Exception
     * @return string
     */
    public function toKo(): string {
        if (InventoryTypeTitle::validateKo($this->ko))  {
            return $this->ko; /*string*/
        }
        throw new Exception('never get to this InventoryTypeTitle::ko');
    }

    /**
     * @param string
     * @return bool
     * @throws Exception
     */
    public static function validateKo(string $value): bool {
        if (!is_string($value)) {
            throw new Exception("Attribute Error:InventoryTypeTitle::ko");
        }
        return true;
    }

    /**
     * @throws Exception
     * @return string
     */
    public function getKo(): string {
        if (InventoryTypeTitle::validateKo($this->ko))  {
            return $this->ko;
        }
        throw new Exception('never get to getKo InventoryTypeTitle::ko');
    }

    /**
     * @return string
     */
    public static function sampleKo(): string {
        return 'InventoryTypeTitle::ko::36'; /*36:ko*/
    }

    /**
     * @param string $value
     * @throws Exception
     * @return string
     */
    public static function fromRu(string $value): string {
        return $value; /*string*/
    }

    /**
     * @throws Exception
     * @return string
     */
    public function toRu(): string {
        if (InventoryTypeTitle::validateRu($this->ru))  {
            return $this->ru; /*string*/
        }
        throw new Exception('never get to this InventoryTypeTitle::ru');
    }

    /**
     * @param string
     * @return bool
     * @throws Exception
     */
    public static function validateRu(string $value): bool {
        if (!is_string($value)) {
            throw new Exception("Attribute Error:InventoryTypeTitle::ru");
        }
        return true;
    }

    /**
     * @throws Exception
     * @return string
     */
    public function getRu(): string {
        if (InventoryTypeTitle::validateRu($this->ru))  {
            return $this->ru;
        }
        throw new Exception('never get to getRu InventoryTypeTitle::ru');
    }

    /**
     * @return string
     */
    public static function sampleRu(): string {
        return 'InventoryTypeTitle::ru::37'; /*37:ru*/
    }

    /**
     * @param string $value
     * @throws Exception
     * @return string
     */
    public static function fromZh(string $value): string {
        return $value; /*string*/
    }

    /**
     * @throws Exception
     * @return string
     */
    public function toZh(): string {
        if (InventoryTypeTitle::validateZh($this->zh))  {
            return $this->zh; /*string*/
        }
        throw new Exception('never get to this InventoryTypeTitle::zh');
    }

    /**
     * @param string
     * @return bool
     * @throws Exception
     */
    public static function validateZh(string $value): bool {
        if (!is_string($value)) {
            throw new Exception("Attribute Error:InventoryTypeTitle::zh");
        }
        return true;
    }

    /**
     * @throws Exception
     * @return string
     */
    public function getZh(): string {
        if (InventoryTypeTitle::validateZh($this->zh))  {
            return $this->zh;
        }
        throw new Exception('never get to getZh InventoryTypeTitle::zh');
    }

    /**
     * @return string
     */
    public static function sampleZh(): string {
        return 'InventoryTypeTitle::zh::38'; /*38:zh*/
    }

    /**
     * @throws Exception
     * @return bool
     */
    public function validate(): bool {
        return InventoryTypeTitle::validateDe($this->de)
        || InventoryTypeTitle::validateEn($this->en)
        || InventoryTypeTitle::validateEs($this->es)
        || InventoryTypeTitle::validateFr($this->fr)
        || InventoryTypeTitle::validateJa($this->ja)
        || InventoryTypeTitle::validateKo($this->ko)
        || InventoryTypeTitle::validateRu($this->ru)
        || InventoryTypeTitle::validateZh($this->zh);
    }

    /**
     * @return stdClass
     * @throws Exception
     */
    public function to(): stdClass  {
        $out = new stdClass();
        $out->{'de'} = $this->toDe();
        $out->{'en'} = $this->toEn();
        $out->{'es'} = $this->toEs();
        $out->{'fr'} = $this->toFr();
        $out->{'ja'} = $this->toJa();
        $out->{'ko'} = $this->toKo();
        $out->{'ru'} = $this->toRu();
        $out->{'zh'} = $this->toZh();
        return $out;
    }

    /**
     * @param stdClass $obj
     * @return InventoryTypeTitle
     * @throws Exception
     */
    public static function from(stdClass $obj): InventoryTypeTitle {
        return new InventoryTypeTitle(
         InventoryTypeTitle::fromDe($obj->{'de'})
        ,InventoryTypeTitle::fromEn($obj->{'en'})
        ,InventoryTypeTitle::fromEs($obj->{'es'})
        ,InventoryTypeTitle::fromFr($obj->{'fr'})
        ,InventoryTypeTitle::fromJa($obj->{'ja'})
        ,InventoryTypeTitle::fromKo($obj->{'ko'})
        ,InventoryTypeTitle::fromRu($obj->{'ru'})
        ,InventoryTypeTitle::fromZh($obj->{'zh'})
        );
    }

    /**
     * @return InventoryTypeTitle
     */
    public static function sample(): InventoryTypeTitle {
        return new InventoryTypeTitle(
         InventoryTypeTitle::sampleDe()
        ,InventoryTypeTitle::sampleEn()
        ,InventoryTypeTitle::sampleEs()
        ,InventoryTypeTitle::sampleFr()
        ,InventoryTypeTitle::sampleJa()
        ,InventoryTypeTitle::sampleKo()
        ,InventoryTypeTitle::sampleRu()
        ,InventoryTypeTitle::sampleZh()
        );
    }
}

// This is an autogenerated file:InventoryTypeUnsetDescription

class InventoryTypeUnsetDescription {
    private string $de; // json:de Required
    private string $en; // json:en Required
    private string $es; // json:es Required
    private string $fr; // json:fr Required
    private string $ja; // json:ja Required
    private string $ko; // json:ko Required
    private string $ru; // json:ru Required
    private string $zh; // json:zh Required

    /**
     * @param string $de
     * @param string $en
     * @param string $es
     * @param string $fr
     * @param string $ja
     * @param string $ko
     * @param string $ru
     * @param string $zh
     */
    public function __construct(string $de, string $en, string $es, string $fr, string $ja, string $ko, string $ru, string $zh) {
        $this->de = $de;
        $this->en = $en;
        $this->es = $es;
        $this->fr = $fr;
        $this->ja = $ja;
        $this->ko = $ko;
        $this->ru = $ru;
        $this->zh = $zh;
    }

    /**
     * @param string $value
     * @throws Exception
     * @return string
     */
    public static function fromDe(string $value): string {
        return $value; /*string*/
    }

    /**
     * @throws Exception
     * @return string
     */
    public function toDe(): string {
        if (InventoryTypeUnsetDescription::validateDe($this->de))  {
            return $this->de; /*string*/
        }
        throw new Exception('never get to this InventoryTypeUnsetDescription::de');
    }

    /**
     * @param string
     * @return bool
     * @throws Exception
     */
    public static function validateDe(string $value): bool {
        if (!is_string($value)) {
            throw new Exception("Attribute Error:InventoryTypeUnsetDescription::de");
        }
        return true;
    }

    /**
     * @throws Exception
     * @return string
     */
    public function getDe(): string {
        if (InventoryTypeUnsetDescription::validateDe($this->de))  {
            return $this->de;
        }
        throw new Exception('never get to getDe InventoryTypeUnsetDescription::de');
    }

    /**
     * @return string
     */
    public static function sampleDe(): string {
        return 'InventoryTypeUnsetDescription::de::31'; /*31:de*/
    }

    /**
     * @param string $value
     * @throws Exception
     * @return string
     */
    public static function fromEn(string $value): string {
        return $value; /*string*/
    }

    /**
     * @throws Exception
     * @return string
     */
    public function toEn(): string {
        if (InventoryTypeUnsetDescription::validateEn($this->en))  {
            return $this->en; /*string*/
        }
        throw new Exception('never get to this InventoryTypeUnsetDescription::en');
    }

    /**
     * @param string
     * @return bool
     * @throws Exception
     */
    public static function validateEn(string $value): bool {
        if (!is_string($value)) {
            throw new Exception("Attribute Error:InventoryTypeUnsetDescription::en");
        }
        return true;
    }

    /**
     * @throws Exception
     * @return string
     */
    public function getEn(): string {
        if (InventoryTypeUnsetDescription::validateEn($this->en))  {
            return $this->en;
        }
        throw new Exception('never get to getEn InventoryTypeUnsetDescription::en');
    }

    /**
     * @return string
     */
    public static function sampleEn(): string {
        return 'InventoryTypeUnsetDescription::en::32'; /*32:en*/
    }

    /**
     * @param string $value
     * @throws Exception
     * @return string
     */
    public static function fromEs(string $value): string {
        return $value; /*string*/
    }

    /**
     * @throws Exception
     * @return string
     */
    public function toEs(): string {
        if (InventoryTypeUnsetDescription::validateEs($this->es))  {
            return $this->es; /*string*/
        }
        throw new Exception('never get to this InventoryTypeUnsetDescription::es');
    }

    /**
     * @param string
     * @return bool
     * @throws Exception
     */
    public static function validateEs(string $value): bool {
        if (!is_string($value)) {
            throw new Exception("Attribute Error:InventoryTypeUnsetDescription::es");
        }
        return true;
    }

    /**
     * @throws Exception
     * @return string
     */
    public function getEs(): string {
        if (InventoryTypeUnsetDescription::validateEs($this->es))  {
            return $this->es;
        }
        throw new Exception('never get to getEs InventoryTypeUnsetDescription::es');
    }

    /**
     * @return string
     */
    public static function sampleEs(): string {
        return 'InventoryTypeUnsetDescription::es::33'; /*33:es*/
    }

    /**
     * @param string $value
     * @throws Exception
     * @return string
     */
    public static function fromFr(string $value): string {
        return $value; /*string*/
    }

    /**
     * @throws Exception
     * @return string
     */
    public function toFr(): string {
        if (InventoryTypeUnsetDescription::validateFr($this->fr))  {
            return $this->fr; /*string*/
        }
        throw new Exception('never get to this InventoryTypeUnsetDescription::fr');
    }

    /**
     * @param string
     * @return bool
     * @throws Exception
     */
    public static function validateFr(string $value): bool {
        if (!is_string($value)) {
            throw new Exception("Attribute Error:InventoryTypeUnsetDescription::fr");
        }
        return true;
    }

    /**
     * @throws Exception
     * @return string
     */
    public function getFr(): string {
        if (InventoryTypeUnsetDescription::validateFr($this->fr))  {
            return $this->fr;
        }
        throw new Exception('never get to getFr InventoryTypeUnsetDescription::fr');
    }

    /**
     * @return string
     */
    public static function sampleFr(): string {
        return 'InventoryTypeUnsetDescription::fr::34'; /*34:fr*/
    }

    /**
     * @param string $value
     * @throws Exception
     * @return string
     */
    public static function fromJa(string $value): string {
        return $value; /*string*/
    }

    /**
     * @throws Exception
     * @return string
     */
    public function toJa(): string {
        if (InventoryTypeUnsetDescription::validateJa($this->ja))  {
            return $this->ja; /*string*/
        }
        throw new Exception('never get to this InventoryTypeUnsetDescription::ja');
    }

    /**
     * @param string
     * @return bool
     * @throws Exception
     */
    public static function validateJa(string $value): bool {
        if (!is_string($value)) {
            throw new Exception("Attribute Error:InventoryTypeUnsetDescription::ja");
        }
        return true;
    }

    /**
     * @throws Exception
     * @return string
     */
    public function getJa(): string {
        if (InventoryTypeUnsetDescription::validateJa($this->ja))  {
            return $this->ja;
        }
        throw new Exception('never get to getJa InventoryTypeUnsetDescription::ja');
    }

    /**
     * @return string
     */
    public static function sampleJa(): string {
        return 'InventoryTypeUnsetDescription::ja::35'; /*35:ja*/
    }

    /**
     * @param string $value
     * @throws Exception
     * @return string
     */
    public static function fromKo(string $value): string {
        return $value; /*string*/
    }

    /**
     * @throws Exception
     * @return string
     */
    public function toKo(): string {
        if (InventoryTypeUnsetDescription::validateKo($this->ko))  {
            return $this->ko; /*string*/
        }
        throw new Exception('never get to this InventoryTypeUnsetDescription::ko');
    }

    /**
     * @param string
     * @return bool
     * @throws Exception
     */
    public static function validateKo(string $value): bool {
        if (!is_string($value)) {
            throw new Exception("Attribute Error:InventoryTypeUnsetDescription::ko");
        }
        return true;
    }

    /**
     * @throws Exception
     * @return string
     */
    public function getKo(): string {
        if (InventoryTypeUnsetDescription::validateKo($this->ko))  {
            return $this->ko;
        }
        throw new Exception('never get to getKo InventoryTypeUnsetDescription::ko');
    }

    /**
     * @return string
     */
    public static function sampleKo(): string {
        return 'InventoryTypeUnsetDescription::ko::36'; /*36:ko*/
    }

    /**
     * @param string $value
     * @throws Exception
     * @return string
     */
    public static function fromRu(string $value): string {
        return $value; /*string*/
    }

    /**
     * @throws Exception
     * @return string
     */
    public function toRu(): string {
        if (InventoryTypeUnsetDescription::validateRu($this->ru))  {
            return $this->ru; /*string*/
        }
        throw new Exception('never get to this InventoryTypeUnsetDescription::ru');
    }

    /**
     * @param string
     * @return bool
     * @throws Exception
     */
    public static function validateRu(string $value): bool {
        if (!is_string($value)) {
            throw new Exception("Attribute Error:InventoryTypeUnsetDescription::ru");
        }
        return true;
    }

    /**
     * @throws Exception
     * @return string
     */
    public function getRu(): string {
        if (InventoryTypeUnsetDescription::validateRu($this->ru))  {
            return $this->ru;
        }
        throw new Exception('never get to getRu InventoryTypeUnsetDescription::ru');
    }

    /**
     * @return string
     */
    public static function sampleRu(): string {
        return 'InventoryTypeUnsetDescription::ru::37'; /*37:ru*/
    }

    /**
     * @param string $value
     * @throws Exception
     * @return string
     */
    public static function fromZh(string $value): string {
        return $value; /*string*/
    }

    /**
     * @throws Exception
     * @return string
     */
    public function toZh(): string {
        if (InventoryTypeUnsetDescription::validateZh($this->zh))  {
            return $this->zh; /*string*/
        }
        throw new Exception('never get to this InventoryTypeUnsetDescription::zh');
    }

    /**
     * @param string
     * @return bool
     * @throws Exception
     */
    public static function validateZh(string $value): bool {
        if (!is_string($value)) {
            throw new Exception("Attribute Error:InventoryTypeUnsetDescription::zh");
        }
        return true;
    }

    /**
     * @throws Exception
     * @return string
     */
    public function getZh(): string {
        if (InventoryTypeUnsetDescription::validateZh($this->zh))  {
            return $this->zh;
        }
        throw new Exception('never get to getZh InventoryTypeUnsetDescription::zh');
    }

    /**
     * @return string
     */
    public static function sampleZh(): string {
        return 'InventoryTypeUnsetDescription::zh::38'; /*38:zh*/
    }

    /**
     * @throws Exception
     * @return bool
     */
    public function validate(): bool {
        return InventoryTypeUnsetDescription::validateDe($this->de)
        || InventoryTypeUnsetDescription::validateEn($this->en)
        || InventoryTypeUnsetDescription::validateEs($this->es)
        || InventoryTypeUnsetDescription::validateFr($this->fr)
        || InventoryTypeUnsetDescription::validateJa($this->ja)
        || InventoryTypeUnsetDescription::validateKo($this->ko)
        || InventoryTypeUnsetDescription::validateRu($this->ru)
        || InventoryTypeUnsetDescription::validateZh($this->zh);
    }

    /**
     * @return stdClass
     * @throws Exception
     */
    public function to(): stdClass  {
        $out = new stdClass();
        $out->{'de'} = $this->toDe();
        $out->{'en'} = $this->toEn();
        $out->{'es'} = $this->toEs();
        $out->{'fr'} = $this->toFr();
        $out->{'ja'} = $this->toJa();
        $out->{'ko'} = $this->toKo();
        $out->{'ru'} = $this->toRu();
        $out->{'zh'} = $this->toZh();
        return $out;
    }

    /**
     * @param stdClass $obj
     * @return InventoryTypeUnsetDescription
     * @throws Exception
     */
    public static function from(stdClass $obj): InventoryTypeUnsetDescription {
        return new InventoryTypeUnsetDescription(
         InventoryTypeUnsetDescription::fromDe($obj->{'de'})
        ,InventoryTypeUnsetDescription::fromEn($obj->{'en'})
        ,InventoryTypeUnsetDescription::fromEs($obj->{'es'})
        ,InventoryTypeUnsetDescription::fromFr($obj->{'fr'})
        ,InventoryTypeUnsetDescription::fromJa($obj->{'ja'})
        ,InventoryTypeUnsetDescription::fromKo($obj->{'ko'})
        ,InventoryTypeUnsetDescription::fromRu($obj->{'ru'})
        ,InventoryTypeUnsetDescription::fromZh($obj->{'zh'})
        );
    }

    /**
     * @return InventoryTypeUnsetDescription
     */
    public static function sample(): InventoryTypeUnsetDescription {
        return new InventoryTypeUnsetDescription(
         InventoryTypeUnsetDescription::sampleDe()
        ,InventoryTypeUnsetDescription::sampleEn()
        ,InventoryTypeUnsetDescription::sampleEs()
        ,InventoryTypeUnsetDescription::sampleFr()
        ,InventoryTypeUnsetDescription::sampleJa()
        ,InventoryTypeUnsetDescription::sampleKo()
        ,InventoryTypeUnsetDescription::sampleRu()
        ,InventoryTypeUnsetDescription::sampleZh()
        );
    }
}

// This is an autogenerated file:ItemDeliveryTitle

class ItemDeliveryTitle {
    private string $de; // json:de Required
    private string $en; // json:en Required
    private string $es; // json:es Required
    private string $fr; // json:fr Required
    private string $ja; // json:ja Required
    private string $ko; // json:ko Required
    private string $ru; // json:ru Required
    private string $zh; // json:zh Required

    /**
     * @param string $de
     * @param string $en
     * @param string $es
     * @param string $fr
     * @param string $ja
     * @param string $ko
     * @param string $ru
     * @param string $zh
     */
    public function __construct(string $de, string $en, string $es, string $fr, string $ja, string $ko, string $ru, string $zh) {
        $this->de = $de;
        $this->en = $en;
        $this->es = $es;
        $this->fr = $fr;
        $this->ja = $ja;
        $this->ko = $ko;
        $this->ru = $ru;
        $this->zh = $zh;
    }

    /**
     * @param string $value
     * @throws Exception
     * @return string
     */
    public static function fromDe(string $value): string {
        return $value; /*string*/
    }

    /**
     * @throws Exception
     * @return string
     */
    public function toDe(): string {
        if (ItemDeliveryTitle::validateDe($this->de))  {
            return $this->de; /*string*/
        }
        throw new Exception('never get to this ItemDeliveryTitle::de');
    }

    /**
     * @param string
     * @return bool
     * @throws Exception
     */
    public static function validateDe(string $value): bool {
        if (!is_string($value)) {
            throw new Exception("Attribute Error:ItemDeliveryTitle::de");
        }
        return true;
    }

    /**
     * @throws Exception
     * @return string
     */
    public function getDe(): string {
        if (ItemDeliveryTitle::validateDe($this->de))  {
            return $this->de;
        }
        throw new Exception('never get to getDe ItemDeliveryTitle::de');
    }

    /**
     * @return string
     */
    public static function sampleDe(): string {
        return 'ItemDeliveryTitle::de::31'; /*31:de*/
    }

    /**
     * @param string $value
     * @throws Exception
     * @return string
     */
    public static function fromEn(string $value): string {
        return $value; /*string*/
    }

    /**
     * @throws Exception
     * @return string
     */
    public function toEn(): string {
        if (ItemDeliveryTitle::validateEn($this->en))  {
            return $this->en; /*string*/
        }
        throw new Exception('never get to this ItemDeliveryTitle::en');
    }

    /**
     * @param string
     * @return bool
     * @throws Exception
     */
    public static function validateEn(string $value): bool {
        if (!is_string($value)) {
            throw new Exception("Attribute Error:ItemDeliveryTitle::en");
        }
        return true;
    }

    /**
     * @throws Exception
     * @return string
     */
    public function getEn(): string {
        if (ItemDeliveryTitle::validateEn($this->en))  {
            return $this->en;
        }
        throw new Exception('never get to getEn ItemDeliveryTitle::en');
    }

    /**
     * @return string
     */
    public static function sampleEn(): string {
        return 'ItemDeliveryTitle::en::32'; /*32:en*/
    }

    /**
     * @param string $value
     * @throws Exception
     * @return string
     */
    public static function fromEs(string $value): string {
        return $value; /*string*/
    }

    /**
     * @throws Exception
     * @return string
     */
    public function toEs(): string {
        if (ItemDeliveryTitle::validateEs($this->es))  {
            return $this->es; /*string*/
        }
        throw new Exception('never get to this ItemDeliveryTitle::es');
    }

    /**
     * @param string
     * @return bool
     * @throws Exception
     */
    public static function validateEs(string $value): bool {
        if (!is_string($value)) {
            throw new Exception("Attribute Error:ItemDeliveryTitle::es");
        }
        return true;
    }

    /**
     * @throws Exception
     * @return string
     */
    public function getEs(): string {
        if (ItemDeliveryTitle::validateEs($this->es))  {
            return $this->es;
        }
        throw new Exception('never get to getEs ItemDeliveryTitle::es');
    }

    /**
     * @return string
     */
    public static function sampleEs(): string {
        return 'ItemDeliveryTitle::es::33'; /*33:es*/
    }

    /**
     * @param string $value
     * @throws Exception
     * @return string
     */
    public static function fromFr(string $value): string {
        return $value; /*string*/
    }

    /**
     * @throws Exception
     * @return string
     */
    public function toFr(): string {
        if (ItemDeliveryTitle::validateFr($this->fr))  {
            return $this->fr; /*string*/
        }
        throw new Exception('never get to this ItemDeliveryTitle::fr');
    }

    /**
     * @param string
     * @return bool
     * @throws Exception
     */
    public static function validateFr(string $value): bool {
        if (!is_string($value)) {
            throw new Exception("Attribute Error:ItemDeliveryTitle::fr");
        }
        return true;
    }

    /**
     * @throws Exception
     * @return string
     */
    public function getFr(): string {
        if (ItemDeliveryTitle::validateFr($this->fr))  {
            return $this->fr;
        }
        throw new Exception('never get to getFr ItemDeliveryTitle::fr');
    }

    /**
     * @return string
     */
    public static function sampleFr(): string {
        return 'ItemDeliveryTitle::fr::34'; /*34:fr*/
    }

    /**
     * @param string $value
     * @throws Exception
     * @return string
     */
    public static function fromJa(string $value): string {
        return $value; /*string*/
    }

    /**
     * @throws Exception
     * @return string
     */
    public function toJa(): string {
        if (ItemDeliveryTitle::validateJa($this->ja))  {
            return $this->ja; /*string*/
        }
        throw new Exception('never get to this ItemDeliveryTitle::ja');
    }

    /**
     * @param string
     * @return bool
     * @throws Exception
     */
    public static function validateJa(string $value): bool {
        if (!is_string($value)) {
            throw new Exception("Attribute Error:ItemDeliveryTitle::ja");
        }
        return true;
    }

    /**
     * @throws Exception
     * @return string
     */
    public function getJa(): string {
        if (ItemDeliveryTitle::validateJa($this->ja))  {
            return $this->ja;
        }
        throw new Exception('never get to getJa ItemDeliveryTitle::ja');
    }

    /**
     * @return string
     */
    public static function sampleJa(): string {
        return 'ItemDeliveryTitle::ja::35'; /*35:ja*/
    }

    /**
     * @param string $value
     * @throws Exception
     * @return string
     */
    public static function fromKo(string $value): string {
        return $value; /*string*/
    }

    /**
     * @throws Exception
     * @return string
     */
    public function toKo(): string {
        if (ItemDeliveryTitle::validateKo($this->ko))  {
            return $this->ko; /*string*/
        }
        throw new Exception('never get to this ItemDeliveryTitle::ko');
    }

    /**
     * @param string
     * @return bool
     * @throws Exception
     */
    public static function validateKo(string $value): bool {
        if (!is_string($value)) {
            throw new Exception("Attribute Error:ItemDeliveryTitle::ko");
        }
        return true;
    }

    /**
     * @throws Exception
     * @return string
     */
    public function getKo(): string {
        if (ItemDeliveryTitle::validateKo($this->ko))  {
            return $this->ko;
        }
        throw new Exception('never get to getKo ItemDeliveryTitle::ko');
    }

    /**
     * @return string
     */
    public static function sampleKo(): string {
        return 'ItemDeliveryTitle::ko::36'; /*36:ko*/
    }

    /**
     * @param string $value
     * @throws Exception
     * @return string
     */
    public static function fromRu(string $value): string {
        return $value; /*string*/
    }

    /**
     * @throws Exception
     * @return string
     */
    public function toRu(): string {
        if (ItemDeliveryTitle::validateRu($this->ru))  {
            return $this->ru; /*string*/
        }
        throw new Exception('never get to this ItemDeliveryTitle::ru');
    }

    /**
     * @param string
     * @return bool
     * @throws Exception
     */
    public static function validateRu(string $value): bool {
        if (!is_string($value)) {
            throw new Exception("Attribute Error:ItemDeliveryTitle::ru");
        }
        return true;
    }

    /**
     * @throws Exception
     * @return string
     */
    public function getRu(): string {
        if (ItemDeliveryTitle::validateRu($this->ru))  {
            return $this->ru;
        }
        throw new Exception('never get to getRu ItemDeliveryTitle::ru');
    }

    /**
     * @return string
     */
    public static function sampleRu(): string {
        return 'ItemDeliveryTitle::ru::37'; /*37:ru*/
    }

    /**
     * @param string $value
     * @throws Exception
     * @return string
     */
    public static function fromZh(string $value): string {
        return $value; /*string*/
    }

    /**
     * @throws Exception
     * @return string
     */
    public function toZh(): string {
        if (ItemDeliveryTitle::validateZh($this->zh))  {
            return $this->zh; /*string*/
        }
        throw new Exception('never get to this ItemDeliveryTitle::zh');
    }

    /**
     * @param string
     * @return bool
     * @throws Exception
     */
    public static function validateZh(string $value): bool {
        if (!is_string($value)) {
            throw new Exception("Attribute Error:ItemDeliveryTitle::zh");
        }
        return true;
    }

    /**
     * @throws Exception
     * @return string
     */
    public function getZh(): string {
        if (ItemDeliveryTitle::validateZh($this->zh))  {
            return $this->zh;
        }
        throw new Exception('never get to getZh ItemDeliveryTitle::zh');
    }

    /**
     * @return string
     */
    public static function sampleZh(): string {
        return 'ItemDeliveryTitle::zh::38'; /*38:zh*/
    }

    /**
     * @throws Exception
     * @return bool
     */
    public function validate(): bool {
        return ItemDeliveryTitle::validateDe($this->de)
        || ItemDeliveryTitle::validateEn($this->en)
        || ItemDeliveryTitle::validateEs($this->es)
        || ItemDeliveryTitle::validateFr($this->fr)
        || ItemDeliveryTitle::validateJa($this->ja)
        || ItemDeliveryTitle::validateKo($this->ko)
        || ItemDeliveryTitle::validateRu($this->ru)
        || ItemDeliveryTitle::validateZh($this->zh);
    }

    /**
     * @return stdClass
     * @throws Exception
     */
    public function to(): stdClass  {
        $out = new stdClass();
        $out->{'de'} = $this->toDe();
        $out->{'en'} = $this->toEn();
        $out->{'es'} = $this->toEs();
        $out->{'fr'} = $this->toFr();
        $out->{'ja'} = $this->toJa();
        $out->{'ko'} = $this->toKo();
        $out->{'ru'} = $this->toRu();
        $out->{'zh'} = $this->toZh();
        return $out;
    }

    /**
     * @param stdClass $obj
     * @return ItemDeliveryTitle
     * @throws Exception
     */
    public static function from(stdClass $obj): ItemDeliveryTitle {
        return new ItemDeliveryTitle(
         ItemDeliveryTitle::fromDe($obj->{'de'})
        ,ItemDeliveryTitle::fromEn($obj->{'en'})
        ,ItemDeliveryTitle::fromEs($obj->{'es'})
        ,ItemDeliveryTitle::fromFr($obj->{'fr'})
        ,ItemDeliveryTitle::fromJa($obj->{'ja'})
        ,ItemDeliveryTitle::fromKo($obj->{'ko'})
        ,ItemDeliveryTitle::fromRu($obj->{'ru'})
        ,ItemDeliveryTitle::fromZh($obj->{'zh'})
        );
    }

    /**
     * @return ItemDeliveryTitle
     */
    public static function sample(): ItemDeliveryTitle {
        return new ItemDeliveryTitle(
         ItemDeliveryTitle::sampleDe()
        ,ItemDeliveryTitle::sampleEn()
        ,ItemDeliveryTitle::sampleEs()
        ,ItemDeliveryTitle::sampleFr()
        ,ItemDeliveryTitle::sampleJa()
        ,ItemDeliveryTitle::sampleKo()
        ,ItemDeliveryTitle::sampleRu()
        ,ItemDeliveryTitle::sampleZh()
        );
    }
}

// This is an autogenerated file:Matcher

class Matcher {
    private array $acceptedValueTypes; // json:acceptedValueTypes Required
    private MatcherDescription $description; // json:description Required
    private string $iconId; // json:iconID Required
    private int $maxEntries; // json:maxEntries Required
    private bool $optional; // json:optional Required
    private MatcherTitle $title; // json:title Required
    private string $type; // json:type Required
    private MatcherUnsetDescription $unsetDescription; // json:unsetDescription Required

    /**
     * @param array $acceptedValueTypes
     * @param MatcherDescription $description
     * @param string $iconId
     * @param int $maxEntries
     * @param bool $optional
     * @param MatcherTitle $title
     * @param string $type
     * @param MatcherUnsetDescription $unsetDescription
     */
    public function __construct(array $acceptedValueTypes, MatcherDescription $description, string $iconId, int $maxEntries, bool $optional, MatcherTitle $title, string $type, MatcherUnsetDescription $unsetDescription) {
        $this->acceptedValueTypes = $acceptedValueTypes;
        $this->description = $description;
        $this->iconId = $iconId;
        $this->maxEntries = $maxEntries;
        $this->optional = $optional;
        $this->title = $title;
        $this->type = $type;
        $this->unsetDescription = $unsetDescription;
    }

    /**
     * @param array $value
     * @throws Exception
     * @return array
     */
    public static function fromAcceptedValueTypes(array $value): array {
        return  array_map(function ($value) {
            return $value; /*string*/
        }, $value);
    }

    /**
     * @throws Exception
     * @return array
     */
    public function toAcceptedValueTypes(): array {
        if (Matcher::validateAcceptedValueTypes($this->acceptedValueTypes))  {
            return array_map(function ($value) {
                return $value; /*string*/
            }, $this->acceptedValueTypes);
        }
        throw new Exception('never get to this Matcher::acceptedValueTypes');
    }

    /**
     * @param array
     * @return bool
     * @throws Exception
     */
    public static function validateAcceptedValueTypes(array $value): bool {
        if (!is_array($value)) {
            throw new Exception("Attribute Error:Matcher::acceptedValueTypes");
        }
        array_walk($value, function($value_v) {
            if (!is_string($value_v)) {
                throw new Exception("Attribute Error:Matcher::acceptedValueTypes");
            }
        });
        return true;
    }

    /**
     * @throws Exception
     * @return array
     */
    public function getAcceptedValueTypes(): array {
        if (Matcher::validateAcceptedValueTypes($this->acceptedValueTypes))  {
            return $this->acceptedValueTypes;
        }
        throw new Exception('never get to getAcceptedValueTypes Matcher::acceptedValueTypes');
    }

    /**
     * @return array
     */
    public static function sampleAcceptedValueTypes(): array {
        return  array(
            'Matcher::::31' /*31:*/
        ); /* 31:acceptedValueTypes*/
    }

    /**
     * @param stdClass $value
     * @throws Exception
     * @return MatcherDescription
     */
    public static function fromDescription(stdClass $value): MatcherDescription {
        return MatcherDescription::from($value); /*class*/
    }

    /**
     * @throws Exception
     * @return stdClass
     */
    public function toDescription(): stdClass {
        if (Matcher::validateDescription($this->description))  {
            return $this->description->to(); /*class*/
        }
        throw new Exception('never get to this Matcher::description');
    }

    /**
     * @param MatcherDescription
     * @return bool
     * @throws Exception
     */
    public static function validateDescription(MatcherDescription $value): bool {
        $value->validate();
        return true;
    }

    /**
     * @throws Exception
     * @return MatcherDescription
     */
    public function getDescription(): MatcherDescription {
        if (Matcher::validateDescription($this->description))  {
            return $this->description;
        }
        throw new Exception('never get to getDescription Matcher::description');
    }

    /**
     * @return MatcherDescription
     */
    public static function sampleDescription(): MatcherDescription {
        return MatcherDescription::sample(); /*32:description*/
    }

    /**
     * @param string $value
     * @throws Exception
     * @return string
     */
    public static function fromIconId(string $value): string {
        return $value; /*string*/
    }

    /**
     * @throws Exception
     * @return string
     */
    public function toIconId(): string {
        if (Matcher::validateIconId($this->iconId))  {
            return $this->iconId; /*string*/
        }
        throw new Exception('never get to this Matcher::iconId');
    }

    /**
     * @param string
     * @return bool
     * @throws Exception
     */
    public static function validateIconId(string $value): bool {
        if (!is_string($value)) {
            throw new Exception("Attribute Error:Matcher::iconId");
        }
        return true;
    }

    /**
     * @throws Exception
     * @return string
     */
    public function getIconId(): string {
        if (Matcher::validateIconId($this->iconId))  {
            return $this->iconId;
        }
        throw new Exception('never get to getIconId Matcher::iconId');
    }

    /**
     * @return string
     */
    public static function sampleIconId(): string {
        return 'Matcher::iconId::33'; /*33:iconId*/
    }

    /**
     * @param int $value
     * @throws Exception
     * @return int
     */
    public static function fromMaxEntries(int $value): int {
        return $value; /*int*/
    }

    /**
     * @throws Exception
     * @return int
     */
    public function toMaxEntries(): int {
        if (Matcher::validateMaxEntries($this->maxEntries))  {
            return $this->maxEntries; /*int*/
        }
        throw new Exception('never get to this Matcher::maxEntries');
    }

    /**
     * @param int
     * @return bool
     * @throws Exception
     */
    public static function validateMaxEntries(int $value): bool {
        if (!is_integer($value)) {
            throw new Exception("Attribute Error:Matcher::maxEntries");
        }
        return true;
    }

    /**
     * @throws Exception
     * @return int
     */
    public function getMaxEntries(): int {
        if (Matcher::validateMaxEntries($this->maxEntries))  {
            return $this->maxEntries;
        }
        throw new Exception('never get to getMaxEntries Matcher::maxEntries');
    }

    /**
     * @return int
     */
    public static function sampleMaxEntries(): int {
        return 34; /*34:maxEntries*/
    }

    /**
     * @param bool $value
     * @throws Exception
     * @return bool
     */
    public static function fromOptional(bool $value): bool {
        return $value; /*bool*/
    }

    /**
     * @throws Exception
     * @return bool
     */
    public function toOptional(): bool {
        if (Matcher::validateOptional($this->optional))  {
            return $this->optional; /*bool*/
        }
        throw new Exception('never get to this Matcher::optional');
    }

    /**
     * @param bool
     * @return bool
     * @throws Exception
     */
    public static function validateOptional(bool $value): bool {
        if (!is_bool($value)) {
            throw new Exception("Attribute Error:Matcher::optional");
        }
        return true;
    }

    /**
     * @throws Exception
     * @return bool
     */
    public function getOptional(): bool {
        if (Matcher::validateOptional($this->optional))  {
            return $this->optional;
        }
        throw new Exception('never get to getOptional Matcher::optional');
    }

    /**
     * @return bool
     */
    public static function sampleOptional(): bool {
        return true; /*35:optional*/
    }

    /**
     * @param stdClass $value
     * @throws Exception
     * @return MatcherTitle
     */
    public static function fromTitle(stdClass $value): MatcherTitle {
        return MatcherTitle::from($value); /*class*/
    }

    /**
     * @throws Exception
     * @return stdClass
     */
    public function toTitle(): stdClass {
        if (Matcher::validateTitle($this->title))  {
            return $this->title->to(); /*class*/
        }
        throw new Exception('never get to this Matcher::title');
    }

    /**
     * @param MatcherTitle
     * @return bool
     * @throws Exception
     */
    public static function validateTitle(MatcherTitle $value): bool {
        $value->validate();
        return true;
    }

    /**
     * @throws Exception
     * @return MatcherTitle
     */
    public function getTitle(): MatcherTitle {
        if (Matcher::validateTitle($this->title))  {
            return $this->title;
        }
        throw new Exception('never get to getTitle Matcher::title');
    }

    /**
     * @return MatcherTitle
     */
    public static function sampleTitle(): MatcherTitle {
        return MatcherTitle::sample(); /*36:title*/
    }

    /**
     * @param string $value
     * @throws Exception
     * @return string
     */
    public static function fromType(string $value): string {
        return $value; /*string*/
    }

    /**
     * @throws Exception
     * @return string
     */
    public function toType(): string {
        if (Matcher::validateType($this->type))  {
            return $this->type; /*string*/
        }
        throw new Exception('never get to this Matcher::type');
    }

    /**
     * @param string
     * @return bool
     * @throws Exception
     */
    public static function validateType(string $value): bool {
        if (!is_string($value)) {
            throw new Exception("Attribute Error:Matcher::type");
        }
        return true;
    }

    /**
     * @throws Exception
     * @return string
     */
    public function getType(): string {
        if (Matcher::validateType($this->type))  {
            return $this->type;
        }
        throw new Exception('never get to getType Matcher::type');
    }

    /**
     * @return string
     */
    public static function sampleType(): string {
        return 'Matcher::type::37'; /*37:type*/
    }

    /**
     * @param stdClass $value
     * @throws Exception
     * @return MatcherUnsetDescription
     */
    public static function fromUnsetDescription(stdClass $value): MatcherUnsetDescription {
        return MatcherUnsetDescription::from($value); /*class*/
    }

    /**
     * @throws Exception
     * @return stdClass
     */
    public function toUnsetDescription(): stdClass {
        if (Matcher::validateUnsetDescription($this->unsetDescription))  {
            return $this->unsetDescription->to(); /*class*/
        }
        throw new Exception('never get to this Matcher::unsetDescription');
    }

    /**
     * @param MatcherUnsetDescription
     * @return bool
     * @throws Exception
     */
    public static function validateUnsetDescription(MatcherUnsetDescription $value): bool {
        $value->validate();
        return true;
    }

    /**
     * @throws Exception
     * @return MatcherUnsetDescription
     */
    public function getUnsetDescription(): MatcherUnsetDescription {
        if (Matcher::validateUnsetDescription($this->unsetDescription))  {
            return $this->unsetDescription;
        }
        throw new Exception('never get to getUnsetDescription Matcher::unsetDescription');
    }

    /**
     * @return MatcherUnsetDescription
     */
    public static function sampleUnsetDescription(): MatcherUnsetDescription {
        return MatcherUnsetDescription::sample(); /*38:unsetDescription*/
    }

    /**
     * @throws Exception
     * @return bool
     */
    public function validate(): bool {
        return Matcher::validateAcceptedValueTypes($this->acceptedValueTypes)
        || Matcher::validateDescription($this->description)
        || Matcher::validateIconId($this->iconId)
        || Matcher::validateMaxEntries($this->maxEntries)
        || Matcher::validateOptional($this->optional)
        || Matcher::validateTitle($this->title)
        || Matcher::validateType($this->type)
        || Matcher::validateUnsetDescription($this->unsetDescription);
    }

    /**
     * @return stdClass
     * @throws Exception
     */
    public function to(): stdClass  {
        $out = new stdClass();
        $out->{'acceptedValueTypes'} = $this->toAcceptedValueTypes();
        $out->{'description'} = $this->toDescription();
        $out->{'iconID'} = $this->toIconId();
        $out->{'maxEntries'} = $this->toMaxEntries();
        $out->{'optional'} = $this->toOptional();
        $out->{'title'} = $this->toTitle();
        $out->{'type'} = $this->toType();
        $out->{'unsetDescription'} = $this->toUnsetDescription();
        return $out;
    }

    /**
     * @param stdClass $obj
     * @return Matcher
     * @throws Exception
     */
    public static function from(stdClass $obj): Matcher {
        return new Matcher(
         Matcher::fromAcceptedValueTypes($obj->{'acceptedValueTypes'})
        ,Matcher::fromDescription($obj->{'description'})
        ,Matcher::fromIconId($obj->{'iconID'})
        ,Matcher::fromMaxEntries($obj->{'maxEntries'})
        ,Matcher::fromOptional($obj->{'optional'})
        ,Matcher::fromTitle($obj->{'title'})
        ,Matcher::fromType($obj->{'type'})
        ,Matcher::fromUnsetDescription($obj->{'unsetDescription'})
        );
    }

    /**
     * @return Matcher
     */
    public static function sample(): Matcher {
        return new Matcher(
         Matcher::sampleAcceptedValueTypes()
        ,Matcher::sampleDescription()
        ,Matcher::sampleIconId()
        ,Matcher::sampleMaxEntries()
        ,Matcher::sampleOptional()
        ,Matcher::sampleTitle()
        ,Matcher::sampleType()
        ,Matcher::sampleUnsetDescription()
        );
    }
}

// This is an autogenerated file:MatcherDescription

class MatcherDescription {
    private string $de; // json:de Required
    private string $en; // json:en Required
    private string $es; // json:es Required
    private string $fr; // json:fr Required
    private string $ja; // json:ja Required
    private string $ko; // json:ko Required
    private string $ru; // json:ru Required
    private string $zh; // json:zh Required

    /**
     * @param string $de
     * @param string $en
     * @param string $es
     * @param string $fr
     * @param string $ja
     * @param string $ko
     * @param string $ru
     * @param string $zh
     */
    public function __construct(string $de, string $en, string $es, string $fr, string $ja, string $ko, string $ru, string $zh) {
        $this->de = $de;
        $this->en = $en;
        $this->es = $es;
        $this->fr = $fr;
        $this->ja = $ja;
        $this->ko = $ko;
        $this->ru = $ru;
        $this->zh = $zh;
    }

    /**
     * @param string $value
     * @throws Exception
     * @return string
     */
    public static function fromDe(string $value): string {
        return $value; /*string*/
    }

    /**
     * @throws Exception
     * @return string
     */
    public function toDe(): string {
        if (MatcherDescription::validateDe($this->de))  {
            return $this->de; /*string*/
        }
        throw new Exception('never get to this MatcherDescription::de');
    }

    /**
     * @param string
     * @return bool
     * @throws Exception
     */
    public static function validateDe(string $value): bool {
        if (!is_string($value)) {
            throw new Exception("Attribute Error:MatcherDescription::de");
        }
        return true;
    }

    /**
     * @throws Exception
     * @return string
     */
    public function getDe(): string {
        if (MatcherDescription::validateDe($this->de))  {
            return $this->de;
        }
        throw new Exception('never get to getDe MatcherDescription::de');
    }

    /**
     * @return string
     */
    public static function sampleDe(): string {
        return 'MatcherDescription::de::31'; /*31:de*/
    }

    /**
     * @param string $value
     * @throws Exception
     * @return string
     */
    public static function fromEn(string $value): string {
        return $value; /*string*/
    }

    /**
     * @throws Exception
     * @return string
     */
    public function toEn(): string {
        if (MatcherDescription::validateEn($this->en))  {
            return $this->en; /*string*/
        }
        throw new Exception('never get to this MatcherDescription::en');
    }

    /**
     * @param string
     * @return bool
     * @throws Exception
     */
    public static function validateEn(string $value): bool {
        if (!is_string($value)) {
            throw new Exception("Attribute Error:MatcherDescription::en");
        }
        return true;
    }

    /**
     * @throws Exception
     * @return string
     */
    public function getEn(): string {
        if (MatcherDescription::validateEn($this->en))  {
            return $this->en;
        }
        throw new Exception('never get to getEn MatcherDescription::en');
    }

    /**
     * @return string
     */
    public static function sampleEn(): string {
        return 'MatcherDescription::en::32'; /*32:en*/
    }

    /**
     * @param string $value
     * @throws Exception
     * @return string
     */
    public static function fromEs(string $value): string {
        return $value; /*string*/
    }

    /**
     * @throws Exception
     * @return string
     */
    public function toEs(): string {
        if (MatcherDescription::validateEs($this->es))  {
            return $this->es; /*string*/
        }
        throw new Exception('never get to this MatcherDescription::es');
    }

    /**
     * @param string
     * @return bool
     * @throws Exception
     */
    public static function validateEs(string $value): bool {
        if (!is_string($value)) {
            throw new Exception("Attribute Error:MatcherDescription::es");
        }
        return true;
    }

    /**
     * @throws Exception
     * @return string
     */
    public function getEs(): string {
        if (MatcherDescription::validateEs($this->es))  {
            return $this->es;
        }
        throw new Exception('never get to getEs MatcherDescription::es');
    }

    /**
     * @return string
     */
    public static function sampleEs(): string {
        return 'MatcherDescription::es::33'; /*33:es*/
    }

    /**
     * @param string $value
     * @throws Exception
     * @return string
     */
    public static function fromFr(string $value): string {
        return $value; /*string*/
    }

    /**
     * @throws Exception
     * @return string
     */
    public function toFr(): string {
        if (MatcherDescription::validateFr($this->fr))  {
            return $this->fr; /*string*/
        }
        throw new Exception('never get to this MatcherDescription::fr');
    }

    /**
     * @param string
     * @return bool
     * @throws Exception
     */
    public static function validateFr(string $value): bool {
        if (!is_string($value)) {
            throw new Exception("Attribute Error:MatcherDescription::fr");
        }
        return true;
    }

    /**
     * @throws Exception
     * @return string
     */
    public function getFr(): string {
        if (MatcherDescription::validateFr($this->fr))  {
            return $this->fr;
        }
        throw new Exception('never get to getFr MatcherDescription::fr');
    }

    /**
     * @return string
     */
    public static function sampleFr(): string {
        return 'MatcherDescription::fr::34'; /*34:fr*/
    }

    /**
     * @param string $value
     * @throws Exception
     * @return string
     */
    public static function fromJa(string $value): string {
        return $value; /*string*/
    }

    /**
     * @throws Exception
     * @return string
     */
    public function toJa(): string {
        if (MatcherDescription::validateJa($this->ja))  {
            return $this->ja; /*string*/
        }
        throw new Exception('never get to this MatcherDescription::ja');
    }

    /**
     * @param string
     * @return bool
     * @throws Exception
     */
    public static function validateJa(string $value): bool {
        if (!is_string($value)) {
            throw new Exception("Attribute Error:MatcherDescription::ja");
        }
        return true;
    }

    /**
     * @throws Exception
     * @return string
     */
    public function getJa(): string {
        if (MatcherDescription::validateJa($this->ja))  {
            return $this->ja;
        }
        throw new Exception('never get to getJa MatcherDescription::ja');
    }

    /**
     * @return string
     */
    public static function sampleJa(): string {
        return 'MatcherDescription::ja::35'; /*35:ja*/
    }

    /**
     * @param string $value
     * @throws Exception
     * @return string
     */
    public static function fromKo(string $value): string {
        return $value; /*string*/
    }

    /**
     * @throws Exception
     * @return string
     */
    public function toKo(): string {
        if (MatcherDescription::validateKo($this->ko))  {
            return $this->ko; /*string*/
        }
        throw new Exception('never get to this MatcherDescription::ko');
    }

    /**
     * @param string
     * @return bool
     * @throws Exception
     */
    public static function validateKo(string $value): bool {
        if (!is_string($value)) {
            throw new Exception("Attribute Error:MatcherDescription::ko");
        }
        return true;
    }

    /**
     * @throws Exception
     * @return string
     */
    public function getKo(): string {
        if (MatcherDescription::validateKo($this->ko))  {
            return $this->ko;
        }
        throw new Exception('never get to getKo MatcherDescription::ko');
    }

    /**
     * @return string
     */
    public static function sampleKo(): string {
        return 'MatcherDescription::ko::36'; /*36:ko*/
    }

    /**
     * @param string $value
     * @throws Exception
     * @return string
     */
    public static function fromRu(string $value): string {
        return $value; /*string*/
    }

    /**
     * @throws Exception
     * @return string
     */
    public function toRu(): string {
        if (MatcherDescription::validateRu($this->ru))  {
            return $this->ru; /*string*/
        }
        throw new Exception('never get to this MatcherDescription::ru');
    }

    /**
     * @param string
     * @return bool
     * @throws Exception
     */
    public static function validateRu(string $value): bool {
        if (!is_string($value)) {
            throw new Exception("Attribute Error:MatcherDescription::ru");
        }
        return true;
    }

    /**
     * @throws Exception
     * @return string
     */
    public function getRu(): string {
        if (MatcherDescription::validateRu($this->ru))  {
            return $this->ru;
        }
        throw new Exception('never get to getRu MatcherDescription::ru');
    }

    /**
     * @return string
     */
    public static function sampleRu(): string {
        return 'MatcherDescription::ru::37'; /*37:ru*/
    }

    /**
     * @param string $value
     * @throws Exception
     * @return string
     */
    public static function fromZh(string $value): string {
        return $value; /*string*/
    }

    /**
     * @throws Exception
     * @return string
     */
    public function toZh(): string {
        if (MatcherDescription::validateZh($this->zh))  {
            return $this->zh; /*string*/
        }
        throw new Exception('never get to this MatcherDescription::zh');
    }

    /**
     * @param string
     * @return bool
     * @throws Exception
     */
    public static function validateZh(string $value): bool {
        if (!is_string($value)) {
            throw new Exception("Attribute Error:MatcherDescription::zh");
        }
        return true;
    }

    /**
     * @throws Exception
     * @return string
     */
    public function getZh(): string {
        if (MatcherDescription::validateZh($this->zh))  {
            return $this->zh;
        }
        throw new Exception('never get to getZh MatcherDescription::zh');
    }

    /**
     * @return string
     */
    public static function sampleZh(): string {
        return 'MatcherDescription::zh::38'; /*38:zh*/
    }

    /**
     * @throws Exception
     * @return bool
     */
    public function validate(): bool {
        return MatcherDescription::validateDe($this->de)
        || MatcherDescription::validateEn($this->en)
        || MatcherDescription::validateEs($this->es)
        || MatcherDescription::validateFr($this->fr)
        || MatcherDescription::validateJa($this->ja)
        || MatcherDescription::validateKo($this->ko)
        || MatcherDescription::validateRu($this->ru)
        || MatcherDescription::validateZh($this->zh);
    }

    /**
     * @return stdClass
     * @throws Exception
     */
    public function to(): stdClass  {
        $out = new stdClass();
        $out->{'de'} = $this->toDe();
        $out->{'en'} = $this->toEn();
        $out->{'es'} = $this->toEs();
        $out->{'fr'} = $this->toFr();
        $out->{'ja'} = $this->toJa();
        $out->{'ko'} = $this->toKo();
        $out->{'ru'} = $this->toRu();
        $out->{'zh'} = $this->toZh();
        return $out;
    }

    /**
     * @param stdClass $obj
     * @return MatcherDescription
     * @throws Exception
     */
    public static function from(stdClass $obj): MatcherDescription {
        return new MatcherDescription(
         MatcherDescription::fromDe($obj->{'de'})
        ,MatcherDescription::fromEn($obj->{'en'})
        ,MatcherDescription::fromEs($obj->{'es'})
        ,MatcherDescription::fromFr($obj->{'fr'})
        ,MatcherDescription::fromJa($obj->{'ja'})
        ,MatcherDescription::fromKo($obj->{'ko'})
        ,MatcherDescription::fromRu($obj->{'ru'})
        ,MatcherDescription::fromZh($obj->{'zh'})
        );
    }

    /**
     * @return MatcherDescription
     */
    public static function sample(): MatcherDescription {
        return new MatcherDescription(
         MatcherDescription::sampleDe()
        ,MatcherDescription::sampleEn()
        ,MatcherDescription::sampleEs()
        ,MatcherDescription::sampleFr()
        ,MatcherDescription::sampleJa()
        ,MatcherDescription::sampleKo()
        ,MatcherDescription::sampleRu()
        ,MatcherDescription::sampleZh()
        );
    }
}

// This is an autogenerated file:MatcherTitle

class MatcherTitle {
    private string $de; // json:de Required
    private string $en; // json:en Required
    private string $es; // json:es Required
    private string $fr; // json:fr Required
    private string $ja; // json:ja Required
    private string $ko; // json:ko Required
    private string $ru; // json:ru Required
    private string $zh; // json:zh Required

    /**
     * @param string $de
     * @param string $en
     * @param string $es
     * @param string $fr
     * @param string $ja
     * @param string $ko
     * @param string $ru
     * @param string $zh
     */
    public function __construct(string $de, string $en, string $es, string $fr, string $ja, string $ko, string $ru, string $zh) {
        $this->de = $de;
        $this->en = $en;
        $this->es = $es;
        $this->fr = $fr;
        $this->ja = $ja;
        $this->ko = $ko;
        $this->ru = $ru;
        $this->zh = $zh;
    }

    /**
     * @param string $value
     * @throws Exception
     * @return string
     */
    public static function fromDe(string $value): string {
        return $value; /*string*/
    }

    /**
     * @throws Exception
     * @return string
     */
    public function toDe(): string {
        if (MatcherTitle::validateDe($this->de))  {
            return $this->de; /*string*/
        }
        throw new Exception('never get to this MatcherTitle::de');
    }

    /**
     * @param string
     * @return bool
     * @throws Exception
     */
    public static function validateDe(string $value): bool {
        if (!is_string($value)) {
            throw new Exception("Attribute Error:MatcherTitle::de");
        }
        return true;
    }

    /**
     * @throws Exception
     * @return string
     */
    public function getDe(): string {
        if (MatcherTitle::validateDe($this->de))  {
            return $this->de;
        }
        throw new Exception('never get to getDe MatcherTitle::de');
    }

    /**
     * @return string
     */
    public static function sampleDe(): string {
        return 'MatcherTitle::de::31'; /*31:de*/
    }

    /**
     * @param string $value
     * @throws Exception
     * @return string
     */
    public static function fromEn(string $value): string {
        return $value; /*string*/
    }

    /**
     * @throws Exception
     * @return string
     */
    public function toEn(): string {
        if (MatcherTitle::validateEn($this->en))  {
            return $this->en; /*string*/
        }
        throw new Exception('never get to this MatcherTitle::en');
    }

    /**
     * @param string
     * @return bool
     * @throws Exception
     */
    public static function validateEn(string $value): bool {
        if (!is_string($value)) {
            throw new Exception("Attribute Error:MatcherTitle::en");
        }
        return true;
    }

    /**
     * @throws Exception
     * @return string
     */
    public function getEn(): string {
        if (MatcherTitle::validateEn($this->en))  {
            return $this->en;
        }
        throw new Exception('never get to getEn MatcherTitle::en');
    }

    /**
     * @return string
     */
    public static function sampleEn(): string {
        return 'MatcherTitle::en::32'; /*32:en*/
    }

    /**
     * @param string $value
     * @throws Exception
     * @return string
     */
    public static function fromEs(string $value): string {
        return $value; /*string*/
    }

    /**
     * @throws Exception
     * @return string
     */
    public function toEs(): string {
        if (MatcherTitle::validateEs($this->es))  {
            return $this->es; /*string*/
        }
        throw new Exception('never get to this MatcherTitle::es');
    }

    /**
     * @param string
     * @return bool
     * @throws Exception
     */
    public static function validateEs(string $value): bool {
        if (!is_string($value)) {
            throw new Exception("Attribute Error:MatcherTitle::es");
        }
        return true;
    }

    /**
     * @throws Exception
     * @return string
     */
    public function getEs(): string {
        if (MatcherTitle::validateEs($this->es))  {
            return $this->es;
        }
        throw new Exception('never get to getEs MatcherTitle::es');
    }

    /**
     * @return string
     */
    public static function sampleEs(): string {
        return 'MatcherTitle::es::33'; /*33:es*/
    }

    /**
     * @param string $value
     * @throws Exception
     * @return string
     */
    public static function fromFr(string $value): string {
        return $value; /*string*/
    }

    /**
     * @throws Exception
     * @return string
     */
    public function toFr(): string {
        if (MatcherTitle::validateFr($this->fr))  {
            return $this->fr; /*string*/
        }
        throw new Exception('never get to this MatcherTitle::fr');
    }

    /**
     * @param string
     * @return bool
     * @throws Exception
     */
    public static function validateFr(string $value): bool {
        if (!is_string($value)) {
            throw new Exception("Attribute Error:MatcherTitle::fr");
        }
        return true;
    }

    /**
     * @throws Exception
     * @return string
     */
    public function getFr(): string {
        if (MatcherTitle::validateFr($this->fr))  {
            return $this->fr;
        }
        throw new Exception('never get to getFr MatcherTitle::fr');
    }

    /**
     * @return string
     */
    public static function sampleFr(): string {
        return 'MatcherTitle::fr::34'; /*34:fr*/
    }

    /**
     * @param string $value
     * @throws Exception
     * @return string
     */
    public static function fromJa(string $value): string {
        return $value; /*string*/
    }

    /**
     * @throws Exception
     * @return string
     */
    public function toJa(): string {
        if (MatcherTitle::validateJa($this->ja))  {
            return $this->ja; /*string*/
        }
        throw new Exception('never get to this MatcherTitle::ja');
    }

    /**
     * @param string
     * @return bool
     * @throws Exception
     */
    public static function validateJa(string $value): bool {
        if (!is_string($value)) {
            throw new Exception("Attribute Error:MatcherTitle::ja");
        }
        return true;
    }

    /**
     * @throws Exception
     * @return string
     */
    public function getJa(): string {
        if (MatcherTitle::validateJa($this->ja))  {
            return $this->ja;
        }
        throw new Exception('never get to getJa MatcherTitle::ja');
    }

    /**
     * @return string
     */
    public static function sampleJa(): string {
        return 'MatcherTitle::ja::35'; /*35:ja*/
    }

    /**
     * @param string $value
     * @throws Exception
     * @return string
     */
    public static function fromKo(string $value): string {
        return $value; /*string*/
    }

    /**
     * @throws Exception
     * @return string
     */
    public function toKo(): string {
        if (MatcherTitle::validateKo($this->ko))  {
            return $this->ko; /*string*/
        }
        throw new Exception('never get to this MatcherTitle::ko');
    }

    /**
     * @param string
     * @return bool
     * @throws Exception
     */
    public static function validateKo(string $value): bool {
        if (!is_string($value)) {
            throw new Exception("Attribute Error:MatcherTitle::ko");
        }
        return true;
    }

    /**
     * @throws Exception
     * @return string
     */
    public function getKo(): string {
        if (MatcherTitle::validateKo($this->ko))  {
            return $this->ko;
        }
        throw new Exception('never get to getKo MatcherTitle::ko');
    }

    /**
     * @return string
     */
    public static function sampleKo(): string {
        return 'MatcherTitle::ko::36'; /*36:ko*/
    }

    /**
     * @param string $value
     * @throws Exception
     * @return string
     */
    public static function fromRu(string $value): string {
        return $value; /*string*/
    }

    /**
     * @throws Exception
     * @return string
     */
    public function toRu(): string {
        if (MatcherTitle::validateRu($this->ru))  {
            return $this->ru; /*string*/
        }
        throw new Exception('never get to this MatcherTitle::ru');
    }

    /**
     * @param string
     * @return bool
     * @throws Exception
     */
    public static function validateRu(string $value): bool {
        if (!is_string($value)) {
            throw new Exception("Attribute Error:MatcherTitle::ru");
        }
        return true;
    }

    /**
     * @throws Exception
     * @return string
     */
    public function getRu(): string {
        if (MatcherTitle::validateRu($this->ru))  {
            return $this->ru;
        }
        throw new Exception('never get to getRu MatcherTitle::ru');
    }

    /**
     * @return string
     */
    public static function sampleRu(): string {
        return 'MatcherTitle::ru::37'; /*37:ru*/
    }

    /**
     * @param string $value
     * @throws Exception
     * @return string
     */
    public static function fromZh(string $value): string {
        return $value; /*string*/
    }

    /**
     * @throws Exception
     * @return string
     */
    public function toZh(): string {
        if (MatcherTitle::validateZh($this->zh))  {
            return $this->zh; /*string*/
        }
        throw new Exception('never get to this MatcherTitle::zh');
    }

    /**
     * @param string
     * @return bool
     * @throws Exception
     */
    public static function validateZh(string $value): bool {
        if (!is_string($value)) {
            throw new Exception("Attribute Error:MatcherTitle::zh");
        }
        return true;
    }

    /**
     * @throws Exception
     * @return string
     */
    public function getZh(): string {
        if (MatcherTitle::validateZh($this->zh))  {
            return $this->zh;
        }
        throw new Exception('never get to getZh MatcherTitle::zh');
    }

    /**
     * @return string
     */
    public static function sampleZh(): string {
        return 'MatcherTitle::zh::38'; /*38:zh*/
    }

    /**
     * @throws Exception
     * @return bool
     */
    public function validate(): bool {
        return MatcherTitle::validateDe($this->de)
        || MatcherTitle::validateEn($this->en)
        || MatcherTitle::validateEs($this->es)
        || MatcherTitle::validateFr($this->fr)
        || MatcherTitle::validateJa($this->ja)
        || MatcherTitle::validateKo($this->ko)
        || MatcherTitle::validateRu($this->ru)
        || MatcherTitle::validateZh($this->zh);
    }

    /**
     * @return stdClass
     * @throws Exception
     */
    public function to(): stdClass  {
        $out = new stdClass();
        $out->{'de'} = $this->toDe();
        $out->{'en'} = $this->toEn();
        $out->{'es'} = $this->toEs();
        $out->{'fr'} = $this->toFr();
        $out->{'ja'} = $this->toJa();
        $out->{'ko'} = $this->toKo();
        $out->{'ru'} = $this->toRu();
        $out->{'zh'} = $this->toZh();
        return $out;
    }

    /**
     * @param stdClass $obj
     * @return MatcherTitle
     * @throws Exception
     */
    public static function from(stdClass $obj): MatcherTitle {
        return new MatcherTitle(
         MatcherTitle::fromDe($obj->{'de'})
        ,MatcherTitle::fromEn($obj->{'en'})
        ,MatcherTitle::fromEs($obj->{'es'})
        ,MatcherTitle::fromFr($obj->{'fr'})
        ,MatcherTitle::fromJa($obj->{'ja'})
        ,MatcherTitle::fromKo($obj->{'ko'})
        ,MatcherTitle::fromRu($obj->{'ru'})
        ,MatcherTitle::fromZh($obj->{'zh'})
        );
    }

    /**
     * @return MatcherTitle
     */
    public static function sample(): MatcherTitle {
        return new MatcherTitle(
         MatcherTitle::sampleDe()
        ,MatcherTitle::sampleEn()
        ,MatcherTitle::sampleEs()
        ,MatcherTitle::sampleFr()
        ,MatcherTitle::sampleJa()
        ,MatcherTitle::sampleKo()
        ,MatcherTitle::sampleRu()
        ,MatcherTitle::sampleZh()
        );
    }
}

// This is an autogenerated file:MatcherUnsetDescription

class MatcherUnsetDescription {
    private string $de; // json:de Required
    private string $en; // json:en Required
    private string $es; // json:es Required
    private string $fr; // json:fr Required
    private string $ja; // json:ja Required
    private string $ko; // json:ko Required
    private string $ru; // json:ru Required
    private string $zh; // json:zh Required

    /**
     * @param string $de
     * @param string $en
     * @param string $es
     * @param string $fr
     * @param string $ja
     * @param string $ko
     * @param string $ru
     * @param string $zh
     */
    public function __construct(string $de, string $en, string $es, string $fr, string $ja, string $ko, string $ru, string $zh) {
        $this->de = $de;
        $this->en = $en;
        $this->es = $es;
        $this->fr = $fr;
        $this->ja = $ja;
        $this->ko = $ko;
        $this->ru = $ru;
        $this->zh = $zh;
    }

    /**
     * @param string $value
     * @throws Exception
     * @return string
     */
    public static function fromDe(string $value): string {
        return $value; /*string*/
    }

    /**
     * @throws Exception
     * @return string
     */
    public function toDe(): string {
        if (MatcherUnsetDescription::validateDe($this->de))  {
            return $this->de; /*string*/
        }
        throw new Exception('never get to this MatcherUnsetDescription::de');
    }

    /**
     * @param string
     * @return bool
     * @throws Exception
     */
    public static function validateDe(string $value): bool {
        if (!is_string($value)) {
            throw new Exception("Attribute Error:MatcherUnsetDescription::de");
        }
        return true;
    }

    /**
     * @throws Exception
     * @return string
     */
    public function getDe(): string {
        if (MatcherUnsetDescription::validateDe($this->de))  {
            return $this->de;
        }
        throw new Exception('never get to getDe MatcherUnsetDescription::de');
    }

    /**
     * @return string
     */
    public static function sampleDe(): string {
        return 'MatcherUnsetDescription::de::31'; /*31:de*/
    }

    /**
     * @param string $value
     * @throws Exception
     * @return string
     */
    public static function fromEn(string $value): string {
        return $value; /*string*/
    }

    /**
     * @throws Exception
     * @return string
     */
    public function toEn(): string {
        if (MatcherUnsetDescription::validateEn($this->en))  {
            return $this->en; /*string*/
        }
        throw new Exception('never get to this MatcherUnsetDescription::en');
    }

    /**
     * @param string
     * @return bool
     * @throws Exception
     */
    public static function validateEn(string $value): bool {
        if (!is_string($value)) {
            throw new Exception("Attribute Error:MatcherUnsetDescription::en");
        }
        return true;
    }

    /**
     * @throws Exception
     * @return string
     */
    public function getEn(): string {
        if (MatcherUnsetDescription::validateEn($this->en))  {
            return $this->en;
        }
        throw new Exception('never get to getEn MatcherUnsetDescription::en');
    }

    /**
     * @return string
     */
    public static function sampleEn(): string {
        return 'MatcherUnsetDescription::en::32'; /*32:en*/
    }

    /**
     * @param string $value
     * @throws Exception
     * @return string
     */
    public static function fromEs(string $value): string {
        return $value; /*string*/
    }

    /**
     * @throws Exception
     * @return string
     */
    public function toEs(): string {
        if (MatcherUnsetDescription::validateEs($this->es))  {
            return $this->es; /*string*/
        }
        throw new Exception('never get to this MatcherUnsetDescription::es');
    }

    /**
     * @param string
     * @return bool
     * @throws Exception
     */
    public static function validateEs(string $value): bool {
        if (!is_string($value)) {
            throw new Exception("Attribute Error:MatcherUnsetDescription::es");
        }
        return true;
    }

    /**
     * @throws Exception
     * @return string
     */
    public function getEs(): string {
        if (MatcherUnsetDescription::validateEs($this->es))  {
            return $this->es;
        }
        throw new Exception('never get to getEs MatcherUnsetDescription::es');
    }

    /**
     * @return string
     */
    public static function sampleEs(): string {
        return 'MatcherUnsetDescription::es::33'; /*33:es*/
    }

    /**
     * @param string $value
     * @throws Exception
     * @return string
     */
    public static function fromFr(string $value): string {
        return $value; /*string*/
    }

    /**
     * @throws Exception
     * @return string
     */
    public function toFr(): string {
        if (MatcherUnsetDescription::validateFr($this->fr))  {
            return $this->fr; /*string*/
        }
        throw new Exception('never get to this MatcherUnsetDescription::fr');
    }

    /**
     * @param string
     * @return bool
     * @throws Exception
     */
    public static function validateFr(string $value): bool {
        if (!is_string($value)) {
            throw new Exception("Attribute Error:MatcherUnsetDescription::fr");
        }
        return true;
    }

    /**
     * @throws Exception
     * @return string
     */
    public function getFr(): string {
        if (MatcherUnsetDescription::validateFr($this->fr))  {
            return $this->fr;
        }
        throw new Exception('never get to getFr MatcherUnsetDescription::fr');
    }

    /**
     * @return string
     */
    public static function sampleFr(): string {
        return 'MatcherUnsetDescription::fr::34'; /*34:fr*/
    }

    /**
     * @param string $value
     * @throws Exception
     * @return string
     */
    public static function fromJa(string $value): string {
        return $value; /*string*/
    }

    /**
     * @throws Exception
     * @return string
     */
    public function toJa(): string {
        if (MatcherUnsetDescription::validateJa($this->ja))  {
            return $this->ja; /*string*/
        }
        throw new Exception('never get to this MatcherUnsetDescription::ja');
    }

    /**
     * @param string
     * @return bool
     * @throws Exception
     */
    public static function validateJa(string $value): bool {
        if (!is_string($value)) {
            throw new Exception("Attribute Error:MatcherUnsetDescription::ja");
        }
        return true;
    }

    /**
     * @throws Exception
     * @return string
     */
    public function getJa(): string {
        if (MatcherUnsetDescription::validateJa($this->ja))  {
            return $this->ja;
        }
        throw new Exception('never get to getJa MatcherUnsetDescription::ja');
    }

    /**
     * @return string
     */
    public static function sampleJa(): string {
        return 'MatcherUnsetDescription::ja::35'; /*35:ja*/
    }

    /**
     * @param string $value
     * @throws Exception
     * @return string
     */
    public static function fromKo(string $value): string {
        return $value; /*string*/
    }

    /**
     * @throws Exception
     * @return string
     */
    public function toKo(): string {
        if (MatcherUnsetDescription::validateKo($this->ko))  {
            return $this->ko; /*string*/
        }
        throw new Exception('never get to this MatcherUnsetDescription::ko');
    }

    /**
     * @param string
     * @return bool
     * @throws Exception
     */
    public static function validateKo(string $value): bool {
        if (!is_string($value)) {
            throw new Exception("Attribute Error:MatcherUnsetDescription::ko");
        }
        return true;
    }

    /**
     * @throws Exception
     * @return string
     */
    public function getKo(): string {
        if (MatcherUnsetDescription::validateKo($this->ko))  {
            return $this->ko;
        }
        throw new Exception('never get to getKo MatcherUnsetDescription::ko');
    }

    /**
     * @return string
     */
    public static function sampleKo(): string {
        return 'MatcherUnsetDescription::ko::36'; /*36:ko*/
    }

    /**
     * @param string $value
     * @throws Exception
     * @return string
     */
    public static function fromRu(string $value): string {
        return $value; /*string*/
    }

    /**
     * @throws Exception
     * @return string
     */
    public function toRu(): string {
        if (MatcherUnsetDescription::validateRu($this->ru))  {
            return $this->ru; /*string*/
        }
        throw new Exception('never get to this MatcherUnsetDescription::ru');
    }

    /**
     * @param string
     * @return bool
     * @throws Exception
     */
    public static function validateRu(string $value): bool {
        if (!is_string($value)) {
            throw new Exception("Attribute Error:MatcherUnsetDescription::ru");
        }
        return true;
    }

    /**
     * @throws Exception
     * @return string
     */
    public function getRu(): string {
        if (MatcherUnsetDescription::validateRu($this->ru))  {
            return $this->ru;
        }
        throw new Exception('never get to getRu MatcherUnsetDescription::ru');
    }

    /**
     * @return string
     */
    public static function sampleRu(): string {
        return 'MatcherUnsetDescription::ru::37'; /*37:ru*/
    }

    /**
     * @param string $value
     * @throws Exception
     * @return string
     */
    public static function fromZh(string $value): string {
        return $value; /*string*/
    }

    /**
     * @throws Exception
     * @return string
     */
    public function toZh(): string {
        if (MatcherUnsetDescription::validateZh($this->zh))  {
            return $this->zh; /*string*/
        }
        throw new Exception('never get to this MatcherUnsetDescription::zh');
    }

    /**
     * @param string
     * @return bool
     * @throws Exception
     */
    public static function validateZh(string $value): bool {
        if (!is_string($value)) {
            throw new Exception("Attribute Error:MatcherUnsetDescription::zh");
        }
        return true;
    }

    /**
     * @throws Exception
     * @return string
     */
    public function getZh(): string {
        if (MatcherUnsetDescription::validateZh($this->zh))  {
            return $this->zh;
        }
        throw new Exception('never get to getZh MatcherUnsetDescription::zh');
    }

    /**
     * @return string
     */
    public static function sampleZh(): string {
        return 'MatcherUnsetDescription::zh::38'; /*38:zh*/
    }

    /**
     * @throws Exception
     * @return bool
     */
    public function validate(): bool {
        return MatcherUnsetDescription::validateDe($this->de)
        || MatcherUnsetDescription::validateEn($this->en)
        || MatcherUnsetDescription::validateEs($this->es)
        || MatcherUnsetDescription::validateFr($this->fr)
        || MatcherUnsetDescription::validateJa($this->ja)
        || MatcherUnsetDescription::validateKo($this->ko)
        || MatcherUnsetDescription::validateRu($this->ru)
        || MatcherUnsetDescription::validateZh($this->zh);
    }

    /**
     * @return stdClass
     * @throws Exception
     */
    public function to(): stdClass  {
        $out = new stdClass();
        $out->{'de'} = $this->toDe();
        $out->{'en'} = $this->toEn();
        $out->{'es'} = $this->toEs();
        $out->{'fr'} = $this->toFr();
        $out->{'ja'} = $this->toJa();
        $out->{'ko'} = $this->toKo();
        $out->{'ru'} = $this->toRu();
        $out->{'zh'} = $this->toZh();
        return $out;
    }

    /**
     * @param stdClass $obj
     * @return MatcherUnsetDescription
     * @throws Exception
     */
    public static function from(stdClass $obj): MatcherUnsetDescription {
        return new MatcherUnsetDescription(
         MatcherUnsetDescription::fromDe($obj->{'de'})
        ,MatcherUnsetDescription::fromEn($obj->{'en'})
        ,MatcherUnsetDescription::fromEs($obj->{'es'})
        ,MatcherUnsetDescription::fromFr($obj->{'fr'})
        ,MatcherUnsetDescription::fromJa($obj->{'ja'})
        ,MatcherUnsetDescription::fromKo($obj->{'ko'})
        ,MatcherUnsetDescription::fromRu($obj->{'ru'})
        ,MatcherUnsetDescription::fromZh($obj->{'zh'})
        );
    }

    /**
     * @return MatcherUnsetDescription
     */
    public static function sample(): MatcherUnsetDescription {
        return new MatcherUnsetDescription(
         MatcherUnsetDescription::sampleDe()
        ,MatcherUnsetDescription::sampleEn()
        ,MatcherUnsetDescription::sampleEs()
        ,MatcherUnsetDescription::sampleFr()
        ,MatcherUnsetDescription::sampleJa()
        ,MatcherUnsetDescription::sampleKo()
        ,MatcherUnsetDescription::sampleRu()
        ,MatcherUnsetDescription::sampleZh()
        );
    }
}

// This is an autogenerated file:ProgressDescription

class ProgressDescription {
    private string $de; // json:de Required
    private string $en; // json:en Required
    private string $es; // json:es Required
    private string $fr; // json:fr Required
    private string $ja; // json:ja Required
    private string $ko; // json:ko Required
    private string $ru; // json:ru Required
    private string $zh; // json:zh Required

    /**
     * @param string $de
     * @param string $en
     * @param string $es
     * @param string $fr
     * @param string $ja
     * @param string $ko
     * @param string $ru
     * @param string $zh
     */
    public function __construct(string $de, string $en, string $es, string $fr, string $ja, string $ko, string $ru, string $zh) {
        $this->de = $de;
        $this->en = $en;
        $this->es = $es;
        $this->fr = $fr;
        $this->ja = $ja;
        $this->ko = $ko;
        $this->ru = $ru;
        $this->zh = $zh;
    }

    /**
     * @param string $value
     * @throws Exception
     * @return string
     */
    public static function fromDe(string $value): string {
        return $value; /*string*/
    }

    /**
     * @throws Exception
     * @return string
     */
    public function toDe(): string {
        if (ProgressDescription::validateDe($this->de))  {
            return $this->de; /*string*/
        }
        throw new Exception('never get to this ProgressDescription::de');
    }

    /**
     * @param string
     * @return bool
     * @throws Exception
     */
    public static function validateDe(string $value): bool {
        if (!is_string($value)) {
            throw new Exception("Attribute Error:ProgressDescription::de");
        }
        return true;
    }

    /**
     * @throws Exception
     * @return string
     */
    public function getDe(): string {
        if (ProgressDescription::validateDe($this->de))  {
            return $this->de;
        }
        throw new Exception('never get to getDe ProgressDescription::de');
    }

    /**
     * @return string
     */
    public static function sampleDe(): string {
        return 'ProgressDescription::de::31'; /*31:de*/
    }

    /**
     * @param string $value
     * @throws Exception
     * @return string
     */
    public static function fromEn(string $value): string {
        return $value; /*string*/
    }

    /**
     * @throws Exception
     * @return string
     */
    public function toEn(): string {
        if (ProgressDescription::validateEn($this->en))  {
            return $this->en; /*string*/
        }
        throw new Exception('never get to this ProgressDescription::en');
    }

    /**
     * @param string
     * @return bool
     * @throws Exception
     */
    public static function validateEn(string $value): bool {
        if (!is_string($value)) {
            throw new Exception("Attribute Error:ProgressDescription::en");
        }
        return true;
    }

    /**
     * @throws Exception
     * @return string
     */
    public function getEn(): string {
        if (ProgressDescription::validateEn($this->en))  {
            return $this->en;
        }
        throw new Exception('never get to getEn ProgressDescription::en');
    }

    /**
     * @return string
     */
    public static function sampleEn(): string {
        return 'ProgressDescription::en::32'; /*32:en*/
    }

    /**
     * @param string $value
     * @throws Exception
     * @return string
     */
    public static function fromEs(string $value): string {
        return $value; /*string*/
    }

    /**
     * @throws Exception
     * @return string
     */
    public function toEs(): string {
        if (ProgressDescription::validateEs($this->es))  {
            return $this->es; /*string*/
        }
        throw new Exception('never get to this ProgressDescription::es');
    }

    /**
     * @param string
     * @return bool
     * @throws Exception
     */
    public static function validateEs(string $value): bool {
        if (!is_string($value)) {
            throw new Exception("Attribute Error:ProgressDescription::es");
        }
        return true;
    }

    /**
     * @throws Exception
     * @return string
     */
    public function getEs(): string {
        if (ProgressDescription::validateEs($this->es))  {
            return $this->es;
        }
        throw new Exception('never get to getEs ProgressDescription::es');
    }

    /**
     * @return string
     */
    public static function sampleEs(): string {
        return 'ProgressDescription::es::33'; /*33:es*/
    }

    /**
     * @param string $value
     * @throws Exception
     * @return string
     */
    public static function fromFr(string $value): string {
        return $value; /*string*/
    }

    /**
     * @throws Exception
     * @return string
     */
    public function toFr(): string {
        if (ProgressDescription::validateFr($this->fr))  {
            return $this->fr; /*string*/
        }
        throw new Exception('never get to this ProgressDescription::fr');
    }

    /**
     * @param string
     * @return bool
     * @throws Exception
     */
    public static function validateFr(string $value): bool {
        if (!is_string($value)) {
            throw new Exception("Attribute Error:ProgressDescription::fr");
        }
        return true;
    }

    /**
     * @throws Exception
     * @return string
     */
    public function getFr(): string {
        if (ProgressDescription::validateFr($this->fr))  {
            return $this->fr;
        }
        throw new Exception('never get to getFr ProgressDescription::fr');
    }

    /**
     * @return string
     */
    public static function sampleFr(): string {
        return 'ProgressDescription::fr::34'; /*34:fr*/
    }

    /**
     * @param string $value
     * @throws Exception
     * @return string
     */
    public static function fromJa(string $value): string {
        return $value; /*string*/
    }

    /**
     * @throws Exception
     * @return string
     */
    public function toJa(): string {
        if (ProgressDescription::validateJa($this->ja))  {
            return $this->ja; /*string*/
        }
        throw new Exception('never get to this ProgressDescription::ja');
    }

    /**
     * @param string
     * @return bool
     * @throws Exception
     */
    public static function validateJa(string $value): bool {
        if (!is_string($value)) {
            throw new Exception("Attribute Error:ProgressDescription::ja");
        }
        return true;
    }

    /**
     * @throws Exception
     * @return string
     */
    public function getJa(): string {
        if (ProgressDescription::validateJa($this->ja))  {
            return $this->ja;
        }
        throw new Exception('never get to getJa ProgressDescription::ja');
    }

    /**
     * @return string
     */
    public static function sampleJa(): string {
        return 'ProgressDescription::ja::35'; /*35:ja*/
    }

    /**
     * @param string $value
     * @throws Exception
     * @return string
     */
    public static function fromKo(string $value): string {
        return $value; /*string*/
    }

    /**
     * @throws Exception
     * @return string
     */
    public function toKo(): string {
        if (ProgressDescription::validateKo($this->ko))  {
            return $this->ko; /*string*/
        }
        throw new Exception('never get to this ProgressDescription::ko');
    }

    /**
     * @param string
     * @return bool
     * @throws Exception
     */
    public static function validateKo(string $value): bool {
        if (!is_string($value)) {
            throw new Exception("Attribute Error:ProgressDescription::ko");
        }
        return true;
    }

    /**
     * @throws Exception
     * @return string
     */
    public function getKo(): string {
        if (ProgressDescription::validateKo($this->ko))  {
            return $this->ko;
        }
        throw new Exception('never get to getKo ProgressDescription::ko');
    }

    /**
     * @return string
     */
    public static function sampleKo(): string {
        return 'ProgressDescription::ko::36'; /*36:ko*/
    }

    /**
     * @param string $value
     * @throws Exception
     * @return string
     */
    public static function fromRu(string $value): string {
        return $value; /*string*/
    }

    /**
     * @throws Exception
     * @return string
     */
    public function toRu(): string {
        if (ProgressDescription::validateRu($this->ru))  {
            return $this->ru; /*string*/
        }
        throw new Exception('never get to this ProgressDescription::ru');
    }

    /**
     * @param string
     * @return bool
     * @throws Exception
     */
    public static function validateRu(string $value): bool {
        if (!is_string($value)) {
            throw new Exception("Attribute Error:ProgressDescription::ru");
        }
        return true;
    }

    /**
     * @throws Exception
     * @return string
     */
    public function getRu(): string {
        if (ProgressDescription::validateRu($this->ru))  {
            return $this->ru;
        }
        throw new Exception('never get to getRu ProgressDescription::ru');
    }

    /**
     * @return string
     */
    public static function sampleRu(): string {
        return 'ProgressDescription::ru::37'; /*37:ru*/
    }

    /**
     * @param string $value
     * @throws Exception
     * @return string
     */
    public static function fromZh(string $value): string {
        return $value; /*string*/
    }

    /**
     * @throws Exception
     * @return string
     */
    public function toZh(): string {
        if (ProgressDescription::validateZh($this->zh))  {
            return $this->zh; /*string*/
        }
        throw new Exception('never get to this ProgressDescription::zh');
    }

    /**
     * @param string
     * @return bool
     * @throws Exception
     */
    public static function validateZh(string $value): bool {
        if (!is_string($value)) {
            throw new Exception("Attribute Error:ProgressDescription::zh");
        }
        return true;
    }

    /**
     * @throws Exception
     * @return string
     */
    public function getZh(): string {
        if (ProgressDescription::validateZh($this->zh))  {
            return $this->zh;
        }
        throw new Exception('never get to getZh ProgressDescription::zh');
    }

    /**
     * @return string
     */
    public static function sampleZh(): string {
        return 'ProgressDescription::zh::38'; /*38:zh*/
    }

    /**
     * @throws Exception
     * @return bool
     */
    public function validate(): bool {
        return ProgressDescription::validateDe($this->de)
        || ProgressDescription::validateEn($this->en)
        || ProgressDescription::validateEs($this->es)
        || ProgressDescription::validateFr($this->fr)
        || ProgressDescription::validateJa($this->ja)
        || ProgressDescription::validateKo($this->ko)
        || ProgressDescription::validateRu($this->ru)
        || ProgressDescription::validateZh($this->zh);
    }

    /**
     * @return stdClass
     * @throws Exception
     */
    public function to(): stdClass  {
        $out = new stdClass();
        $out->{'de'} = $this->toDe();
        $out->{'en'} = $this->toEn();
        $out->{'es'} = $this->toEs();
        $out->{'fr'} = $this->toFr();
        $out->{'ja'} = $this->toJa();
        $out->{'ko'} = $this->toKo();
        $out->{'ru'} = $this->toRu();
        $out->{'zh'} = $this->toZh();
        return $out;
    }

    /**
     * @param stdClass $obj
     * @return ProgressDescription
     * @throws Exception
     */
    public static function from(stdClass $obj): ProgressDescription {
        return new ProgressDescription(
         ProgressDescription::fromDe($obj->{'de'})
        ,ProgressDescription::fromEn($obj->{'en'})
        ,ProgressDescription::fromEs($obj->{'es'})
        ,ProgressDescription::fromFr($obj->{'fr'})
        ,ProgressDescription::fromJa($obj->{'ja'})
        ,ProgressDescription::fromKo($obj->{'ko'})
        ,ProgressDescription::fromRu($obj->{'ru'})
        ,ProgressDescription::fromZh($obj->{'zh'})
        );
    }

    /**
     * @return ProgressDescription
     */
    public static function sample(): ProgressDescription {
        return new ProgressDescription(
         ProgressDescription::sampleDe()
        ,ProgressDescription::sampleEn()
        ,ProgressDescription::sampleEs()
        ,ProgressDescription::sampleFr()
        ,ProgressDescription::sampleJa()
        ,ProgressDescription::sampleKo()
        ,ProgressDescription::sampleRu()
        ,ProgressDescription::sampleZh()
        );
    }
}

// This is an autogenerated file:RewardDescription

class RewardDescription {
    private string $de; // json:de Required
    private string $en; // json:en Required
    private string $es; // json:es Required
    private string $fr; // json:fr Required
    private string $ja; // json:ja Required
    private string $ko; // json:ko Required
    private string $ru; // json:ru Required
    private string $zh; // json:zh Required

    /**
     * @param string $de
     * @param string $en
     * @param string $es
     * @param string $fr
     * @param string $ja
     * @param string $ko
     * @param string $ru
     * @param string $zh
     */
    public function __construct(string $de, string $en, string $es, string $fr, string $ja, string $ko, string $ru, string $zh) {
        $this->de = $de;
        $this->en = $en;
        $this->es = $es;
        $this->fr = $fr;
        $this->ja = $ja;
        $this->ko = $ko;
        $this->ru = $ru;
        $this->zh = $zh;
    }

    /**
     * @param string $value
     * @throws Exception
     * @return string
     */
    public static function fromDe(string $value): string {
        return $value; /*string*/
    }

    /**
     * @throws Exception
     * @return string
     */
    public function toDe(): string {
        if (RewardDescription::validateDe($this->de))  {
            return $this->de; /*string*/
        }
        throw new Exception('never get to this RewardDescription::de');
    }

    /**
     * @param string
     * @return bool
     * @throws Exception
     */
    public static function validateDe(string $value): bool {
        if (!is_string($value)) {
            throw new Exception("Attribute Error:RewardDescription::de");
        }
        return true;
    }

    /**
     * @throws Exception
     * @return string
     */
    public function getDe(): string {
        if (RewardDescription::validateDe($this->de))  {
            return $this->de;
        }
        throw new Exception('never get to getDe RewardDescription::de');
    }

    /**
     * @return string
     */
    public static function sampleDe(): string {
        return 'RewardDescription::de::31'; /*31:de*/
    }

    /**
     * @param string $value
     * @throws Exception
     * @return string
     */
    public static function fromEn(string $value): string {
        return $value; /*string*/
    }

    /**
     * @throws Exception
     * @return string
     */
    public function toEn(): string {
        if (RewardDescription::validateEn($this->en))  {
            return $this->en; /*string*/
        }
        throw new Exception('never get to this RewardDescription::en');
    }

    /**
     * @param string
     * @return bool
     * @throws Exception
     */
    public static function validateEn(string $value): bool {
        if (!is_string($value)) {
            throw new Exception("Attribute Error:RewardDescription::en");
        }
        return true;
    }

    /**
     * @throws Exception
     * @return string
     */
    public function getEn(): string {
        if (RewardDescription::validateEn($this->en))  {
            return $this->en;
        }
        throw new Exception('never get to getEn RewardDescription::en');
    }

    /**
     * @return string
     */
    public static function sampleEn(): string {
        return 'RewardDescription::en::32'; /*32:en*/
    }

    /**
     * @param string $value
     * @throws Exception
     * @return string
     */
    public static function fromEs(string $value): string {
        return $value; /*string*/
    }

    /**
     * @throws Exception
     * @return string
     */
    public function toEs(): string {
        if (RewardDescription::validateEs($this->es))  {
            return $this->es; /*string*/
        }
        throw new Exception('never get to this RewardDescription::es');
    }

    /**
     * @param string
     * @return bool
     * @throws Exception
     */
    public static function validateEs(string $value): bool {
        if (!is_string($value)) {
            throw new Exception("Attribute Error:RewardDescription::es");
        }
        return true;
    }

    /**
     * @throws Exception
     * @return string
     */
    public function getEs(): string {
        if (RewardDescription::validateEs($this->es))  {
            return $this->es;
        }
        throw new Exception('never get to getEs RewardDescription::es');
    }

    /**
     * @return string
     */
    public static function sampleEs(): string {
        return 'RewardDescription::es::33'; /*33:es*/
    }

    /**
     * @param string $value
     * @throws Exception
     * @return string
     */
    public static function fromFr(string $value): string {
        return $value; /*string*/
    }

    /**
     * @throws Exception
     * @return string
     */
    public function toFr(): string {
        if (RewardDescription::validateFr($this->fr))  {
            return $this->fr; /*string*/
        }
        throw new Exception('never get to this RewardDescription::fr');
    }

    /**
     * @param string
     * @return bool
     * @throws Exception
     */
    public static function validateFr(string $value): bool {
        if (!is_string($value)) {
            throw new Exception("Attribute Error:RewardDescription::fr");
        }
        return true;
    }

    /**
     * @throws Exception
     * @return string
     */
    public function getFr(): string {
        if (RewardDescription::validateFr($this->fr))  {
            return $this->fr;
        }
        throw new Exception('never get to getFr RewardDescription::fr');
    }

    /**
     * @return string
     */
    public static function sampleFr(): string {
        return 'RewardDescription::fr::34'; /*34:fr*/
    }

    /**
     * @param string $value
     * @throws Exception
     * @return string
     */
    public static function fromJa(string $value): string {
        return $value; /*string*/
    }

    /**
     * @throws Exception
     * @return string
     */
    public function toJa(): string {
        if (RewardDescription::validateJa($this->ja))  {
            return $this->ja; /*string*/
        }
        throw new Exception('never get to this RewardDescription::ja');
    }

    /**
     * @param string
     * @return bool
     * @throws Exception
     */
    public static function validateJa(string $value): bool {
        if (!is_string($value)) {
            throw new Exception("Attribute Error:RewardDescription::ja");
        }
        return true;
    }

    /**
     * @throws Exception
     * @return string
     */
    public function getJa(): string {
        if (RewardDescription::validateJa($this->ja))  {
            return $this->ja;
        }
        throw new Exception('never get to getJa RewardDescription::ja');
    }

    /**
     * @return string
     */
    public static function sampleJa(): string {
        return 'RewardDescription::ja::35'; /*35:ja*/
    }

    /**
     * @param string $value
     * @throws Exception
     * @return string
     */
    public static function fromKo(string $value): string {
        return $value; /*string*/
    }

    /**
     * @throws Exception
     * @return string
     */
    public function toKo(): string {
        if (RewardDescription::validateKo($this->ko))  {
            return $this->ko; /*string*/
        }
        throw new Exception('never get to this RewardDescription::ko');
    }

    /**
     * @param string
     * @return bool
     * @throws Exception
     */
    public static function validateKo(string $value): bool {
        if (!is_string($value)) {
            throw new Exception("Attribute Error:RewardDescription::ko");
        }
        return true;
    }

    /**
     * @throws Exception
     * @return string
     */
    public function getKo(): string {
        if (RewardDescription::validateKo($this->ko))  {
            return $this->ko;
        }
        throw new Exception('never get to getKo RewardDescription::ko');
    }

    /**
     * @return string
     */
    public static function sampleKo(): string {
        return 'RewardDescription::ko::36'; /*36:ko*/
    }

    /**
     * @param string $value
     * @throws Exception
     * @return string
     */
    public static function fromRu(string $value): string {
        return $value; /*string*/
    }

    /**
     * @throws Exception
     * @return string
     */
    public function toRu(): string {
        if (RewardDescription::validateRu($this->ru))  {
            return $this->ru; /*string*/
        }
        throw new Exception('never get to this RewardDescription::ru');
    }

    /**
     * @param string
     * @return bool
     * @throws Exception
     */
    public static function validateRu(string $value): bool {
        if (!is_string($value)) {
            throw new Exception("Attribute Error:RewardDescription::ru");
        }
        return true;
    }

    /**
     * @throws Exception
     * @return string
     */
    public function getRu(): string {
        if (RewardDescription::validateRu($this->ru))  {
            return $this->ru;
        }
        throw new Exception('never get to getRu RewardDescription::ru');
    }

    /**
     * @return string
     */
    public static function sampleRu(): string {
        return 'RewardDescription::ru::37'; /*37:ru*/
    }

    /**
     * @param string $value
     * @throws Exception
     * @return string
     */
    public static function fromZh(string $value): string {
        return $value; /*string*/
    }

    /**
     * @throws Exception
     * @return string
     */
    public function toZh(): string {
        if (RewardDescription::validateZh($this->zh))  {
            return $this->zh; /*string*/
        }
        throw new Exception('never get to this RewardDescription::zh');
    }

    /**
     * @param string
     * @return bool
     * @throws Exception
     */
    public static function validateZh(string $value): bool {
        if (!is_string($value)) {
            throw new Exception("Attribute Error:RewardDescription::zh");
        }
        return true;
    }

    /**
     * @throws Exception
     * @return string
     */
    public function getZh(): string {
        if (RewardDescription::validateZh($this->zh))  {
            return $this->zh;
        }
        throw new Exception('never get to getZh RewardDescription::zh');
    }

    /**
     * @return string
     */
    public static function sampleZh(): string {
        return 'RewardDescription::zh::38'; /*38:zh*/
    }

    /**
     * @throws Exception
     * @return bool
     */
    public function validate(): bool {
        return RewardDescription::validateDe($this->de)
        || RewardDescription::validateEn($this->en)
        || RewardDescription::validateEs($this->es)
        || RewardDescription::validateFr($this->fr)
        || RewardDescription::validateJa($this->ja)
        || RewardDescription::validateKo($this->ko)
        || RewardDescription::validateRu($this->ru)
        || RewardDescription::validateZh($this->zh);
    }

    /**
     * @return stdClass
     * @throws Exception
     */
    public function to(): stdClass  {
        $out = new stdClass();
        $out->{'de'} = $this->toDe();
        $out->{'en'} = $this->toEn();
        $out->{'es'} = $this->toEs();
        $out->{'fr'} = $this->toFr();
        $out->{'ja'} = $this->toJa();
        $out->{'ko'} = $this->toKo();
        $out->{'ru'} = $this->toRu();
        $out->{'zh'} = $this->toZh();
        return $out;
    }

    /**
     * @param stdClass $obj
     * @return RewardDescription
     * @throws Exception
     */
    public static function from(stdClass $obj): RewardDescription {
        return new RewardDescription(
         RewardDescription::fromDe($obj->{'de'})
        ,RewardDescription::fromEn($obj->{'en'})
        ,RewardDescription::fromEs($obj->{'es'})
        ,RewardDescription::fromFr($obj->{'fr'})
        ,RewardDescription::fromJa($obj->{'ja'})
        ,RewardDescription::fromKo($obj->{'ko'})
        ,RewardDescription::fromRu($obj->{'ru'})
        ,RewardDescription::fromZh($obj->{'zh'})
        );
    }

    /**
     * @return RewardDescription
     */
    public static function sample(): RewardDescription {
        return new RewardDescription(
         RewardDescription::sampleDe()
        ,RewardDescription::sampleEn()
        ,RewardDescription::sampleEs()
        ,RewardDescription::sampleFr()
        ,RewardDescription::sampleJa()
        ,RewardDescription::sampleKo()
        ,RewardDescription::sampleRu()
        ,RewardDescription::sampleZh()
        );
    }
}

// This is an autogenerated file:TargetDescription

class TargetDescription {
    private string $de; // json:de Required
    private string $en; // json:en Required
    private string $es; // json:es Required
    private string $fr; // json:fr Required
    private string $ja; // json:ja Required
    private string $ko; // json:ko Required
    private string $ru; // json:ru Required
    private string $zh; // json:zh Required

    /**
     * @param string $de
     * @param string $en
     * @param string $es
     * @param string $fr
     * @param string $ja
     * @param string $ko
     * @param string $ru
     * @param string $zh
     */
    public function __construct(string $de, string $en, string $es, string $fr, string $ja, string $ko, string $ru, string $zh) {
        $this->de = $de;
        $this->en = $en;
        $this->es = $es;
        $this->fr = $fr;
        $this->ja = $ja;
        $this->ko = $ko;
        $this->ru = $ru;
        $this->zh = $zh;
    }

    /**
     * @param string $value
     * @throws Exception
     * @return string
     */
    public static function fromDe(string $value): string {
        return $value; /*string*/
    }

    /**
     * @throws Exception
     * @return string
     */
    public function toDe(): string {
        if (TargetDescription::validateDe($this->de))  {
            return $this->de; /*string*/
        }
        throw new Exception('never get to this TargetDescription::de');
    }

    /**
     * @param string
     * @return bool
     * @throws Exception
     */
    public static function validateDe(string $value): bool {
        if (!is_string($value)) {
            throw new Exception("Attribute Error:TargetDescription::de");
        }
        return true;
    }

    /**
     * @throws Exception
     * @return string
     */
    public function getDe(): string {
        if (TargetDescription::validateDe($this->de))  {
            return $this->de;
        }
        throw new Exception('never get to getDe TargetDescription::de');
    }

    /**
     * @return string
     */
    public static function sampleDe(): string {
        return 'TargetDescription::de::31'; /*31:de*/
    }

    /**
     * @param string $value
     * @throws Exception
     * @return string
     */
    public static function fromEn(string $value): string {
        return $value; /*string*/
    }

    /**
     * @throws Exception
     * @return string
     */
    public function toEn(): string {
        if (TargetDescription::validateEn($this->en))  {
            return $this->en; /*string*/
        }
        throw new Exception('never get to this TargetDescription::en');
    }

    /**
     * @param string
     * @return bool
     * @throws Exception
     */
    public static function validateEn(string $value): bool {
        if (!is_string($value)) {
            throw new Exception("Attribute Error:TargetDescription::en");
        }
        return true;
    }

    /**
     * @throws Exception
     * @return string
     */
    public function getEn(): string {
        if (TargetDescription::validateEn($this->en))  {
            return $this->en;
        }
        throw new Exception('never get to getEn TargetDescription::en');
    }

    /**
     * @return string
     */
    public static function sampleEn(): string {
        return 'TargetDescription::en::32'; /*32:en*/
    }

    /**
     * @param string $value
     * @throws Exception
     * @return string
     */
    public static function fromEs(string $value): string {
        return $value; /*string*/
    }

    /**
     * @throws Exception
     * @return string
     */
    public function toEs(): string {
        if (TargetDescription::validateEs($this->es))  {
            return $this->es; /*string*/
        }
        throw new Exception('never get to this TargetDescription::es');
    }

    /**
     * @param string
     * @return bool
     * @throws Exception
     */
    public static function validateEs(string $value): bool {
        if (!is_string($value)) {
            throw new Exception("Attribute Error:TargetDescription::es");
        }
        return true;
    }

    /**
     * @throws Exception
     * @return string
     */
    public function getEs(): string {
        if (TargetDescription::validateEs($this->es))  {
            return $this->es;
        }
        throw new Exception('never get to getEs TargetDescription::es');
    }

    /**
     * @return string
     */
    public static function sampleEs(): string {
        return 'TargetDescription::es::33'; /*33:es*/
    }

    /**
     * @param string $value
     * @throws Exception
     * @return string
     */
    public static function fromFr(string $value): string {
        return $value; /*string*/
    }

    /**
     * @throws Exception
     * @return string
     */
    public function toFr(): string {
        if (TargetDescription::validateFr($this->fr))  {
            return $this->fr; /*string*/
        }
        throw new Exception('never get to this TargetDescription::fr');
    }

    /**
     * @param string
     * @return bool
     * @throws Exception
     */
    public static function validateFr(string $value): bool {
        if (!is_string($value)) {
            throw new Exception("Attribute Error:TargetDescription::fr");
        }
        return true;
    }

    /**
     * @throws Exception
     * @return string
     */
    public function getFr(): string {
        if (TargetDescription::validateFr($this->fr))  {
            return $this->fr;
        }
        throw new Exception('never get to getFr TargetDescription::fr');
    }

    /**
     * @return string
     */
    public static function sampleFr(): string {
        return 'TargetDescription::fr::34'; /*34:fr*/
    }

    /**
     * @param string $value
     * @throws Exception
     * @return string
     */
    public static function fromJa(string $value): string {
        return $value; /*string*/
    }

    /**
     * @throws Exception
     * @return string
     */
    public function toJa(): string {
        if (TargetDescription::validateJa($this->ja))  {
            return $this->ja; /*string*/
        }
        throw new Exception('never get to this TargetDescription::ja');
    }

    /**
     * @param string
     * @return bool
     * @throws Exception
     */
    public static function validateJa(string $value): bool {
        if (!is_string($value)) {
            throw new Exception("Attribute Error:TargetDescription::ja");
        }
        return true;
    }

    /**
     * @throws Exception
     * @return string
     */
    public function getJa(): string {
        if (TargetDescription::validateJa($this->ja))  {
            return $this->ja;
        }
        throw new Exception('never get to getJa TargetDescription::ja');
    }

    /**
     * @return string
     */
    public static function sampleJa(): string {
        return 'TargetDescription::ja::35'; /*35:ja*/
    }

    /**
     * @param string $value
     * @throws Exception
     * @return string
     */
    public static function fromKo(string $value): string {
        return $value; /*string*/
    }

    /**
     * @throws Exception
     * @return string
     */
    public function toKo(): string {
        if (TargetDescription::validateKo($this->ko))  {
            return $this->ko; /*string*/
        }
        throw new Exception('never get to this TargetDescription::ko');
    }

    /**
     * @param string
     * @return bool
     * @throws Exception
     */
    public static function validateKo(string $value): bool {
        if (!is_string($value)) {
            throw new Exception("Attribute Error:TargetDescription::ko");
        }
        return true;
    }

    /**
     * @throws Exception
     * @return string
     */
    public function getKo(): string {
        if (TargetDescription::validateKo($this->ko))  {
            return $this->ko;
        }
        throw new Exception('never get to getKo TargetDescription::ko');
    }

    /**
     * @return string
     */
    public static function sampleKo(): string {
        return 'TargetDescription::ko::36'; /*36:ko*/
    }

    /**
     * @param string $value
     * @throws Exception
     * @return string
     */
    public static function fromRu(string $value): string {
        return $value; /*string*/
    }

    /**
     * @throws Exception
     * @return string
     */
    public function toRu(): string {
        if (TargetDescription::validateRu($this->ru))  {
            return $this->ru; /*string*/
        }
        throw new Exception('never get to this TargetDescription::ru');
    }

    /**
     * @param string
     * @return bool
     * @throws Exception
     */
    public static function validateRu(string $value): bool {
        if (!is_string($value)) {
            throw new Exception("Attribute Error:TargetDescription::ru");
        }
        return true;
    }

    /**
     * @throws Exception
     * @return string
     */
    public function getRu(): string {
        if (TargetDescription::validateRu($this->ru))  {
            return $this->ru;
        }
        throw new Exception('never get to getRu TargetDescription::ru');
    }

    /**
     * @return string
     */
    public static function sampleRu(): string {
        return 'TargetDescription::ru::37'; /*37:ru*/
    }

    /**
     * @param string $value
     * @throws Exception
     * @return string
     */
    public static function fromZh(string $value): string {
        return $value; /*string*/
    }

    /**
     * @throws Exception
     * @return string
     */
    public function toZh(): string {
        if (TargetDescription::validateZh($this->zh))  {
            return $this->zh; /*string*/
        }
        throw new Exception('never get to this TargetDescription::zh');
    }

    /**
     * @param string
     * @return bool
     * @throws Exception
     */
    public static function validateZh(string $value): bool {
        if (!is_string($value)) {
            throw new Exception("Attribute Error:TargetDescription::zh");
        }
        return true;
    }

    /**
     * @throws Exception
     * @return string
     */
    public function getZh(): string {
        if (TargetDescription::validateZh($this->zh))  {
            return $this->zh;
        }
        throw new Exception('never get to getZh TargetDescription::zh');
    }

    /**
     * @return string
     */
    public static function sampleZh(): string {
        return 'TargetDescription::zh::38'; /*38:zh*/
    }

    /**
     * @throws Exception
     * @return bool
     */
    public function validate(): bool {
        return TargetDescription::validateDe($this->de)
        || TargetDescription::validateEn($this->en)
        || TargetDescription::validateEs($this->es)
        || TargetDescription::validateFr($this->fr)
        || TargetDescription::validateJa($this->ja)
        || TargetDescription::validateKo($this->ko)
        || TargetDescription::validateRu($this->ru)
        || TargetDescription::validateZh($this->zh);
    }

    /**
     * @return stdClass
     * @throws Exception
     */
    public function to(): stdClass  {
        $out = new stdClass();
        $out->{'de'} = $this->toDe();
        $out->{'en'} = $this->toEn();
        $out->{'es'} = $this->toEs();
        $out->{'fr'} = $this->toFr();
        $out->{'ja'} = $this->toJa();
        $out->{'ko'} = $this->toKo();
        $out->{'ru'} = $this->toRu();
        $out->{'zh'} = $this->toZh();
        return $out;
    }

    /**
     * @param stdClass $obj
     * @return TargetDescription
     * @throws Exception
     */
    public static function from(stdClass $obj): TargetDescription {
        return new TargetDescription(
         TargetDescription::fromDe($obj->{'de'})
        ,TargetDescription::fromEn($obj->{'en'})
        ,TargetDescription::fromEs($obj->{'es'})
        ,TargetDescription::fromFr($obj->{'fr'})
        ,TargetDescription::fromJa($obj->{'ja'})
        ,TargetDescription::fromKo($obj->{'ko'})
        ,TargetDescription::fromRu($obj->{'ru'})
        ,TargetDescription::fromZh($obj->{'zh'})
        );
    }

    /**
     * @return TargetDescription
     */
    public static function sample(): TargetDescription {
        return new TargetDescription(
         TargetDescription::sampleDe()
        ,TargetDescription::sampleEn()
        ,TargetDescription::sampleEs()
        ,TargetDescription::sampleFr()
        ,TargetDescription::sampleJa()
        ,TargetDescription::sampleKo()
        ,TargetDescription::sampleRu()
        ,TargetDescription::sampleZh()
        );
    }
}

// This is an autogenerated file:ValueTitle

class ValueTitle {
    private string $de; // json:de Required
    private string $en; // json:en Required
    private string $es; // json:es Required
    private string $fr; // json:fr Required
    private string $ja; // json:ja Required
    private string $ko; // json:ko Required
    private string $ru; // json:ru Required
    private string $zh; // json:zh Required

    /**
     * @param string $de
     * @param string $en
     * @param string $es
     * @param string $fr
     * @param string $ja
     * @param string $ko
     * @param string $ru
     * @param string $zh
     */
    public function __construct(string $de, string $en, string $es, string $fr, string $ja, string $ko, string $ru, string $zh) {
        $this->de = $de;
        $this->en = $en;
        $this->es = $es;
        $this->fr = $fr;
        $this->ja = $ja;
        $this->ko = $ko;
        $this->ru = $ru;
        $this->zh = $zh;
    }

    /**
     * @param string $value
     * @throws Exception
     * @return string
     */
    public static function fromDe(string $value): string {
        return $value; /*string*/
    }

    /**
     * @throws Exception
     * @return string
     */
    public function toDe(): string {
        if (ValueTitle::validateDe($this->de))  {
            return $this->de; /*string*/
        }
        throw new Exception('never get to this ValueTitle::de');
    }

    /**
     * @param string
     * @return bool
     * @throws Exception
     */
    public static function validateDe(string $value): bool {
        if (!is_string($value)) {
            throw new Exception("Attribute Error:ValueTitle::de");
        }
        return true;
    }

    /**
     * @throws Exception
     * @return string
     */
    public function getDe(): string {
        if (ValueTitle::validateDe($this->de))  {
            return $this->de;
        }
        throw new Exception('never get to getDe ValueTitle::de');
    }

    /**
     * @return string
     */
    public static function sampleDe(): string {
        return 'ValueTitle::de::31'; /*31:de*/
    }

    /**
     * @param string $value
     * @throws Exception
     * @return string
     */
    public static function fromEn(string $value): string {
        return $value; /*string*/
    }

    /**
     * @throws Exception
     * @return string
     */
    public function toEn(): string {
        if (ValueTitle::validateEn($this->en))  {
            return $this->en; /*string*/
        }
        throw new Exception('never get to this ValueTitle::en');
    }

    /**
     * @param string
     * @return bool
     * @throws Exception
     */
    public static function validateEn(string $value): bool {
        if (!is_string($value)) {
            throw new Exception("Attribute Error:ValueTitle::en");
        }
        return true;
    }

    /**
     * @throws Exception
     * @return string
     */
    public function getEn(): string {
        if (ValueTitle::validateEn($this->en))  {
            return $this->en;
        }
        throw new Exception('never get to getEn ValueTitle::en');
    }

    /**
     * @return string
     */
    public static function sampleEn(): string {
        return 'ValueTitle::en::32'; /*32:en*/
    }

    /**
     * @param string $value
     * @throws Exception
     * @return string
     */
    public static function fromEs(string $value): string {
        return $value; /*string*/
    }

    /**
     * @throws Exception
     * @return string
     */
    public function toEs(): string {
        if (ValueTitle::validateEs($this->es))  {
            return $this->es; /*string*/
        }
        throw new Exception('never get to this ValueTitle::es');
    }

    /**
     * @param string
     * @return bool
     * @throws Exception
     */
    public static function validateEs(string $value): bool {
        if (!is_string($value)) {
            throw new Exception("Attribute Error:ValueTitle::es");
        }
        return true;
    }

    /**
     * @throws Exception
     * @return string
     */
    public function getEs(): string {
        if (ValueTitle::validateEs($this->es))  {
            return $this->es;
        }
        throw new Exception('never get to getEs ValueTitle::es');
    }

    /**
     * @return string
     */
    public static function sampleEs(): string {
        return 'ValueTitle::es::33'; /*33:es*/
    }

    /**
     * @param string $value
     * @throws Exception
     * @return string
     */
    public static function fromFr(string $value): string {
        return $value; /*string*/
    }

    /**
     * @throws Exception
     * @return string
     */
    public function toFr(): string {
        if (ValueTitle::validateFr($this->fr))  {
            return $this->fr; /*string*/
        }
        throw new Exception('never get to this ValueTitle::fr');
    }

    /**
     * @param string
     * @return bool
     * @throws Exception
     */
    public static function validateFr(string $value): bool {
        if (!is_string($value)) {
            throw new Exception("Attribute Error:ValueTitle::fr");
        }
        return true;
    }

    /**
     * @throws Exception
     * @return string
     */
    public function getFr(): string {
        if (ValueTitle::validateFr($this->fr))  {
            return $this->fr;
        }
        throw new Exception('never get to getFr ValueTitle::fr');
    }

    /**
     * @return string
     */
    public static function sampleFr(): string {
        return 'ValueTitle::fr::34'; /*34:fr*/
    }

    /**
     * @param string $value
     * @throws Exception
     * @return string
     */
    public static function fromJa(string $value): string {
        return $value; /*string*/
    }

    /**
     * @throws Exception
     * @return string
     */
    public function toJa(): string {
        if (ValueTitle::validateJa($this->ja))  {
            return $this->ja; /*string*/
        }
        throw new Exception('never get to this ValueTitle::ja');
    }

    /**
     * @param string
     * @return bool
     * @throws Exception
     */
    public static function validateJa(string $value): bool {
        if (!is_string($value)) {
            throw new Exception("Attribute Error:ValueTitle::ja");
        }
        return true;
    }

    /**
     * @throws Exception
     * @return string
     */
    public function getJa(): string {
        if (ValueTitle::validateJa($this->ja))  {
            return $this->ja;
        }
        throw new Exception('never get to getJa ValueTitle::ja');
    }

    /**
     * @return string
     */
    public static function sampleJa(): string {
        return 'ValueTitle::ja::35'; /*35:ja*/
    }

    /**
     * @param string $value
     * @throws Exception
     * @return string
     */
    public static function fromKo(string $value): string {
        return $value; /*string*/
    }

    /**
     * @throws Exception
     * @return string
     */
    public function toKo(): string {
        if (ValueTitle::validateKo($this->ko))  {
            return $this->ko; /*string*/
        }
        throw new Exception('never get to this ValueTitle::ko');
    }

    /**
     * @param string
     * @return bool
     * @throws Exception
     */
    public static function validateKo(string $value): bool {
        if (!is_string($value)) {
            throw new Exception("Attribute Error:ValueTitle::ko");
        }
        return true;
    }

    /**
     * @throws Exception
     * @return string
     */
    public function getKo(): string {
        if (ValueTitle::validateKo($this->ko))  {
            return $this->ko;
        }
        throw new Exception('never get to getKo ValueTitle::ko');
    }

    /**
     * @return string
     */
    public static function sampleKo(): string {
        return 'ValueTitle::ko::36'; /*36:ko*/
    }

    /**
     * @param string $value
     * @throws Exception
     * @return string
     */
    public static function fromRu(string $value): string {
        return $value; /*string*/
    }

    /**
     * @throws Exception
     * @return string
     */
    public function toRu(): string {
        if (ValueTitle::validateRu($this->ru))  {
            return $this->ru; /*string*/
        }
        throw new Exception('never get to this ValueTitle::ru');
    }

    /**
     * @param string
     * @return bool
     * @throws Exception
     */
    public static function validateRu(string $value): bool {
        if (!is_string($value)) {
            throw new Exception("Attribute Error:ValueTitle::ru");
        }
        return true;
    }

    /**
     * @throws Exception
     * @return string
     */
    public function getRu(): string {
        if (ValueTitle::validateRu($this->ru))  {
            return $this->ru;
        }
        throw new Exception('never get to getRu ValueTitle::ru');
    }

    /**
     * @return string
     */
    public static function sampleRu(): string {
        return 'ValueTitle::ru::37'; /*37:ru*/
    }

    /**
     * @param string $value
     * @throws Exception
     * @return string
     */
    public static function fromZh(string $value): string {
        return $value; /*string*/
    }

    /**
     * @throws Exception
     * @return string
     */
    public function toZh(): string {
        if (ValueTitle::validateZh($this->zh))  {
            return $this->zh; /*string*/
        }
        throw new Exception('never get to this ValueTitle::zh');
    }

    /**
     * @param string
     * @return bool
     * @throws Exception
     */
    public static function validateZh(string $value): bool {
        if (!is_string($value)) {
            throw new Exception("Attribute Error:ValueTitle::zh");
        }
        return true;
    }

    /**
     * @throws Exception
     * @return string
     */
    public function getZh(): string {
        if (ValueTitle::validateZh($this->zh))  {
            return $this->zh;
        }
        throw new Exception('never get to getZh ValueTitle::zh');
    }

    /**
     * @return string
     */
    public static function sampleZh(): string {
        return 'ValueTitle::zh::38'; /*38:zh*/
    }

    /**
     * @throws Exception
     * @return bool
     */
    public function validate(): bool {
        return ValueTitle::validateDe($this->de)
        || ValueTitle::validateEn($this->en)
        || ValueTitle::validateEs($this->es)
        || ValueTitle::validateFr($this->fr)
        || ValueTitle::validateJa($this->ja)
        || ValueTitle::validateKo($this->ko)
        || ValueTitle::validateRu($this->ru)
        || ValueTitle::validateZh($this->zh);
    }

    /**
     * @return stdClass
     * @throws Exception
     */
    public function to(): stdClass  {
        $out = new stdClass();
        $out->{'de'} = $this->toDe();
        $out->{'en'} = $this->toEn();
        $out->{'es'} = $this->toEs();
        $out->{'fr'} = $this->toFr();
        $out->{'ja'} = $this->toJa();
        $out->{'ko'} = $this->toKo();
        $out->{'ru'} = $this->toRu();
        $out->{'zh'} = $this->toZh();
        return $out;
    }

    /**
     * @param stdClass $obj
     * @return ValueTitle
     * @throws Exception
     */
    public static function from(stdClass $obj): ValueTitle {
        return new ValueTitle(
         ValueTitle::fromDe($obj->{'de'})
        ,ValueTitle::fromEn($obj->{'en'})
        ,ValueTitle::fromEs($obj->{'es'})
        ,ValueTitle::fromFr($obj->{'fr'})
        ,ValueTitle::fromJa($obj->{'ja'})
        ,ValueTitle::fromKo($obj->{'ko'})
        ,ValueTitle::fromRu($obj->{'ru'})
        ,ValueTitle::fromZh($obj->{'zh'})
        );
    }

    /**
     * @return ValueTitle
     */
    public static function sample(): ValueTitle {
        return new ValueTitle(
         ValueTitle::sampleDe()
        ,ValueTitle::sampleEn()
        ,ValueTitle::sampleEs()
        ,ValueTitle::sampleFr()
        ,ValueTitle::sampleJa()
        ,ValueTitle::sampleKo()
        ,ValueTitle::sampleRu()
        ,ValueTitle::sampleZh()
        );
    }
}
from dataclasses import dataclass
from typing import Any, TypeVar, Type, cast, Callable
from enum import Enum


T = TypeVar("T")
EnumT = TypeVar("EnumT", bound=Enum)


def from_str(x: Any) -> str:
    assert isinstance(x, str)
    return x


def from_int(x: Any) -> int:
    assert isinstance(x, int) and not isinstance(x, bool)
    return x


def from_float(x: Any) -> float:
    assert isinstance(x, (float, int)) and not isinstance(x, bool)
    return float(x)


def to_class(c: Type[T], x: Any) -> dict:
    assert isinstance(x, c)
    return cast(Any, x).to_dict()


def to_enum(c: Type[EnumT], x: Any) -> EnumT:
    assert isinstance(x, c)
    return x.value


def to_float(x: Any) -> float:
    assert isinstance(x, (int, float))
    return x


def from_bool(x: Any) -> bool:
    assert isinstance(x, bool)
    return x


def from_list(f: Callable[[Any], T], x: Any) -> list[T]:
    assert isinstance(x, list)
    return [f(y) for y in x]


def from_none(x: Any) -> Any:
    assert x is None
    return x


def from_union(fs, x):
    for f in fs:
        try:
            return f(x)
        except:
            pass
    assert False


@dataclass
class ContributionMultiplierDescription:
    de: str
    en: str
    es: str
    fr: str
    ja: str
    ko: str
    ru: str
    zh: str

    @staticmethod
    def from_dict(obj: Any) -> 'ContributionMultiplierDescription':
        assert isinstance(obj, dict)
        de = from_str(obj.get("de"))
        en = from_str(obj.get("en"))
        es = from_str(obj.get("es"))
        fr = from_str(obj.get("fr"))
        ja = from_str(obj.get("ja"))
        ko = from_str(obj.get("ko"))
        ru = from_str(obj.get("ru"))
        zh = from_str(obj.get("zh"))
        return ContributionMultiplierDescription(de, en, es, fr, ja, ko, ru, zh)

    def to_dict(self) -> dict:
        result: dict = {}
        result["de"] = from_str(self.de)
        result["en"] = from_str(self.en)
        result["es"] = from_str(self.es)
        result["fr"] = from_str(self.fr)
        result["ja"] = from_str(self.ja)
        result["ko"] = from_str(self.ko)
        result["ru"] = from_str(self.ru)
        result["zh"] = from_str(self.zh)
        return result


class ContributionMultiplierIconID(Enum):
    ISK = "isk"


@dataclass
class ContributionMultiplierTitle:
    de: str
    en: str
    es: str
    fr: str
    ja: str
    ko: str
    ru: str
    zh: str

    @staticmethod
    def from_dict(obj: Any) -> 'ContributionMultiplierTitle':
        assert isinstance(obj, dict)
        de = from_str(obj.get("de"))
        en = from_str(obj.get("en"))
        es = from_str(obj.get("es"))
        fr = from_str(obj.get("fr"))
        ja = from_str(obj.get("ja"))
        ko = from_str(obj.get("ko"))
        ru = from_str(obj.get("ru"))
        zh = from_str(obj.get("zh"))
        return ContributionMultiplierTitle(de, en, es, fr, ja, ko, ru, zh)

    def to_dict(self) -> dict:
        result: dict = {}
        result["de"] = from_str(self.de)
        result["en"] = from_str(self.en)
        result["es"] = from_str(self.es)
        result["fr"] = from_str(self.fr)
        result["ja"] = from_str(self.ja)
        result["ko"] = from_str(self.ko)
        result["ru"] = from_str(self.ru)
        result["zh"] = from_str(self.zh)
        return result


@dataclass
class ContributionMultiplierUnsetDescription:
    de: str
    en: str
    es: str
    fr: str
    ja: str
    ko: str
    ru: str
    zh: str

    @staticmethod
    def from_dict(obj: Any) -> 'ContributionMultiplierUnsetDescription':
        assert isinstance(obj, dict)
        de = from_str(obj.get("de"))
        en = from_str(obj.get("en"))
        es = from_str(obj.get("es"))
        fr = from_str(obj.get("fr"))
        ja = from_str(obj.get("ja"))
        ko = from_str(obj.get("ko"))
        ru = from_str(obj.get("ru"))
        zh = from_str(obj.get("zh"))
        return ContributionMultiplierUnsetDescription(de, en, es, fr, ja, ko, ru, zh)

    def to_dict(self) -> dict:
        result: dict = {}
        result["de"] = from_str(self.de)
        result["en"] = from_str(self.en)
        result["es"] = from_str(self.es)
        result["fr"] = from_str(self.fr)
        result["ja"] = from_str(self.ja)
        result["ko"] = from_str(self.ko)
        result["ru"] = from_str(self.ru)
        result["zh"] = from_str(self.zh)
        return result


@dataclass
class ContributionMultiplier:
    default_value: int
    description: ContributionMultiplierDescription
    icon_id: ContributionMultiplierIconID
    max_value: int
    min_value: float
    title: ContributionMultiplierTitle
    unset_description: ContributionMultiplierUnsetDescription

    @staticmethod
    def from_dict(obj: Any) -> 'ContributionMultiplier':
        assert isinstance(obj, dict)
        default_value = from_int(obj.get("defaultValue"))
        description = ContributionMultiplierDescription.from_dict(obj.get("description"))
        icon_id = ContributionMultiplierIconID(obj.get("iconID"))
        max_value = from_int(obj.get("maxValue"))
        min_value = from_float(obj.get("minValue"))
        title = ContributionMultiplierTitle.from_dict(obj.get("title"))
        unset_description = ContributionMultiplierUnsetDescription.from_dict(obj.get("unsetDescription"))
        return ContributionMultiplier(default_value, description, icon_id, max_value, min_value, title, unset_description)

    def to_dict(self) -> dict:
        result: dict = {}
        result["defaultValue"] = from_int(self.default_value)
        result["description"] = to_class(ContributionMultiplierDescription, self.description)
        result["iconID"] = to_enum(ContributionMultiplierIconID, self.icon_id)
        result["maxValue"] = from_int(self.max_value)
        result["minValue"] = to_float(self.min_value)
        result["title"] = to_class(ContributionMultiplierTitle, self.title)
        result["unsetDescription"] = to_class(ContributionMultiplierUnsetDescription, self.unset_description)
        return result


@dataclass
class ValueDescription:
    de: str
    en: str
    es: str
    fr: str
    ja: str
    ko: str
    ru: str
    zh: str

    @staticmethod
    def from_dict(obj: Any) -> 'ValueDescription':
        assert isinstance(obj, dict)
        de = from_str(obj.get("de"))
        en = from_str(obj.get("en"))
        es = from_str(obj.get("es"))
        fr = from_str(obj.get("fr"))
        ja = from_str(obj.get("ja"))
        ko = from_str(obj.get("ko"))
        ru = from_str(obj.get("ru"))
        zh = from_str(obj.get("zh"))
        return ValueDescription(de, en, es, fr, ja, ko, ru, zh)

    def to_dict(self) -> dict:
        result: dict = {}
        result["de"] = from_str(self.de)
        result["en"] = from_str(self.en)
        result["es"] = from_str(self.es)
        result["fr"] = from_str(self.fr)
        result["ja"] = from_str(self.ja)
        result["ko"] = from_str(self.ko)
        result["ru"] = from_str(self.ru)
        result["zh"] = from_str(self.zh)
        return result


class Key(Enum):
    BOOST_SHIELD = "BoostShield"
    CAPTURE_FW_COMPLEX = "CaptureFWComplex"
    DAMAGE_SHIP = "DamageShip"
    DEFEND_FW_COMPLEX = "DefendFWComplex"
    DELIVER_ITEM = "DeliverItem"
    KILL_CAPSULEER = "KillCapsuleer"
    KILL_NPC = "KillNPC"
    MINE_ORE = "MineOre"
    REPAIR_ARMOR = "RepairArmor"
    SHIP_INSURANCE = "ShipInsurance"


@dataclass
class MaxContributionsPerParticipantDescription:
    de: str
    en: str
    es: str
    fr: str
    ja: str
    ko: str
    ru: str
    zh: str

    @staticmethod
    def from_dict(obj: Any) -> 'MaxContributionsPerParticipantDescription':
        assert isinstance(obj, dict)
        de = from_str(obj.get("de"))
        en = from_str(obj.get("en"))
        es = from_str(obj.get("es"))
        fr = from_str(obj.get("fr"))
        ja = from_str(obj.get("ja"))
        ko = from_str(obj.get("ko"))
        ru = from_str(obj.get("ru"))
        zh = from_str(obj.get("zh"))
        return MaxContributionsPerParticipantDescription(de, en, es, fr, ja, ko, ru, zh)

    def to_dict(self) -> dict:
        result: dict = {}
        result["de"] = from_str(self.de)
        result["en"] = from_str(self.en)
        result["es"] = from_str(self.es)
        result["fr"] = from_str(self.fr)
        result["ja"] = from_str(self.ja)
        result["ko"] = from_str(self.ko)
        result["ru"] = from_str(self.ru)
        result["zh"] = from_str(self.zh)
        return result


class MaxContributionsPerParticipantIconID(Enum):
    ISK = "isk"
    PERSONAL = "personal"


@dataclass
class MaxContributionsPerParticipantTitle:
    de: str
    en: str
    es: str
    fr: str
    ja: str
    ko: str
    ru: str
    zh: str

    @staticmethod
    def from_dict(obj: Any) -> 'MaxContributionsPerParticipantTitle':
        assert isinstance(obj, dict)
        de = from_str(obj.get("de"))
        en = from_str(obj.get("en"))
        es = from_str(obj.get("es"))
        fr = from_str(obj.get("fr"))
        ja = from_str(obj.get("ja"))
        ko = from_str(obj.get("ko"))
        ru = from_str(obj.get("ru"))
        zh = from_str(obj.get("zh"))
        return MaxContributionsPerParticipantTitle(de, en, es, fr, ja, ko, ru, zh)

    def to_dict(self) -> dict:
        result: dict = {}
        result["de"] = from_str(self.de)
        result["en"] = from_str(self.en)
        result["es"] = from_str(self.es)
        result["fr"] = from_str(self.fr)
        result["ja"] = from_str(self.ja)
        result["ko"] = from_str(self.ko)
        result["ru"] = from_str(self.ru)
        result["zh"] = from_str(self.zh)
        return result


@dataclass
class MaxContributionsPerParticipantUnsetDescription:
    de: str
    en: str
    es: str
    fr: str
    ja: str
    ko: str
    ru: str
    zh: str

    @staticmethod
    def from_dict(obj: Any) -> 'MaxContributionsPerParticipantUnsetDescription':
        assert isinstance(obj, dict)
        de = from_str(obj.get("de"))
        en = from_str(obj.get("en"))
        es = from_str(obj.get("es"))
        fr = from_str(obj.get("fr"))
        ja = from_str(obj.get("ja"))
        ko = from_str(obj.get("ko"))
        ru = from_str(obj.get("ru"))
        zh = from_str(obj.get("zh"))
        return MaxContributionsPerParticipantUnsetDescription(de, en, es, fr, ja, ko, ru, zh)

    def to_dict(self) -> dict:
        result: dict = {}
        result["de"] = from_str(self.de)
        result["en"] = from_str(self.en)
        result["es"] = from_str(self.es)
        result["fr"] = from_str(self.fr)
        result["ja"] = from_str(self.ja)
        result["ko"] = from_str(self.ko)
        result["ru"] = from_str(self.ru)
        result["zh"] = from_str(self.zh)
        return result


@dataclass
class MaxContributionsPerParticipant:
    description: MaxContributionsPerParticipantDescription
    icon_id: MaxContributionsPerParticipantIconID
    title: MaxContributionsPerParticipantTitle
    unset_description: MaxContributionsPerParticipantUnsetDescription

    @staticmethod
    def from_dict(obj: Any) -> 'MaxContributionsPerParticipant':
        assert isinstance(obj, dict)
        description = MaxContributionsPerParticipantDescription.from_dict(obj.get("description"))
        icon_id = MaxContributionsPerParticipantIconID(obj.get("iconID"))
        title = MaxContributionsPerParticipantTitle.from_dict(obj.get("title"))
        unset_description = MaxContributionsPerParticipantUnsetDescription.from_dict(obj.get("unsetDescription"))
        return MaxContributionsPerParticipant(description, icon_id, title, unset_description)

    def to_dict(self) -> dict:
        result: dict = {}
        result["description"] = to_class(MaxContributionsPerParticipantDescription, self.description)
        result["iconID"] = to_enum(MaxContributionsPerParticipantIconID, self.icon_id)
        result["title"] = to_class(MaxContributionsPerParticipantTitle, self.title)
        result["unsetDescription"] = to_class(MaxContributionsPerParticipantUnsetDescription, self.unset_description)
        return result


@dataclass
class MaxProgressPerContributionDescription:
    de: str
    en: str
    es: str
    fr: str
    ja: str
    ko: str
    ru: str
    zh: str

    @staticmethod
    def from_dict(obj: Any) -> 'MaxProgressPerContributionDescription':
        assert isinstance(obj, dict)
        de = from_str(obj.get("de"))
        en = from_str(obj.get("en"))
        es = from_str(obj.get("es"))
        fr = from_str(obj.get("fr"))
        ja = from_str(obj.get("ja"))
        ko = from_str(obj.get("ko"))
        ru = from_str(obj.get("ru"))
        zh = from_str(obj.get("zh"))
        return MaxProgressPerContributionDescription(de, en, es, fr, ja, ko, ru, zh)

    def to_dict(self) -> dict:
        result: dict = {}
        result["de"] = from_str(self.de)
        result["en"] = from_str(self.en)
        result["es"] = from_str(self.es)
        result["fr"] = from_str(self.fr)
        result["ja"] = from_str(self.ja)
        result["ko"] = from_str(self.ko)
        result["ru"] = from_str(self.ru)
        result["zh"] = from_str(self.zh)
        return result


@dataclass
class MaxProgressPerContributionTitle:
    de: str
    en: str
    es: str
    fr: str
    ja: str
    ko: str
    ru: str
    zh: str

    @staticmethod
    def from_dict(obj: Any) -> 'MaxProgressPerContributionTitle':
        assert isinstance(obj, dict)
        de = from_str(obj.get("de"))
        en = from_str(obj.get("en"))
        es = from_str(obj.get("es"))
        fr = from_str(obj.get("fr"))
        ja = from_str(obj.get("ja"))
        ko = from_str(obj.get("ko"))
        ru = from_str(obj.get("ru"))
        zh = from_str(obj.get("zh"))
        return MaxProgressPerContributionTitle(de, en, es, fr, ja, ko, ru, zh)

    def to_dict(self) -> dict:
        result: dict = {}
        result["de"] = from_str(self.de)
        result["en"] = from_str(self.en)
        result["es"] = from_str(self.es)
        result["fr"] = from_str(self.fr)
        result["ja"] = from_str(self.ja)
        result["ko"] = from_str(self.ko)
        result["ru"] = from_str(self.ru)
        result["zh"] = from_str(self.zh)
        return result


@dataclass
class MaxProgressPerContributionUnsetDescription:
    de: str
    en: str
    es: str
    fr: str
    ja: str
    ko: str
    ru: str
    zh: str

    @staticmethod
    def from_dict(obj: Any) -> 'MaxProgressPerContributionUnsetDescription':
        assert isinstance(obj, dict)
        de = from_str(obj.get("de"))
        en = from_str(obj.get("en"))
        es = from_str(obj.get("es"))
        fr = from_str(obj.get("fr"))
        ja = from_str(obj.get("ja"))
        ko = from_str(obj.get("ko"))
        ru = from_str(obj.get("ru"))
        zh = from_str(obj.get("zh"))
        return MaxProgressPerContributionUnsetDescription(de, en, es, fr, ja, ko, ru, zh)

    def to_dict(self) -> dict:
        result: dict = {}
        result["de"] = from_str(self.de)
        result["en"] = from_str(self.en)
        result["es"] = from_str(self.es)
        result["fr"] = from_str(self.fr)
        result["ja"] = from_str(self.ja)
        result["ko"] = from_str(self.ko)
        result["ru"] = from_str(self.ru)
        result["zh"] = from_str(self.zh)
        return result


@dataclass
class MaxProgressPerContribution:
    description: MaxProgressPerContributionDescription
    icon_id: ContributionMultiplierIconID
    title: MaxProgressPerContributionTitle
    unset_description: MaxProgressPerContributionUnsetDescription

    @staticmethod
    def from_dict(obj: Any) -> 'MaxProgressPerContribution':
        assert isinstance(obj, dict)
        description = MaxProgressPerContributionDescription.from_dict(obj.get("description"))
        icon_id = ContributionMultiplierIconID(obj.get("iconID"))
        title = MaxProgressPerContributionTitle.from_dict(obj.get("title"))
        unset_description = MaxProgressPerContributionUnsetDescription.from_dict(obj.get("unsetDescription"))
        return MaxProgressPerContribution(description, icon_id, title, unset_description)

    def to_dict(self) -> dict:
        result: dict = {}
        result["description"] = to_class(MaxProgressPerContributionDescription, self.description)
        result["iconID"] = to_enum(ContributionMultiplierIconID, self.icon_id)
        result["title"] = to_class(MaxProgressPerContributionTitle, self.title)
        result["unsetDescription"] = to_class(MaxProgressPerContributionUnsetDescription, self.unset_description)
        return result


@dataclass
class ChoiceLabel:
    de: str
    en: str
    es: str
    fr: str
    ja: str
    ko: str
    ru: str
    zh: str

    @staticmethod
    def from_dict(obj: Any) -> 'ChoiceLabel':
        assert isinstance(obj, dict)
        de = from_str(obj.get("de"))
        en = from_str(obj.get("en"))
        es = from_str(obj.get("es"))
        fr = from_str(obj.get("fr"))
        ja = from_str(obj.get("ja"))
        ko = from_str(obj.get("ko"))
        ru = from_str(obj.get("ru"))
        zh = from_str(obj.get("zh"))
        return ChoiceLabel(de, en, es, fr, ja, ko, ru, zh)

    def to_dict(self) -> dict:
        result: dict = {}
        result["de"] = from_str(self.de)
        result["en"] = from_str(self.en)
        result["es"] = from_str(self.es)
        result["fr"] = from_str(self.fr)
        result["ja"] = from_str(self.ja)
        result["ko"] = from_str(self.ko)
        result["ru"] = from_str(self.ru)
        result["zh"] = from_str(self.zh)
        return result


@dataclass
class BooleanDescription:
    de: str
    en: str
    es: str
    fr: str
    ja: str
    ko: str
    ru: str
    zh: str

    @staticmethod
    def from_dict(obj: Any) -> 'BooleanDescription':
        assert isinstance(obj, dict)
        de = from_str(obj.get("de"))
        en = from_str(obj.get("en"))
        es = from_str(obj.get("es"))
        fr = from_str(obj.get("fr"))
        ja = from_str(obj.get("ja"))
        ko = from_str(obj.get("ko"))
        ru = from_str(obj.get("ru"))
        zh = from_str(obj.get("zh"))
        return BooleanDescription(de, en, es, fr, ja, ko, ru, zh)

    def to_dict(self) -> dict:
        result: dict = {}
        result["de"] = from_str(self.de)
        result["en"] = from_str(self.en)
        result["es"] = from_str(self.es)
        result["fr"] = from_str(self.fr)
        result["ja"] = from_str(self.ja)
        result["ko"] = from_str(self.ko)
        result["ru"] = from_str(self.ru)
        result["zh"] = from_str(self.zh)
        return result


class BooleanIconID(Enum):
    PERSON = "person"


@dataclass
class OptionFalseDescription:
    de: str
    en: str
    es: str
    fr: str
    ja: str
    ko: str
    ru: str
    zh: str

    @staticmethod
    def from_dict(obj: Any) -> 'OptionFalseDescription':
        assert isinstance(obj, dict)
        de = from_str(obj.get("de"))
        en = from_str(obj.get("en"))
        es = from_str(obj.get("es"))
        fr = from_str(obj.get("fr"))
        ja = from_str(obj.get("ja"))
        ko = from_str(obj.get("ko"))
        ru = from_str(obj.get("ru"))
        zh = from_str(obj.get("zh"))
        return OptionFalseDescription(de, en, es, fr, ja, ko, ru, zh)

    def to_dict(self) -> dict:
        result: dict = {}
        result["de"] = from_str(self.de)
        result["en"] = from_str(self.en)
        result["es"] = from_str(self.es)
        result["fr"] = from_str(self.fr)
        result["ja"] = from_str(self.ja)
        result["ko"] = from_str(self.ko)
        result["ru"] = from_str(self.ru)
        result["zh"] = from_str(self.zh)
        return result


@dataclass
class OptionFalseTitle:
    de: str
    en: str
    es: str
    fr: str
    ja: str
    ko: str
    ru: str
    zh: str

    @staticmethod
    def from_dict(obj: Any) -> 'OptionFalseTitle':
        assert isinstance(obj, dict)
        de = from_str(obj.get("de"))
        en = from_str(obj.get("en"))
        es = from_str(obj.get("es"))
        fr = from_str(obj.get("fr"))
        ja = from_str(obj.get("ja"))
        ko = from_str(obj.get("ko"))
        ru = from_str(obj.get("ru"))
        zh = from_str(obj.get("zh"))
        return OptionFalseTitle(de, en, es, fr, ja, ko, ru, zh)

    def to_dict(self) -> dict:
        result: dict = {}
        result["de"] = from_str(self.de)
        result["en"] = from_str(self.en)
        result["es"] = from_str(self.es)
        result["fr"] = from_str(self.fr)
        result["ja"] = from_str(self.ja)
        result["ko"] = from_str(self.ko)
        result["ru"] = from_str(self.ru)
        result["zh"] = from_str(self.zh)
        return result


@dataclass
class OptionFalse:
    description: OptionFalseDescription
    title: OptionFalseTitle

    @staticmethod
    def from_dict(obj: Any) -> 'OptionFalse':
        assert isinstance(obj, dict)
        description = OptionFalseDescription.from_dict(obj.get("description"))
        title = OptionFalseTitle.from_dict(obj.get("title"))
        return OptionFalse(description, title)

    def to_dict(self) -> dict:
        result: dict = {}
        result["description"] = to_class(OptionFalseDescription, self.description)
        result["title"] = to_class(OptionFalseTitle, self.title)
        return result


@dataclass
class OptionTrueDescription:
    de: str
    en: str
    es: str
    fr: str
    ja: str
    ko: str
    ru: str
    zh: str

    @staticmethod
    def from_dict(obj: Any) -> 'OptionTrueDescription':
        assert isinstance(obj, dict)
        de = from_str(obj.get("de"))
        en = from_str(obj.get("en"))
        es = from_str(obj.get("es"))
        fr = from_str(obj.get("fr"))
        ja = from_str(obj.get("ja"))
        ko = from_str(obj.get("ko"))
        ru = from_str(obj.get("ru"))
        zh = from_str(obj.get("zh"))
        return OptionTrueDescription(de, en, es, fr, ja, ko, ru, zh)

    def to_dict(self) -> dict:
        result: dict = {}
        result["de"] = from_str(self.de)
        result["en"] = from_str(self.en)
        result["es"] = from_str(self.es)
        result["fr"] = from_str(self.fr)
        result["ja"] = from_str(self.ja)
        result["ko"] = from_str(self.ko)
        result["ru"] = from_str(self.ru)
        result["zh"] = from_str(self.zh)
        return result


@dataclass
class OptionTrueTitle:
    de: str
    en: str
    es: str
    fr: str
    ja: str
    ko: str
    ru: str
    zh: str

    @staticmethod
    def from_dict(obj: Any) -> 'OptionTrueTitle':
        assert isinstance(obj, dict)
        de = from_str(obj.get("de"))
        en = from_str(obj.get("en"))
        es = from_str(obj.get("es"))
        fr = from_str(obj.get("fr"))
        ja = from_str(obj.get("ja"))
        ko = from_str(obj.get("ko"))
        ru = from_str(obj.get("ru"))
        zh = from_str(obj.get("zh"))
        return OptionTrueTitle(de, en, es, fr, ja, ko, ru, zh)

    def to_dict(self) -> dict:
        result: dict = {}
        result["de"] = from_str(self.de)
        result["en"] = from_str(self.en)
        result["es"] = from_str(self.es)
        result["fr"] = from_str(self.fr)
        result["ja"] = from_str(self.ja)
        result["ko"] = from_str(self.ko)
        result["ru"] = from_str(self.ru)
        result["zh"] = from_str(self.zh)
        return result


@dataclass
class OptionTrue:
    description: OptionTrueDescription
    title: OptionTrueTitle

    @staticmethod
    def from_dict(obj: Any) -> 'OptionTrue':
        assert isinstance(obj, dict)
        description = OptionTrueDescription.from_dict(obj.get("description"))
        title = OptionTrueTitle.from_dict(obj.get("title"))
        return OptionTrue(description, title)

    def to_dict(self) -> dict:
        result: dict = {}
        result["description"] = to_class(OptionTrueDescription, self.description)
        result["title"] = to_class(OptionTrueTitle, self.title)
        return result


@dataclass
class BooleanTitle:
    de: str
    en: str
    es: str
    fr: str
    ja: str
    ko: str
    ru: str
    zh: str

    @staticmethod
    def from_dict(obj: Any) -> 'BooleanTitle':
        assert isinstance(obj, dict)
        de = from_str(obj.get("de"))
        en = from_str(obj.get("en"))
        es = from_str(obj.get("es"))
        fr = from_str(obj.get("fr"))
        ja = from_str(obj.get("ja"))
        ko = from_str(obj.get("ko"))
        ru = from_str(obj.get("ru"))
        zh = from_str(obj.get("zh"))
        return BooleanTitle(de, en, es, fr, ja, ko, ru, zh)

    def to_dict(self) -> dict:
        result: dict = {}
        result["de"] = from_str(self.de)
        result["en"] = from_str(self.en)
        result["es"] = from_str(self.es)
        result["fr"] = from_str(self.fr)
        result["ja"] = from_str(self.ja)
        result["ko"] = from_str(self.ko)
        result["ru"] = from_str(self.ru)
        result["zh"] = from_str(self.zh)
        return result


@dataclass
class Boolean:
    choice_label: ChoiceLabel
    default: bool
    description: BooleanDescription
    icon_id: BooleanIconID
    option_false: OptionFalse
    option_true: OptionTrue
    title: BooleanTitle

    @staticmethod
    def from_dict(obj: Any) -> 'Boolean':
        assert isinstance(obj, dict)
        choice_label = ChoiceLabel.from_dict(obj.get("choiceLabel"))
        default = from_bool(obj.get("default"))
        description = BooleanDescription.from_dict(obj.get("description"))
        icon_id = BooleanIconID(obj.get("iconID"))
        option_false = OptionFalse.from_dict(obj.get("optionFalse"))
        option_true = OptionTrue.from_dict(obj.get("optionTrue"))
        title = BooleanTitle.from_dict(obj.get("title"))
        return Boolean(choice_label, default, description, icon_id, option_false, option_true, title)

    def to_dict(self) -> dict:
        result: dict = {}
        result["choiceLabel"] = to_class(ChoiceLabel, self.choice_label)
        result["default"] = from_bool(self.default)
        result["description"] = to_class(BooleanDescription, self.description)
        result["iconID"] = to_enum(BooleanIconID, self.icon_id)
        result["optionFalse"] = to_class(OptionFalse, self.option_false)
        result["optionTrue"] = to_class(OptionTrue, self.option_true)
        result["title"] = to_class(BooleanTitle, self.title)
        return result


class AcceptedValueType(Enum):
    STATION = "station"
    STRUCTURE = "structure"


@dataclass
class DeliveryLocationDescription:
    de: str
    en: str
    es: str
    fr: str
    ja: str
    ko: str
    ru: str
    zh: str

    @staticmethod
    def from_dict(obj: Any) -> 'DeliveryLocationDescription':
        assert isinstance(obj, dict)
        de = from_str(obj.get("de"))
        en = from_str(obj.get("en"))
        es = from_str(obj.get("es"))
        fr = from_str(obj.get("fr"))
        ja = from_str(obj.get("ja"))
        ko = from_str(obj.get("ko"))
        ru = from_str(obj.get("ru"))
        zh = from_str(obj.get("zh"))
        return DeliveryLocationDescription(de, en, es, fr, ja, ko, ru, zh)

    def to_dict(self) -> dict:
        result: dict = {}
        result["de"] = from_str(self.de)
        result["en"] = from_str(self.en)
        result["es"] = from_str(self.es)
        result["fr"] = from_str(self.fr)
        result["ja"] = from_str(self.ja)
        result["ko"] = from_str(self.ko)
        result["ru"] = from_str(self.ru)
        result["zh"] = from_str(self.zh)
        return result


class DeliveryLocationIconID(Enum):
    LOCATION = "location"


@dataclass
class DeliveryLocationTitle:
    de: str
    en: str
    es: str
    fr: str
    ja: str
    ko: str
    ru: str
    zh: str

    @staticmethod
    def from_dict(obj: Any) -> 'DeliveryLocationTitle':
        assert isinstance(obj, dict)
        de = from_str(obj.get("de"))
        en = from_str(obj.get("en"))
        es = from_str(obj.get("es"))
        fr = from_str(obj.get("fr"))
        ja = from_str(obj.get("ja"))
        ko = from_str(obj.get("ko"))
        ru = from_str(obj.get("ru"))
        zh = from_str(obj.get("zh"))
        return DeliveryLocationTitle(de, en, es, fr, ja, ko, ru, zh)

    def to_dict(self) -> dict:
        result: dict = {}
        result["de"] = from_str(self.de)
        result["en"] = from_str(self.en)
        result["es"] = from_str(self.es)
        result["fr"] = from_str(self.fr)
        result["ja"] = from_str(self.ja)
        result["ko"] = from_str(self.ko)
        result["ru"] = from_str(self.ru)
        result["zh"] = from_str(self.zh)
        return result


@dataclass
class DeliveryLocationUnsetDescription:
    de: str
    en: str
    es: str
    fr: str
    ja: str
    ko: str
    ru: str
    zh: str

    @staticmethod
    def from_dict(obj: Any) -> 'DeliveryLocationUnsetDescription':
        assert isinstance(obj, dict)
        de = from_str(obj.get("de"))
        en = from_str(obj.get("en"))
        es = from_str(obj.get("es"))
        fr = from_str(obj.get("fr"))
        ja = from_str(obj.get("ja"))
        ko = from_str(obj.get("ko"))
        ru = from_str(obj.get("ru"))
        zh = from_str(obj.get("zh"))
        return DeliveryLocationUnsetDescription(de, en, es, fr, ja, ko, ru, zh)

    def to_dict(self) -> dict:
        result: dict = {}
        result["de"] = from_str(self.de)
        result["en"] = from_str(self.en)
        result["es"] = from_str(self.es)
        result["fr"] = from_str(self.fr)
        result["ja"] = from_str(self.ja)
        result["ko"] = from_str(self.ko)
        result["ru"] = from_str(self.ru)
        result["zh"] = from_str(self.zh)
        return result


@dataclass
class DeliveryLocation:
    accepted_value_types: list[AcceptedValueType]
    description: DeliveryLocationDescription
    icon_id: DeliveryLocationIconID
    max_entries: int
    title: DeliveryLocationTitle
    unset_description: DeliveryLocationUnsetDescription

    @staticmethod
    def from_dict(obj: Any) -> 'DeliveryLocation':
        assert isinstance(obj, dict)
        accepted_value_types = from_list(AcceptedValueType, obj.get("acceptedValueTypes"))
        description = DeliveryLocationDescription.from_dict(obj.get("description"))
        icon_id = DeliveryLocationIconID(obj.get("iconID"))
        max_entries = from_int(obj.get("maxEntries"))
        title = DeliveryLocationTitle.from_dict(obj.get("title"))
        unset_description = DeliveryLocationUnsetDescription.from_dict(obj.get("unsetDescription"))
        return DeliveryLocation(accepted_value_types, description, icon_id, max_entries, title, unset_description)

    def to_dict(self) -> dict:
        result: dict = {}
        result["acceptedValueTypes"] = from_list(lambda x: to_enum(AcceptedValueType, x), self.accepted_value_types)
        result["description"] = to_class(DeliveryLocationDescription, self.description)
        result["iconID"] = to_enum(DeliveryLocationIconID, self.icon_id)
        result["maxEntries"] = from_int(self.max_entries)
        result["title"] = to_class(DeliveryLocationTitle, self.title)
        result["unsetDescription"] = to_class(DeliveryLocationUnsetDescription, self.unset_description)
        return result


@dataclass
class ItemDeliveryDescription:
    de: str
    en: str
    es: str
    fr: str
    ja: str
    ko: str
    ru: str
    zh: str

    @staticmethod
    def from_dict(obj: Any) -> 'ItemDeliveryDescription':
        assert isinstance(obj, dict)
        de = from_str(obj.get("de"))
        en = from_str(obj.get("en"))
        es = from_str(obj.get("es"))
        fr = from_str(obj.get("fr"))
        ja = from_str(obj.get("ja"))
        ko = from_str(obj.get("ko"))
        ru = from_str(obj.get("ru"))
        zh = from_str(obj.get("zh"))
        return ItemDeliveryDescription(de, en, es, fr, ja, ko, ru, zh)

    def to_dict(self) -> dict:
        result: dict = {}
        result["de"] = from_str(self.de)
        result["en"] = from_str(self.en)
        result["es"] = from_str(self.es)
        result["fr"] = from_str(self.fr)
        result["ja"] = from_str(self.ja)
        result["ko"] = from_str(self.ko)
        result["ru"] = from_str(self.ru)
        result["zh"] = from_str(self.zh)
        return result


class ItemDeliveryIconID(Enum):
    INVENTORY = "inventory"


@dataclass
class InventoryTypeDescription:
    de: str
    en: str
    es: str
    fr: str
    ja: str
    ko: str
    ru: str
    zh: str

    @staticmethod
    def from_dict(obj: Any) -> 'InventoryTypeDescription':
        assert isinstance(obj, dict)
        de = from_str(obj.get("de"))
        en = from_str(obj.get("en"))
        es = from_str(obj.get("es"))
        fr = from_str(obj.get("fr"))
        ja = from_str(obj.get("ja"))
        ko = from_str(obj.get("ko"))
        ru = from_str(obj.get("ru"))
        zh = from_str(obj.get("zh"))
        return InventoryTypeDescription(de, en, es, fr, ja, ko, ru, zh)

    def to_dict(self) -> dict:
        result: dict = {}
        result["de"] = from_str(self.de)
        result["en"] = from_str(self.en)
        result["es"] = from_str(self.es)
        result["fr"] = from_str(self.fr)
        result["ja"] = from_str(self.ja)
        result["ko"] = from_str(self.ko)
        result["ru"] = from_str(self.ru)
        result["zh"] = from_str(self.zh)
        return result


@dataclass
class InventoryTypeTitle:
    de: str
    en: str
    es: str
    fr: str
    ja: str
    ko: str
    ru: str
    zh: str

    @staticmethod
    def from_dict(obj: Any) -> 'InventoryTypeTitle':
        assert isinstance(obj, dict)
        de = from_str(obj.get("de"))
        en = from_str(obj.get("en"))
        es = from_str(obj.get("es"))
        fr = from_str(obj.get("fr"))
        ja = from_str(obj.get("ja"))
        ko = from_str(obj.get("ko"))
        ru = from_str(obj.get("ru"))
        zh = from_str(obj.get("zh"))
        return InventoryTypeTitle(de, en, es, fr, ja, ko, ru, zh)

    def to_dict(self) -> dict:
        result: dict = {}
        result["de"] = from_str(self.de)
        result["en"] = from_str(self.en)
        result["es"] = from_str(self.es)
        result["fr"] = from_str(self.fr)
        result["ja"] = from_str(self.ja)
        result["ko"] = from_str(self.ko)
        result["ru"] = from_str(self.ru)
        result["zh"] = from_str(self.zh)
        return result


@dataclass
class InventoryTypeUnsetDescription:
    de: str
    en: str
    es: str
    fr: str
    ja: str
    ko: str
    ru: str
    zh: str

    @staticmethod
    def from_dict(obj: Any) -> 'InventoryTypeUnsetDescription':
        assert isinstance(obj, dict)
        de = from_str(obj.get("de"))
        en = from_str(obj.get("en"))
        es = from_str(obj.get("es"))
        fr = from_str(obj.get("fr"))
        ja = from_str(obj.get("ja"))
        ko = from_str(obj.get("ko"))
        ru = from_str(obj.get("ru"))
        zh = from_str(obj.get("zh"))
        return InventoryTypeUnsetDescription(de, en, es, fr, ja, ko, ru, zh)

    def to_dict(self) -> dict:
        result: dict = {}
        result["de"] = from_str(self.de)
        result["en"] = from_str(self.en)
        result["es"] = from_str(self.es)
        result["fr"] = from_str(self.fr)
        result["ja"] = from_str(self.ja)
        result["ko"] = from_str(self.ko)
        result["ru"] = from_str(self.ru)
        result["zh"] = from_str(self.zh)
        return result


@dataclass
class InventoryType:
    accepted_value_types: list[str]
    description: InventoryTypeDescription
    icon_id: ItemDeliveryIconID
    title: InventoryTypeTitle
    unset_description: InventoryTypeUnsetDescription

    @staticmethod
    def from_dict(obj: Any) -> 'InventoryType':
        assert isinstance(obj, dict)
        accepted_value_types = from_list(from_str, obj.get("acceptedValueTypes"))
        description = InventoryTypeDescription.from_dict(obj.get("description"))
        icon_id = ItemDeliveryIconID(obj.get("iconID"))
        title = InventoryTypeTitle.from_dict(obj.get("title"))
        unset_description = InventoryTypeUnsetDescription.from_dict(obj.get("unsetDescription"))
        return InventoryType(accepted_value_types, description, icon_id, title, unset_description)

    def to_dict(self) -> dict:
        result: dict = {}
        result["acceptedValueTypes"] = from_list(from_str, self.accepted_value_types)
        result["description"] = to_class(InventoryTypeDescription, self.description)
        result["iconID"] = to_enum(ItemDeliveryIconID, self.icon_id)
        result["title"] = to_class(InventoryTypeTitle, self.title)
        result["unsetDescription"] = to_class(InventoryTypeUnsetDescription, self.unset_description)
        return result


@dataclass
class ItemDeliveryTitle:
    de: str
    en: str
    es: str
    fr: str
    ja: str
    ko: str
    ru: str
    zh: str

    @staticmethod
    def from_dict(obj: Any) -> 'ItemDeliveryTitle':
        assert isinstance(obj, dict)
        de = from_str(obj.get("de"))
        en = from_str(obj.get("en"))
        es = from_str(obj.get("es"))
        fr = from_str(obj.get("fr"))
        ja = from_str(obj.get("ja"))
        ko = from_str(obj.get("ko"))
        ru = from_str(obj.get("ru"))
        zh = from_str(obj.get("zh"))
        return ItemDeliveryTitle(de, en, es, fr, ja, ko, ru, zh)

    def to_dict(self) -> dict:
        result: dict = {}
        result["de"] = from_str(self.de)
        result["en"] = from_str(self.en)
        result["es"] = from_str(self.es)
        result["fr"] = from_str(self.fr)
        result["ja"] = from_str(self.ja)
        result["ko"] = from_str(self.ko)
        result["ru"] = from_str(self.ru)
        result["zh"] = from_str(self.zh)
        return result


@dataclass
class ItemDelivery:
    delivery_location: DeliveryLocation
    description: ItemDeliveryDescription
    icon_id: ItemDeliveryIconID
    inventory_type: InventoryType
    title: ItemDeliveryTitle

    @staticmethod
    def from_dict(obj: Any) -> 'ItemDelivery':
        assert isinstance(obj, dict)
        delivery_location = DeliveryLocation.from_dict(obj.get("deliveryLocation"))
        description = ItemDeliveryDescription.from_dict(obj.get("description"))
        icon_id = ItemDeliveryIconID(obj.get("iconID"))
        inventory_type = InventoryType.from_dict(obj.get("inventoryType"))
        title = ItemDeliveryTitle.from_dict(obj.get("title"))
        return ItemDelivery(delivery_location, description, icon_id, inventory_type, title)

    def to_dict(self) -> dict:
        result: dict = {}
        result["deliveryLocation"] = to_class(DeliveryLocation, self.delivery_location)
        result["description"] = to_class(ItemDeliveryDescription, self.description)
        result["iconID"] = to_enum(ItemDeliveryIconID, self.icon_id)
        result["inventoryType"] = to_class(InventoryType, self.inventory_type)
        result["title"] = to_class(ItemDeliveryTitle, self.title)
        return result


@dataclass
class MatcherDescription:
    de: str
    en: str
    es: str
    fr: str
    ja: str
    ko: str
    ru: str
    zh: str

    @staticmethod
    def from_dict(obj: Any) -> 'MatcherDescription':
        assert isinstance(obj, dict)
        de = from_str(obj.get("de"))
        en = from_str(obj.get("en"))
        es = from_str(obj.get("es"))
        fr = from_str(obj.get("fr"))
        ja = from_str(obj.get("ja"))
        ko = from_str(obj.get("ko"))
        ru = from_str(obj.get("ru"))
        zh = from_str(obj.get("zh"))
        return MatcherDescription(de, en, es, fr, ja, ko, ru, zh)

    def to_dict(self) -> dict:
        result: dict = {}
        result["de"] = from_str(self.de)
        result["en"] = from_str(self.en)
        result["es"] = from_str(self.es)
        result["fr"] = from_str(self.fr)
        result["ja"] = from_str(self.ja)
        result["ko"] = from_str(self.ko)
        result["ru"] = from_str(self.ru)
        result["zh"] = from_str(self.zh)
        return result


@dataclass
class MatcherTitle:
    de: str
    en: str
    es: str
    fr: str
    ja: str
    ko: str
    ru: str
    zh: str

    @staticmethod
    def from_dict(obj: Any) -> 'MatcherTitle':
        assert isinstance(obj, dict)
        de = from_str(obj.get("de"))
        en = from_str(obj.get("en"))
        es = from_str(obj.get("es"))
        fr = from_str(obj.get("fr"))
        ja = from_str(obj.get("ja"))
        ko = from_str(obj.get("ko"))
        ru = from_str(obj.get("ru"))
        zh = from_str(obj.get("zh"))
        return MatcherTitle(de, en, es, fr, ja, ko, ru, zh)

    def to_dict(self) -> dict:
        result: dict = {}
        result["de"] = from_str(self.de)
        result["en"] = from_str(self.en)
        result["es"] = from_str(self.es)
        result["fr"] = from_str(self.fr)
        result["ja"] = from_str(self.ja)
        result["ko"] = from_str(self.ko)
        result["ru"] = from_str(self.ru)
        result["zh"] = from_str(self.zh)
        return result


@dataclass
class MatcherUnsetDescription:
    de: str
    en: str
    es: str
    fr: str
    ja: str
    ko: str
    ru: str
    zh: str

    @staticmethod
    def from_dict(obj: Any) -> 'MatcherUnsetDescription':
        assert isinstance(obj, dict)
        de = from_str(obj.get("de"))
        en = from_str(obj.get("en"))
        es = from_str(obj.get("es"))
        fr = from_str(obj.get("fr"))
        ja = from_str(obj.get("ja"))
        ko = from_str(obj.get("ko"))
        ru = from_str(obj.get("ru"))
        zh = from_str(obj.get("zh"))
        return MatcherUnsetDescription(de, en, es, fr, ja, ko, ru, zh)

    def to_dict(self) -> dict:
        result: dict = {}
        result["de"] = from_str(self.de)
        result["en"] = from_str(self.en)
        result["es"] = from_str(self.es)
        result["fr"] = from_str(self.fr)
        result["ja"] = from_str(self.ja)
        result["ko"] = from_str(self.ko)
        result["ru"] = from_str(self.ru)
        result["zh"] = from_str(self.zh)
        return result


@dataclass
class Matcher:
    accepted_value_types: list[str]
    description: MatcherDescription
    icon_id: str
    max_entries: int
    optional: bool
    title: MatcherTitle
    type: str
    unset_description: MatcherUnsetDescription

    @staticmethod
    def from_dict(obj: Any) -> 'Matcher':
        assert isinstance(obj, dict)
        accepted_value_types = from_list(from_str, obj.get("acceptedValueTypes"))
        description = MatcherDescription.from_dict(obj.get("description"))
        icon_id = from_str(obj.get("iconID"))
        max_entries = from_int(obj.get("maxEntries"))
        optional = from_bool(obj.get("optional"))
        title = MatcherTitle.from_dict(obj.get("title"))
        type = from_str(obj.get("type"))
        unset_description = MatcherUnsetDescription.from_dict(obj.get("unsetDescription"))
        return Matcher(accepted_value_types, description, icon_id, max_entries, optional, title, type, unset_description)

    def to_dict(self) -> dict:
        result: dict = {}
        result["acceptedValueTypes"] = from_list(from_str, self.accepted_value_types)
        result["description"] = to_class(MatcherDescription, self.description)
        result["iconID"] = from_str(self.icon_id)
        result["maxEntries"] = from_int(self.max_entries)
        result["optional"] = from_bool(self.optional)
        result["title"] = to_class(MatcherTitle, self.title)
        result["type"] = from_str(self.type)
        result["unsetDescription"] = to_class(MatcherUnsetDescription, self.unset_description)
        return result


@dataclass
class Parameter:
    key: str
    boolean: Boolean | None = None
    item_delivery: ItemDelivery | None = None
    matcher: Matcher | None = None

    @staticmethod
    def from_dict(obj: Any) -> 'Parameter':
        assert isinstance(obj, dict)
        key = from_str(obj.get("_key"))
        boolean = from_union([Boolean.from_dict, from_none], obj.get("boolean"))
        item_delivery = from_union([ItemDelivery.from_dict, from_none], obj.get("itemDelivery"))
        matcher = from_union([Matcher.from_dict, from_none], obj.get("matcher"))
        return Parameter(key, boolean, item_delivery, matcher)

    def to_dict(self) -> dict:
        result: dict = {}
        result["_key"] = from_str(self.key)
        if self.boolean is not None:
            result["boolean"] = from_union([lambda x: to_class(Boolean, x), from_none], self.boolean)
        if self.item_delivery is not None:
            result["itemDelivery"] = from_union([lambda x: to_class(ItemDelivery, x), from_none], self.item_delivery)
        if self.matcher is not None:
            result["matcher"] = from_union([lambda x: to_class(Matcher, x), from_none], self.matcher)
        return result


@dataclass
class ProgressDescription:
    de: str
    en: str
    es: str
    fr: str
    ja: str
    ko: str
    ru: str
    zh: str

    @staticmethod
    def from_dict(obj: Any) -> 'ProgressDescription':
        assert isinstance(obj, dict)
        de = from_str(obj.get("de"))
        en = from_str(obj.get("en"))
        es = from_str(obj.get("es"))
        fr = from_str(obj.get("fr"))
        ja = from_str(obj.get("ja"))
        ko = from_str(obj.get("ko"))
        ru = from_str(obj.get("ru"))
        zh = from_str(obj.get("zh"))
        return ProgressDescription(de, en, es, fr, ja, ko, ru, zh)

    def to_dict(self) -> dict:
        result: dict = {}
        result["de"] = from_str(self.de)
        result["en"] = from_str(self.en)
        result["es"] = from_str(self.es)
        result["fr"] = from_str(self.fr)
        result["ja"] = from_str(self.ja)
        result["ko"] = from_str(self.ko)
        result["ru"] = from_str(self.ru)
        result["zh"] = from_str(self.zh)
        return result


@dataclass
class RewardDescription:
    de: str
    en: str
    es: str
    fr: str
    ja: str
    ko: str
    ru: str
    zh: str

    @staticmethod
    def from_dict(obj: Any) -> 'RewardDescription':
        assert isinstance(obj, dict)
        de = from_str(obj.get("de"))
        en = from_str(obj.get("en"))
        es = from_str(obj.get("es"))
        fr = from_str(obj.get("fr"))
        ja = from_str(obj.get("ja"))
        ko = from_str(obj.get("ko"))
        ru = from_str(obj.get("ru"))
        zh = from_str(obj.get("zh"))
        return RewardDescription(de, en, es, fr, ja, ko, ru, zh)

    def to_dict(self) -> dict:
        result: dict = {}
        result["de"] = from_str(self.de)
        result["en"] = from_str(self.en)
        result["es"] = from_str(self.es)
        result["fr"] = from_str(self.fr)
        result["ja"] = from_str(self.ja)
        result["ko"] = from_str(self.ko)
        result["ru"] = from_str(self.ru)
        result["zh"] = from_str(self.zh)
        return result


@dataclass
class TargetDescription:
    de: str
    en: str
    es: str
    fr: str
    ja: str
    ko: str
    ru: str
    zh: str

    @staticmethod
    def from_dict(obj: Any) -> 'TargetDescription':
        assert isinstance(obj, dict)
        de = from_str(obj.get("de"))
        en = from_str(obj.get("en"))
        es = from_str(obj.get("es"))
        fr = from_str(obj.get("fr"))
        ja = from_str(obj.get("ja"))
        ko = from_str(obj.get("ko"))
        ru = from_str(obj.get("ru"))
        zh = from_str(obj.get("zh"))
        return TargetDescription(de, en, es, fr, ja, ko, ru, zh)

    def to_dict(self) -> dict:
        result: dict = {}
        result["de"] = from_str(self.de)
        result["en"] = from_str(self.en)
        result["es"] = from_str(self.es)
        result["fr"] = from_str(self.fr)
        result["ja"] = from_str(self.ja)
        result["ko"] = from_str(self.ko)
        result["ru"] = from_str(self.ru)
        result["zh"] = from_str(self.zh)
        return result


@dataclass
class ValueTitle:
    de: str
    en: str
    es: str
    fr: str
    ja: str
    ko: str
    ru: str
    zh: str

    @staticmethod
    def from_dict(obj: Any) -> 'ValueTitle':
        assert isinstance(obj, dict)
        de = from_str(obj.get("de"))
        en = from_str(obj.get("en"))
        es = from_str(obj.get("es"))
        fr = from_str(obj.get("fr"))
        ja = from_str(obj.get("ja"))
        ko = from_str(obj.get("ko"))
        ru = from_str(obj.get("ru"))
        zh = from_str(obj.get("zh"))
        return ValueTitle(de, en, es, fr, ja, ko, ru, zh)

    def to_dict(self) -> dict:
        result: dict = {}
        result["de"] = from_str(self.de)
        result["en"] = from_str(self.en)
        result["es"] = from_str(self.es)
        result["fr"] = from_str(self.fr)
        result["ja"] = from_str(self.ja)
        result["ko"] = from_str(self.ko)
        result["ru"] = from_str(self.ru)
        result["zh"] = from_str(self.zh)
        return result


@dataclass
class Value:
    key: Key
    content_tags: list[str]
    description: ValueDescription
    icon_id: str
    max_contributions_per_participant: MaxContributionsPerParticipant
    parameters: list[Parameter]
    progress_description: ProgressDescription
    reward_description: RewardDescription
    target_description: TargetDescription
    title: ValueTitle
    contribution_multiplier: ContributionMultiplier | None = None
    max_progress_per_contribution: MaxProgressPerContribution | None = None

    @staticmethod
    def from_dict(obj: Any) -> 'Value':
        assert isinstance(obj, dict)
        key = Key(obj.get("_key"))
        content_tags = from_list(from_str, obj.get("contentTags"))
        description = ValueDescription.from_dict(obj.get("description"))
        icon_id = from_str(obj.get("iconID"))
        max_contributions_per_participant = MaxContributionsPerParticipant.from_dict(obj.get("maxContributionsPerParticipant"))
        parameters = from_list(Parameter.from_dict, obj.get("parameters"))
        progress_description = ProgressDescription.from_dict(obj.get("progressDescription"))
        reward_description = RewardDescription.from_dict(obj.get("rewardDescription"))
        target_description = TargetDescription.from_dict(obj.get("targetDescription"))
        title = ValueTitle.from_dict(obj.get("title"))
        contribution_multiplier = from_union([ContributionMultiplier.from_dict, from_none], obj.get("contributionMultiplier"))
        max_progress_per_contribution = from_union([MaxProgressPerContribution.from_dict, from_none], obj.get("maxProgressPerContribution"))
        return Value(key, content_tags, description, icon_id, max_contributions_per_participant, parameters, progress_description, reward_description, target_description, title, contribution_multiplier, max_progress_per_contribution)

    def to_dict(self) -> dict:
        result: dict = {}
        result["_key"] = to_enum(Key, self.key)
        result["contentTags"] = from_list(from_str, self.content_tags)
        result["description"] = to_class(ValueDescription, self.description)
        result["iconID"] = from_str(self.icon_id)
        result["maxContributionsPerParticipant"] = to_class(MaxContributionsPerParticipant, self.max_contributions_per_participant)
        result["parameters"] = from_list(lambda x: to_class(Parameter, x), self.parameters)
        result["progressDescription"] = to_class(ProgressDescription, self.progress_description)
        result["rewardDescription"] = to_class(RewardDescription, self.reward_description)
        result["targetDescription"] = to_class(TargetDescription, self.target_description)
        result["title"] = to_class(ValueTitle, self.title)
        if self.contribution_multiplier is not None:
            result["contributionMultiplier"] = from_union([lambda x: to_class(ContributionMultiplier, x), from_none], self.contribution_multiplier)
        if self.max_progress_per_contribution is not None:
            result["maxProgressPerContribution"] = from_union([lambda x: to_class(MaxProgressPerContribution, x), from_none], self.max_progress_per_contribution)
        return result


@dataclass
class FreelanceJobSchema:
    key: int
    value: list[Value]

    @staticmethod
    def from_dict(obj: Any) -> 'FreelanceJobSchema':
        assert isinstance(obj, dict)
        key = from_int(obj.get("_key"))
        value = from_list(Value.from_dict, obj.get("_value"))
        return FreelanceJobSchema(key, value)

    def to_dict(self) -> dict:
        result: dict = {}
        result["_key"] = from_int(self.key)
        result["_value"] = from_list(lambda x: to_class(Value, x), self.value)
        return result


def freelance_job_schema_from_dict(s: Any) -> FreelanceJobSchema:
    return FreelanceJobSchema.from_dict(s)


def freelance_job_schema_to_dict(x: FreelanceJobSchema) -> Any:
    return to_class(FreelanceJobSchema, x)
// To parse this data:
//
//   import { Convert, FreelanceJobSchema } from "./FreelanceJobSchema";
//
//   const freelanceJobSchema = Convert.toFreelanceJobSchema(json);
//
// These functions will throw an error if the JSON doesn't
// match the expected interface, even if the JSON is valid.

export interface FreelanceJobSchema {
    _key:   number;
    _value: [Value, Value, Value, Value, Value, Value, Value, Value, Value, Value, ...Value[]];
    [property: string]: unknown;
}

export interface Value {
    _key:                           Key;
    contentTags:                    [string, string, ...string[]];
    contributionMultiplier?:        ContributionMultiplier;
    description:                    ValueDescription;
    iconID:                         string;
    maxContributionsPerParticipant: MaxContributionsPerParticipant;
    maxProgressPerContribution?:    MaxProgressPerContribution;
    parameters:                     [Parameter, ...Parameter[]];
    progressDescription:            ProgressDescription;
    rewardDescription:              RewardDescription;
    targetDescription:              TargetDescription;
    title:                          ValueTitle;
    [property: string]: unknown;
}

export type Key = "BoostShield" | "CaptureFWComplex" | "DamageShip" | "DefendFWComplex" | "DeliverItem" | "KillCapsuleer" | "KillNPC" | "MineOre" | "RepairArmor" | "ShipInsurance";

export interface ContributionMultiplier {
    defaultValue:     number;
    description:      ContributionMultiplierDescription;
    iconID:           ContributionMultiplierIconId;
    maxValue:         number;
    minValue:         number;
    title:            ContributionMultiplierTitle;
    unsetDescription: ContributionMultiplierUnsetDescription;
    [property: string]: unknown;
}

export interface ContributionMultiplierDescription {
    de: string;
    en: string;
    es: string;
    fr: string;
    ja: string;
    ko: string;
    ru: string;
    zh: string;
    [property: string]: unknown;
}

export type ContributionMultiplierIconId = "isk";

export interface ContributionMultiplierTitle {
    de: string;
    en: string;
    es: string;
    fr: string;
    ja: string;
    ko: string;
    ru: string;
    zh: string;
    [property: string]: unknown;
}

export interface ContributionMultiplierUnsetDescription {
    de: string;
    en: string;
    es: string;
    fr: string;
    ja: string;
    ko: string;
    ru: string;
    zh: string;
    [property: string]: unknown;
}

export interface ValueDescription {
    de: string;
    en: string;
    es: string;
    fr: string;
    ja: string;
    ko: string;
    ru: string;
    zh: string;
    [property: string]: unknown;
}

export interface MaxContributionsPerParticipant {
    description:      MaxContributionsPerParticipantDescription;
    iconID:           MaxContributionsPerParticipantIconId;
    title:            MaxContributionsPerParticipantTitle;
    unsetDescription: MaxContributionsPerParticipantUnsetDescription;
    [property: string]: unknown;
}

export interface MaxContributionsPerParticipantDescription {
    de: string;
    en: string;
    es: string;
    fr: string;
    ja: string;
    ko: string;
    ru: string;
    zh: string;
    [property: string]: unknown;
}

export type MaxContributionsPerParticipantIconId = "personal" | "isk";

export interface MaxContributionsPerParticipantTitle {
    de: string;
    en: string;
    es: string;
    fr: string;
    ja: string;
    ko: string;
    ru: string;
    zh: string;
    [property: string]: unknown;
}

export interface MaxContributionsPerParticipantUnsetDescription {
    de: string;
    en: string;
    es: string;
    fr: string;
    ja: string;
    ko: string;
    ru: string;
    zh: string;
    [property: string]: unknown;
}

export interface MaxProgressPerContribution {
    description:      MaxProgressPerContributionDescription;
    iconID:           ContributionMultiplierIconId;
    title:            MaxProgressPerContributionTitle;
    unsetDescription: MaxProgressPerContributionUnsetDescription;
    [property: string]: unknown;
}

export interface MaxProgressPerContributionDescription {
    de: string;
    en: string;
    es: string;
    fr: string;
    ja: string;
    ko: string;
    ru: string;
    zh: string;
    [property: string]: unknown;
}

export interface MaxProgressPerContributionTitle {
    de: string;
    en: string;
    es: string;
    fr: string;
    ja: string;
    ko: string;
    ru: string;
    zh: string;
    [property: string]: unknown;
}

export interface MaxProgressPerContributionUnsetDescription {
    de: string;
    en: string;
    es: string;
    fr: string;
    ja: string;
    ko: string;
    ru: string;
    zh: string;
    [property: string]: unknown;
}

export interface Parameter {
    _key:          string;
    boolean?:      Boolean;
    itemDelivery?: ItemDelivery;
    matcher?:      Matcher;
    [property: string]: unknown;
}

export interface Boolean {
    choiceLabel: ChoiceLabel;
    default:     boolean;
    description: BooleanDescription;
    iconID:      BooleanIconId;
    optionFalse: OptionFalse;
    optionTrue:  OptionTrue;
    title:       BooleanTitle;
    [property: string]: unknown;
}

export interface ChoiceLabel {
    de: string;
    en: string;
    es: string;
    fr: string;
    ja: string;
    ko: string;
    ru: string;
    zh: string;
    [property: string]: unknown;
}

export interface BooleanDescription {
    de: string;
    en: string;
    es: string;
    fr: string;
    ja: string;
    ko: string;
    ru: string;
    zh: string;
    [property: string]: unknown;
}

export type BooleanIconId = "person";

export interface OptionFalse {
    description: OptionFalseDescription;
    title:       OptionFalseTitle;
    [property: string]: unknown;
}

export interface OptionFalseDescription {
    de: string;
    en: string;
    es: string;
    fr: string;
    ja: string;
    ko: string;
    ru: string;
    zh: string;
    [property: string]: unknown;
}

export interface OptionFalseTitle {
    de: string;
    en: string;
    es: string;
    fr: string;
    ja: string;
    ko: string;
    ru: string;
    zh: string;
    [property: string]: unknown;
}

export interface OptionTrue {
    description: OptionTrueDescription;
    title:       OptionTrueTitle;
    [property: string]: unknown;
}

export interface OptionTrueDescription {
    de: string;
    en: string;
    es: string;
    fr: string;
    ja: string;
    ko: string;
    ru: string;
    zh: string;
    [property: string]: unknown;
}

export interface OptionTrueTitle {
    de: string;
    en: string;
    es: string;
    fr: string;
    ja: string;
    ko: string;
    ru: string;
    zh: string;
    [property: string]: unknown;
}

export interface BooleanTitle {
    de: string;
    en: string;
    es: string;
    fr: string;
    ja: string;
    ko: string;
    ru: string;
    zh: string;
    [property: string]: unknown;
}

export interface ItemDelivery {
    deliveryLocation: DeliveryLocation;
    description:      ItemDeliveryDescription;
    iconID:           ItemDeliveryIconId;
    inventoryType:    InventoryType;
    title:            ItemDeliveryTitle;
    [property: string]: unknown;
}

export interface DeliveryLocation {
    acceptedValueTypes: [AcceptedValueType, AcceptedValueType, ...AcceptedValueType[]];
    description:        DeliveryLocationDescription;
    iconID:             DeliveryLocationIconId;
    maxEntries:         number;
    title:              DeliveryLocationTitle;
    unsetDescription:   DeliveryLocationUnsetDescription;
    [property: string]: unknown;
}

export type AcceptedValueType = "station" | "structure";

export interface DeliveryLocationDescription {
    de: string;
    en: string;
    es: string;
    fr: string;
    ja: string;
    ko: string;
    ru: string;
    zh: string;
    [property: string]: unknown;
}

export type DeliveryLocationIconId = "location";

export interface DeliveryLocationTitle {
    de: string;
    en: string;
    es: string;
    fr: string;
    ja: string;
    ko: string;
    ru: string;
    zh: string;
    [property: string]: unknown;
}

export interface DeliveryLocationUnsetDescription {
    de: string;
    en: string;
    es: string;
    fr: string;
    ja: string;
    ko: string;
    ru: string;
    zh: string;
    [property: string]: unknown;
}

export interface ItemDeliveryDescription {
    de: string;
    en: string;
    es: string;
    fr: string;
    ja: string;
    ko: string;
    ru: string;
    zh: string;
    [property: string]: unknown;
}

export type ItemDeliveryIconId = "inventory";

export interface InventoryType {
    acceptedValueTypes: [string, string, ...string[]];
    description:        InventoryTypeDescription;
    iconID:             ItemDeliveryIconId;
    title:              InventoryTypeTitle;
    unsetDescription:   InventoryTypeUnsetDescription;
    [property: string]: unknown;
}

export interface InventoryTypeDescription {
    de: string;
    en: string;
    es: string;
    fr: string;
    ja: string;
    ko: string;
    ru: string;
    zh: string;
    [property: string]: unknown;
}

export interface InventoryTypeTitle {
    de: string;
    en: string;
    es: string;
    fr: string;
    ja: string;
    ko: string;
    ru: string;
    zh: string;
    [property: string]: unknown;
}

export interface InventoryTypeUnsetDescription {
    de: string;
    en: string;
    es: string;
    fr: string;
    ja: string;
    ko: string;
    ru: string;
    zh: string;
    [property: string]: unknown;
}

export interface ItemDeliveryTitle {
    de: string;
    en: string;
    es: string;
    fr: string;
    ja: string;
    ko: string;
    ru: string;
    zh: string;
    [property: string]: unknown;
}

export interface Matcher {
    acceptedValueTypes: [string, ...string[]];
    description:        MatcherDescription;
    iconID:             string;
    maxEntries:         number;
    optional:           boolean;
    title:              MatcherTitle;
    type:               string;
    unsetDescription:   MatcherUnsetDescription;
    [property: string]: unknown;
}

export interface MatcherDescription {
    de: string;
    en: string;
    es: string;
    fr: string;
    ja: string;
    ko: string;
    ru: string;
    zh: string;
    [property: string]: unknown;
}

export interface MatcherTitle {
    de: string;
    en: string;
    es: string;
    fr: string;
    ja: string;
    ko: string;
    ru: string;
    zh: string;
    [property: string]: unknown;
}

export interface MatcherUnsetDescription {
    de: string;
    en: string;
    es: string;
    fr: string;
    ja: string;
    ko: string;
    ru: string;
    zh: string;
    [property: string]: unknown;
}

export interface ProgressDescription {
    de: string;
    en: string;
    es: string;
    fr: string;
    ja: string;
    ko: string;
    ru: string;
    zh: string;
    [property: string]: unknown;
}

export interface RewardDescription {
    de: string;
    en: string;
    es: string;
    fr: string;
    ja: string;
    ko: string;
    ru: string;
    zh: string;
    [property: string]: unknown;
}

export interface TargetDescription {
    de: string;
    en: string;
    es: string;
    fr: string;
    ja: string;
    ko: string;
    ru: string;
    zh: string;
    [property: string]: unknown;
}

export interface ValueTitle {
    de: string;
    en: string;
    es: string;
    fr: string;
    ja: string;
    ko: string;
    ru: string;
    zh: string;
    [property: string]: unknown;
}

// Converts JSON strings to/from your types
// and asserts the results of JSON.parse at runtime
export class Convert {
    public static toFreelanceJobSchema(json: string): FreelanceJobSchema {
        return cast(JSON.parse(json), r("FreelanceJobSchema"));
    }

    public static freelanceJobSchemaToJson(value: FreelanceJobSchema): string {
        return JSON.stringify(uncast(value, r("FreelanceJobSchema")), null, 2);
    }
}

function invalidValue(typ: any, val: any, key: any, parent: any = ''): never {
    const prettyTyp = prettyTypeName(typ);
    const parentText = parent ? ` on ${parent}` : '';
    const keyText = key ? ` for key "${key}"` : '';
    throw Error(`Invalid value${keyText}${parentText}. Expected ${prettyTyp} but got ${JSON.stringify(val)}`);
}

function prettyTypeName(typ: any): string {
    if (Array.isArray(typ)) {
        if (typ.length === 2 && typ[0] === undefined) {
            return `an optional ${prettyTypeName(typ[1])}`;
        } else {
            return `one of [${typ.map(a => { return prettyTypeName(a); }).join(", ")}]`;
        }
    } else if (typeof typ === "object" && typ.literal !== undefined) {
        return typ.literal;
    } else {
        return typeof typ;
    }
}

function jsonToJSProps(typ: any): any {
    if (typ.jsonToJS === undefined) {
        const map: any = {};
        typ.props.forEach((p: any) => map[p.json] = { key: p.js, typ: p.typ });
        typ.jsonToJS = map;
    }
    return typ.jsonToJS;
}

function jsToJSONProps(typ: any): any {
    if (typ.jsToJSON === undefined) {
        const map: any = {};
        typ.props.forEach((p: any) => map[p.js] = { key: p.json, typ: p.typ });
        typ.jsToJSON = map;
    }
    return typ.jsToJSON;
}

function transform(val: any, typ: any, getProps: any, key: any = '', parent: any = ''): any {
    function transformPrimitive(typ: string, val: any): any {
        if (typeof typ === typeof val) return val;
        return invalidValue(typ, val, key, parent);
    }

    function transformUnion(typs: any[], val: any): any {
        // val must validate against one typ in typs
        const l = typs.length;
        for (let i = 0; i < l; i++) {
            const typ = typs[i];
            try {
                return transform(val, typ, getProps);
            } catch (_) {}
        }
        return invalidValue(typs, val, key, parent);
    }

    function transformEnum(cases: string[], val: any): any {
        if (cases.indexOf(val) !== -1) return val;
        return invalidValue(cases.map(a => { return l(a); }), val, key, parent);
    }

    function transformArray(typ: any, val: any): any {
        // val must be an array with no invalid elements
        if (!Array.isArray(val)) return invalidValue(l("array"), val, key, parent);
        return val.map(el => transform(el, typ, getProps));
    }

    function transformDate(val: any): any {
        if (val === null) {
            return null;
        }
        const d = new Date(val);
        if (isNaN(d.valueOf())) {
            return invalidValue(l("Date"), val, key, parent);
        }
        return d;
    }

    function transformObject(props: { [k: string]: any }, additional: any, val: any): any {
        if (val === null || typeof val !== "object" || Array.isArray(val)) {
            return invalidValue(l(ref || "object"), val, key, parent);
        }
        const result: any = {};
        Object.getOwnPropertyNames(props).forEach(key => {
            const prop = props[key];
            const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
            result[prop.key] = transform(v, prop.typ, getProps, key, ref);
        });
        Object.getOwnPropertyNames(val).forEach(key => {
            if (!Object.prototype.hasOwnProperty.call(props, key)) {
                result[key] = transform(val[key], additional, getProps, key, ref);
            }
        });
        return result;
    }

    if (typ === "any") return val;
    if (typ === null) {
        if (val === null) return val;
        return invalidValue(typ, val, key, parent);
    }
    if (typ === false) return invalidValue(typ, val, key, parent);
    let ref: any = undefined;
    while (typeof typ === "object" && typ.ref !== undefined) {
        ref = typ.ref;
        typ = typeMap[typ.ref];
    }
    if (Array.isArray(typ)) return transformEnum(typ, val);
    if (typeof typ === "object") {
        return typ.hasOwnProperty("unionMembers") ? transformUnion(typ.unionMembers, val)
            : typ.hasOwnProperty("arrayItems")    ? transformArray(typ.arrayItems, val)
            : typ.hasOwnProperty("props")         ? transformObject(getProps(typ), typ.additional, val)
            : invalidValue(typ, val, key, parent);
    }
    // Numbers can be parsed by Date but shouldn't be.
    if (typ === Date && typeof val !== "number") return transformDate(val);
    return transformPrimitive(typ, val);
}

function cast<T>(val: any, typ: any): T {
    return transform(val, typ, jsonToJSProps);
}

function uncast<T>(val: T, typ: any): any {
    return transform(val, typ, jsToJSONProps);
}

function l(typ: any) {
    return { literal: typ };
}

function a(typ: any) {
    return { arrayItems: typ };
}

function u(...typs: any[]) {
    return { unionMembers: typs };
}

function o(props: any[], additional: any) {
    return { props, additional };
}

function m(additional: any) {
    return { props: [], additional };
}

function r(name: string) {
    return { ref: name };
}

const typeMap: any = {
    "FreelanceJobSchema": o([
        { json: "_key", js: "_key", typ: 0 },
        { json: "_value", js: "_value", typ: a(r("Value")) },
    ], "any"),
    "Value": o([
        { json: "_key", js: "_key", typ: r("Key") },
        { json: "contentTags", js: "contentTags", typ: a("") },
        { json: "contributionMultiplier", js: "contributionMultiplier", typ: u(undefined, r("ContributionMultiplier")) },
        { json: "description", js: "description", typ: r("ValueDescription") },
        { json: "iconID", js: "iconID", typ: "" },
        { json: "maxContributionsPerParticipant", js: "maxContributionsPerParticipant", typ: r("MaxContributionsPerParticipant") },
        { json: "maxProgressPerContribution", js: "maxProgressPerContribution", typ: u(undefined, r("MaxProgressPerContribution")) },
        { json: "parameters", js: "parameters", typ: a(r("Parameter")) },
        { json: "progressDescription", js: "progressDescription", typ: r("ProgressDescription") },
        { json: "rewardDescription", js: "rewardDescription", typ: r("RewardDescription") },
        { json: "targetDescription", js: "targetDescription", typ: r("TargetDescription") },
        { json: "title", js: "title", typ: r("ValueTitle") },
    ], "any"),
    "ContributionMultiplier": o([
        { json: "defaultValue", js: "defaultValue", typ: 0 },
        { json: "description", js: "description", typ: r("ContributionMultiplierDescription") },
        { json: "iconID", js: "iconID", typ: r("ContributionMultiplierIconId") },
        { json: "maxValue", js: "maxValue", typ: 0 },
        { json: "minValue", js: "minValue", typ: 3.14 },
        { json: "title", js: "title", typ: r("ContributionMultiplierTitle") },
        { json: "unsetDescription", js: "unsetDescription", typ: r("ContributionMultiplierUnsetDescription") },
    ], "any"),
    "ContributionMultiplierDescription": o([
        { json: "de", js: "de", typ: "" },
        { json: "en", js: "en", typ: "" },
        { json: "es", js: "es", typ: "" },
        { json: "fr", js: "fr", typ: "" },
        { json: "ja", js: "ja", typ: "" },
        { json: "ko", js: "ko", typ: "" },
        { json: "ru", js: "ru", typ: "" },
        { json: "zh", js: "zh", typ: "" },
    ], "any"),
    "ContributionMultiplierTitle": o([
        { json: "de", js: "de", typ: "" },
        { json: "en", js: "en", typ: "" },
        { json: "es", js: "es", typ: "" },
        { json: "fr", js: "fr", typ: "" },
        { json: "ja", js: "ja", typ: "" },
        { json: "ko", js: "ko", typ: "" },
        { json: "ru", js: "ru", typ: "" },
        { json: "zh", js: "zh", typ: "" },
    ], "any"),
    "ContributionMultiplierUnsetDescription": o([
        { json: "de", js: "de", typ: "" },
        { json: "en", js: "en", typ: "" },
        { json: "es", js: "es", typ: "" },
        { json: "fr", js: "fr", typ: "" },
        { json: "ja", js: "ja", typ: "" },
        { json: "ko", js: "ko", typ: "" },
        { json: "ru", js: "ru", typ: "" },
        { json: "zh", js: "zh", typ: "" },
    ], "any"),
    "ValueDescription": o([
        { json: "de", js: "de", typ: "" },
        { json: "en", js: "en", typ: "" },
        { json: "es", js: "es", typ: "" },
        { json: "fr", js: "fr", typ: "" },
        { json: "ja", js: "ja", typ: "" },
        { json: "ko", js: "ko", typ: "" },
        { json: "ru", js: "ru", typ: "" },
        { json: "zh", js: "zh", typ: "" },
    ], "any"),
    "MaxContributionsPerParticipant": o([
        { json: "description", js: "description", typ: r("MaxContributionsPerParticipantDescription") },
        { json: "iconID", js: "iconID", typ: r("MaxContributionsPerParticipantIconId") },
        { json: "title", js: "title", typ: r("MaxContributionsPerParticipantTitle") },
        { json: "unsetDescription", js: "unsetDescription", typ: r("MaxContributionsPerParticipantUnsetDescription") },
    ], "any"),
    "MaxContributionsPerParticipantDescription": o([
        { json: "de", js: "de", typ: "" },
        { json: "en", js: "en", typ: "" },
        { json: "es", js: "es", typ: "" },
        { json: "fr", js: "fr", typ: "" },
        { json: "ja", js: "ja", typ: "" },
        { json: "ko", js: "ko", typ: "" },
        { json: "ru", js: "ru", typ: "" },
        { json: "zh", js: "zh", typ: "" },
    ], "any"),
    "MaxContributionsPerParticipantTitle": o([
        { json: "de", js: "de", typ: "" },
        { json: "en", js: "en", typ: "" },
        { json: "es", js: "es", typ: "" },
        { json: "fr", js: "fr", typ: "" },
        { json: "ja", js: "ja", typ: "" },
        { json: "ko", js: "ko", typ: "" },
        { json: "ru", js: "ru", typ: "" },
        { json: "zh", js: "zh", typ: "" },
    ], "any"),
    "MaxContributionsPerParticipantUnsetDescription": o([
        { json: "de", js: "de", typ: "" },
        { json: "en", js: "en", typ: "" },
        { json: "es", js: "es", typ: "" },
        { json: "fr", js: "fr", typ: "" },
        { json: "ja", js: "ja", typ: "" },
        { json: "ko", js: "ko", typ: "" },
        { json: "ru", js: "ru", typ: "" },
        { json: "zh", js: "zh", typ: "" },
    ], "any"),
    "MaxProgressPerContribution": o([
        { json: "description", js: "description", typ: r("MaxProgressPerContributionDescription") },
        { json: "iconID", js: "iconID", typ: r("ContributionMultiplierIconId") },
        { json: "title", js: "title", typ: r("MaxProgressPerContributionTitle") },
        { json: "unsetDescription", js: "unsetDescription", typ: r("MaxProgressPerContributionUnsetDescription") },
    ], "any"),
    "MaxProgressPerContributionDescription": o([
        { json: "de", js: "de", typ: "" },
        { json: "en", js: "en", typ: "" },
        { json: "es", js: "es", typ: "" },
        { json: "fr", js: "fr", typ: "" },
        { json: "ja", js: "ja", typ: "" },
        { json: "ko", js: "ko", typ: "" },
        { json: "ru", js: "ru", typ: "" },
        { json: "zh", js: "zh", typ: "" },
    ], "any"),
    "MaxProgressPerContributionTitle": o([
        { json: "de", js: "de", typ: "" },
        { json: "en", js: "en", typ: "" },
        { json: "es", js: "es", typ: "" },
        { json: "fr", js: "fr", typ: "" },
        { json: "ja", js: "ja", typ: "" },
        { json: "ko", js: "ko", typ: "" },
        { json: "ru", js: "ru", typ: "" },
        { json: "zh", js: "zh", typ: "" },
    ], "any"),
    "MaxProgressPerContributionUnsetDescription": o([
        { json: "de", js: "de", typ: "" },
        { json: "en", js: "en", typ: "" },
        { json: "es", js: "es", typ: "" },
        { json: "fr", js: "fr", typ: "" },
        { json: "ja", js: "ja", typ: "" },
        { json: "ko", js: "ko", typ: "" },
        { json: "ru", js: "ru", typ: "" },
        { json: "zh", js: "zh", typ: "" },
    ], "any"),
    "Parameter": o([
        { json: "_key", js: "_key", typ: "" },
        { json: "boolean", js: "boolean", typ: u(undefined, r("Boolean")) },
        { json: "itemDelivery", js: "itemDelivery", typ: u(undefined, r("ItemDelivery")) },
        { json: "matcher", js: "matcher", typ: u(undefined, r("Matcher")) },
    ], "any"),
    "Boolean": o([
        { json: "choiceLabel", js: "choiceLabel", typ: r("ChoiceLabel") },
        { json: "default", js: "default", typ: true },
        { json: "description", js: "description", typ: r("BooleanDescription") },
        { json: "iconID", js: "iconID", typ: r("BooleanIconId") },
        { json: "optionFalse", js: "optionFalse", typ: r("OptionFalse") },
        { json: "optionTrue", js: "optionTrue", typ: r("OptionTrue") },
        { json: "title", js: "title", typ: r("BooleanTitle") },
    ], "any"),
    "ChoiceLabel": o([
        { json: "de", js: "de", typ: "" },
        { json: "en", js: "en", typ: "" },
        { json: "es", js: "es", typ: "" },
        { json: "fr", js: "fr", typ: "" },
        { json: "ja", js: "ja", typ: "" },
        { json: "ko", js: "ko", typ: "" },
        { json: "ru", js: "ru", typ: "" },
        { json: "zh", js: "zh", typ: "" },
    ], "any"),
    "BooleanDescription": o([
        { json: "de", js: "de", typ: "" },
        { json: "en", js: "en", typ: "" },
        { json: "es", js: "es", typ: "" },
        { json: "fr", js: "fr", typ: "" },
        { json: "ja", js: "ja", typ: "" },
        { json: "ko", js: "ko", typ: "" },
        { json: "ru", js: "ru", typ: "" },
        { json: "zh", js: "zh", typ: "" },
    ], "any"),
    "OptionFalse": o([
        { json: "description", js: "description", typ: r("OptionFalseDescription") },
        { json: "title", js: "title", typ: r("OptionFalseTitle") },
    ], "any"),
    "OptionFalseDescription": o([
        { json: "de", js: "de", typ: "" },
        { json: "en", js: "en", typ: "" },
        { json: "es", js: "es", typ: "" },
        { json: "fr", js: "fr", typ: "" },
        { json: "ja", js: "ja", typ: "" },
        { json: "ko", js: "ko", typ: "" },
        { json: "ru", js: "ru", typ: "" },
        { json: "zh", js: "zh", typ: "" },
    ], "any"),
    "OptionFalseTitle": o([
        { json: "de", js: "de", typ: "" },
        { json: "en", js: "en", typ: "" },
        { json: "es", js: "es", typ: "" },
        { json: "fr", js: "fr", typ: "" },
        { json: "ja", js: "ja", typ: "" },
        { json: "ko", js: "ko", typ: "" },
        { json: "ru", js: "ru", typ: "" },
        { json: "zh", js: "zh", typ: "" },
    ], "any"),
    "OptionTrue": o([
        { json: "description", js: "description", typ: r("OptionTrueDescription") },
        { json: "title", js: "title", typ: r("OptionTrueTitle") },
    ], "any"),
    "OptionTrueDescription": o([
        { json: "de", js: "de", typ: "" },
        { json: "en", js: "en", typ: "" },
        { json: "es", js: "es", typ: "" },
        { json: "fr", js: "fr", typ: "" },
        { json: "ja", js: "ja", typ: "" },
        { json: "ko", js: "ko", typ: "" },
        { json: "ru", js: "ru", typ: "" },
        { json: "zh", js: "zh", typ: "" },
    ], "any"),
    "OptionTrueTitle": o([
        { json: "de", js: "de", typ: "" },
        { json: "en", js: "en", typ: "" },
        { json: "es", js: "es", typ: "" },
        { json: "fr", js: "fr", typ: "" },
        { json: "ja", js: "ja", typ: "" },
        { json: "ko", js: "ko", typ: "" },
        { json: "ru", js: "ru", typ: "" },
        { json: "zh", js: "zh", typ: "" },
    ], "any"),
    "BooleanTitle": o([
        { json: "de", js: "de", typ: "" },
        { json: "en", js: "en", typ: "" },
        { json: "es", js: "es", typ: "" },
        { json: "fr", js: "fr", typ: "" },
        { json: "ja", js: "ja", typ: "" },
        { json: "ko", js: "ko", typ: "" },
        { json: "ru", js: "ru", typ: "" },
        { json: "zh", js: "zh", typ: "" },
    ], "any"),
    "ItemDelivery": o([
        { json: "deliveryLocation", js: "deliveryLocation", typ: r("DeliveryLocation") },
        { json: "description", js: "description", typ: r("ItemDeliveryDescription") },
        { json: "iconID", js: "iconID", typ: r("ItemDeliveryIconId") },
        { json: "inventoryType", js: "inventoryType", typ: r("InventoryType") },
        { json: "title", js: "title", typ: r("ItemDeliveryTitle") },
    ], "any"),
    "DeliveryLocation": o([
        { json: "acceptedValueTypes", js: "acceptedValueTypes", typ: a(r("AcceptedValueType")) },
        { json: "description", js: "description", typ: r("DeliveryLocationDescription") },
        { json: "iconID", js: "iconID", typ: r("DeliveryLocationIconId") },
        { json: "maxEntries", js: "maxEntries", typ: 0 },
        { json: "title", js: "title", typ: r("DeliveryLocationTitle") },
        { json: "unsetDescription", js: "unsetDescription", typ: r("DeliveryLocationUnsetDescription") },
    ], "any"),
    "DeliveryLocationDescription": o([
        { json: "de", js: "de", typ: "" },
        { json: "en", js: "en", typ: "" },
        { json: "es", js: "es", typ: "" },
        { json: "fr", js: "fr", typ: "" },
        { json: "ja", js: "ja", typ: "" },
        { json: "ko", js: "ko", typ: "" },
        { json: "ru", js: "ru", typ: "" },
        { json: "zh", js: "zh", typ: "" },
    ], "any"),
    "DeliveryLocationTitle": o([
        { json: "de", js: "de", typ: "" },
        { json: "en", js: "en", typ: "" },
        { json: "es", js: "es", typ: "" },
        { json: "fr", js: "fr", typ: "" },
        { json: "ja", js: "ja", typ: "" },
        { json: "ko", js: "ko", typ: "" },
        { json: "ru", js: "ru", typ: "" },
        { json: "zh", js: "zh", typ: "" },
    ], "any"),
    "DeliveryLocationUnsetDescription": o([
        { json: "de", js: "de", typ: "" },
        { json: "en", js: "en", typ: "" },
        { json: "es", js: "es", typ: "" },
        { json: "fr", js: "fr", typ: "" },
        { json: "ja", js: "ja", typ: "" },
        { json: "ko", js: "ko", typ: "" },
        { json: "ru", js: "ru", typ: "" },
        { json: "zh", js: "zh", typ: "" },
    ], "any"),
    "ItemDeliveryDescription": o([
        { json: "de", js: "de", typ: "" },
        { json: "en", js: "en", typ: "" },
        { json: "es", js: "es", typ: "" },
        { json: "fr", js: "fr", typ: "" },
        { json: "ja", js: "ja", typ: "" },
        { json: "ko", js: "ko", typ: "" },
        { json: "ru", js: "ru", typ: "" },
        { json: "zh", js: "zh", typ: "" },
    ], "any"),
    "InventoryType": o([
        { json: "acceptedValueTypes", js: "acceptedValueTypes", typ: a("") },
        { json: "description", js: "description", typ: r("InventoryTypeDescription") },
        { json: "iconID", js: "iconID", typ: r("ItemDeliveryIconId") },
        { json: "title", js: "title", typ: r("InventoryTypeTitle") },
        { json: "unsetDescription", js: "unsetDescription", typ: r("InventoryTypeUnsetDescription") },
    ], "any"),
    "InventoryTypeDescription": o([
        { json: "de", js: "de", typ: "" },
        { json: "en", js: "en", typ: "" },
        { json: "es", js: "es", typ: "" },
        { json: "fr", js: "fr", typ: "" },
        { json: "ja", js: "ja", typ: "" },
        { json: "ko", js: "ko", typ: "" },
        { json: "ru", js: "ru", typ: "" },
        { json: "zh", js: "zh", typ: "" },
    ], "any"),
    "InventoryTypeTitle": o([
        { json: "de", js: "de", typ: "" },
        { json: "en", js: "en", typ: "" },
        { json: "es", js: "es", typ: "" },
        { json: "fr", js: "fr", typ: "" },
        { json: "ja", js: "ja", typ: "" },
        { json: "ko", js: "ko", typ: "" },
        { json: "ru", js: "ru", typ: "" },
        { json: "zh", js: "zh", typ: "" },
    ], "any"),
    "InventoryTypeUnsetDescription": o([
        { json: "de", js: "de", typ: "" },
        { json: "en", js: "en", typ: "" },
        { json: "es", js: "es", typ: "" },
        { json: "fr", js: "fr", typ: "" },
        { json: "ja", js: "ja", typ: "" },
        { json: "ko", js: "ko", typ: "" },
        { json: "ru", js: "ru", typ: "" },
        { json: "zh", js: "zh", typ: "" },
    ], "any"),
    "ItemDeliveryTitle": o([
        { json: "de", js: "de", typ: "" },
        { json: "en", js: "en", typ: "" },
        { json: "es", js: "es", typ: "" },
        { json: "fr", js: "fr", typ: "" },
        { json: "ja", js: "ja", typ: "" },
        { json: "ko", js: "ko", typ: "" },
        { json: "ru", js: "ru", typ: "" },
        { json: "zh", js: "zh", typ: "" },
    ], "any"),
    "Matcher": o([
        { json: "acceptedValueTypes", js: "acceptedValueTypes", typ: a("") },
        { json: "description", js: "description", typ: r("MatcherDescription") },
        { json: "iconID", js: "iconID", typ: "" },
        { json: "maxEntries", js: "maxEntries", typ: 0 },
        { json: "optional", js: "optional", typ: true },
        { json: "title", js: "title", typ: r("MatcherTitle") },
        { json: "type", js: "type", typ: "" },
        { json: "unsetDescription", js: "unsetDescription", typ: r("MatcherUnsetDescription") },
    ], "any"),
    "MatcherDescription": o([
        { json: "de", js: "de", typ: "" },
        { json: "en", js: "en", typ: "" },
        { json: "es", js: "es", typ: "" },
        { json: "fr", js: "fr", typ: "" },
        { json: "ja", js: "ja", typ: "" },
        { json: "ko", js: "ko", typ: "" },
        { json: "ru", js: "ru", typ: "" },
        { json: "zh", js: "zh", typ: "" },
    ], "any"),
    "MatcherTitle": o([
        { json: "de", js: "de", typ: "" },
        { json: "en", js: "en", typ: "" },
        { json: "es", js: "es", typ: "" },
        { json: "fr", js: "fr", typ: "" },
        { json: "ja", js: "ja", typ: "" },
        { json: "ko", js: "ko", typ: "" },
        { json: "ru", js: "ru", typ: "" },
        { json: "zh", js: "zh", typ: "" },
    ], "any"),
    "MatcherUnsetDescription": o([
        { json: "de", js: "de", typ: "" },
        { json: "en", js: "en", typ: "" },
        { json: "es", js: "es", typ: "" },
        { json: "fr", js: "fr", typ: "" },
        { json: "ja", js: "ja", typ: "" },
        { json: "ko", js: "ko", typ: "" },
        { json: "ru", js: "ru", typ: "" },
        { json: "zh", js: "zh", typ: "" },
    ], "any"),
    "ProgressDescription": o([
        { json: "de", js: "de", typ: "" },
        { json: "en", js: "en", typ: "" },
        { json: "es", js: "es", typ: "" },
        { json: "fr", js: "fr", typ: "" },
        { json: "ja", js: "ja", typ: "" },
        { json: "ko", js: "ko", typ: "" },
        { json: "ru", js: "ru", typ: "" },
        { json: "zh", js: "zh", typ: "" },
    ], "any"),
    "RewardDescription": o([
        { json: "de", js: "de", typ: "" },
        { json: "en", js: "en", typ: "" },
        { json: "es", js: "es", typ: "" },
        { json: "fr", js: "fr", typ: "" },
        { json: "ja", js: "ja", typ: "" },
        { json: "ko", js: "ko", typ: "" },
        { json: "ru", js: "ru", typ: "" },
        { json: "zh", js: "zh", typ: "" },
    ], "any"),
    "TargetDescription": o([
        { json: "de", js: "de", typ: "" },
        { json: "en", js: "en", typ: "" },
        { json: "es", js: "es", typ: "" },
        { json: "fr", js: "fr", typ: "" },
        { json: "ja", js: "ja", typ: "" },
        { json: "ko", js: "ko", typ: "" },
        { json: "ru", js: "ru", typ: "" },
        { json: "zh", js: "zh", typ: "" },
    ], "any"),
    "ValueTitle": o([
        { json: "de", js: "de", typ: "" },
        { json: "en", js: "en", typ: "" },
        { json: "es", js: "es", typ: "" },
        { json: "fr", js: "fr", typ: "" },
        { json: "ja", js: "ja", typ: "" },
        { json: "ko", js: "ko", typ: "" },
        { json: "ru", js: "ru", typ: "" },
        { json: "zh", js: "zh", typ: "" },
    ], "any"),
    "Key": [
        "BoostShield",
        "CaptureFWComplex",
        "DamageShip",
        "DefendFWComplex",
        "DeliverItem",
        "KillCapsuleer",
        "KillNPC",
        "MineOre",
        "RepairArmor",
        "ShipInsurance",
    ],
    "ContributionMultiplierIconId": [
        "isk",
    ],
    "MaxContributionsPerParticipantIconId": [
        "isk",
        "personal",
    ],
    "BooleanIconId": [
        "person",
    ],
    "AcceptedValueType": [
        "station",
        "structure",
    ],
    "DeliveryLocationIconId": [
        "location",
    ],
    "ItemDeliveryIconId": [
        "inventory",
    ],
};