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

		}
	}

	func assertNil<T>(expression: @autoclosure () -> T?, _ message: String = "", file: String = __FILE__, line: UInt = __LINE__) -> Bool {
		return expression().map { self.failure("\($0) is not nil. " + message, file: file, line: line) } ?? true
	}

	func assertNotNil<T>(expression: @autoclosure () -> T?, _ message: String = "", file: String = __FILE__, line: UInt = __LINE__) -> T? {
		return expression() ?? failure("is nil. " + message, file: file, line: line)
	}

	func assertLeft<T, U>(expression: @autoclosure () -> Either<T, U>, _ message: String = "", file: String = __FILE__, line: UInt = __LINE__) -> T? {
		let either = expression()
		return assertNotNil(either.left, "is unexpectedly \(either)" + message, file: file, line: line)
	}

	func assertRight<T, U>(expression: @autoclosure () -> Either<T, U>, _ message: String = "", file: String = __FILE__, line: UInt = __LINE__) -> U? {
		let either = expression()
		return assertNotNil(either.right, "is unexpectedly \(either)" + message, file: file, line: line)
	}

		}
	}

	func assertEqual<T: Hashable>(@autoclosure expression1:  () -> Set<T>?, @autoclosure expression2:  () -> Set<T>?) -> Set<T>? {
		let (actual, expected) = (expression1(), expression2())
		switch (actual, expected) {
		case (.None, .None):
