code: func (c *Container) setArray(array []uint16) {
  	if roaringParanoia {
  		if c.typ != containerArray {
  			panic("attempt to write non-array's array")
  		}
  	}
  	// no array: start with our default 5-value array
  	if array == nil {
  		c.pointer, c.len, c.cap = (*uint16)(unsafe.Pointer(&c.data[0])), 0, stashedArraySize
  		return
  	}
  	h := (*reflect.SliceHeader)(unsafe.Pointer(&array))
  	if h.Data == uintptr(unsafe.Pointer(c.pointer)) {
  		// nothing to do but update length
  		c.len = int32(h.Len)
  		return
  	}
  	// array we can fit in data store:
  	if len(array) <= stashedArraySize {
  		copy(c.data[:stashedArraySize], array)
  		c.pointer, c.len, c.cap = (*uint16)(unsafe.Pointer(&c.data[0])), int32(len(array)), stashedArraySize
  		c.mapped = false // this is no longer using a hypothetical mmapped input array
  		return
  	}
  	c.pointer, c.len, c.cap = (*uint16)(unsafe.Pointer(h.Data)), int32(h.Len), int32(h.Cap)
  	runtime.KeepAlive(&array)
  }
docs: // setArray stores a set of uint16s as data.