@Override
  public boolean removeIf(@NotNull Predicate<? super E> filter) {
    Set<DisposableWrapper> removedWrappers = new ReferenceOpenHashSet<>(myWrappedList.size());
    boolean result = myWrappedList.removeIf(disposableWrapper -> {
      if (filter.test(disposableWrapper.delegate) && (disposableWrapper.makeUnique() || removedWrappers.contains(disposableWrapper))) {
        removedWrappers.add(disposableWrapper);
        return true;
      }
      return false;
    });

    for (DisposableWrapper disposableWrapper : removedWrappers) {
      disposableWrapper.disposeWithoutRemoval();
    }
    return result;
  }
@Override
  public boolean removeIf(@NotNull Predicate<? super E> filter)