public void clear() {
   super.clear();
   OnCollectionChanged();
 }
 public boolean addAll(int index, Collection<? extends T> c) {
   boolean b = super.addAll(index, c);
   OnCollectionChanged();
   return b;
 }
 @Override
 public boolean remove(Object o) {
   boolean b = super.remove(o);
   OnCollectionChanged();
   return b;
 }
 @Override
 public T set(int index, T element) {
   T t = super.set(index, element);
   OnCollectionChanged();
   return t;
 }
 @Override
 public void add(int index, T element) {
   super.add(index, element);
   OnCollectionChanged();
 }
 @Override
 public boolean add(T e) {
   boolean b = super.add(e);
   OnCollectionChanged();
   return b;
 }
 protected void OnCollectionChanged() {
   OnCollectionChanged(new NotifyCollectionChangedEventArgs());
 }