 }
 
 public func GREYAssertEqual<T : Equatable>(@autoclosure left: () -> T?,
-  @autoclosure _ right: () -> T?, reason: String) {
-    GREYAssert(left() == right(), reason, details: "Expeted left term to be equal to right term")
+    @autoclosure _ right: () -> T?, reason: String) {
+  GREYAssert(left() == right(), reason, details: "Expected left term to be equal to right term")
+}
+
+public func GREYAssertNotEqual<T : Equatable>(@autoclosure left: () -> T?,
+    @autoclosure _ right: () -> T?, reason: String) {
+  GREYAssert(left() != right(), reason, details: "Expected left term to not be equal to right term")
 }
 
 public func GREYFail(reason: String) {


private func GREYAssert(@autoclosure expression: () -> BooleanType,
  _ reason: String, details: String) {
    //GREYSetCurrentAsFailable()
    if !expression().boolValue {
      greyFailureHandler.handleException(GREYFrameworkException(name: kGREYAssertionFailedException,
        reason: reason),

public func GREYAssertFalse(@autoclosure expression: () -> BooleanType, reason: String) {
  GREYAssert(!expression().boolValue,
    reason,
    details: "Expected the boolean expression to be false")
}

public func GREYAssertNotNil(@autoclosure expression: () -> Any?, reason: String) {
