code: @NonNull
      public DiffUtil.DiffResult calculateDiff(@NonNull final List<T> newItems) {
          final ArrayList<T> frozenList;
          synchronized (LIST_LOCK) {
              frozenList = new ArrayList<>(list);
          }
          return doCalculateDiff(frozenList, newItems);
      }
docs: Calculates the list of update operations that can convert this list into the given one.
  
  @param newItems The items that this list will be set to.
  @return A DiffResult that contains the information about the edit sequence to covert this
  list into the given one.