private ValidationResult ValidateOption(object target, ConfigurationOptionModel model, ConfigurationIdentity configIdentity, IEnumerable <ConfigurationSet> configurationSets)
        {
            var results = new List <ValidationResult>();
            var options = target as IEnumerable;

            if (target == null)
            {
                return(new ValidationResult(ValidationStrings.InvalidOptionType(model.Type)));
            }
            var duplicateChecker = new HashSet <string>();

            foreach (var option in options)
            {
                var key = model.GetKeyFromObject(option);
                if (!duplicateChecker.Add(key))
                {
                    results.Add(new ValidationResult(ValidationStrings.DuplicateOptionKeys(model.Name, key)));
                }

                results.Add(ValidateProperties(option, model.ConfigurationProperties, configIdentity, configurationSets));
            }
            return(new ValidationResult(results));
        }