code: func (i *IP) UnmarshalBinary(b []byte) error {
  	if len(b) != net.IPv6len {
  		return io.ErrUnexpectedEOF
  	}
  
  	if ip := net.IP(b); ip.To4() != nil {
  		return io.ErrUnexpectedEOF
  	}
  
  	*i = make(IP, net.IPv6len)
  	copy(*i, b)
  	return nil
  }
docs: // UnmarshalBinary unmarshals a raw byte slice into an IP.
  //
  // If the byte slice is not an IPv6 address, io.ErrUnexpectedEOF is
  // returned.