private Stream<ChangedShape<MemberShape>> changedInputMembers(Differences differences) {
        return differences.changedShapes(StructureShape.class)
                .filter(change -> change.isTraitAdded(InputTrait.ID) || change.isTraitRemoved(InputTrait.ID))
                // Find all members that existed before and exist now.
                .flatMap(change -> change.getNewShape()
                        .members()
                        .stream()
                        .map(newMember -> {
                            MemberShape old = change.getOldShape().getAllMembers().get(newMember.getMemberName());
                            return old == null ? null : new ChangedShape<>(old, newMember);
                        })
                        .filter(Objects::nonNull));
    }
Validates that only backward compatible changes are made to
structure member nullability to ensure that if something was
previously nullable to clients then it continue to be nullable
and vice versa.
smithy-diff/src/main/java/software/amazon/smithy/diff/evaluators/ChangedNullability.java