     case ExpectedFalse(String)
     case ExpectedEqual(String, String, String)
     case ExpectedNotEqual(String, String, String)
+    case ExpectedNil(String, String)
+    case ExpectedNotNil(String)
 
     public func stringify() -> String {
         switch self {

            return template(t, l, r)
        case let .ExpectedNotEqual(t, l, r):
            return template(t, l, r)
        }
    }


            throw FailureReason.ExpectedNotEqual(t, String(l), String(r))
        }
    }

    public func isNil<T>(t: String, _ v: T?) throws {
        guard v == nil else {
            throw FailureReason.ExpectedNil(t, String(v))
        }
    }

    public func isNotNil<T>(t: String, _ v: T?) throws {
        guard let _ = v else {
            throw FailureReason.ExpectedNotNil(t)
        }
    }
}

public enum FailureReason : ErrorType {
