private static @NotNull List<@NotNull PlainText> preparse(@NotNull PsiSnippetDocTagBody body) {
    List<PlainText> output = new ArrayList<>();
    PsiElement[] children = body.getChildren();
    boolean first = true;
    for (PsiElement element : children) {
      if (element instanceof PsiDocToken token) {
        IElementType tokenType = token.getTokenType();
        if (tokenType.equals(JavaDocTokenType.DOC_COMMENT_LEADING_ASTERISKS)) continue;
        if (tokenType.equals(JavaDocTokenType.DOC_COMMENT_DATA)) {
          output.add(new PlainText(element.getTextRangeInParent(), element.getText()));
        }
      }
      else if (element instanceof PsiWhiteSpace) {
        String text = element.getText();
        if (text.contains("\n")) {
          int idx = output.size() - 1;
          if (idx >= 0 && !output.get(idx).content().endsWith("\n")) {
            output.set(idx, new PlainText(output.get(idx).range(), output.get(idx).content() + "\n"));
          }
          else if (first) {
            first = false;
          }
          else {
            output.add(new PlainText(element.getTextRange(), "\n"));
          }
        }
      }
    }
    return output;
  }
private static @NotNull List<@NotNull PlainText> preparse(@NotNull PsiSnippetDocTagBody body)