code: public static <R, E extends Throwable> R withContextClassLoader(
  			final ClassLoader cl,
  			final SupplierWithException<R, E> s) throws E {
  
  		try (TemporaryClassLoaderContext tmpCl = new TemporaryClassLoaderContext(cl)) {
  			return s.get();
  		}
  	}
docs: Runs the given runnable with the given ClassLoader as the thread's
  {@link Thread#setContextClassLoader(ClassLoader) context class loader}.
  
  <p>The method will make sure to set the context class loader of the calling thread
  back to what it was before after the runnable completed.