code: func MakeChecksumIndex(checksums []chunks.ChunkChecksum) *ChecksumIndex {
  	n := &ChecksumIndex{
  		BlockCount:         len(checksums),
  		weakChecksumLookup: make([]map[uint32]StrongChecksumList, 256),
  	}
  
  	for _, chunk := range checksums {
  		weakChecksumAsInt := binary.LittleEndian.Uint32(chunk.WeakChecksum)
  		arrayOffset := weakChecksumAsInt & 255
  
  		if n.weakChecksumLookup[arrayOffset] == nil {
  			n.weakChecksumLookup[arrayOffset] = make(map[uint32]StrongChecksumList)
  		}
  
  		n.weakChecksumLookup[arrayOffset][weakChecksumAsInt] = append(
  			n.weakChecksumLookup[arrayOffset][weakChecksumAsInt],
  			chunk,
  		)
  
  	}
  
  	sum := 0
  	count := 0
  
  	for _, a := range n.weakChecksumLookup {
  		for _, c := range a {
  			sort.Sort(c)
  			if len(c) > n.MaxStrongLength {
  				n.MaxStrongLength = len(c)
  			}
  			sum += len(c)
  			count += 1
  			n.Count += len(c)
  		}
  	}
  
  	n.AverageStrongLength = float32(sum) / float32(count)
  
  	return n
  }
docs: // Builds an index in which chunks can be found, with their corresponding offsets
  // We use this for the