@Override
    public void visitReferenceExpression(@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);
      }
    }
@Override
    public void visitReferenceExpression(@NotNull PsiReferenceExpression expression)