@Override
        public byte[] doInTransform(Instrumentor instrumentor, ClassLoader classLoader, String className, Class<?> classBeingRedefined, ProtectionDomain protectionDomain, byte[] classfileBuffer) throws InstrumentException {
            final InstrumentClass target = instrumentor.getInstrumentClass(classLoader, className, classfileBuffer);

            // Add async listener. Servlet 3.0
            final InstrumentMethod startAsyncMethodEditor = target.getDeclaredMethod("startAsync", "javax.servlet.ServletRequest", "javax.servlet.ServletResponse");
            if (startAsyncMethodEditor != null) {
                startAsyncMethodEditor.addInterceptor(com.navercorp.pinpoint.plugin.tomcat.javax.interceptor.RequestStartAsyncInterceptor.class);
            }

            final InstrumentMethod startAsyncMethodEditorJakarta = target.getDeclaredMethod("startAsync", "jakarta.servlet.ServletRequest", "jakarta.servlet.ServletResponse");
            if (startAsyncMethodEditorJakarta != null) {
                startAsyncMethodEditorJakarta.addInterceptor(com.navercorp.pinpoint.plugin.tomcat.jakarta.interceptor.RequestStartAsyncInterceptor.class);
            }
            return target.toBytecode();
        }
@author Jongho Moon
@author jaehong.kim
agent-module/plugins/tomcat/src/main/java/com/navercorp/pinpoint/plugin/tomcat/TomcatPlugin.java