@Override
 public void notifyChanged(Notification notification) {
   if (isMarkerEvent(notification) && target instanceof EObject) {
     EObject parent = ((EObject) target).eContainer();
     if (parent != null) parent.eNotify(notification);
   }
 }
 @Override
 public void redo() {
   eObject.eNotify(msgStart);
   super.redo();
   eObject.eNotify(msgEnd);
 }
 @Override
 public void execute() {
   eObject.eNotify(msgStart);
   super.execute();
   eObject.eNotify(msgEnd);
 }
 /**
  * @param source
  * @param feature
  * @param target
  */
 private void sendRemoveManyNotification(
     EObject source, EStructuralFeature feature, Object oldTarget) {
   source.eNotify(
       new ENotificationImpl(
           (InternalEObject) source, Notification.REMOVE_MANY, feature, oldTarget, null));
 }
 /**
  * @param source
  * @param feature
  * @param target
  */
 private void sendAddNotification(EObject source, EStructuralFeature feature, Object target) {
   source.eNotify(
       new ENotificationImpl((InternalEObject) source, Notification.ADD, feature, null, target));
 }
 /**
  * @param source
  * @param feature
  * @param target
  */
 private void sendSetNotification(
     EObject source, EStructuralFeature feature, Object oldTarget, Object target) {
   source.eNotify(
       new ENotificationImpl(
           (InternalEObject) source, Notification.SET, feature, oldTarget, target));
 }