PsiElement (@NotNull MavenDomProjectModel projectDom, @NotNull final String path, @NotNull final Set<DomElement> recursionGuard) { if (!recursionGuard.add(projectDom)) return null; String pathWithProjectPrefix = "project." + path; if (!MavenModelClassesProperties.isPathValid(MavenModelClassesProperties.MAVEN_PROJECT_CLASS, path) && !MavenModelClassesProperties.isPathValid(MavenModelClassesProperties.MAVEN_MODEL_CLASS, path)) { if (!schemaHasProperty(MavenSchemaProvider.MAVEN_PROJECT_SCHEMA_URL, pathWithProjectPrefix)) return null; } PsiElement result = MavenDomUtil.findTag(projectDom, pathWithProjectPrefix); if (result != null) return result; if (pathWithProjectPrefix.equals("project.groupId") || pathWithProjectPrefix.equals("project.version")) { return MavenDomUtil.findTag(projectDom, "project.parent." + path); } result = new MavenDomProjectProcessorUtils.DomParentProjectFileProcessor<PsiElement>(myProjectsManager) { @Override protected PsiElement doProcessParent(VirtualFile parentFile) { MavenDomProjectModel parentProjectDom = MavenDomUtil.getMavenDomProjectModel(myProject, parentFile); if (parentProjectDom == null) return null; return resolveModelProperty(parentProjectDom, path, recursionGuard); } }.process(projectDom); if (result != null) return result; return myElement; }