public HashSet<GeneratorNode> spawn(Constant op) { HashSet<GeneratorNode> spawnedSet, outSet = new HashSet<GeneratorNode>(); // TODO: true and false are checked by comparing their // string representations; there should be a more graceful // way // to check for true and false if (op.getSymbol() == Operator.m_trueAtom.getSymbol()) { // Constant TRUE, just pass on the recursive evaluation spawnedSet = spawn(); if (spawnedSet != null) { foreach (GeneratorNode gn in spawnedSet) { outSet.Add(gn); } } } else if (op.getSymbol() == Operator.m_falseAtom.getSymbol()) { } // Constant FALSE, return empty set /*else { // This should never happen! All atoms should evaluate // down // to either true or false. assert(false); }*/ return outSet; }