private boolean isIgnoredShape(Shape shape) {
        return (shape instanceof SimpleShape && !shape.hasTrait(EnumTrait.class))
                || shape.isResourceShape()
                || shape.isServiceShape()
                || shape.isOperationShape()
                || shape.isMemberShape()
                || (Prelude.isPreludeShape(shape) && shape.hasTrait(PrivateTrait.ID));
    }
Automatically de-conflicts map shapes, list shapes, and set shapes
by sorting conflicting shapes by ID and then appending a formatted
version of the shape ID namespace to the colliding shape.

<p>Simple types are never generated at the top level because they
are always inlined into complex shapes; however, string shapes
marked with the enum trait are never allowed to conflict since
they can easily drift away from compatibility over time.
Structures and unions are not allowed to conflict either.
smithy-jsonschema/src/main/java/software/amazon/smithy/jsonschema/DeconflictingStrategy.java