private List<Path> searchFromShapeToSet(ToShapeId startingShape, Collection<Shape> candidates) {
        Shape shape = model.getShape(startingShape.toShapeId()).orElse(null);
        if (shape == null || candidates.isEmpty()) {
            return ListUtils.of();
        } else {
            return new Search(reverseProvider, shape, candidates, filter).execute();
        }
    }
Finds all of the possible paths from the starting shape to all shapes
connected to the starting shape that match the given selector.

@param startingShape Starting shape to find the paths from.
@param targetSelector Selector that matches shapes to find the path to.
@return Returns the list of matching paths.
smithy-model/src/main/java/software/amazon/smithy/model/selector/PathFinder.java