@Override
    public void consumeMatches(Model model, StartingContext context, Consumer<ShapeMatch> shapeMatchConsumer) {
        // This is more optimized than using matches() and collecting to a Set
        // because it avoids creating streams and buffering the result of
        // pushing each shape into internal selectors.
        Collection<? extends Shape> startingShapes = getStartingShapes(model, context);
        pushShapes(model, startingShapes, (ctx, s) -> {
            shapeMatchConsumer.accept(new ShapeMatch(s, ctx.getVars()));
            return InternalSelector.Response.CONTINUE;
        });
    }
Uses parallel streams when the model size exceeds this number.
smithy-model/src/main/java/software/amazon/smithy/model/selector/WrappedSelector.java