         let toFailingTest1 = { expect(testClass).to(call(function: "doDifferentStuff()", atLeast: 1)) }
         let toFailingTest2 = { expect(testClass).to(call(function: "doStuff()", atLeast: 2)) }
         let toNotFailingTest = { expect(testClass).toNot(call(function: "doStuff()", atLeast: 1)) }
+        let nilFailingTest = { expect(nil as TestClass?).to(call(function: "doStuff()", atLeast: 1)) }
         
         // then
         let toExpectedMessage1 = "expected to call <doDifferentStuff()> from TestClass at least 1 time, got <doStuff()>"

        let toFailingTest1 = { expect(testClass).to(call(function: "doStuffWith(string:)", atMost: 1)) }
        let toFailingTest2 = { expect(testClass).to(call(function: "doStuff()", atMost: 2)) }
        let toNotFailingTest = { expect(testClass).toNot(call(function: "doStuff()", atMost: 4)) }
        
        // then
        let got = "got <doStuff()>, <doStuff()>, <doStuff()>, <doStuffWith(string:) with quick>, <doStuffWith(string:) with nimble>"

        let toFailingTest1 = { expect(testClass).to(call(function: "doDifferentStuffWith(string:)", withArguments: ["swift"], atLeast: 1)) }
        let toFailingTest2 = { expect(testClass).to(call(function: "doStuffWith(string:)", withArguments: ["nimble"], atLeast: 2)) }
        let toNotFailingTest = { expect(testClass).toNot(call(function: "doStuffWith(string:)", withArguments: ["nimble"], atLeast: 1)) }
        let nilFailingTest = { expect(nil as TestClass?).to(call(function: "doStuff()", withArguments: [], atLeast: 1)) }
        
        // then
        let got = "got <doStuffWith(string:) with quick>, <doStuffWith(string:) with nimble>"
