public static @Nullable CharSequence linesDiff(
    @NotNull CharSequence @NotNull [] lines1,
    @NotNull CharSequence @NotNull [] lines2
  ) throws FilesTooBigForDiffException {
    Change ch = buildChanges(lines1, lines2);
    if (ch == null) {
      return null;
    }
    StringBuilder sb = new StringBuilder();
    while (ch != null) {
      if (sb.length() != 0) {
        sb.append("====================").append("\n");
      }
      for (int i = ch.line0; i < ch.line0 + ch.deleted; i++) {
        sb.append('-').append(lines1[i]).append('\n');
      }
      for (int i = ch.line1; i < ch.line1 + ch.inserted; i++) {
        sb.append('+').append(lines2[i]).append('\n');
      }
      ch = ch.link;
    }
    return sb.toString();
  }
public static @Nullable CharSequence linesDiff(
    @NotNull CharSequence @NotNull [] lines1,
    @NotNull CharSequence @NotNull [] lines2
  )