code: public ThreadContextClassLoaderHolder buildAndSet() {
  
          // Create the URLClassLoader from the supplied URLs
          final URL[] allURLs = new URL[urlList.size()];
          urlList.toArray(allURLs);
          final URLClassLoader classLoader = new URLClassLoader(allURLs, originalClassLoader);
  
          // Assign the ThreadContext ClassLoader
          final Thread currentThread = Thread.currentThread();
          currentThread.setContextClassLoader(classLoader);
  
          // Build the classpath argument
          StringBuilder builder = new StringBuilder();
          try {
              for (URL current : Collections.list(classLoader.getResources(""))) {
  
                  final String toAppend = getClassPathElement(current, encoding);
                  if (toAppend != null) {
                      builder.append(toAppend).append(File.pathSeparator);
                  }
              }
          } catch (Exception e) {
              // Restore the original classloader to the active thread before failing.
              currentThread.setContextClassLoader(originalClassLoader);
              throw new IllegalStateException("Could not synthesize classpath from original classloader.", e);
          }
  
          final String classPathString = builder.length() > 0
                  ? builder.toString().substring(0, builder.length() - File.pathSeparator.length())
                  : "";
  
          // All done.
          return new DefaultHolder(currentThread, this.originalClassLoader, classPathString);
      }
docs: <p>This method performs 2 things in order:</p>
  <ol>
  <li>Builds a ThreadContext ClassLoader from the URLs supplied to this Builder, and assigns the
  newly built ClassLoader to the current Thread.</li>
  <li>Stores the ThreadContextClassLoaderHolder for later restoration.</li>
  </ol>
  References to the original ThreadContextClassLoader and the currentThread are stored within the returned
  ThreadContextClassLoaderHolder, and can be restored by a call to
  {@code ThreadContextClassLoaderHolder.restoreClassLoaderAndReleaseThread()}.
  
  @return A fully set up ThreadContextClassLoaderHolder which is used to set the