public static HttpURL create(Scheme scheme, DomainName domain) {
        return create(scheme, domain, -1);
    }
This is the best class for creating, manipulating and inspecting HTTP URLs, because:
<ul>
    <li>It is more restrictive than {@link URI}, but with a richer construction API, reducing risk of blunder.
        <ul>
            <li>Scheme must be HTTP or HTTPS.</li>
            <li>Authority must be a {@link DomainName}, with an optional port.</li>
            <li>{@link Path} must be normalized at all times.</li>
            <li>Only {@link Query} is allowed, in addition to the above.</li>
        </ul>
    </li>
    <li>
        It contains all those helpful builder methods that {@link URI} has none of.
        <ul>
            <li>{@link Path} can be parsed, have segments or other paths appended, and cut.</li>
            <li>{@link Query} can be parsed, and keys and key-value pairs can be inserted or removed.</li>
        </ul>
        All these (except the parse methods) operate on <em>decoded</em> values.
    </li>
    <li>It makes it super-easy to use a {@link StringWrapper} for validation of path and query segments.</li>
</ul>

@author jonmv
vespajlib/src/main/java/ai/vespa/http/HttpURL.java