code: func NewCache(cacher Cacher) *Cache {
  	h := &mNode{
  		buckets:         make([]unsafe.Pointer, mInitialSize),
  		mask:            mInitialSize - 1,
  		growThreshold:   int32(mInitialSize * mOverflowThreshold),
  		shrinkThreshold: 0,
  	}
  	for i := range h.buckets {
  		h.buckets[i] = unsafe.Pointer(&mBucket{})
  	}
  	r := &Cache{
  		mHead:  unsafe.Pointer(h),
  		cacher: cacher,
  	}
  	return r
  }
docs: // NewCache creates a new 'cache map'. The cacher is optional and
  // may be nil.