@Override
        public List<ValidationEvent> validateScheme(
                Map<Identifier, Literal> authScheme,
                FromSourceLocation sourceLocation,
                BiFunction<FromSourceLocation, String, ValidationEvent> emitter
        ) {
            List<ValidationEvent> events = noExtraProperties(emitter,
                    sourceLocation,
                    authScheme,
                    ListUtils.of(RuleSetAuthSchemesValidator.NAME,
                            ID_SIGNING_NAME,
                            ID_SIGNING_REGION_SET,
                            ID_DISABLE_DOUBLE_ENCODING,
                            ID_DISABLE_NORMALIZE_PATH));

            // The `signingRegionSet` property will always be present.
            Optional<ValidationEvent> event = validatePropertyType(emitter,
                    authScheme.get(ID_SIGNING_REGION_SET),
                    ID_SIGNING_REGION_SET,
                    Literal::asTupleLiteral,
                    "an array<string>");
            // If we don't have a tuple, that's our main error.
            // Otherwise, validate each entry is a string.
            if (event.isPresent()) {
                events.add(event.get());
            } else {
                List<Literal> signingRegionSet = authScheme.get(ID_SIGNING_REGION_SET).asTupleLiteral().get();
                if (signingRegionSet.isEmpty()) {
                    events.add(emitter.apply(authScheme.get(ID_SIGNING_REGION_SET),
                            "The `signingRegionSet` property must not be an empty list."));
                } else {
                    for (Literal signingRegion : signingRegionSet) {
                        validatePropertyType(emitter,
                                signingRegion,
                                Identifier.of("signingRegionSet.Value"),
                                Literal::asStringLiteral,
                                "a string").ifPresent(events::add);
                    }
                }
            }

            // Validate shared Sigv4 properties.
            events.addAll(SigV4SchemeValidator.validateOptionalSharedProperties(authScheme, emitter));
            return events;
        }
Returns if a given auth scheme is equivalent to {@code aws.auth#sigv4a}.

@param authScheme name of the auth scheme.
@return whether the auth scheme is equivalent to {@code aws.auth#sigv4a}.
smithy-aws-endpoints/src/main/java/software/amazon/smithy/rulesengine/aws/language/functions/EndpointAuthUtils.java