@Override
    public List<ValidationEvent> validate(Model model) {
        ServiceIndex serviceIndex = ServiceIndex.of(model);
        HttpBindingIndex bindingIndex = HttpBindingIndex.of(model);
        TopDownIndex topDownIndex = TopDownIndex.of(model);
        return model.shapes(ServiceShape.class)
                .filter(service -> usesAwsProtocol(service, serviceIndex))
                .flatMap(service -> validateService(model, service, bindingIndex, topDownIndex).stream())
                .collect(Collectors.toList());
    }
Ensures that the http payload trait is only bound to structures, unions,
documents, blobs, or strings for AWS protocols.
smithy-aws-traits/src/main/java/software/amazon/smithy/aws/traits/protocols/ProtocolHttpPayloadValidator.java