public override Container AndNot(ArrayContainer x)
{
BitsetContainer answer = (BitsetContainer) Clone();
int c = x.Cardinality;
for (int k = 0; k < c; ++k)
{
ushort v = x.Content[k];
uint i = (uint) (Utility.ToIntUnsigned(v) >> 6);
long w = answer.Bitmap[i];
long aft = w & (~(1L << v));
answer.Bitmap[i] = aft;
answer.Cardinality -= (int) ((w ^ aft) >> v);
}
if (answer.Cardinality <= ArrayContainer.DEFAULT_MAX_SIZE)
{
return answer.ToArrayContainer();
}
return answer;
}