code: func TreeSplit(ctx context.Context, data io.Reader, size int64, putter Putter) (k Address, wait func(context.Context) error, err error) {
  	tsp := &TreeSplitterParams{
  		SplitterParams: SplitterParams{
  			ChunkerParams: ChunkerParams{
  				chunkSize: chunk.DefaultSize,
  				hashSize:  putter.RefSize(),
  			},
  			reader: data,
  			putter: putter,
  		},
  		size: size,
  	}
  	return NewTreeSplitter(tsp).Split(ctx)
  }
docs: /*
  	When splitting, data is given as a SectionReader, and the key is a hashSize long byte slice (Key), the root hash of the entire content will fill this once processing finishes.
  	New chunks to store are store using the putter which the caller provides.
  */