@Around("execution(@ConfigureAgentStackTraceInitialDelayMillis void org.jmonitor..*Test.*())") public void aroundConfigureAgentStackTraceInitialDelayMillisPointcut( ProceedingJoinPoint joinPoint) throws Throwable { ConfigureAgentStackTraceInitialDelayMillis annotation = getAnnotation(ConfigureAgentStackTraceInitialDelayMillis.class, joinPoint); AgentConfigurationImpl mutableConfiguration = getMutableAgentConfiguration(); int previousValue = mutableConfiguration.getStackTraceInitialDelayMillis(); // set it to annotated value mutableConfiguration.setStackTraceInitialDelayMillis(annotation.value()); ConfigurationServiceImpl.getInstance().updateAgentConfiguration(mutableConfiguration); try { joinPoint.proceed(); } finally { // set it back to original value mutableConfiguration.setStackTraceInitialDelayMillis(previousValue); ConfigurationServiceImpl.getInstance().updateAgentConfiguration(mutableConfiguration); } }