void (@NotNull PsiReferenceExpression expression) { super.visitReferenceExpression(expression); if (isComputedPropertyExpression(expression)) { return; } final PsiElement resolvedExpression = expression.resolve(); if (resolvedExpression instanceof PsiField field) { if (!field.hasModifierProperty(PsiModifier.FINAL)) { return; } PsiExpression initializer; PsiExpression highlightedExpression; if (field.getContainingFile() == expression.getContainingFile()) { highlightedExpression = initializer = PsiUtil.skipParenthesizedExprDown(field.getInitializer()); } else { initializer = PsiUtil.skipParenthesizedExprDown(PsiFieldImpl.getDetachedInitializer(field)); highlightedExpression = expression; } String key = computeStringValue(initializer); visitPropertyKeyAnnotationParameter(expression, key, highlightedExpression); } else if (resolvedExpression instanceof PsiLocalVariable) { checkLocalVariable((PsiLocalVariable)resolvedExpression, expression); } }