sclass OrderedMultiIterator> {
srecord noeq Stream(Iterator iterator, A element) is Comparable> {
public int compareTo(Stream stream) {
ret element.compareTo(stream.element);
}
}
new TreeSet streams;
void add(Iterator iterator) {
if (iterator == null || !iterator.hasNext()) ret;
A element = iterator.next();
streams.add(new Stream(iterator, element));
}
void addAll(Iterable extends Iterator> iterators) {
fOr (it : iterators) add(it);
}
}