@Override
    public void apply(Shape shape, Node value, Context context, Emitter emitter) {
        if (!(shape.isFloatShape() || shape.isDoubleShape()) || !value.isStringNode()) {
            return;
        }
        String nodeValue = value.expectStringNode().getValue();
        if (!NON_NUMERIC_FLOAT_VALUES.contains(nodeValue)) {
            emitter.accept(value,
                    String.format(
                            "Value for `%s` must either be numeric or one of the following strings: [\"%s\"], but was \"%s\"",
                            shape.getId(),
                            String.join("\", \"", NON_NUMERIC_FLOAT_VALUES),
                            nodeValue));
        }
    }
Validates the specific set of non-numeric values allowed for floats and doubles.
smithy-model/src/main/java/software/amazon/smithy/model/validation/node/NonNumericFloatValuesPlugin.java