class ReflectionUtil {

    public Optional<Object> getParameter(ProceedingJoinPoint proceedingJoinPoint, MethodSignature methodSignature, Class annotation) {
        Optional<Parameter> optionalParameter = Arrays.stream(methodSignature.getMethod().getParameters())
                .filter(parameter -> parameter.isAnnotationPresent(annotation))
                .findFirst();
        if (optionalParameter.isPresent()) {
            int parameterIndex = Lists.newArrayList(methodSignature.getMethod().getParameters()).indexOf(optionalParameter.get());
            return Optional.ofNullable(proceedingJoinPoint.getArgs()[parameterIndex]);
        }
        return Optional.empty();
    }

}