code: @Pure
  	public static URL join(URL urlBase, File... elements) {
  		if (urlBase == null) {
  			return null;
  		}
  		final StringBuilder buf = new StringBuilder(urlBase.getPath());
  		for (final File elt : elements) {
  			if (!elt.isAbsolute() && (buf.length() == 0 || buf.charAt(buf.length() - 1) != URL_PATH_SEPARATOR_CHAR)) {
  				buf.append(URL_PATH_SEPARATOR_CHAR);
  			}
  			buf.append(fromFileStandardToURLStandard(elt));
  		}
  		try {
  			if (isJarURL(urlBase)) {
  				return new URL(
  						urlBase.getProtocol(),
  						urlBase.getHost(),
  						urlBase.getPort(),
  						buf.toString());
  			}
  			return new URI(
  					urlBase.getProtocol(),
  					urlBase.getUserInfo(),
  					urlBase.getHost(),
  					urlBase.getPort(),
  					decodeHTMLEntities(buf.toString()),
  					decodeHTMLEntities(urlBase.getQuery()),
  					urlBase.getRef()).toURL();
  		} catch (Throwable exception) {
  			//
  		}
  		try {
  			return new URL(
  					urlBase.getProtocol(),
  					urlBase.getHost(),
  					buf.toString());
  		} catch (Throwable exception) {
  			return null;
  		}
  	}
docs: Join the parts of a path and append them to the given URL.
  
  @param urlBase is the url to put as prefix.
  @param elements are the path's elements to join.
  @return the result of the join of the path's elements.