         let count = value.count
         value.removeAll()
         _futureChanges?.send(ArrayChange(count: count, modification: .ReplaceRange(0..<count, with: [])))
-    }
-}
-
-
-
+        _futureValues?.send(value)
+    }
+}
+
+
+

        let oldCount = count
        value.replaceRange(subRange, with: newElements)
        _futureChanges?.send(ArrayChange(count: oldCount, modification: .ReplaceRange(subRange, with: Array<Element>(newElements))))
    }

    // These have default implementations in terms of replaceRange, but doing them by hand makes for better change reports.

    public var observableCount: Observable<Int> {
        return Observable(getter: { self.count }, futureValues: { self.futureCounts.source })
    }
}

extension ArrayVariable: MutableCollectionType {
