class UriBuilder implements IBuilder<URI> {

    @NonNull
    public String buildString() {
        StringBuilder result = new StringBuilder();
        result.append(scheme);
        result.append("://");
        result.append(host);
        if (path != null) {
            appendArray(result.append('/'), path, '/');
        }
        if (query != null) {
            appendMap(result.append('?'), query, '&', '=');
        }
        if (fragment != null) {
            appendMap(result.append('#'), fragment, '&', '=');
        }
        return result.toString();
    }

    public  UriBuilder(@NonNull String scheme, @NonNull String host);

}