private void crawlStructuredShape(Shape shape) {
            if (leftValue != null && rightValue != null && leftValue.isObjectNode() && rightValue.isObjectNode()) {
                ObjectNode leftObj = leftValue.expectObjectNode();
                ObjectNode rightObj = rightValue.expectObjectNode();
                for (MemberShape member : shape.members()) {
                    Node leftValue = leftObj.getMember(member.getMemberName()).orElse(null);
                    Node rightValue = rightObj.getMember(member.getMemberName()).orElse(null);
                    if (leftValue != null || rightValue != null) {
                        crawlContents(model,
                                startingShape,
                                trait,
                                member,
                                leftValue,
                                rightValue,
                                events,
                                path + '/' + member.getMemberName());
                    }
                }
            }
        }
Traits in this list have special backward compatibility rules and can't be validated here.
smithy-diff/src/main/java/software/amazon/smithy/diff/evaluators/ModifiedTrait.java