internal Certificate(string thumbprint, string thumbprintAlgorithm, string url, CertificateState?state, DateTimeOffset?stateTransitionTime, CertificateState?previousState, DateTimeOffset?previousStateTransitionTime, string publicData, DeleteCertificateError deleteCertificateError)
 {
     Thumbprint          = thumbprint;
     ThumbprintAlgorithm = thumbprintAlgorithm;
     Url   = url;
     State = state;
     StateTransitionTime         = stateTransitionTime;
     PreviousState               = previousState;
     PreviousStateTransitionTime = previousStateTransitionTime;
     PublicData             = publicData;
     DeleteCertificateError = deleteCertificateError;
 }
        internal static Certificate DeserializeCertificate(JsonElement element)
        {
            string                 thumbprint          = default;
            string                 thumbprintAlgorithm = default;
            string                 url   = default;
            CertificateState?      state = default;
            DateTimeOffset?        stateTransitionTime         = default;
            CertificateState?      previousState               = default;
            DateTimeOffset?        previousStateTransitionTime = default;
            string                 publicData             = default;
            DeleteCertificateError deleteCertificateError = default;

            foreach (var property in element.EnumerateObject())
            {
                if (property.NameEquals("thumbprint"))
                {
                    if (property.Value.ValueKind == JsonValueKind.Null)
                    {
                        continue;
                    }
                    thumbprint = property.Value.GetString();
                    continue;
                }
                if (property.NameEquals("thumbprintAlgorithm"))
                {
                    if (property.Value.ValueKind == JsonValueKind.Null)
                    {
                        continue;
                    }
                    thumbprintAlgorithm = property.Value.GetString();
                    continue;
                }
                if (property.NameEquals("url"))
                {
                    if (property.Value.ValueKind == JsonValueKind.Null)
                    {
                        continue;
                    }
                    url = property.Value.GetString();
                    continue;
                }
                if (property.NameEquals("state"))
                {
                    if (property.Value.ValueKind == JsonValueKind.Null)
                    {
                        continue;
                    }
                    state = property.Value.GetString().ToCertificateState();
                    continue;
                }
                if (property.NameEquals("stateTransitionTime"))
                {
                    if (property.Value.ValueKind == JsonValueKind.Null)
                    {
                        continue;
                    }
                    stateTransitionTime = property.Value.GetDateTimeOffset("S");
                    continue;
                }
                if (property.NameEquals("previousState"))
                {
                    if (property.Value.ValueKind == JsonValueKind.Null)
                    {
                        continue;
                    }
                    previousState = property.Value.GetString().ToCertificateState();
                    continue;
                }
                if (property.NameEquals("previousStateTransitionTime"))
                {
                    if (property.Value.ValueKind == JsonValueKind.Null)
                    {
                        continue;
                    }
                    previousStateTransitionTime = property.Value.GetDateTimeOffset("S");
                    continue;
                }
                if (property.NameEquals("publicData"))
                {
                    if (property.Value.ValueKind == JsonValueKind.Null)
                    {
                        continue;
                    }
                    publicData = property.Value.GetString();
                    continue;
                }
                if (property.NameEquals("deleteCertificateError"))
                {
                    if (property.Value.ValueKind == JsonValueKind.Null)
                    {
                        continue;
                    }
                    deleteCertificateError = DeleteCertificateError.DeserializeDeleteCertificateError(property.Value);
                    continue;
                }
            }
            return(new Certificate(thumbprint, thumbprintAlgorithm, url, state, stateTransitionTime, previousState, previousStateTransitionTime, publicData, deleteCertificateError));
        }