 ///
 /// Returns the array, if equal and non-nil.
 public func assertEqual<T: Equatable>(@autoclosure expression1: () -> [T]?, @autoclosure _ expression2: () -> [T]?, _ message: String = "", _ file: String = __FILE__, _ line: UInt = __LINE__) -> [T]? {
-	return assertExpected(expression1(), ==, expression2(), message, file, line)
+	return assertExpected(expression1, ==, expression2(), message, file, line)
 }
 
 

///
///		assert(x, ==, y)
public func assert<T>(@autoclosure expression1: () -> T?, _ test: (T, T) -> Bool, @autoclosure _ expression2: () -> T, message: String = "", file: String = __FILE__, line: UInt = __LINE__) -> T? {
	return assertExpected(expression1(), test, expression2(), message, file, line)
}

/// Asserts that a binary function matches two operands.

	}
}

private func assertExpected<T, U>(@noescape actual: () -> T?, _ match: (T, U) -> Bool, _ expected: U?, _ message: String, _ file: String, _ line: UInt) -> T? {
	switch (actual, expected) {
	case (.None, .None):
		return actual
