@Override
        public byte[] doInTransform(Instrumentor instrumentor, ClassLoader classLoader, String className, Class<?> classBeingRedefined, ProtectionDomain protectionDomain, byte[] classfileBuffer) throws InstrumentException {

            JettyConfiguration config = new JettyConfiguration(instrumentor.getProfilerConfig());

            final InstrumentClass target = instrumentor.getInstrumentClass(classLoader, className, classfileBuffer);
            if (config.isHidePinpointHeader()) {
                // Hide pinpoint header
                target.weave("com.navercorp.pinpoint.plugin.jetty.aspect.RequestAspect");
            }
            // Add async listener. Servlet 3.0
            final InstrumentMethod startAsyncMethod = target.getDeclaredMethod("startAsync");
            if (startAsyncMethod != null) {
                startAsyncMethod.addInterceptor(RequestStartAsyncInterceptor.class);
            }
            final InstrumentMethod startAsyncMethodEditor = target.getDeclaredMethod("startAsync", "javax.servlet.ServletRequest", "javax.servlet.ServletResponse");
            if (startAsyncMethodEditor != null) {
                startAsyncMethodEditor.addInterceptor(RequestStartAsyncInterceptor.class);
            }
            final InstrumentMethod startAsyncMethodEditorJakarta = target.getDeclaredMethod("startAsync", "jakarta.servlet.ServletRequest", "jakarta.servlet.ServletResponse");
            if (startAsyncMethodEditorJakarta != null) {
                startAsyncMethodEditorJakarta.addInterceptor(com.navercorp.pinpoint.plugin.jetty.jakarta.interceptor.RequestStartAsyncInterceptor.class);
            }
            return target.toBytecode();
        }
@author Chaein Jung
@author jaehong.kim
agent-module/plugins/jetty/src/main/java/com/navercorp/pinpoint/plugin/jetty/JettyPlugin.java