private static void addGroupDiffStringIfDiffers(Map.Entry<String, NodeDiff> kv, List<String> diffs) {
        var v = kv.getValue();
        if (v.added.isEmpty() && v.removed.isEmpty()) {
            return;
        }
        var sb = new StringBuilder();
        sb.append(kv.getKey()).append(": ");
        if (!v.added.isEmpty()) {
            appendIntsAsSet(sb, "added", v.added);
        }
        if (!v.removed.isEmpty()) {
            if (!v.added.isEmpty()) {
                sb.append(' ');
            }
            appendIntsAsSet(sb, "removed", v.removed);
        }
        diffs.add(sb.toString());
    }
Immutable representation of the high-level difference between two distribution configs.

<code>toString()</code> gives a human-readable summary of the diff.

See <code>DistributionDiffCalculatorTest</code> for examples of diff output.
clustercontroller-core/src/main/java/com/yahoo/vespa/clustercontroller/core/DistributionDiff.java