code: func NewNetworkNumber(ip net.IP) NetworkNumber {
  	if ip == nil {
  		return nil
  	}
  	coercedIP := ip.To4()
  	parts := 1
  	if coercedIP == nil {
  		coercedIP = ip.To16()
  		parts = 4
  	}
  	if coercedIP == nil {
  		return nil
  	}
  	nn := make(NetworkNumber, parts)
  	for i := 0; i < parts; i++ {
  		idx := i * net.IPv4len
  		nn[i] = binary.BigEndian.Uint32(coercedIP[idx : idx+net.IPv4len])
  	}
  	return nn
  }
docs: // NewNetworkNumber returns a equivalent NetworkNumber to given IP address,
  // return nil if ip is neither IPv4 nor IPv6.