 		}
 	}
 
-	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: Hashable>(expression1: @autoclosure () -> Set<T>?, expression2: @autoclosure () -> Set<T>?) -> Set<T>? {
		let (actual, expected) = (expression1(), expression2())
		switch (actual, expected) {
		case (.None, .None):

//  Copyright (c) 2014 Rob Rix. All rights reserved.

extension XCTestCase {
	func assertEqual<T: Equatable>(@autoclosure expression1:  () -> T?, @autoclosure _ expression2:  () -> T?, _ message: String = "", _ file: String = __FILE__, _ line: UInt = __LINE__) -> T? {
		let (actual, expected) = (expression1(), expression2())
		return actual == expected ? actual : failure("\(actual) is not equal to \(expected). " + message, file: file, line: line)
	}

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