static ItIt<S> uniqueIteratorCI(Iterator<S> it) {
  Set<S> set = ciSet();
  ret iff(() -> {
    while licensed {
      if (!it.hasNext()) ret endMarker();
      S a = it.next();
      if (set.add(a)) ret a;
    }
    ret endMarker();
  });
}