public Model filterShapes(Model model, Predicate<Shape> predicate) {
        return new FilterShapes(predicate).transform(this, model);
    }
Filters shapes out of the model that do not match the given predicate.

<p>This filter will never filter out shapes that are part of the
prelude. Use the {@link #removeShapes} method directly if you need
to remove traits that are in the prelude.

@param model Model to transform.
@param predicate Predicate that filters shapes.
@return Returns the transformed model.
smithy-model/src/main/java/software/amazon/smithy/model/transform/ModelTransformer.java