private UserInputLookup Load(IUserInputLookupOwner owner, string lookupName)
        {
            var    filename = GetUserInputLookupFileName(lookupName);
            var    lookup   = new UserInputLookup(owner, lookupName);
            string json;

            try
            {
                json = File.ReadAllText(filename);
            }
            catch (FileNotFoundException)
            {
                return(lookup);
            }
            try
            {
                lookup = JsonConvert
                         .DeserializeObject <UserInputLookup>(json);
                lookup.Owner = owner;
            }
            catch (JsonSerializationException ex)
            {
                lookup.SelectedItem = ex.Message;
                return(lookup);
            }
            lookup.Name = lookupName;
            foreach (var value in lookup)
            {
                lookup.Add(value);
            }
            return(lookup);
        }
        private void UpdateRegistry(UserInputLookup lookup)
        {
            if (lookup == null)
            {
                return;
            }

            if (_registry.ContainsKey(lookup.Name))
            {
                _registry[lookup.Name] = lookup;
            }
            else
            {
                _registry.Add(lookup.Name, lookup);
            }
        }
        private void Update(UserInputLookup lookup)
        {
            if (lookup == null || lookup == UserInputLookup.Empty)
            {
                return;
            }
            string lookupName;

            if (lookup is UserInputLookup userInputLookup)
            {
                lookupName = userInputLookup.Name;
                var    filename = GetUserInputLookupFileName(lookupName);
                string json     = JsonConvert.SerializeObject(userInputLookup);
                File.WriteAllText(filename, json);
                UpdateRegistry(userInputLookup);
            }
        }