@Override
    public ObjectNode updateNode(Context<? extends Trait> context, OpenApi openapi, ObjectNode node) {
        Map<String, Node> substitutions = context.getConfig().getSubstitutions();

        if (substitutions.isEmpty()) {
            return node;
        }

        LOGGER.warning("Using `substitutions` is discouraged. DO NOT use placeholders in your Smithy model "
                + "for properties that are used by other tools like SDKs or service frameworks; "
                + "placeholders should only ever be used in models for metadata that is specific to "
                + "generating OpenAPI artifacts.\n\n"
                + "Prefer safer alternatives like `jsonAdd`");

        return JsonSubstitutions.create(substitutions).apply(node).expectObjectNode();
    }
Substitutes JSON string values using the mapping defined in
{@code openapi.substitutions}.
smithy-openapi/src/main/java/software/amazon/smithy/openapi/fromsmithy/mappers/OpenApiJsonSubstitutions.java