code: func (b *Builder) expandFirstAddr(name string, s *string) net.Addr {
  	if s == nil || *s == "" {
  		return nil
  	}
  
  	addrs := b.expandAddrs(name, s)
  	if len(addrs) == 0 {
  		return nil
  	}
  	if len(addrs) > 1 {
  		var x []string
  		for _, a := range addrs {
  			x = append(x, a.String())
  		}
  		b.err = multierror.Append(b.err, fmt.Errorf("%s: multiple addresses found: %s", name, strings.Join(x, " ")))
  		return nil
  	}
  	return addrs[0]
  }
docs: // expandFirstAddr expands the go-sockaddr template in s and returns the
  // first address which is either a *net.IPAddr or a *net.UnixAddr. If
  // the template expands to multiple addresses an error is set and nil
  // is returned.