public void Set(int index)
{
if (index < 0)
throw new ArgumentOutOfRangeException("index");
int element = index / BitsPerElement;
if (element >= _data.Length)
Array.Resize(ref _data, Math.Max(_data.Length * 2, element + 1));
_data[element] |= 1UL << (index % BitsPerElement);
}