 ///
 ///		assert(Set([ 1, 2, 3 ]), Set.contains, 3)
 public func assert<T, U>(@autoclosure expression1: () -> T?, _ test: T -> U -> Bool, @autoclosure _ expression2: () -> U, message: String = "", file: String = __FILE__, line: UInt = __LINE__) -> T? {
-	return assertExpected(expression1(), { x, y in test(x)(y) }, expression2(), message, file, line)
+	return assertExpected(expression1, { x, y in test(x)(y) }, expression2(), message, file, line)
 }
 
 /// Asserts the truth of a predicate applied to a value.

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

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

///
///		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.
