internal static void IDOIndexSet(IDynamicMetaObjectProvider Instance, object[] Arguments, string[] ArgumentNames)
        {
            SaveCopyBack back = new SaveCopyBack(null);

            using (back)
            {
                object[] packedArgs = null;
                CallInfo callInfo   = null;
                IDOUtils.PackArguments(1, ArgumentNames, Arguments, ref packedArgs, ref callInfo);
                IDOUtils.CreateFuncCallSiteAndInvoke(new VBIndexSetBinder(callInfo), Instance, packedArgs);
            }
        }
 internal static object IDOGet(IDynamicMetaObjectProvider Instance, string MemberName, object[] Arguments, string[] ArgumentNames, bool[] CopyBack)
 {
     object obj2;
     SaveCopyBack back = new SaveCopyBack(CopyBack);
     using (back)
     {
         object[] packedArgs = null;
         CallInfo callInfo = null;
         IDOUtils.PackArguments(0, ArgumentNames, Arguments, ref packedArgs, ref callInfo);
         try
         {
             return IDOUtils.CreateRefCallSiteAndInvoke(new VBGetBinder(MemberName, callInfo), Instance, packedArgs);
         }
         finally
         {
             IDOUtils.CopyBackArguments(callInfo, packedArgs, Arguments);
         }
     }
     return obj2;
 }
        internal static object IDOGet(IDynamicMetaObjectProvider Instance, string MemberName, object[] Arguments, string[] ArgumentNames, bool[] CopyBack)
        {
            object       obj2;
            SaveCopyBack back = new SaveCopyBack(CopyBack);

            using (back)
            {
                object[] packedArgs = null;
                CallInfo callInfo   = null;
                IDOUtils.PackArguments(0, ArgumentNames, Arguments, ref packedArgs, ref callInfo);
                try
                {
                    return(IDOUtils.CreateRefCallSiteAndInvoke(new VBGetBinder(MemberName, callInfo), Instance, packedArgs));
                }
                finally
                {
                    IDOUtils.CopyBackArguments(callInfo, packedArgs, Arguments);
                }
            }
            return(obj2);
        }
        internal static void IDOSetComplex(IDynamicMetaObjectProvider Instance, string MemberName, object[] Arguments, string[] ArgumentNames, bool OptimisticSet, bool RValueBase)
        {
            SaveCopyBack back = new SaveCopyBack(null);

            using (back)
            {
                if (Arguments.Length == 1)
                {
                    IDOUtils.CreateFuncCallSiteAndInvoke(new VBSetComplexBinder(MemberName, OptimisticSet, RValueBase), Instance, Arguments);
                }
                else
                {
                    object instance = IDOUtils.CreateFuncCallSiteAndInvoke(new VBGetMemberBinder(MemberName), Instance, Symbols.NoArguments);
                    if (instance == missingMemberSentinel)
                    {
                        NewLateBinding.ObjectLateSetComplex(Instance, null, MemberName, Arguments, ArgumentNames, Symbols.NoTypeArguments, OptimisticSet, RValueBase);
                    }
                    else
                    {
                        NewLateBinding.LateIndexSetComplex(instance, Arguments, ArgumentNames, OptimisticSet, RValueBase);
                    }
                }
            }
        }
 internal static void IDOIndexSetComplex(IDynamicMetaObjectProvider Instance, object[] Arguments, string[] ArgumentNames, bool OptimisticSet, bool RValueBase)
 {
     SaveCopyBack back = new SaveCopyBack(null);
     using (back)
     {
         object[] packedArgs = null;
         CallInfo callInfo = null;
         IDOUtils.PackArguments(1, ArgumentNames, Arguments, ref packedArgs, ref callInfo);
         IDOUtils.CreateFuncCallSiteAndInvoke(new VBIndexSetComplexBinder(callInfo, OptimisticSet, RValueBase), Instance, packedArgs);
     }
 }
 internal static void IDOSetComplex(IDynamicMetaObjectProvider Instance, string MemberName, object[] Arguments, string[] ArgumentNames, bool OptimisticSet, bool RValueBase)
 {
     SaveCopyBack back = new SaveCopyBack(null);
     using (back)
     {
         if (Arguments.Length == 1)
         {
             IDOUtils.CreateFuncCallSiteAndInvoke(new VBSetComplexBinder(MemberName, OptimisticSet, RValueBase), Instance, Arguments);
         }
         else
         {
             object instance = IDOUtils.CreateFuncCallSiteAndInvoke(new VBGetMemberBinder(MemberName), Instance, Symbols.NoArguments);
             if (instance == missingMemberSentinel)
             {
                 NewLateBinding.ObjectLateSetComplex(Instance, null, MemberName, Arguments, ArgumentNames, Symbols.NoTypeArguments, OptimisticSet, RValueBase);
             }
             else
             {
                 NewLateBinding.LateIndexSetComplex(instance, Arguments, ArgumentNames, OptimisticSet, RValueBase);
             }
         }
     }
 }
 internal static bool[] GetCopyBack()
 {
     return(SaveCopyBack.GetCopyBack());
 }