code: @Pure
  	public static String[] split(URL filename) {
  		if (filename == null) {
  			return new String[0];
  		}
  		if (isJarURL(filename)) {
  			return split(getJarFile(filename));
  		}
  		final String path = filename.getPath();
  		String[] tab = path.split(Pattern.quote(URL_PATH_SEPARATOR));
  		if (tab.length >= 2 && "".equals(tab[0]) && Pattern.matches("^[a-zA-Z][:|]$", tab[1])) { //$NON-NLS-1$ //$NON-NLS-2$
  			tab = Arrays.copyOfRange(tab, 1, tab.length);
  			for (int i = 1; i < tab.length; ++i) {
  				tab[i] = decodeHTMLEntities(tab[i]);
  			}
  		} else {
  			for (int i = 0; i < tab.length; ++i) {
  				tab[i] = decodeHTMLEntities(tab[i]);
  			}
  		}
  		return tab;
  	}
docs: Replies the parts of a path.
  
  <p>If the input is {@code "http://www.arakhne.org/path/to/file.x.z.z"}, the replied paths
  are: {@code ""}, {@code "path"}, {@code "to"}, and {@code "file.x.z.z"}.
  
  <p>If the input is {@code "jar:file:/path1/archive.jar!/path2/file"}, the replied paths
  are: {@code ""}, {@code "path2"}, and {@code "file"}.
  
  @param filename is the name to parse.
  @return the parts of a path.