Returns a new Iterable with deduplicated elements.
Iterable<T> deduplicated() sync* { Set<T> set = {}; for (T e in this) { if (!set.contains(e)) { set.add(e); yield e; } } }