         case .insertion: return (.added(indices: indices ?? [], new: new as? NSArray ?? []))
         case .removal: return (.removed(indices: indices ?? [], old: old as? NSArray ?? []))
         case .replacement: return (.replaced(indices: indices ?? [], old: old as? NSArray ?? [], new: new as? NSArray ?? []))
+        @unknown default: fatalError("unhandled case")
         }
     }
 

        case .insertion: return (.added(indices: indices ?? [], new: new as? NSArray ?? []))
        case .removal: return (.removed(indices: indices ?? [], old: old as? NSArray ?? []))
        case .replacement: return (.replaced(indices: indices ?? [], old: old as? NSArray ?? [], new: new as? NSArray ?? []))
        }
    }


        case .insertion: return (.added(new as? NSSet ?? []))
        case .removal: return (.removed(old as? NSSet ?? []))
        case .replacement: fatalError("should never happen")
        @unknown default: fatalError("unhandled case")
        }
    }

