private static String randomDiffWith(String... fieldsAndValues) {
Random random = new Random();
List<Diff> diffs = new ArrayList<>();
for (int i = 0; i < fieldsAndValues.length; i++) {
int oldOrNew = random.nextInt(3);
String value = fieldsAndValues[i + 1];
diffs.add(new Diff(fieldsAndValues[i], oldOrNew <= 2 ? value : null, oldOrNew >= 2 ? value : null));
i++;
}
IntStream.range(0, random.nextInt(5))
.forEach(i -> diffs.add(new Diff(randomAlphabetic(10), random.nextBoolean() ? null : randomAlphabetic(11), random.nextBoolean() ? null : randomAlphabetic(12))));
Collections.shuffle(diffs);
FieldDiffs res = new FieldDiffs();
diffs.forEach(diff -> res.setDiff(diff.field, diff.oldValue, diff.newValue));
return res.toEncodedString();
}