public void Remove(State state)
        {
            if (state == null)
            {
                return;
            }

            if (DefaultStates.Contains(state.Abbreviation))
            {
                DefaultStates.Remove(state.Abbreviation);
            }

            this.PropertyChanged += (o, e) =>
            {
                if (string.Equals(e.PropertyName, "DefaultStates", StringComparison.OrdinalIgnoreCase))
                {
                    InitLazySelectedStates();
                }
            };
        }
        public void AddState(string state)
        {
            if (string.IsNullOrEmpty(state))
            {
                return;
            }

            if (!DefaultStates.Contains(state))
            {
                DefaultStates.Add(state);
            }

            this.PropertyChanged += (o, e) =>
            {
                if (string.Equals(e.PropertyName, "DefaultStates", StringComparison.OrdinalIgnoreCase))
                {
                    InitLazySelectedStates();
                }
            };
        }
        public void AddStates(IEnumerable <string> states)
        {
            if (states == null || !states.Any())
            {
                return;
            }

            foreach (var state in states)
            {
                if (!DefaultStates.Contains(state))
                {
                    DefaultStates.Add(state);
                }
            }

            this.PropertyChanged += (o, e) =>
            {
                if (string.Equals(e.PropertyName, "DefaultStates", StringComparison.OrdinalIgnoreCase))
                {
                    InitLazySelectedStates();
                }
            };
        }