@Override
    public Response push(Context context, Shape shape, Receiver next) {
        // Buffer the result of piping the shape through the selector
        // so that it can be retrieved through context vars.
        Set<Shape> captures = selector.pushResultsToCollection(context, shape, new HashSet<>());
        context.getVars().put(variableName, captures);

        // Now send the received shape to the next receiver.
        return next.apply(context, shape);
    }
Stores a variable in the {@link Context} object using a selector.

<p>The result of evaluating the selector is stored in the {@code Context}
using the given variable name. This selector is much like the ':test()'
function in that it does not change the current node. Selectors run after
a {@code VariableStoreSelector} start processing shapes from the same
point that the variable capture occurred.
smithy-model/src/main/java/software/amazon/smithy/model/selector/VariableStoreSelector.java