@Contract(mutates = "param1")
  private void generateSnippetValue(@NotNull StringBuilder buffer, @NotNull PsiInlineDocTag tag) {
    if (!(tag instanceof PsiSnippetDocTagImpl snippetTag)) {
      LOG.error("Snippet tag must have type PsiSnippetDocTag, but was" + tag.getClass(), tag.getText());
      return;
    }

    PsiSnippetDocTagValue value = snippetTag.getValueElement();
    if (value == null) {
      appendPlainText(buffer, snippetTag.getText());
      return;
    }
    PsiSnippetDocTagBody body = value.getBody();
    PsiSnippetAttributeList list = value.getAttributeList();
    PsiSnippetAttribute regionAttribute = list.getAttribute(PsiSnippetAttribute.REGION_ATTRIBUTE);
    String region = regionAttribute == null || regionAttribute.getValue() == null ? null :
                    regionAttribute.getValue().getValue();
    PsiSnippetAttribute idAttr = list.getAttribute(PsiSnippetAttribute.ID_ATTRIBUTE);
    String id = idAttr == null || idAttr.getValue() == null ? null : idAttr.getValue().getValue();
    String preTag = id == null ? "<pre>" : "<pre id=\"" + StringUtil.escapeXmlEntities(id) + "\">";
    if (body != null) {
      List<Pair<PsiElement, TextRange>> files =
        InjectedLanguageManager.getInstance(snippetTag.getProject()).getInjectedPsiFiles(snippetTag);
      PsiElement element = files != null ? files.get(0).first : null;
      buffer.append(preTag);
      generateSnippetBody(buffer, element != null ? element : body, region);
      buffer.append("</pre>");
    }
    else {
      PsiSnippetAttribute refAttribute = list.getAttribute(PsiSnippetAttribute.CLASS_ATTRIBUTE);
      if (refAttribute == null) {
        refAttribute = list.getAttribute(PsiSnippetAttribute.FILE_ATTRIBUTE);
      }
      if (refAttribute != null) {
        PsiSnippetAttributeValue attrValue = refAttribute.getValue();
        if (attrValue != null) {
          PsiReference ref = attrValue.getReference();
          PsiElement resolved = ref == null ? null : ref.resolve();
          if (resolved instanceof PsiFile file) {
            buffer.append(preTag);
            generateSnippetBody(buffer, file, region);
            buffer.append("</pre>");
          }
          else {
            buffer.append(getSpanForUnresolvedItem()).append(JavaBundle.message("javadoc.snippet.not.found",
                                                                                attrValue.getValue()))
              .append("</span>");
          }
        }
      }
    }
  }
@Contract(mutates = "param1")
  private void generateSnippetValue(@NotNull StringBuilder buffer, @NotNull PsiInlineDocTag tag)