abstract sclass Convergent extends ItIt {
A value;
bool stepped, done;
public bool hasNext() {
if (done) false;
if (!stepped) {
stepped = true;
step();
}
ret !done;
}
public A next() {
assertTrue(hasNext());
stepped = false;
ret value;
}
abstract void step();
}