@Override
    public Stream<ShapeMatch> matches(Model model, StartingContext startingContext) {
        Collection<? extends Shape> startingShapes = getStartingShapes(model, startingContext);
        NeighborProviderIndex index = NeighborProviderIndex.of(model);
        List<Set<Shape>> computedRoots = computeRoots(model);
        return streamStartingShapes(startingShapes).flatMap(shape -> {
            List<ShapeMatch> result = new ArrayList<>();
            delegate.push(new Context(model, index, computedRoots), shape, (ctx, s) -> {
                result.add(new ShapeMatch(s, ctx.getVars()));
                return InternalSelector.Response.CONTINUE;
            });
            return result.stream();
        });
    }
Uses parallel streams when the model size exceeds this number.
smithy-model/src/main/java/software/amazon/smithy/model/selector/WrappedSelector.java