final Boolean[] trueFalse = ArrayUtils.asObjects(new boolean[] {false, true});
final Integer[] maintainValues = ArrayUtils.asObjects(new int[] {1, 5, 10, 20});
final Integer[] maxPerMachineValues = ArrayUtils.asObjects(new int[] {-1, 0, 1, 5, 10});
Object[][] combinations = ArrayUtils.combinations(new Object[][] {trueFalse, maintainValues, maxPerMachineValues});
ProvisionMonitor monitor = pmMon.getServices().get(0);
for (Object[] combination : combinations) {
boolean fixed = (Boolean) combination[0];
int maintain = (Integer) combination[1];
int maxPerMachine = (Integer) combination[2];
if (!fixed) {