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