     }
 }
 
-extension ObservableCollectionChange where UnderlyingCollection.Index == Int {
+extension ObservableCollectionChange where Index == Int {
     public var asDataSourceEventKind: DataSourceEventKind {
         switch self {
         case .reset:

    }
}

extension ObservableCollection where UnderlyingCollection: Equatable {
    public static func == (lhs: ObservableCollection<UnderlyingCollection>, rhs: ObservableCollection<UnderlyingCollection>) -> Bool {
        return lhs.collection == rhs.collection
    }
}

public class MutableObservableCollection<UnderlyingCollection: MutableCollection & DataSourceProtocol>: ObservableCollection<UnderlyingCollection> {
    public override subscript(index: UnderlyingCollection.Index) -> UnderlyingCollection.Element {
        get {
            return collection[index]

            return indices
        }

        func insertionsPatch(_ indices: [Index]) -> [Index] {
            var indices = indices
            for i in 0..<indices.count {
                let pivot = indices[i]
