@Override
  public String getLanguagePlaceholderText(@NotNull ASTNode node, @NotNull TextRange range) {
    final PsiElement psi = node.getPsi();
    FoldingBuilder foldingBuilder = LanguageFolding.INSTANCE.forLanguage(psi.getLanguage());
    if (foldingBuilder == this || foldingBuilder instanceof CompositeFoldingBuilder) {
      if (psi instanceof XmlAttribute && "src".equalsIgnoreCase(((XmlAttribute)psi).getName())) {
        return "data:";
      }
      if (psi instanceof XmlTag ||
          psi instanceof XmlComment ||
          psi instanceof XmlAttribute ||
          psi instanceof XmlConditionalSection) {
        return "...";
      }
      if (isEntity(psi)) {
        final String value = getEntityPlaceholder(psi);
        if (value != null) return value;
      }
      return null;
    }

    // can't call CustomFoldingBuilder.getLanguagePlaceholderText() directly but this CustomFoldingBuilder.getPlaceholderText() will do just fine
    return foldingBuilder instanceof CustomFoldingBuilder ? ((CustomFoldingBuilder)foldingBuilder).getPlaceholderText(node, range) : null;
  }
@Override
  public String getLanguagePlaceholderText(@NotNull ASTNode node, @NotNull TextRange range)