if (result) {
if (positions != null) {
int collectionSize = collection.size();
NotificationImpl notification = (collectionSize == 1 ? createNotification(Notification.REMOVE, collection.iterator().next(), null, positions[0], oldIsSet): createNotification(Notification.REMOVE_MANY, collection, positions, positions[0], oldIsSet));
NotificationChain notifications = createNotificationChain(collectionSize);
if (hasInverse()) {
for (Iterator<? > i = collection.iterator(); i.hasNext();) {
@SuppressWarnings("unchecked")E object = (E) i.next();
notifications = inverseRemove(object, notifications);
}
if (notifications == null) {
dispatchNotification(notification);
}
else {
notifications.add(notification);
notifications.dispatch();
}
}
else {
if (notifications == null) {
dispatchNotification(notification);
}
else {
notifications.add(notification);
notifications.dispatch();
}
}
}
else
if (hasInverse()) {
NotificationChain notifications = createNotificationChain(collection.size());
for (Iterator<? > i = collection.iterator(); i.hasNext();) {
@SuppressWarnings("unchecked")E object = (E) i.next();
notifications = inverseRemove(object, notifications);
}
if (notifications != null)
notifications.dispatch();
}
return true;
}
else {
return false;
}
|