         // when
         let toFailingTest = { expect(testClass).to(call(function: "doStuff()")) }
         let toNotFailingTest = { expect(testClass).toNot(call(function: "doStuffWith(string:)")) }
+        let nilFailingTest = { expect(nil as TestClass?).to(call(function: "doStuff()")) }
         
         // then
         let toExpectedMessage = "expected to call <doStuff()> from TestClass, got <doStuffWith(string:) with swift>"

        let toFailingTest1 = { expect(testClass).to(call(function: "doDifferentStuff()", count: 1)) }
        let toFailingTest2 = { expect(testClass).to(call(function: "doStuff()", count: 2)) }
        let toNotFailingTest = { expect(testClass).toNot(call(function: "doStuff()", count: 1)) }
        
        // then
        let toExpectedMessage1 = "expected to call <doDifferentStuff()> from TestClass exactly 1 time, got <doStuff()>"

        
        let toNotExpectedMessage = "expected to not call <doStuffWith(string:)> from TestClass with swift at most 4 times, \(got)"
        failsWithErrorMessage(toNotExpectedMessage) { toNotFailingTest() }
        
        let nilExpectedMessage = "expected to call function with arguments at most count times, got <nil>"
        failsWithErrorMessageForNil(nilExpectedMessage) { nilFailingTest() }
    }
}
