@Override
    public List<ValidationEvent> evaluate(Differences differences) {
        Stream<ChangedShape<?>> changes = Stream.concat(
                differences.changedShapes(StructureShape.class),
                differences.changedShapes(UnionShape.class));

        return changes
                .filter(diff -> isUnordered(diff.getOldShape().members(), diff.getNewShape().members()))
                .map(diff -> danger(diff.getNewShape(),
                        String.format(
                                "%s shape members were reordered. This can cause ABI compatibility issues in languages "
                                        + "like C and C++ where the layout and alignment of a data structure matters.",
                                diff.getOldShape().getType())))
                .collect(Collectors.toList());
    }
Creates a DANGER event when a structure or union member is added
anywhere other than the end of the previous definition or the
member order is changed.
smithy-diff/src/main/java/software/amazon/smithy/diff/evaluators/ChangedMemberOrder.java