internal static AssetConversion DeserializeAssetConversion(JsonElement element)
        {
            string id = default;
            AssetConversionOptions           settings = default;
            Optional <AssetConversionOutput> output   = default;
            RemoteRenderingServiceError      error    = default;
            AssetConversionStatus            status   = default;
            DateTimeOffset creationTime = default;

            foreach (var property in element.EnumerateObject())
            {
                if (property.NameEquals("id"))
                {
                    id = property.Value.GetString();
                    continue;
                }
                if (property.NameEquals("settings"))
                {
                    settings = AssetConversionOptions.DeserializeAssetConversionOptions(property.Value);
                    continue;
                }
                if (property.NameEquals("output"))
                {
                    if (property.Value.ValueKind == JsonValueKind.Null)
                    {
                        property.ThrowNonNullablePropertyIsNull();
                        continue;
                    }
                    output = AssetConversionOutput.DeserializeAssetConversionOutput(property.Value);
                    continue;
                }
                if (property.NameEquals("error"))
                {
                    if (property.Value.ValueKind == JsonValueKind.Null)
                    {
                        error = null;
                        continue;
                    }
                    error = RemoteRenderingServiceError.DeserializeRemoteRenderingServiceError(property.Value);
                    continue;
                }
                if (property.NameEquals("status"))
                {
                    status = new AssetConversionStatus(property.Value.GetString());
                    continue;
                }
                if (property.NameEquals("creationTime"))
                {
                    creationTime = property.Value.GetDateTimeOffset("O");
                    continue;
                }
            }
            return(new AssetConversion(id, settings, output.Value, error, status, creationTime));
        }
        internal static RenderingSession DeserializeRenderingSession(JsonElement element)
        {
            string                 id = default;
            Optional <int>         arrInspectorPort    = default;
            Optional <int>         handshakePort       = default;
            Optional <int>         elapsedTimeMinutes  = default;
            Optional <string>      hostname            = default;
            Optional <int>         maxLeaseTimeMinutes = default;
            RenderingServerSize    size                  = default;
            RenderingSessionStatus status                = default;
            Optional <float>       teraflops             = default;
            Optional <RemoteRenderingServiceError> error = default;
            Optional <DateTimeOffset> creationTime       = default;

            foreach (var property in element.EnumerateObject())
            {
                if (property.NameEquals("id"))
                {
                    id = property.Value.GetString();
                    continue;
                }
                if (property.NameEquals("arrInspectorPort"))
                {
                    if (property.Value.ValueKind == JsonValueKind.Null)
                    {
                        property.ThrowNonNullablePropertyIsNull();
                        continue;
                    }
                    arrInspectorPort = property.Value.GetInt32();
                    continue;
                }
                if (property.NameEquals("handshakePort"))
                {
                    if (property.Value.ValueKind == JsonValueKind.Null)
                    {
                        property.ThrowNonNullablePropertyIsNull();
                        continue;
                    }
                    handshakePort = property.Value.GetInt32();
                    continue;
                }
                if (property.NameEquals("elapsedTimeMinutes"))
                {
                    if (property.Value.ValueKind == JsonValueKind.Null)
                    {
                        property.ThrowNonNullablePropertyIsNull();
                        continue;
                    }
                    elapsedTimeMinutes = property.Value.GetInt32();
                    continue;
                }
                if (property.NameEquals("hostname"))
                {
                    hostname = property.Value.GetString();
                    continue;
                }
                if (property.NameEquals("maxLeaseTimeMinutes"))
                {
                    if (property.Value.ValueKind == JsonValueKind.Null)
                    {
                        property.ThrowNonNullablePropertyIsNull();
                        continue;
                    }
                    maxLeaseTimeMinutes = property.Value.GetInt32();
                    continue;
                }
                if (property.NameEquals("size"))
                {
                    size = new RenderingServerSize(property.Value.GetString());
                    continue;
                }
                if (property.NameEquals("status"))
                {
                    status = new RenderingSessionStatus(property.Value.GetString());
                    continue;
                }
                if (property.NameEquals("teraflops"))
                {
                    if (property.Value.ValueKind == JsonValueKind.Null)
                    {
                        property.ThrowNonNullablePropertyIsNull();
                        continue;
                    }
                    teraflops = property.Value.GetSingle();
                    continue;
                }
                if (property.NameEquals("error"))
                {
                    if (property.Value.ValueKind == JsonValueKind.Null)
                    {
                        error = null;
                        continue;
                    }
                    error = RemoteRenderingServiceError.DeserializeRemoteRenderingServiceError(property.Value);
                    continue;
                }
                if (property.NameEquals("creationTime"))
                {
                    if (property.Value.ValueKind == JsonValueKind.Null)
                    {
                        property.ThrowNonNullablePropertyIsNull();
                        continue;
                    }
                    creationTime = property.Value.GetDateTimeOffset("O");
                    continue;
                }
            }
            return(new RenderingSession(id, Optional.ToNullable(arrInspectorPort), Optional.ToNullable(handshakePort), Optional.ToNullable(elapsedTimeMinutes), hostname.Value, Optional.ToNullable(maxLeaseTimeMinutes), size, status, Optional.ToNullable(teraflops), error.Value, Optional.ToNullable(creationTime)));
        }