private @Nullable JointCompilationClassLoader createCompilationClassLoader(Collection<String> compilationClassPath) throws Exception {
    ClassLoader parent = obtainParentLoader(compilationClassPath);

    ClassLoader groovyClassLoader;
    try {
      ClassLoader auxiliary = parent == null ? buildCompilationClassLoader(compilationClassPath, null).get() : parent;
      Class<?> gcl = auxiliary.loadClass("groovy.lang.GroovyClassLoader");
      groovyClassLoader = (ClassLoader)gcl.getConstructor(ClassLoader.class)
        .newInstance(parent != null ? parent : getPlatformLoaderParentIfOnJdk9());
    }
    catch (ClassNotFoundException e) {
      LOG.warn(e);
      return null;
    }
    return new JointCompilationClassLoader(buildCompilationClassLoader(compilationClassPath, groovyClassLoader));
  }
private @Nullable JointCompilationClassLoader createCompilationClassLoader(Collection<String> compilationClassPath)