static A applyUntilStable(A a, O f) { while true { A b = cast callF(f, a); if (eq(a, b)) ret b; a = b; } }