func Create() *Builder {
	return &Builder{
		hosts: map[string]*PathMux{},
		any:   &PathMux{},
	}
}
Create constructs a new empty Builder.
package mux
import "strings"
type Builder struct {
	hosts map[string]*PathMux
	any   *PathMux
}
func (b *Builder) ForHost(host string) *PathMux {
	h := hostWithoutPort(host)
	if m := b.hosts[h]; m != nil {
		return m
	}
	m := &PathMux{}
	b.hosts[h] = m
	return m
}
func (b *Builder) ForAnyHost() *PathMux {
	return b.any
}
func (b *Builder) Build() *Serve {
	hosts := b.hosts
	for _, host := range hosts {
		host.build()
	}
	any := b.any
	any.build()
	*b = Builder{}
	return &Serve{
		hosts: hosts,
		any:   any,
	}
}
func hostWithoutPort(host string) string {
	ix := strings.IndexByte(host, ':')
	if ix == -1 {
		return host
	}
	return host[:ix]
}