String[] (int level) { Collection<String> result = new HashSet<>(); String value = mySelectedString.trim(); boolean addUnqualifiedForm = true; XmlTag parent = PsiTreeUtil.getParentOfType(myContext, XmlTag.class, false); DomElement domParent = DomUtil.getDomElement(parent); if (domParent != null) { DomElement domSuperParent = domParent.getParent(); DomFileElement<DomElement> domFile = DomUtil.getFileElement(domParent); if (domSuperParent != null && domFile != null && domFile.getRootElement() == domSuperParent) { value = domSuperParent.getXmlElementName(); addUnqualifiedForm = false; } else { MavenDomShortArtifactCoordinates coordinates = DomUtil.getParentOfType(domParent, MavenDomShortArtifactCoordinates.class, false); if (coordinates != null && !(coordinates instanceof MavenDomProjectModel) && domParent != coordinates.getArtifactId()) { String artifactId = coordinates.getArtifactId().getStringValue(); if (!StringUtil.isEmptyOrSpaces(artifactId)) { value = artifactId; addUnqualifiedForm = false; } } } } while (true) { String newValue = value.replaceAll(" ", " "); if (newValue.equals(value)) break; value = newValue; } value = value.replaceAll(" ", "."); List<String> parts = StringUtil.split(value, "."); String shortValue = parts.get(parts.size() - 1); if (addUnqualifiedForm) { result.add(value); result.add(shortValue); } String suffix = ""; while (parent != null && level != 0) { suffix = parent.getName() + suffix; result.add(suffix); result.add(value + "." + suffix); result.add(shortValue + "." + suffix); suffix = "." + suffix; parent = parent.getParentTag(); level--; } result = new ArrayList<>(result); ((List)result).sort(CodeStyleSettingsManager.getSettings(myProject).getCustomSettings(JavaCodeStyleSettings.class).PREFER_LONGER_NAMES ? StringLenComparator.getDescendingInstance() : StringLenComparator.getInstance()); return ArrayUtilRt.toStringArray(result); }