docs: public Object run(final File scriptFile, String[] args) throws CompilationFailedException, IOException {
          String scriptName = scriptFile.getName();
          int p = scriptName.lastIndexOf(".");
          if (p++ >= 0) {
              if (scriptName.substring(p).equals("java")) {
                  throw new CompilationFailedException(0, null);
              }
          }
  
          // Get the current context classloader and save it on the stack
          final Thread thread = Thread.currentThread();
          //ClassLoader currentClassLoader = thread.getContextClassLoader();
  
          class DoSetContext implements PrivilegedAction {
              ClassLoader classLoader;
  
              public DoSetContext(ClassLoader loader) {
                  classLoader = loader;
              }
  
              public Object run() {
                  thread.setContextClassLoader(classLoader);
                  return null;
              }
          }
  
          AccessController.doPrivileged(new DoSetContext(loader));
  
          // Parse the script, generate the class, and invoke the main method.  This is a little looser than
          // if you are compiling the script because the JVM isn't executing the main method.
          Class scriptClass;
          try {
              scriptClass = AccessController.doPrivileged(new PrivilegedExceptionAction<Class>() {
                  public Class run() throws CompilationFailedException, IOException {
                      return loader.parseClass(scriptFile);
                  }
              });
          } catch (PrivilegedActionException pae) {
              Exception e = pae.getException();
              if (e instanceof CompilationFailedException) {
                  throw (CompilationFailedException) e;
              } else if (e instanceof IOException) {
                  throw (IOException) e;
              } else {
                  throw (RuntimeException) pae.getException();
              }
          }
  
          return runScriptOrMainOrTestOrRunnable(scriptClass, args);
  
          // Set the context classloader back to what it was.
          //AccessController.doPrivileged(new DoSetContext(currentClassLoader));
      }