code: func (bucket *kbucket) Replace(no *node) {
  	bucket.nodes.Delete(no.id.RawString())
  	bucket.UpdateTimestamp()
  
  	if bucket.candidates.Len() == 0 {
  		return
  	}
  
  	no = bucket.candidates.Remove(bucket.candidates.Back()).(*node)
  
  	inserted := false
  	for e := range bucket.nodes.Iter() {
  		if e.Value.(*node).lastActiveTime.After(
  			no.lastActiveTime) && !inserted {
  
  			bucket.nodes.InsertBefore(no, e)
  			inserted = true
  		}
  	}
  
  	if !inserted {
  		bucket.nodes.PushBack(no)
  	}
  }
docs: // Replace removes node, then put bucket.candidates.Back() to the right
  // place of bucket.nodes.