private async Task RefreshAsync()
        {
            var gists = await gistClientService.GetGistsAsync();

            Gists.RemoveRange(Gists.Where(g => g.GetType() == typeof(CreateGistViewModel)).ToList());

            var newGists      = gists.Except(Gists.Select(g => g.Gist), gistEqualityComparer).ToList();
            var deletedGists  = Gists.Where(g => !gists.Contains(g.Gist, gistEqualityComparer)).ToList();
            var existingGists = Gists.Where(g => gists.Contains(g.Gist, gistEqualityComparer)).ToList();

            Gists.RemoveRange(deletedGists);
            Gists.AddRange(newGists.Select(ng => new GistViewModel(ng, gistClientService, AsyncOperationStatusManager, ErrorHandler)));

            foreach (var existingGist in existingGists)
            {
                HandleExistingGist(existingGist, gists.Single(g => g.Id == existingGist.Gist.Id));
            }
        }