@SuppressWarnings("unchecked")
    public <T extends Shape> Stream<ChangedShape<T>> changedShapes(Class<T> type) {
        return changedShapes()
                .filter(change -> type.isInstance(change.getOldShape()) && type.isInstance(change.getNewShape()))
                .map(change -> (ChangedShape<T>) change);
    }
Gets all changed shapes of a specific type.

@param type Type of shape to find.
@param <T> Type of shape.
@return Returns a stream of matching changed shapes.
smithy-diff/src/main/java/software/amazon/smithy/diff/Differences.java