@Override
public void caseACompSetExpIR(ACompSetExpIR node) throws AnalysisException
{
SStmIR enclosingStm = transAssistant.getEnclosingStm(node, "set comprehension");
SExpIR first = node.getFirst();
SExpIR predicate = node.getPredicate();
STypeIR type = node.getType();
ITempVarGen tempVarNameGen = transAssistant.getInfo().getTempVarNameGen();
String var = tempVarNameGen.nextVarName(prefixes.setComp());
ComplexCompStrategy strategy = consSetCompStrategy(first, predicate, type, tempVarNameGen, var);
List<SMultipleBindIR> bindings = filterBindList(node, node.getBindings());
ABlockStmIR block = transAssistant.consComplexCompIterationBlock(bindings, tempVarNameGen, strategy, iteVarPrefixes);
if (block.getStatements().isEmpty())
{
AEnumSetExpIR emptySet = new AEnumSetExpIR();
emptySet.setType(type.clone());
transAssistant.replaceNodeWith(node, emptySet);
} else
{
replaceCompWithTransformation(enclosingStm, block, type, var, node);
}
block.apply(this);
}