code: func NewTombstoneGC(ttl, granularity time.Duration) (*TombstoneGC, error) {
  	// Sanity check the inputs
  	if ttl <= 0 || granularity <= 0 {
  		return nil, fmt.Errorf("Tombstone TTL and granularity must be positive")
  	}
  
  	t := &TombstoneGC{
  		ttl:         ttl,
  		granularity: granularity,
  		expires:     make(map[time.Time]*expireInterval),
  		expireCh:    make(chan uint64, 1),
  	}
  	return t, nil
  }
docs: // NewTombstoneGC is used to construct a new TombstoneGC given a TTL for
  // tombstones and a tracking granularity. Longer TTLs ensure correct behavior
  // for more time, but use more storage. A shorter granularity increases the
  // number of Raft transactions and reduce how far past the TTL we perform GC.