public IDisposable BeginChanging()
        {
            if (_changing)
            {
                return(DisposeAction.Empty());
            }

            _changing = true;
            return(new DisposeAction(
                       () =>
            {
                _changing = false;
                RaiseChanged();
            }));
        }