/// <summary>
        /// Updates answer choice with new data.
        /// </summary>
        /// <param name="destination"></param>
        /// <param name="source"></param>
        public static void UpdateWith(this SelectionAnswerChoice destination, SelectionAnswerChoice source)
        {
            destination.Description = source.Description;
            destination.IsOpenEnded = source.IsOpenEnded;
            destination.Sort        = source.Sort;

            var localizedString = source.LocalizedStrings.FirstOrDefault();

            if (localizedString != null)
            {
                destination.AddOrUpdateLocalizedString(localizedString);
            }
        }
        /// <summary>
        /// Updates fields of answer choice in destination with values from source.
        /// </summary>
        /// <param name="answerChoice"></param>
        /// <param name="localizedString"></param>
        public static void AddOrUpdateLocalizedString(this SelectionAnswerChoice answerChoice, SelectionAnswerChoiceString localizedString)
        {
            var localizedStringEntity =
                answerChoice.LocalizedStrings.FirstOrDefault(
                    s => s.Language.Equals(localizedString.Language));

            if (localizedStringEntity == null)
            {
                answerChoice.LocalizedStrings.Add(localizedString);
            }
            else
            {
                localizedStringEntity.UpdateWith(localizedString);
            }
        }
        /// <summary>
        /// Includes new or updates existed answer in answer set.
        /// </summary>
        public static void AddOrUpdateAnswerChoice(this SelectionAnswerSet answerSet, SelectionAnswerChoice answerChoice)
        {
            if (answerChoice == null)
            {
                throw new ArgumentNullException("answerChoice");
            }

            var answerChoiceEntity =
                answerSet.SelectionAnswerChoices.FirstOrDefault(
                    a => !answerChoice.Id.IsEmpty() && a.Id == answerChoice.Id);

            if (answerChoiceEntity == null)
            {
                answerSet.SelectionAnswerChoices.Add(answerChoice);
            }
            else
            {
                answerChoiceEntity.UpdateWith(answerChoice);
            }
        }