code: func (s *suspicion) Confirm(from string) bool {
  	// If we've got enough confirmations then stop accepting them.
  	if atomic.LoadInt32(&s.n) >= s.k {
  		return false
  	}
  
  	// Only allow one confirmation from each possible peer.
  	if _, ok := s.confirmations[from]; ok {
  		return false
  	}
  	s.confirmations[from] = struct{}{}
  
  	// Compute the new timeout given the current number of confirmations and
  	// adjust the timer. If the timeout becomes negative *and* we can cleanly
  	// stop the timer then we will call the timeout function directly from
  	// here.
  	n := atomic.AddInt32(&s.n, 1)
  	elapsed := time.Since(s.start)
  	remaining := remainingSuspicionTime(n, s.k, elapsed, s.min, s.max)
  	if s.timer.Stop() {
  		if remaining > 0 {
  			s.timer.Reset(remaining)
  		} else {
  			go s.timeoutFn()
  		}
  	}
  	return true
  }
docs: // Confirm registers that a possibly new peer has also determined the given
  // node is suspect. This returns true if this was new information, and false
  // if it was a duplicate confirmation, or if we've got enough confirmations to
  // hit the minimum.