ClassPath implementationClasspath = distribution.getToolingImplementationClasspath(progressLoggerFactory, userHomeDir, cancellationToken);
LOGGER.debug("Using tooling provider classpath: {}", implementationClasspath);
// On IBM JVM 5, ClassLoader.getResources() uses a combination of findResources() and getParent() and traverses the hierarchy rather than just calling getResources()
// Wrap our real classloader in one that hides the parent.
// TODO - move this into FilteringClassLoader
MultiParentClassLoader parentObfuscatingClassLoader = new MultiParentClassLoader(classLoader);
FilteringClassLoader filteringClassLoader = new FilteringClassLoader(parentObfuscatingClassLoader);
filteringClassLoader.allowPackage("org.gradle.tooling.internal.protocol");
return new MutableURLClassLoader(filteringClassLoader, implementationClasspath.getAsURLArray());
}