public static BreakingChangeRule fromNode(Node node) {
            ObjectNode obj = node.expectObjectNode();
            NodePointer path = obj.getStringMember("path").map(NodePointer::fromNode).orElse(null);
            Severity severity = obj.getStringMember("severity").map(Severity::fromNode).orElse(null);
            ChangeType change = ChangeType.fromNode(obj.expectStringMember("change"));
            String message = obj.getStringMemberOrDefault("message", null);
            if (severity == Severity.SUPPRESSED) {
                throw new ExpectationNotMetException("Invalid severity", obj.expectMember("severity"));
            }
            return new BreakingChangeRule(path, severity, change, message);
        }
Creates a TraitDiffRule from a Node.

@param node Node to deserialize.
@return Returns the created TraitDiffRule.
@throws ExpectationNotMetException if the node is invalid.
smithy-model/src/main/java/software/amazon/smithy/model/traits/TraitDefinition.java