@Override
  public boolean remove(Object o) {
    while (true) {
      Object[] elements = get();
      Object[] newElements = createArrayRemove(elements, o);
      if (newElements == null) {
        return false;
      }
      if (replaceArray(elements, newElements)) return true;
    }
  }
@Override
  public boolean remove(Object o)