/// <summary>
        /// Removes an id.
        /// </summary>
        private void PositiveRemove(long number)
        {
            if (_positiveFlags == null)
            {
                _positiveFlags = new SparseBitArray32(_size, _blockSize);
            }

            if (_positiveFlags[number])
            { // there is one less positive flag.
                _count--;
            }
            _positiveFlags[number] = false;
        }
        /// <summary>
        /// Adds an id.
        /// </summary>
        private void PositiveAdd(long number)
        {
            if (_positiveFlags == null)
            {
                _positiveFlags = new SparseBitArray32(_size, _blockSize);
            }

            if (!_positiveFlags[number])
            { // there is a new positive flag.
                _count++;
            }
            _positiveFlags[number] = true;
        }
        /// <summary>
        /// Adds an id.
        /// </summary>
        private void NegativeAdd(long number)
        {
            if (_negativeFlags == null)
            {
                _negativeFlags = new SparseBitArray32(_size, _blockSize);
            }

            if (!_negativeFlags[number])
            { // there is one more negative flag.
                _count++;
            }
            _negativeFlags[number] = true;
        }
 public Enumerator(SparseBitArray32 array)
 {
     _array   = array;
     _current = -1;
 }
 /// <summary>
 /// Clears this index.
 /// </summary>
 public void Clear()
 {
     _negativeFlags = null;
     _positiveFlags = null;
 }