@Override
        public Node serviceShape(ServiceShape shape) {
            ObjectNode.Builder serviceBuilder = createTypedBuilder(shape);

            if (!StringUtils.isBlank(shape.getIntroducedVersion())) {
                serviceBuilder.withMember("version", Node.from(shape.getIntroducedVersion()));
            }

            serviceBuilder.withOptionalMember("operations", createOptionalIdList(shape.getIntroducedOperations()));
            serviceBuilder.withOptionalMember("resources", createOptionalIdList(shape.getIntroducedResources()));
            serviceBuilder.withOptionalMember("errors", createOptionalIdList(shape.getIntroducedErrors()));

            if (!shape.getIntroducedRename().isEmpty()) {
                ObjectNode.Builder renameBuilder = Node.objectNodeBuilder();
                for (Map.Entry<ShapeId, String> entry : shape.getIntroducedRename().entrySet()) {
                    renameBuilder.withMember(entry.getKey().toString(), entry.getValue());
                }
                serviceBuilder.withMember("rename", renameBuilder.build());
            }

            // Serialize traits last, after named structure properties.
            return serializeAllTraits(shape, serviceBuilder).build();
        }
Sets the IDL version to serialize. Defaults to 2.0.

<p>Version "1.0" serialization cannot be used with {@link #includePrelude}.

@param version IDL version to set. Can be "1", "1.0", "2", or "2.0".
               "1" and "2" are normalized to "1.0" and "2.0".
@return Returns the builder.
smithy-model/src/main/java/software/amazon/smithy/model/shapes/ModelSerializer.java