protected override void LoadControlState(object savedState)
 {
     if (savedState != null)
     {
         Pair p = savedState as Pair;
         if (p != null)
         {
             base.LoadControlState(p.First);
             AddressState state = p.Second as AddressState;
             if (state != null)
             {
                 _address = state.Address;
                 _showUserSaved = state.ShowUserSaved;
                 _showDescription = state.ShowDescription;
                 _hasChanged = state.HasChanged;
                 Settings = state.Settings;
             }
         }
         else
         {
             if (savedState is AddressState)
             {
                 AddressState state = (AddressState) savedState;
                 _address = state.Address;
                 _showUserSaved = state.ShowUserSaved;
                 _showDescription = state.ShowDescription;
                 _hasChanged = state.HasChanged;
                 Settings = state.Settings;
             }
             else
                 base.LoadControlState(savedState);
         }
     }
 }
        protected override object SaveControlState()
        {
            object obj = base.SaveControlState();

            if (_address != null)
            {
                AddressState state = new AddressState {Address = (AddressInfo) _address, ShowUserSaved = _showUserSaved, ShowDescription = _showDescription, HasChanged = _hasChanged, Settings = _settings};

                if (obj != null)
                    return new Pair(obj, state);

                return (state);
            }

            return obj;
        }