                     // Look for a matching deletion
                     for (index, otherChange) in changes.enumerated() {
                         guard case .deletion(let oldItem, let oldIndexPath) = otherChange else { continue }
-                        guard identicalItems(oldItem, newItem) else { continue }
+                        guard itemsAreIdentical(oldItem, newItem) else { continue }
                         let rowChanges = changedValues(from: oldItem.row, to: newItem.row)
                         if oldIndexPath == newIndexPath {
                             return (TableViewChange.update(item: newItem, indexPath: oldIndexPath, changes: rowChanges), index)

    ///         same identity. For example, they have the same id.
    public convenience init(_ databaseWriter: DatabaseWriter, request: FetchRequest, queue: DispatchQueue = .main, isSameRecord: ((Record, Record) -> Bool)? = nil) {
        if let isSameRecord = isSameRecord {
            self.init(databaseWriter, request: request, queue: queue, identicalItemsFactory: { _ in { isSameRecord($0.record, $1.record) } })
        } else {
            self.init(databaseWriter, request: request, queue: queue, identicalItemsFactory: { _ in { _ in false } })
        }
    }
    
    fileprivate init(_ databaseWriter: DatabaseWriter, request: FetchRequest, queue: DispatchQueue, identicalItemsFactory: @escaping (Database) -> ItemComparator<Record>) {
        self.request = request
        self.databaseWriter = databaseWriter
        self.identicalItemsFactory = identicalItemsFactory
        self.queue = queue
    }
    #else

        
        let initialItems = fetchedItems
        databaseWriter.write { db in
            if itemsAreIdentical == nil {
                itemsAreIdentical = itemsAreIdenticalFactory(db)
            }
            
            let fetchAndNotifyChanges = makeFetchAndNotifyChangesFunction(controller: self, fetchAlongside: fetchAlongside, itemsAreIdentical: itemsAreIdentical!, recordsWillChange: recordsWillChange, tableViewEvent: tableViewEvent, recordsDidChange: recordsDidChange)

            let (statement, _) = try! request.prepare(db)
            let observer = FetchedRecordsObserver(selectionInfo: statement.selectionInfo, fetchAndNotifyChanges: fetchAndNotifyChanges)
