@Override
    public void before(Object target, Object[] args) {
        Trace trace = traceContext.currentTraceObject();
        if (trace == null) {
            return;
        }

        SpanEventRecorder recorder = trace.traceBlockBegin();
        recorder.recordServiceType(HbasePluginConstants.HBASE_ASYNC_CLIENT);
        recorder.recordApi(descriptor, args);

        // To trace async invocations, you have to create AsyncContext like below, automatically attaching it to the current span event.
        AsyncContext asyncContext = recorder.recordNextAsyncContext();

        // Finally, you have to pass the AsyncContext to the thread which handles the async task.
        // How to do this depends on the target library implementation.
        scope.getCurrentInvocation().setAttachment(asyncContext);
    }
Instantiates a new Hbase client main interceptor.

@param traceContext the trace context
@param descriptor   the descriptor
@param scope        the scope
agent-module/plugins/hbase/src/main/java/com/navercorp/pinpoint/plugin/hbase/interceptor/HbaseClientMainInterceptor.java