private List<Trait> getErrorTraitsFromStatusCode(Integer statusCode) {
        List<Trait> traits = new ArrayList<>();
        if (statusCode >= 400 && statusCode < 500) {
            traits.add(new ErrorTrait("client"));
        } else {
            traits.add(new ErrorTrait("server"));
        }
        traits.add(new HttpErrorTrait(statusCode));
        return traits;
    }
Deconflicts errors on operations that share the same status code by replacing
the conflicting errors with a synthetic error structure that contains hoisted
members that were bound to HTTP headers. The conflicting errors are added to
a union on the synthetic error.
smithy-model/src/main/java/software/amazon/smithy/model/transform/DeconflictErrorsWithSharedStatusCode.java