static long stupidFib_collab(ICollab collab, int n) { ret collab_computeLong2(collab, receiver -> stupidFib_collab(collab, n, receiver)); } svoid stupidFib_collab(ICollab collab, int n, LongConsumer continuation) { // switch to serial if small enough work unit if (n < 24) ret stupidFib(n); // recursion base if (n < 3) ret with continuation.accept(1L); // recursion step var collector = longPairCollector((a, b) -> continuation.accept(a+b)); collab.addWork(-> stupidFib_collab(collab, n-1, collector.setterForA())); collab.addWork(-> stupidFib_collab(collab, n-2, collector.setterForB())); }