         subject.next(ObservableArrayEvent(change: .deletes(deletes), source: self))
         subject.next(ObservableArrayEvent(change: .inserts(inserts), source: self))
         subject.next(ObservableArrayEvent(change: .endBatchEditing, source: self))
+      } else {
+        self.array = array
+        subject.next(ObservableArrayEvent(change: .replace, source: self))
       }
     }
   }


public enum ObservableArrayChange {
  case initial
  case inserts([Int])
  case deletes([Int])
  case updates([Int])


  public var kind: DataSourceEventKind {
    switch change {
    case .initial, .replace:
      return .reload
    case .inserts(let indices):
      return .insertRows(indices.map { IndexPath(item: $0, section: 0) })
