sclass PStack is Steppable { new ProbabilisticScheduler scheduler; class SingleStack extends VStack is Runnable { double probability; *(double *probability, PStackComputable computable) { super(computable); } run { if (step()) // re-add myself to scheduler to continue scheduler.add(probability, this); } } void addComputation(double probability default 1.0, PStackComputable computable) { scheduler.add(probability, new SingleStack(probability, computable)); } public bool step() { ret scheduler.step(); } }