private static StaticActionExecutor WrapAsStaticAction(InstanceActionExecutor action, object target)
 {
     return(delegate(object[] parameters)
     {
         action(target, parameters);
     });
 }
 private static StaticActionExecutor WrapAsStaticAction(InstanceActionExecutor action)
 {
     return(delegate(object[] parameters)
     {
         if (parameters.Length < 1)
         {
             throw new InvalidOperationException("Cannot execute wrapped instance method without a singe parameter (the first parameter should be the instance).");
         }
         var _p = new object[parameters.Length - 1];
         for (int i = 1; i < parameters.Length; i++)
         {
             _p[i - 1] = parameters[i];
         }
         action(parameters[0], _p);
     });
 }