@Override
  public @Nullable String getPlaceholderText(@NotNull ASTNode node) {
    final IElementType type = node.getElementType();
    if (type == JsonElementTypes.OBJECT) {
      final JsonObject object = node.getPsi(JsonObject.class);
      final List<JsonProperty> properties = object.getPropertyList();
      JsonProperty candidate = null;
      for (JsonProperty property : properties) {
        final String name = property.getName();
        final JsonValue value = property.getValue();
        if (value instanceof JsonLiteral) {
          if ("id".equals(name) || "name".equals(name)) {
            candidate = property;
            break;
          }
          if (candidate == null) {
            candidate = property;
          }
        }
      }
      if (candidate != null) {
        return "{\"" + candidate.getName() + "\": " + candidate.getValue().getText() + "...}";
      }
      else {
        return JsonCollectionPsiPresentationUtils.getCollectionPsiPresentationText(properties.size());
      }
    }
    else if (type == JsonElementTypes.ARRAY && node.getPsi() instanceof JsonArray arrayNode) {
      return JsonCollectionPsiPresentationUtils.getCollectionPsiPresentationText(arrayNode);
    }
    else if (type == JsonElementTypes.LINE_COMMENT) {
      return "//...";
    }
    else if (type == JsonElementTypes.BLOCK_COMMENT) {
      return "/*...*/";
    }
    return "...";
  }
@Override
  public @Nullable String getPlaceholderText(@NotNull ASTNode node)