code: func (t *SlicerToxic) chunk(start int, end int) []int {
  	// Base case:
  	// If the size is within the random varation, _or already
  	// less than the average size_, just return it.
  	// Otherwise split the chunk in about two, and recurse.
  	if (end-start)-t.AverageSize <= t.SizeVariation {
  		return []int{start, end}
  	}
  
  	// +1 in the size variation to offset favoring of smaller
  	// numbers by integer division
  	mid := start + (end-start)/2 + (rand.Intn(t.SizeVariation*2) - t.SizeVariation) + rand.Intn(1)
  	left := t.chunk(start, mid)
  	right := t.chunk(mid, end)
  
  	return append(left, right...)
  }
docs: // Returns a list of chunk offsets to slice up a packet of the
  // given total size. For example, for a size of 100, output might be:
  //
  //     []int{0, 18, 18, 43, 43, 67, 67, 77, 77, 100}
  //           ^---^  ^----^  ^----^  ^----^  ^-----^
  //
  // This tries to get fairly evenly-varying chunks (no tendency
  // to have a small/large chunk at the start/end).