private static @Nullable XmlTag getAnchor(@NotNull XmlTag contextTag, Editor editor, XmlElementDescriptor selected) {
    XmlContentDFA contentDFA = XmlContentDFA.getContentDFA(contextTag);
    int offset = editor.getCaretModel().getOffset();
    if (contentDFA == null) {
      return null;
    }
    XmlTag anchor = null;
    boolean previousPositionIsPossible = true;
    for (XmlTag subTag : contextTag.getSubTags()) {
      if (contentDFA.getPossibleElements().contains(selected)) {
        if (subTag.getTextOffset() > offset) {
          break;
        }
        anchor = subTag;
        previousPositionIsPossible = true;
      }
      else {
        previousPositionIsPossible = false;
      }
      contentDFA.transition(subTag);
    }
    return previousPositionIsPossible ? null : anchor;
  }
private static @Nullable XmlTag getAnchor(@NotNull XmlTag contextTag, Editor editor, XmlElementDescriptor selected)