protected Class<?> findClass(String name) throws ClassNotFoundException {
        byte[] classfile;
        try {
            if (translator != null) {
                try {
                    classfile = translator.transform(name);
                } catch (ClassNotFoundException e) {
                    return null;
                }
            } else {
                String jarname = "/" + JavaAssistUtils.javaClassNameToJvmResourceName(name);
                InputStream in = this.getClass().getClassLoader().getResourceAsStream(jarname);
                if (in == null) {
                    return null;
                }
                classfile = IOUtils.toByteArray(in);
            }
        } catch (Exception e) {
            throw new ClassNotFoundException("caught an exception while obtaining a class file for " + name, e);
        }

        final int i = name.lastIndexOf('.');
        if (i != -1) {
            String pname = name.substring(0, i);
            if (getPackage(pname) == null)
                try {
                    definePackage(pname, null, null, null, null, null, null, null);
                } catch (IllegalArgumentException ignored) {
                    // ignore.  maybe the package object for the same
                    // name has been created just right away.
                }
        }

        if (domain == null) {
            if (logger.isLoggable(Level.FINE)) {
                this.logger.fine("defineClass:" + name);
            }
            return defineClass(name, classfile, 0, classfile.length, TransformClassLoader.class.getProtectionDomain());
        } else {
            if (logger.isLoggable(Level.FINE)) {
                this.logger.fine("defineClass:" + name);
            }
            return defineClass(name, classfile, 0, classfile.length, domain);
        }
    }
Finds the specified class using <code>ClassPath</code>.
If the source throws an exception, this returns null.
<p>
<p>This method can be overridden by a subclass of
<code>Loader</code>.  Note that the overridden method must not throw
an exception when it just fails to find a class file.

@return null if the specified class could not be found.
@throws ClassNotFoundException if an exception is thrown while
                               obtaining a class file.
agent-module/profiler-test/src/main/java/com/navercorp/pinpoint/profiler/test/classloader/TransformClassLoader.java