class $lName implements CSProcess { $lAttributes public $lName ($lParamDeclConstructor) { $lConstructorBody } public void run() { $lMethodRun } } CSProcess left_$index = new $lName ($lParameters); class $rName implements CSProcess { $rAttributes public $rName ($rParamDeclConstructor) { $rConstructorBody } public void run() { $rMethodRun } } CSProcess right_$index = new $rName ($rParameters); CSProcess[] processes_$index = new CSProcess[] { left_$index, right_$index }; (new Parallel(processes_$index)).run(); $mergeVars