private boolean validate(Object target, Object[] args) {
        int argsLength = ArrayUtils.getLength(args);
        if (argsLength == 0) {
            if (isDebug) {
                logger.debug("Expected arguments, but found none.");
            }
            return false;
        }
        if (argsLength != 3) {
            if (isDebug) {
                logger.debug("Expected 3 arguments, but found {}", args.length);
            }
            return false;
        }
        Object method = args[0];
        if (method == null) {
            // valid, but this won't be null producer side
            return false;
        }
        if (!(method instanceof Method)) {
            if (isDebug) {
                logger.debug("Expected args[0] to be {}, but was {}", Method.class.getName(), method.getClass().getName());
            }
            return false;
        }
        if (!AMQP_METHOD_TO_INTERCEPT.equals(((Method) method).protocolMethodName())) {
            return false;
        }
        Object contentHeader = args[1];
        if (!(contentHeader instanceof AMQP.BasicProperties)) {
            // skip header injection for null, or non AMQP.BasicProperties header
            return false;
        }
        if (!(contentHeader instanceof HeadersFieldSetter)) {
            if (isDebug) {
                logger.debug("Invalid args[1]({}) object. Need field setter({})", contentHeader, HeadersFieldSetter.class.getName());
            }
            return false;
        }
        return true;
    }
<p>{@code AMQContentHeader} received as an argument to the constructor is sharable and can be reused, such as
{@code MessageProperties.MINIMAL_BASIC}. Any changes made to it (ie injecting pinpoint headers) may have undesirable
consequences.

<p>Hence, we make a copy via {@code ChannelAspect} and add pinpoint headers to it when propagating trace, and have
{@code AMQCommand} use this.

@author HyunGil Jeong

@see com.navercorp.pinpoint.plugin.rabbitmq.client.aspect.ChannelAspect
agent-module/plugins/rabbitmq/src/main/java/com/navercorp/pinpoint/plugin/rabbitmq/client/interceptor/AMQCommandConstructInterceptor.java