Iterator iter = cbe.getOrderedEvaluations().iterator();
iter = cbe.getOrderedEvaluations().iterator();
  private void selectActions(CostBenefitEvaluation cbe, ActionSelectionKnob knob) {    rankAvailableActions(cbe, knob);    boolean done = false;    Set alreadyActiveActions = findActiveIrrevocableActions(cbe);    Set alreadySelectedVariants = new HashSet();    Iterator iter = cbe.getOrderedEvaluations().iterator();    if (logger.isInfoEnabled()) logger.info(cbe.dumpAvailableVariants());    while (iter.hasNext()) {        ActionEvaluation thisActionEvaluation = (ActionEvaluation) iter.next();        Action thisAction = thisActionEvaluation.getAction();        Set permittedVariants = new HashSet();          Iterator iter3 = thisActionEvaluation.getOrderedAvaliableVariants().iterator();        boolean pickedSomeVariant = false;        while (iter3.hasNext() && !pickedSomeVariant) {            VariantEvaluation proposedVariant = (VariantEvaluation)iter3.next();            if (logger.isDebugEnabled()) logger.debug(proposedVariant + " doesNotConflict: " + thisActionEvaluation.doesNotConflict(proposedVariant, alreadyActiveActions, alreadySelectedVariants));            if (thisActionEvaluation.doesNotConflict(proposedVariant, alreadyActiveActions, alreadySelectedVariants)) {                if ((proposedVariant.getPredictedBenefit() > 0.0) || (thisActionEvaluation.mustSelectOne())) {                    pickedSomeVariant = true;                    alreadySelectedVariants.add(proposedVariant);                    proposedVariant.setChosen();                    if (logger.isInfoEnabled()) logger.info("Selected: " + proposedVariant.toString() + "for: " + thisAction.getAssetID().toString());                    if ((!thisAction.getPermittedValues().contains(proposedVariant.getVariantName()))                            && (thisAction.getValue() == null                                  || !thisAction.getValue().getAction().equals(proposedVariant.getVariantName())                                || !thisAction.getValue().isActive())) {                        permittedVariants.add(proposedVariant);                        publishAdd(new SelectedAction(thisAction, permittedVariants, Math.round(knob.getPatienceFactor()*proposedVariant.getExpectedTransitionTime()), cbe));                        if (logger.isInfoEnabled()) logger.info("Enabling: " + proposedVariant.toString() + "for: " + thisAction.getAssetID().toString());                    }                }            }        }    }    if (alreadySelectedVariants.isEmpty()) { // could not find anything useful to do        if (logger.isInfoEnabled()) logger.info("Done processing: " + cbe.dumpAvailableVariants());        publishRemove(cbe);    }  }