private ClassLoaderAttachment getClassLoaderAttachment(ClassLoader classLoader, final String pluginJarPath) {
        final ClassLoaderAttachment attachment = getClassLoaderAttachment(classLoader);

//        this order is thread safe ?
//        final Class<?> alreadyExist = attachment.getClass(className);
//        if (alreadyExist != null) {
//            return alreadyExist;
//        }

        final PluginLock pluginLock = attachment.getPluginLock(pluginJarPath);
//        not recommended pluginLock.isLoaded() check
        synchronized (pluginLock) {
            if (!pluginLock.isLoaded()) {
                pluginLock.setLoaded();
                defineJarClass(classLoader, attachment);
            }
        }

        return attachment;
    }
@author Woonduk Kang(emeroad)
@author jaehong.kim
agent-module/profiler/src/main/java/com/navercorp/pinpoint/profiler/instrument/classloading/PlainClassLoaderHandler.java