private static void evaluateMember(
            ShapeType oldShapeType,
            List<String> results,
            MemberShape oldMember,
            MemberShape newMember
    ) {
        String memberSlug = oldShapeType == ShapeType.MAP ? oldMember.getMemberName() + " " : "";
        if (!oldMember.getTarget().equals(newMember.getTarget())) {
            results.add(String.format("Both the old and new shapes are a %s, but the old shape %stargeted "
                    + "`%s` while the new shape targets `%s`",
                    oldShapeType,
                    memberSlug,
                    oldMember.getTarget(),
                    newMember.getTarget()));
        } else if (!oldMember.getAllTraits().equals(newMember.getAllTraits())) {
            results.add(String.format("Both the old and new shapes are a %s, but their %smembers have "
                    + "differing traits. %s",
                    oldShapeType,
                    memberSlug,
                    createTraitDiffMessage(oldMember, newMember)));
        }
    }
These traits are traits that are known to significantly influence
code generation. Right now it just contains the enum trait, but
other traits could be added in the future as needed.
smithy-diff/src/main/java/software/amazon/smithy/diff/evaluators/ChangedMemberTarget.java