func (tr *Tree) Insert(cell uint64, data interface{}) {
	tr.InsertOrReplace(cell, data, nil)
}
Insert inserts an item into the tree. Items are ordered by it's cell.
The extra param is a simple user context value.
package celltree
const (
	numBits  = 7    
	numNodes = 128  
)
const (
	maxItems = 256                  
	minItems = maxItems * 40 / 100  
)
type item struct {
	cell uint64
	data interface{}
}
type node struct {
	branch bool    
	items  []item  
	nodes  []node  
	count  int     
}
type Tree struct {
	count int    
	root  *node  
}
func (tr *Tree) Count() int {
	return tr.count
}
func cellIndex(cell uint64, bits uint) int {
	return int(cell >> bits & uint64(numNodes-1))
}
func (tr *Tree) InsertOrReplace(
	cell uint64, data interface{},
	cond func(data interface{}) (newData interface{}, replace bool),
) {
	if tr.root == nil {
		tr.root = new(node)
	}
	if tr.root.insert(cell, data, 64-numBits, cond) {
		tr.count++
	}
}