internal static ShortCodeCost DeserializeShortCodeCost(JsonElement element)
        {
            double           amount           = default;
            string           currencyCode     = default;
            BillingFrequency billingFrequency = default;

            foreach (var property in element.EnumerateObject())
            {
                if (property.NameEquals("amount"))
                {
                    amount = property.Value.GetDouble();
                    continue;
                }
                if (property.NameEquals("currencyCode"))
                {
                    currencyCode = property.Value.GetString();
                    continue;
                }
                if (property.NameEquals("billingFrequency"))
                {
                    billingFrequency = new BillingFrequency(property.Value.GetString());
                    continue;
                }
            }
            return(new ShortCodeCost(amount, currencyCode, billingFrequency));
        }
        public ShortCodeCost(double amount, string currencyCode, BillingFrequency billingFrequency)
        {
            if (currencyCode == null)
            {
                throw new ArgumentNullException(nameof(currencyCode));
            }

            Amount           = amount;
            CurrencyCode     = currencyCode;
            BillingFrequency = billingFrequency;
        }
 void IUtf8JsonSerializable.Write(Utf8JsonWriter writer)
 {
     writer.WriteStartObject();
     writer.WritePropertyName("amount");
     writer.WriteNumberValue(Amount);
     writer.WritePropertyName("currencyCode");
     writer.WriteStringValue(CurrencyCode);
     writer.WritePropertyName("billingFrequency");
     writer.WriteStringValue(BillingFrequency.ToString());
     writer.WriteEndObject();
 }