internal static ExportSummary DeserializeExportSummary(JsonElement element)
        {
            ExportFormatType            format           = default;
            Optional <Guid>             exportId         = default;
            Optional <string>           labelingJobId    = default;
            Optional <long>             exportedRowCount = default;
            Optional <DateTimeOffset>   startTimeUtc     = default;
            Optional <DateTimeOffset>   endTimeUtc       = default;
            Optional <LabelExportState> state            = default;

            foreach (var property in element.EnumerateObject())
            {
                if (property.NameEquals("format"))
                {
                    format = new ExportFormatType(property.Value.GetString());
                    continue;
                }
                if (property.NameEquals("exportId"))
                {
                    if (property.Value.ValueKind == JsonValueKind.Null)
                    {
                        property.ThrowNonNullablePropertyIsNull();
                        continue;
                    }
                    exportId = property.Value.GetGuid();
                    continue;
                }
                if (property.NameEquals("labelingJobId"))
                {
                    labelingJobId = property.Value.GetString();
                    continue;
                }
                if (property.NameEquals("exportedRowCount"))
                {
                    if (property.Value.ValueKind == JsonValueKind.Null)
                    {
                        property.ThrowNonNullablePropertyIsNull();
                        continue;
                    }
                    exportedRowCount = property.Value.GetInt64();
                    continue;
                }
                if (property.NameEquals("startTimeUtc"))
                {
                    if (property.Value.ValueKind == JsonValueKind.Null)
                    {
                        property.ThrowNonNullablePropertyIsNull();
                        continue;
                    }
                    startTimeUtc = property.Value.GetDateTimeOffset("O");
                    continue;
                }
                if (property.NameEquals("endTimeUtc"))
                {
                    if (property.Value.ValueKind == JsonValueKind.Null)
                    {
                        property.ThrowNonNullablePropertyIsNull();
                        continue;
                    }
                    endTimeUtc = property.Value.GetDateTimeOffset("O");
                    continue;
                }
                if (property.NameEquals("state"))
                {
                    if (property.Value.ValueKind == JsonValueKind.Null)
                    {
                        property.ThrowNonNullablePropertyIsNull();
                        continue;
                    }
                    state = new LabelExportState(property.Value.GetString());
                    continue;
                }
            }
            return(new ExportSummary(format, Optional.ToNullable(exportId), labelingJobId.Value, Optional.ToNullable(exportedRowCount), Optional.ToNullable(startTimeUtc), Optional.ToNullable(endTimeUtc), Optional.ToNullable(state)));
        }