 		}
 	}
 
-	func assertEqual<T: Equatable>(expression1: @autoclosure () -> [T]?, _ expression2: @autoclosure () -> [T]?, _ message: String = "", _ file: String = __FILE__, _ line: UInt = __LINE__) -> [T]? {
+	func assertEqual<T: Equatable>(@autoclosure expression1:  () -> [T]?, @autoclosure _ expression2:  () -> [T]?, _ message: String = "", _ file: String = __FILE__, _ line: UInt = __LINE__) -> [T]? {
 		let (actual, expected) = (expression1(), expression2())
 		switch (actual, expected) {
 		case (.None, .None):

		}
	}

	func assertEqual<T: Equatable, U: Equatable>(expression1: @autoclosure () -> Either<T, U>?, _ expression2: @autoclosure () -> U?, _ message: String = "", _ file: String = __FILE__, _ line: UInt = __LINE__) -> Either<T, U>? {
		let (actual, expected) = (expression1(), expression2())
		switch (actual, expected) {
		case (.None, .None):

		}
	}

	func assertEqual(@autoclosure expression1:  () -> ()?, _ expected: ()?, _ message: String = "", _ file: String = __FILE__, _ line: UInt = __LINE__) -> ()? {
		let actual: ()? = expression1()
		switch (actual, expected) {
		case (.None, .None), (.Some, .Some):
