IProperty (@NotNull ULiteralExpression literal) { PsiElement sourcePsi = literal.getSourcePsi(); if (sourcePsi == null) return null; final Property property = (Property)sourcePsi.getUserData(CACHE); if (property == NULL) return null; if (property != null && isValid(property, literal)) return property; if (isI18nProperty(literal)) { final Iterable<PsiReference> references = UastLiteralUtils.getInjectedReferences(literal); for (PsiReference reference : references) { if (reference instanceof PsiPolyVariantReference) { final ResolveResult[] results = ((PsiPolyVariantReference)reference).multiResolve(false); for (ResolveResult result : results) { final PsiElement element = result.getElement(); if (element instanceof IProperty p) { sourcePsi.putUserData(CACHE, p); return p; } } } else { final PsiElement element = reference.resolve(); if (element instanceof IProperty p) { sourcePsi.putUserData(CACHE, p); return p; } } } } return null; }