code: func chunkedGrab(sources []profileSource, fetch plugin.Fetcher, obj plugin.ObjTool, ui plugin.UI, tr http.RoundTripper) (*profile.Profile, plugin.MappingSources, bool, int, error) {
  	const chunkSize = 64
  
  	var p *profile.Profile
  	var msrc plugin.MappingSources
  	var save bool
  	var count int
  
  	for start := 0; start < len(sources); start += chunkSize {
  		end := start + chunkSize
  		if end > len(sources) {
  			end = len(sources)
  		}
  		chunkP, chunkMsrc, chunkSave, chunkCount, chunkErr := concurrentGrab(sources[start:end], fetch, obj, ui, tr)
  		switch {
  		case chunkErr != nil:
  			return nil, nil, false, 0, chunkErr
  		case chunkP == nil:
  			continue
  		case p == nil:
  			p, msrc, save, count = chunkP, chunkMsrc, chunkSave, chunkCount
  		default:
  			p, msrc, chunkErr = combineProfiles([]*profile.Profile{p, chunkP}, []plugin.MappingSources{msrc, chunkMsrc})
  			if chunkErr != nil {
  				return nil, nil, false, 0, chunkErr
  			}
  			if chunkSave {
  				save = true
  			}
  			count += chunkCount
  		}
  	}
  
  	return p, msrc, save, count, nil
  }
docs: // chunkedGrab fetches the profiles described in source and merges them into
  // a single profile. It fetches a chunk of profiles concurrently, with a maximum
  // chunk size to limit its memory usage.