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

            target.addGetter(RequestProducerGetter.class, HttpClient4Constants.FIELD_REQUEST_PRODUCER);
            target.addGetter(ResultFutureGetter.class, HttpClient4Constants.FIELD_RESULT_FUTURE);

            InstrumentMethod start = target.getDeclaredMethod("start");

            if (start != null) {
                start.addInterceptor(DefaultClientExchangeHandlerImplStartMethodInterceptor.class);
            }

            return target.toBytecode();
        }
@author netspider
@author emeroad
@author minwoo.jung
@author jaehong.kim
agent-module/plugins/httpclient4/src/main/java/com/navercorp/pinpoint/plugin/httpclient4/HttpClient4Plugin.java