public async Task <JsonDocument> GetStateAsync(string name, string?partition   = null,
                                                       UserCredentials?userCredentials = null, CancellationToken cancellationToken = default)
        {
            var value = await GetStateInternalAsync(name, partition, userCredentials, cancellationToken).ConfigureAwait(false);

            await using var stream = new MemoryStream();
            await using var writer = new Utf8JsonWriter(stream);
            var serializer = new ValueSerializer();

            serializer.Write(writer, value, new JsonSerializerOptions());
            stream.Position = 0;
            await writer.FlushAsync(cancellationToken).ConfigureAwait(false);

            return(JsonDocument.Parse(stream));
        }
        public async Task <T> GetResultAsync <T>(string name, string?partition           = null,
                                                 JsonSerializerOptions?serializerOptions = null, UserCredentials?userCredentials = null,
                                                 CancellationToken cancellationToken     = default)
        {
            var value = await GetResultInternalAsync(name, partition, userCredentials, cancellationToken).ConfigureAwait(false);

            await using var stream = new MemoryStream();
            await using var writer = new Utf8JsonWriter(stream);
            var serializer = new ValueSerializer();

            serializer.Write(writer, value, new JsonSerializerOptions());
            await writer.FlushAsync(cancellationToken).ConfigureAwait(false);

            stream.Position = 0;

            return(JsonSerializer.Deserialize <T>(stream.ToArray(), serializerOptions));
        }
        public async Task <T> GetStateAsync <T>(string name, string partition           = default,
                                                JsonSerializerOptions serializerOptions = default, UserCredentials userCredentials = default,
                                                CancellationToken cancellationToken     = default)
        {
            var value = await GetStateInternalAsync(name, partition, userCredentials, cancellationToken);

            await using var stream = new MemoryStream();
            await using var writer = new Utf8JsonWriter(stream);
            var serializer = new ValueSerializer();

            serializer.Write(writer, value, new JsonSerializerOptions());
            await writer.FlushAsync(cancellationToken);

            stream.Position = 0;

            return(JsonSerializer.Deserialize <T>(stream.ToArray(), serializerOptions));
        }