public static <T extends Throwable> void runWithContextClassLoader(
            ThrowingRunnable<T> runnable, ClassLoader contextClassLoader) throws T {
        try (TemporaryClassLoaderContext ignored =
                TemporaryClassLoaderContext.of(contextClassLoader)) {
            runnable.run();
        }
    }
@Test
    void testRunRunnableWithContextClassLoader() throws Exception {
        final CompletableFuture<ClassLoader> contextClassLoader = new CompletableFuture<>();
        ThrowingRunnable<Exception> runnable =
                () -> contextClassLoader.complete(Thread.currentThread().getContextClassLoader());

        ClassLoadingUtils.runWithContextClassLoader(runnable, TEST_CLASS_LOADER);
        assertThat(contextClassLoader.get()).isSameAs(TEST_CLASS_LOADER);
    }