// goes well with the stage {} macro (see tok_stages) srecord Stages(new L stages) is Steppable, Runnable { replace Stage with Runnable. int iStage; Stage stage; public bool step() { ret iStage <= l(stages) && trueBecause(callF(stage = _get(stages, iStage++))); } void stage(Stage stage) { stages.add(stage); } void stage(S name, Stage stage) { stages.add(runnableWithCustomToString(name, stage)); } run { stepAll(this); } }