private async Task <JObject> MergeAsync(string key, string value)
        {
            var oldValue = await GetAsync(key).ConfigureAwait(false);

            var newValue = default(string);

            if (oldValue == null)
            {
                newValue = value;
            }
            else
            {
                var oldJson = new JObject(new JProperty(key, oldValue));
                var newJson = new JObject(new JProperty(key, value));
                AsyncStorageHelpers.DeepMergeInto(oldJson, newJson);
                newValue = ((JToken)oldJson[key]).ToString();
            }
            return(await SetAsync(key, newValue).ConfigureAwait(false));
        }
        private async Task <JObject> MergeAsync(string key, string value)
        {
            var oldValue = await GetAsync(key).ConfigureAwait(false);

            var newValue = default(string);

            if (oldValue == null)
            {
                newValue = value;
            }
            else
            {
                var oldJson = JObject.Parse(oldValue);
                var newJson = JObject.Parse(value);
                AsyncStorageHelpers.DeepMergeInto(oldJson, newJson);
                newValue = oldJson.ToString(Formatting.None);
            }

            return(await SetAsync(key, newValue).ConfigureAwait(false));
        }