@Override
    protected Class<?> findClass(final String className) throws ClassNotFoundException {
        try {
            // super.findClass(className) finds both from the delegation parent ClassLoader and non-self-contained JARs.
            return super.findClass(className);
        } catch (final ClassNotFoundException ignored) {
            // Pass through intentionally. Try finding from self-contained JARs.
        }

        // Try finding from self-contained JARs only when not found from the parent ClassLoader nor filesystem JARs.
        try {
            return AccessController.doPrivileged(
                new PrivilegedExceptionAction<Class<?>>() {
                    @Override
                    public Class<?> run() throws ClassNotFoundException {
                        try {
                            return defineClassFromSelfContainedJarFiles(className);
                        } catch (final ClassNotFoundException | LinkageError | ClassCastException ex) {
                            throw ex;
                        } catch (final Throwable ex) {
                            // Found a resource in the container JAR, but failed to load it as a class.
                            throw new ClassNotFoundException(className, ex);
                        }
                    }
                },
                this.accessControlContext);
        } catch (final PrivilegedActionException ex) {
            final Throwable internalException = ex.getException();
            if (internalException instanceof ClassNotFoundException) {
                throw (ClassNotFoundException) internalException;
            }
            if (internalException instanceof LinkageError) {
                throw (LinkageError) internalException;
            }
            if (internalException instanceof ClassCastException) {
                throw (ClassCastException) internalException;
            }
            throw new ClassNotFoundException(className, ex);
        }
    }
Finds the class with the specified binary name.

<p>It should not be called when the class has already been loaded. The default {@code loadClass} checks
if the class has already been loaded before calling {@code findClass}.
embulk-core/src/main/java/org/embulk/cli/SelfContainedJarAwareURLClassLoader.java