@Override
    public Iterator<T> iterator() {
        return new FilteredIterator<>(shapes.iterator(), shapeType);
    }
Provides a view of a set returned by the getXwithTrait methods so that only
shapes of a specific type are treated as present within the set.

@param <T> Type of shape to project out of the Set.
smithy-model/src/main/java/software/amazon/smithy/model/ShapeTypeFilteredSet.java