                 self.arg2 = arg2
             }
         }
-        lazy var sum = FuncCallHandler<SumArgs, Int>(returnValue: anyInt())
+        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)
+        })
     }
 }
 

    }
    
    class Mock {
        class SumArgs {
            let arg1: Int
            let arg2: Int


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