 
 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)

                self.arg2 = arg2
            }
        }
        lazy var sum = FuncCallHandler<SumArgs, Int>(returnValue: anyInt())
    }
}



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(orig: self)
                MockCalculator.mockHash[tmpAddress] = newValue
                return newValue
            }
