code: func (c *Container) Clone() (out *Container) {
  	statsHit("Container/Clone")
  	switch c.typ {
  	case containerArray:
  		statsHit("Container/Clone/Array")
  		cArray := c.array()
  		array := make([]uint16, len(cArray))
  		copy(array, cArray)
  		out = NewContainerArray(array)
  	case containerBitmap:
  		statsHit("Container/Clone/Bitmap")
  		other := NewContainerBitmap(c.n, nil)
  		copy(other.bitmap(), c.bitmap())
  		out = other
  	case containerRun:
  		statsHit("Container/Clone/Run")
  		cRuns := c.runs()
  		runs := make([]interval16, len(cRuns))
  		copy(runs, cRuns)
  		out = NewContainerRun(runs)
  	}
  	// this should probably never happen
  	if roaringParanoia {
  		if out.n != out.count() {
  			panic("cloned container has wrong n")
  		}
  	}
  	return out
  }
docs: // Clone returns a copy of c.