PsiReference[] (PsiElement element, boolean isSoft) { TextRange textRange = ElementManipulators.getValueTextRange(element); if (textRange.isEmpty()) return PsiReference.EMPTY_ARRAY; String text = element.getText(); if (StringUtil.isEmptyOrSpaces(text)) return PsiReference.EMPTY_ARRAY; if (!isElementCanContainReference(element)) return PsiReference.EMPTY_ARRAY; if (XmlSuppressionProvider.isSuppressed(element, UNRESOLVED_MAVEN_PROPERTY_QUICKFIX_ID)) return PsiReference.EMPTY_ARRAY; MavenProject mavenProject = null; XmlTag propertiesTag = null; List<PsiReference> result = null; Matcher matcher = MavenPropertyResolver.PATTERN.matcher(textRange.substring(text)); while (matcher.find()) { String propertyName = matcher.group(1); int from; if (propertyName == null) { propertyName = matcher.group(2); from = matcher.start(2); } else { from = matcher.start(1); } TextRange range = TextRange.from(textRange.getStartOffset() + from, propertyName.length()); if (result == null) { result = new ArrayList<>(); mavenProject = findMavenProject(element); if (mavenProject == null) { propertiesTag = findPropertiesParentTag(element); if (propertiesTag == null) { return PsiReference.EMPTY_ARRAY; } } } PsiReference ref; if (mavenProject != null) { ref = new MavenPropertyPsiReference(mavenProject, element, propertyName, range, isSoft); } else { ref = new MavenContextlessPropertyReference(propertiesTag, element, range, true); } result.add(ref); } return result == null ? PsiReference.EMPTY_ARRAY : result.toArray(PsiReference.EMPTY_ARRAY); }