     }
     
     class Mock {
+        let orig: MockCalculator
+        init(orig: MockCalculator) {
+            self.orig = orig
+        }
+        
         class SumArgs {
             let arg1: Int
             let arg2: Int


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)
        })
    }
}

