code: func (c *NextHopCondition) Evaluate(path *Path, options *PolicyOptions) bool {
  	if len(c.set.list) == 0 {
  		log.WithFields(log.Fields{
  			"Topic": "Policy",
  		}).Debug("NextHop doesn't have elements")
  		return true
  	}
  
  	nexthop := path.GetNexthop()
  
  	// In cases where we advertise routes from iBGP to eBGP, we want to filter
  	// on the "original" nexthop. The current paths' nexthop has already been
  	// set and is ready to be advertised as per:
  	// https://tools.ietf.org/html/rfc4271#section-5.1.3
  	if options != nil && options.OldNextHop != nil &&
  		!options.OldNextHop.IsUnspecified() && !options.OldNextHop.Equal(nexthop) {
  		nexthop = options.OldNextHop
  	}
  
  	if nexthop == nil {
  		return false
  	}
  
  	for _, n := range c.set.list {
  		if n.Contains(nexthop) {
  			return true
  		}
  	}
  
  	return false
  }
docs: // compare next-hop ipaddress of this condition and source address of path
  // and, subsequent comparisons are skipped if that matches the conditions.
  // If NextHopSet's length is zero, return true.