src/main/java/io/mola/galimatias/URL.java
public java.net.URI toJavaURI() throws URISyntaxException {
        if (isHierarchical) {
            return new URI(scheme(),
                    (!"".equals(userInfo()))? URLUtils.percentDecode(userInfo()) : null,
                    (host() != null)? host().toString() : null,
                    port,
                    (path() != null)? URLUtils.percentDecode(path()) : null,
                    (query() != null)? URLUtils.percentDecode(query()) : null,
                    (fragment() != null)? URLUtils.percentDecode(fragment()) : null
            );
        }
        return new URI(scheme(),
                URLUtils.percentDecode(schemeData()) + ((query() == null)? "" : "?" + URLUtils.percentDecode(query())),
                (fragment() != null)? URLUtils.percentDecode(fragment()) : null
        );
    }
public java.net.URI toJavaURI() throws URISyntaxException {
        if (isHierarchical) {
            return new URI(scheme(),
                    (!"".equals(userInfo()))? URLUtils.percentDecode(userInfo()) : null,
                    (host() != null)? host().toString() : null,
                    port,
                    (path() != null)? URLUtils.percentDecode(path()) : null,
                    (query() != null)? URLUtils.percentDecode(query()) : null,
                    (fragment() != null)? URLUtils.percentDecode(fragment()) : null
            );
        }
        return new URI(scheme(),
                URLUtils.percentDecode(schemeData()) + ((query() == null)? "" : "?" + URLUtils.percentDecode(query())),
                (fragment() != null)? URLUtils.percentDecode(fragment()) : null
        );
    }
public java . net . URI toJavaURI ( ) throws URISyntaxException { if ( isHierarchical ) { return new URI ( scheme ( ) , ( ! "" . equals ( userInfo ( ) ) ) ? URLUtils . percentDecode ( userInfo ( ) ) : null , ( host ( ) != null ) ? host ( ) . toString ( ) : null , port , ( path ( ) != null ) ? URLUtils . percentDecode ( path ( ) ) : null , ( query ( ) != null ) ? URLUtils . percentDecode ( query ( ) ) : null , ( fragment ( ) != null ) ? URLUtils . percentDecode ( fragment ( ) ) : null ) ; } return new URI ( scheme ( ) , URLUtils . percentDecode ( schemeData ( ) ) + ( ( query ( ) == null ) ? "" : "?" + URLUtils . percentDecode ( query ( ) ) ) , ( fragment ( ) != null ) ? URLUtils . percentDecode ( fragment ( ) ) : null ) ; }
Converts to {@link java.net.URI}.

Conversion to {@link java.net.URI} will throw
{@link java.net.URISyntaxException} if the URL contains
unescaped unsafe characters as defined in RFC 2396.
In order to prevent this, force RFC 2396 compliance when
parsing the URL. For example:

NOTE 1: This will not make distinction between no user and password and just empty
user and no password.
<pre>
<code>
URL.parse("http://example.com").toJavaURI().toString() -> "http://example.com"
URL.parse("http://@example.com").toJavaURI().toString() -> "http://example.com"
</code>
</pre>

TODO: Check if this exception can actually be thrown

@return
Converts to { @link java . net . URI } .