{
    if (isNotificationRequired())
    {
      boolean oldIsSet = isSet();
      doAddUnique(index, object);
      NotificationImpl notification = createNotification(Notification.ADD, null, object, index, oldIsSet);
      if (hasInverse())
      {
        NotificationChain notifications = inverseAdd(object, null);
        if (hasShadow())
        {
          notifications = shadowAdd(object, notifications);
        }
        if (notifications == null)
        {
          dispatchNotification(notification);
        }
        else
        {
          notifications.add(notification);
          notifications.dispatch();
        }
      }
      else
      {
        dispatchNotification(notification);
      }
    }
    else
    {
      doAddUnique(index, object);
      if (hasInverse())
      {
        NotificationChain notifications = inverseAdd(object, null);
        if (notifications != null) notifications.dispatch();
      }
    }
  }