private @Nullable DomElement computeValue(DomInvocationHandler parent) {
    if (StringUtil.isEmpty(myHref) || StringUtil.isEmpty(myXpointer)) {
      return null;
    }
    Matcher matcher = JDOMUtil.XPOINTER_PATTERN.matcher(myXpointer);
    if (!matcher.matches()) {
      return null;
    }
    String group = matcher.group(1);
    matcher = JDOMUtil.CHILDREN_PATTERN.matcher(group);
    if (!matcher.matches()) {
      return null;
    }
    String tagName = matcher.group(1);
    XmlFile file = parent.getFile();
    PsiFileImpl dummy = (PsiFileImpl)PsiFileFactory.getInstance(file.getProject()).createFileFromText(PlainTextLanguage.INSTANCE, myHref);
    dummy.setOriginalFile(file);
    PsiFileSystemItem fileSystemItem = new FileReferenceSet(dummy).resolve();
    if (fileSystemItem instanceof XmlFile) {
      DomFileElementImpl<DomElement> element = parent.getManager().getFileElement((XmlFile)fileSystemItem);
      if (element != null) {
        DomElement result = element.getRootElement();
        if (tagName.equals(result.getXmlElementName())) {
          String subTagName = matcher.group(2);
          if (subTagName != null) {
            CommonProcessors.FindFirstProcessor<DomElement> processor = new CommonProcessors.FindFirstProcessor<>();
            processChildrenWithLocalName(result, subTagName.substring(1), processor);
            return processor.getFoundValue();
          }
          return result;
        }
      }
    }
    return null;
  }
private @Nullable DomElement computeValue(DomInvocationHandler parent)