code: func (db *DB) incGCSizeInBatch(batch *leveldb.Batch, change int64) (err error) {
  	if change == 0 {
  		return nil
  	}
  	gcSize, err := db.gcSize.Get()
  	if err != nil {
  		return err
  	}
  
  	var new uint64
  	if change > 0 {
  		new = gcSize + uint64(change)
  	} else {
  		// 'change' is an int64 and is negative
  		// a conversion is needed with correct sign
  		c := uint64(-change)
  		if c > gcSize {
  			// protect uint64 undeflow
  			return nil
  		}
  		new = gcSize - c
  	}
  	db.gcSize.PutInBatch(batch, new)
  
  	// trigger garbage collection if we reached the capacity
  	if new >= db.capacity {
  		db.triggerGarbageCollection()
  	}
  	return nil
  }
docs: // incGCSizeInBatch changes gcSize field value
  // by change which can be negative. This function
  // must be called under batchMu lock.