public boolean add(@NotNull T object) {
    synchronized (reference) {
      List<T> list = reference.get();
      if (list != null) return add(predicate, list, object);
      reference.set(new SmartList<>(object));
      return true;
    }
  }
public boolean add(@NotNull T object)