code: func (o Overlaps) String() string {
  	var res []string
  	for r, overlaps := range o {
  		var groups []string
  		for _, m := range overlaps {
  			groups = append(groups, fmt.Sprintf(
  				"<ulid: %s, mint: %d, maxt: %d, range: %s>",
  				m.ULID.String(),
  				m.MinTime,
  				m.MaxTime,
  				(time.Duration((m.MaxTime-m.MinTime)/1000)*time.Second).String(),
  			))
  		}
  		res = append(res, fmt.Sprintf(
  			"[mint: %d, maxt: %d, range: %s, blocks: %d]: %s",
  			r.Min, r.Max,
  			(time.Duration((r.Max-r.Min)/1000)*time.Second).String(),
  			len(overlaps),
  			strings.Join(groups, ", ")),
  		)
  	}
  	return strings.Join(res, "\n")
  }
docs: // String returns human readable string form of overlapped blocks.