public MethodInfo[] Lookup(string name)
        {
            switch (name)
            {
            case "_ab":
                return(FunctionProviderUtils.Ret(
                           FunctionProviderUtils.Fn <R4, R4>(A)));

            case "_ac":
                return(FunctionProviderUtils.Ret(
                           FunctionProviderUtils.Fn <I8, I8>(A)));

            case "_ad":
                return(FunctionProviderUtils.Ret(
                           FunctionProviderUtils.Fn <I4, I4>(A)));
            }

            return(null);
        }
        public MethodInfo[] Lookup(string name)
        {
            switch (name)
            {
            // This one should be ambigous when invoked on an I4.
            case "_aa":
                return(FunctionProviderUtils.Ret(
                           FunctionProviderUtils.Fn <I8, I8>(A),
                           FunctionProviderUtils.Fn <R4, R4>(A)));

            case "_ab":
                return(FunctionProviderUtils.Ret(
                           FunctionProviderUtils.Fn <I8, I8>(A)));

            case "_ac":
                return(FunctionProviderUtils.Ret(
                           FunctionProviderUtils.Fn <I8, I8>(A)));

            case "_ad":
                return(FunctionProviderUtils.Ret(
                           FunctionProviderUtils.Fn <I8, I8>(A)));

            case "_var":
                return(FunctionProviderUtils.Ret(
                           FunctionProviderUtils.Fn <I4, BL, R4[], R4>(Var)));

            case "_ba":
                return(FunctionProviderUtils.Ret(
                           FunctionProviderUtils.Fn <I4>(B),
                           FunctionProviderUtils.Fn <I4, I4>(B),
                           FunctionProviderUtils.Fn <I4, I4, I4>(B)));

            case "_bad":
                return(FunctionProviderUtils.Ret(
                           FunctionProviderUtils.Fn <object>(X),
                           FunctionProviderUtils.Fn <string, I4>(X),
                           FunctionProviderUtils.Fn <I4, I4>(X),
                           ((Func <I8, I8>)(X)).GetMethodInfo(),
                           FunctionProviderUtils.Fn <R4, R4>(X)));

            case "_fa":
                return(FunctionProviderUtils.Ret(
                           FunctionProviderUtils.Fn <BL, BL>(F)));

            case "_dump":
                return(FunctionProviderUtils.Ret(
                           FunctionProviderUtils.Fn <I4, I4>(Dump),
                           FunctionProviderUtils.Fn <I8, I8>(Dump),
                           FunctionProviderUtils.Fn <R4, R4>(Dump),
                           FunctionProviderUtils.Fn <R8, R8>(Dump),
                           FunctionProviderUtils.Fn <BL, BL>(Dump),
                           FunctionProviderUtils.Fn <TX, TX>(Dump),
                           FunctionProviderUtils.Fn <TX, I4, I4>(Dump),
                           FunctionProviderUtils.Fn <TX, I8, I8>(Dump),
                           FunctionProviderUtils.Fn <TX, R4, R4>(Dump),
                           FunctionProviderUtils.Fn <TX, R8, R8>(Dump),
                           FunctionProviderUtils.Fn <TX, BL, BL>(Dump),
                           FunctionProviderUtils.Fn <TX, TX, TX>(Dump)));

            case "_chars":
                return(FunctionProviderUtils.Ret(FunctionProviderUtils.Fn <TX, TX>(DumpChars)));
            }

            return(null);
        }