public IListObserver <T> Subscribe(HandleItemAdded <T> add, HandleItemRemoved <T> remove)
        {
            var observer = new ListObserver <T>(add, remove);

            Subscribe(observer);

            return(observer);
        }
        public IListObserver <T> Subscribe(Action listChanged)
        {
            var observer = new ListObserver <T>(added => listChanged(), removed => listChanged());

            Subscribe(observer);

            return(observer);
        }