@Override
  public void invoke(@NotNull Project project, Editor editor, PsiFile file) throws IncorrectOperationException {
    XmlTag tag = getTag(editor, file);
    if (tag == null) return;

    TextRange range = tag.getTextRange();
    ASTNode startEnd = XmlChildRole.START_TAG_END_FINDER.findChild(tag.getNode());
    ASTNode name = XmlChildRole.START_TAG_NAME_FINDER.findChild(tag.getNode());

    TextRange reformatRange = new TextRange(name != null ? name.getTextRange().getEndOffset() + 1 : range.getStartOffset() + 1,
                                        startEnd != null ? startEnd.getTextRange().getEndOffset() - 1 : range.getEndOffset());
    RangeMarker marker = editor.getDocument().createRangeMarker(reformatRange);

    new RearrangeCodeProcessor(new ReformatCodeProcessor(project, file, reformatRange, false)) {
      @Override
      public Collection<TextRange> getRangesToFormat(@NotNull PsiFile file, boolean processChangedTextOnly) {
        return Collections.singleton(marker.getTextRange());
      }
    }.run();
    editor.getCaretModel().moveToOffset(reformatRange.getStartOffset());
  }
@Override
  public void invoke(@NotNull Project project, Editor editor, PsiFile file)