class Bundler::Checksum::Store

def replace(spec, checksum)

that contain the same gem with different checksums.
This ensures a mismatch error where there are multiple top level sources
However, if the new checksum is from a different source, we register like normal.

In the Index, the later gem replaces the former, so we do that here.
"darwin20" and "darwin-20", both of which resolve to darwin-20.
In particular, this is when 2 gems have two similar platforms, e.g.

duplicates of the same gem (according to full_name) in the index.
The primary purpose is registering checksums from gems where there are
Replace when the new checksum is from the same source.
def replace(spec, checksum)
  return unless checksum
  lock_name = spec.name_tuple.lock_name
  @store_mutex.synchronize do
    existing = fetch_checksum(lock_name, checksum.algo)
    if !existing || existing.same_source?(checksum)
      store_checksum(lock_name, checksum)
    else
      merge_checksum(lock_name, checksum, existing)
    end
  end
end