{
    if (isNotificationRequired())
    {
      boolean oldIsSet = isSet();
      E object = doMove(targetIndex, sourceIndex);
      dispatchNotification
        (createNotification
           (Notification.MOVE, 
            sourceIndex,
            object, 
            targetIndex,
            oldIsSet));
      return object;
    }
    else
    {
      return doMove(targetIndex, sourceIndex);
    }
  }