internal object InvokeMethod(Symbols.Method TargetProcedure, object[] Arguments, bool[] CopyBack, BindingFlags Flags)
 {
     object obj3;
     MethodBase callTarget = NewLateBinding.GetCallTarget(TargetProcedure, Flags);
     object[] parameters = NewLateBinding.ConstructCallArguments(TargetProcedure, Arguments, Flags);
     if ((this.m_Instance == null) && !Symbols.IsShared(callTarget))
     {
         throw new NullReferenceException(Utils.GetResourceString("NullReference_InstanceReqToAccessMember1", new string[] { TargetProcedure.ToString() }));
     }
     if (Symbols.IsNonPublicRuntimeMember(callTarget))
     {
         throw new MissingMemberException();
     }
     try
     {
         obj3 = callTarget.Invoke(this.m_Instance, parameters);
     }
     catch when (?)
     {
         TargetInvocationException exception;
         throw exception.InnerException;
     }
     OverloadResolution.ReorderArgumentArray(TargetProcedure, parameters, Arguments, CopyBack, Flags);
     return obj3;
 }
 internal static object InvokeUserDefinedOperator(Symbols.Method OperatorMethod, bool ForceArgumentValidation, params object[] Arguments)
 {
     if ((!OperatorMethod.ArgumentsValidated || ForceArgumentValidation) && !OverloadResolution.CanMatchArguments(OperatorMethod, Arguments, Symbols.NoArgumentNames, Symbols.NoTypeArguments, false, null))
     {
         string str = "";
         List<string> errors = new List<string>();
         bool flag = OverloadResolution.CanMatchArguments(OperatorMethod, Arguments, Symbols.NoArgumentNames, Symbols.NoTypeArguments, false, errors);
         foreach (string str2 in errors)
         {
             str = str + "\r\n    " + str2;
         }
         throw new InvalidCastException(Utils.GetResourceString("MatchArgumentFailure2", new string[] { OperatorMethod.ToString(), str }));
     }
     Symbols.Container container = new Symbols.Container(OperatorMethod.DeclaringType);
     return container.InvokeMethod(OperatorMethod, Arguments, null, BindingFlags.InvokeMethod);
 }
 private static void ReportError(List<string> Errors, string ResourceID, string Substitution1, Symbols.Method Substitution2)
 {
     Errors.Add(Utils.GetResourceString(ResourceID, new string[] { Substitution1, Substitution2.ToString() }));
 }