@Override
        public byte[] doInTransform(Instrumentor instrumentor, ClassLoader classLoader, String className, Class<?> classBeingRedefined, ProtectionDomain protectionDomain, byte[] classfileBuffer) throws InstrumentException {
            InstrumentClass target = instrumentor.getInstrumentClass(classLoader, className, classfileBuffer);
            // Methods
            InstrumentMethod getExecutionObservable = target.getDeclaredMethod("getExecutionObservable");
            if (getExecutionObservable != null) {
                getExecutionObservable.addScopedInterceptor(BasicMethodInterceptor.class, va(HystrixPluginConstants.HYSTRIX_INTERNAL_SERVICE_TYPE), HystrixPluginConstants.HYSTRIX_COMMAND_EXECUTION_SCOPE, ExecutionPolicy.ALWAYS);
            }
            InstrumentMethod getFallbackObservable = target.getDeclaredMethod("getFallbackObservable");
            if (getFallbackObservable != null) {
                getFallbackObservable.addScopedInterceptor(BasicMethodInterceptor.class, va(HystrixPluginConstants.HYSTRIX_INTERNAL_SERVICE_TYPE), HystrixPluginConstants.HYSTRIX_COMMAND_EXECUTION_SCOPE, ExecutionPolicy.ALWAYS);
            }
            return target.toBytecode();
        }
Any Pinpoint profiler plugin must implement ProfilerPlugin interface.
ProfilerPlugin declares only one method {@link #setup(ProfilerPluginSetupContext)}.
You should implement the method to do whatever you need to setup your plugin with the passed ProfilerPluginSetupContext object.

@author Jiaqi Feng
@author HyunGil Jeong
agent-module/plugins/hystrix/src/main/java/com/navercorp/pinpoint/plugin/hystrix/HystrixPlugin.java