code: func (rt *routingTable) GetNodeKBucktByID(id *bitmap) (
  	nd *node, bucket *kbucket) {
  
  	rt.RLock()
  	defer rt.RUnlock()
  
  	var next *routingTableNode
  	root := rt.root
  
  	for prefixLen := 1; prefixLen <= maxPrefixLength; prefixLen++ {
  		next = root.Child(id.Bit(prefixLen - 1))
  		if next == nil {
  			v, ok := root.KBucket().nodes.Get(id.RawString())
  			if !ok {
  				return
  			}
  			nd, bucket = v.Value.(*node), root.KBucket()
  			return
  		}
  		root = next
  	}
  	return
  }
docs: // GetNodeKBucktById returns node whose id is `id` and the bucket it
  // belongs to.