/// <summary>
        /// Syncs the outlook calendar item.
        /// </summary>
        /// <param name="outlookCalendarItem">The outlook calendar item.</param>
        /// <param name="googleCalendarItems">The google calendar items.</param>
        private void SyncOutlookCalendarItem(AppointmentItem outlookCalendarItem, IEnumerable<EventEntry> googleCalendarItems)
        {
            var mergeables = googleCalendarItems.Mergeable(outlookCalendarItem).ToList();

            EventEntry googleCalendarItem;
            if (mergeables.Any())
            {
                googleCalendarItem = mergeables.First();
                var changed = googleCalendarItem.MergeWith(outlookCalendarItem);

                try
                {
                    if (changed) googleCalendarItem = this.Repository.GoogleData.CalendarService.Update(googleCalendarItem);
                }
                catch (GDataRequestException ex)
                {
                    var response = ex.Response as HttpWebResponse;
                    if (response != null && response.StatusCode != HttpStatusCode.Conflict)
                    {
                        // TODO: Add functionality to resolve update conflict.
                        throw;
                    }
                }
            }
            else
            {
                googleCalendarItem = new EventEntry();
                var changed = googleCalendarItem.MergeWith(outlookCalendarItem);
                if (changed) googleCalendarItem = this.Repository.GoogleData.CalendarService.Insert(ApplicationData.GoogleCalendarUri, googleCalendarItem);
            }

            var outlookChanged = outlookCalendarItem.UserProperties.SetProperty("GoogleId", googleCalendarItem.EventId);
            if (outlookChanged)
                outlookCalendarItem.Save();
        }