code: func (ipl *IPList) Lookup(ip net.IP) (r Range, ok bool) {
  	if ipl == nil {
  		return
  	}
  	// TODO: Perhaps all addresses should be converted to IPv6, if the future
  	// of IP is to always be backwards compatible. But this will cost 4x the
  	// memory for IPv4 addresses?
  	v4 := ip.To4()
  	if v4 != nil {
  		r, ok = ipl.lookup(v4)
  		if ok {
  			return
  		}
  	}
  	v6 := ip.To16()
  	if v6 != nil {
  		return ipl.lookup(v6)
  	}
  	if v4 == nil && v6 == nil {
  		r = Range{
  			Description: "bad IP",
  		}
  		ok = true
  	}
  	return
  }
docs: // Return the range the given IP is in. ok if false if no range is found.