@Around("@annotation(com.linecorp.flagship4j.javaflagr.annotations.ControllerFeatureToggle)")
    public Object processControllerFeatureToggleAnnotation(ProceedingJoinPoint joinPoint) throws Throwable {
        log.info("start processing controllerFeatureToggle annotation");
        MethodSignature signature = (MethodSignature) joinPoint.getSignature();
        Method method = signature.getMethod();
        Annotation[][] parameterAnnotations = method.getParameterAnnotations();
        Object[] args = joinPoint.getArgs();
        ControllerFeatureToggle featureToggle = method.getAnnotation(ControllerFeatureToggle.class);

        Boolean isFlagOn = flagrService.isFeatureFlagOn(featureToggle.value());

        if (Boolean.FALSE.equals(isFlagOn)) {
            throw new FlagrApiNotFoundException();
        }

        outerlabel:
        for (int argIndex = 0; argIndex < args.length; argIndex++) {
            for (Annotation annotation : parameterAnnotations[argIndex]) {
                if (annotation instanceof VariantKey) {
                    args[argIndex] = isFlagOn;
                    break outerlabel;
                }
            }
        }

        return joinPoint.proceed(args);
    }
@Test
    public void processFlagrMethodWithControllerFeatureToggleTest() throws Throwable {
        String methodName = "methodWithControllerFeatureToggle";
        FlagrAnnotationTest flagrAnnotationTest = new FlagrAnnotationTest();
        Method method = Arrays.stream(flagrAnnotationTest.getClass().getMethods()).filter(m -> m.getName().equals(methodName)).findFirst().get();

        when(joinPoint.getSignature()).thenReturn(signature);
        when(signature.getMethod()).thenReturn(method);
        when(joinPoint.getArgs()).thenReturn(args);
        when(flagrService.isFeatureFlagOn(any(String.class)))
                .thenReturn(givenPostEvaluationResponse().getVariantKey().equals(EffectiveVariant.ON.toValue()));
        when(joinPoint.proceed(any(Object[].class))).thenReturn(args);

        Object returnArgs = featureToggleAspect.processControllerFeatureToggleAnnotation(joinPoint);

        assertEquals(args, returnArgs);
        verify(joinPoint, times(1)).getSignature();
        verify(signature, times(1)).getMethod();
        verify(joinPoint, times(1)).getArgs();
        verify(signature, times(1)).getMethod();
        verify(flagrService, times(1)).isFeatureFlagOn(any(String.class));
        verify(joinPoint, times(1)).proceed(any(Object[].class));
    }