private void commit(List<T> newData) {
    Diff.Change change;
    try {
      change = Diff.buildChanges(myData.toArray(), newData.toArray(), HashingStrategy.identity());
    }
    catch (FilesTooBigForDiffException e) {
      replace(0, myData.size(), newData);
      return;
    }
    if (change != null) {
      ArrayList<Diff.Change> list = change.toList();
      Collections.reverse(list);
      for (Diff.Change ch : list) {
        replace(ch.line0, ch.line0 + ch.deleted, newData.subList(ch.line1, ch.line1 + ch.inserted));
      }
      assert myData.equals(newData);
    }
  }
private void commit(List<T> newData)