@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);
            if (RabbitMQUtils.addConsumerHandleDeliveryInterceptor(target)) {
                InstrumentMethod nextDelivery = target.getDeclaredMethod("nextDelivery");
                if (nextDelivery != null) {
                    nextDelivery.addScopedInterceptor(QueueingConsumerOnNextInterceptor.class, RabbitMQClientConstants.RABBITMQ_CONSUMER_SCOPE);
                }
                InstrumentMethod nextDeliveryTimeout = target.getDeclaredMethod("nextDelivery", "long");
                if (nextDeliveryTimeout != null) {
                    nextDeliveryTimeout.addScopedInterceptor(QueueingConsumerOnNextInterceptor.class, RabbitMQClientConstants.RABBITMQ_CONSUMER_SCOPE);
                }
                InstrumentMethod handle = target.getDeclaredMethod("handle", "com.rabbitmq.client.QueueingConsumer$Delivery");
                if (handle != null) {
                    handle.addInterceptor(QueueingConsumerHandleInterceptor.class);
                }
                return target.toBytecode();
            }
            return null;
        }
@author Jinkai.Ma
@author Jiaqi Feng
@author HyunGil Jeong
agent-module/plugins/rabbitmq/src/main/java/com/navercorp/pinpoint/plugin/rabbitmq/client/RabbitMQClientPlugin.java