@Override
  protected Class<?> findClass(@NotNull String name) throws ClassNotFoundException {
    String fileNameWithoutExtension = name.replace('.', '/');
    String fileName = fileNameWithoutExtension + ClasspathCache.CLASS_EXTENSION;
    long packageNameHash = ClasspathCache.getPackageNameHash(fileNameWithoutExtension, fileNameWithoutExtension.lastIndexOf('/'));

    // When used as a system classloader (java.system.class.loader),
    // the UrlClassLoader class has to be loaded together with its dependencies by the AppClassLoader.
    // The same dependencies might be used in the platform and in plugins.
    // If a class is loaded together with UrlClassLoader class by AppClassLoader, and again by UrlClassLoader,
    // then it gets defined twice, which leads to CCEs later.
    // To avoid double-loading, the loading of a select number of packages is delegated to AppClassLoader.
    //
    // com.intellij.util.lang
    // see XxHash3Test.packages
    if (isSystemClassLoader && packageNameHash == -9217824570049207139L) {
      // these two classes from com.intellij.util.lang are located in intellij.platform.util module, which shouldn't be loaded by appClassLoader (IDEA-331043)
      if (!fileNameWithoutExtension.endsWith("/CompoundRuntimeException") && !fileNameWithoutExtension.endsWith("/JavaVersion")) {
        return appClassLoader.loadClass(name);
      }
    }

    Class<?> clazz;
    try {
      clazz = classPath.findClass(name, fileName, packageNameHash, classDataConsumer);
    }
    catch (IOException e) {
      throw new ClassNotFoundException(name, e);
    }
    if (clazz == null) {
      throw new ClassNotFoundException(name);
    }
    return clazz;
  }
@Override
  protected Class<?> findClass(@NotNull String name)