code: func Supernet(ps []Prefix) *Prefix {
  	if len(ps) == 0 {
  		return nil
  	}
  	if ps[0].IP.To4() != nil {
  		ps = byAddrFamily(ps).newIPv4Prefixes()
  	}
  	if ps[0].IP.To16() != nil && ps[0].IP.To4() == nil {
  		ps = byAddrFamily(ps).newIPv6Prefixes()
  	}
  	switch len(ps) {
  	case 0:
  		return nil
  	case 1:
  		return &ps[0]
  	}
  	if ps[0].IP.To4() != nil {
  		return supernetIPv4(ps)
  	}
  	if ps[0].IP.To16() != nil && ps[0].IP.To4() == nil {
  		return supernetIPv6(ps)
  	}
  	return nil
  }
docs: // Supernet finds out a shortest common prefix for ps.
  // It returns nil when no suitable prefix is found.