public static Object getUcp() throws ReflectiveOperationException {
		// Fetch UCP of application's ClassLoader
		// - ((ClassLoaders.AppClassLoader) ClassLoaders.appClassLoader()).ucp
		Class<?> clsClassLoaders = Class.forName("jdk.internal.loader.ClassLoaders");
		Object appClassLoader = ReflectUtil.quietInvoke(clsClassLoaders, null, "appClassLoader",
				new Class[0], new Object[0]);
		Class<?> ucpOwner = appClassLoader.getClass();

		// Field removed in 16, but still exists in parent class "BuiltinClassLoader"
		if (JavaVersion.get() >= 16)
			ucpOwner = ucpOwner.getSuperclass();

		Field fieldUCP = ReflectUtil.getDeclaredField(ucpOwner, "ucp");
		return fieldUCP.get(appClassLoader);
	}
@return {@code jdk.internal.loader.URLClassPath} instance.

@throws ReflectiveOperationException
		When the internals change and the reflective look-ups fail.
recaf-core/src/main/java/software/coley/recaf/util/ClassLoaderInternals.java