throw new IllegalStateException("Node exists, that is not part of a clique. " + varNode.toString());
}
int bestWeight = -1;
int clique = -1;
// finds the smallest node, that contains all the parents
for ( int j = cliques.nextSetBit(0); j >= 0; j = cliques.nextSetBit( j+ 1 ) ) {
JunctionTreeClique jtNode = jtNodes[j];
// if the node has parents, we find the small clique it's in.
// If it has parents then is jtNode a supserset of parents, visa-vis is parents a subset of jtNode
if ( (count == 0 || OpenBitSet.andNotCount(parents, jtNode.getBitSet()) == 0 ) && ( clique == -1 || jtNode.getBitSet().cardinality() < bestWeight ) ) {