public virtual BitSet Or(BitSet a)
{
BitSet s = (BitSet)this.Clone();
s.OrInPlace(a);
return s;
}
public BitSet GetDescendants(int rule) { BitSet descendants = new BitSet(); descendants.Or(children[rule]); while (true) { int cardinality = descendants.Cardinality(); for (int i = descendants.NextSetBit(0); i >= 0; i = descendants.NextSetBit(i + 1)) { descendants.Or(children[i]); } if (descendants.Cardinality() == cardinality) { // nothing changed break; } } return descendants; }