code: func (f *clsFlag) retrieveCLs(ctx context.Context, httpClient *http.Client, requirePatchset bool) ([]*pb.GerritChange, error) {
  	ret := make([]*pb.GerritChange, len(f.cls))
  	return ret, parallel.FanOutIn(func(work chan<- func() error) {
  		for i, cl := range f.cls {
  			i := i
  			work <- func() error {
  				change, err := f.retrieveCL(ctx, cl, httpClient, requirePatchset)
  				if err != nil {
  					return fmt.Errorf("CL %q: %s", cl, err)
  				}
  				ret[i] = change
  				return nil
  			}
  		}
  	})
  }
docs: // retrieveCLs retrieves GerritChange objects from f.cls.
  // Makes Gerrit RPCs if necessary, in parallel.