private void validateShape(
            Set<ShapeId> serviceAuth,
            ServiceShape service,
            Shape shape,
            List<ValidationEvent> events
    ) {
        if (shape.hasTrait(AuthTrait.ID)) {
            AuthTrait authTrait = shape.expectTrait(AuthTrait.class);
            Set<ShapeId> appliedAuthTraitValue = new TreeSet<>(authTrait.getValueSet());
            appliedAuthTraitValue.removeAll(serviceAuth);

            if (!appliedAuthTraitValue.isEmpty()) {
                events.add(danger(shape,
                        authTrait,
                        String.format(
                                "auth trait applies authentication that is not configured on the service shape, `%s`: %s",
                                service.getId(),
                                appliedAuthTraitValue)));
            }
        }
    }
All {@code @auth} trait values referenced from an operation must refer
to authentication traits applied to service shapes that enclose the
operation.
smithy-model/src/main/java/software/amazon/smithy/model/validation/validators/AuthTraitValidator.java