private Optional<ValidationEvent> validateBindings(Model model, Collection<HttpBinding> payloadBindings) {
        for (HttpBinding binding : payloadBindings) {
            if (!payloadBoundToValidType(model, binding.getMember().getTarget())) {
                return Optional.of(error(binding.getMember(),
                        "AWS Protocols only support binding the "
                                + "following shape types to the payload: string, blob, structure, union, and document"));
            }
        }
        return Optional.empty();
    }
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