code: func (i *IPs) UnmarshalBinary(p []byte) error {
  	b := buffer.New(p)
  	if b.Len()%net.IPv6len != 0 || b.Len() == 0 {
  		return io.ErrUnexpectedEOF
  	}
  
  	*i = make(IPs, 0, b.Len()/net.IPv6len)
  	for b.Len() > 0 {
  		ip := make(net.IP, net.IPv6len)
  		b.ReadBytes(ip)
  		*i = append(*i, ip)
  	}
  	return nil
  }
docs: // UnmarshalBinary unmarshals a raw byte slice into a list of IPs.
  //
  // If the byte slice contains any non-IPv6 addresses, io.ErrUnexpectedEOF is
  // returned.