static long stupidFib_collab(ICollab collab, int n) { int timeout = secondsToMS_int(10); new Var var; stupidFib_collab(collab, n, result -> { var.set(result); collab.done(); }); collab.run(); ret waitForVarToBeNotNullWithTimeout(var, timeout); } svoid stupidFib_collab(ICollab collab, int n, IVF1 continuation) { if (n < 3) ret with continuation.get(1L); new PairCollector collector; swap method collector.complete(a, b) { continuation.get(a+b); } collab.addWork(-> stupidFib_collab(collab, n-1, collector.setterForA())); collab.addWork(-> stupidFib_collab(collab, n-2, collector.setterForB())); }