code: func (b *Bitmap) Flip(start, end uint64) *Bitmap {
  	result := NewBitmap()
  	itr := b.Iterator()
  	v, eof := itr.Next()
  	//copy over previous bits.
  	for v < start && !eof {
  		result.DirectAdd(v)
  		v, eof = itr.Next()
  	}
  	//flip bits in range .
  	for i := start; i <= end; i++ {
  		if eof {
  			result.DirectAdd(i)
  		} else if v == i {
  			v, eof = itr.Next()
  		} else {
  			result.DirectAdd(i)
  		}
  	}
  	//add remaining.
  	for !eof {
  		result.DirectAdd(v)
  		v, eof = itr.Next()
  	}
  	return result
  }
docs: // Flip performs a logical negate of the bits in the range [start,end].