@Override
  public boolean remove(@Nullable Object obj) {
    List<DisposableWrapper> removedWrappers = new ArrayList<>(1);
    boolean result = myWrappedList.removeIf(disposableWrapper -> {
      if (disposableWrapper.delegate.equals(obj) &&
          (removedWrappers.isEmpty() && disposableWrapper.makeUnique() || removedWrappers.contains(disposableWrapper))) {
        removedWrappers.add(disposableWrapper);
        return true;
      }
      return false;
    });

    for (DisposableWrapper disposableWrapper : removedWrappers) {
      disposableWrapper.disposeWithoutRemoval();
    }
    return result;
  }
@Override
  public boolean remove(@Nullable Object obj)