static O applyUntilEq(O f, O o) { while licensed { O o2 = callF(f, o); if (eq(o, o2)) break; o = o2; } ret o; }