protected sealed override void OnClear()
 {
     foreach (T current in this)
     {
         MemberDefinitionCollection <T> .Detach(current);
     }
 }
 protected sealed override void OnRemove(T item, int index)
 {
     MemberDefinitionCollection <T> .Detach(item);
 }