code: func NewNonceService(scope metrics.Scope) (*NonceService, error) {
  	scope = scope.NewScope("NonceService")
  	key := make([]byte, 16)
  	if _, err := rand.Read(key); err != nil {
  		return nil, err
  	}
  
  	c, err := aes.NewCipher(key)
  	if err != nil {
  		panic("Failure in NewCipher: " + err.Error())
  	}
  	gcm, err := cipher.NewGCM(c)
  	if err != nil {
  		panic("Failure in NewGCM: " + err.Error())
  	}
  
  	return &NonceService{
  		earliest: 0,
  		latest:   0,
  		used:     make(map[int64]bool, MaxUsed),
  		usedHeap: &int64Heap{},
  		gcm:      gcm,
  		maxUsed:  MaxUsed,
  		stats:    scope,
  	}, nil
  }
docs: // NewNonceService constructs a NonceService with defaults