class RenderClassLoader extends ClassLoader {

  @NotNull
  protected Class<?> loadClassFromNonProjectDependency(@NotNull String name) throws ClassNotFoundException {
    UrlClassLoader jarClassLoaders;
    synchronized (myJarClassLoaderLock) {
      jarClassLoaders = myJarClassLoader.get();
    }

    myInsideJarClassLoader = true;
    try (InputStream is = jarClassLoaders.getResourceAsStream(name.replace('.', '/') + SdkConstants.DOT_CLASS)) {
      if (is == null) {
        throw new ClassNotFoundException(name);
      }
      byte[] data = ByteStreams.toByteArray(is);

      if (!isValidClassFile(data)) {
        throw new ClassFormatError(name);
      }
      byte[] rewritten = ClassConverter.rewriteClass(data, DEFAULT_TRANSFORMS);
      return defineClassAndPackage(name, rewritten, 0, rewritten.length);
    }
    catch (IOException | ClassNotFoundException e) {
      LOG.debug(e);
    }
    finally {
      myInsideJarClassLoader = false;
    }

    if (LOG.isDebugEnabled()) LOG.debug(String.format("ClassNotFoundException(%s)", name));
    throw new ClassNotFoundException(name);
  }

  public  RenderClassLoader(@Nullable ClassLoader parent);

}