public static DefiniteAssignmentBitSet operator & (DefiniteAssignmentBitSet a, DefiniteAssignmentBitSet b)
{
if (AreEqual (a, b))
return a;
DefiniteAssignmentBitSet res;
if (a.large_bits == null) {
res = new DefiniteAssignmentBitSet (a);
res.bits &= (b.bits & ~copy_on_write_flag);
return res;
}
res = new DefiniteAssignmentBitSet (a);
res.Clone ();
var dest = res.large_bits;
var src = b.large_bits;
for (int i = 0; i < dest.Length; ++i) {
dest[i] &= src[i];
}
return res;
}