public static void copy(URL url, OutputStream out,
	                        byte[] buf,
	                        int connectionTimeoutMillis,
	                        int readTimeoutMillis)
			throws IOException {
		URLConnection connection = url.openConnection();
		connection.setDoInput(true);
		connection.setConnectTimeout(connectionTimeoutMillis);
		connection.setReadTimeout(readTimeoutMillis);
		try (InputStream in = connection.getInputStream()) {
			copy(in, out, buf);
		} finally {
			if (connection instanceof HttpURLConnection) {
				((HttpURLConnection) connection).disconnect();
			}
		}
	}
Transfer contents of {@link URL} into {@link OutputStream}.

@param url
       {@link URL} to transfer content from.
@param out
		stream to transfer content to.
@param buf
		buffer that is used to hold data.
@param connectionTimeoutMillis
		Number of milliseconds until this method will timeout if no connection could
		be established to the {@code url}
@param readTimeoutMillis
		Number of milliseconds until this method will timeout if no data could be read from
		the {@code url}

@throws IOException
		When any I/O error occurs.
recaf-core/src/main/java/software/coley/recaf/util/IOUtil.java