{
      int size = size();
      if (size > 0)
      {
        Object [] oldData = delegateToArray();
        int oldSize = size;
        doClear(size, oldData);
        NotificationChain notifications = createNotificationChain(oldSize);
        for (int i = 0; i < oldSize; ++i)
        {
          @SuppressWarnings("unchecked") E object = (E)oldData[i];
          notifications = inverseRemove(object, notifications);
        }
        if (notifications != null) notifications.dispatch();
      }
      else 
      {
        doClear();
      }
    }