code: public Object repushContextClassLoader(Object origLoader, ClassLoader loader) {
          if (origLoader == UNCHANGED) {
              return pushContextClassLoader(loader);
          }
  
          setContextClassLoader(Thread.currentThread(), loader);
          return origLoader;
      }
docs: Updates the context class loader of the current thread between calls to {@link #pushContextClassLoader} and {@link #popContextClassLoader}. If
  the original class loader is {@link #UNCHANGED}, then this is equivalent
  to {@link #pushContextClassLoader}). Otherwise, this is equivalent to {@link #setContextClassLoader}, and the passed class loader is returned.
  The suggested pattern of use is:
  
  <pre>
  Object origCL = ThreadContextAccessor.UNCHANGED;
  try {
  for (SomeContext ctx : contexts) {
  ClassLoader cl = ctx.getClassLoader();
  origCL = svThreadContextAccessor.repushContextClassLoader(origCL, cl);
  ...
  }
  } finally {
  svThreadContextAccessor.popContextClassLoader(origCL);
  }
  </pre>
  
  @param origLoader the result of {@link #pushContextClassLoader} or {@link #repushContextClassLoader}
  @param loader the new context class loader
  @return the original context class loader, or {@link #UNCHANGED}