 
 	init(_ values: T[], _ completed: Bool) {
 		self.values = values
+		self.completed = completed
+	}
+}
+
+struct _CombineState<T> {
+	var latestValue: T? = nil
+	var completed = false
+
+	init() {
+	}
+
+	init(_ value: T?, _ completed: Bool) {
+		self.latestValue = value
 		self.completed = completed
 	}
 }

			}

			func modifyA(f: _ZipState<T> -> _ZipState<T>) {
				states.modify { (a, b) in
					var newA = f(a)
					return (newA, b)
				}

				drain()
			}

			func modifyB(f: _ZipState<U> -> _ZipState<U>) {
				states.modify { (a, b) in
					var newB = f(b)
					return (a, newB)
				}

				drain()
			}



import Foundation

// TODO: These live outside of the definition below because of an infinite loop
// in the compiler. Move them back within Observable once that's fixed.
struct _ZipState<T> {
	var values: T[] = []
	var completed = false
