func (c Concurrent) Get(b int) bool {
	return Get(c, b)
}
Get wraps around the Get function.
package bitmap
import "sync"
var (
	tA = [8]byte{1, 2, 4, 8, 16, 32, 64, 128}
	tB = [8]byte{254, 253, 251, 247, 239, 223, 191, 127}
)
func dataOrCopy(d []byte, c bool) []byte {
	if !c {
		return d
	}
	ndata := make([]byte, len(d))
	copy(ndata, d)
	return ndata
}
func NewSlice(l int) []byte {
	remainder := l % 8
	if remainder != 0 {
		remainder = 1
	}
	return make([]byte, l/8+remainder)
}
func Get(m []byte, i int) bool {
	return m[i/8]&tA[i%8] != 0
}
func Set(m []byte, i int, v bool) {
	index := i / 8
	bit := i % 8
	if v {
		m[index] = m[index] | tA[bit]
	} else {
		m[index] = m[index] & tB[bit]
	}
}
func GetBit(b byte, i int) bool {
	return b&tA[i] != 0
}
func SetBit(b byte, i int, v bool) byte {
	if v {
		return b | tA[i]
	}
	return b & tB[i]
}
func SetBitRef(b *byte, i int, v bool) {
	if v {
		*b = *b | tA[i]
	} else {
		*b = *b & tB[i]
	}
}
func Len(m []byte) int {
	return len(m) * 8
}
type Bitmap []byte
func New(l int) Bitmap {
	return NewSlice(l)
}
func (b Bitmap) Len() int {
	return Len(b)
}
func (b Bitmap) Get(i int) bool {
	return Get(b, i)
}
func (b Bitmap) Set(i int, v bool) {
	Set(b, i, v)
}
func (b Bitmap) Data(copy bool) []byte {
	return dataOrCopy(b, copy)
}
type Threadsafe struct {
	bm Bitmap
	mu sync.RWMutex
}
func TSFromData(data []byte, copy bool) *Threadsafe {
	return &Threadsafe{
		bm: Bitmap(dataOrCopy(data, copy)),
	}
}
func NewTS(length int) *Threadsafe {
	return &Threadsafe{
		bm: New(length),
	}
}
func (b *Threadsafe) Data(copy bool) []byte {
	b.mu.RLock()
	data := dataOrCopy(b.bm, copy)
	b.mu.RUnlock()
	return data
}
func (b Threadsafe) Len() int {
	b.mu.RLock()
	l := b.bm.Len()
	b.mu.RUnlock()
	return l
}
func (b Threadsafe) Get(i int) bool {
	b.mu.RLock()
	v := b.bm.Get(i)
	b.mu.RUnlock()
	return v
}
func (b Threadsafe) Set(i int, v bool) {
	b.mu.Lock()
	b.bm.Set(i, v)
	b.mu.Unlock()
}
type Concurrent []byte
func NewConcurrent(l int) Concurrent {
	remainder := l % 8
	if remainder != 0 {
		remainder = 1
	}
	return make([]byte, l/8+remainder, l/8+remainder+3)
}