public Model mapShapes(Model model, Function<Shape, Shape> mapper) {
        return new MapShapes(mapper).transform(this, model);
    }
Maps over all shapes in the model using a mapping function, allowing
shapes to be replaced with completely different shapes or slightly
modified shapes.

<p>An exception is thrown if a mapper returns a shape with a different
shape ID or a different type.

@param model Model to transform.
@param mapper Mapping function that accepts a shape and returns a shape
 with the same ID.
@return Returns the transformed model.base.
smithy-model/src/main/java/software/amazon/smithy/model/transform/ModelTransformer.java