static AssetBundleRequest MM_Detour(AssetBundle self, string name, Type type)
        {
            AssetBundleRequest result = null;

            if (name == string.Empty)
            {
                var parameters = new AssetLoadingParameters(null, type, AssetLoadType.LoadByType);
                var context    = ResourceRedirection.Hook_AsyncAssetLoading_Prefix(parameters, self, ref result);

                var p = context.Parameters;
                if (!context.SkipOriginalCall)
                {
                    result = _original(self, name, p.Type);
                }

                ResourceRedirection.Hook_AssetLoading_Postfix(context, result);
            }
            else
            {
                var parameters = new AssetLoadingParameters(name, type, AssetLoadType.LoadNamedWithSubAssets);
                var context    = ResourceRedirection.Hook_AsyncAssetLoading_Prefix(parameters, self, ref result);

                var p = context.Parameters;
                if (!context.SkipOriginalCall)
                {
                    result = _original(self, p.Name, p.Type);
                }

                ResourceRedirection.Hook_AssetLoading_Postfix(context, result);
            }

            return(result);
        }
        static UnityEngine.Object MM_Detour(AssetBundle self)
        {
            UnityEngine.Object result = null;

            var parameters = new AssetLoadingParameters(null, null, AssetLoadType.LoadMainAsset);
            var context    = ResourceRedirection.Hook_AssetLoading_Prefix(parameters, self, ref result);

            if (!context.SkipOriginalCall)
            {
                result = _original(self);
            }

            if (!context.SkipAllPostfixes)
            {
                ResourceRedirection.Hook_AssetLoaded_Postfix(context.Parameters, self, ref result);
            }

            return(result);
        }
        static UnityEngine.Object MM_Detour(AssetBundle self, string name, Type type)
        {
            UnityEngine.Object result = null;

            var parameters = new AssetLoadingParameters(name, type, AssetLoadType.LoadNamed);
            var context    = ResourceRedirection.Hook_AssetLoading_Prefix(parameters, self, ref result);

            var p = context.Parameters;

            if (!context.SkipOriginalCall)
            {
                result = _original(self, p.Name, p.Type);
            }

            if (!context.SkipAllPostfixes)
            {
                ResourceRedirection.Hook_AssetLoaded_Postfix(context.Parameters, self, ref result);
            }

            return(result);
        }