@Override
  public synchronized boolean add(T o) {
    Collection<T> toRemove = new ArrayList<>();
    for (T existing : myCollection) {
      if (isAncestor(existing, o)) {
        return false;
      }
      if (isAncestor(o, existing)) {
        toRemove.add(existing);
      }
    }
    myCollection.removeAll(toRemove);
    myCollection.add(o);
    return true;
  }
@Override
  public synchronized boolean add(T o)