 
 extension MockCalculator {
     private static var mockHash = [String:Mock]()
-
+    
     var mock: Mock {
         get {
             let tmpAddress = String(format: "%p", unsafeBitCast(self, to: Int.self))
             guard let value = MockCalculator.mockHash[tmpAddress] else {
-                let newValue = Mock()
+                let newValue = Mock(orig: self)
                 MockCalculator.mockHash[tmpAddress] = newValue
                 return newValue
             }


class MockCalculator: Calculator {
    //MARK: - sum
    override func sum(_ arg1: Int, _ arg2: Int) -> Int {
        let args = Mock.SumArgs(arg1: arg1, arg2: arg2)
        return mock.sum.handle(args)

                self.arg2 = arg2
            }
        }
        lazy var sum = FuncCallHandler<SumArgs, Int>(returnValue: anyInt(),
                                                     callRealFuncClosure: { [weak self] (args) -> Int in
                                                        guard let __self = self else { return anyInt() }
                                                        return __self.orig.super_sum(args)
        })
    }
}

