private Lock getLock(Class<?> targetClass, Method method, Object[] args, Synchronized annotation) {
logger.debug("Fetching lock for call [{}] on targetClass [{}] with SpEl condition [{}], SpEl discriminator " +
"[{}], and SpEl id [{}] on thread {}", new Object[]{method.getName(), targetClass.getName(),
annotation.condition(), annotation.discriminator(), annotation.id(), Thread.currentThread().getId()});
EvaluationContext context = getEvaluationContext(targetClass, method, args);
if (conditionPasses(annotation, method, context)) {
logger.debug("Condition check passes for SpEl condition [{}] on thread {}", annotation.condition(),
Thread.currentThread().getId());
String discriminator = getDiscriminator(annotation, method, context);
String id = getId(annotation, method, context);