public async Task SaveAsync(Account account, string serviceId, Uri uri)
        {
            if (account == null)
            {
                throw new ArgumentNullException(nameof(account));
            }
            if (account.Username?.Length == 0)
            {
                throw new ArgumentOutOfRangeException(nameof(account), "Username cannot be empty");
            }
            if (serviceId?.Length == 0)
            {
                throw new ArgumentNullException(nameof(serviceId));
            }

            byte[] data = Encoding.UTF8.GetBytes(uri == null ? account.Serialize() : account.Serialize(uri));
            byte[] prot = (await DataProtectionExtensions.ProtectAsync(data.AsBuffer()).ConfigureAwait(false)).ToArray();

            var path = GetAccountPath(account, serviceId);

            var localFolder = ApplicationData.Current.LocalFolder;
            var file        = await localFolder.CreateFileAsync(path, CreationCollisionOption.OpenIfExists).AsTask().ConfigureAwait(false);

            using (var stream = await file.OpenStreamForWriteAsync().ConfigureAwait(false))
                using (var writer = new BinaryWriter(stream))
                {
                    writer.Write((Int32)prot.Length);
                    writer.Write(prot);
                }
        }
        public override async Task SaveAsync(Account account, string serviceId)
        {
            byte[] data = Encoding.UTF8.GetBytes(account.Serialize());
            byte[] prot = (await DataProtectionExtensions.ProtectAsync(data.AsBuffer()).ConfigureAwait(false)).ToArray();

            var path = GetAccountPath(account, serviceId);

            var localFolder = ApplicationData.Current.LocalFolder;
            var file        = await localFolder.CreateFileAsync(path, CreationCollisionOption.OpenIfExists).AsTask().ConfigureAwait(false);

            using (var stream = await file.OpenStreamForWriteAsync().ConfigureAwait(false))
                using (var writer = new BinaryWriter(stream))
                {
                    writer.Write((Int32)prot.Length);
                    writer.Write(prot);
                }
        }