private VirtualHostBuilder findOrCreateVirtualHostBuilder(String hostnamePattern) {
        requireNonNull(hostnamePattern, "hostnamePattern");
        final HostAndPort hostAndPort = HostAndPort.fromString(hostnamePattern);
        validateHostnamePattern(hostAndPort.getHost());

        final String normalizedHostnamePattern = normalizeHostnamePattern(hostAndPort.getHost());
        final int port = hostAndPort.getPortOrDefault(-1);
        for (VirtualHostBuilder virtualHostBuilder : virtualHostBuilders) {
            if (!virtualHostBuilder.defaultVirtualHost() &&
                virtualHostBuilder.equalsHostnamePattern(normalizedHostnamePattern, port)) {
                return virtualHostBuilder;
            }
        }
        return new VirtualHostBuilder(this, false).hostnamePattern(normalizedHostnamePattern, port);
    }
Adds the <a href="https://en.wikipedia.org/wiki/Virtual_hosting#Port-based">port-based virtual host</a>
with the specified {@code port}. The returned virtual host will have a catch-all (wildcard host) name
pattern that allows all host names.

<p>Note that you cannot configure TLS to the port-based virtual host. Configure it to the
{@link ServerBuilder} or a {@linkplain #virtualHost(String) name-based virtual host}.

@param port the port number that this virtual host binds to
@return {@link VirtualHostBuilder} for building the virtual host
core/src/main/java/com/linecorp/armeria/server/ServerBuilder.java