@Nullable
  private ClassLoader createGreclipseLoader(@Nullable String jar) {
    if (StringUtil.isEmpty(jar)) return null;

    if (jar.equals(myGreclipseJar)) {
      return myGreclipseLoader;
    }

    try {
      URL[] urls = {
        new File(jar).toURI().toURL(),
        Objects.requireNonNull(PathManager.getJarForClass(GreclipseMain.class)).toUri().toURL()
      };
      ClassLoader loader = new URLClassLoader(urls, StandardJavaFileManager.class.getClassLoader());
      Class.forName("org.eclipse.jdt.internal.compiler.batch.Main", false, loader);
      myGreclipseJar = jar;
      myGreclipseLoader = loader;
      return loader;
    }
    catch (Exception e) {
      LOG.error(e);
      return null;
    }
  }
@Nullable
  private ClassLoader createGreclipseLoader(@Nullable String jar)