static A grabValueAndCancel(VF1> r) { new Var var; withCancelPoint(voidfunc(CancelPoint cp) { callF(r, voidfunc(A a) { var.set(a); cancelTo(cp) }); }); ret var!; }