private void run(Variable[] variables, List<VariableValue> values) throws Exception { if (variables.length > 0) { Variable variable = variables[0]; Variable[] rest = rest(variables); for (VariableValue value : variable.getValues()) { List<VariableValue> values2 = new ArrayList<VariableValue>(values); values2.add(value); run(rest, values2); } } else { SimpleScenarioStats stats0 = stats.next(values); for (MulticastParams p : params) { for (VariableValue value : values) { value.setup(p); } MulticastSet set = new MulticastSet(stats0, factory, p); stats0.setup(p); set.run(); for (VariableValue value : values) { value.teardown(p); } } System.out.print("#"); System.out.flush(); } }