private void addAllInternal(T[] newItems) { final boolean forceBatchedUpdates = !(mCallback instanceof BatchedCallback); if (forceBatchedUpdates) { beginBatchedUpdates(); } mOldData = mData; mOldDataStart = 0; mOldDataSize = mSize; Arrays.sort(newItems, mCallback); // Arrays.sort is stable. final int newSize = deduplicate(newItems); if (mSize == 0) { mData = newItems; mSize = newSize; mMergedSize = newSize; mCallback.onInserted(0, newSize); } else { merge(newItems, newSize); } mOldData = null; if (forceBatchedUpdates) { endBatchedUpdates(); } }