code: public ClassLoader execute(ClassLoader cl) {
  
          //PK83186 start
          newClassLoader = cl;
  
          if (threadContextAccessor.isPrivileged()) {
              cl = (ClassLoader) run();
          } else {
              cl = (ClassLoader) AccessController.doPrivileged(this);
          }
  
          newClassLoader = null;
          oldClassLoader = null;
  
          return cl;
          //PK83186 end
      }
docs: Acquires the current thread context classloader and sets a new context
  classloader if <code>newClassLoader</code> is different from the
  current one. The current context classloader is set stored in
  <code>oldClassLoader</code>. If the classloader was changed, then
  <code>wasChanged</code> is set to <code>true</code>; otherwise, it is
  set to <code>false</code>.
  
  <p>This calls <code>AccessController.doPrivileged</code> if necessary.
  
  PK83186: Changed this method such that it takes the CL which the caller
  would like to attempt to change to. Upon method exit, this method will
  set the old/newClassLoader variables to null in order to avoid a
  CL leak.
  
  @param cl - the ClassLoader which the caller would like to change to.
  
  @return <code>oldClassLoader</code>