public override void OnInvoke(MethodInterceptionArgs args)
        {
            var cache     = MethodResultCache.GetCache(args.Method);
            var arguments = args.Arguments.ToList();

            var result = cache.GetCachedResult(arguments);

            if (result != null)
            {
                args.ReturnValue = result;
                return;
            }

            base.OnInvoke(args);

            cache.CacheCallResult(args.ReturnValue, arguments);
        }